Function at 0x140021bac
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
movsxd r12, dword [rdx + 0x34]
mov rbp, rdx
mov rax, qword [rcx]
mov rbx, rcx
mov esi, dword [rdx + 0x38]
mov qword [rsp + 0x20], rax
add esi, r12d
movsx eax, word [rdx + 0x100]
mov word [rsp + 0x80], ax
mov dword [rsp + 0x88], eax
mov eax, dword [rdx + 0x80]
mov dword [rsp + 0x90], eax
mov eax, 1
mov dword [rsp + 0x98], r12d
test r12d, r12d
jne 0x140021c10
test esi, esi
jle 0x140021c10
add esi, eax
mov eax, dword [rcx + 0x90]
lea ecx, [rax + rax*2]
mov eax, dword [rdx + 0x3c]
shl ecx, 3
lea rdx, [rsp + 0x90]
sub eax, ecx
movsxd r15, ecx
add r15, qword [rbx + 0x88]
mov rcx, rbx
movsxd r14, eax
and r14, 0xfffffffffffffff8
call fcn.140020d78
xor r9d, r9d
mov r10d, 0x80
cmp byte [rbp + 0x20], r9b
je 0x140021c5a
mov ecx, r10d
cmp byte [rbp + 0x21], r9b
jne 0x140021c5d
mov ecx, r9d
mov eax, dword [rbx + 0xc8]
btr eax, 7
or eax, ecx
mov dword [rbx + 0xc8], eax
cmp byte [rbp + 0x103], r9b
je 0x140021c82
mov ecx, 0xa
cmp esi, ecx
cmovl esi, ecx
and eax, 0xfffffffc
mov rdx, r9
mov dword [rbx + 0xc8], eax
movsxd rax, esi
imul r13, rax, 0x38
cmp r13, r14
jg 0x140021ca3
mov rdx, r15
sub rdx, r13
add rdx, r14
movsxd r8, dword [rsp + 0x88]
mov rcx, r14
sub rcx, r13
mov qword [rbx + 0x68], rdx
cmp r13, r14
mov rdi, r9
mov rdx, r9
cmovg rcx, r14
cmovg rdi, r13
imul rax, r8, 0x38
mov qword [rsp + 0x28], rax
cmp rax, rcx
jg 0x140021cdd
sub rcx, rax
lea rdx, [rcx + r15]
jmp 0x140021ce0
add rdi, rax
movsxd r14, dword [rsp + 0x90]
mov rax, r9
shl r14, 3
mov qword [rbx + 0x80], rdx
cmp r14, rcx
jg 0x140021d06
mov rax, r15
sub rax, r14
add rax, rcx
jmp 0x140021d09
add rdi, r14
mov rdx, rcx
mov qword [rbx + 0x70], rax
sub rdx, r14
mov rax, r9
cmp r14, rcx
cmovg rdx, rcx
shl r12, 3
cmp r12, rdx
jg 0x140021d31
mov rax, r15
sub rax, r12
add rax, rdx
jmp 0x140021d34
add rdi, r12
mov r15, qword [rsp + 0x20]
mov qword [rbx + 0x78], rax
test rdi, rdi
je 0x140021de3
mov rdx, rdi
mov rcx, r15
call fcn.1400054f0
xor r9d, r9d
mov qword [rbx + 0xf8], rax
mov rcx, rax
cmp byte [r15 + 0x61], r9b
jne 0x140021dd5
mov rax, qword [rbx + 0x68]
test rax, rax
jne 0x140021d79
cmp r13, rdi
jg 0x140021d79
sub rdi, r13
lea rax, [rdi + rcx]
mov qword [rbx + 0x68], rax
mov rax, qword [rbx + 0x80]
test rax, rax
jne 0x140021d9a
mov rdx, qword [rsp + 0x28]
cmp rdx, rdi
jg 0x140021d9a
sub rdi, rdx
lea rax, [rdi + rcx]
mov qword [rbx + 0x80], rax
mov rax, qword [rbx + 0x70]
test rax, rax
jne 0x140021db6
cmp r14, rdi
jg 0x140021db6
sub rdi, r14
lea rax, [rdi + rcx]
mov qword [rbx + 0x70], rax
mov rax, qword [rbx + 0x78]
test rax, rax
jne 0x140021dd1
cmp r12, rdi
jg 0x140021dd1
mov rax, rcx
sub rax, r12
add rax, rdi
mov qword [rbx + 0x78], rax
mov r8d, dword [rsp + 0x88]
mov r10d, 0x80
mov rax, qword [rbp + 0x118]
mov edi, 1
mov qword [rbx + 0xb0], rax
movzx eax, byte [rbp + 0x103]
shl eax, 2
mov qword [rbp + 0x118], r9
xor eax, dword [rbx + 0xc8]
and eax, 0xc
xor dword [rbx + 0xc8], eax
cmp byte [r15 + 0x61], r9b
je 0x140021e28
and qword [rbx + 0x28], 0
mov word [rbx + 0x20], r9w
jmp 0x140021e9b
mov eax, dword [rsp + 0x98]
mov dword [rbx + 0x2c], eax
movzx eax, word [rsp + 0x80]
mov word [rbx + 0x20], ax
mov rax, qword [rbx + 0x80]
test r8d, r8d
jle 0x140021e65
add rax, 8
sub r8d, edi
mov qword [rax + 0x20], r15
mov word [rax], di
mov dword [rax + 0x18], r9d
lea rax, [rax + 0x38]
test r8d, r8d
jg 0x140021e4e
mov rax, qword [rbx + 0x68]
mov dword [rbx + 0x28], esi
test esi, esi
jle 0x140021e8a
add rax, 8
sub esi, edi
mov qword [rax + 0x20], r15
mov word [rax], r10w
mov dword [rax + 0x18], r9d
lea rax, [rax + 0x38]
test esi, esi
jg 0x140021e74
mov rcx, qword [rbx + 0x78]
mov r8, r12
xor edx, edx
call fcn.140076800
xor r9d, r9d
or dword [rbx + 0x34], 0xffffffff
and qword [rbx + 0x38], 0
mov dword [rbx + 0x24], 0x2df20da3
mov word [rbx + 0xc2], 0xff02
mov dword [rbx + 0x30], edi
mov dword [rbx + 0x40], r9d
mov qword [rbx + 0x50], r9
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret