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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa64
mov eax, dword [0x412284]
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 [0x413b68], eax
push ecx
call fcn.0040106a
pop ecx
pop ecx
lea eax, [ebp - 0xa14]
push eax
push 0x70
mov esi, 0x413b70
push esi
push 9
push dword [0x413b68]
call dword [sym.imp.KERNEL32.dll_QueryInformationJobObject]
test eax, eax
je 0x401688
cmp dword [ebp - 0xa14], 0x70
jne 0x401688
xor eax, eax
inc eax
jmp 0x40168a
xor eax, eax
push str.Job_information_querying_failed
push eax
call fcn.0040106a
or dword [0x413b80], 0x3000
pop ecx
pop ecx
push 0x70
push esi
push 9
push dword [0x413b68]
call dword [sym.imp.KERNEL32.dll_SetInformationJobObject]
push str.Job_information_setting_failed
push eax
call fcn.0040106a
push 0x44
lea eax, [ebp - 0xa64]
push edi
push eax
call fcn.004079e0
add esp, 0x14
lea eax, [ebp - 0xa64]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
test dword [ebp - 0xa38], 0x600
jne 0x401771
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.004013da
mov dword [esp], str.making_stdin_inheritable_failed
push eax
call fcn.0040106a
mov esi, dword [ebp - 0xa20]
push esi
call fcn.004013da
push str.making_stdout_inheritable_failed
push eax
call fcn.0040106a
push dword [ebp - 0xa1c]
call fcn.004013da
push str.making_stderr_inheritable_failed
push eax
call fcn.0040106a
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
push 0x413de8
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 0x4017d2
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.00401000
add esp, 0x10
push dword [0x413de8]
push dword [0x413b68]
call dword [sym.imp.KERNEL32.dll_AssignProcessToJobObject]
push dword [ebp - 0xa32]
mov eax, dword [ebp - 0xa30]
call fcn.0040140a
pop ecx
call fcn.004014c0
lea eax, [ebp - 0x210]
push eax
push 0x105
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
dec eax
cmp eax, 0x103
ja 0x401822
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push 1
push 0x40139d
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
push str.control_handler_setting_failed
push eax
call fcn.0040106a
pop ecx
pop ecx
push dword [0x413dec]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push 0xffffffffffffffff
push dword [0x413de8]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObjectEx]
lea eax, [ebp - 0xa14]
push eax
push dword [0x413de8]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push str.Failed_to_get_exit_code_of_process
push eax
call fcn.0040106a
pop ecx
pop ecx
push dword [ebp - 0xa14]
call dword [sym.imp.KERNEL32.dll_ExitProcess]