Function at 0x403580
Capabilities:
Copy file
Create process on windows
Get common file path
Get file size
Resume thread

Disassembly:
push ebp
lea ebp, [esp - 0xbbc]
sub esp, 0xc3c
mov eax, dword [0x410180]
xor eax, ebp
mov dword [ebp + 0xbb8], eax
push ebx
push esi
push edi
push 0x44
pop edi
push 0x40
xor esi, esi
lea eax, [ebp - 0x7c]
push esi
push eax
mov dword [ebp - 0x80], edi
call fcn.004060e0
mov eax, dword [0x411298]
mov ebx, dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
cmp eax, esi
je 0x403665
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x4014f8
push 0x410e88
lea eax, [ebp + 0x9b0]
push 0x4014e4
push eax
call ebx
push 0x10
lea eax, [ebp - 0x3c]
push esi
push eax
call fcn.004060e0
add esp, 0x1c
lea eax, [ebp - 0x2c]
push eax
push dword [0x411298]
mov dword [ebp - 0x80], edi
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
cmp dword [ebp - 0x2c], 0xfffffc18
jae 0x403652
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x80]
push eax
push 0x410e88
push esi
push 0x24
push esi
push esi
push esi
lea eax, [ebp + 0x9b0]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x403665
push 0x4014e0
push 1
push 1
push esi
push 0x4014ac
call fcn.00403c30
add esp, 0x14
jmp 0x403665
push 0x40
push 0x4014a4
push 0x401458
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
push esi
push esi
push 4
push esi
push 3
push 0x10000000
mov edi, 0x411090
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push esi
push eax
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
test eax, eax
je 0x403800
push esi
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
je 0x403800
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x208
lea eax, [ebp + 0x7a8]
push esi
push eax
call fcn.004060e0
add esp, 0xc
lea eax, [ebp - 0x2c]
push eax
push 5
push esi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
je 0x4036e9
push 0x4014e0
push 1
push 1
push esi
push 0x4013f8
call fcn.00403c30
add esp, 0x14
lea eax, [ebp + 0x7a8]
push eax
push dword [ebp - 0x2c]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
jne 0x403714
push 0x4014e0
push 1
push 1
push esi
push 0x4013bc
call fcn.00403c30
add esp, 0x14
cmp word [ebp + 0x7a8], si
jne 0x40374d
push 0x4013ac
push edi
lea eax, [ebp + 0x3c0]
push 0x401358
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x40
push 0x401348
lea eax, [ebp + 0x3c0]
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x401328
lea eax, [ebp + 0x7a8]
push eax
lea eax, [ebp + 0x9b0]
push 0x40131c
push eax
call ebx
add esp, 0x10
push esi
lea eax, [ebp + 0x9b0]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4037d0
lea eax, [ebp + 0x7a8]
push 0x5c
push eax
call fcn.004060ab
push 0x401328
add eax, 2
push eax
lea eax, [ebp + 0x9b0]
push 0x40131c
push eax
call ebx
push 0x4012fc
lea eax, [ebp + 0x9b0]
push eax
lea eax, [ebp - 0x28]
push 0x401258
push eax
call ebx
add esp, 0x28
push 0x40
push 0x40123c
lea eax, [ebp - 0x28]
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x403800
push 0x4013ac
push edi
lea eax, [ebp + 0x3c0]
push 0x4011e0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x40
push 0x401348
lea eax, [ebp + 0x3c0]
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [ebp - 0x38], esi
je 0x403835
push dword [ebp - 0x3c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [0x410e80]
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [ebp - 0x38]
call dword [sym.imp.KERNEL32.dll_ResumeThread]
push 0xffffffffffffffff
push dword [ebp - 0x38]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x38]
call esi
mov ecx, dword [ebp + 0xbb8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040615a
add ebp, 0xbbc
leave
ret