Function at 0x402670
Capabilities:
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Create process suspended
Create thread
Create two anonymous pipes
Resume thread

Disassembly:
sub esp, 0x4c
push ebx
push ebp
push esi
push edi
xor eax, eax
mov ecx, 0x11
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
mov dword [esp + 0x18], 0x44
mov dword [esp + 0x44], 0x101
mov word [esp + 0x48], ax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edi, dword [sym.imp.KERNEL32.dll_CreatePipe]
push 0x104
push 0
push 0x42bc40
push 0x42bdac
mov esi, eax
call edi
test eax, eax
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
mov ebp, dword [sym.imp.KERNEL32.dll_FormatMessageA]
jne 0x402718
movzx ecx, word [0x42ca04]
push 0
push 0
lea eax, [esp + 0x18]
push eax
push ecx
mov dword [esp + 0x20], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0
push 0x1300
call ebp
mov edx, dword [0x42bd4c]
mov eax, dword [esp + 0x10]
push 0x10
push edx
push eax
push 0
call ebx
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
push 0x820
push 0
push 0x42bde0
push 0x42bddc
call edi
test eax, eax
jne 0x402777
push eax
push eax
mov dword [esp + 0x18], eax
movzx eax, word [0x42ca04]
lea edx, [esp + 0x18]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0
push 0x1300
call ebp
mov ecx, dword [0x42bd4c]
mov edx, dword [esp + 0x10]
push 0x10
push ecx
push edx
push 0
call ebx
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov ecx, dword [0x42bdac]
mov edi, dword [sym.imp.KERNEL32.dll_DuplicateHandle]
push 3
push 1
push 0
push 0x42bdac
push esi
push ecx
push esi
call edi
mov edx, dword [0x42bde0]
push 3
push 1
push 0
push 0x42bde0
push esi
push edx
push esi
call edi
mov eax, dword [0x42bde0]
push 2
push 1
push 0
push 0x42c9fc
push esi
push eax
push esi
call edi
mov eax, dword [0x42bdac]
test eax, eax
jne 0x402826
mov eax, dword [0x42bde0]
test eax, eax
jne 0x402826
mov eax, dword [0x42c9fc]
test eax, eax
jne 0x402826
movzx edx, word [0x42ca04]
push 0
push 0
lea ecx, [esp + 0x18]
push ecx
push edx
mov dword [esp + 0x20], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0
push 0x1300
call ebp
mov eax, dword [0x42bd4c]
mov ecx, dword [esp + 0x10]
push 0x10
push eax
push ecx
push 0
call ebx
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov eax, dword [0x42bdac]
mov ecx, dword [0x42bde0]
mov edx, dword [0x42c9fc]
push 0x42bde8
mov dword [esp + 0x54], eax
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push 4
push 1
push 0
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x7c]
push 0
push ecx
push 0
mov dword [esp + 0x80], edx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov edx, dword [0x42bdac]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
mov edi, eax
call esi
mov eax, dword [0x42bde0]
push eax
call esi
mov ecx, dword [0x42c9fc]
push ecx
call esi
test edi, edi
jne 0x4028b3
mov edx, dword [0x42bc40]
push edx
call esi
mov eax, dword [0x42bddc]
push eax
call esi
mov ecx, dword [0x42c9fc]
push ecx
call esi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x4c
ret
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
lea edx, [esp + 0x14]
push edx
push 0
push 0
push 0x402500
push 0
push 0
call edi
push eax
call esi
mov eax, dword [0x42bdec]
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
lea ecx, [esp + 0x14]
push ecx
push 0
push 0
push 0x402630
push 0
push 0
call edi
push eax
call esi
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x4c
ret