Function at 0x401110
Capabilities:
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41b82d
mov eax, dword fs:[0]
push eax
sub esp, 0x1fc
mov eax, dword [0x42400c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x200
lea eax, [ebp - 0x1b8]
mov dword [ebp - 0x1b8], 0xc
push eax
lea eax, [ebp - 0x1a8]
mov dword [ebp - 0x1b4], 0
push eax
lea eax, [ebp - 0x1ac]
mov dword [ebp - 0x1b0], 1
push eax
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
jne 0x401189
mov eax, 0xfffffffe
jmp 0x4018b6
xorps xmm0, xmm0
mov dword [ebp - 0x1fc], 0x44
lea eax, [ebp - 0x1fc]
movlpd qword [ebp - 0x1f8], xmm0
push eax
movlpd qword [ebp - 0x1f0], xmm0
movlpd qword [ebp - 0x1e8], xmm0
movlpd qword [ebp - 0x1e0], xmm0
movlpd qword [ebp - 0x1d8], xmm0
movlpd qword [ebp - 0x1d0], xmm0
movlpd qword [ebp - 0x1c8], xmm0
movlpd qword [ebp - 0x1c0], xmm0
movups xmmword [ebp - 0x1a4], xmm0
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
mov eax, dword [ebp - 0x1a8]
movups xmm0, xmmword [str.cmd.exe__c__ver_]
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1c0], eax
xor eax, eax
mov word [ebp - 0x1cc], ax
mov ax, word [0x421778]
mov word [ebp - 0x14], ax
lea eax, [ebp - 0x1a4]
push eax
lea eax, [ebp - 0x1fc]
mov dword [ebp - 0x1d0], 0x101
push eax
push 0
push 0
push 0
push 1
push 0
push 0
movups xmmword [ebp - 0x34], xmm0
lea eax, [ebp - 0x34]
movups xmm0, xmmword [0x421768]
push eax
push 0
movups xmmword [ebp - 0x24], xmm0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
push dword [ebp - 0x1a8]
test eax, eax
jne 0x401279
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x1ac]
call esi
mov eax, 0xfffffffd
jmp 0x4018b6
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call edi
push 0x100
lea eax, [ebp - 0x134]
push 0
push eax
call fcn.0040a6e0
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
add esp, 0xc
mov dword [ebp - 0x138], 0xff
push 0
lea eax, [ebp - 0x138]
push eax
push 0xff
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 0x1ac]
call esi
test eax, eax
je 0x4012d1
cmp dword [ebp - 0x138], 0
jne 0x4012a7
push dword [ebp - 0x1ac]
call edi
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x4258c4]
cmp eax, dword [ecx + 4]
jle 0x401579
push 0x4258c4
call fcn.0040912c
add esp, 4
cmp dword [0x4258c4], 0xffffffff
jne 0x401579
xor eax, eax
mov dword [ebp - 4], 0
push 0x54
push eax
xorps xmm0, xmm0
mov dword [0x4258d8], 0
push 0x425988
movups xmmword [0x4258c8], xmm0
mov word [0x425949], ax
mov byte [0x42594b], al
mov word [0x425959], ax
mov byte [0x42595b], al
mov word [0x425969], ax
mov byte [0x42596b], al
mov word [0x425979], ax
mov byte [0x42597b], al
call fcn.0040a6e0
add esp, 0xc
mov dword [0x4258e4], 0
mov dword [0x4258dc], 0x4219b0
mov dword [0x4258e8], 0
mov dword [0x4258e0], 0
mov dword [0x4258f4], 0
mov dword [0x4258ec], 0x4219b0
mov dword [0x4258f8], 0
mov dword [0x4258f0], 0
mov dword [0x425904], 0
mov dword [0x4258fc], 0x421988
mov dword [0x425908], 0
mov dword [0x425900], 0
mov dword [0x425914], 0
mov dword [0x42590c], 0x4219a0
mov dword [0x425918], 0
mov dword [0x425910], 0
mov dword [0x425924], 0
mov dword [0x42591c], 0x421978
mov dword [0x425928], 0
mov dword [0x425920], 0
mov dword [0x425934], 0
mov dword [0x42592c], 0x421968
mov dword [0x425938], 0
mov dword [0x425930], 0
mov dword [0x42593c], 0x421990
mov dword [0x425940], 0
mov dword [0x425944], 0
mov byte [0x425948], 0
mov dword [0x42594c], 0
mov dword [0x425950], 0
mov dword [0x425954], 0
mov byte [0x425958], 0
mov dword [0x42595c], 0
mov dword [0x425960], 0
mov dword [0x425964], 0
mov byte [0x425968], 0
mov dword [0x42596c], 0
mov dword [0x425970], 0
mov dword [0x425974], 0
mov byte [0x425978], 0
mov dword [0x42597c], 0
mov dword [0x425980], 0
mov dword [0x425984], 0
call fcn.00401ed0
mov dword [ebp - method.CBufferRefT_char_.virtual_0], vtable.CBufferRefT_char_.0
xor esi, esi
mov dword [ebp - 0x140], str.10.d.d
inc esi
cmp byte [esi + str.10.d.d], 0
jne 0x401522
mov dword [ebp - 0x13c], esi
call fcn.00401ed0
mov dword [ebp - method.CBufferRefT_char_.virtual_0], vtable.CBufferRefT_char_.0
mov dword [ebp - 0x204], str.10.d.d
mov dword [ebp - 0x200], esi
push ecx
lea eax, [ebp - 0x208]
mov byte [ebp - 4], 3
push eax
call fcn.004029d0
push 0x41b9e0
call fcn.00409488
push 0x4258c4
call fcn.004090e2
add esp, 8
xor esi, esi
mov dword [ebp - method.CBufferRefT_char_.virtual_0], vtable.CBufferRefT_char_.0
cmp byte [ebp - 0x134], 0
lea eax, [ebp - 0x134]
xorps xmm0, xmm0
mov dword [ebp - 0x204], eax
movups xmmword [ebp - 0x148], xmm0
mov dword [ebp - 0x200], esi
je 0x4015c1
nop word [eax + eax]
inc esi
cmp byte [ebp + esi - 0x134], 0
jne 0x4015b0
mov dword [ebp - 0x200], esi
mov dword [ebp - 4], 4
cmp dword [0x4258c8], 0
je 0x40188f
push 0x4c
lea eax, [ebp - 0x194]
push 0
push eax
call fcn.0040a6e0
add esp, 0xc
mov dword [ebp - 0x18c], 0
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
mov dword [ebp - 0x188], 0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x17c], 0
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
mov dword [ebp - 0x178], 0
mov dword [ebp - 0x180], 0
mov dword [ebp - 0x16c], 0
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
mov dword [ebp - 0x168], 0
mov dword [ebp - 0x170], 0
mov byte [ebp - 4], 5
lea eax, [ebp - 0x134]
test byte [0x4258cc], 0x10
mov dword [ebp - 0x158], 0
mov dword [ebp - 0x15c], 0xffffffff
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], esi
mov dword [ebp - 0x154], 0x64
je 0x4016ab
mov dword [ebp - 0x160], esi
mov dword [ebp - 0x164], esi
jmp 0x4016bf
mov dword [ebp - 0x160], 0
mov dword [ebp - 0x164], 0
lea eax, [ebp - 0x194]
push eax
lea eax, [ebp - 0x148]
push eax
call fcn.004026c0
mov eax, dword [ebp - 0x170]
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
test eax, eax
je 0x4016ef
push eax
call fcn.0040eaa5
add esp, 4
mov eax, dword [ebp - 0x180]
mov dword [ebp - method.CBufferRefT_int_.virtual_0], vtable.CBufferRefT_int_.0
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
test eax, eax
je 0x401716
push eax
call fcn.0040eaa5
add esp, 4
mov eax, dword [ebp - 0x190]
mov dword [ebp - method.CBufferRefT_int_.virtual_0], vtable.CBufferRefT_int_.0
mov dword [ebp - method.CBufferT_int_.virtual_0], vtable.CBufferT_int_.0
test eax, eax
je 0x40173d
push eax
call fcn.0040eaa5
add esp, 4
mov esi, dword [ebp - 0x140]
test esi, esi
jle 0x40188f
mov edi, dword [ebp - 0x144]
cmp dword [edi], 0
je 0x401895
cmp esi, 2
jg 0x401764
or eax, 0xffffffff
jmp 0x401767
mov eax, dword [edi + 8]
cmp esi, 3
jg 0x401771
or ecx, 0xffffffff
jmp 0x401774
mov ecx, dword [edi + 0xc]
cmp esi, 2
jg 0x40177e
or edx, 0xffffffff
jmp 0x401781
mov edx, dword [edi + 8]
lea eax, [ebp + eax - 0x134]
sub ecx, edx
push eax
push ecx
push str.Windows_Version:__.s_n
call fcn.00408f20
add esp, 0xc
cmp esi, 2
jg 0x4017a3
or eax, 0xffffffff
jmp 0x4017a6
mov eax, dword [edi + 8]
cmp esi, 3
jg 0x4017b0
or ecx, 0xffffffff
jmp 0x4017b3
mov ecx, dword [edi + 0xc]
cmp esi, 2
jg 0x4017bd
or edx, 0xffffffff
jmp 0x4017c0
mov edx, dword [edi + 8]
lea eax, [ebp + eax - 0x134]
sub ecx, edx
push eax
push ecx
lea eax, [ebp - 0x134]
push str._.s
push eax
call fcn.00401a50
lea eax, [ebp - 0x134]
push 0x2e
push eax
call fcn.0040a250
inc eax
push eax
lea eax, [ebp - 0x134]
push 0x4217ac
push eax
call fcn.00401a50
lea eax, [ebp - 0x134]
push eax
call fcn.0040ea80
add esp, 0x28
cmp eax, 0x47bb
jle 0x40181d
mov esi, 8
jmp 0x4018a7
cmp eax, 0x47ba
jle 0x40182b
mov esi, 7
jmp 0x4018a7
cmp eax, 0x4563
jle 0x401839
mov esi, 6
jmp 0x4018a7
cmp eax, 0x42ee
jle 0x401847
mov esi, 5
jmp 0x4018a7
cmp eax, 0x3fab
jle 0x401855
mov esi, 4
jmp 0x4018a7
cmp eax, 0x3ad7
jle 0x401863
mov esi, 3
jmp 0x4018a7
cmp eax, 0x3839
jle 0x401871
mov esi, 2
jmp 0x4018a7
cmp eax, 0x295a
jle 0x40187f
mov esi, 1
jmp 0x4018a7
cmp eax, 0x2800
jl 0x40188a
xor esi, esi
jmp 0x4018a7
or esi, 0xffffffff
jmp 0x4018a7
mov edi, dword [ebp - 0x144]
push str.not_windows_10
call fcn.00408f20
add esp, 4
mov esi, 0x38f
test edi, edi
je 0x4018b4
push edi
call fcn.0040eaa5
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00408f4e
mov esp, ebp
pop ebp
ret