Function at 0x40cca4
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.00413c90
push 0xffffffffffffffff
push 0x42efc8
mov eax, dword fs:[0]
push eax
sub esp, 0x110
mov eax, dword [0x43bc80]
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 0x433484
push eax
mov dword [ebp - 0x24], esi
call fcn.00413b80
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 0x40cd32
push esi
push str.Could_not_get_short_path_name_for__S
call fcn.0040ea46
lea eax, [ebp + 0x39]
push esi
push eax
call fcn.00413b80
add esp, 0x10
lea eax, [ebp + 0x38]
push str.___version
push eax
call fcn.00413b90
push str._JAVA_OPTIONS
call fcn.00409e9e
push str.JAVA_TOOL_OPTIONS
mov dword [ebp - 0x34], eax
call fcn.00409e9e
mov edi, str.JDK_JAVA_OPTIONS
push edi
mov dword [ebp - 0x2c], eax
call fcn.00409e9e
push 0xc
pop esi
push esi
mov dword [ebp - 0x28], eax
xor ebx, ebx
lea eax, [ebp - 0x50]
push ebx
push eax
call fcn.004154b0
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 0x40cdd3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CreatePipe_error___d_
call fcn.0040ea46
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.00413c78
add ebp, 0x19ac
leave
ret
push ebx
push esi
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_SetHandleInformation]
test eax, eax
jne 0x40cdf0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SetHandleInformation_error___d_
jmp 0x40cda7
push 0x10
lea eax, [ebp - 0x44]
push ebx
push eax
call fcn.004154b0
push 0x44
pop esi
push esi
lea eax, [ebp - 0x94]
push ebx
push eax
call fcn.004154b0
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.0040282b
mov dword [ebp - 4], ebx
cmp byte [ebp - 0xd], bl
je 0x40ceb5
jmp 0x40ce89
cmp dword [ebp - 0x1c], ebx
je 0x40cea7
push dword [ebp - 0x1c]
lea eax, [ebp + 0x17a8]
push eax
lea ecx, [ebp]
call fcn.00405ec9
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 0x40ce72
push 0xea60
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x34]
push str._JAVA_OPTIONS
call fcn.00409efd
push dword [ebp - 0x2c]
push str.JAVA_TOOL_OPTIONS
call fcn.00409efd
push dword [ebp - 0x28]
push edi
call fcn.00409efd
add esp, 0x18
cmp byte [ebp - 0xd], bl
jne 0x40cf13
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.0040ea46
add esp, 0xc
push dword [ebp - 0x14]
call esi
mov byte [ebp - 0xd], bl
push ebx
push 1
lea ecx, [ebp]
call fcn.00402988
mov al, byte [ebp - 0xd]
jmp 0x40cdb0
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.0040ea46
cmp dword [ebp - 0x18], 0x103
pop ecx
pop ecx
jne 0x40cf50
push str.Terminating_process
call fcn.0040ea46
pop ecx
push 1
push dword [ebp - 0x44]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
jmp 0x40cf71
cmp dword [ebp - 0x18], ebx
je 0x40cf71
push str.1.0.0
push dword [ebp + 0x19bc]
push dword [ebp + 0x19b8]
push dword [ebp - 0x24]
call fcn.00409ca0
add esp, 0x10
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 0x40d067
push ebx
lea ecx, [ebp + 0x1c]
mov dword [ebp + 0x34], 0xf
call fcn.0040282b
push 1
push 1
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x11c]
mov byte [ebp - 4], 1
call fcn.0040c8e4
mov byte [ebp - 4], 2
jmp 0x40d01e
cmp dword [ebp + 0x34], 0x10
mov eax, dword [ebp + 0x20]
jae 0x40cfc5
lea eax, [ebp + 0x20]
push str._version__
push eax
call fcn.00415900
pop ecx
pop ecx
cmp eax, ebx
je 0x40d01e
lea edi, [eax + 0xa]
push 0x22
push edi
call fcn.00413640
pop ecx
pop ecx
cmp eax, ebx
je 0x40cfed
sub eax, edi
mov esi, eax
jmp 0x40cff8
push edi
call fcn.00413700
mov esi, eax
dec esi
pop ecx
dec esi
cmp esi, ebx
jge 0x40cffe
xor esi, esi
push esi
push edi
mov edi, dword [ebp - 0x30]
push edi
call fcn.00413a50
push edi
push 0x43339c
mov byte [edi + esi], bl
mov byte [ebp - 0xd], 1
call fcn.0040ea46
add esp, 0x14
lea eax, [ebp + 0x1c]
push eax
lea eax, [ebp - 0x11c]
push eax
call fcn.0040cbb9
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 0x40cfb9
lea ecx, [ebp - 0x11c]
mov byte [ebp - 4], 1
call fcn.0040b328
push ebx
push 1
lea ecx, [ebp + 0x1c]
call fcn.00402988
mov al, byte [ebp - 0xd]
mov byte [ebp - 0xd], al
jmp 0x40cf00