Function at 0x40170c
Capabilities:
Create process on windows
Get common file path
Set current directory
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa64
mov eax, dword [0x410284]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
xor edi, edi
push edi
push edi
mov dword [ebp - 0xa18], eax
call dword [sym.imp.kernel32.dll_CreateJobObjectA]
xor ecx, ecx
cmp eax, edi
setne cl
push str.Job_creation_failed
mov dword [0x411b68], eax
push ecx
call fcn.00401b4b
pop ecx
pop ecx
lea eax, [ebp - 0xa14]
push eax
push 0x70
mov esi, 0x411b70
push esi
push 9
push dword [0x411b68]
call dword [sym.imp.kernel32.dll_QueryInformationJobObject]
test eax, eax
je 0x40177d
cmp dword [ebp - 0xa14], 0x70
jne 0x40177d
xor eax, eax
inc eax
jmp 0x40177f
xor eax, eax
push str.Job_information_querying_failed
push eax
call fcn.00401b4b
or dword [0x411b80], 0x3000
pop ecx
pop ecx
push 0x70
push esi
push 9
push dword [0x411b68]
call dword [sym.imp.kernel32.dll_SetInformationJobObject]
push str.Job_information_setting_failed
push eax
call fcn.00401b4b
push 0x44
lea eax, [ebp - 0xa64]
push edi
push eax
call fcn.004071f0
add esp, 0x14
lea eax, [ebp - 0xa64]
push eax
call dword [sym.imp.kernel32.dll_GetStartupInfoW]
test dword [ebp - 0xa38], 0x600
jne 0x401866
mov esi, dword [sym.imp.kernel32.dll_GetStdHandle]
push 0xfffffffffffffff6
call esi
push 0xfffffffffffffff5
mov ebx, eax
call esi
push 0xfffffffffffffff4
mov dword [ebp - 0xa20], eax
call esi
push ebx
mov dword [ebp - 0xa1c], eax
call fcn.00401b4b
mov dword [esp], str.making_stdin_inheritable_failed
push eax
call fcn.00401b4b
mov esi, dword [ebp - 0xa20]
push esi
call fcn.00401b4b
push str.making_stdout_inheritable_failed
push eax
call fcn.00401b4b
push dword [ebp - 0xa1c]
call fcn.00401b4b
push str.making_stderr_inheritable_failed
push eax
call fcn.00401b4b
mov eax, dword [ebp - 0xa1c]
add esp, 0x20
or dword [ebp - 0xa38], 0x100
mov dword [ebp - 0xa2c], ebx
mov dword [ebp - 0xa28], esi
mov dword [ebp - 0xa24], eax
mov esi, 0x411de8
push esi
lea eax, [ebp - 0xa64]
push eax
push edi
push edi
push edi
push 1
push edi
push edi
push dword [ebp - 0xa18]
push edi
call dword [sym.imp.kernel32.dll_CreateProcessW]
cmp eax, edi
jne 0x4018c8
call dword [sym.imp.kernel32.dll_GetLastError]
push edi
mov ecx, 0x400
push ecx
lea edx, [ebp - 0xa10]
push edx
push ecx
push eax
push edi
push 0x1000
call dword [sym.imp.kernel32.dll_FormatMessageW]
lea eax, [ebp - 0xa10]
push eax
push dword [ebp - 0xa18]
push str.Unable_to_create_process_using__ls:__ls
push edi
call fcn.00401b4b
add esp, 0x10
push dword [0x411de8]
push dword [0x411b68]
call dword [sym.imp.kernel32.dll_AssignProcessToJobObject]
push dword [ebp - 0xa32]
mov eax, dword [ebp - 0xa30]
call fcn.00401b4b
pop ecx
call fcn.00401b4b
lea eax, [ebp - 0x210]
push eax
push 0x105
call dword [sym.imp.kernel32.dll_GetTempPathW]
dec eax
cmp eax, 0x103
ja 0x401918
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.kernel32.dll_SetCurrentDirectoryW]
push 1
push 0x40142d
call dword [sym.imp.kernel32.dll_SetConsoleCtrlHandler]
push str.control_handler_setting_failed
push eax
call fcn.00401b4b
push esi
call fcn.00401b4b
add esp, 0xc
push dword [0x411dec]
call dword [sym.imp.kernel32.dll_CloseHandle]
push edi
push 0xffffffffffffffff
push dword [0x411de8]
call dword [sym.imp.kernel32.dll_WaitForSingleObjectEx]
lea eax, [ebp - 0xa14]
push eax
push dword [0x411de8]
call dword [sym.imp.kernel32.dll_GetExitCodeProcess]
push str.Failed_to_get_exit_code_of_process
push eax
call fcn.00401b4b
pop ecx
pop ecx
push dword [ebp - 0xa14]
call dword [sym.imp.kernel32.dll_ExitProcess]