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

Disassembly:
push ebp
lea ebp, [esp - 0x19ac]
mov eax, 0x19ac
call fcn.00414690
push 0xffffffffffffffff
push 0x431e6c
mov eax, dword fs:[0]
push eax
sub esp, 0x110
mov eax, dword [0x43ec80]
xor eax, ebp
mov dword [ebp + 0x19a8], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x19c0]
mov esi, dword [ebp + 0x19b4]
mov dword [ebp - 0x30], eax
lea eax, [ebp + 0x38]
push 0x4365c4
push eax
mov dword [ebp - 0x24], esi
call fcn.00414580
pop ecx
pop ecx
push 0x175c
lea eax, [ebp + 0x39]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
test eax, eax
jne 0x40db68
push esi
push str.Could_not_get_short_path_name_for__S
call fcn.0040ff78
lea eax, [ebp + 0x39]
push esi
push eax
call fcn.00414580
add esp, 0x10
lea eax, [ebp + 0x38]
push str.___version
push eax
call fcn.00414590
push str._JAVA_OPTIONS
call fcn.0040a799
push str.JAVA_TOOL_OPTIONS
mov dword [ebp - 0x34], eax
call fcn.0040a799
mov edi, str.JDK_JAVA_OPTIONS
push edi
mov dword [ebp - 0x2c], eax
call fcn.0040a799
push 0xc
pop esi
push esi
mov dword [ebp - 0x28], eax
xor ebx, ebx
lea eax, [ebp - 0x50]
push ebx
push eax
call fcn.00415e40
add esp, 0x20
push ebx
lea eax, [ebp - 0x50]
push eax
mov dword [ebp - 0x50], esi
lea eax, [ebp - 0x20]
push eax
xor esi, esi
lea eax, [ebp - 0x14]
inc esi
push eax
mov dword [ebp - 0x48], esi
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
jne 0x40dc09
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CreatePipe_error___d_
call fcn.0040ff78
pop ecx
pop ecx
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x19a8]
xor ecx, ebp
call fcn.00414678
add ebp, 0x19ac
leave
ret
push ebx
push esi
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_SetHandleInformation]
test eax, eax
jne 0x40dc26
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SetHandleInformation_error___d_
jmp 0x40dbdd
push 0x10
lea eax, [ebp - 0x44]
push ebx
push eax
call fcn.00415e40
push 0x44
pop esi
push esi
lea eax, [ebp - 0x94]
push ebx
push eax
call fcn.00415e40
mov eax, dword [ebp - 0x20]
add esp, 0x18
mov dword [ebp - 0x54], eax
xor eax, eax
mov word [ebp - 0x64], ax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x94]
push eax
push ebx
push ebx
push 0x20
push 1
push ebx
push ebx
lea eax, [ebp + 0x38]
push eax
push ebx
mov dword [ebp - 0x94], esi
mov dword [ebp - 0x68], 0x101
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
push dword [ebp - 0x20]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
setne byte [ebp - 0xd]
call esi
push ebx
lea ecx, [ebp]
mov dword [ebp + 0x18], 0xf
call fcn.00402834
mov dword [ebp - 4], ebx
cmp byte [ebp - 0xd], bl
je 0x40dceb
jmp 0x40dcbf
cmp dword [ebp - 0x1c], ebx
je 0x40dcdd
push dword [ebp - 0x1c]
lea eax, [ebp + 0x17a8]
push eax
lea ecx, [ebp]
call fcn.00406520
push ebx
lea eax, [ebp - 0x1c]
push eax
push 0x200
lea eax, [ebp + 0x17a8]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp eax, ebx
jne 0x40dca8
push 0xea60
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x34]
push str._JAVA_OPTIONS
call fcn.0040a7f8
push dword [ebp - 0x2c]
push str.JAVA_TOOL_OPTIONS
call fcn.0040a7f8
push dword [ebp - 0x28]
push edi
call fcn.0040a7f8
add esp, 0x18
cmp byte [ebp - 0xd], bl
jne 0x40dd49
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp + 0x38]
push eax
push str.Could_not_create_process__S__error__d_
call fcn.0040ff78
add esp, 0xc
push dword [ebp - 0x14]
call esi
mov byte [ebp - 0xd], bl
push ebx
push 1
lea ecx, [ebp]
call fcn.00402991
mov al, byte [ebp - 0xd]
jmp 0x40dbe6
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push dword [ebp - 0x18]
push str.Exit_Code__d
call fcn.0040ff78
cmp dword [ebp - 0x18], 0x103
pop ecx
pop ecx
jne 0x40dd86
push str.Terminating_process
call fcn.0040ff78
pop ecx
push 1
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
jmp 0x40ddac
cmp dword [ebp - 0x18], ebx
je 0x40ddac
push 0x14c
push str.1.0.0
push dword [ebp + 0x19bc]
push dword [ebp + 0x19b8]
push dword [ebp - 0x24]
call fcn.0040a551
add esp, 0x14
push dword [ebp - 0x44]
call esi
push dword [ebp - 0x40]
call esi
push dword [ebp - 0x14]
call esi
mov byte [ebp - 0xd], bl
cmp dword [ebp - 0x18], ebx
jne 0x40dea2
push ebx
lea ecx, [ebp + 0x1c]
mov dword [ebp + 0x34], 0xf
call fcn.00402834
push 1
push 1
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x11c]
mov byte [ebp - 4], 1
call fcn.0040d795
mov byte [ebp - 4], 2
jmp 0x40de59
cmp dword [ebp + 0x34], 0x10
mov eax, dword [ebp + 0x20]
jae 0x40de00
lea eax, [ebp + 0x20]
push str._version__
push eax
call fcn.00416320
pop ecx
pop ecx
cmp eax, ebx
je 0x40de59
lea edi, [eax + 0xa]
push 0x22
push edi
call fcn.00414040
pop ecx
pop ecx
cmp eax, ebx
je 0x40de28
sub eax, edi
mov esi, eax
jmp 0x40de33
push edi
call fcn.00414100
mov esi, eax
dec esi
pop ecx
dec esi
cmp esi, ebx
jge 0x40de39
xor esi, esi
push esi
push edi
mov edi, dword [ebp - 0x30]
push edi
call fcn.00414450
push edi
push 0x4364e0
mov byte [edi + esi], bl
mov byte [ebp - 0xd], 1
call fcn.0040ff78
add esp, 0x14
lea eax, [ebp + 0x1c]
push eax
lea eax, [ebp - 0x11c]
push eax
call fcn.0040d811
pop ecx
pop ecx
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
add ecx, eax
mov eax, dword [ecx + 8]
and al, 6
movsx eax, al
neg eax
sbb eax, eax
not eax
test ecx, eax
jne 0x40ddf4
lea ecx, [ebp - 0x11c]
mov byte [ebp - 4], 1
call fcn.0040bcb0
push ebx
push 1
lea ecx, [ebp + 0x1c]
call fcn.00402991
mov al, byte [ebp - 0xd]
mov byte [ebp - 0xd], al
jmp 0x40dd36