Function at 0x407ea1
Capabilities:
Accept command line arguments
Check if file exists
Create directory
Create process on windows
Create thread
Get common file path
Get file attributes
Move file
Set current directory

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x11c0
call fcn.00401420
push ebx
push esi
push edi
xor edi, edi
push edi
push edi
push edi
push 0x407e10
push edi
push edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x30], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x24], edi
call dword [sym.imp.msvcrt.dll__beginthreadex]
add esp, 0x18
call fcn.00403f96
lea eax, [ebp - 0x48]
mov dword [ebp - 0x20], 0x401b42
push eax
mov dword [ebp - 0x1c], 0x401b5b
mov dword [ebp - 0x54], 0x401b42
mov dword [ebp - 0x50], 0x401b5b
call fcn.00404bd5
lea eax, [ebp - 0x78]
push edi
push eax
call fcn.00404e86
add esp, 0xc
mov dword [ebp - 0x5c], edi
mov esi, 0x104
lea eax, [ebp - 0xf78]
push esi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x408612
cmp eax, esi
ja 0x408612
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov edx, eax
mov ecx, edi
movzx eax, word [edx]
cmp eax, 0x22
jne 0x407f4d
xor eax, eax
test ecx, ecx
sete al
mov ecx, eax
jmp 0x407f5b
test ax, ax
je 0x407f60
cmp eax, 0x20
jne 0x407f5b
test ecx, ecx
je 0x407f60
add edx, 2
jmp 0x407f3a
lea eax, [ebp - 0x750]
mov dword [ebp - 0x18], edx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov esi, eax
lea eax, [ebp - 0x750]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test esi, esi
je 0x408612
cmp esi, 0x104
ja 0x408612
lea ecx, [ebp - 0x750]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x407f9e
sub ecx, edx
sar ecx, 1
mov dword [ebp - 0x10], ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
shl esi, 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
xor edi, esi
shl edi, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov esi, eax
xor esi, edi
mov edi, dword [ebp - 0x10]
xor eax, eax
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], eax
push 0x401094
lea eax, [ebp - 0x750]
lea eax, [eax + edi*2]
push 8
push eax
call dword [sym.imp.msvcrt.dll_wcscpy_s]
lea ecx, [ebp - 0x750]
add esp, 0xc
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x28]
jne 0x408000
sub ecx, edx
mov dword [ebp - 0xc], 8
sar ecx, 1
mov edi, esi
mov dword [ebp - 0x2c], ecx
lea ebx, [ebp + ecx*2 - 0x742]
mov esi, edi
shr edi, 4
and esi, 0xf
cmp esi, 0xa
dec dword [ebp - 0xc]
lea eax, [esi + 0x37]
lea ecx, [esi + 0x30]
movzx edx, ax
movzx eax, cx
cmovb edx, eax
mov word [ebx], dx
lea ebx, [ebx - 2]
jne 0x408023
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x10]
mov word [ebp + eax*2 - 0x740], cx
lea eax, [ebp - 0x750]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40808e
xor esi, esi
lea eax, [ebp - 0x750]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4080f0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4080ab
inc dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [ebp - 0x14]
add esi, eax
cmp dword [ebp - 4], 0x64
mov dword [ebp - 0x14], esi
jb 0x407fdd
xor esi, esi
push 0xb
pop ebx
lea eax, [ebp - 0x750]
push eax
lea eax, [ebp - 0x11c0]
push 0x124
push eax
call dword [sym.imp.msvcrt.dll_wcscpy_s]
add esp, 0xc
test ebx, ebx
je 0x408124
push esi
push esi
xor esi, esi
inc esi
xor eax, eax
push esi
push 0x4010a8
push eax
push 0x40104c
push eax
push eax
call dword [sym.imp.COMCTL32.dll_Ordinal_344]
mov eax, esi
jmp 0x408615
push 0x4010a4
lea eax, [ebp - 0x750]
push 0x30e
push eax
call dword [sym.imp.msvcrt.dll_wcscat_s]
lea edi, [ebp - 0x750]
add esp, 0xc
lea ecx, [edi + 2]
mov ax, word [edi]
add edi, 2
cmp ax, si
jne 0x408113
sub edi, ecx
sar edi, 1
jmp 0x4080ae
lea eax, [ebp - 0xf78]
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.00404de0
pop ecx
pop ecx
test eax, eax
je 0x408145
mov dword [ebp - 8], 0x401110
push 0xb
jmp 0x408198
lea eax, [ebp - 0x3c]
xorps xmm0, xmm0
push eax
lea eax, [ebp - 0x40]
movlpd qword [ebp - 0x3c], xmm0
push eax
call fcn.00407c65
pop ecx
pop ecx
test eax, eax
je 0x408175
push esi
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.00404cff
add esp, 0xc
test eax, eax
je 0x408181
push 0xb
pop ebx
mov dword [ebp - 8], 0x401140
jmp 0x4081ae
lea eax, [ebp - 0x20]
push 0x40000
push eax
call dword [ebp - 0x20]
mov dword [ebp - 0x5c], eax
pop ecx
pop ecx
test eax, eax
jne 0x40819b
push 2
pop ebx
jmp 0x4081ae
lea eax, [ebp - 0x48]
mov dword [ebp - 0x58], 0x40000
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x64], esi
lea eax, [ebp - 0x134]
push eax
call fcn.00402b25
pop ecx
test ebx, ebx
jne 0x4083b1
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x134]
push eax
call fcn.00402b69
mov ebx, eax
add esp, 0x10
test ebx, ebx
jne 0x4083b1
or dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x28], esi
cmp dword [ebp - 0xf4], eax
jbe 0x4083a5
xor eax, eax
push eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], eax
lea eax, [ebp - 0x134]
push esi
push eax
call fcn.00402ae4
add esp, 0xc
cmp eax, 0x104
jae 0x4083a2
lea eax, [ebp - 0x750]
lea eax, [eax + edi*2]
push eax
lea eax, [ebp - 0x134]
push esi
push eax
call fcn.00402ae4
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x38]
push eax
push esi
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x134]
push eax
call fcn.00402907
mov ebx, eax
add esp, 0x34
mov dword [ebp - 0x30], ebx
test ebx, ebx
jne 0x4083a5
xor edx, edx
lea ecx, [ebp - 0x750]
lea ecx, [ecx + edi*2]
mov dword [ebp - 0x14], edx
mov eax, edx
cmp word [ecx], dx
je 0x4082d7
mov esi, ecx
cmp word [esi], 0x2f
jne 0x4082c5
xor eax, eax
mov word [esi], ax
lea eax, [ebp - 0x750]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4082b3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x5c
pop eax
lea ecx, [ebp - 0x750]
mov word [esi], ax
mov eax, dword [ebp - 0x14]
lea ecx, [ecx + edi*2]
inc eax
mov dword [ebp - 0x14], eax
lea esi, [ecx + eax*2]
cmp word [esi], bx
jne 0x408290
mov ebx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0xec]
mov ecx, esi
and ecx, 7
mov edx, 0x80
sar edx, cl
mov ecx, esi
shr ecx, 3
test byte [ecx + eax], dl
je 0x40830f
xor eax, eax
push eax
lea eax, [ebp - 0x750]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x40837c
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x40837c
lea eax, [ebp - 0x750]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40839b
lea eax, [ebp - 0x750]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00404df5
pop ecx
pop ecx
test eax, eax
jne 0x408392
mov eax, dword [ebp - 4]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x34]
push eax
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x10]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00404d79
add esp, 0xc
test eax, eax
jne 0x408360
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 4]
je 0x40836a
push 0xb
mov dword [ebp - 8], 0x4011e0
pop ebx
lea eax, [ebp - 0x2c]
push eax
call fcn.00404c25
pop ecx
test ebx, ebx
jne 0x4083a5
test eax, eax
jne 0x40838e
inc esi
mov dword [ebp - 0x28], esi
cmp esi, dword [ebp - 0xf4]
jb 0x408201
jmp 0x4083a5
mov ebx, eax
jmp 0x4083a5
mov dword [ebp - 8], 0x4011ac
jmp 0x4083a2
mov dword [ebp - 8], 0x401184
push 0xb
pop ebx
push dword [ebp - 0xc]
lea eax, [ebp - 0x20]
push eax
call dword [ebp - 0x1c]
pop ecx
pop ecx
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x134]
push eax
call fcn.00402a70
push dword [ebp - 0x5c]
lea eax, [ebp - 0x20]
push eax
call dword [ebp - 0x1c]
lea eax, [ebp - 0x40]
push eax
call fcn.00404c25
xor esi, esi
add esp, 0x14
inc esi
test ebx, ebx
jne 0x408557
xor eax, eax
mov word [ebp - 0x95c], ax
lea eax, [ebp - 0x95c]
push eax
push 0x105
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x408408
cmp eax, 0x104
jbe 0x408411
xor eax, eax
mov word [ebp - 0x95c], ax
lea eax, [ebp - 0x11c0]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
xor eax, eax
push eax
call dword [sym.imp.ole32.dll_CoInitialize]
push edi
lea eax, [ebp - 0x750]
push eax
lea eax, [ebp - 0xd6c]
push 0x104
push eax
call dword [sym.imp.msvcrt.dll_wcsncpy_s]
push 0x401218
lea eax, [ebp - 0xd6c]
push 0x104
push eax
call dword [sym.imp.msvcrt.dll_wcscat_s]
push 0x401240
lea eax, [ebp - 0xb64]
push 0x104
push eax
call dword [sym.imp.msvcrt.dll_wcscpy_s]
push dword [ebp - 0x18]
lea eax, [ebp - 0xb64]
push 0x104
push eax
call dword [sym.imp.msvcrt.dll_wcscat_s]
xor eax, eax
mov dword [ebp - 0xb4], 0x3c
push 0x38
push eax
lea eax, [ebp - 0xb0]
push eax
call sub.msvcrt.dll_memset
add esp, 0x40
mov dword [ebp - 0xb0], 0x804140
lea eax, [ebp - 0xd6c]
mov dword [ebp - 0x98], 0xa
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0xb64]
mov dword [ebp - 0xa0], eax
push 0x401254
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
mov ecx, 0x401268
lea eax, [ebp - 0xb4]
cmove ecx, dword [ebp - 0xa8]
push eax
mov dword [ebp - 0xa8], ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x408516
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x4c7
push 0xb
pop eax
cmovne ebx, eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x40854a
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x24]
push eax
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov ecx, dword [ebp - 0x24]
test eax, eax
push dword [ebp - 0x18]
cmove ecx, esi
mov dword [ebp - 0x24], ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x95c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
xor eax, eax
mov word [ebp + edi*2 - 0x750], ax
lea edi, [ebp - 0x94]
mov dword [ebp - 0x98], eax
push 6
pop ecx
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0x750]
lea edx, [ecx + 2]
stosw word es:[edi], ax
lea eax, [ebp - 0x750]
mov dword [ebp - 0x90], eax
xor edi, edi
mov eax, 0x614
mov dword [ebp - 0x94], 3
mov word [ebp - 0x88], ax
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x4085a1
sub ecx, edx
xor eax, eax
sar ecx, 1
mov word [ebp + ecx*2 - 0x74e], ax
lea eax, [ebp - 0x98]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
test ebx, ebx
jne 0x4085d0
mov eax, dword [ebp - 0x24]
jmp 0x408615
cmp ebx, 4
jne 0x4085dc
mov eax, 0x401274
jmp 0x408601
cmp ebx, 2
jne 0x4085e8
mov eax, 0x4012b0
jmp 0x408601
cmp ebx, 3
jne 0x4085f4
mov eax, 0x4012d4
jmp 0x408601
mov ecx, dword [ebp - 8]
mov eax, 0x4010e8
test ecx, ecx
cmovne eax, ecx
push edi
push edi
push esi
push eax
push edi
push 0x40104c
push edi
push edi
jmp 0x4080e3
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10