Function at 0x1800998a0
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov rbx, rcx
xor r12d, r12d
lea r14, [rcx + 0x28]
mov qword [rsp + 0x48], r14
mov byte [rsp + 0x50], r12b
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x38], edx
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x58]
call fcn.180099b90
nop
movabs r13, 0x624dd2f1a9fbe77
nop
mov edi, 0xffffffff
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [rsp + 0x50], 1
cmp qword [rbx + 0x78], 0
jne 0x180099a73
cmp byte [rbx + 0x20], 0
jne 0x180099a68
inc qword [rbx + 0x18]
movsxd rbp, dword [rbx + 0xc]
test ebp, ebp
jns 0x180099929
mov rsi, r12
jmp 0x180099998
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rsi, r12
test eax, eax
cmovne rsi, qword [rsp + 0xc0]
test rsi, rsi
je 0x180099b64
mov rcx, qword [0x18014e488]
test rcx, rcx
jne 0x180099980
lea rcx, [rsp + 0xd0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov rcx, qword [rsp + 0xd0]
mov qword [0x18014e488], rcx
test rcx, rcx
je 0x180099b64
xor edx, edx
movabs rax, 0xf423ffff0bdc0
div rcx
test rax, rax
je 0x180099b64
mov rcx, r12
nop dword [rax + rax]
cmp qword [rbx + 0x78], 0
jne 0x180099a64
cmp byte [rbx + 0x20], 0
jne 0x180099a64
mov r8d, ebp
sub r8d, ecx
test ebp, ebp
cmovs r8d, edi
test r8d, r8d
mov eax, 0xffffffff
cmovs r8d, eax
mov rdx, r14
lea rcx, [rbx + 0x50]
call qword [case.0x1800d57d5.4]
test ebp, ebp
js 0x180099998
lea rcx, [rsp + 0xd8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rdi, r12
test eax, eax
cmovne rdi, qword [rsp + 0xd8]
cmp rdi, rsi
jae 0x180099a04
mov rcx, r12
jmp 0x180099a43
mov rcx, qword [0x18014e488]
test rcx, rcx
jne 0x180099a31
lea rcx, [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov rcx, qword [rsp + 0x28]
mov qword [0x18014e488], rcx
test rcx, rcx
jne 0x180099a31
mov rcx, r12
jmp 0x180099a43
sub rdi, rsi
imul rax, rdi, 0xf4240
xor edx, edx
div rcx
mov rcx, rax
mov rax, r13
mul rcx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 9
cmp rbp, rcx
mov edi, 0xffffffff
ja 0x1800999a0
dec qword [rbx + 0x18]
cmp qword [rbx + 0x78], 0
je 0x180099b2a
mov rdx, qword [rbx + 0x70]
mov rcx, rdx
shr rcx, 1
mov rax, qword [rbx + 0x68]
dec rax
and rcx, rax
and edx, 1
mov rax, qword [rbx + 0x60]
mov rcx, qword [rax + rcx*8]
mov rdi, qword [rcx + rdx*8]
mov qword [rcx + rdx*8], r12
mov qword [rsp + 0x70], rdi
mov rdx, qword [rbx + 0x70]
mov rcx, rdx
shr rcx, 1
mov rax, qword [rbx + 0x68]
dec rax
and rcx, rax
and edx, 1
mov rax, qword [rbx + 0x60]
mov rcx, qword [rax + rcx*8]
mov rcx, qword [rcx + rdx*8]
test rcx, rcx
je 0x180099ad8
mov rax, qword [rcx]
mov edx, 1
mov rax, qword [rax]
call qword [case.0x18001b453.0]
sub qword [rbx + 0x78], 1
jne 0x180099ae5
mov qword [rbx + 0x70], r12
jmp 0x180099ae9
inc qword [rbx + 0x70]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [rsp + 0x50], 0
mov rax, qword [rdi]
mov rcx, rdi
mov rax, qword [rax + 8]
call qword [case.0x18001b453.0]
nop
test rdi, rdi
je 0x1800998f0
mov rax, qword [rdi]
mov edx, 1
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x18001b453.0]
jmp 0x1800998f0
cmp byte [rsp + 0x58], 0
jne 0x180099b40
mov edx, dword [rsp + 0x68]
mov rcx, qword [rsp + 0x60]
call fcn.180099560
nop
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rbx, qword [rsp + 0xc8]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea rdx, [0x180120bf1]
lea rcx, [rsp + 0x30]
call fcn.180014890
lea rdx, [0x180145db8]
lea rcx, [rsp + 0x30]
call fcn.1800d7ba8
int3