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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov edi, r8d
mov ebx, edx
mov rsi, rcx
mov rax, qword [rcx]
lea rcx, [fcn.14020c2a0]
cmp qword [rax + 0x60], rcx
jne 0x1400a0fb1
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
mov r9, qword [rcx + 8]
mov r8, r9
sub r8, rax
mov rcx, r8
sar rcx, 2
mov rdx, rcx
dec rdx
je 0x1400a0fc3
cmp r9, rax
je 0x1400a0fc6
cmp dword [rax], ebx
jg 0x1400a0fc9
cmp dword [rax + rcx*4 - 4], ebx
jle 0x1400a0fcc
cmp r8, 4
jbe 0x1400a0fcf
lea r14, [rcx - 2]
mov r9d, dword [rax + rcx*4 - 8]
cmp r9d, r14d
je 0x1400a0a60
mov r14, rdx
shr r14, 1
cmp r8, 0xc
jb 0x1400a09f8
xor r8d, r8d
nop word cs:[rax + rax]
cmp rcx, r14
jbe 0x1400a0fae
cmp dword [rax + r14*4], ebx
jg 0x1400a09e0
mov r8, r14
jmp 0x1400a09e3
mov rdx, r14
mov r9, rdx
sub r9, r8
mov r14, r9
shr r14, 1
add r14, r8
cmp r9, 1
ja 0x1400a09c0
lea rdx, [r14 + 1]
cmp rcx, rdx
jbe 0x1400a0fd2
cmp dword [rax + r14*4 + 4], ebx
jle 0x1400a0fd5
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x1400a0a72
mov rcx, qword [rsi + 0x18]
mov eax, edi
lock xadd dword [rcx + r14*4], eax
movsxd rcx, edi
movsxd rdx, ebx
imul rdx, rcx
mov rcx, qword [rsi + 0x10]
lock add qword [rcx + 8], rdx
mov rcx, qword [rsi + 0x10]
lock add dword [rcx + 0x10], edi
test edi, edi
jle 0x1400a0a4f
lea ecx, [rax + rdi]
xor ecx, eax
js 0x1400a0fd8
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test ebx, ebx
jle 0x1400a0b58
cmp r9d, ebx
jl 0x1400a0a10
mov r14d, ebx
jmp 0x1400a0a10
mov rcx, qword [rsi + 0x10]
test edi, edi
je 0x1400a0b00
lea eax, [rdi - 0x10000]
cmp eax, 0xfffe0001
jb 0x1400a0b60
cmp r14, 0xffff
ja 0x1400a0b60
mov edx, edi
neg edx
cmovs edx, edi
mov eax, dword [rcx + 0x14]
cmp eax, 0xffffffff
je 0x1400a0b60
test eax, eax
je 0x1400a0abd
cmp ax, r14w
jne 0x1400a0b60
mov r9d, eax
shr r9d, 0x10
mov r8d, r9d
sub r8w, dx
setb r10b
add r9w, dx
setb r11b
test edi, edi
js 0x1400a0ae1
mov r8d, r9d
mov r10d, r11d
test r10b, 1
jne 0x1400a0b60
shl r8d, 0x10
or r8d, r14d
cmp r8d, 0xffffffff
je 0x1400a0b60
lock cmpxchg dword [rcx + 0x14], r8d
jne 0x1400a0aa3
mov rcx, qword [rsi + 0x10]
movsxd rax, ebx
movsxd rdx, edi
imul rdx, rax
lock add qword [rcx + 8], rdx
mov rax, qword [rsi + 0x10]
lock add dword [rax + 0x10], edi
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x1400a0a4f
mov rax, qword [rsi + 0x10]
mov ecx, 0xffffffff
xchg dword [rax + 0x14], ecx
xor eax, eax
cmp ecx, 0xffffffff
cmovne eax, ecx
cmp eax, 0x10000
jb 0x1400a0a4f
mov ecx, eax
shr ecx, 0x10
mov rdx, qword [rsi + 0x18]
movzx eax, ax
lock add dword [rdx + rax*4], ecx
jmp 0x1400a0a4f
xor r14d, r14d
jmp 0x1400a0a10
mov rax, qword [rsi + 0x18]
test rax, rax
jne 0x1400a0ddd
mov r15, qword [0x140352ba8]
cmp r15, 1
jbe 0x1400a0f52
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1400a0fa1
mov rax, qword [rsi + 0x18]
test rax, rax
jne 0x1400a0dd4
mov rax, qword [rsi]
mov rax, qword [rax + 0x70]
lea rcx, [0x14020c990]
cmp rax, rcx
mov qword [rsp + 0x20], r15
jne 0x1400a0e11
mov rax, qword [rsi + 0x40]
mov r12d, dword [rax]
test r12d, r12d
jne 0x1400a0d3c
mov r13, qword [rsi + 0x28]
mov r8d, dword [rsi + 0x34]
cmp r8, 0x3ffffff0
ja 0x1400a1057
lea r9, [r8 + 0x17]
and r9, 0xfffffffffffffff8
cmp r9, 0x11
jb 0x1400a1057
mov eax, dword [r13 + 0x18]
cmp r9, rax
ja 0x1400a1057
mov eax, dword [rsi + 0x30]
mov dword [rsp + 0x28], eax
mov rax, qword [r13 + 8]
mov r12d, dword [rax + 0x28]
mov al, byte [r13 + 0x29]
test al, 1
jne 0x1400a104a
mov r11, qword [r13 + 8]
mov eax, dword [r11 + 0x24]
test al, 1
jne 0x1400a104a
mov ebp, r12d
lea rax, [r9 + rbp]
mov r15d, dword [r13 + 0x14]
cmp rax, r15
ja 0x1400a0ff8
cmp r12d, 0x40
jb 0x1400a104a
mov eax, ebp
and eax, 7
jne 0x1400a104a
lea rax, [rbp + 0x10]
cmp rax, r15
ja 0x1400a104a
mov r10, r11
add r10, rbp
je 0x1400a104a
mov ecx, dword [r13 + 0x18]
mov eax, r12d
xor edx, edx
div ecx
sub ecx, edx
cmp r9, rcx
ja 0x1400a1010
mov rax, rcx
sub rax, r9
cmp rax, 0x17
jbe 0x1400a103b
lea ecx, [r12 + r9]
mov eax, r12d
lock cmpxchg dword [r11 + 0x28], ecx
mov r12d, eax
jne 0x1400a0c0b
cmp dword [r10], 0
jne 0x1400a104a
cmp dword [r10 + 4], 0
jne 0x1400a104a
mov eax, dword [r10 + 8]
test eax, eax
jne 0x1400a104a
mov eax, dword [r10 + 0xc]
test eax, eax
jne 0x1400a104a
mov rax, r9
add rax, r10
mov rcx, qword [r13 + 0x20]
lea rdx, [r10 + rcx]
add rdx, 0xf
neg rcx
and rcx, rdx
cmp rax, rcx
ja 0x1400a0f8f
mov dword [r10], r9d
mov dword [r10 + 4], 0xc8799269
mov eax, dword [rsp + 0x28]
mov dword [r10 + 8], eax
test r12d, r12d
mov r15, qword [rsp + 0x20]
je 0x1400a1057
mov rcx, qword [r13 + 0x30]
test rcx, rcx
jne 0x1400a10a3
mov rcx, qword [rsi + 0x40]
xor eax, eax
lock cmpxchg dword [rcx], r12d
jne 0x1400a10b8
cmp byte [rsi + 0x3c], 0
jne 0x1400a1123
cmp r12d, 0x40
jb 0x1400a106f
mov ecx, r12d
mov eax, ecx
and eax, 7
jne 0x1400a106f
mov rax, qword [rsi + 0x28]
mov r9d, dword [rsi + 0x34]
lea rdx, [r9 + rcx]
add rdx, 0x10
mov r8d, dword [rax + 0x14]
cmp rdx, r8
ja 0x1400a106f
mov edx, dword [rsi + 0x30]
mov rax, qword [rax + 8]
mov r10d, dword [rax + rcx + 4]
cmp r10d, 0xc8799269
jne 0x1400a106f
add r9, 0x10
add rax, rcx
mov r10d, dword [rax]
cmp r9, r10
ja 0x1400a106f
add ecx, dword [rax]
cmp ecx, r8d
ja 0x1400a106f
test edx, edx
je 0x1400a0db7
mov ecx, dword [rax + 8]
cmp ecx, edx
jne 0x1400a106f
test rax, rax
je 0x1400a106f
mov ecx, dword [rsi + 0x38]
add rax, rcx
add rax, 0x10
je 0x1400a106f
mov qword [rsi + 0x18], rax
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsi + 0x10]
mov ecx, 0xffffffff
xchg dword [rax + 0x14], ecx
xor eax, eax
cmp ecx, 0xffffffff
cmovne eax, ecx
cmp eax, 0x10000
jb 0x1400a0a19
mov ecx, eax
shr ecx, 0x10
mov rdx, qword [rsi + 0x18]
movzx eax, ax
lock add dword [rdx + rax*4], ecx
jmp 0x1400a0a19
lea rcx, [0x14020c800]
cmp rax, rcx
jne 0x1400a1148
mov rcx, qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
mov r13, qword [rcx + 8]
sub r13, qword [rcx]
sar r13, 2
lea r10, [r13 - 1]
mov r9, qword [rsi + 0x30]
mov rbp, r9
sub rbp, rax
sar rbp, 2
mov rdx, r10
sub rdx, rbp
jbe 0x1400a1156
mov rcx, qword [rsi + 0x38]
mov r8, rcx
sub r8, r9
sar r8, 2
cmp r8, rdx
jae 0x1400a1169
mov rdx, r10
shr rdx, 0x3e
jne 0x1400a1137
movabs rdx, 0x3fffffffffffffff
sub rcx, rax
mov r15, rcx
sar r15, 1
cmp r15, r10
cmovbe r15, r10
movabs rax, 0x7ffffffffffffffc
cmp rcx, rax
cmovae r15, rdx
test r15, r15
mov qword [rsp + 0x28], r10
je 0x1400a113c
cmp r15, rdx
ja 0x1400a1143
lea rcx, [r15*4]
call fcn.14016ecd4
lea r12, [rax + rbp*4]
lea rcx, [rax + r15*4]
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x28]
lea r15, [rax + rcx*4]
shl r13, 2
shl rbp, 2
sub r13, rbp
add r13, 0xfffffffffffffffc
mov rax, r12
test rax, rax
je 0x1400a1134
mov dword [rax], 0
add rax, 4
add r13, 0xfffffffffffffffc
jne 0x1400a0eed
mov rdx, qword [rsi + 0x28]
mov r8, qword [rsi + 0x30]
sub r8, rdx
sub r12, r8
mov rcx, r12
call fcn.1401730b0
mov rcx, qword [rsi + 0x28]
mov qword [rsi + 0x28], r12
mov r9, r15
mov qword [rsi + 0x30], r15
mov rax, qword [rsp + 0x30]
mov qword [rsi + 0x38], rax
test rcx, rcx
jne 0x1400a11a0
mov rax, qword [rsi + 0x28]
cmp r9, rax
mov r15, qword [rsp + 0x20]
jne 0x1400a0dd0
int3
lea rcx, [0x140352ba8]
call fcn.14006d330
test al, al
je 0x1400a11ae
lea r15, [0x140352bb0]
mov rcx, r15
call fcn.140075520
lea rcx, [0x140352ba8]
mov rdx, r15
xor r8d, r8d
mov r9, rcx
call fcn.14006d410
jmp 0x1400a0b7e
mov byte [rcx], 0
add rcx, qword [r13 + 0x20]
cmp rcx, rax
jae 0x1400a0cf3
jmp 0x1400a0f8f
mov rcx, r15
call fcn.140047ff0
jmp 0x1400a0b8f
int3
mov rcx, rsi
mov edx, ebx
call fcn.14020c2a0
mov r14, rax
jmp 0x1400a0a10
int3
int3
int3
int3
int3
int3
int3
mov rcx, rsi
mov edx, 8
mov r8d, edi
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.140223cd0
mov eax, dword [r11 + 0x24]
mov r15, qword [rsp + 0x20]
mov ecx, eax
or ecx, 2
lock cmpxchg dword [r11 + 0x24], ecx
jne 0x1400a1001
jmp 0x1400a1057
cmp ecx, 0x11
jb 0x1400a104a
lea edx, [rcx + r12]
mov eax, r12d
lock cmpxchg dword [r11 + 0x28], edx
mov r12d, eax
jne 0x1400a0c0b
mov dword [r10], ecx
mov dword [r10 + 4], 0xffffffff
jmp 0x1400a0c0b
add rbp, rcx
mov r9, rcx
cmp rbp, r15
jbe 0x1400a0c8f
mov rcx, r13
call fcn.140220540
mov r15, qword [rsp + 0x20]
mov rcx, qword [r13 + 0x30]
test rcx, rcx
je 0x1400a106f
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
xor edx, edx
call qword [case.0x140211850.0]
mov rax, qword [rsi + 0x20]
mov rcx, qword [rax + 8]
sub rcx, qword [rax]
sar rcx, 2
lea rax, [rcx - 1]
shr rax, 0x3e
lea rdx, [rcx*4 - 4]
xor ecx, ecx
neg rax
sbb rcx, rcx
or rcx, rdx
call fcn.14016f248
jmp 0x1400a0dd0
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
mov edx, r8d
call qword [case.0x140211850.0]
jmp 0x1400a0d21
mov ecx, eax
cmp r12d, 0x40
jb 0x1400a1116
mov r8d, r12d
mov eax, r8d
and eax, 7
jne 0x1400a1116
mov rdx, qword [rsi + 0x28]
lea rax, [r8 + 0x10]
mov r9d, dword [rdx + 0x14]
cmp rax, r9
ja 0x1400a1116
mov eax, dword [rsi + 0x30]
mov rdx, qword [rdx + 8]
mov r10d, dword [rdx + r8 + 4]
cmp r10d, 0xc8799269
jne 0x1400a1116
add rdx, r8
mov r8d, dword [rdx]
cmp r8d, 0x10
jb 0x1400a1116
mov r8d, dword [rdx]
add r8d, r12d
cmp r8d, r9d
ja 0x1400a1116
test rdx, rdx
je 0x1400a1116
xor r8d, r8d
lock cmpxchg dword [rdx + 8], r8d
mov r12d, ecx
mov r15, qword [rsp + 0x20]
jmp 0x1400a0d3c
mov rcx, qword [rsi + 0x28]
mov edx, r12d
call fcn.140080380
jmp 0x1400a0d3c
int3
call fcn.14016fee0
xor eax, eax
jmp 0x1400a0ec5
call fcn.1401c93df
mov rcx, rsi
call qword [case.0x140211850.0]
jmp 0x1400a0dd0
jae 0x1400a0f3d
lea r9, [rax + r10*4]
mov qword [rsi + 0x30], r9
jmp 0x1400a0f3d
mov rcx, r9
lea rax, [r9 + rdx*4]
shl r13, 2
shl rbp, 2
sub r13, rbp
add r13, 0xfffffffffffffffc
test rcx, rcx
je 0x1400a11ba
mov dword [rcx], 0
add rcx, 4
add r13, 0xfffffffffffffffc
jne 0x1400a117f
mov qword [rsi + 0x30], rax
mov r9, rax
jmp 0x1400a0f3d
call fcn.14016eccc
mov r9, qword [rsi + 0x30]
jmp 0x1400a0f3d
mov r15, qword [0x140352ba8]
jmp 0x1400a0b7e
int3