Function at 0x14005c800
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, 0x148
mov rbx, r9
mov rdi, r8
mov rsi, rcx
mov r13, qword [rdx]
test r13, r13
je 0x14005c907
movzx ebp, byte [rbx + 0x10]
cmp bpl, 2
jne 0x14005c941
mov r14, rdx
mov byte [rsp + 0x2f], bpl
mov rbp, qword [rbx]
mov r12, qword [rbx + 8]
lea r15, [rbx + 0x18]
lea rcx, [rsp + 0x40]
mov rdx, r15
call fcn.1400d2940
mov qword [rsp + 0x78], rbp
lock inc qword [rbp]
jle 0x14005cec0
lock inc qword [r12 + 0x1c8]
mov qword [rsp + 0xb0], r12
lock inc qword [r12]
jle 0x14005cec0
movups xmm0, xmmword [rsp + 0x40]
movups xmm1, xmmword [rsp + 0x49]
movups xmmword [rsp + 0x138], xmm1
movups xmmword [rsp + 0x12f], xmm0
movzx ebp, byte [rsp + 0x59]
mov eax, dword [rsp + 0x5a]
mov dword [rsp + 0x88], eax
movzx eax, word [rsp + 0x5e]
mov word [rsp + 0x8c], ax
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 9]
movups xmmword [rsp + 0x97], xmm0
movups xmmword [rsp + 0xa0], xmm1
movzx ecx, byte [rbx + 0x31]
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x3c], ax
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x38], eax
cmp bpl, 2
jne 0x14005ca63
mov r15, qword [rsp + 0x78]
mov r14, qword [rsp + 0xb0]
movzx ebp, byte [rsp + 0x2f]
jmp 0x14005c9c6
mov r15, qword [rbx]
mov r14, qword [rbx + 8]
movzx ebp, byte [rbx + 0x10]
movups xmm0, xmmword [rbx + 0x21]
movaps xmmword [rsp + 0x50], xmm0
movups xmm0, xmmword [rbx + 0x11]
movaps xmmword [rsp + 0x40], xmm0
movzx r12d, byte [rbx + 0x31]
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x30], eax
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x34], ax
xor r13d, r13d
jmp 0x14005cca6
movups xmm0, xmmword [rbx + 0x18]
movups xmm1, xmmword [rbx + 0x21]
movups xmmword [rsp + 0x50], xmm1
movups xmmword [rsp + 0x47], xmm0
movzx ecx, byte [rbx + 0x31]
movzx eax, word [rbx + 0x36]
mov word [rsp + 0x3c], ax
mov eax, dword [rbx + 0x32]
mov dword [rsp + 0x38], eax
mov r15, qword [rbx]
mov r14, qword [rbx + 8]
mov eax, dword [rbx + 0x14]
mov dword [rsp + 0x43], eax
mov eax, dword [rbx + 0x11]
mov dword [rsp + 0x40], eax
movups xmm0, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0xa0], xmm0
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x90], eax
movzx eax, word [rsp + 0x44]
mov word [rsp + 0x94], ax
movzx eax, byte [rsp + 0x46]
mov byte [rsp + 0x96], al
mov rax, qword [rsp + 0x47]
mov qword [rsp + 0x97], rax
movzx eax, byte [rsp + 0x4f]
mov byte [rsp + 0x9f], al
mov eax, dword [rsp + 0x90]
movzx edx, word [rsp + 0x94]
movzx r8d, byte [rsp + 0x96]
mov r9, qword [rsp + 0x97]
movzx r10d, byte [rsp + 0x9f]
movaps xmm0, xmmword [rsp + 0xa0]
movaps xmmword [rsp + 0x50], xmm0
mov dword [rsp + 0x40], eax
mov word [rsp + 0x44], dx
mov byte [rsp + 0x46], r8b
mov qword [rsp + 0x47], r9
mov byte [rsp + 0x4f], r10b
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x30], eax
movzx eax, word [rsp + 0x3c]
mov word [rsp + 0x34], ax
jmp 0x14005ca32
pause
mov rax, qword [r13 + 8]
nop word cs:[rax + rax]
cmp rax, 0xffffffffffffffff
je 0x14005ca30
test rax, rax
js 0x14005ceb9
lea rdx, [rax + 1]
lock cmpxchg qword [r13 + 8], rdx
jne 0x14005ca40
mov r12d, ecx
jmp 0x14005cca6
add rbx, 0x32
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0xc8], rax
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0xd0], rax
mov byte [rsp + 0xd8], 2
movaps xmm0, xmmword [rsp + 0x90]
movaps xmm1, xmmword [rsp + 0xa0]
movups xmmword [rsp + 0xd9], xmm0
movups xmmword [rsp + 0xe9], xmm1
mov byte [rsp + 0xf9], cl
mov eax, dword [rbx]
mov dword [rsp + 0xfa], eax
movzx eax, word [rbx + 4]
mov word [rsp + 0xfe], ax
lea rbx, [r13 + 0x10]
mov rcx, rbx
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov rax, qword [0x140251c00]
mov rax, qword [rax]
shl rax, 1
test rax, rax
jne 0x14005ce5a
xor eax, eax
movzx ecx, byte [r13 + 0x18]
test cl, cl
jne 0x14005ce6e
mov qword [rsp + 0xc0], rbx
movzx ecx, byte [rdi]
test rcx, rcx
mov dword [rsp + 0xbc], eax
je 0x14005cb22
movzx ebx, byte [rsp + 0x2f]
cmp ecx, 1
jne 0x14005cb2b
movzx ecx, byte [rdi + 1]
mov al, 1
jmp 0x14005cb6e
movzx ebx, byte [rsp + 0x2f]
xor eax, eax
jmp 0x14005cb6e
mov r12, qword [rdi + 8]
mov rax, qword [0x14031ef28]
movzx eax, byte [rax]
mov ecx, 0x20
mov edx, 8
call fcn.14000ea30
test rax, rax
je 0x14005cec4
mov r15, rax
lea rdx, [r12 + 0x18]
mov rax, qword [r12]
mov r8, qword [r12 + 8]
mov r9, qword [r12 + 0x10]
mov rcx, r15
call qword [rax]
mov al, 2
lea r12, [r13 + 0x20]
mov byte [rsp + 0x40], al
mov byte [rsp + 0x41], cl
mov qword [rsp + 0x48], r15
lea rcx, [rsp + 0x50]
lea rdx, [rdi + 0x28]
mov rax, qword [rdi + 0x10]
mov r8, qword [rdi + 0x18]
mov r9, qword [rdi + 0x20]
call qword [rax]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0xc8]
mov rcx, r12
mov r9, r14
call fcn.14005cf80
lea rcx, [r13 + 0x30]
mov rdx, rdi
call fcn.14003de40
lea rdx, [r13 + 0x90]
lea rcx, [rsp + 0x40]
mov r8, rdi
call fcn.14003e090
mov r14, qword [rsp + 0x40]
test r14, r14
je 0x14005cbfe
lea rcx, [rsp + 0x40]
call fcn.1400834a0
mov rdx, qword [rsp + 0x48]
test rdx, rdx
je 0x14005cbfe
shl rdx, 3
mov r8d, 8
mov rcx, r14
call fcn.14000ea40
mov rcx, qword [rdi + 0x30]
lea rax, [rcx + 1]
cmp rax, 2
mov r15, qword [rsp + 0x78]
mov r12d, ebp
jb 0x14005cc2b
lock dec qword [rcx + 8]
jne 0x14005cc2b
mov edx, 0xe0
mov r8d, 8
call fcn.14000ea40
mov qword [rdi + 0x30], 0
movups xmm0, xmmword [rsp + 0x128]
movups xmm1, xmmword [rsp + 0x138]
movaps xmmword [rsp + 0x50], xmm1
movaps xmmword [rsp + 0x40], xmm0
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x30], eax
movzx eax, word [rsp + 0x8c]
mov word [rsp + 0x34], ax
cmp byte [rsp + 0xbc], 0
mov r14, qword [rsp + 0xb0]
jne 0x14005cc94
movabs rax, 0x7fffffffffffffff
mov rcx, qword [0x140251c00]
mov rcx, qword [rcx]
test rcx, rax
jne 0x14005cea2
mov rcx, qword [rsp + 0xc0]
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
xor r13d, r13d
mov ebp, ebx
movaps xmm0, xmmword [rsp + 0x40]
movaps xmm1, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0x110], xmm1
movaps xmmword [rsp + 0x100], xmm0
mov eax, dword [rsp + 0x30]
mov dword [rsp + 0x80], eax
movzx eax, word [rsp + 0x34]
mov word [rsp + 0x84], ax
movzx eax, byte [rdi]
test rax, rax
je 0x14005cced
cmp eax, 1
jne 0x14005ccf1
movzx ecx, byte [rdi + 1]
mov al, 1
jmp 0x14005cd4d
xor eax, eax
jmp 0x14005cd4d
mov byte [rsp + 0x78], r12b
mov r12, r15
mov r15d, ebp
mov rbp, r14
mov r14, qword [rdi + 8]
mov rax, qword [0x14031ef28]
movzx eax, byte [rax]
mov ecx, 0x20
mov edx, 8
call fcn.14000ea30
test rax, rax
je 0x14005cec4
mov rbx, rax
lea rdx, [r14 + 0x18]
mov rax, qword [r14]
mov r8, qword [r14 + 8]
mov r9, qword [r14 + 0x10]
mov rcx, rbx
call qword [rax]
mov al, 2
mov r14, rbp
mov ebp, r15d
mov r15, r12
movzx r12d, byte [rsp + 0x78]
mov byte [rsp + 0x40], al
mov byte [rsp + 0x41], cl
mov qword [rsp + 0x48], rbx
lea rcx, [rsp + 0x50]
lea rbx, [rdi + 0x28]
mov rax, qword [rdi + 0x10]
mov r8, qword [rdi + 0x18]
mov r9, qword [rdi + 0x20]
mov rdx, rbx
call qword [rax]
mov qword [rsi + 0x30], r15
mov qword [rsi + 0x38], r14
mov byte [rsi + 0x40], bpl
movaps xmm0, xmmword [rsp + 0x100]
movaps xmm1, xmmword [rsp + 0x110]
movups xmmword [rsi + 0x41], xmm0
movups xmmword [rsi + 0x51], xmm1
mov byte [rsi + 0x61], r12b
mov eax, dword [rsp + 0x80]
mov dword [rsi + 0x62], eax
movzx eax, word [rsp + 0x84]
mov word [rsi + 0x66], ax
mov byte [rsi + 0x70], 0
movups xmm0, xmmword [rsp + 0x40]
movups xmm1, xmmword [rsp + 0x50]
movups xmm2, xmmword [rsp + 0x60]
movups xmmword [rsi], xmm0
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi + 0x20], xmm2
mov qword [rsi + 0x68], r13
mov rcx, rdi
call fcn.14005ffd0
cmp byte [rdi], 2
jb 0x14005ce0a
mov r14, qword [rdi + 8]
lea rcx, [r14 + 0x18]
mov rax, qword [r14]
mov rdx, qword [r14 + 8]
mov r8, qword [r14 + 0x10]
call qword [rax + 0x10]
mov edx, 0x20
mov r8d, 8
mov rcx, r14
call fcn.14000ea40
mov rax, qword [rdi + 0x10]
mov rdx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x20]
mov rcx, rbx
call qword [rax + 0x10]
mov rcx, qword [rdi + 0x30]
lea rax, [rcx + 1]
cmp rax, 2
jae 0x14005ce41
mov rax, rsi
add rsp, 0x148
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lock dec qword [rcx + 8]
jne 0x14005ce2a
mov edx, 0xe0
mov r8d, 8
call fcn.14000ea40
jmp 0x14005ce2a
call fcn.1401ed690
xor al, 1
movzx ecx, byte [r13 + 0x18]
test cl, cl
je 0x14005caf9
mov qword [rsp + 0x40], rbx
mov byte [rsp + 0x48], al
lea rax, [0x14025cdf8]
mov qword [rsp + 0x20], rax
lea rcx, [0x14025ca88]
lea r9, [0x14025cab8]
lea r8, [rsp + 0x40]
mov edx, 0x2b
call fcn.1402363e0
ud2
call fcn.1401ed690
test al, al
jne 0x14005cc94
mov byte [r13 + 0x18], 1
jmp 0x14005cc94
call fcn.14006a5c0
ud2
ud2
mov ecx, 8
mov edx, 0x20
call fcn.140226c80
ud2