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

Disassembly:
push ebp
mov ebp, esp
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov dword [esp + 0x54], 0
cmp dword [esp + 0x54], 5
jge 0x402b65
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
xorps xmm0, xmm0
movsd qword [esp + 0x68], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x58], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x60], xmm0
mov dword [esp + 0x74], 0
mov dword [esp + 0x50], 0
cmp dword [esp + 0x50], 0x64
jge 0x402b40
lea eax, [esp + 0x88]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
sub esp, 4
mov dword [esp + 0x4c], 0
cmp dword [esp + 0x4c], 0xc8
jge 0x402931
fyl2xp1
mov eax, dword [esp + 0x4c]
add eax, 1
mov dword [esp + 0x4c], eax
jmp 0x402911
mov eax, esp
lea ecx, [esp + 0x80]
mov dword [eax], ecx
mov eax, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
call eax
sub esp, 4
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x84]
mov esi, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
sub edx, esi
movd xmm0, edx
sbb eax, ecx
movd xmm1, eax
punpckldq xmm0, xmm1
movlpd qword [esp + 0x20], xmm0
fild qword [esp + 0x20]
fstp qword [esp + 0x18]
movsd xmm0, qword [esp + 0x18]
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0x40]
addsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x68], xmm0
lea eax, [esp + 0x88]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
sub esp, 4
mov dword [esp + 0x3c], 0
cmp dword [esp + 0x3c], 0xc8
jge 0x4029e3
push eax
push ebx
push ecx
push edx
xor eax, eax
cpuid
pop edx
pop ecx
pop ebx
pop eax
mov eax, dword [esp + 0x3c]
add eax, 1
mov dword [esp + 0x3c], eax
jmp 0x4029b9
mov eax, esp
lea ecx, [esp + 0x80]
mov dword [eax], ecx
mov eax, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
call eax
sub esp, 4
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x84]
mov esi, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
sub edx, esi
movd xmm0, edx
sbb eax, ecx
movd xmm1, eax
punpckldq xmm0, xmm1
movlpd qword [esp + 0x10], xmm0
fild qword [esp + 0x10]
fstp qword [esp + 8]
movsd xmm0, qword [esp + 8]
movsd qword [esp + 0x30], xmm0
movsd xmm0, qword [esp + 0x30]
addsd xmm0, qword [esp + 0x58]
movsd qword [esp + 0x58], xmm0
movsd xmm0, qword [esp + 0x30]
divsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [str.333333]
ucomisd xmm0, xmm1
jbe 0x402adb
movsd xmm0, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x60]
mov eax, dword [esp + 0x50]
add eax, 1
cvtsi2sd xmm1, eax
divsd xmm2, xmm1
movsd xmm1, qword [0x438058]
mulsd xmm1, xmm2
ucomisd xmm0, xmm1
jbe 0x402ad6
mov dword [esp], 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
sub esp, 4
mov eax, dword [esp + 0x50]
add eax, 0xffffffff
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
add eax, 1
mov dword [esp + 0x74], eax
jmp 0x402b30
jmp 0x402adb
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [str.333333]
ucomisd xmm0, xmm1
jbe 0x402b03
mov eax, dword [esp + 0x78]
add eax, 1
mov dword [esp + 0x78], eax
jmp 0x402b0e
mov eax, dword [esp + 0x7c]
add eax, 1
mov dword [esp + 0x7c], eax
movsd xmm0, qword [esp + 0x28]
addsd xmm0, qword [esp + 0x60]
movsd qword [esp + 0x60], xmm0
mov dword [esp], 5
call dword [sym.imp.KERNEL32.dll_Sleep]
sub esp, 4
mov eax, dword [esp + 0x50]
add eax, 1
mov dword [esp + 0x50], eax
jmp 0x4028eb
cmp dword [esp + 0x74], 0xa
jg 0x402b50
jmp 0x402b65
jmp 0x402b55
mov eax, dword [esp + 0x54]
add eax, 1
mov dword [esp + 0x54], eax
jmp 0x4028a5
mov eax, dword [esp + 0x7c]
lea esp, [ebp - 4]
pop esi
pop ebp
ret