Function at 0x402788
Capabilities:
Create process on windows
Get common file path

Disassembly:
push ebx
push esi
add esp, 0xfffff9f8
mov esi, eax
xor ebx, ebx
mov eax, esi
call fcn.00402734
cmp al, 1
jne 0x402b25
push 0
call sub.user32.dll_IsWindowEnabled
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcpyA
push 4
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_RtlZeroMemory
push 4
lea eax, [esp + 4]
push eax
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_RtlMoveMemory
call sub.kernel32.dll_GetCurrentProcessId
push 0x402b38
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcmpiA
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcpyA
push 4
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_RtlZeroMemory
push 4
lea eax, [esp + 4]
push eax
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_RtlMoveMemory
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
call sub.kernel32.dll_GetCurrentProcessId
call sub.kernel32.dll_GetCurrentProcess
push 1
call sub.kernel32.dll_Sleep
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcpyA
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_lstrlenA
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
push 0
call sub.user32.dll_IsWindowEnabled
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcpyA
call sub.kernel32.dll_GetCurrentProcess
push 1
call sub.kernel32.dll_Sleep
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_lstrlenA
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcpyA
call sub.kernel32.dll_GetCurrentProcessId
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_lstrlenA
push 0
call sub.user32.dll_IsWindowVisible
push 0
call sub.user32.dll_IsWindowEnabled
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
push 1
call sub.kernel32.dll_Sleep
push 0
call sub.user32.dll_IsWindowVisible
call sub.kernel32.dll_GetTickCount
call sub.user32.dll_GetForegroundWindow
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_lstrlenA
push 1
call sub.kernel32.dll_Sleep
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
call sub.user32.dll_GetForegroundWindow
call sub.kernel32.dll_GetTickCount
push 0
call sub.user32.dll_IsWindowVisible
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
push 0x402b34
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_lstrcatA
push 0
call sub.user32.dll_IsWindowEnabled
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_lstrlenA
push 0x402b38
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcmpiA
push 1
call sub.kernel32.dll_Sleep
push 0x402b38
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcmpA
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
call sub.kernel32.dll_GetTickCount
push 0x104
lea eax, [esp + 0x108]
push eax
call sub.kernel32.dll_GetSystemDirectoryA
call sub.user32.dll_GetForegroundWindow
push 4
lea eax, [esp + 4]
push eax
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_RtlMoveMemory
push 0x402b38
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcmpA
push 1
call sub.kernel32.dll_Sleep
push 0x402b3c
lea eax, [esp + 0x108]
push eax
call sub.kernel32.dll_lstrcpyA
call sub.kernel32.dll_GetTickCount
mov dword [esp], eax
push esp
push 0x402b30
lea eax, [esp + 0xc]
push eax
call sub.user32.dll_wvsprintfA
lea eax, [esp + 4]
push eax
lea eax, [esp + 0x108]
push eax
call sub.kernel32.dll_lstrcatA
push 0x402b44
lea eax, [esp + 0x108]
push eax
call sub.kernel32.dll_lstrcatA
lea eax, [esp + 0x104]
call fcn.0040275c
cmp al, 1
jne 0x402b25
push 0x402b4c
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcpyA
push 0x402b58
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push 0x402b60
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push esi
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push 0x402b6c
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push esi
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push 0x402b84
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push esi
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push 0x402b94
lea eax, [esp + 0x20c]
push eax
call sub.kernel32.dll_lstrcatA
push 0
push 1
lea eax, [esp + 0x210]
push eax
call sub.kernel32.dll_lstrlenA
mov ecx, eax
lea edx, [esp + 0x210]
lea eax, [esp + 0x10c]
call fcn.00402bd4
push 0
lea eax, [esp + 0x108]
push eax
call sub.kernel32.dll_WinExec
mov bl, 1
mov eax, ebx
add esp, 0x608
pop esi
pop ebx
ret