Function at 0x180014c70
Capabilities:
Allocate or change rwx memory

Disassembly:
mov rax, rsp
push rbx
sub rsp, 0xa0
cmp dword [rcx], 0x688
mov rbx, rcx
jne 0x180014c4b
cmp edx, 0x688
jb 0x180014c4b
mov qword [rax + 0x10], rbp
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
xor esi, esi
mov qword [rax - 0x28], r13
mov qword [rax - 0x30], r14
mov dword [rax - 0x78], 0xffffffff
mov dword [rax + 0x18], 0xffffffff
mov dword [rax + 8], 0xffffffff
mov rax, qword [rcx + 0x20]
mov edi, esi
test rax, rax
lea r14d, [rsi + 1]
je 0x180014a41
mov eax, dword [rax + 0x10]
cmp dword [rcx + 0x680], eax
cmovne edi, r14d
mov r13d, dword [rcx + 4]
mov rbp, qword [rcx + 0x10]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov r12, rax
xor eax, eax
lea r8, [rsp + 0x38]
lea r9d, [rax + 0x30]
mov rdx, rbp
mov rcx, r12
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rax
call qword [sym.imp.KERNEL32.dll_VirtualQueryEx]
test rax, rax
je 0x180014c13
test byte [rsp + 0x5c], 0xf0
mov r9d, 0x40
mov qword [rsp + 0x70], r15
setne al
mov r15d, 4
mov r8, r13
test al, al
lea rax, [rsp + 0x30]
mov rdx, rbp
cmove r9d, r15d
mov rcx, r12
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_VirtualProtectEx]
test eax, eax
je 0x180014c0e
mov r13d, dword [rbx + 8]
mov rbp, qword [rbx + 0x18]
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov r12, rax
xor eax, eax
lea r9d, [r15 + 0x2c]
lea r8, [rsp + 0x38]
mov rdx, rbp
mov rcx, r12
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rax
call qword [sym.imp.KERNEL32.dll_VirtualQueryEx]
test rax, rax
je 0x180014bf4
test byte [rsp + 0x5c], 0xf0
mov r9d, 0x40
mov r8, r13
setne al
mov rdx, rbp
mov rcx, r12
test al, al
lea rax, [rsp + 0xc0]
cmove r9d, r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_VirtualProtectEx]
test eax, eax
je 0x180014bf4
mov r8d, dword [rbx + 4]
mov rcx, qword [rbx + 0x10]
lea rdx, [rbx + 0x28]
call sub.MSVCR80.dll_memcpy
mov r8d, dword [rbx + 8]
mov rcx, qword [rbx + 0x18]
lea rdx, [rbx + 0x68]
call sub.MSVCR80.dll_memcpy
mov rcx, qword [rbx + 0x20]
test rcx, rcx
je 0x180014bd4
test edi, edi
jne 0x180014bd4
mov edx, dword [rbx + 0xc]
lea r9, [rsp + 0xb0]
lea r8d, [r15 + 0x3c]
call fcn.18000e880
test eax, eax
je 0x180014bd7
mov r8d, dword [rbx + 0xc]
mov rcx, qword [rbx + 0x20]
lea rdx, [rbx + 0x670]
call sub.MSVCR80.dll_memcpy
mov edx, dword [rbx + 0xc]
mov r8d, dword [rsp + 0xb0]
mov rcx, qword [rbx + 0x20]
lea r9, [rsp + 0xc8]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
mov esi, r14d
jmp 0x180014bd7
mov esi, r14d
mov edx, dword [rbx + 8]
mov r8d, dword [rsp + 0xc0]
mov rcx, qword [rbx + 0x18]
lea r9, [rsp + 0xc8]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
mov edx, dword [rbx + 4]
mov r8d, dword [rsp + 0x30]
mov rcx, qword [rbx + 0x10]
lea r9, [rsp + 0xc8]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
mov r15, qword [rsp + 0x70]
mov r14, qword [rsp + 0x78]
mov r13, qword [rsp + 0x80]
mov r12, qword [rsp + 0x88]
mov rdi, qword [rsp + 0x90]
mov rbp, qword [rsp + 0xb8]
mov eax, esi
mov rsi, qword [rsp + 0x98]
add rsp, 0xa0
pop rbx
ret
mov ecx, 0xc1
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
add rsp, 0xa0
pop rbx
ret
push rbx
sub rsp, 0x20
xor ecx, ecx
call fcn.180014660
test rax, rax
mov rbx, rax
je 0x180014cb9
nop
nop
nop
lea r8, [rsp + 0x30]
lea rdx, [0x180053e98]
mov rcx, rbx
call fcn.180014880
test rax, rax
jne 0x180014cd7
mov rcx, rbx
call fcn.180014660
test rax, rax
mov rbx, rax
jne 0x180014c90
mov ecx, 0x7e
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, 0x7e
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
add rsp, 0x20
pop rbx
ret
mov edx, dword [rsp + 0x30]
test edx, edx
je 0x180014cc4
mov rcx, rax
add rsp, 0x20
pop rbx
jmp 0x1800149d0