Function at 0x66fb80
Capabilities:
Check for time delay via gettickcount

Disassembly:
sub esp, 0x42c
push ebx
push ebp
mov ebp, dword [esp + 0x440]
push esi
mov esi, dword [ebp]
test esi, esi
push edi
je 0x66fba3
cmp byte [esi + 0xd], 0
setne al
test al, al
je 0x66fbbd
mov eax, dword [esp + 0x440]
mov dword [eax], 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x42c
ret 0x10
mov eax, dword [esp + 0x44c]
mov edi, dword [esi + 4]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x18]
call fcn.005d4830
mov edx, dword [esi]
mov edi, eax
mov eax, dword [edx + 8]
mov ecx, esi
mov dword [esp + 0x18], edi
call eax
cmp edi, eax
je 0x66fe40
mov esi, ebp
call fcn.00405350
test al, al
jne 0x66fe40
mov eax, dword [ebp]
test eax, eax
je 0x66fc06
mov bl, byte [eax + 8]
jmp 0x66fc08
mov bl, 1
movzx eax, bl
xor ecx, ecx
shl eax, 0xd
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0069c0de
add esp, 4
push 0x2000
mov dword [esp + 0x18], eax
push eax
mov al, bl
call fcn.004022e0
xor edi, edi
lea ebx, [ebx]
mov ecx, dword [ebp]
test ecx, ecx
je 0x66fc50
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
jmp 0x66fc52
xor eax, eax
mov esi, dword [esp + 0x18]
cmp eax, esi
jge 0x66fdc9
mov ecx, dword [esp + 0x444]
mov eax, dword [ecx]
mov edx, dword [eax]
call edx
test al, al
jne 0x66fd9c
mov ecx, dword [ebp]
test ecx, ecx
je 0x66fc83
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
jmp 0x66fc85
xor eax, eax
mov ecx, esi
sub ecx, eax
cmp ecx, 0x2000
mov dword [esp + 0x1c], 0x2000
jg 0x66fc9d
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp]
test ecx, ecx
je 0x66fca9
mov esi, dword [ecx + 4]
jmp 0x66fcae
mov esi, 0xac44
test ecx, ecx
je 0x66fcbb
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
jmp 0x66fcbd
xor eax, eax
test esi, esi
jg 0x66fccb
mov dword [esp + 0x20], 0
jmp 0x66fce7
cdq
idiv esi
mov ecx, eax
mov eax, edx
imul ecx, ecx, 0x3e8
imul eax, eax, 0x3e8
cdq
idiv esi
add eax, ecx
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
mov ebx, dword [esp + 0x444]
mov eax, dword [ebx]
mov edx, dword [eax + 0x24]
fidiv dword [esp + 0x44c]
sub esp, 8
mov ecx, ebx
fstp qword [esp]
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, edi
jb 0x66fd62
lea edi, [esp + 0x24]
mov eax, ebp
call fcn.005fcd20
lea ecx, [esp + 0x28]
call fcn.005ebfd0
lea eax, [esp + 0x28]
push eax
push str.Reading_audio_track_at_position:
push 0x6c8fec
mov esi, 0x104
lea edi, [esp + 0x23c]
call fcn.004af0d0
mov edx, dword [ebx]
mov edx, dword [edx + 0x20]
add esp, 0xc
push 0
mov eax, edi
push eax
mov ecx, ebx
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
add edi, 0x64
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x66fdc5
mov ecx, dword [ebp]
test ecx, ecx
je 0x66fd83
mov edx, dword [ecx]
mov edx, dword [edx + 4]
push eax
mov eax, dword [esp + 0x18]
push eax
call edx
jmp 0x66fc40
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x18]
push 0
push eax
call fcn.006a1300
add esp, 0xc
jmp 0x66fc40
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x440]
push ecx
mov dword [esi], 1
call fcn.0069c8fa
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x42c
ret 0x10
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x444]
fld1
mov edx, dword [ecx]
mov eax, dword [edx + 0x24]
sub esp, 8
fstp qword [esp]
call eax
mov ecx, dword [ebp]
test ecx, ecx
je 0x66fdef
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
jmp 0x66fdf1
xor eax, eax
cmp eax, esi
mov esi, dword [esp + 0x440]
jge 0x66fe1e
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esi], 2
call fcn.0069c8fa
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x42c
ret 0x10
mov edx, dword [esp + 0x14]
push edx
mov dword [esi], 0
call fcn.0069c8fa
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x42c
ret 0x10
mov eax, dword [esp + 0x440]
pop edi
pop esi
pop ebp
mov dword [eax], 0
pop ebx
add esp, 0x42c
ret 0x10