Function at 0x401550
Capabilities:
Create directory
Create process on windows
Delete directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x574
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 - 4], 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 - 8], eax
call ebx
push edi
call fcn.004017c3
pop ecx
lea eax, [ebp - 0x574]
mov edi, 0x104
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x470]
push edi
push eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x268]
push eax
push str.tsldrl666
call fcn.00401380
pop ecx
lea eax, [ebp - 0x268]
pop ecx
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea eax, [ebp - 0x470]
push 0x411038
push eax
call fcn.00408f8a
push esi
push 0x15000
push eax
mov dword [ebp + 8], eax
call fcn.00408b99
push dword [ebp + 8]
call fcn.004014eb
add esp, 0x18
cmp eax, esi
jne 0x401623
push 0x10
push esi
push str.Body_is_empty
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
pop eax
jmp 0x4017bc
movzx eax, ax
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
shl eax, 0x10
push eax
push esi
push 0x401
push dword [ebp - 8]
call edi
push esi
push 1
push 0x404
push dword [ebp - 8]
call edi
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x164]
push eax
push dword [ebp + 8]
call fcn.00401404
add esp, 0xc
test eax, eax
je 0x4016f8
push esi
push esi
push 0x405
push dword [ebp - 8]
call edi
lea eax, [ebp - 0x164]
push eax
push 0x65
push dword [ebp - 4]
call ebx
push dword [ebp - 4]
call fcn.004017c3
lea eax, [ebp - 0x164]
push esi
push eax
lea eax, [ebp - 0x268]
push eax
lea eax, [ebp - 0x36c]
push esi
push eax
call fcn.00409244
push dword [ebp - 0xc]
lea eax, [ebp - 0x36c]
push eax
push dword [ebp + 8]
call fcn.0040149b
lea eax, [ebp - 0x164]
push eax
call fcn.004012b7
lea eax, [ebp - 0x164]
push str.pbin.dat
push eax
call fcn.00409340
add esp, 0x30
test eax, eax
je 0x401648
lea eax, [ebp - 0x268]
push eax
lea eax, [ebp - 0x36c]
push eax
call fcn.0040121d
pop ecx
pop ecx
jmp 0x401648
push dword [ebp + 8]
call fcn.00408f14
pop ecx
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_DestroyWindow]
push esi
lea eax, [ebp - 0x268]
push str.setup.exe
push eax
lea eax, [ebp - 0x164]
push esi
push eax
call fcn.00409244
push 0x44
lea eax, [ebp - 0x60]
pop edi
push edi
push esi
push eax
call fcn.004092e0
add esp, 0x20
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x60], edi
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x268]
push eax
push esi
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x164]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x401774
push 0xffffffffffffffff
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4017a0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x164]
push str.HA__Process_could_not_be_started___i_
push eax
call fcn.0040873d
add esp, 0xc
lea eax, [ebp - 0x164]
push 0x10
push esi
push eax
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
lea eax, [ebp - 0x268]
push eax
call fcn.0040130a
pop ecx
lea eax, [ebp - 0x268]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 0x10