Function at 0x4043c4
Capabilities:
Create pipe
Create process on windows
Create process suspended
Create two anonymous pipes
Resume thread

Disassembly:
push rbp
push rdi
push rbx
sub rsp, 0x6b0
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x650], rcx
mov qword [rbp + 0x658], rdx
mov qword [rbp + 0x660], r8
mov qword [rbp + 0x668], r9
lea rdx, str.execCmd_called..
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov qword [rbp + 0x4d0], 0xffffffffffffffff
mov qword [rbp + 0x4c8], 0xffffffffffffffff
mov qword [rbp + 0x4c0], 0xffffffffffffffff
mov qword [rbp + 0x4b8], 0xffffffffffffffff
lea rax, [rbp + 0x428]
mov rcx, rax
call method.std::thread.thread__
lea rax, [rbp + 0x420]
mov rcx, rax
call method.std::thread.thread__
mov rcx, qword [rbp + 0x650]
call fcn.00450780
lea rax, [rbp + 0x4de]
mov rcx, rax
call fcn.0049ce40
lea rdx, [rbp + 0x4de]
lea rax, [rbp + 0x400]
mov r8, rdx
lea rdx, [0x004fd4a0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_std.allocator_char____char_const__std::allocator_char__const_
lea rax, [rbp + 0x4de]
mov rcx, rax
call sym.std::allocator_char_::allocator__
lea rax, [rbp + 0x4df]
mov rcx, rax
call fcn.0049ce40
lea rdx, [rbp + 0x4df]
lea rax, [rbp + 0x3e0]
mov r8, rdx
lea rdx, [0x004fd4a0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_std.allocator_char____char_const__std::allocator_char__const_
lea rax, [rbp + 0x4df]
mov rcx, rax
call sym.std::allocator_char_::allocator__
mov rax, qword [rbp + 0x650]
lea rdx, [rbp + 0x400]
mov rcx, rax
call fcn.004de600
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
lea rdx, [rbp + 0x340]
mov eax, 0
mov ecx, 0x12
mov rdi, rdx
rep stosq qword [rdi], rax
mov rax, qword [rbp + 0x660]
mov edx, 0x8000
mov rcx, rax
call dbg.strnlen
cmp rax, 0x7fff
seta al
test al, al
je 0x404583
lea rax, [rbp + 0x3e0]
lea rdx, str.Command_string_is_too_long_to_execute.
mov rcx, rax
call fcn.004de690
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
mov rax, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call rax
lea rdx, [rbp + 0x3dc]
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_IsProcessInJob]
call rax
mov dword [rbp + 0x62c], eax
cmp dword [rbp + 0x62c], 0
jne 0x404623
lea rdx, str.IsProcessInJob_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_IsProcessInJob
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
mov eax, dword [rbp + 0x3dc]
test eax, eax
je 0x40464f
lea rdx, str.Process_is_already_in_Job
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov edx, 0
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_CreateJobObjectA]
call rax
mov qword [rbp + 0x620], rax
cmp qword [rbp + 0x620], 0
jne 0x4046e0
lea rdx, str.CreateJobObject_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_CreateJobObject
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
mov dword [rbp + 0x350], 0x2000
lea rdx, [rbp + 0x340]
mov rax, qword [rbp + 0x620]
mov r9d, 0x90
mov r8, rdx
mov edx, 9
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetInformationJobObject]
call rax
mov dword [rbp + 0x62c], eax
cmp dword [rbp + 0x62c], 0
jne 0x40478e
lea rdx, str.SetInformationJobObject_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_SetInformationJobObject
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
mov r9d, 1
mov r8d, 0
mov edx, 0
mov rcx, 0xffffffffffffffff
mov rax, qword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
call rax
mov qword [rbp + 0x618], rax
cmp qword [rbp + 0x618], 0
jne 0x40482d
lea rdx, str.CreateIoCompletionPort_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_CreateIoCompletionPort
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
mov rax, qword [rbp + 0x620]
mov qword [rbp + 0x330], rax
mov rax, qword [rbp + 0x618]
mov qword [rbp + 0x338], rax
lea rdx, [rbp + 0x330]
mov rax, qword [rbp + 0x620]
mov r9d, 0x10
mov r8, rdx
mov edx, 7
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetInformationJobObject]
call rax
mov dword [rbp + 0x62c], eax
cmp dword [rbp + 0x62c], 0
jne 0x4048ed
lea rdx, str.SetInformationJobObject_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_SetInformationJobObject
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
lea rax, [rbp + 0x310]
mov rcx, rax
call sym.getSecurityAttributes__
lea rcx, [rbp + 0x310]
lea rdx, [rbp + 0x4c8]
lea rax, [rbp + 0x4d0]
mov r9d, 0
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreatePipe]
call rax
test eax, eax
je 0x40494c
mov rax, qword [rbp + 0x4d0]
mov r8d, 0
mov edx, 1
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetHandleInformation]
call rax
test eax, eax
jne 0x404953
mov eax, 1
jmp 0x404958
mov eax, 0
test al, al
je 0x4049b3
lea rdx, str.Failure_at_CreatePipeSetHandleInformation__stdout_
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_CreatePipeSetHandleInformation__stdout_
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
lea rcx, [rbp + 0x310]
lea rdx, [rbp + 0x4b8]
lea rax, [rbp + 0x4c0]
mov r9d, 0
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreatePipe]
call rax
test eax, eax
je 0x404a03
mov rax, qword [rbp + 0x4c0]
mov r8d, 0
mov edx, 1
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetHandleInformation]
call rax
test eax, eax
jne 0x404a0a
mov eax, 1
jmp 0x404a0f
mov eax, 0
test al, al
je 0x404aae
mov rax, qword [rbp + 0x4d0]
cmp rax, 0xffffffffffffffff
je 0x404a37
mov rax, qword [rbp + 0x4d0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4c8]
cmp rax, 0xffffffffffffffff
je 0x404a57
mov rax, qword [rbp + 0x4c8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.Failure_at_CreatePipeSetHandleInformation__stderr_
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.Failure_at_CreatePipeSetHandleInformation__stderr_
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x4053bc
lea rax, [rbp + 0x4a0]
mov r8d, 0x18
mov edx, 0
mov rcx, rax
call sym.memset
lea rax, [rbp + 0x430]
mov r8d, 0x68
mov edx, 0
mov rcx, rax
call sym.memset
mov dword [rbp + 0x430], 0x68
mov qword [rbp + 0x480], 0
mov rax, qword [rbp + 0x4c8]
mov qword [rbp + 0x488], rax
mov rax, qword [rbp + 0x4b8]
mov qword [rbp + 0x490], rax
mov rax, qword [rbp + 0x4d0]
test rax, rax
jne 0x404b2b
mov rax, qword [rbp + 0x4c0]
test rax, rax
je 0x404b3a
mov eax, dword [rbp + 0x46c]
or ah, 1
mov dword [rbp + 0x46c], eax
mov rdx, qword [rbp + 0x668]
lea rax, [rbp + 0x4e0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x2f0]
lea rdx, [rbp + 0x4e0]
mov rcx, rax
call sym.getExecutorPath_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x4e0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x2d0]
lea rdx, [rbp + 0x2f0]
mov rcx, rax
call sym.convertStringToMb_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rdx, qword [rbp + 0x668]
lea rax, [rbp + 0x540]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x520]
lea rdx, [rbp + 0x540]
mov rcx, rax
call sym.getExecutorPrefix_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x500]
lea rdx, [rbp + 0x520]
lea r8, [0x004fd7ec]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char_const_
lea rax, [rbp + 0x2b0]
mov rcx, qword [rbp + 0x660]
lea rdx, [rbp + 0x500]
mov r8, rcx
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char_const_
lea rax, [rbp + 0x500]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x520]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x540]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rdx, [rbp + 0x2b0]
lea rax, [rbp + 0x290]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x270]
lea rdx, [rbp + 0x290]
mov rcx, rax
call sym.convertStringToMb_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x270]
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.c_str___const
mov rdx, rax
lea rax, [rbp + 0x60]
mov rcx, rax
call sym.int_wcscpy_s_260ull__wchar_t_____260ull___wchar_t_const_
mov word [rbp + 0x266], 0
lea rax, [rbp + 0x40]
mov rcx, rax
call fcn.004e15a0
lea rax, [rbp + 0x40]
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.empty___const
xor eax, 1
test al, al
je 0x404ca4
lea rax, [rbp + 0x40]
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.c_str___const
mov rbx, rax
jmp 0x404ca9
mov ebx, 0
lea rax, [rbp + 0x2d0]
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.empty___const
xor eax, 1
test al, al
je 0x404cd3
lea rax, [rbp + 0x2d0]
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.c_str___const
mov rcx, rax
jmp 0x404cd8
mov ecx, 0
lea rax, [rbp + 0x60]
lea rdx, [rbp + 0x4a0]
mov qword [rsp + 0x48], rdx
lea rdx, [rbp + 0x430]
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 4
mov dword [rsp + 0x20], 1
mov r9d, 0
mov r8d, 0
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateProcessW]
call rax
test eax, eax
sete al
test al, al
je 0x404e00
mov rax, qword [rbp + 0x4a0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4a8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4d0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4c0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4c8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4b8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rdx, str.CreateProcess_call_failed
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x3e0]
lea rdx, str.CreateProcess_failed
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
lea rax, [rbp + 0x3e0]
mov rdx, rax
call fcn.004de600
jmp 0x405365
mov rdx, qword [rbp + 0x4a0]
mov rax, qword [rbp + 0x620]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_AssignProcessToJobObject]
call rax
mov dword [rbp + 0x62c], eax
cmp dword [rbp + 0x62c], 0
jne 0x404e61
lea rdx, str.AssignProcessToJobObject_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov rax, qword [rbp + 0x4a8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_ResumeThread]
call rax
mov rax, qword [rbp + 0x4c8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4b8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x4a8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.004ddb20
mov rax, rbp
mov rcx, rax
call fcn.004ddb20
mov rax, qword [rbp + 0x4d0]
test rax, rax
je 0x404f6f
lea rax, [rbp + 0x20]
mov rcx, rax
call method.std::reference_wrapper_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char______std::ref_std::__cxx11::basic_string_char__std::char_traits_char___std.allocator_char______std::__cxx11::basic_string_char__std::char_traits_cha
mov qword [rbp + 0x570], rax
mov rax, qword [rbp + 0x658]
mov qword [rbp + 0x578], rax
lea rax, [method.CommandRunner.readFromPipe_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____void__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_]
mov qword [rbp + 0x580], rax
mov qword [rbp + 0x588], 0
lea r9, [rbp + 0x570]
lea r8, [rbp + 0x578]
lea rdx, [rbp + 0x580]
lea rax, [rbp + 0x568]
lea rcx, str.STDOUT
mov qword [rsp + 0x28], rcx
lea rcx, [rbp + 0x4d0]
mov qword [rsp + 0x20], rcx
mov rcx, rax
call sym._ZNSt6threadC1IM13CommandRunnerFvRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvRKS7_EJPS1_St17reference_wrapperIS7_ER
lea rdx, [rbp + 0x568]
lea rax, [rbp + 0x428]
mov rcx, rax
call method.std::thread.operator_std::thread_
lea rax, [rbp + 0x568]
mov rcx, rax
call fcn.004d8db0
mov rax, qword [rbp + 0x4c0]
test rax, rax
je 0x405019
mov rax, rbp
mov rcx, rax
call method.std::reference_wrapper_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char______std::ref_std::__cxx11::basic_string_char__std::char_traits_char___std.allocator_char______std::__cxx11::basic_string_char__std::char_traits_cha
mov qword [rbp + 0x5a0], rax
mov rax, qword [rbp + 0x658]
mov qword [rbp + 0x5a8], rax
lea rax, [method.CommandRunner.readFromPipe_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____void__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_]
mov qword [rbp + 0x5b0], rax
mov qword [rbp + 0x5b8], 0
lea r9, [rbp + 0x5a0]
lea r8, [rbp + 0x5a8]
lea rdx, [rbp + 0x5b0]
lea rax, [rbp + 0x598]
lea rcx, str.STDERR
mov qword [rsp + 0x28], rcx
lea rcx, [rbp + 0x4c0]
mov qword [rsp + 0x20], rcx
mov rcx, rax
call sym._ZNSt6threadC1IM13CommandRunnerFvRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvRKS7_EJPS1_St17reference_wrapperIS7_ER
lea rdx, [rbp + 0x598]
lea rax, [rbp + 0x420]
mov rcx, rax
call method.std::thread.operator_std::thread_
lea rax, [rbp + 0x598]
mov rcx, rax
call fcn.004d8db0
mov dword [rbp + 0x614], 0x78
call method.std::chrono::_V2::steady_clock.now__
mov qword [rbp - 0x20], rax
lea r8, [rbp - 0x18]
lea rcx, [rbp - 0x10]
lea rdx, [rbp - 4]
mov rax, qword [rbp + 0x618]
mov dword [rsp + 0x20], 0x3e8
mov r9, r8
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetQueuedCompletionStatus]
call rax
mov dword [rbp + 0x62c], eax
mov rax, qword [rbp - 0x10]
cmp qword [rbp + 0x620], rax
jne 0x405078
mov eax, dword [rbp - 4]
cmp eax, 4
je 0x405186
call method.std::chrono::_V2::steady_clock.now__
mov qword [rbp - 0x30], rax
lea rdx, [rbp - 0x20]
lea rax, [rbp - 0x30]
mov rcx, rax
call sym._ZNSt6chronomiINS_3_V212steady_clockENS_8durationIxSt5ratioILx1ELx1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10ti
mov qword [rbp + 0x5c8], rax
lea rdx, [rbp + 0x5c8]
lea rax, [rbp + 0x5c0]
mov rcx, rax
call method.std::chrono::duration_double__std::ratio_1ll__1ll___::duration_long_long__std.ratio_1ll__1000000000ll___void__std::chrono::duration_long_long__std::ratio_1ll__1000000000ll____const_
movsd xmm0, qword [rbp + 0x5c0]
movsd qword [rbp - 0x28], xmm0
lea rax, [rbp - 0x28]
mov rcx, rax
call method.std::chrono::duration_double__std::ratio_1ll__1ll___.count___const
movq rax, xmm0
pxor xmm0, xmm0
cvtsi2sd xmm0, dword [rbp + 0x614]
movq xmm1, rax
comisd xmm1, xmm0
seta al
test al, al
jne 0x405185
lea r8, [rbp - 0x18]
lea rcx, [rbp - 0x10]
lea rdx, [rbp - 4]
mov rax, qword [rbp + 0x618]
mov dword [rsp + 0x20], 0x3e8
mov r9, r8
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetQueuedCompletionStatus]
call rax
mov dword [rbp + 0x62c], eax
cmp dword [rbp + 0x62c], 0
jne 0x40505f
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov dword [rbp + 0x610], eax
cmp dword [rbp + 0x610], 0x102
je 0x40505f
lea rdx, str.GetQueuedCompletionStatus_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
jmp 0x405186
nop
mov rax, qword [rbp + 0x4a0]
lea rdx, [rbp + 0x4d8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
call rax
test eax, eax
sete al
test al, al
je 0x4051eb
lea rdx, str.GetExitCodeProcess_failed:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rcx, rbx
call method.std::ostream.operator___unsigned_long_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov dword [rbp + 0x4d8], 0x90000001
mov rax, qword [rbp + 0x4a0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x620]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rax, [rbp + 0x428]
mov rcx, rax
call method.std::thread.joinable___const
test al, al
je 0x405233
lea rax, [rbp + 0x428]
mov rcx, rax
call method.std::thread.join__
lea rdx, str.__Final_command_output_STDOUT:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov rbx, rax
lea rax, [rbp + 0x5d0]
lea rdx, [rbp + 0x20]
mov rcx, rax
call sym.truncateOutput_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x5d0]
mov rdx, rax
mov rcx, rbx
call method.std::basic_ostream_char__std::char_traits_char____std::operator____char__std::char_traits_char___std.allocator_char____std::basic_ostream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x5d0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x420]
mov rcx, rax
call method.std::thread.joinable___const
test al, al
je 0x4052bd
lea rax, [rbp + 0x420]
mov rcx, rax
call method.std::thread.join__
lea rdx, str.__Final_command_output_STDERR:
mov rcx, qword [0x0050b9f0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov rbx, rax
lea rax, [rbp + 0x5f0]
mov rdx, rbp
mov rcx, rax
call sym.truncateOutput_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x5f0]
mov rdx, rax
mov rcx, rbx
call method.std::basic_ostream_char__std::char_traits_char____std::operator____char__std::char_traits_char___std.allocator_char____std::basic_ostream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rax, [rbp + 0x5f0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov rax, qword [rbp + 0x650]
lea rdx, [rbp + 0x20]
mov rcx, rax
call fcn.004de600
mov rax, qword [rbp + 0x650]
lea rcx, [rax + 0x20]
mov rax, rbp
mov rdx, rax
call fcn.004de600
nop
mov rax, rbp
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x20]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x40]
mov rcx, rax
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::basic_string__
lea rax, [rbp + 0x270]
mov rcx, rax
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::basic_string__
lea rax, [rbp + 0x290]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x2b0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x2d0]
mov rcx, rax
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::basic_string__
lea rax, [rbp + 0x2f0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x3e0]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x400]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x420]
mov rcx, rax
call fcn.004d8db0
lea rax, [rbp + 0x428]
mov rcx, rax
call fcn.004d8db0
jmp 0x405590
mov rax, qword [rbp + 0x650]
add rsp, 0x6b0
pop rbx
pop rdi
pop rbp
ret