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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
push ebx
push esi
mov esi, dword [ebp + 8]
xor ecx, ecx
cmp dword [esi + 0xc], 0x10
push edi
mov dword [esp + 0x40], ecx
jne 0x4ad8af
movsx eax, word [esi + 0x9c]
movsx edx, word [esi + 0x9e]
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
mov dword [esp + 0x3c], edx
fst qword [esp + 0x60]
fild dword [esp + 0x3c]
jmp 0x4ad8bf
fld qword [esi + 0xf0]
fst qword [esp + 0x60]
fld qword [esi + 0xf8]
fst qword [esp + 0x68]
mov ebx, 1
fld qword [ebp + 0xc]
mov edi, 0x14
fsubrp st(2)
mov dword [esi + 0x8c], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], edi
fsubr qword [ebp + 0x14]
fld qword [0x6511d8]
fdiv st(2), st(0)
fxch st(2)
fstp qword [esp + 0x70]
fdivrp st(1)
fstp qword [esp + 0x78]
jmp 0x4ad906
mov edi, dword [esp + 0x3c]
xor ecx, ecx
cmp edi, ecx
je 0x4ad991
mov eax, dword [0x692a7c]
cmp eax, ecx
jne 0x4ad973
push 0x685a18
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x4ad949
lea eax, [esp + 0x48]
push eax
mov dword [0x692a7c], 1
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea esi, [esp + 0x48]
call fcn.0053b1d0
mov esi, dword [ebp + 8]
jmp 0x4ad999
mov dword [0x692a7c], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea esi, [esp + 0x48]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 0
call fcn.0053b1d0
mov esi, dword [ebp + 8]
jmp 0x4ad999
cmp eax, 1
jne 0x4ad953
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea esi, [esp + 0x48]
call fcn.0053b1d0
mov esi, dword [ebp + 8]
jmp 0x4ad999
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], ecx
cmp ebx, 0x19
jge 0x4ad9ba
fild dword [esp + 0x38]
fld qword [esp + 0x70]
fmul st(1)
fadd qword [esp + 0x60]
fstp qword [esp + 0x50]
fmul qword [esp + 0x78]
fadd qword [esp + 0x68]
jmp 0x4ad9c4
fld qword [ebp + 0xc]
fstp qword [esp + 0x50]
fld qword [ebp + 0x14]
mov eax, esi
fstp qword [esp + 0x58]
call fcn.0049b260
fld qword [esp + 0x58]
sub esp, 0x10
cmp dword [esi + 0xc], 0x10
fstp qword [esp + 8]
fld qword [esp + 0x60]
fstp qword [esp]
jne 0x4ad9fa
mov ebx, esi
call fcn.0048b430
mov ebx, dword [esp + 0x48]
mov esi, dword [ebp + 8]
add esp, 0x10
jmp 0x4ada0e
mov eax, dword [esi + 0xcc]
push 1
xor edx, edx
mov ecx, esi
call fcn.004457e0
add esp, 0x14
lea ecx, [esp + 0x44]
push ecx
mov eax, esi
call fcn.004141a0
add esp, 4
test eax, eax
je 0x4ada35
mov edi, dword [esp + 0x44]
mov eax, edi
call fcn.00431ae0
push edi
call fcn.005ce619
add esp, 4
mov dword [0x691950], 0
call fcn.00454690
cmp dword [0x691950], 0
je 0x4ada62
cmp dword [0x69194c], 0xfa
jge 0x4ada72
add dword [0x69194c], 0x1e
jmp 0x4ada72
cmp dword [0x69194c], 0
je 0x4ada72
sub dword [0x69194c], 0xf
mov eax, dword [0x690c9c]
test eax, eax
je 0x4adabf
cmp dword [0x691980], 0
jne 0x4adabf
mov dx, word [eax + 0x182]
cmp dx, word [eax + 0x17e]
jl 0x4adabf
mov cx, word [eax + 0x180]
cmp cx, word [eax + 0x17c]
jl 0x4adabf
mov eax, dword [eax + 0x3a0]
test eax, eax
je 0x4adabf
mov ebx, 1
call fcn.004ecea0
mov ebx, dword [esp + 0x38]
mov esi, dword [ebp + 8]
cmp ebx, 0x19
jge 0x4adaf2
push 3
call fcn.004f0110
add esp, 4
test eax, eax
jne 0x4adb1c
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
push edx
push eax
call fcn.0053b310
add esp, 8
test eax, eax
je 0x4adaf2
add dword [esp + 0x40], 1
add dword [esp + 0x3c], 0x14
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push ecx
push edx
call fcn.0053b310
add esp, 8
test eax, eax
je 0x4adaf2
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x4adb28
cmp ebx, 0x19
jge 0x4adb28
add ebx, eax
cmp ebx, 0x19
jl 0x4adb28
mov dword [esp + 0x38], 0x18
mov ebx, dword [esp + 0x38]
add ebx, 1
cmp ebx, 0x19
mov dword [esp + 0x38], ebx
jle 0x4ad900
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret