Function at 0x405890
Capabilities:
Create a process with modified i/o handles and window
Create process on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x568ab0
mov eax, dword fs:[0]
push eax
sub esp, 0x64
push esi
push edi
mov eax, dword [0x5cefc4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xorps xmm0, xmm0
mov dword [ebp - 0x70], 0x44
xor eax, eax
movlpd qword [ebp - 0x6c], xmm0
xor edi, edi
movlpd qword [ebp - 0x64], xmm0
movlpd qword [ebp - 0x5c], xmm0
movlpd qword [ebp - 0x54], xmm0
movlpd qword [ebp - 0x4c], xmm0
movlpd qword [ebp - 0x3e], xmm0
movlpd qword [ebp - 0x36], xmm0
mov word [ebp - 0x2e], ax
mov word [ebp - 0x40], ax
mov dword [ebp - 0x44], 0x101
movups xmmword [0x5d80dc], xmm0
cmp dword [0x5d80d4], eax
je 0x405b0b
cmp dword [0x5d80d8], eax
je 0x405b0b
lea ecx, [ebp - 0x2c]
call fcn.0040a79b
push edi
mov dword [ebp - 4], edi
lea ecx, [ebp - 0x2c]
push dword [0x5d80cc]
call fcn.0040aa1a
test eax, eax
jne 0x405962
push dword [0x5d80cc]
push str._ERROR__Pac_file___s__dont_exist._n
call fcn.00405380
add esp, 8
lea ecx, [ebp - 0x2c]
call fcn.0040a947
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x2c]
call fcn.0040a9c0
push 0
push dword [0x5d80c8]
lea ecx, [ebp - 0x2c]
call fcn.0040aa1a
test eax, eax
jne 0x40598b
push dword [0x5d80c8]
push str._ERROR__Dloader_application___s__dont_exist._n
jmp 0x40593f
lea ecx, [ebp - 0x2c]
call fcn.0040a9c0
call fcn.004080c9
mov ecx, eax
test ecx, ecx
je 0x405b2b
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 1
lea eax, [ebp - 0x10]
push dword [0x5d80d8]
push dword [0x5d80d4]
push dword [0x5d80cc]
push dword [0x5d80c8]
push str.__s___pac___s___port__d__count__d
push eax
call fcn.004052b0
add esp, 0x18
cmp dword [0x5d80c0], 0
je 0x4059f4
push 8
push str.__EZMode
lea ecx, [ebp - 0x10]
call fcn.00405dc0
cmp dword [0x5d80c4], 0
je 0x405a1d
push 9
push str.__ReadNV
lea ecx, [ebp - 0x10]
call fcn.00405dc0
mov eax, dword [0x5d80d0]
lea ecx, [ebp - 0x10]
push dword [eax - 0xc]
push eax
call fcn.00405dc0
mov eax, dword [0x5d80f8]
cmp dword [eax - 0xc], 0
je 0x405a48
push 0xa
push str.__WriteSN
lea ecx, [ebp - 0x10]
call fcn.00405dc0
mov eax, dword [0x5d80f8]
lea ecx, [ebp - 0x10]
push dword [eax - 0xc]
push eax
call fcn.00405dc0
mov eax, dword [0x5d80fc]
cmp dword [eax - 0xc], 0
je 0x405a73
push 0xb
push str.__WriteSN2
lea ecx, [ebp - 0x10]
call fcn.00405dc0
mov eax, dword [0x5d80fc]
lea ecx, [ebp - 0x10]
push dword [eax - 0xc]
push eax
call fcn.00405dc0
mov eax, dword [0x5d8100]
cmp dword [eax - 0xc], 0
je 0x405a9e
push 0xa
push str.__timeout
lea ecx, [ebp - 0x10]
call fcn.00405dc0
mov eax, dword [0x5d8100]
lea ecx, [ebp - 0x10]
push dword [eax - 0xc]
push eax
call fcn.00405dc0
mov esi, dword [ebp - 0x10]
lea eax, [ebp - 0x70]
push 0x5d80dc
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push esi
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
mov edi, eax
test edi, edi
jne 0x405adc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str._ERROR__CreateProcess____s___failed___Errorcode0x_x_._n
call fcn.00405380
add esp, 0xc
jmp 0x405ae6
mov dword [0x5d80bc], 0
mov byte [ebp - 4], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x405947
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x405947
push str._ERROR__Invalid_COM_Port._n
call fcn.00405380
add esp, 4
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.004023a0
int3