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

Disassembly:
mov qword [rsp + 0x18], rbx
push rdi
sub rsp, 0x30
mov rbx, rcx
call fcn.18001c3e0
cmp byte [0x18011bff0], 0
je 0x18001ea27
call fcn.1800187c0
mov qword [rsp + 0x40], rax
jmp 0x18001ea4f
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x18001ea4a
call fcn.1800187c0
imul rax, qword [0x18011c258]
mov qword [rsp + 0x40], rax
jmp 0x18001ea4f
mov rax, qword [rsp + 0x40]
xor edi, edi
cmp rax, qword [rbx + 0x278]
ja 0x18001eaa7
mov rcx, qword [rbx + 0x58]
mov eax, dword [rcx + 0x54]
test eax, eax
jle 0x18001ea6d
cmp eax, dword [rbx + 0x2b8]
jle 0x18001eaa7
mov eax, dword [rbx + 0x2bc]
shl eax, 6
cmp eax, dword [rbx + 0x2b8]
jg 0x18001eb43
xor r9d, r9d
mov dword [rsp + 0x20], 4
xor r8d, r8d
mov rcx, rbx
lea edx, [r9 + 2]
call fcn.18001c640
inc dword [rbx + 0x2bc]
jmp 0x18001eb3f
xor r9d, r9d
mov dword [rsp + 0x20], edi
xor r8d, r8d
mov rcx, rbx
lea edx, [r9 + 2]
call fcn.18001c640
cmp byte [0x18011bff0], dil
je 0x18001ead5
call fcn.1800187c0
mov rcx, rax
mov qword [rsp + 0x40], rax
jmp 0x18001eb00
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
jne 0x18001eafb
call fcn.1800187c0
mov rcx, rax
imul rcx, qword [0x18011c258]
mov qword [rsp + 0x40], rcx
jmp 0x18001eb00
mov rcx, qword [rsp + 0x40]
mov rax, qword [rbx + 0x58]
movsxd rdx, dword [rax + 0x50]
test edx, edx
jle 0x18001eb1c
mov rax, rdx
imul rax, qword [rbx + 0x270]
add rax, rcx
jmp 0x18001eb28
mov rax, qword [rbx + 0x290]
add rax, qword [rsp + 0x40]
mov qword [rbx + 0x278], rax
mov dword [rbx + 0x2b8], edi
mov dword [rbx + 0x2bc], 1
mov rcx, qword [rbx + 0x58]
cmp byte [rcx + 0x58], dil
je 0x18001eb5e
movsxd rax, dword [rcx + 0x5c]
imul rax, qword [rbx + 0x270]
mov rcx, qword [rbx + 0x2a0]
jmp 0x18001eb9a
mov ecx, dword [rbx + 0x80]
mov eax, dword [rbx + 0x7c]
movsxd r8, dword [rbx + 0x74]
lea eax, [rax + rcx*4]
mov rcx, r8
imul rcx, qword [rbx + 0x2b0]
imul eax, r8d
add eax, 0x2710
cdqe
imul rax, qword [rbx + 0x270]
cmp rax, rcx
cmovae rcx, rax
mov rax, qword [rbx + 0x2a0]
add rcx, rax
cmp qword [rsp + 0x40], rcx
jbe 0x18001ed0b
cmp dword [rbx + 0x74], 0x10
jle 0x18001ec37
mov rax, qword [rbx + 0x2a0]
mov rcx, qword [rsp + 0x40]
sub rcx, rax
imul rax, qword [rbx + 0x270], 0x4c4b40
cmp rcx, rax
jbe 0x18001ec37
mov rcx, qword [rbx + 0x2c8]
mov r8b, 1
mov byte [rbx + 0x6b], 1
mov rdx, rbx
mov byte [rbx + 0x6d], 1
mov dword [rbx + 0x70], 0x1e
mov rcx, qword [rcx + 8]
call fcn.180025280
mov rcx, rbx
call fcn.18001c5d0
lea r8, [rbx + 0x300]
mov byte [rsp + 0x20], 1
mov r9d, select
lea rcx, [0x18011c318]
mov rdx, rbx
call fcn.180022870
mov rcx, qword [0x18011c250]
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop rdi
ret
mov rax, qword [rbx + 0xf8]
cmp dword [rax + 0x3c], edi
jle 0x18001ece6
mov eax, dword [rbx + 0x138]
cmp eax, 0x7fffffff
je 0x18001ec57
lea edi, [rax + 1]
mov eax, dword [rbx + 0x130]
cmp edi, eax
je 0x18001ecbc
mov rdi, qword [rbx + 0x100]
mov edx, 0xffffffff
mov qword [rsp + 0x48], rsi
mov rcx, qword [rdi + 0x28]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov esi, dword [rdi + 0x1c]
cmp eax, 0xffffffff
je 0x18001ec8e
mov rcx, qword [rdi + 0x28]
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
test esi, esi
mov rsi, qword [rsp + 0x48]
jne 0x18001ecbc
mov r8d, dword [rbx + 0x138]
mov rcx, qword [rbx + 0x100]
mov edx, dword [rbx + 0x130]
call fcn.180022f30
add dword [rbx + 0x240], eax
add dword [rbx + 0x200], eax
mov rcx, qword [rbx + 0x58]
mov rax, qword [rcx]
call qword [rax + 0x28]
mov rcx, rbx
call fcn.18001c3e0
mov rcx, qword [rbx + 0x2c8]
mov r8b, 1
mov rdx, rbx
mov rcx, qword [rcx + 8]
call fcn.180025280
jmp 0x18001ecfc
xor r9d, r9d
mov dword [rsp + 0x20], edi
xor r8d, r8d
mov rcx, rbx
lea edx, [r9 + 1]
call fcn.18001c640
mov rax, qword [rsp + 0x40]
inc dword [rbx + 0x74]
mov qword [rbx + 0x2a0], rax
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop rdi
ret