Function at 0x405e20
Capabilities:
Create process on windows
Query environment variable

Disassembly:
mov r11, rsp
sub rsp, 0x568
mov rax, qword [0x00424338]
mov qword [rsp + 0x520], rax
mov qword [r11 - 8], rbx
mov qword [r11 - 0x10], rbp
mov qword [r11 - 0x18], rsi
mov qword [r11 - 0x20], rdi
mov qword [r11 - 0x28], r12
mov r12, qword [rsp + 0x590]
xor esi, esi
movzx ebp, r8b
mov rbx, rcx
mov qword [r11 - 0x30], r13
movzx r13d, dl
lea r8d, [rsi + 0x60]
lea rcx, [r11 - 0x4d0]
xor edx, edx
mov rdi, r9
mov dword [rsp + 0x90], esi
call sub.msvcrt.dll_memset
xor eax, eax
lea rcx, [rsp + 0x68]
mov rdx, rbx
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rax
call qword [sym.imp.msvcp60.dll_public:_void___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const____ptr64____ptr64]
lea rcx, [rsp + 0x121]
xor edx, edx
mov r8d, 0x3ff
mov byte [rsp + 0x120], sil
call sub.msvcrt.dll_memset
mov rcx, qword [rsp + 0x70]
test rcx, rcx
lea rdx, [rsp + 0x120]
mov r8d, 0x400
cmove rcx, qword [sym.imp.msvcp60.dll_char_const__private:_static_char_const____ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsA]
mov r8, qword [sym.imp.msvcp60.dll_unsigned_long_long_unsigned___int64__const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea rcx, [rsp + 0x68]
mov r8, qword [r8]
xor edx, edx
call qword [sym.imp.msvcp60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::erase_unsigned_long_long_unsigned___int64___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x68]
call qword [sym.imp.msvcp60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const____ptr64____ptr64]
lea rcx, [rsp + 0x90]
mov dword [rsp + 0x90], WSASetLastError
call qword [sym.imp.KERNEL32.dll_GetStartupInfoA]
cmp qword [r12 + 0x10], rsi
mov r11, qword [sym.imp.msvcp60.dll_char_const__private:_static_char_const____ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
jbe 0x405f47
mov rax, qword [r12 + 8]
test rax, rax
cmove rax, r11
mov qword [rsp + 0xa0], rax
mov r12, qword [rsp + 0x540]
test bpl, bpl
mov rbp, qword [rsp + 0x558]
je 0x405f71
mov word [rsp + 0xd0], 5
mov dword [rsp + 0xcc], 1
mov rdx, qword [rsp + 0x70]
lea rcx, [rsp + 0x100]
test rdx, rdx
cmove rdx, r11
call fcn.00404270
mov rdx, qword [rax + 8]
lea rax, [rsp + 0x50]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x90]
test rdx, rdx
cmove rdx, qword [sym.imp.msvcp60.dll_char_const__private:_static_char_const____ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rsi
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], esi
call qword [sym.imp.KERNEL32.dll_CreateProcessA]
lea rcx, [rsp + 0x100]
mov ebx, eax
call qword [sym.imp.msvcp60.dll_public:_void___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void____ptr64]
test ebx, ebx
je 0x406061
test rdi, rdi
mov rsi, qword [rsp + 0x60]
je 0x405ff9
mov rax, qword [rsp + 0x50]
mov dword [rdi], esi
mov qword [rdi + 8], rax
mov rbx, qword [rsp + 0x70]
lea rdx, [0x0041c408]
lea rcx, [rsp + 0x88]
test rbx, rbx
cmove rbx, qword [sym.imp.msvcp60.dll_char_const__private:_static_char_const____ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
call fcn.004108b0
mov r9d, dword [rsp + 0x60]
lea rdx, str._comm__createProcess__s__successed__pid_d
mov rcx, rax
mov r8, rbx
call fcn.004109b0
test r13b, r13b
je 0x406049
mov rcx, qword [rsp + 0x50]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4060a4
mov rdi, qword [rsp + 0x70]
test rdi, rdi
cmove rdi, qword [sym.imp.msvcp60.dll_char_const__private:_static_char_const____ptr64___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
xor ecx, ecx
call fcn.00406ef0
lea rdx, [0x0041c440]
lea rcx, [rsp + 0x88]
mov rbx, rax
call fcn.004108b0
lea rdx, str._comm__createProcess__s__failed:__s
mov r9, rbx
mov r8, rdi
mov rcx, rax
call fcn.004109b0
lea rcx, [rsp + 0x68]
call qword [sym.imp.msvcp60.dll_public:_void___cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void____ptr64]
mov r13, qword [rsp + 0x538]
mov rdi, qword [rsp + 0x548]
mov rbx, qword [rsp + 0x560]
mov eax, esi
mov rsi, qword [rsp + 0x550]
mov rcx, qword [rsp + 0x520]
call fcn.00419e60
add rsp, 0x568
ret