Function at 0x1401c97a0
Capabilities:
Allocate or change rwx memory

Disassembly:
mov qword ss:[rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rsi, qword [rsp + 0xb8]
mov rbx, r8
xor r8d, r8d
mov r13, rdx
mov rdx, rcx
mov ecx, dword [rsp + 0xb0]
mov dword [rsi], r8d
cmp ecx, 3
jne 0x1401c99c5
test rbx, rbx
je 0x1401c99ba
cmp r9, 0x1000
jb 0x1401c99ba
mov rsi, rbx
mov r14d, r8d
and esi, 0xfff
and rbx, 0xfffffffffffff000
add rsi, 0xfff
mov ebp, r8d
add rsi, r9
shr rsi, 0xc
test rsi, rsi
jne 0x1401c9832
mov ebx, 0xc000000d
jmp 0x1401c9a8e
mov r12, rsi
mov dword [rsp + 0x28], 4
mov r15, 0xffffffffffffffff
shl r12, 4
lea r9, [rsp + 0x48]
mov qword [rsp + 0x48], r12
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x40], r8
mov rcx, r15
mov dword [rsp + 0x20], 0x1000
call qword [sym.imp.ntdll.dll_NtAllocateVirtualMemory]
test eax, eax
js 0x1401c99b0
mov rdi, qword ds:[rsp + 0x40]
test rdi, rdi
je 0x1401c99b0
lfence
test rsi, rsi
je 0x1401c98b4
mov rax, rdi
mov rcx, rsi
nop word [rax + rax]
mov qword [rax], rbx
lea rax, [rax + 0x10]
add rbx, 0x1000
sub rcx, 1
jne 0x1401c98a0
mov qword [rsp + 0x28], rbp
mov r9, rdi
xor edx, edx
mov qword [rsp + 0x20], r12
mov r8d, 4
mov rcx, r13
call qword [sym.imp.ntdll.dll_NtQueryVirtualMemory]
mov ebx, eax
test eax, eax
js 0x1401c990c
mov r14, rsi
test rsi, rsi
je 0x1401c990c
lea rdx, [rdi + 8]
nop dword [rax]
mov eax, dword [rdx]
lea rdx, [rdx + 0x10]
bt rax, 0x1e
mov rcx, rbp
lea rbp, [rbp + 1]
cmovb rbp, rcx
sub rsi, 1
jne 0x1401c98f0
mov r9d, 0x8000
mov qword [rsp + 0x40], rdi
lea r8, [rsp + 0x48]
mov qword [rsp + 0x48], 0
lea rdx, [rsp + 0x40]
mov rcx, r15
call qword [sym.imp.ntdll.dll_NtFreeVirtualMemory]
test ebx, ebx
js 0x1401c9a8e
mov rcx, r14
xorps xmm0, xmm0
sub rcx, rbp
js 0x1401c994d
cvtsi2ss xmm0, rcx
jmp 0x1401c9962
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2ss xmm0, rax
addss xmm0, xmm0
xorps xmm1, xmm1
test r14, r14
js 0x1401c9985
mov rax, qword ds:[rsp + 0xb8]
cvtsi2ss xmm1, r14
divss xmm0, xmm1
movss dword [rax], xmm0
jmp 0x1401c9a8e
mov rax, r14
and r14d, 1
shr rax, 1
or rax, r14
cvtsi2ss xmm1, rax
mov rax, qword [rsp + 0xb8]
addss xmm1, xmm1
divss xmm0, xmm1
movss dword [rax], xmm0
jmp 0x1401c9a8e
mov ebx, 0xc000009a
jmp 0x1401c9a8e
mov eax, 0xc000000d
jmp 0x1401c9a90
cmp byte [rsp + 0xa8], 0
lea r8, [fcn.1401772a0]
mov rax, qword [sym.imp.ntdll.dll_NtReadVirtualMemory]
cmovne rax, r8
mov r8, r13
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0xa0]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r9
mov r9, rbx
call fcn.1401c83e0
mov r8, rsi
mov rdx, rax
mov rcx, r13
mov rdi, rax
call fcn.1401c9440
mov ebx, eax
test rdi, rdi
je 0x1401c9a8e
mov rdx, qword [rdi + 0x30]
mov r15, 0xffffffffffffffff
test rdx, rdx
je 0x1401c9a3c
mov rcx, r15
call qword [sym.imp.ntdll.dll_NtUnmapViewOfSection]
mov qword [rdi + 0x30], 0
mov r8, qword [rdi + 0xb0]
xor edx, edx
mov rcx, qword [0x1402caad0]
test r8, r8
jne 0x1401c9a58
mov r8, qword [rdi + 0x90]
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rcx, qword [rdi + 0x60]
test rcx, rcx
je 0x1401c9a7c
add rcx, 0xfffffffffffffff0
lock xadd dword [rcx + 8], r15d
cmp r15d, 1
jne 0x1401c9a7c
call fcn.140141ca0
mov rcx, qword [0x1402caad0]
mov r8, rdi
xor edx, edx
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov eax, ebx
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret