Function at 0x401050
Capabilities:
Accept command line arguments
Copy file
Create directory
Create process on windows
Create process suspended
Delete directory
Delete file
Get common file path
Move file

Disassembly:
sub esp, 0xcc0
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0xcbc], eax
push esi
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
cmp dword [esp + 0x38], 3
mov esi, eax
mov dword [esp + 0x34], esi
je 0x4010b5
push 0x40
push 0x408198
push str.Invalid_arguments
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, 1
pop esi
mov ecx, dword [esp + 0xcbc]
xor ecx, esp
call fcn.00401681
add esp, 0xcc0
ret 0x10
mov ecx, dword [esi + 4]
push edi
xor edi, edi
push edi
push ecx
call fcn.0040166d
add esp, 8
cmp eax, 0xffffffff
jne 0x4010e6
mov edx, dword [esi + 4]
push 0x40
push 0x408198
push edx
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, 1
jmp 0x40153e
lea eax, [esp + 0x290]
push eax
push 0x105
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x40156e
lea ecx, [esp + 0x84]
push ecx
push edi
push 0x40818c
lea edx, [esp + 0x29c]
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x40156e
lea eax, [esp + 0x84]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
je 0x40156e
push edi
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0x298]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryExW]
test eax, eax
je 0x40156e
mov edx, dword [esi + 4]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401162
sub eax, esi
sar eax, 1
push edx
add eax, 1
push eax
lea eax, [esp + 0x298]
push eax
call fcn.0040157a
lea eax, [esp + 0x29c]
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401190
sub eax, edx
sar eax, 1
cmp word [esp + eax*2 + 0x28e], 0x5c
lea eax, [esp + eax*2 + 0x28e]
je 0x4011b9
add eax, 2
mov word [eax], 0x5c
push 0x4081d0
add eax, 2
push 4
push eax
call fcn.0040157a
push 0x20a
lea ecx, [esp + 0xaca]
push edi
push ecx
mov word [esp + 0xad0], di
call fcn.00401690
push 0x20a
lea edx, [esp + 0x4ba]
push edi
push edx
mov word [esp + 0x4c0], di
call fcn.00401690
lea eax, [esp + 0x2b4]
add esp, 0x24
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401210
sub eax, edx
sar eax, 1
lea ecx, [esp + 0x290]
push ecx
add eax, 1
push eax
lea edx, [esp + 0xac0]
push edx
call fcn.0040157a
lea eax, [esp + 0x90]
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401245
sub eax, edx
sar eax, 1
lea ecx, [esp + 0x84]
push ecx
add eax, 1
push eax
lea edx, [esp + 0x4a4]
push edx
call fcn.0040157a
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
add esp, 0xc
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov word [esp + 0x34], ax
lea edx, [esp + 0x18]
lea eax, [esp + 0xab8]
lea ecx, [esp + 0x49c]
push edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], 2
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov word [esp + 0x2c], 0x614
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
test eax, eax
jne 0x401557
push 0x44
lea eax, [esp + 0x44]
push edi
push eax
call fcn.00401690
xor eax, eax
push 0x40e
lea ecx, [esp + 0x6ba]
push edi
push ecx
mov dword [esp + 0x58], 0x44
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
call fcn.00401690
lea eax, [esp + 0x9c]
add esp, 0x18
mov word [esp + 0x6a8], 0x22
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401320
sub eax, edx
sar eax, 1
lea edx, [esp + 0x84]
push edx
add eax, 1
push eax
lea eax, [esp + 0x6b2]
push eax
call fcn.0040157a
lea eax, [esp + 0x6b4]
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401355
sub eax, edx
sar eax, 1
lea ecx, [esp + eax*2 + 0x6a8]
mov eax, str.vcredist_x86.exe___Q
mov word [ecx], 0x5c
lea esi, [eax + 2]
jmp 0x401380
mov dx, word [eax]
add eax, 2
cmp dx, di
jne 0x401380
push ebx
sub eax, esi
push ebp
sar eax, 1
push str.vcredist_x86.exe___Q
add eax, 1
push eax
add ecx, 2
push ecx
call fcn.0040157a
mov ebx, dword [sym.imp.KERNEL32.dll_CreateProcessW]
add esp, 0xc
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x4c]
push edx
push edi
push edi
push edi
push edi
push edi
push edi
lea eax, [esp + 0x6d0]
push eax
push edi
call ebx
test eax, eax
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
jne 0x4013d8
call fcn.00401000
jmp 0x4013f3
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [esp + 0x10]
push edx
call ebp
mov eax, dword [esp + 0x14]
push eax
call ebp
push 0x44
lea ecx, [esp + 0x4c]
push edi
push ecx
call fcn.00401690
add esp, 0xc
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x48], 0x44
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401427
sub eax, edx
sar eax, 1
lea edx, [esp + 0x8c]
push edx
add eax, 1
push eax
lea eax, [esp + 0x6b8]
push eax
call fcn.0040157a
lea eax, [esp + 0x6bc]
add esp, 0xc
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x401460
sub eax, edx
mov edx, dword [esp + 0x40]
mov edx, dword [edx + 8]
sar eax, 1
lea ecx, [esp + eax*2 + 0x6b0]
mov eax, edx
mov word [ecx], 0x5c
lea edi, [eax + 2]
mov si, word [eax]
add eax, 2
test si, si
jne 0x401487
sub eax, edi
sar eax, 1
push edx
add eax, 1
push eax
add ecx, 2
push ecx
call fcn.0040157a
add esp, 0xc
xor esi, esi
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x4c]
push ecx
push esi
push esi
push esi
push esi
push esi
push esi
lea edx, [esp + 0x6d0]
push edx
push esi
call ebx
test eax, eax
jne 0x4014cf
call fcn.00401000
jmp 0x4014ea
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [esp + 0x10]
push ecx
call ebp
mov edx, dword [esp + 0x14]
push edx
call ebp
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov word [esp + 0x3c], ax
lea ecx, [esp + 0x20]
lea eax, [esp + 0x4a4]
push ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], 3
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], esi
mov word [esp + 0x34], 0x614
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
pop ebp
pop ebx
xor eax, eax
mov ecx, dword [esp + 0xcc4]
pop edi
pop esi
xor ecx, esp
call fcn.00401681
add esp, 0xcc0
ret 0x10
call fcn.00401000
lea edx, [esp + 0x84]
push edx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x40153c
call fcn.00401000
mov eax, 1
jmp 0x40153e