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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, ecx
mov ebx, dword [edi + 0x154]
lea esi, [edi + 0x154]
test ebx, ebx
je case.0x10015bde.6
mov eax, dword [ebx + 0x50]
add eax, 0xfffffffe
cmp eax, 5
ja case.0x10015bde.6
jmp dword [eax*4 + 0x10015e70]
mov eax, dword [ebx + 0xc0]
test eax, eax
je case.0x10015bde.6
movd xmm0, dword [ebx + 0xc4]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
mulss xmm1, dword [0x10055298]
divss xmm1, xmm0
cvttss2si esi, xmm1
cmp esi, dword [edi + 0x1c4]
je case.0x10015bde.6
call fcn.100174b0
mov dword [edi + 0x1c4], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test dword [ebx + 0x4c], 0x220
jne 0x10015c40
mov byte [edi + 0x16], 1
lea ecx, [edi + 0x16c]
push esi
push dword [ecx + 0x10]
call fcn.10008680
mov dword [esi], 0
mov dword [edi + 0x1c0], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0xb0]
or eax, dword [ebx + 0xb4]
je case.0x10015bde.6
mov eax, dword [ebx + 0x4c]
shr eax, 9
test al, 1
je 0x10015c8a
push ebx
call fcn.10015090
jmp 0x10015c9c
mov dword [ebx + 0x50], 4
inc dword [edi + 0x1cc]
call fcn.100174b0
mov esi, dword [esi]
lea ecx, [esi + 0x38]
call fcn.10003810
push dword [esi + 0x38]
call dword [sym.imp.KERNEL32.dll_SetEvent]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x4c]
shr eax, 9
test al, 1
je 0x10015cc8
push ecx
call fcn.10015600
jmp 0x10015ccd
call fcn.100174b0
mov esi, dword [esi]
lea ecx, [esi + 0x38]
call fcn.10003810
push dword [esi + 0x38]
call dword [sym.imp.KERNEL32.dll_SetEvent]
lea esi, [edi + 0x154]
jmp 0x10015c40
mov esi, dword [ebx + 0xb0]
mov eax, esi
or eax, dword [ebx + 0xb4]
je case.0x10015bde.6
mov edx, dword [ebx + 0xbc]
mov ecx, dword [ebx + 0xb8]
call fcn.100493b0
mov edx, dword [ebx + 0xb4]
mov ecx, esi
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x10055298]
movss dword [ebp - 4], xmm0
call fcn.100493b0
movss xmm1, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
cvttss2si eax, xmm1
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x1c4]
je case.0x10015bde.6
mov ecx, dword [ebx + 0xb8]
mov esi, dword [edi + 0x1c0]
sub ecx, esi
mov edx, dword [ebx + 0xbc]
sbb edx, 0
call fcn.100493b0
addsd xmm0, qword [edi + 0x1b8]
movsd qword [edi + 0x1b8], xmm0
mov ecx, dword [ebx + 0xb8]
mov edx, dword [ebx + 0xbc]
sub ecx, esi
sbb edx, 0
call fcn.100493b0
addsd xmm0, qword [edi + 0x1a0]
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
movsd qword [edi + 0x1a0], xmm0
mov eax, dword [ebx + 0xb8]
mov dword [edi + 0x1c0], eax
mov eax, dword [ebp - 4]
mov dword [edi + 0x1c4], eax
mov eax, dword [0x1008db18]
or eax, dword [0x1008db1c]
jne 0x10015dda
push 0x1008db18
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0x1008db10
call esi
lea eax, [ebp - 8]
push eax
call esi
mov ecx, dword [ebp - 8]
sub ecx, dword [0x1008db10]
mov edx, dword [ebp - 4]
sbb edx, dword [0x1008db14]
call fcn.100493b0
mov edx, dword [0x1008db1c]
mov ecx, dword [0x1008db18]
movsd qword [ebp - 8], xmm0
call fcn.100493b0
movsd xmm2, qword [ebp - 8]
divsd xmm2, xmm0
movsd xmm1, qword [edi + 0x1a8]
addsd xmm1, qword [0x10055278]
comisd xmm2, xmm1
jbe 0x10015e4f
movsd xmm0, qword [edi + 0x1b8]
movsd qword [edi + 0x1b0], xmm0
xorps xmm0, xmm0
movsd qword [edi + 0x1a8], xmm2
movsd qword [edi + 0x1b8], xmm0
mov eax, dword [edi + 0x154]
mov eax, dword [eax + 0x4c]
shr eax, 9
test al, 1
jne case.0x10015bde.6
mov ecx, edi
call fcn.100174b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret