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

Disassembly:
push rbp
push rdi
push r15
sub rsp, 0x30
mov rdi, rcx
mov qword [rsp + 0x28], rsi
mov rsi, qword [0x14000f760]
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
imul rax, qword [rsp + 0x50], 0xf4240
inc qword [rsi + 0xa8]
lea r15, [rsi + 0x1b0]
cqo
mov rcx, r15
idiv qword [rsp + 0x58]
mov rbp, rax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp qword [rsi + 0x80], 0
jne 0x140004589
mov qword [rsi + 0x80], rbp
mov rcx, rbp
sub rcx, qword [rsi + 0x80]
cmp rcx, 0xf4240
jb 0x1400046cb
cmp qword [rsi + 0xd0], 0
mov qword [rsp + 0x20], r14
jne 0x1400045de
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
imul rax, qword [rsp + 0x50], 0xf4240
cqo
idiv qword [rsp + 0x58]
mov qword [rsi + 0xd0], rax
jmp 0x140004620
mov rcx, qword [rsi + 0xa8]
cmp rcx, 0x73
jae 0x1400045fe
movabs rax, 0xcccccccccccccccd
mul rcx
shr rdx, 2
jmp 0x140004603
mov edx, 0x17
inc dword [rsi + rdx*4 + 0xd8]
cmp byte [rdi + 0x2c5], 0
je 0x140004620
cmp byte [rdi + 0x7c], 0
je 0x140004620
inc dword [rsi + rdx*4 + 0x138]
imul rax, qword [rsi + 0xa8], 0xf4240
xor edx, edx
mov qword [rsi + 0xa8], 0
mov rcx, rbp
sub rcx, qword [rsi + 0x80]
div rcx
mov qword [rsi + 0x80], rbp
mov dword [rsi + 0x74], eax
movzx edx, byte [rdi + 0x7c]
test dl, dl
je 0x14000466f
mov ecx, dword [rsi + 0x78]
test ecx, ecx
je 0x14000466f
cmp ecx, eax
jle 0x14000466f
sub ecx, eax
cmp ecx, 8
jle 0x14000466f
inc dword [rdi + 0x2d8]
cmp byte [rdi + 0x2c5], 0
je 0x1400046c0
test dl, dl
je 0x1400046c0
lea rdx, [rsi + 0x74]
mov qword [rsp + 0x60], rbx
lea rcx, [rdi + 0x378]
call fcn.140001230
mov rax, qword [rdi + 0x380]
sub rax, qword [rdi + 0x378]
mov rbx, qword [rsp + 0x60]
sar rax, 2
cmp rax, 0xbb8
jbe 0x1400046c0
lea rcx, [rdi + 0x2c8]
mov byte [rdi + 0x7c], 0
call fcn.1400010b0
mov eax, dword [rsi + 0x74]
mov r14, qword [rsp + 0x20]
mov dword [rsi + 0x78], eax
cmp byte [rdi + 0x2c4], 0
mov rsi, qword [rsp + 0x28]
je 0x1400049c1
cmp byte [rdi + 0x7c], 0
je 0x1400049c1
cmp qword [rdi + 0x98], 0
jne 0x14000471e
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
imul rax, qword [rsp + 0x50], 0xf4240
cqo
idiv qword [rsp + 0x58]
mov qword [rdi + 0x98], rax
mov rax, rbp
sub rax, qword [rdi + 0x98]
cmp rax, 0x989680
jb 0x1400049c1
cmp qword [rdi + 0xa0], 0
jne 0x140004772
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rsp + 0x58]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
imul rax, qword [rsp + 0x50], 0xf4240
mov byte [rdi + 0x2c5], 1
cqo
idiv qword [rsp + 0x58]
mov qword [rdi + 0xa0], rax
mov rax, qword [rdi + 0x90]
xorps xmm2, xmm2
movaps xmm1, xmm2
test rax, rax
je 0x1400049b2
movsd xmm4, qword [0x14000c690]
mov rcx, rbp
sub rcx, rax
xorps xmm1, xmm1
movabs rax, 0x624dd2f1a9fbe77
mul rcx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 9
cvtsi2sd xmm1, rcx
test rcx, rcx
jns 0x1400047c1
addsd xmm1, xmm4
inc qword [rdi + 0x368]
xor edx, edx
movsd xmm3, qword [0x14000c688]
movaps xmm0, xmm1
comisd xmm1, xmm3
mov rcx, qword [rdi + 0x368]
jb 0x1400047f9
subsd xmm0, xmm3
comisd xmm0, xmm3
jae 0x1400047f9
movabs rax, 0x8000000000000000
mov rdx, rax
cvttsd2si rax, xmm0
xorps xmm0, xmm0
add rax, rdx
add qword [rdi + 0x370], rax
mov rax, qword [rdi + 0x370]
cvtsi2sd xmm0, rax
test rax, rax
jns 0x140004820
addsd xmm0, xmm4
xorps xmm3, xmm3
cvtsi2sd xmm3, rcx
test rcx, rcx
jns 0x140004831
addsd xmm3, xmm4
movsd xmm4, qword [0x14000c678]
comisd xmm1, xmm4
divsd xmm0, xmm3
movsd qword [rdi + 0x310], xmm0
jbe 0x140004851
inc dword [rdi + 0x318]
movsd xmm3, qword [rdi + 0x88]
ucomisd xmm3, xmm2
jp 0x140004861
je 0x140004874
movaps xmm0, xmm1
subsd xmm0, xmm3
comisd xmm0, xmm4
jbe 0x140004874
inc dword [rdi + 0x31c]
movsd xmm3, qword [rdi + 0xb8]
ucomisd xmm3, xmm2
jp 0x140004884
je 0x1400048a4
movsd xmm0, qword [rdi + 0xc0]
ucomisd xmm0, xmm2
jp 0x140004894
je 0x1400048a4
movsd xmm4, qword [rdi + 0xc8]
ucomisd xmm4, xmm2
jp 0x1400048fb
jne 0x1400048fb
movsd xmm0, qword [rdi + 0xc8]
ucomisd xmm0, xmm2
jp 0x1400048c1
jne 0x1400048c1
movsd qword [rdi + 0xc8], xmm1
jmp 0x1400049b2
movsd xmm0, qword [rdi + 0xc0]
ucomisd xmm0, xmm2
jp 0x1400048de
jne 0x1400048de
movsd qword [rdi + 0xc0], xmm1
jmp 0x1400049b2
ucomisd xmm3, xmm2
jp 0x1400049b2
jne 0x1400049b2
movsd qword [rdi + 0xb8], xmm1
jmp 0x1400049b2
movsd qword [rdi + 0xb8], xmm0
addsd xmm0, xmm3
movsd qword [rdi + 0xc0], xmm4
movsd qword [rdi + 0xc8], xmm1
addsd xmm0, xmm4
divsd xmm0, qword [0x14000c668]
addsd xmm0, xmm0
comisd xmm1, xmm0
jbe 0x1400049b2
comisd xmm1, xmmword [0x14000c670]
jbe 0x1400049b2
mov eax, dword [rdi + 0x300]
cvttsd2si ecx, xmm1
cmp eax, ecx
cmovl eax, ecx
cmp dword [rdi + 0x304], 0
mov dword [rdi + 0x300], eax
jne 0x14000495f
mov dword [rdi + 0x304], ecx
mov eax, dword [rdi + 0x304]
cmp eax, ecx
cmovg eax, ecx
add dword [rdi + 0x308], ecx
comisd xmm1, xmmword [0x14000c680]
mov dword [rdi + 0x304], eax
jbe 0x14000499a
movsd xmm0, qword [rdi + 0x2e8]
addsd xmm0, qword [0x14000c660]
movsd qword [rdi + 0x2e8], xmm0
jmp 0x1400049b2
movsd xmm0, qword [rdi + 0x2e0]
addsd xmm0, qword [0x14000c660]
movsd qword [rdi + 0x2e0], xmm0
movsd qword [rdi + 0x88], xmm1
mov qword [rdi + 0x90], rbp
mov rcx, r15
add rsp, 0x30
pop r15
pop rdi
pop rbp
jmp qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
invalid
neg ecx
jb 0x1400182d3
push rdi
fnstenv [rdx - 1]
neg ecx
jb 0x1400182d7
push rbp
cmc
shr byte [rbp - 1], 1
out dx, eax
mov ebp, 0xcdf3ff5e
imul edi, edi, 0xff68caf2
invalid
cmc
shl byte [rdi - 1], 1
cmc
shr byte [rax - 1], 1
cmc
shr dword [rcx - 1], 1
not dl
push 0xffffffffffffffff
not bl
imul edi, edi, 0xfffffff6
invalid
je 0x140018a9f
push rbp
cmc
fdiv dword [rbx - 1]
cmc
xlatb
jae 0x140018aa7
push rbp
cmc
invalid
push rsi
int 0x50
push rbp
int3
outsb dx, byte [rsi]
invalid
loop 0x140018bb1
mov ah, byte [rbx]
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
invalid
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
call rbp
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
call rbp
add byte [rsi], 0xf5
fstp xword [rax - 0x3b]
cmc
fidivr dword [rax - 1]
cmc
fidiv dword [rdi - 1]
cmc
fnstenv [rsi - 1]
cmc
fnstenv [rsi - 1]
cmc
fdiv dword [rbp - 1]
cmc
fdiv dword [rbp - 1]
cmc
fdiv dword [rdi + rdi*8 - 0xb]
fdiv dword [rbp - 1]
cmc
fdiv dword [rbp - 1]
cmc
fnstenv [rsi - 1]
cmc
fidiv dword [rdi - 1]
cmc
fstp xword [rax - 1]
cmc
fdivr qword [rdx - 1]
cmc
fnstsw word [rdi + rdi*8 - 0xa]
fistp qword [rsi - 1]
mul al
jg 0x140018bd7
push rsi
loope 0x140018b5c
mul cl
cmp edi, 0xff82e2f6
mul dl
cmp edi, 0xfffffff6
push rsi
loop 0x140018b61
push rsi
loop case.0x1400049cc.6
push rsi
loop 0x140018b6b
push rsi
loop 0x140018b70
push rsi
loop 0x140018b74
clc
invalid