Function at 0x44ff60
Capabilities:
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Create process suspended
Create two anonymous pipes
Read file on windows
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x38c
mov edi, dword [esp + 0x3a0]
movzx ebx, byte [esp + 0x3a8]
call dword [sym.imp.KERNEL32.dll_GetOEMCP]
mov ebp, dword [sym.imp.msvcrt.dll__errno]
mov dword [esp + 0x38], eax
call ebp
test edi, edi
mov dword [eax], 0xc
mov eax, 0x4c7476
cmove edi, eax
mov dword [esp], edi
call sub.msvcrt.dll_wcslen
mov ecx, dword [esp + 0x3a4]
mov dword [esp], ecx
mov esi, eax
call sub.msvcrt.dll_wcslen
lea eax, [esi + eax + 1]
add eax, eax
mov dword [esp], eax
call sub.msvcrt.dll_malloc
test eax, eax
je 0x450715
mov dword [esp + 4], edi
mov esi, eax
xor edi, edi
mov dword [esp], eax
call sub.msvcrt.dll_wcscpy
mov ecx, dword [esp + 0x3a4]
mov dword [esp], esi
mov dword [esp + 4], ecx
call sub.msvcrt.dll_wcscat
xor eax, eax
mov edx, 1
mov dword [esp + 0xac], eax
xor eax, eax
mov dword [esp + 0xb0], eax
xor eax, eax
mov dword [esp + 0xb4], eax
mov eax, 0x40001
mov dword [esp + 0xa4], eax
mov eax, 0xc
mov dword [esp + 0x88], eax
lea eax, [esp + 0xa4]
mov dword [esp + 0x90], edx
mov dword [esp + 0xa8], edi
mov dword [esp + 0x8c], eax
call dword [sym.imp.KERNEL32.dll_GetConsoleCP]
mov dword [esp + 0x58], eax
call dword [sym.imp.KERNEL32.dll_GetConsoleOutputCP]
cmp dword [esp + 0x38], eax
mov dword [esp + 0x50], eax
jne 0x450160
xor ecx, ecx
dec bl
mov dword [esp + 0x40], ecx
je 0x450160
lea edi, [esp + 0x88]
xor eax, eax
mov ebx, dword [sym.imp.KERNEL32.dll_CreatePipe]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
lea eax, [esp + 0x68]
mov dword [esp + 8], edi
mov dword [esp], eax
call ebx
sub esp, 0x10
test eax, eax
je 0x450148
mov dword [esp + 8], edi
xor eax, eax
mov dword [esp + 0xc], eax
lea eax, [esp + 0x74]
mov dword [esp + 4], eax
lea eax, [esp + 0x70]
mov dword [esp], eax
call ebx
sub esp, 0x10
test eax, eax
jne 0x450180
mov dword [esp], esi
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x70], edi
mov ebp, 0xffffffff
mov dword [esp + 0x74], ebx
call fcn.00483050
mov eax, dword [sym.imp.KERNEL32.dll_SetConsoleOutputCP]
mov dword [esp + 0x78], ebp
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetConsoleCP]
sub esp, 4
mov eax, dword [esp + 0x50]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
call eax
sub esp, 4
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call edi
sub esp, 4
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call edi
sub esp, 4
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call edi
sub esp, 4
mov eax, dword [esp + 0x78]
add esp, 0x38c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0xffffffff
mov dword [esp + 0x6c], eax
mov eax, 0xffffffff
mov dword [esp + 0x68], eax
jmp 0x4500a0
mov eax, 8
mov edx, 0xfde9
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], edx
jmp 0x45006d
xor edx, edx
xor eax, eax
mov dword [esp + eax + 0x184], edx
mov dword [esp + eax + 0x188], edx
add eax, 8
cmp eax, 0x30
jb 0x450184
xor ecx, ecx
mov ebx, 0x44
mov dword [esp + eax + 0x184], ecx
mov eax, dword [esp + 0x74]
mov edi, 0x101
mov dword [esp + 0x180], ebx
mov dword [esp + 0x1ac], edi
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1b8], eax
call ebp
mov ebp, dword [esp + 0x38]
mov dword [eax], 0xa
mov eax, dword [sym.imp.KERNEL32.dll_SetConsoleOutputCP]
mov dword [esp], ebp
mov dword [esp + 0x48], eax
call eax
xor edx, edx
sub esp, 4
mov dword [esp + 8], edx
lea eax, [esp + 0x94]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x180]
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, 1
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], esi
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 0x28
mov ebx, eax
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call edi
sub esp, 4
mov dword [esp], esi
call fcn.00483050
mov ecx, 0xffffffff
test ebx, ebx
mov dword [esp + 0x78], ecx
je 0x4500f2
mov ebx, dword [esp + 0x50]
cmp ebp, 0xfde9
sete byte [esp + 0x37]
xor eax, eax
cmp ebx, 0xfde9
cmovne eax, ebx
xor edx, edx
mov dword [esp + 0x4c], eax
xor ebp, ebp
mov dword [esp + 0x44], edx
mov esi, dword [esp + 0x44]
xor eax, eax
mov dword [esp + 0x10], eax
lea eax, [esp + 0x7c]
mov dword [esp + 0xc], eax
mov eax, 0x200
sub eax, esi
mov dword [esp + 8], eax
lea eax, [esp + 0x180]
add eax, esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
sub esp, 0x14
mov ebx, eax
mov eax, dword [esp + 0x7c]
add esi, eax
xor eax, eax
mov dword [esp + 0x44], eax
mov eax, edi
mov edx, esi
mov dword [esp + 0x7c], esi
mov edi, ebx
xor esi, esi
mov dword [esp + 0x54], eax
lea esi, [esi]
lea esi, [esi]
nop
cmp esi, edx
jb 0x45033c
test edi, edi
jne 0x450620
test ebp, ebp
je 0x450670
mov dword [esp + 8], ebp
lea eax, [esp + 0xb8]
xor ebp, ebp
mov dword [esp + 4], eax
mov dword [esp], 0x4f24b0
call fcn.0044fdd0
sub esp, 0xc
mov edx, dword [esp + 0x7c]
cmp esi, edx
jae 0x450304
cmp byte [esp + 0x37], 0
movsx ax, byte [esp + esi + 0x180]
je 0x4503a0
mov cl, al
and cl, 0xc0
cmp cl, 0xc0
je 0x450530
test al, al
js 0x450500
mov word [esp + ebp*2 + 0xb8], ax
lea ecx, [ebp + 1]
inc esi
mov word [esp + 0x82], ax
cmp ax, 0xa
mov ebp, ecx
sete dl
test edi, edi
sete al
or al, dl
jne 0x450314
cmp ecx, 0x62
ja 0x450314
mov edx, dword [esp + 0x7c]
jmp 0x450300
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByteEx]
sub esp, 8
test eax, eax
setne al
mov byte [esp + 0x3c], al
movzx edx, al
lea ecx, [esi + edx]
mov ebx, edx
mov edx, dword [esp + 0x7c]
cmp ecx, edx
jae 0x450478
mov dword [esp + 0x3c], ecx
inc al
mov edx, 2
mov dword [esp + 0x14], edx
lea edx, [esp + 0x82]
movzx eax, al
mov dword [esp + 0xc], eax
lea eax, [esp + 0x180]
mov dword [esp + 0x10], edx
add esi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
sub esp, 0x18
test al, al
mov ecx, dword [esp + 0x3c]
je 0x4505e0
movzx edx, word [esp + 0x82]
lea esi, [ecx + 1]
cmp edx, 0xfeff
je 0x450630
mov word [esp + ebp*2 + 0xb8], dx
lea ecx, [ebp + 1]
cmp edx, 0xa
sete dl
dec al
je 0x4506e0
mov ebx, dword [esp + 0x84]
add ebp, 2
movzx eax, al
mov word [esp + ecx*2 + 0xb8], bx
lea ecx, [eax + ebp]
jmp 0x45037f
lea eax, [esp + 0x180]
sub edx, esi
mov dword [esp + 8], edx
add esi, eax
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 0x44], edx
call sub.msvcrt.dll_memmove
test edi, edi
jne 0x450620
mov dword [esp + 0x14], 2
lea eax, [esp + 0x82]
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x3c]
inc al
movzx eax, al
mov dword [esp + 0xc], eax
lea eax, [esp + 0x180]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
sub esp, 0x18
test al, al
jne 0x45070e
cmp byte [esp + 0x37], 0
je 0x4505d6
xor esi, esi
lea esi, [esi]
nop
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
mov dword [esp], ebx
call eax
xor eax, eax
sub esp, 4
mov dword [esp + 0x38], ebx
mov edx, dword [esp + 0x7c]
mov byte [esp + 0x37], 0
mov dword [esp + 0x40], eax
jmp 0x450300
mov cl, al
and cl, 0xe0
cmp cl, 0xe0
jne 0x450610
mov cl, al
and cl, 0xf0
cmp cl, 0xf0
jne 0x450658
mov cl, al
and cl, 0xf8
cmp cl, 0xf8
jne 0x4506f0
and al, 0xfe
cmp al, 0xfc
je 0x4506ff
ja 0x450500
mov byte [esp + 0x3c], 4
mov ebx, 4
lea ecx, [esi + ebx]
cmp ecx, edx
jae 0x450478
mov dword [esp + 0x14], 2
lea eax, [esp + 0x82]
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x3c]
mov dword [esp + 0x5c], ecx
inc al
movzx eax, al
mov dword [esp + 0xc], eax
lea eax, [esp + 0x180]
add eax, esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
sub esp, 0x18
test al, al
je 0x450500
mov ecx, dword [esp + 0x5c]
jmp 0x450426
mov ecx, ebx
lea esi, [esi]
nop
mov esi, 0xfffffffd
mov eax, 0xfffffffd
mov word [esp + 0x82], si
lea esi, [ecx + 1]
xor edx, edx
mov word [esp + ebp*2 + 0xb8], ax
lea ecx, [ebp + 1]
mov ebp, ecx
jmp 0x45037f
mov byte [esp + 0x3c], 1
mov ebx, 1
jmp 0x450570
mov edi, dword [esp + 0x54]
jmp 0x450299
cmp al, 1
je 0x45038d
mov ebx, 0xfffffeff
dec al
mov word [esp + ebp*2 + 0xb8], bx
lea ecx, [ebp + 1]
xor edx, edx
jmp 0x450456
mov byte [esp + 0x3c], 2
mov ebx, 2
jmp 0x450570
mov eax, dword [0x4f24c8]
mov edi, dword [esp + 0x54]
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov eax, dword [esp + 0x94]
mov ecx, 0xffffffff
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
lea eax, [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x94]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
sub esp, 8
mov eax, dword [esp + 0x98]
mov dword [esp], eax
call edi
sub esp, 4
mov eax, dword [esp + 0x94]
mov dword [esp], eax
call edi
sub esp, 4
jmp 0x4500f2
mov ebp, ecx
jmp 0x45037f
mov byte [esp + 0x3c], 3
mov ebx, 3
jmp 0x450570
mov byte [esp + 0x3c], 5
mov ebx, 5
jmp 0x450570
mov ecx, ebx
jmp 0x450426
or eax, 0xffffffff
jmp 0x45013a