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

Disassembly:
mov r11, rsp
sub rsp, 0x548
mov rax, qword [0x10050650]
mov qword [rsp + 0x500], 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 + 0x570]
xor esi, esi
movzx ebp, r8b
mov rbx, rcx
mov qword [r11 - 0x30], r13
movzx r13d, dl
lea r8d, [rsi + 0x60]
lea rcx, [r11 - 0x4b0]
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 + 0x101]
xor edx, edx
mov r8d, 0x3ff
mov byte [rsp + 0x100], sil
call sub.msvcrt.dll_memset
mov rcx, qword [rsp + 0x70]
test rcx, rcx
lea rdx, [rsp + 0x100]
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 + 0x100]
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], WSAGetLastError
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 0x10021237
mov rax, qword [r12 + 8]
test rax, rax
cmove rax, r11
mov qword [rsp + 0xa0], rax
mov r12, qword [rsp + 0x520]
test bpl, bpl
mov rbp, qword [rsp + 0x538]
je 0x10021261
mov word [rsp + 0xd0], 5
mov dword [rsp + 0xcc], 1
mov rdx, qword [rsp + 0x70]
lea rax, [rsp + 0x50]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x90]
test rdx, rdx
mov qword [rsp + 0x40], rax
cmove rdx, r11
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]
test eax, eax
je 0x10021325
test rdi, rdi
mov rsi, qword [rsp + 0x60]
je 0x100212bd
mov rax, qword [rsp + 0x50]
mov dword [rdi], esi
mov qword [rdi + 8], rax
mov rbx, qword [rsp + 0x70]
lea rdx, [0x10041080]
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.10024b50
mov r9d, dword [rsp + 0x60]
lea rdx, str._comm__createProcess__s__successed__pid_d
mov rcx, rax
mov r8, rbx
call fcn.10024c50
test r13b, r13b
je 0x1002130d
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 0x10021368
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.1001f320
lea rdx, [0x100410b8]
lea rcx, [rsp + 0x88]
mov rbx, rax
call fcn.10024b50
lea rdx, str._comm__createProcess__s__failed:__s
mov r9, rbx
mov r8, rdi
mov rcx, rax
call fcn.10024c50
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 + 0x518]
mov rdi, qword [rsp + 0x528]
mov rbx, qword [rsp + 0x540]
mov eax, esi
mov rsi, qword [rsp + 0x530]
mov rcx, qword [rsp + 0x500]
call fcn.1003b040
add rsp, 0x548
ret