Function at 0x180003a80
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Inject thread
Print debug messages
Spawn thread to rwx shellcode

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov byte [rax + 0x20], r9b
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x1d8]
sub rsp, 0x2a0
mov bl, r9b
mov rsi, rcx
mov r15d, 1
call fcn.1800035f8
xor r12d, r12d
mov qword [rsp + 0x60], rax
mov r14, rax
test rax, rax
jne 0x180003afc
mov rax, qword [0x180014958]
test rax, rax
je 0x180003af5
lea rdx, str.GetRemoteModuleHandle32_failed._n
lea rbx, [0x180010ed0]
mov rcx, rbx
call rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
xor eax, eax
jmp 0x18000414d
call fcn.180003838
mov rdi, rax
test rax, rax
jne 0x180003b1e
mov rax, qword [0x180014958]
test rax, rax
je 0x180003af5
lea rdx, str.LoadLibraryWindir32_failed._n
jmp 0x180003ae0
mov edx, 0x22c
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_RtlZeroMemory]
lea r8, str.LdrLoadDll
mov rdx, rdi
mov rcx, r14
call fcn.180003964
lea rdx, [0x18000a260]
mov dword [rsp + 0x70], eax
lea rcx, [rbp - 0x80]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
movzx ecx, bl
lea rbx, [0x180010ed0]
test ecx, ecx
je 0x180003d53
sub ecx, 4
je 0x180003ccd
cmp ecx, r15d
je 0x180003b87
lea r13, [0x18000d1e0]
mov r12d, 0x43
jmp 0x180003d76
xor edx, edx
lea r13, section..data
cmp dword [0x18000d620], edx
lea r12d, [rdx + 0x40]
jne 0x180003d76
lea r9, [rbp + 0x1f0]
xor ecx, ecx
lea rdx, str.RegistryMachineSoftwareWOW6432Nodeldntvdm
call fcn.1800059d8
xor r10d, r10d
mov r8d, eax
test eax, eax
jns 0x180003bd1
lea rdx, [rbp + 0x1f0]
call fcn.180005990
mov r8d, eax
xor r10d, r10d
test r8d, r8d
js 0x180003c80
mov ecx, r10d
lea rax, [0x18000d348]
mov r8, qword [rax]
lea rdx, [0x18000aa08]
cmp r8, rdx
je 0x180003c0b
add ecx, r15d
lea rdx, [0x18000d378]
add rax, 0x18
cmp rax, rdx
jl 0x180003be4
mov rax, r10
jmp 0x180003c49
movsxd rax, ecx
lea rcx, str.kernel32.dll
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], r10d
lea r9, [rax + rax*2]
lea rax, [rcx + r9*8]
mov r9, qword [rcx + r9*8 + 0x10]
mov rdx, qword [rax]
mov rcx, qword [rbp + 0x1f0]
mov qword [rsp + 0x50], rax
call fcn.180005aec
test eax, eax
je 0x180003c71
mov rax, qword [rsp + 0x50]
test eax, eax
je 0x180003c71
mov rcx, qword [rbp + 0x1f0]
lea rdx, [0x18000aa48]
call fcn.1800060d4
movsxd rcx, eax
test eax, eax
je 0x180003c71
lea eax, [r14 + rcx]
mov dword [0x18000d620], eax
mov rcx, qword [rbp + 0x1f0]
call qword [sym.imp.ntdll.dll_NtClose]
jmp 0x180003ca1
mov rax, qword [0x180014958]
test rax, rax
je 0x180003cab
lea rdx, str.Cannot_open_WOW64_ldntvdm_node:__08X_n
mov rcx, rbx
call rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov rax, qword [0x180014958]
xor r10d, r10d
cmp dword [0x18000d620], r10d
jne 0x180003d76
test rax, rax
je 0x180003af5
lea rdx, str.Cannot_resolve_LdrpInitializeProcess_n
jmp 0x180003ae7
mov r9d, 8
mov qword [rsp + 0x20], r12
lea r8, [rsp + 0x58]
mov rcx, rsi
lea edx, [r9 + 0x12]
call qword [sym.imp.ntdll.dll_NtQueryInformationProcess]
mov r8d, eax
test eax, eax
jns 0x180003d19
mov rax, qword [0x180014958]
test rax, rax
je 0x180003af5
lea rbx, [0x180010ed0]
mov rcx, rbx
lea rdx, str.NtQueryInformationProcess_failed_with__08X_n
call rax
jmp 0x180003aec
mov rdx, qword [rsp + 0x58]
lea rax, [rbp + 0x1f0]
mov r12d, 0x2d
mov qword [rsp + 0x20], rax
add rdx, 0x148
lea r8, [rsp + 0x74]
mov rcx, rsi
lea r13, [0x18000d110]
lea r9d, [r12 - 0x29]
call qword [sym.imp.KERNEL32.dll_ReadProcessMemory]
jmp 0x180003d76
lea r8, str.NtTerminateThread
mov rdx, rdi
mov rcx, r14
call fcn.180003964
mov dword [rsp + 0x74], eax
lea r13, [0x18000d040]
mov r12d, 0x30
mov r14d, r12d
xor edx, edx
mov r9d, 0x3000
mov dword [rsp + 0x20], 0x40
mov rcx, rsi
lea r8, [r14 + 0x22c]
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
xor edx, edx
mov qword [rbp + 0x1e8], rax
mov r9, rax
test rax, rax
jne 0x180003dd5
cmp qword [0x180014958], rdx
je 0x180003af5
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Cannot_allocate_code_page:__08X
mov r8d, eax
mov rcx, rbx
call qword [0x180014958]
jmp 0x180003aec
add r14, rax
mov eax, dword [rbp + 0x194]
cmp byte [rbp + 0x1f8], 4
cmove eax, r14d
cmp byte [rbp + 0x1f8], 5
mov dword [rbp + 0x194], eax
jne 0x180003e4e
mov r8d, dword [0x18000d620]
lea rax, [0x18000aa74]
mov rdx, qword [rsp + 0x60]
mov rcx, rsi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 4
call fcn.180001dc0
xor edx, edx
mov dword [rsp + 0x74], eax
test eax, eax
jne 0x180003e47
mov rax, qword [0x180014958]
test rax, rax
je 0x180003af5
lea rdx, str.Hook_Inline32_failed._n
jmp 0x180003ae7
mov dword [rbp + 0x194], r14d
lea rcx, [rbp - 0x80]
or rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], dx
jne 0x180003e56
add ax, ax
mov qword [rsp + 0x20], rdx
mov word [rsp + 0x78], ax
lea r8, [rsp + 0x70]
mov eax, 0x208
mov r9d, 0x22c
mov word [rsp + 0x7a], ax
mov rdx, r14
lea eax, [r14 + 0x10]
mov rcx, rsi
mov dword [rsp + 0x7c], eax
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
xor edx, edx
test eax, eax
jne 0x180003ec9
cmp qword [0x180014958], rdx
je 0x180003af5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, r14
lea rdx, str.Cannot_write_pData___x:__08X
mov r9d, eax
mov rcx, rbx
call qword [0x180014958]
jmp 0x180003aec
mov qword [rsp + 0x20], rdx
mov r8, r13
mov rdx, qword [rbp + 0x1e8]
mov rcx, rsi
mov r9d, r12d
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
xor r8d, r8d
test eax, eax
jne 0x180003f21
cmp qword [0x180014958], r8
je 0x180003af5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, qword [rbp + 0x1e8]
lea rdx, str.Cannot_write_code_1___x___d_bytes_:__08X_n
mov r9d, r12d
mov dword [rsp + 0x20], eax
mov rcx, rbx
call qword [0x180014958]
jmp 0x180003aec
mov cl, byte [rbp + 0x1f8]
test cl, cl
je 0x180004031
lea eax, [rcx - 4]
cmp al, r15b
ja 0x180004119
mov edi, r8d
test r12d, r12d
je 0x180003fd0
cmp dword [r13], 0x80000000
je 0x180003f5e
add edi, r15d
add r13, r15
cmp edi, r12d
jb 0x180003f47
jmp 0x180003fd0
mov edx, dword [rbp + 0x1e8]
lea eax, [r14 + 0x224]
mov qword [rsp + 0x20], r8
add edx, edi
mov r9d, 4
mov dword [rbp + 0x1f0], eax
lea r8, [rbp + 0x1f0]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
xor r8d, r8d
test eax, eax
jne 0x180003fca
cmp qword [0x180014958], r8
je 0x180003af5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, dword [rbp + 0x1e8]
lea rdx, str.Cannot_write_code___x:__08X_n
add r8d, edi
mov r9d, eax
mov rcx, rbx
call qword [0x180014958]
jmp 0x180003aec
mov cl, byte [rbp + 0x1f8]
cmp edi, r12d
je 0x180003af5
cmp cl, 4
jne 0x18000414a
mov edx, dword [rsp + 0x58]
mov r9d, 8
mov qword [rsp + 0x20], r8
add rdx, 0x148
lea r8, [rbp + 0x1e8]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
xor edx, edx
test eax, eax
jne 0x18000414a
cmp qword [0x180014958], rdx
je 0x180003af5
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Cannot_write_patch:__08X_n
jmp 0x180003dc4
lea rax, [rsp + 0x60]
xor r9d, r9d
mov qword [rsp + 0x48], rax
xor edx, edx
lea rax, [rsp + 0x50]
mov rcx, rsi
mov qword [rsp + 0x40], rax
mov rax, qword [rbp + 0x1e8]
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x20], r8
call qword [sym.imp.ntdll.dll_RtlCreateUserThread]
xor r13d, r13d
mov r12d, eax
mov ecx, r13d
test eax, eax
setns cl
mov r15d, ecx
test ecx, ecx
je 0x1800040c8
mov r10, qword [0x180014958]
test r10, r10
je 0x1800040af
mov r9, qword [rsp + 0x68]
lea rdx, str.Created_injection_thread_h_08x__tid_d_n
mov r8, qword [rsp + 0x50]
mov rcx, rbx
call r10
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov rcx, qword [rsp + 0x50]
or edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rax, qword [0x180014958]
test rax, rax
je 0x1800040ec
mov r8d, r12d
lea rdx, str.RtlCreateUserThread_Status___08X_n
mov rcx, rbx
call rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ebx, 0x8000
xor r8d, r8d
mov r9d, ebx
mov rdx, r14
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rdx, qword [rbp + 0x1e8]
mov r9d, ebx
xor r8d, r8d
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rdi]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, r15d
mov rbx, qword [rsp + 0x2e0]
add rsp, 0x2a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret