[*] Binary protection state of file_upload
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of file_upload
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/file_upload @ 0x17a4 */
| #include <stdint.h>
|
; (fcn) fcn.000017a4 () | void fcn_000017a4 (int16_t arg_48h, int16_t arg_50h, int16_t arg_54h, size_t size, int16_t arg_90h, int16_t arg_ach, int16_t arg_94h, int16_t arg_ech, int16_t arg_494h, int16_t arg_4ech, int16_t arg_4f0h, int16_t arg_4f1h, int16_t arg_4fch, int16_t arg_4feh, int16_t arg_8ech, int16_t arg_918h, char * arg1, char * arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t fd;
| int16_t var_10h;
| int16_t var_14h;
| char * s2;
| int16_t var_1ch;
| char * var_20h;
| int16_t var_24h;
| char * ptr;
| void * var_2ch;
| char * path;
| char * src;
| int16_t var_38h;
| char * dest;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x000017a4 ldr r2, [pc, 0x258] |
0x000017a6 ldr r3, [pc, 0x25c] | r3 = *(0x1a06);
0x000017a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000017ac subw sp, sp, 0x49c | __asm ("subw sp, sp, 0x49c");
0x000017b0 add r2, pc | r2 = 0x31b4;
0x000017b2 str r0, [sp, 0xc] | path = r0;
0x000017b4 mov sl, r1 | sl = r1;
0x000017b6 movs r1, 0 | r1 = 0;
0x000017b8 ldr r3, [r2, r3] |
0x000017ba ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x000017bc str.w r3, [sp, 0x494] | __asm ("str.w r3, [arg_494h]");
0x000017c0 mov.w r3, 0 | r3 = 0;
0x000017c4 blx 0xe24 | r0 = open (r0, r1, r2);
0x000017c8 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x000017ca blt 0x1894 | goto label_6;
| }
0x000017cc add r4, sp, 0x14 | r4 += var_38h;
0x000017ce mov r1, r4 | r1 = r4;
0x000017d0 blx 0xecc | r0 = fstatfs ();
0x000017d4 cmp r0, 0 |
| if (r0 < 0) {
0x000017d6 blt.w 0x19ee | goto label_27;
| }
0x000017da ldr r3, [pc, 0x22c] |
0x000017dc add.w sb, sp, 0x94 | sb += arg_94h;
0x000017e0 movs r2, 1 | r2 = 1;
0x000017e2 mov r0, sb | r0 = sb;
0x000017e4 str.w sl, [sp, 4] | __asm ("str.w sl, [ptr]");
0x000017e8 add r3, pc | r3 = 0x31f6;
0x000017ea str r3, [sp] | *(sp) = r3;
0x000017ec mov.w r3, 0x400 | r3 = 0x400;
0x000017f0 mov r1, r3 | r1 = r3;
0x000017f2 blx 0xf84 | fcn_00000f84 ();
0x000017f6 movs r1, 0 | r1 = 0;
0x000017f8 mov r0, sb | r0 = sb;
0x000017fa blx 0xef4 | fcn_00000ef4 ();
0x000017fe adds r0, 1 | r0++;
| if (r0 != 1) {
0x00001800 beq 0x1808 |
0x00001802 mov r0, sb | r0 = sb;
0x00001804 blx 0xd88 | unlink (r0);
| }
0x00001808 mov.w r2, 0x1a4 | r2 = 0x1a4;
0x0000180c movw r1, 0x241 | r1 = 0x241;
0x00001810 mov r0, sb | r0 = sb;
0x00001812 blx 0xe24 | open (r0, r1, r2);
0x00001814 add.w lr, r8, r6, lsl 4 | lr = r8 + (r6 << 4);
0x00001816 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00001818 blt.w 0x19ee | goto label_27;
| }
0x0000181a strh r1, [r5, 6] | *((r5 + 6)) = r1;
0x0000181c add r5, sp, 0x54 | r5 += arg_54h;
0x0000181e mov r1, r5 | r1 = r5;
0x00001820 blx 0xecc | r0 = fstatfs ();
0x00001824 cmp r0, 0 |
| if (r0 < 0) {
0x00001826 blt.w 0x19f6 | goto label_28;
| }
0x0000182a ldr r2, [sp, 0x58] | r2 = *(size);
0x0000182c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000182e cmp r2, r3 |
0x00001830 it lt |
| if (r2 >= r3) {
0x00001832 movlt r2, r3 | r2 = r3;
| }
0x00001834 mov r0, r2 | r0 = r2;
0x00001836 mov r8, r2 | r8 = r2;
0x00001838 blx 0xde8 | r0 = malloc (r0);
0x0000183c mov r5, r0 | r5 = r0;
0x0000183e cmp r0, 0 |
| if (r0 == 0) {
0x00001840 beq.w 0x19f6 | goto label_28;
| }
0x00001842 strh r1, [r3, 6] | *((r3 + 6)) = r1;
| do {
| label_0:
0x00001844 mov r2, r8 | r2 = r8;
0x00001846 mov r1, r5 | r1 = r5;
0x00001848 mov r0, r7 | r0 = r7;
0x0000184a bl 0x1600 | r0 = fcn_00001600 (r0, r1, r2);
0x0000184e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x00001850 ble 0x18ba | goto label_29;
| }
0x00001852 mov.w fp, 0 |
0x00001856 b 0x1860 | goto label_30;
| label_1:
0x00001858 beq 0x1844 |
| } while (r4 == r0);
0x0000185a add fp, r0 |
| label_2:
0x0000185c cmp r4, fp |
| if (r4 < fp) {
0x0000185e bls 0x1844 | goto label_0;
| }
| label_30:
0x00001860 sub.w r2, r4, fp | r2 = r4 - fp;
0x00001864 add.w r1, r5, fp | r1 = r5 + fp;
0x00001868 mov r0, r6 | r0 = r6;
0x0000186a blx 0xed8 | r0 = write (r0, r1, r2);
0x0000186e cmp r0, 0 |
| if (r0 >= 0) {
0x00001870 bge 0x1858 | goto label_1;
| }
0x00001872 blx 0xe90 | r0 = errno_location ();
0x00001876 ldr r2, [r0] | r2 = *(r0);
0x00001878 cmp r2, 4 |
| if (r2 == 4) {
0x0000187a beq 0x185c | goto label_2;
| }
| label_7:
0x0000187c mov r0, r5 | r0 = r5;
0x0000187e blx 0xd34 | free (r0);
0x00001882 mov r0, r7 | r0 = r7;
0x00001884 blx 0xf60 | fcn_00000f60 ();
0x00001888 mov r0, r6 | r0 = r6;
0x0000188a blx 0xf60 | fcn_00000f60 ();
0x0000188e mov r0, sb | r0 = sb;
0x00001890 blx 0xd88 | unlink (r0);
| label_6:
0x00001894 mov.w r4, -1 | r4 = -1;
| do {
| label_3:
0x00001898 ldr r2, [pc, 0x170] |
0x0000189a ldr r3, [pc, 0x168] | r3 = *(0x1a06);
0x0000189c add r2, pc | r2 = 0x32ac;
0x0000189e ldr r3, [r2, r3] | r3 = *(0x32ac);
0x000018a0 ldr r2, [r3] | r2 = *(0x32ac);
0x000018a2 ldr.w r3, [sp, 0x494] | r3 = *(arg_494h);
0x000018a6 eors r2, r3 | r2 ^= r3;
0x000018a8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000018ac bne.w 0x19fa | goto label_31;
| }
0x000018b0 mov r0, r4 | r0 = r4;
0x000018b2 addw sp, sp, 0x49c | __asm ("addw sp, var_24h");
0x000018b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x000018ba mov r0, r6 | r0 = r6;
0x000018bc blx 0xcd4 | r0 = fsync ();
0x000018c0 cmp r0, 0 |
| if (r0 != 0) {
0x000018c2 bne 0x196c | goto label_32;
| }
0x000018c4 mov r0, r6 | r0 = r6;
0x000018c6 blx 0xf60 | r0 = fcn_00000f60 ();
0x000018ca cmp r0, 0 |
| if (r0 != 0) {
0x000018cc bne 0x1986 | goto label_33;
| }
0x000018ce mov r1, sl | r1 = sl;
0x000018d0 mov r0, sb | r0 = sb;
0x000018d2 blx 0xe30 | rename (r0, r1);
0x000018d4 invalid |
0x000018d8 cmp r0, 0 |
| if (r0 != 0) {
0x000018da bne 0x194e | goto label_34;
| }
0x000018dc mov r0, sb | r0 = sb;
0x000018de blx 0xe00 | dirname ();
0x000018e2 mov r1, r8 | r1 = r8;
0x000018e4 blx 0xe24 | r0 = open (r0, r1, r2);
0x000018e8 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x000018ec blt 0x19a0 | goto label_35;
| }
0x000018ee blx 0xcd4 | r0 = fsync ();
0x000018f2 cmp r0, 0 |
| if (r0 != 0) {
0x000018f4 bne 0x19ba | goto label_36;
| }
0x000018f6 mov r0, r8 | r0 = r8;
0x000018f8 blx 0xf60 | r0 = fcn_00000f60 ();
0x000018fc cmp r0, 0 |
| if (r0 != 0) {
0x000018fe bne 0x19d4 | goto label_37;
| }
| label_4:
0x00001900 mov r0, r5 | r0 = r5;
0x00001902 blx 0xd34 | free (r0);
0x00001906 movs r1, 1 | r1 = 1;
0x00001908 mov r0, r7 | r0 = r7;
0x0000190a blx 0xea8 | fcntl ();
0x0000190e adds r0, 1 | r0++;
| if (r0 != 1) {
0x00001910 beq 0x191e |
0x00001912 mov r0, r7 | r0 = r7;
0x00001914 blx 0xf60 | fcn_00000f60 ();
0x00001916 invalid |
0x0000191a blx 0xd88 | unlink (r0);
| }
0x0000191e movs r1, 1 | r1 = 1;
0x00001920 mov r0, r6 | r0 = r6;
0x00001922 blx 0xea8 | fcntl ();
0x00001926 adds r0, 1 | r0++;
0x00001928 beq 0x1898 |
| } while (r0 == 1);
0x0000192a mov r0, r6 | r0 = r6;
0x0000192c blx 0xf60 | fcn_00000f60 ();
0x00001930 ldr r2, [pc, 0xdc] |
0x00001932 mov.w r3, 0x400 | r3 = 0x400;
0x00001936 mov r1, r3 | r1 = r3;
0x00001938 mov r0, sb | r0 = sb;
0x0000193a add r2, pc | r2 = 0x334e;
0x0000193c strd r2, sl, [sp] | __asm ("strd r2, sl, [sp]");
0x00001940 movs r2, 1 | r2 = 1;
0x00001942 blx 0xf84 | fcn_00000f84 ();
0x00001946 mov r0, sb | r0 = sb;
0x00001948 blx 0xd88 | unlink (r0);
0x0000194c b 0x1898 | goto label_3;
| label_34:
0x0000194e blx 0xe90 | r0 = errno_location ();
0x00001952 ldr r0, [r0] | r0 = *(r0);
0x00001954 blx 0xdf4 | strerror (r0);
0x00001958 ldr r2, [pc, 0xb8] |
0x0000195a mov r3, r0 | r3 = r0;
0x0000195c movs r1, 1 | r1 = 1;
0x0000195e movs r0, 3 | r0 = 3;
0x00001960 add r2, pc | r2 = 0x3378;
0x00001962 blx 0xf00 | fcn_00000f00 ();
| do {
| label_5:
0x00001966 mov.w r4, -1 | r4 = -1;
0x0000196a b 0x1900 | goto label_4;
| label_32:
0x0000196c blx 0xe90 | r0 = errno_location ();
0x00001970 ldr r0, [r0] | r0 = *(r0);
0x00001972 blx 0xdf4 | strerror (r0);
0x00001976 ldr r2, [pc, 0xa0] |
0x00001978 mov r3, r0 | r3 = r0;
0x0000197a movs r1, 1 | r1 = 1;
0x0000197c movs r0, 3 | r0 = 3;
0x0000197e add r2, pc | r2 = 0x339c;
0x00001980 blx 0xf00 | fcn_00000f00 ();
0x00001984 b 0x1966 |
| } while (1);
| label_33:
0x00001986 blx 0xe90 | r0 = errno_location ();
0x0000198a ldr r0, [r0] | r0 = *(r0);
0x0000198c blx 0xdf4 | strerror (r0);
0x00001990 ldr r2, [pc, 0x88] |
0x00001992 mov r3, r0 | r3 = r0;
0x00001994 movs r1, 1 | r1 = 1;
0x00001996 movs r0, 3 | r0 = 3;
0x00001998 add r2, pc | r2 = "/etc/httpd/html/";
0x0000199a blx 0xf00 | fcn_00000f00 ();
0x0000199e b 0x1966 | goto label_5;
| label_35:
0x000019a0 blx 0xe90 | r0 = errno_location ();
0x000019a4 ldr r0, [r0] | r0 = *(r0);
0x000019a6 blx 0xdf4 | strerror (r0);
0x000019aa ldr r2, [pc, 0x74] |
0x000019ac mov r3, r0 | r3 = r0;
0x000019ae movs r1, 1 | r1 = 1;
0x000019b0 movs r0, 3 | r0 = 3;
0x000019b2 add r2, pc | r2 = 0x33d8;
0x000019b4 blx 0xf00 | fcn_00000f00 ();
0x000019b8 b 0x1966 | goto label_5;
| label_36:
0x000019ba blx 0xe90 | r0 = errno_location ();
0x000019be ldr r0, [r0] | r0 = *(r0);
0x000019c0 blx 0xdf4 | strerror (r0);
0x000019c4 ldr r2, [pc, 0x5c] |
0x000019c6 mov r3, r0 | r3 = r0;
0x000019c8 movs r1, 1 | r1 = 1;
0x000019ca movs r0, 3 | r0 = 3;
0x000019cc add r2, pc | r2 = 0x33f4;
0x000019ce blx 0xf00 | fcn_00000f00 ();
0x000019d2 b 0x1966 | goto label_5;
| label_37:
0x000019d4 blx 0xe90 | r0 = errno_location ();
0x000019d8 ldr r0, [r0] | r0 = *(r0);
0x000019da blx 0xdf4 | strerror (r0);
0x000019de ldr r2, [pc, 0x48] |
0x000019e0 mov r3, r0 | r3 = r0;
0x000019e2 movs r1, 1 | r1 = 1;
0x000019e4 movs r0, 3 | r0 = 3;
0x000019e6 add r2, pc | r2 = 0x3414;
0x000019e8 blx 0xf00 | fcn_00000f00 ();
0x000019ec b 0x1966 | goto label_5;
| label_27:
0x000019ee mov r0, r7 | r0 = r7;
0x000019f0 blx 0xf60 | fcn_00000f60 ();
0x000019f4 b 0x1894 | goto label_6;
| label_28:
0x000019f6 movs r5, 0 | r5 = 0;
0x000019f8 b 0x187c | goto label_7;
| label_31:
0x000019fa blx 0xd7c | stack_chk_fail ();
0x000019fe nop |
0x00001a00 adds r7, 0x2c | r7 += 0x2c;
0x00001a02 movs r0, r0 |
0x00001a04 lsls r4, r0, 4 | r4 = r0 << 4;
0x00001a06 movs r0, r0 |
0x00001a08 subs r4, r5, r0 | r4 = r5 - r0;
0x00001a0a movs r0, r0 |
0x00001a0c adds r6, 0x40 | r6 += 0x40;
0x00001a0e movs r0, r0 |
0x00001a10 adds r2, r3, r3 | r2 = r3 + r3;
0x00001a12 movs r0, r0 |
0x00001a14 adds r4, r2, r3 | r4 = r2 + r3;
0x00001a16 movs r0, r0 |
0x00001a18 adds r6, r3, r2 | r6 = r3 + r2;
0x00001a1a movs r0, r0 |
0x00001a1c adds r0, r2, r2 | r0 = r2 + r2;
0x00001a1e movs r0, r0 |
0x00001a20 adds r6, r1, r2 | r6 = r1 + r2;
0x00001a22 movs r0, r0 |
0x00001a24 adds r0, r2, r1 | r0 = r2 + r1;
0x00001a26 movs r0, r0 |
0x00001a28 adds r2, r0, r1 | r2 = r0 + r1;
0x00001a2a movs r0, r0 |
0x00001a2c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001a30 mov sl, r2 | sl = r2;
0x00001a32 ldr.w r2, [pc, 0x858] |
0x00001a36 mov r8, r3 | r8 = r3;
0x00001a38 subw sp, sp, 0x8f4 | __asm ("subw sp, sp, 0x8f4");
0x00001a3c ldr.w r3, [pc, 0x850] | r3 = *(0x2290);
0x00001a40 add r2, pc | r2 = 0x3cd2;
0x00001a42 strd r1, r0, [sp, 0x38] | __asm ("strd r1, r0, [sp, 0x38]");
0x00001a46 mov.w r0, 0x1000 | r0 = 0x1000;
0x00001a4a ldr.w fp, [sp, 0x918] | fp = *(arg_918h);
0x00001a4e ldr r3, [r2, r3] |
0x00001a50 ldr r3, [r3] | r3 = *(0x3cd2);
0x00001a52 str.w r3, [sp, 0x8ec] | __asm ("str.w r3, [arg_8ech]");
0x00001a56 mov.w r3, 0 | r3 = 0;
0x00001a5a bl 0x1634 | fcn_00001634 (r0);
0x00001a5e ldr.w r2, [pc, 0x834] |
0x00001a62 cmp r0, 0 |
0x00001a64 add r2, pc | r2 = 0x3cfe;
| if (r0 < 0) {
0x00001a66 blt.w 0x2206 | goto label_38;
| }
0x00001a6a ldr.w r4, [pc, 0x82c] |
0x00001a6e movs r0, 0 | r0 = 0;
0x00001a70 add r4, pc | r4 = 0x3d0e;
0x00001a72 ldr r2, [r4, 0xc] | r2 = *(0x3d1a);
0x00001a74 ldr r1, [r4] | r1 = *(0x3d0e);
0x00001a76 bl 0x1600 | fcn_00001600 (r0, r1, r2);
0x00001a7a movs r3, 0 | r3 = 0;
0x00001a7c mov r5, r0 | r5 = r0;
0x00001a7e str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00001a80 str r3, [r4, 4] | *((r4 + 4)) = r3;
| if (r0 == 0) {
0x00001a82 cbz r0, 0x1ab4 | goto label_39;
| }
0x00001a84 bl 0x15ac | r0 = fcn_000015ac ();
0x00001a88 mov r1, r0 | r1 = r0;
0x00001a8a cmp r0, 0 |
| if (r0 == 0) {
0x00001a8c beq.w 0x2202 | goto label_40;
| }
0x00001a90 ldrb r3, [r0] | r3 = *(r0);
0x00001a92 cmp r3, 0x2d |
0x00001a94 beq 0x1ac8 |
| while (r7 != r3) {
0x00001a96 ldr.w r3, [pc, 0x804] |
0x00001a9a movs r0, 3 | r0 = 3;
0x00001a9c ldr.w r2, [pc, 0x800] |
0x00001aa0 str r1, [sp] | *(sp) = r1;
0x00001aa2 movs r1, 1 | r1 = 1;
0x00001aa4 add r3, pc | r3 = 0x3d46;
0x00001aa6 add r2, pc | r2 = 0x3d4a;
0x00001aa8 blx 0xf00 | fcn_00000f00 ();
0x00001aac addw r3, sp, 0x4ec | __asm ("addw r3, arg_4ech");
0x00001ab0 str r3, [sp, 0x34] | src = r3;
0x00001ab2 b 0x1ec4 | goto label_20;
| label_39:
0x00001ab4 ldr.w r2, [pc, 0x7ec] |
0x00001ab8 movs r0, 6 | r0 = 6;
0x00001aba movs r1, 1 | r1 = 1;
0x00001abc add r2, pc | r2 = 0x3d64;
0x00001abe blx 0xf00 | fcn_00000f00 ();
0x00001ac2 mov r0, r5 | r0 = r5;
0x00001ac4 blx 0xe48 | exit (r0);
0x00001ac8 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00001aca subs.w r7, r3, 0x2d | r7 = r3 - 0x2d;
0x00001ace bne 0x1a96 |
| }
0x00001ad0 blx 0xd70 | strdup (r0);
0x00001ad4 add r2, sp, 0xec | r2 += arg_ech;
0x00001ad6 ldr.w r3, [pc, 0x7d0] |
0x00001ada ldr.w sb, [pc, 0x7d0] |
0x00001ade mov r4, r7 | r4 = r7;
0x00001ae0 str r2, [sp, 0x14] | var_14h = r2;
0x00001ae2 ldr.w r2, [pc, 0x7cc] |
0x00001ae6 add r3, pc | r3 = 0x3d94;
0x00001ae8 add sb, pc | sb = 0x3d9a;
0x00001aea str r3, [sp, 0x18] | s2 = r3;
0x00001aec adds r3, 0x18 | r3 += 0x18;
0x00001aee str r0, [sp, 0x30] | path = r0;
0x00001af0 add r2, pc | r2 = 0x3da6;
0x00001af2 strb.w r7, [sp, 0xec] | *(arg_ech) = r7;
0x00001af6 str r2, [sp, 0x24] | var_24h = r2;
0x00001af8 addw r2, sp, 0x4ec | __asm ("addw r2, arg_4ech");
0x00001afc strd r7, r7, [sp, 0x28] | __asm ("strd r7, r7, [sp, 0x28]");
0x00001b00 str r2, [sp, 0x34] | src = r2;
0x00001b02 str r3, [sp, 0x20] | var_20h = r3;
0x00001b04 strd r7, sl, [sp, 0x40] | __asm ("strd r7, sl, [sp, 0x40]");
0x00001b08 strd r8, fp, [sp, 0x48] | __asm ("strd r8, fp, [var_0hx48]");
| label_8:
0x00001b0c bl 0x15ac | r0 = fcn_000015ac ();
0x00001b10 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00001b12 cbz r0, 0x1b36 | goto label_41;
| }
| do {
0x00001b14 ldrb r3, [r5] | r3 = *(r5);
0x00001b16 cmp r3, 0xd |
| if (r3 != 0xd) {
0x00001b18 bne.w 0x1c62 | goto label_42;
| }
0x00001b1c ldrb r7, [r5, 1] | r7 = *((r5 + 1));
0x00001b1e cmp r7, 0 |
| if (r7 != 0) {
0x00001b20 bne.w 0x1c62 | goto label_42;
| }
0x00001b24 cmp r4, 0 |
| if (r4 != 0) {
0x00001b26 bne.w 0x1d28 | goto label_43;
| }
| label_9:
0x00001b2a bl 0x15ac | fcn_000015ac ();
0x00001b2e movs r4, 0 | r4 = 0;
0x00001b30 mov r5, r0 | r5 = r0;
0x00001b32 cmp r0, 0 |
0x00001b34 bne 0x1b14 |
| } while (r0 != 0);
| label_41:
0x00001b36 ldrd r7, sl, [sp, 0x40] | __asm ("ldrd r7, sl, [var_40h]");
0x00001b3a ldr r0, [sp, 0x28] | r0 = ptr;
0x00001b3c ldrd r8, fp, [sp, 0x48] | __asm ("ldrd r8, fp, [arg_48h]");
0x00001b40 mov r1, sl | r1 = sl;
0x00001b42 bl 0x16d8 | r0 = fcn_000016d8 (r0, r1);
0x00001b46 cmp r0, 1 |
0x00001b48 mov r4, r0 | r4 = r0;
| if (r0 != 1) {
0x00001b4a bne.w 0x21ee | goto label_44;
| }
0x00001b4e ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x00001b50 mov r1, r8 | r1 = r8;
0x00001b52 mov r0, r6 | r0 = r6;
0x00001b54 bl 0x16d8 | r0 = fcn_000016d8 (r0, r1);
0x00001b58 cmp r0, 1 |
| if (r0 != 1) {
0x00001b5a beq 0x1b6a |
0x00001b5c cmp r6, 0 |
| if (r6 != 0) {
0x00001b5e bne.w 0x2260 | goto label_45;
| }
0x00001b62 cmp.w fp, 0 |
| if (fp == 0) {
0x00001b66 beq.w 0x2270 | goto label_46;
| }
| }
0x00001b6a ldr r0, [sp, 0x30] | r0 = path;
0x00001b6c blx 0xd34 | free (r0);
0x00001b70 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00001b72 cmp r3, 0 |
| if (r3 != 0) {
0x00001b74 bne.w 0x1f08 | goto label_47;
| }
0x00001b78 ldr r4, [sp, 0x28] | r4 = ptr;
0x00001b7a cmp r4, 0 |
| if (r4 == 0) {
0x00001b7c beq.w 0x1f38 | goto label_48;
| }
0x00001b80 ldr.w r3, [pc, 0x730] |
0x00001b84 ldr r6, [sp, 0x34] | r6 = src;
0x00001b86 add r3, pc |
0x00001b88 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00001b8a stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00001b8e mov.w r2, 0x3f0 | r2 = 0x3f0;
0x00001b92 mov r1, r4 | r1 = r4;
0x00001b94 addw r0, sp, 0x4fc | __asm ("addw r0, arg_4fch");
0x00001b98 blx 0xda0 | stpcpy_chk ();
0x00001b9c ldr.w r1, [pc, 0x718] |
0x00001ba0 subs r3, r6, r0 | r3 = r6 - r0;
0x00001ba2 add.w r3, r3, 0x400 | r3 = 0x423e;
0x00001ba6 movs r2, 2 | r2 = 2;
0x00001ba8 add r1, pc | r1 = 0x3e64;
0x00001baa blx 0xd94 | memcpy_chk ();
0x00001bae ldr.w r1, [pc, 0x70c] |
0x00001bb2 mov r0, r4 | r0 = r4;
0x00001bb4 add r1, pc | r1 = 0x3e76;
0x00001bb6 blx 0xcec | r0 = strcmp (r0, r1);
0x00001bba cmp r0, 0 |
| if (r0 == 0) {
0x00001bbc beq.w 0x203a | goto label_49;
| }
0x00001bc0 ldr.w r4, [pc, 0x6fc] |
0x00001bc4 ldr r0, [sp, 0x28] | r0 = ptr;
0x00001bc6 add r4, pc | r4 = 0x3e8a;
0x00001bc8 mov r1, r4 | r1 = r4;
0x00001bca blx 0xcec | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00001bce cbz r0, 0x1be4 |
0x00001bd0 ldr.w r4, [pc, 0x6f0] |
0x00001bd4 ldr r0, [sp, 0x28] | r0 = ptr;
0x00001bd6 add r4, pc | r4 = 0x3e9e;
0x00001bd8 mov r1, r4 | r1 = r4;
0x00001bda blx 0xcec | r0 = strcmp (r0, r1);
0x00001bde cmp r0, 0 |
| if (r0 != 0) {
0x00001be0 bne.w 0x1f50 | goto label_50;
| }
| }
0x00001be4 mov r0, r4 | r0 = r4;
0x00001be6 blx 0xf78 | r0 = fcn_00000f78 ();
0x00001bea mov r5, r0 | r5 = r0;
| label_19:
0x00001bec ldr r4, [sp, 0x34] | r4 = src;
0x00001bee mov.w r2, 0x400 | r2 = 0x400;
0x00001bf2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00001bf4 mov r0, r4 | r0 = r4;
0x00001bf6 blx 0xe9c | strcat_chk ()
0x00001bfa ldr r0, [sp, 0x28] | r0 = ptr;
0x00001bfc blx 0xd34 | free (r0);
0x00001c00 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00001c02 blx 0xd34 | free (r0);
0x00001c06 ldr.w r0, [pc, 0x6c0] | r0 = "/tmp/";
0x00001c0a mov r1, r4 | r1 = r4;
0x00001c0c add r0, pc | r0 += pc;
0x00001c0e adds r0, 0x28 | r0 += 0x28;
0x00001c10 blx 0xe30 | r0 = rename (r0, r1);
0x00001c14 cmp r0, 0 |
| if (r0 < 0) {
0x00001c16 blt.w 0x1fd2 | goto label_51;
| }
| label_14:
0x00001c1a cmp r5, 0 |
| if (r5 == 0) {
0x00001c1c beq.w 0x1f7a | goto label_52;
| }
0x00001c20 ldr r0, [sp, 0x34] | r0 = src;
0x00001c22 mov.w r1, 0x1a0 | r1 = 0x1a0;
0x00001c26 blx 0xf3c | r0 = fcn_00000f3c ();
0x00001c2a cmp r0, 0 |
| if (r0 < 0) {
0x00001c2c blt.w 0x2028 | goto label_53;
| }
0x00001c2e strh r4, [r7, 0xe] | *((r7 + 0xe)) = r4;
| label_18:
0x00001c30 blx 0xd1c | r0 = getuid ();
0x00001c34 cmp r0, 0 |
| if (r0 != 0) {
0x00001c36 bne.w 0x1f8a | goto label_15;
| }
0x00001c3a ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00001c3c mov.w r1, -1 | r1 = -1;
0x00001c40 ldr r0, [sp, 0x34] | r0 = src;
0x00001c42 blx 0xe84 | r0 = chown ();
0x00001c46 cmp r0, 0 |
| if (r0 >= 0) {
0x00001c48 bge.w 0x1f8a | goto label_15;
| }
0x00001c4c ldr.w r3, [pc, 0x67c] |
0x00001c50 movs r1, 1 | r1 = 1;
0x00001c52 ldr.w r2, [pc, 0x67c] |
0x00001c56 movs r0, 3 | r0 = 3;
0x00001c58 add r3, pc | r3 = 0x3f28;
0x00001c5a add r2, pc | r2 = 0x3f30;
0x00001c5c blx 0xf00 | fcn_00000f00 ();
0x00001c60 b 0x1f8a | goto label_15;
| label_42:
0x00001c62 ldr r1, [sp, 0x18] | r1 = s2;
0x00001c64 mov r0, r5 | r0 = r5;
0x00001c66 blx 0xcbc | r0 = strstr (r0, r1);
0x00001c6a cmp r0, 0 |
| if (r0 == 0) {
0x00001c6c beq.w 0x1b0c | goto label_8;
| }
0x00001c70 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00001c72 mov r0, r5 | r0 = r5;
0x00001c74 blx 0xcbc | r0 = strstr (r0, r1);
0x00001c78 cmp r0, 0 |
| if (r0 == 0) {
0x00001c7a beq 0x1cec | goto label_54;
| }
0x00001c7c movs r1, 0x22 | r1 = 0x22;
0x00001c7e blx 0xe6c | r0 = strchr (r0, r1);
0x00001c82 cmp r0, 0 |
| if (r0 == 0) {
0x00001c84 beq.w 0x21e8 | goto label_55;
| }
0x00001c88 ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x00001c8a adds r3, r0, 1 | r3 = r0 + 1;
0x00001c8c cmp r2, 0x22 |
0x00001c8e it eq |
| if (r2 != 0x22) {
0x00001c90 ldreq r1, [sp, 0x14] | r1 = var_14h;
| }
| if (r2 == 0x22) {
0x00001c92 beq 0x1cae | goto label_56;
| }
0x00001c94 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00001c96 add.w r0, r0, 0x400 | r0 += 0x400;
0x00001c9a b 0x1ca2 |
| while (r2 != 0x22) {
0x00001c9c cmp r0, r3 |
| if (r0 == r3) {
0x00001c9e beq.w 0x1ec0 | goto label_57;
| }
0x00001ca2 strb r2, [r1], 1 | *(r1) = r2;
| r1++;
0x00001ca6 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00001caa cmp r2, 0x22 |
0x00001cac bne 0x1c9c |
| }
| label_56:
0x00001cae movs r3, 0 | r3 = 0;
0x00001cb0 strb r3, [r1] | *(r1) = r3;
0x00001cb2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00001cb4 ldrb r3, [r3] | r3 = *(r3);
0x00001cb6 cmp r3, 0 |
| if (r3 == 0) {
0x00001cb8 beq.w 0x2024 | goto label_58;
| }
0x00001cbc ldr r4, [sp, 0x14] | r4 = var_14h;
0x00001cbe movs r1, 0x5c | r1 = 0x5c;
0x00001cc0 mov r0, r4 | r0 = r4;
0x00001cc2 blx 0xf18 | r0 = fcn_00000f18 ();
| if (r0 != 0) {
0x00001cc6 cbz r0, 0x1cd4 |
0x00001cc8 adds r1, r0, 1 | r1 = r0 + 1;
0x00001cca mov.w r2, 0x400 | r2 = 0x400;
0x00001cce mov r0, r4 | r0 = r4;
0x00001cd0 blx 0xdac | strcpy_chk ();
| }
0x00001cd4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00001cd6 movs r1, 0x2f | r1 = 0x2f;
0x00001cd8 blx 0xf18 | r0 = fcn_00000f18 ();
| if (r0 != 0) {
0x00001cdc cbz r0, 0x1cea |
0x00001cde adds r1, r0, 1 | r1 = r0 + 1;
0x00001ce0 mov.w r2, 0x400 | r2 = 0x400;
0x00001ce4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00001ce6 blx 0xdac | strcpy_chk ();
| }
0x00001cea movs r4, 1 | r4 = 1;
| label_54:
0x00001cec ldr r3, [sp, 0x24] | r3 = var_24h;
0x00001cee mov r0, r5 | r0 = r5;
0x00001cf0 add.w r1, r3, 0x24 | r1 = r3 + 0x24;
0x00001cf4 blx 0xcbc | r0 = strstr (r0, r1);
| if (r0 != 0) {
0x00001cf8 cbz r0, 0x1d06 |
0x00001cfa bl 0x1670 | fcn_00001670 ();
0x00001cfe str r0, [sp, 0x28] | ptr = r0;
0x00001d00 cmp r0, 0 |
| if (r0 == 0) {
0x00001d02 beq.w 0x1ec4 | goto label_20;
| }
| }
0x00001d06 ldr.w r1, [pc, 0x5cc] |
0x00001d0a mov r0, r5 | r0 = r5;
0x00001d0c add r1, pc | r1 = 0x3fe6;
0x00001d0e adds r1, 0x38 | r1 += 0x38;
0x00001d10 blx 0xcbc | r0 = strstr (r0, r1);
0x00001d14 cmp r0, 0 |
| if (r0 == 0) {
0x00001d16 beq.w 0x1b0c | goto label_8;
| }
0x00001d1a bl 0x1670 | fcn_00001670 ();
0x00001d1e str r0, [sp, 0x2c] | var_2ch = r0;
0x00001d20 cmp r0, 0 |
| if (r0 != 0) {
0x00001d22 bne.w 0x1b0c | goto label_8;
| }
0x00001d26 b 0x1ec4 | goto label_20;
| label_43:
0x00001d28 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00001d2a cmp r3, 0 |
| if (r3 == 0) {
0x00001d2c beq.w 0x1e7c | goto label_59;
| }
0x00001d30 mov r0, r7 | r0 = r7;
0x00001d32 blx 0xd58 | r0 = time (r0);
0x00001d36 mov r5, r0 | r5 = r0;
0x00001d38 ldr.w r0, [pc, 0x59c] |
0x00001d3c add r0, pc | r0 = 0x4018;
0x00001d3e blx 0xdd0 | r0 = opendir ();
0x00001d42 mov r6, r0 | r6 = r0;
0x00001d44 cmp r0, 0 |
| if (r0 == 0) {
0x00001d46 beq 0x1dce | goto label_60;
| }
0x00001d48 ldr.w r8, [pc, 0x590] |
0x00001d4c mov fp, r7 |
0x00001d4e mov sl, r5 | sl = r5;
0x00001d50 str.w sb, [sp, 0xc] | __asm ("str.w sb, [fd]");
0x00001d54 addw r7, sp, 0x4fe | __asm ("addw r7, arg_4feh");
0x00001d58 ldr.w sb, [sp, 0x34] | sb = src;
0x00001d5c add r8, pc | r8 = 0x403c;
0x00001d5e mov r5, fp | r5 = fp;
0x00001d60 b 0x1da4 |
| while (r0 != 0) {
0x00001d62 mov ip, r8 |
0x00001d64 mov r4, sb | r4 = sb;
0x00001d66 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001d6a stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00001d6c add.w r1, lr, 0xb | r1 = lr + 0xb;
0x00001d70 ldr.w r3, [ip] | r3 = *(ip);
0x00001d74 movs r2, 0xee | r2 = 0xee;
0x00001d76 mov r0, r7 | r0 = r7;
0x00001d78 strh r3, [r4] | *(r4) = r3;
0x00001d7a add r4, sp, 0x50 | r4 += arg_50h;
0x00001d7c blx 0xdac | strcpy_chk ();
0x00001d80 mov r1, r4 | r1 = r4;
0x00001d82 mov r0, sb | r0 = sb;
0x00001d84 blx 0xe18 | stat ();
0x00001d88 ldr r4, [sp, 0x90] | r4 = *(arg_90h);
0x00001d8a cmp r4, sl |
| if (r4 < sl) {
0x00001d8c bge 0x1da0 |
| if (r5 != 0) {
0x00001d8e cbz r5, 0x1d96 |
0x00001d90 mov r0, r5 | r0 = r5;
0x00001d92 blx 0xd34 | free (r0);
| }
0x00001d96 mov r0, sb | r0 = sb;
0x00001d98 mov sl, r4 | sl = r4;
0x00001d9a blx 0xd70 | r0 = strdup (r0);
0x00001d9e mov r5, r0 | r5 = r0;
| }
0x00001da0 add.w fp, fp, 1 |
0x00001da4 mov r0, r6 | r0 = r6;
0x00001da6 blx 0xf0c | r0 = fcn_00000f0c ();
0x00001daa mov lr, r0 | lr = r0;
0x00001dac cmp r0, 0 |
0x00001dae bne 0x1d62 |
| }
0x00001db0 cmp.w fp, 4 |
0x00001db4 ldr.w sb, [sp, 0xc] | sb = fd;
0x00001db8 mov sl, r5 | sl = r5;
| if (fp > 4) {
0x00001dba bgt 0x1e74 | goto label_61;
| }
| label_10:
0x00001dbc cmp.w sl, 0 |
| if (sl != 0) {
0x00001dc0 beq 0x1dc8 |
0x00001dc2 mov r0, sl | r0 = sl;
0x00001dc4 blx 0xd34 | free (r0);
| }
0x00001dc8 mov r0, r6 | r0 = r6;
0x00001dca blx 0xf6c | fcn_00000f6c ();
| label_60:
0x00001dce ldr.w r0, [pc, 0x510] |
0x00001dd2 add r0, pc | r0 = 0x40b8;
0x00001dd4 blx 0xe78 | r0 = mkstemp (r0);
0x00001dd8 subs r3, r0, 0 | r3 = r0 - 0;
0x00001dda str r3, [sp, 0xc] | fd = r3;
| if (r3 < r0) {
0x00001ddc blt.w 0x2242 | goto label_62;
| }
| label_11:
0x00001de0 ldr r0, [sp, 0x30] | r0 = path;
0x00001de2 blx 0xe60 | r0 = strlen (r0);
0x00001de6 mov r8, r0 | r8 = r0;
0x00001de8 adds r0, 3 | r0 += 3;
0x00001dea blx 0xde8 | r0 = malloc (r0);
0x00001dee mov r6, r0 | r6 = r0;
0x00001df0 cmp r0, 0 |
| if (r0 == 0) {
0x00001df2 beq.w 0x2234 | goto label_63;
| }
0x00001df6 movw r3, 0xa0d | r3 = 0xa0d;
0x00001dfa ldr r1, [sp, 0x30] | r1 = path;
0x00001dfc strh r3, [r0] | *(r0) = r3;
0x00001dfe movs r3, 0 | r3 = 0;
0x00001e00 add.w r2, r8, 1 | r2 = r8 + 1;
0x00001e04 strb r3, [r0, 2]! | *((r0 += 2)) = r3;
0x00001e08 blx 0xd4c | memcpy (r0, r1, r2);
0x00001e0c add r3, sp, 0xac | r3 += arg_ach;
0x00001e0e ldr r0, [sp, 0xc] | r0 = fd;
0x00001e10 mov r1, r3 | r1 = r3;
0x00001e12 str r3, [sp, 0x10] | var_10h = r3;
0x00001e14 blx 0xecc | fstatfs ();
0x00001e16 invalid |
0x00001e1a add.w r7, r8, 2 | r7 = r8 + 2;
| if (r3 < 0) {
0x00001e1e blt 0x1eaa | goto label_64;
| }
0x00001e20 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00001e22 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00001e24 add r0, r7 | r0 += r7;
0x00001e26 bl 0x1634 | fcn_00001634 (r0);
| label_12:
0x00001e2a ldr.w r4, [pc, 0x4b8] |
0x00001e2e mov r2, r7 | r2 = r7;
0x00001e30 mov r1, r6 | r1 = r6;
0x00001e32 add r4, pc | r4 = 0x411c;
0x00001e34 ldrd r3, r5, [r4] | __asm ("ldrd r3, r5, [r4]");
0x00001e38 add.w fp, r3, r5 |
0x00001e3c mov r0, fp | r0 = fp;
0x00001e3e blx 0xd64 | r0 = memcmp (r0, r1, r2);
0x00001e42 cmp r0, 0 |
| if (r0 != 0) {
0x00001e44 bne.w 0x2046 | goto label_65;
| }
0x00001e48 mov r0, r6 | r0 = r6;
0x00001e4a add r5, r7 | r5 += r7;
0x00001e4c blx 0xd34 | free (r0);
0x00001e50 str r5, [r4, 4] | *((r4 + 4)) = r5;
| label_22:
0x00001e52 ldr r0, [sp, 0xc] | r0 = fd;
0x00001e54 blx 0xf60 | r0 = fcn_00000f60 ();
0x00001e58 cmp r0, 0 |
| if (r0 >= 0) {
0x00001e5a bge.w 0x1b2a | goto label_9;
| }
0x00001e5e ldr.w r3, [pc, 0x488] |
0x00001e62 movs r1, 1 | r1 = 1;
0x00001e64 ldr.w r2, [pc, 0x484] |
0x00001e68 movs r0, 3 | r0 = 3;
0x00001e6a add r3, pc | r3 = 0x4158;
0x00001e6c add r2, pc | r2 = 0x415c;
0x00001e6e blx 0xf00 | fcn_00000f00 ();
0x00001e72 b 0x1ec4 | goto label_20;
| label_61:
0x00001e74 mov r0, r5 | r0 = r5;
0x00001e76 blx 0xf30 | fcn_00000f30 ();
0x00001e7a b 0x1dbc | goto label_10;
| label_59:
0x00001e7c ldr.w r0, [pc, 0x470] |
0x00001e80 add r0, pc | r0 = 0x4174;
0x00001e82 adds r0, 0x28 | r0 += 0x28;
0x00001e84 blx 0xe78 | r0 = mkstemp (r0);
0x00001e88 subs r3, r0, 0 | r3 = r0 - 0;
0x00001e8a str r3, [sp, 0xc] | fd = r3;
| if (r3 >= r0) {
0x00001e8c bge 0x1de0 | goto label_11;
| }
0x00001e8e ldr.w r3, [pc, 0x464] |
0x00001e92 mov r1, r4 | r1 = r4;
0x00001e94 ldr.w r2, [pc, 0x460] |
0x00001e98 movs r0, 3 | r0 = 3;
0x00001e9a add r3, pc | r3 = 0x4194;
0x00001e9c add r2, pc | r2 = 0x4198;
0x00001e9e blx 0xf00 | fcn_00000f00 ();
0x00001ea2 mov.w r3, -1 | r3 = -1;
0x00001ea4 adds r3, 0xff | r3 += 0xff;
0x00001ea6 str r3, [sp, 0x38] | var_38h = r3;
0x00001ea8 b 0x1f8a | goto label_15;
| label_64:
0x00001eaa ldr.w r3, [pc, 0x450] |
0x00001eae movs r1, 1 | r1 = 1;
0x00001eb0 ldr.w r2, [pc, 0x44c] |
0x00001eb4 movs r0, 6 | r0 = 6;
0x00001eb6 add r3, pc | r3 = 0x41b8;
0x00001eb8 add r2, pc | r2 = 0x41bc;
0x00001eba blx 0xf00 | fcn_00000f00 ();
0x00001ebe b 0x1e2a | goto label_12;
| label_57:
0x00001ec0 movs r3, 0 | r3 = 0;
0x00001ec2 strb r3, [r1] | *(r1) = r3;
| label_20:
0x00001ec4 mov.w r7, -1 | r7 = -1;
| label_17:
0x00001ec8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00001eca cmp r3, 0 |
| if (r3 == 0) {
0x00001ecc beq.w 0x2258 | goto label_66;
| }
| do {
| label_13:
0x00001ed0 ldr r4, [sp, 0x3c] | r4 = dest;
0x00001ed2 movw r2, 0x3ff | r2 = 0x3ff;
0x00001ed6 ldr r1, [sp, 0x34] | r1 = src;
0x00001ed8 mov r0, r4 | r0 = r4;
0x00001eda blx 0xeb4 | strncpy (r0, r1, r2);
0x00001ede movs r3, 0 | r3 = 0;
0x00001ee0 ldr.w r2, [pc, 0x420] |
0x00001ee4 strb.w r3, [r4, 0x3ff] | *((r4 + 0x3ff)) = r3;
0x00001ee8 ldr r3, [pc, 0x3a4] | r3 = *(0x2290);
0x00001eea add r2, pc | r2 = 0x41f2;
0x00001eec ldr r3, [r2, r3] | r3 = *(0x41f2);
0x00001eee ldr r2, [r3] | r2 = *(0x41f2);
0x00001ef0 ldr.w r3, [sp, 0x8ec] | r3 = *(arg_8ech);
0x00001ef4 eors r2, r3 | r2 ^= r3;
0x00001ef6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001efa bne.w 0x225c | goto label_67;
| }
0x00001efe mov r0, r7 | r0 = r7;
0x00001f00 addw sp, sp, 0x8f4 | __asm ("addw sp, sp, 0x8f4");
0x00001f04 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_47:
0x00001f08 ldr r4, [sp, 0x34] | r4 = src;
0x00001f0a mov.w r2, 0x400 | r2 = 0x400;
0x00001f0e ldr r1, [pc, 0x3f8] |
0x00001f10 mov r0, r4 | r0 = r4;
0x00001f12 add r1, pc | r1 = 0x4220;
0x00001f14 blx 0xdac | strcpy_chk ();
0x00001f16 invalid |
0x00001f1a strb r0, [r0, 7] | *((r0 + 7)) = r0;
0x00001f1c mov r0, r4 | r0 = r4;
0x00001f1e blx 0xf3c | r0 = fcn_00000f3c ();
0x00001f22 cmp r0, 0 |
0x00001f24 bge 0x1ed0 |
| } while (r0 >= 0);
0x00001f26 ldr r3, [pc, 0x3e4] |
0x00001f28 movs r1, 1 | r1 = 1;
0x00001f2a ldr r2, [pc, 0x3e4] |
0x00001f2c movs r0, 3 | r0 = 3;
0x00001f2e add r3, pc | r3 = 0x4240;
0x00001f30 add r2, pc | r2 = 0x4246;
0x00001f32 blx 0xf00 | fcn_00000f00 ();
0x00001f36 b 0x1ed0 | goto label_13;
| label_48:
0x00001f38 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00001f3a orrs.w r3, r4, fp | r3 = r4 | fp;
| if (r3 != r4) {
0x00001f3e bne 0x1f9c | goto label_68;
| }
0x00001f40 ldr r3, [pc, 0x3d0] |
0x00001f42 add r3, pc | r3 = 0x425a;
0x00001f44 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00001f48 ldr r3, [sp, 0x34] | r3 = src;
0x00001f4a str r0, [r3] | *(r3) = r0;
0x00001f4c strh.w r1, [sp, 0x4f0] | *(arg_4f0h) = r1;
| do {
| label_50:
0x00001f50 ldr r4, [sp, 0x34] | r4 = src;
0x00001f52 mov.w r2, 0x400 | r2 = 0x400;
0x00001f56 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00001f58 mov r0, r4 | r0 = r4;
0x00001f5a blx 0xe9c | strcat_chk ()
0x00001f5e ldr r0, [sp, 0x28] | r0 = ptr;
0x00001f60 blx 0xd34 | free (r0);
0x00001f64 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00001f66 blx 0xd34 | free (r0);
0x00001f6a ldr r0, [pc, 0x3ac] |
0x00001f6c mov r1, r4 | r1 = r4;
0x00001f6e add r0, pc | r0 = 0x428c;
0x00001f70 adds r0, 0x28 | r0 += 0x28;
0x00001f72 blx 0xe30 | r0 = rename (r0, r1);
0x00001f76 cmp r0, 0 |
| if (r0 < 0) {
0x00001f78 blt 0x1fd2 | goto label_51;
| }
| label_52:
0x00001f7a ldr r0, [sp, 0x34] | r0 = src;
0x00001f7c mov.w r1, 0x1a4 | r1 = 0x1a4;
0x00001f80 blx 0xf3c | r0 = fcn_00000f3c ();
0x00001f84 cmp r0, 0 |
| if (r0 < 0) {
0x00001f86 blt.w 0x21d6 | goto label_69;
| }
| label_15:
0x00001f8a ldr r0, [pc, 0x390] |
0x00001f8c add r0, pc | r0 = 0x42ae;
0x00001f8e adds r0, 0x28 | r0 += 0x28;
0x00001f90 blx 0xd88 | r0 = unlink (r0);
0x00001f94 cmp r0, 0 |
| if (r0 < 0) {
0x00001f96 blt 0x2008 | goto label_70;
| }
| label_16:
0x00001f98 ldr r7, [sp, 0x38] | r7 = var_38h;
0x00001f9a b 0x1ed0 | goto label_13;
| label_68:
0x00001f9c ldr r3, [pc, 0x380] |
0x00001f9e movw r2, 0x3fb | r2 = 0x3fb;
0x00001fa2 ldr r6, [sp, 0x34] | r6 = src;
0x00001fa4 add r3, pc |
0x00001fa6 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00001faa str r0, [r6] | *(r6) = r0;
0x00001fac addw r0, sp, 0x4f1 | __asm ("addw r0, arg_4f1h");
0x00001fb0 strb.w r1, [sp, 0x4f0] | *(arg_4f0h) = r1;
0x00001fb4 mov r1, r4 | r1 = r4;
0x00001fb6 cmp r4, 0 |
0x00001fb8 it eq |
| if (r4 != 0) {
0x00001fba moveq r1, fp | r1 = fp;
| }
0x00001fbc blx 0xda0 | stpcpy_chk ();
0x00001fc0 ldr r1, [pc, 0x360] |
0x00001fc2 subs r3, r6, r0 | r3 = r6 - r0;
0x00001fc4 add.w r3, r3, 0x400 | r3 = 0x46c8;
0x00001fc8 movs r2, 2 | r2 = 2;
0x00001fca add r1, pc | r1 = 0x42f2;
0x00001fcc blx 0xd94 | memcpy_chk ();
0x00001fd0 b 0x1f50 |
| } while (1);
| label_51:
0x00001fd2 blx 0xe90 | r0 = errno_location ();
0x00001fd6 ldr r3, [r0] | r3 = *(r0);
0x00001fd8 cmp r3, 0x12 |
| if (r3 != 0x12) {
0x00001fda bne.w 0x2216 | goto label_71;
| }
0x00001fde ldr r0, [pc, 0x348] |
0x00001fe0 ldr r1, [sp, 0x34] | r1 = src;
0x00001fe2 add r0, pc | r0 = 0x4310;
0x00001fe4 adds r0, 0x28 | r0 += 0x28;
0x00001fe6 bl 0x17a4 | r0 = fcn_000017a4 (r0, r1, r2, r3, r4, r5, r6);
0x00001fea cmp r0, 0 |
| if (r0 == 0) {
0x00001fec beq.w 0x1c1a | goto label_14;
| }
0x00001ff0 ldr r3, [pc, 0x338] |
0x00001ff2 movs r1, 1 | r1 = 1;
0x00001ff4 ldr r2, [pc, 0x338] |
0x00001ff6 movs r0, 3 | r0 = 3;
0x00001ff8 add r3, pc | r3 = 0x4328;
0x00001ffa add r2, pc | r2 = 0x432e;
0x00001ffc blx 0xf00 | fcn_00000f00 ();
| label_26:
0x00002000 mov.w r3, -1 | r3 = -1;
0x00002004 str r3, [sp, 0x38] | var_38h = r3;
0x00002006 b 0x1f8a | goto label_15;
| label_70:
0x00002008 blx 0xe90 | r0 = errno_location ();
0x0000200c ldr r3, [r0] | r3 = *(r0);
0x0000200e cmp r3, 2 |
| if (r3 == 2) {
0x00002010 beq 0x1f98 | goto label_16;
| }
0x00002012 ldr r3, [pc, 0x320] |
0x00002014 movs r1, 1 | r1 = 1;
0x00002016 ldr r2, [pc, 0x320] |
0x00002018 movs r0, 3 | r0 = 3;
0x0000201a add r3, pc | r3 = 0x4354;
0x0000201c add r2, pc | r2 = 0x435a;
0x0000201e blx 0xf00 | fcn_00000f00 ();
0x00002022 b 0x1f98 | goto label_16;
| label_58:
0x00002024 ldr r7, [sp, 0x40] | r7 = var_40h;
0x00002026 b 0x1ec8 | goto label_17;
| label_53:
0x00002028 ldr r3, [pc, 0x310] |
0x0000202a movs r1, 1 | r1 = 1;
0x0000202c ldr r2, [pc, 0x310] |
0x0000202e movs r0, 3 | r0 = 3;
0x00002030 add r3, pc | r3 = 0x4370;
0x00002032 add r2, pc | r2 = 0x4376;
0x00002034 blx 0xf00 | fcn_00000f00 ();
0x00002038 b 0x1c30 | goto label_18;
| label_49:
0x0000203a ldr r0, [pc, 0x308] |
0x0000203c add r0, pc | r0 = 0x4386;
0x0000203e blx 0xf78 | r0 = fcn_00000f78 ();
0x00002042 mov r5, r0 | r5 = r0;
0x00002044 b 0x1bec | goto label_19;
| label_65:
0x00002046 ldr r4, [r4, 8] | r4 = *((r4 + 8));
0x00002048 b 0x2056 |
| while (fp < 0) {
0x0000204a ldrb r3, [fp], 1 | r3 = *(fp);
| fp++;
0x0000204e cmp r3, 0xd |
0x00002050 it ne |
| if (r3 != 0xd) {
0x00002052 cmpne r3, 0xa | __asm ("cmpne r3, 0xa");
| }
| if (r3 != 0xd) {
0x00002054 bne 0x2078 | goto label_72;
| }
0x00002056 mov sl, r5 | sl = r5;
0x00002058 adds r5, 1 | r5++;
0x0000205a cmp.w fp, 0 |
0x0000205e it ne |
| if (fp != 0) {
0x00002060 cmpne r5, r4 | __asm ("cmpne r5, r4");
| }
0x00002062 blt 0x204a |
| }
0x00002064 ldr r3, [pc, 0x2e0] |
0x00002066 movs r1, 1 | r1 = 1;
0x00002068 ldr r2, [pc, 0x2e0] |
0x0000206a movs r0, 3 | r0 = 3;
0x0000206c add r3, pc | r3 = 0x43b8;
0x0000206e add r2, pc | r2 = 0x43be;
0x00002070 str r5, [r3, 4] | *((r3 + 4)) = r5;
0x00002072 blx 0xf00 | fcn_00000f00 ();
0x00002076 b 0x1ec4 | goto label_20;
| label_72:
0x00002078 ldr r5, [pc, 0x2d4] |
0x0000207a ldrd r0, r1, [sp, 0xc] | __asm ("ldrd r0, r1, [fd]");
0x0000207e add r5, pc | r5 = 0x43d2;
0x00002080 str.w sl, [r5, 4] | __asm ("str.w sl, [r5, 4]");
0x00002084 blx 0xecc | r0 = fstatfs ();
0x00002088 cmp r0, 0 |
| if (r0 < 0) {
0x0000208a blt.w 0x21b0 | goto label_73;
| }
0x0000208e ldr r3, [sp, 0x10] | r3 = var_10h;
0x00002090 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00002092 add r0, r7 | r0 += r7;
0x00002094 bl 0x1634 | fcn_00001634 (r0);
| label_24:
0x00002098 add.w r3, r6, r8 | r3 = r6 + r8;
0x0000209c str r3, [sp, 0x10] | var_10h = r3;
0x0000209e ldr r3, [pc, 0x2b4] |
0x000020a0 add r3, pc | r3 = 0x43fa;
0x000020a2 str r3, [sp, 0x1c] | var_1ch = r3;
| label_21:
0x000020a4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000020a6 subs r4, r4, r7 | r4 -= r7;
0x000020a8 cmp r4, sl |
0x000020aa ldrb.w r8, [r3, 1] | r8 = *((r3 + 1));
0x000020ae sub.w r8, r8, 0xd | r8 -= 0xd;
0x000020b2 clz r8, r8 | r8 &= r8;
0x000020b6 lsr.w r8, r8, 5 | r8 >>= 5;
| if (r4 < sl) {
0x000020ba blt 0x2168 | goto label_74;
| }
| label_23:
0x000020bc ldr r2, [pc, 0x298] |
0x000020be sub.w r8, r7, r8 | r8 = r7 - r8;
0x000020c2 mov r5, sl | r5 = sl;
0x000020c4 add r2, pc | r2 = 0x4420;
0x000020c6 ldr.w fp, [r2] | fp = *(0x4420);
0x000020ca b 0x20d6 |
| while (r0 != 0) {
0x000020cc adds r5, 1 | r5++;
0x000020ce cmp r5, r4 |
0x000020d0 str.w r5, [sb, 4] | __asm ("str.w r5, [sb, 4]");
| if (r5 > r4) {
0x000020d4 bgt 0x210e | goto label_75;
| }
0x000020d6 mov r2, r8 | r2 = r8;
0x000020d8 mov r1, r6 | r1 = r6;
0x000020da add.w r0, fp, r5 | r0 = fp + r5;
0x000020de blx 0xd64 | r0 = memcmp (r0, r1, r2);
0x000020e2 cmp r0, 0 |
0x000020e4 bne 0x20cc |
| }
0x000020e6 cmp r5, sl |
| if (r5 == sl) {
0x000020e8 beq 0x211c | goto label_76;
| }
0x000020ea cmp r5, r4 |
0x000020ec add.w r1, fp, sl | r1 = fp + sl;
| if (r5 > r4) {
0x000020f0 bgt 0x2116 | goto label_77;
| }
0x000020f2 sub.w r2, r5, sl | r2 = r5 - sl;
0x000020f6 cmp r2, 0 |
| if (r2 <= 0) {
0x000020f8 ble 0x21ce | goto label_78;
| }
| do {
0x000020fa ldr r0, [sp, 0xc] | r0 = fd;
0x000020fc blx 0xed8 | r0 = write (r0, r1, r2);
0x00002100 cmp r0, 0 |
| if (r0 < 0) {
0x00002102 blt 0x2196 | goto label_79;
| }
0x00002104 ldr r3, [pc, 0x254] |
0x00002106 add r3, pc | r3 = 0x4466;
0x00002108 ldrd sl, r4, [r3, 4] | __asm ("ldrd sl, r4, [r3, 4]");
0x0000210c b 0x20a4 | goto label_21;
| label_75:
0x0000210e cmp r5, sl |
| if (r5 == sl) {
0x00002110 beq 0x211c | goto label_76;
| }
0x00002112 add.w r1, fp, sl | r1 = fp + sl;
| label_77:
0x00002116 subs.w r2, r4, sl | r2 = r4 - sl;
0x0000211a bne 0x20fa |
| } while (r2 != r4);
| label_76:
0x0000211c ldr r5, [pc, 0x240] |
0x0000211e mov r0, r6 | r0 = r6;
0x00002120 blx 0xd34 | free (r0);
0x00002124 add r5, pc | r5 = 0x4488;
0x00002126 ldrd r1, r4, [r5, 4] | __asm ("ldrd r1, r4, [r5, 4]");
0x0000212a ldr r3, [r5] | r3 = *(0x4488);
0x0000212c subs r4, r4, r1 | r4 -= r1;
0x0000212e mov r0, r3 | r0 = r3;
0x00002130 add r1, r3 | r1 += r3;
0x00002132 mov r2, r4 | r2 = r4;
0x00002134 blx 0xd28 | memmove (r0, r1, r2);
0x00002138 ldr r2, [r5, 0xc] | r2 = *(0x4494);
0x0000213a adds r1, r0, r4 | r1 = r0 + r4;
0x0000213c movs r0, 0 | r0 = 0;
0x0000213e subs r2, r2, r4 | r2 -= r4;
0x00002140 bl 0x1600 | r0 = fcn_00001600 (r0, r1, r2);
0x00002144 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x00002146 blt 0x21c6 | goto label_80;
| }
0x00002148 add r4, r3 | r4 += r3;
0x0000214a movs r3, 0 | r3 = 0;
0x0000214c cmp r4, r3 |
0x0000214e str r4, [r5, 8] | *((r5 + 8)) = r4;
0x00002150 str r3, [r5, 4] | *((r5 + 4)) = r3;
| if (r4 >= r3) {
0x00002152 bge.w 0x1e52 | goto label_22;
| }
| do {
| label_25:
0x00002156 ldr r3, [pc, 0x20c] |
0x00002158 movs r1, 1 | r1 = 1;
0x0000215a ldr r2, [pc, 0x20c] |
0x0000215c movs r0, 3 | r0 = 3;
0x0000215e add r3, pc | r3 = 0x44c8;
0x00002160 add r2, pc | r2 = 0x44ce;
0x00002162 blx 0xf00 | fcn_00000f00 ();
0x00002166 b 0x1ec4 | goto label_20;
| label_74:
0x00002168 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x0000216a mov r2, r7 | r2 = r7;
0x0000216c ldr r3, [r5] | r3 = *(r5);
0x0000216e adds r1, r3, r4 | r1 = r3 + r4;
0x00002170 mov r0, r3 | r0 = r3;
0x00002172 blx 0xd4c | memcpy (r0, r1, r2);
0x00002176 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00002178 adds r1, r0, r7 | r1 = r0 + r7;
0x0000217a movs r0, 0 | r0 = 0;
0x0000217c subs r2, r2, r7 | r2 -= r7;
0x0000217e bl 0x1600 | fcn_00001600 (r0, r1, r2);
0x00002182 movs r3, 0 | r3 = 0;
0x00002184 mov r4, r0 | r4 = r0;
0x00002186 cmp r0, r3 |
0x00002188 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x0000218a str r3, [r5, 4] | *((r5 + 4)) = r3;
| if (r0 < r3) {
0x0000218c blt 0x21ce | goto label_78;
| }
0x0000218e adds r2, r0, r7 | r2 = r0 + r7;
0x00002190 mov sl, r3 | sl = r3;
0x00002192 str r2, [r5, 8] | *((r5 + 8)) = r2;
0x00002194 b 0x20bc | goto label_23;
| label_79:
0x00002196 ldr r3, [pc, 0x1d4] |
0x00002198 movs r1, 1 | r1 = 1;
0x0000219a ldr r2, [pc, 0x1d4] |
0x0000219c movs r0, 3 | r0 = 3;
0x0000219e add r3, pc | r3 = 0x4510;
0x000021a0 add r2, pc | r2 = 0x4516;
0x000021a2 blx 0xf00 | fcn_00000f00 ();
0x000021a6 ldr r3, [pc, 0x1cc] |
0x000021a8 add r3, pc | r3 = 0x4522;
0x000021aa ldrd sl, r4, [r3, 4] | __asm ("ldrd sl, r4, [r3, 4]");
0x000021ae b 0x20a4 | goto label_21;
| label_73:
0x000021b0 ldr r3, [pc, 0x1c4] |
0x000021b2 movs r1, 1 | r1 = 1;
0x000021b4 ldr r2, [pc, 0x1c4] |
0x000021b6 movs r0, 6 | r0 = 6;
0x000021b8 add r3, pc | r3 = 0x4534;
0x000021ba add r2, pc | r2 = 0x453a;
0x000021bc blx 0xf00 | fcn_00000f00 ();
0x000021c0 ldrd sl, r4, [r5, 4] | __asm ("ldrd sl, r4, [r5, 4]");
0x000021c4 b 0x2098 | goto label_24;
| label_80:
0x000021c6 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x000021c8 movs r3, 0 | r3 = 0;
0x000021ca str r3, [r5, 4] | *((r5 + 4)) = r3;
0x000021cc b 0x2156 |
| } while (1);
| label_78:
0x000021ce mov r0, r6 | r0 = r6;
0x000021d0 blx 0xd34 | free (r0);
0x000021d4 b 0x2156 | goto label_25;
| label_69:
0x000021d6 ldr r3, [pc, 0x1a8] |
0x000021d8 movs r1, 1 | r1 = 1;
0x000021da ldr r2, [pc, 0x1a8] |
0x000021dc movs r0, 3 | r0 = 3;
0x000021de add r3, pc | r3 = 0x4564;
0x000021e0 add r2, pc | r2 = 0x456a;
0x000021e2 blx 0xf00 | fcn_00000f00 ();
0x000021e6 b 0x1f8a | goto label_15;
| label_55:
0x000021e8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000021ea strb r0, [r3] | *(r3) = r0;
0x000021ec b 0x1ec4 | goto label_20;
| label_44:
0x000021ee ldr r3, [sp, 0x28] | r3 = ptr;
0x000021f0 cmp r3, 0 |
| if (r3 != 0) {
0x000021f2 beq 0x227e |
0x000021f4 ldr r2, [pc, 0x190] |
0x000021f6 movs r1, 1 | r1 = 1;
0x000021f8 movs r0, 4 | r0 = 4;
0x000021fa add r2, pc | r2 = 0x4586;
0x000021fc blx 0xf00 | fcn_00000f00 ();
0x00002200 b 0x1ec4 | goto label_20;
| label_40:
0x00002202 ldr r2, [pc, 0x188] |
0x00002204 add r2, pc | r2 = 0x4596;
| label_38:
0x00002206 movs r1, 1 | r1 = 1;
0x00002208 movs r0, 3 | r0 = 3;
0x0000220a blx 0xf00 | fcn_00000f00 ();
0x0000220e addw r3, sp, 0x4ec | __asm ("addw r3, arg_4ech");
0x00002212 str r3, [sp, 0x34] | src = r3;
0x00002214 b 0x1ec4 | goto label_20;
| label_71:
0x00002216 ldr r1, [pc, 0x178] |
0x00002218 ldr r0, [sp, 0x34] | r0 = src;
0x0000221a ldr r3, [pc, 0x178] |
0x0000221c ldr r2, [pc, 0x178] |
0x0000221e add r1, pc | r1 = 0x45b4;
0x00002220 adds r1, 0x28 | r1 += 0x28;
0x00002222 str r0, [sp, 4] | var_4h = r0;
0x00002224 str r1, [sp] | *(sp) = r1;
0x00002226 add r3, pc | r3 = 0x45c0;
0x00002228 add r2, pc | r2 = 0x45c4;
0x0000222a movs r1, 1 | r1 = 1;
0x0000222c movs r0, 3 | r0 = 3;
0x0000222e blx 0xf00 | fcn_00000f00 ();
0x00002232 b 0x2000 | goto label_26;
| label_63:
0x00002234 ldr r2, [pc, 0x164] |
0x00002236 movs r1, 1 | r1 = 1;
0x00002238 movs r0, 3 | r0 = 3;
0x0000223a add r2, pc | r2 = 0x45da;
0x0000223c blx 0xf00 | fcn_00000f00 ();
0x0000223e cdp p6, 6, c14, c0, c0, 2 | __asm ("cdp p6, 6, c14, c0, c0, 2");
| label_62:
0x00002242 ldr r3, [pc, 0x15c] |
0x00002244 movs r1, 1 | r1 = 1;
0x00002246 ldr r2, [pc, 0x15c] |
0x00002248 movs r0, 3 | r0 = 3;
0x0000224a mov.w r7, -1 | r7 = -1;
0x0000224e add r3, pc | r3 = 0x45f4;
0x00002250 add r2, pc | r2 = 0x45fa;
0x00002252 blx 0xf00 | fcn_00000f00 ();
0x00002256 b 0x1ed0 | goto label_13;
| label_66:
0x00002258 str r7, [sp, 0x38] | var_38h = r7;
0x0000225a b 0x1f8a | goto label_15;
| label_67:
0x0000225c blx 0xd7c | stack_chk_fail ();
| label_45:
0x00002260 ldr r2, [pc, 0x144] |
0x00002262 mov r1, r4 | r1 = r4;
0x00002264 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00002266 movs r0, 4 | r0 = 4;
0x00002268 add r2, pc | r2 = 0x4614;
0x0000226a blx 0xf00 | fcn_00000f00 ();
0x0000226e b 0x1ec4 | goto label_20;
| label_46:
0x00002270 ldr r2, [pc, 0x138] |
0x00002272 mov r1, r4 | r1 = r4;
0x00002274 movs r0, 4 | r0 = 4;
0x00002276 add r2, pc | r2 = 0x4626;
0x00002278 blx 0xf00 | fcn_00000f00 ();
0x0000227a cdp p6, 4, c14, c2, c2, 1 | __asm ("cdp p6, 4, c14, c2, c2, 1");
| }
0x0000227e ldr r2, [pc, 0x130] |
0x00002280 movs r1, 1 | r1 = 1;
0x00002282 movs r0, 4 | r0 = 4;
0x00002284 add r2, pc | r2 = 0x463a;
0x00002286 blx 0xf00 | fcn_00000f00 ();
0x0000228a b 0x1ec4 | goto label_20;
| }
[*] Function strcat used 3 times file_upload