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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
mov dword [ebp - 0x84], 0xc
mov dword [ebp - 0x7c], 1
mov dword [ebp - 0x80], 0
push 0
lea eax, [ebp - 0x84]
push eax
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
je 0x4230b7
push 0
lea eax, [ebp - 0x84]
push eax
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
jne 0x4230c5
mov eax, dword [ebp + 0xc]
mov dword [eax], 0
jmp 0x4232dd
push 0xfffffffffffffff6
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov dword [ebp - 0x2c], eax
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x20]
push ecx
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_SetStdHandle]
test eax, eax
jne 0x423107
push str.cannot_set_stdout_handle
push 0x435324
push 0x100
push 0x435330
call fcn.00401c80
add esp, 0x10
mov edx, dword [ebp - 0xc]
push edx
push 0xfffffffffffffff6
call dword [sym.imp.KERNEL32.dll_SetStdHandle]
test eax, eax
jne 0x423133
push str.cannot_set_stdin_handle
push 0x43535c
push 0x102
push 0x435368
call fcn.00401c80
add esp, 0x10
mov eax, dword [ebp - 0x24]
mov dword [ebp - 4], eax
push 2
push 0
push 0
lea ecx, [ebp - 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
jne 0x42317b
push str.cannot_dup_input_handle
push 0x435394
push 0x108
push 0x4353a0
call fcn.00401c80
add esp, 0x10
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 8]
mov dword [ebp - 4], ecx
push 2
push 0
push 0
lea edx, [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
jne 0x4231cd
push str.cannot_dup_output_handle
push 0x4353d0
push 0x10f
push 0x4353dc
call fcn.00401c80
add esp, 0x10
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x78], 0x44
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0
xor edx, edx
mov word [ebp - 0x46], dx
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x4c], 0x101
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x3c], ecx
xor edx, edx
mov word [ebp - 0x48], dx
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x78]
push ecx
push 0
push 0
push 0
push 1
push 0
push 0
mov edx, dword [ebp + 8]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x423259
push str.cannot_create_child_process
push 0x43540c
push 0x11e
push 0x435418
call fcn.00401c80
add esp, 0x10
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp - 0x1c]
mov dword [eax], ecx
mov edx, dword [ebp - 0x2c]
push edx
push 0xfffffffffffffff6
call dword [sym.imp.KERNEL32.dll_SetStdHandle]
test eax, eax
jne 0x42328d
push str.cannot_restore_stdin
push 0x435444
push 0x121
push 0x435450
call fcn.00401c80
add esp, 0x10
mov eax, dword [ebp - 0x28]
push eax
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_SetStdHandle]
test eax, eax
jne 0x4232b9
push str.cannot_restore_stdout
push str.pipeopen
push 0x123
push str..osmswin32io.c
call fcn.00401c80
add esp, 0x10
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp - 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x24]
mov dword [eax], ecx
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
mov dword [edx], eax
mov esp, ebp
pop ebp
ret