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

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x4b8
xor esi, esi
mov rbp, r8
mov rdi, rdx
mov rbx, rcx
cmp qword [rcx + 0x10], rsi
je 0x14000e30c
mov rax, qword [rcx + 0x10]
cmp dword [rax], esi
jne 0x14000e30c
mov rdx, qword [rax + 0x14]
mov r9, rax
mov r10, qword [rcx + 0x38]
mov eax, esi
mov r11d, esi
mov r8d, esi
cmp rdx, qword [r10]
mov rdx, qword [r9 + 0x1c]
setb al
seta r11b
sub r11d, eax
mov eax, esi
cmp rdx, qword [r10 + 8]
seta r8b
setb al
sub r8d, eax
test r11d, r11d
cmovne r8d, r11d
test r8d, r8d
jne 0x14000e30c
mov rdx, qword [rdi + 0x190]
mov r8, rbp
mov rcx, r9
call fcn.140003e30
test al, al
jne 0x14000e30c
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r8, rbx
mov dword [rbx + 0x18], 1
mov rcx, rdi
call fcn.14000d120
lock inc dword [0x14008cba0]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov al, 1
add rsp, 0x4b8
pop rdi
pop rsi
pop rbp
pop rbx
ret
or word [rbx], 0x20
lea rcx, [rsp + 0x4e0]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x14000e583
mov rax, qword [rsp + 0x4e0]
xor edx, edx
sub rax, qword [0x14008eac8]
mov r9, rbp
mov rcx, qword [rbx + 0x38]
imul rax, rax, 0xf4240
movups xmm0, xmmword [rcx]
movaps xmmword [rsp + 0x40], xmm0
mov rcx, qword [rbx + 8]
div qword [0x14008eac0]
mov rdx, qword [rdi + 0x190]
lea r8, [rcx + 0x2c]
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x4e8], r14
mov qword [rsp + 0x4b0], r15
mov r15, rax
add r15, qword [0x14008ead0]
mov dword [rsp + 0x20], esi
call fcn.140012fa0
lea rcx, [rsp + 0x4f8]
mov r14d, eax
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x14000e590
mov rax, qword [rsp + 0x4f8]
xor edx, edx
sub rax, qword [0x14008eac8]
imul rax, rax, 0xf4240
movaps xmmword [rsp + 0x4a0], xmm6
xorps xmm6, xmm6
div qword [0x14008eac0]
mov rcx, rax
sub rcx, r15
add rcx, qword [0x14008ead0]
js 0x14000e3ee
cvtsi2sd xmm6, rcx
jmp 0x14000e403
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm6, rax
addsd xmm6, xmm6
mov rdx, qword [rbx + 0x38]
lea rcx, [rsp + 0x78]
divsd xmm6, qword [0x140083220]
call fcn.14002c310
mov ecx, r14d
test r14d, r14d
je 0x14000e54d
sub ecx, 1
je 0x14000e516
sub ecx, 1
je 0x14000e502
cmp ecx, 1
jne 0x14000e573
mov rdx, rbp
mov rcx, rbx
call fcn.140041dc0
lea r8, str.cachehit
mov rdx, rbx
mov rcx, rbp
call fcn.14003a180
mov rdx, qword [rbx + 0x38]
lea rcx, [rsp + 0x50]
call fcn.14002c310
mov rax, qword [rbx + 8]
lea r8, str._s__CacheHit__s_
add rax, 4
lea rcx, [rsp + 0xa0]
mov edx, 0x400
movsxd r9, dword [rax]
add r9, rax
cmp dword [rax], esi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
cmove r9, rsi
call fcn.1400031a0
test eax, eax
jle 0x14000e4d3
cmp eax, 0x400
jae 0x14000e4d3
mov r8d, dword [rdi + 0x1d8]
lea rax, [rsp + 0xa0]
mov edx, dword [rdi + 0x1d4]
xor ecx, ecx
cvttsd2si r9d, xmm6
mov qword [rsp + 0x20], rax
call fcn.140039830
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r8, rbx
mov dword [rbx + 0x18], 3
mov rcx, rdi
call fcn.14000d120
lock inc dword [0x14008cba0]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov al, 1
jmp 0x14000e54f
lea r8, str.cachemiss
mov rdx, rbx
mov rcx, rbp
call fcn.14003a180
jmp 0x14000e54d
mov rax, qword [rbx + 8]
lea r8, str._s__CacheRead__s_
add rax, 4
mov ecx, 2
cvttsd2si edx, xmm6
movsxd r9, dword [rax]
sub esi, dword [rax]
add r9, rax
neg esi
sbb rax, rax
and r9, rax
lea rax, [rsp + 0x78]
mov qword [rsp + 0x20], rax
call fcn.140039710
xor al, al
movaps xmm6, xmmword [rsp + 0x4a0]
mov r14, qword [rsp + 0x4e8]
mov r15, qword [rsp + 0x4b0]
add rsp, 0x4b8
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov edx, r14d
lea rcx, str.Unexpected_cache_read_result__d
call fcn.140013920
int3
lea rcx, str.QueryPerformanceCounter_failed
call fcn.1400139a0
int3
lea rcx, str.QueryPerformanceCounter_failed
call fcn.1400139a0
int3