Function at 0x140015b60
Capabilities:
Allocate or change rwx memory

Disassembly:
push rbx
push rsi
push r14
sub rsp, 0x40
mov rbx, rdx
mov rdx, qword [rcx + 0x28]
mov r14, r8
mov rsi, rcx
test rdx, rdx
je 0x140015bbe
mov rcx, qword [rdx + 0x80]
test rcx, rcx
jne 0x140015bc9
cmp qword [0x1400a9418], 8
lea r8, [0x1400a9400]
lea rdx, [0x1400a95c0]
cmovae r8, qword [0x1400a9400]
cmp qword [0x1400a95d8], 8
cmovae rdx, qword [0x1400a95c0]
xor r9d, r9d
call qword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
add rsp, 0x40
pop r14
pop rsi
pop rbx
ret
test r9b, r9b
je 0x140015daf
test rbx, rbx
je 0x140015daf
mov qword [rsp + 0x68], rbp
mov qword [rsp + 0x70], rdi
cmp rbx, 0xffffffffffffffff
jne 0x140015c78
mov rdi, qword [rsi + 0x10]
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x140015dab
nop
mov rdx, qword [rsi + 0x28]
lea rcx, [rbx + 0x20]
add rdx, 0x20
call fcn.140017990
test eax, eax
je 0x140015c72
cmp byte [rbx + 0x19], 0
jne 0x140015c66
mov rax, qword [rbx + 0x10]
cmp byte [rax + 0x19], 0
jne 0x140015c3f
mov rbx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
jne 0x140015c66
mov rbx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x140015c31
jmp 0x140015c66
mov rax, qword [rbx + 8]
cmp byte [rax + 0x19], 0
jne 0x140015c63
nop dword [rax]
cmp rbx, qword [rax + 0x10]
jne 0x140015c63
mov rbx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x19], 0
je 0x140015c50
mov rbx, rax
cmp rbx, rdi
jne 0x140015c00
xor eax, eax
jmp 0x140015d8b
lea rdi, [rbx + 0x40]
jmp 0x140015c94
cmp byte [rsi + 0x20], 0
jne 0x140015c86
mov rcx, rsi
call fcn.140016cb0
mov rdx, rbx
mov rcx, rsi
call fcn.140016020
mov rdi, rax
test rdi, rdi
je 0x140015dab
cmp qword [rdi + 0x20], 0x10000
ja 0x140015cba
mov rdx, rdi
mov rcx, rsi
call fcn.140016d90
test al, al
je 0x140015dab
mov rcx, qword [rsi + 0x28]
mov r9d, 0x3000
mov r8, r14
mov rcx, qword [rcx + 0x80]
xor edx, edx
mov dword [rsp + 0x20], 0x40
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov qword [rsp + 0x60], rax
cmp rax, 0x10000
jbe 0x140015dab
mov r8, rdi
mov rdx, rax
mov rcx, rsi
call fcn.140016a60
test al, al
je 0x140015d9e
mov rdx, qword [rdi + 0x40]
mov rcx, qword [rsp + 0x60]
mov rax, qword [rdx + 8]
mov rbx, rdx
cmp byte [rax + 0x19], 0
jne 0x140015d38
nop dword [rax + rax]
cmp qword [rax + 0x20], rcx
jae 0x140015d2c
mov rax, qword [rax + 0x10]
jmp 0x140015d32
mov rbx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x140015d20
cmp rbx, rdx
je 0x140015d43
cmp rcx, qword [rbx + 0x20]
jae 0x140015d7a
lea rax, [rsp + 0x60]
lea r8, [rsp + 0x30]
lea rcx, [rdi + 0x40]
mov qword [rsp + 0x30], rax
call fcn.140017a20
lea rdx, [rsp + 0x30]
lea rcx, [rdi + 0x40]
lea r9, [rax + 0x20]
mov r8, rbx
mov qword [rsp + 0x20], rax
call fcn.140017a60
mov rbx, qword [rsp + 0x30]
mov rax, qword [rdi + 0x28]
sub rax, 0x10
mov qword [rbx + 0x28], rax
mov rax, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x70]
add rsp, 0x40
pop r14
pop rsi
pop rbx
ret
mov rdx, qword [rsp + 0x60]
mov rcx, rsi
call fcn.1400160a0
xor eax, eax
jmp 0x140015d8b
cmp rbx, 0x10
jne 0x140015dc9
mov rdx, qword [rdx + 0x48]
mov rcx, rsi
add rsp, 0x40
pop r14
pop rsi
pop rbx
jmp 0x140015e00
test rbx, rbx
je 0x140015de1
mov rdx, rbx
mov rcx, rsi
add rsp, 0x40
pop r14
pop rsi
pop rbx
jmp 0x140015e00
xor edx, edx
mov r9d, 0x3000
mov dword [rsp + 0x20], 0x40
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
add rsp, 0x40
pop r14
pop rsi
pop rbx
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r14
sub rsp, 0x30
mov rsi, r8
mov rbp, rcx
cmp rdx, 0x7fffffff
jb 0x140015e32
lea rbx, [rdx - 0x10000000]
jmp 0x140015e34
xor ebx, ebx
lea r14, [rdx + 0x7fffffff]
xor edx, edx
mov rax, rbx
div qword [rcx]
mov rcx, qword [rcx + 0x28]
mov r9d, 0x3000
mov rcx, qword [rcx + 0x80]
sub rbx, rdx
mov dword [rsp + 0x20], 0x40
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov rdi, rax
cmp rax, r14
jae 0x140015eaf
cmp rbx, r14
jae 0x140015eaf
lea rcx, [rdi + rsi]
cmp rcx, rbx
jae 0x140015ee5
mov rcx, qword [rbp + 0x28]
add rbx, qword [rbp]
mov r9d, 0x3000
mov rcx, qword [rcx + 0x80]
mov r8, rsi
mov rdx, rbx
mov dword [rsp + 0x20], 0x40
call qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov rdi, rax
cmp rax, r14
jb 0x140015e70
test rdi, rdi
je 0x140015ee5
mov ecx, 0x1e7
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rcx, qword [rbp + 0x28]
test rcx, rcx
je 0x140015ee1
mov rcx, qword [rcx + 0x80]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
xor eax, eax
jmp 0x140015ee8
mov rax, rdi
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x30
pop r14
ret