Function at 0x401587
Capabilities:
Copy file
Create process on windows
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x77c
push ebx
push esi
xor esi, esi
push edi
push esi
push 0x401540
push esi
push 0x65
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_CreateDialogParamA]
mov edi, eax
push 0x66
push edi
mov dword [ebp - 8], edi
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, dword [sym.imp.USER32.dll_SetDlgItemTextA]
push str.Preparing...
push 0x65
push edi
mov dword [ebp - 4], eax
call ebx
push edi
call fcn.00401888
pop ecx
lea eax, [ebp - 0x678]
mov edi, 0x104
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x77c]
push edi
push eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x470]
push eax
push esi
lea eax, [ebp - 0x678]
push 0x41108c
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
lea eax, [ebp - 0x470]
push esi
push eax
lea eax, [ebp - 0x77c]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x36c]
push eax
push str.tsldrl666
call fcn.00401380
lea eax, [ebp - 0x36c]
push eax
call fcn.0040905d
lea eax, [ebp - 0x470]
push 0x411038
push eax
call fcn.0040904a
mov dword [ebp + 8], eax
lea eax, [ebp - 0x36c]
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.00408950
lea eax, [ebp - 0x164]
push str.loader.da_
push eax
call fcn.004012d3
lea eax, [ebp - 0x164]
push 0x411048
push eax
call fcn.0040904a
push pe_overlay
mov edi, eax
push dword [ebp + 8]
push edi
call fcn.00401255
push edi
call fcn.00408fd4
push dword [ebp + 8]
call fcn.004014eb
add esp, 0x40
cmp eax, esi
jne 0x4016c3
push 0x10
push esi
push str.Body_is_empty
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.0040946d
movzx eax, ax
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
shl eax, 0x10
push eax
push esi
push 0x401
push dword [ebp - 4]
call edi
push esi
push 1
push 0x404
push dword [ebp - 4]
call edi
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x268]
push eax
push dword [ebp + 8]
call fcn.00401404
add esp, 0xc
test eax, eax
je 0x4017dd
push esi
push esi
push 0x405
push dword [ebp - 4]
call edi
lea eax, [ebp - 0x268]
push eax
push 0x65
push dword [ebp - 8]
call ebx
push dword [ebp - 8]
call fcn.00401888
lea eax, [ebp - 0x36c]
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.00408950
lea eax, [ebp - 0x268]
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.004012d3
push dword [ebp - 0xc]
lea eax, [ebp - 0x164]
push eax
push dword [ebp + 8]
call fcn.0040149b
lea eax, [ebp - 0x268]
push eax
call fcn.004012b7
lea eax, [ebp - 0x268]
push str.pbin.dat
push eax
call fcn.004093c0
add esp, 0x2c
test eax, eax
je 0x4016e8
lea eax, [ebp - 0x36c]
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.0040121d
lea eax, [ebp - 0x164]
push eax
lea eax, [ebp - 0x574]
push eax
call fcn.00408950
lea eax, [ebp - 0x164]
push eax
call fcn.00409090
mov byte [ebp + eax - 0x575], 0x5f
lea eax, [ebp - 0x574]
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.00409388
add esp, 0x1c
jmp 0x4016e8
push dword [ebp + 8]
call fcn.00408fd4
lea eax, [ebp - 0x470]
push eax
call fcn.0040935e
pop ecx
pop ecx
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_DestroyWindow]
lea eax, [ebp - 0x36c]
push eax
lea eax, [ebp - 0x268]
push eax
call fcn.00408950
lea eax, [ebp - 0x268]
push str.setup.exe
push eax
call fcn.004012d3
add esp, 0x10
xor eax, eax
lea edi, [ebp - 0x5c]
push 0x10
pop ecx
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x60], 0x44
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x36c]
push eax
push esi
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x268]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x401865
push 0xffffffffffffffff
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x36c]
push eax
call fcn.0040130a
lea eax, [ebp - 0x36c]
push eax
call fcn.00409334
pop ecx
xor eax, eax
pop ecx
pop edi
pop esi
pop ebx
leave
ret 0x10