Function at 0x4569fc
Capabilities:
Copy file
Create process on windows
Delete file
Get common file path
Set current directory

Disassembly:
push ebp
mov ebp, esp
mov ecx, 9
push 0
push 0
dec ecx
jne 0x456a04
push ecx
push ebx
mov eax, 0x455d14
call fcn.004067d0
xor eax, eax
push ebp
push 0x456d1c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00403284
cmp eax, 2
jl 0x456a66
lea edx, [ebp - 0x14]
mov eax, 1
call fcn.004032e4
mov eax, dword [ebp - 0x14]
mov edx, 0x456d34
call fcn.00404e40
jne 0x456a66
lea edx, [ebp - 0x18]
mov eax, 2
call fcn.004032e4
mov eax, dword [ebp - 0x18]
call fcn.00404ea8
push eax
call sub.kernel32.dll_DeleteFileA
mov eax, pe_nt_image_headers32
call fcn.00402e60
mov ebx, eax
push pe_nt_image_headers32
push ebx
call sub.kernel32.dll_GetWindowsDirectoryA
lea edx, [ebp - 0x1c]
mov eax, ebx
call fcn.0040909c
mov edx, dword [ebp - 0x1c]
mov eax, 0x580cfc
mov ecx, 0x456d44
call fcn.00404d30
mov eax, ebx
call fcn.00402e7c
lea eax, [ebp - 0x20]
mov ecx, 0x456d54
mov edx, dword [0x580cfc]
call fcn.00404d30
mov ecx, dword [ebp - 0x20]
mov dl, 1
mov eax, dword [0x41b910]
call fcn.0041b9c8
mov dword [0x580ce4], eax
xor eax, eax
push ebp
push 0x456cf5
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 0x28]
xor eax, eax
call fcn.004032e4
mov eax, dword [ebp - 0x28]
lea edx, [ebp - 0x24]
call fcn.00408d40
mov edx, dword [ebp - 0x24]
mov eax, 0x580cf4
call fcn.00404a6c
lea edx, [ebp - 0x30]
xor eax, eax
call fcn.004032e4
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x2c]
call fcn.00408d74
mov edx, dword [ebp - 0x2c]
mov eax, 0x580cf8
call fcn.00404a6c
mov edx, 0x580d00
mov eax, dword [0x580cf4]
call fcn.00455adc
call fcn.004554f8
test al, al
je 0x456b71
lea edx, [ebp - 0x34]
mov eax, dword [0x580cf4]
call fcn.00455320
mov edx, dword [ebp - 0x34]
mov eax, 0x580ce8
call fcn.00404a6c
mov eax, dword [0x580ce8]
call fcn.00408c94
test al, al
jne 0x456c00
mov eax, dword [0x580ce8]
call fcn.0040305c
call fcn.00402fbc
jmp 0x456c00
mov eax, dword [0x580cf4]
call fcn.00455468
test al, al
jne 0x456bcd
push 0x456d6c
lea eax, [ebp - 0x38]
push eax
mov ecx, 0x456d78
mov edx, 0x456d8c
mov eax, dword [0x580ce4]
mov ebx, dword [eax]
call dword [ebx]
mov edx, dword [ebp - 0x38]
mov eax, 0x580ce8
call fcn.00404a6c
mov eax, dword [0x580ce8]
call fcn.00455468
test al, al
jne 0x456bdd
lea eax, [ebp - 0x3c]
call fcn.004553e8
mov edx, dword [ebp - 0x3c]
mov eax, 0x580ce8
call fcn.00404a6c
jmp 0x456bdd
mov eax, 0x580ce8
mov edx, dword [0x580cf4]
call fcn.00404a6c
cmp dword [0x580ce8], 0
je 0x456c00
mov eax, dword [0x580ce8]
push eax
mov ecx, 0x456d78
mov edx, 0x456d8c
mov eax, dword [0x580ce4]
mov ebx, dword [eax]
call dword [ebx + 4]
cmp dword [0x580ce8], 0
jne 0x456c13
call fcn.0040450c
jmp 0x456d01
mov eax, dword [0x580ce8]
mov edx, dword [0x580cf4]
call fcn.00404e40
je 0x456cbf
push 0
lea eax, [ebp - 0x40]
mov ecx, dword [0x580cf8]
mov edx, dword [0x580ce8]
call fcn.00404d30
mov eax, dword [ebp - 0x40]
call fcn.00404ea8
push eax
lea edx, [ebp - 0x44]
xor eax, eax
call fcn.004032e4
mov eax, dword [ebp - 0x44]
call fcn.00404ea8
push eax
call sub.kernel32.dll_CopyFileA
mov eax, dword [0x580ce8]
call fcn.00404ea8
push eax
call sub.kernel32.dll_SetCurrentDirectoryA
push 0
push 0
push 0x456da0
lea edx, [ebp - 0x4c]
xor eax, eax
call fcn.004032e4
push dword [ebp - 0x4c]
push 0x456db0
lea eax, [ebp - 0x48]
mov edx, 3
call fcn.00404dac
mov eax, dword [ebp - 0x48]
call fcn.00404ea8
push eax
mov eax, dword [0x580cf8]
call fcn.00404ea8
push eax
push 0x456db4
push 0
call sub.shell32.dll_ShellExecuteA
call fcn.0040450c
jmp 0x456d01
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x456cfc
mov eax, dword [0x580ce4]
call fcn.00403c04
mov eax, dword [0x580d00]
call fcn.00408c70
test al, al
je 0x456cf4
mov eax, dword [0x580d00]
call fcn.00404ea8
push eax
call sub.kernel32.dll_DeleteFileA
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x456d23
lea eax, [ebp - 0x4c]
mov edx, 0xf
call fcn.00404a3c
ret