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

Disassembly:
sub esp, 8
push ebx
push esi
mov esi, ecx
xor ebx, ebx
mov al, byte [esi + 0xfc]
mov dword [esi + 0x44], ebx
cmp al, bl
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
je 0x46d004
mov dword [0x5d1400], 0x34
mov dword [0x5d1404], 0xff
mov eax, dword [esi]
push 0x5d1400
push eax
call dword [sym.imp.WINMM.dll_joyGetPosEx]
test eax, eax
jne 0x46d004
mov ecx, dword [esi + 0x24]
mov edx, dword [0x5d1408]
add ecx, edx
mov edx, dword [esi + 0x28]
mov eax, dword [0x5d140c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
add edx, eax
fild qword [esp + 8]
mov eax, dword [esi + 0x2c]
mov ecx, dword [0x5d1410]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
fmul dword [esi + 0x34]
add eax, ecx
mov ecx, dword [esi + 0x30]
fsub dword [0x5158ec]
fild qword [esp + 8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
fmul dword [esi + 0x38]
fsub dword [0x5158ec]
fild qword [esp + 8]
mov dword [esp + 0xc], ebx
fmul dword [esi + 0x3c]
fstp dword [esi + 0x1c]
add ecx, dword [0x5d1414]
mov dword [esp + 8], ecx
fild qword [esp + 8]
fmul dword [esi + 0x40]
fstp dword [esi + 0x20]
fld dword [esi + 0xc]
fchs
fld st(1)
fcompp
fnstsw ax
test ah, 1
je 0x46ce4c
fadd dword [esi + 0xc]
fmul dword [esi + 0x10]
fstp dword [esi + 0x18]
jmp 0x46ce63
fcom dword [esi + 0xc]
fnstsw ax
test ah, 0x41
jne 0x46ce61
fsub dword [esi + 0xc]
fmul dword [esi + 0x10]
fstp dword [esi + 0x18]
jmp 0x46ce63
fstp st(0)
fld dword [esi + 4]
fchs
fld st(1)
fcompp
fnstsw ax
test ah, 1
je 0x46ce7e
fadd dword [esi + 4]
fmul dword [esi + 8]
fstp dword [esi + 0x14]
jmp 0x46ce95
fcom dword [esi + 4]
fnstsw ax
test ah, 0x41
jne 0x46ce93
fsub dword [esi + 4]
fmul dword [esi + 8]
fstp dword [esi + 0x14]
jmp 0x46ce95
fstp st(0)
cmp dword [esi + 0x58], ebx
jne 0x46ceb3
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
mov dword [esi + 0x50], edx
mov dword [esi + 0x54], eax
call sub.KERNEL32.dll_GetTickCount
sub eax, 0x7530
mov dword [esi + 0x58], eax
fld dword [esi + 0x14]
fsub dword [esi + 0x50]
fabs
fcomp qword [str.ffffff]
fnstsw ax
test ah, 0x41
je 0x46cedd
fld dword [esi + 0x18]
fsub dword [esi + 0x54]
fabs
fcomp qword [str.ffffff]
fnstsw ax
test ah, 0x41
jne 0x46cef1
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
mov dword [esi + 0x50], ecx
mov dword [esi + 0x54], edx
call sub.KERNEL32.dll_GetTickCount
mov dword [esi + 0x58], eax
call sub.KERNEL32.dll_GetTickCount
sub eax, dword [esi + 0x58]
cmp eax, 0x7530
jbe 0x46cf06
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
fld dword [esi + 0x18]
fcomp dword [0x5158dc]
fnstsw ax
test ah, 1
je 0x46cf20
mov eax, dword [esi + 0x44]
or eax, 0x40000000
jmp 0x46cf38
fld dword [esi + 0x18]
fcomp dword [0x5158dc]
fnstsw ax
test ah, 0x41
jne 0x46cf3b
mov eax, dword [esi + 0x44]
or eax, 0x80000000
mov dword [esi + 0x44], eax
fld dword [esi + 0x14]
fcomp dword [0x5158dc]
fnstsw ax
test ah, 1
je 0x46cf55
mov eax, dword [esi + 0x44]
or eax, 0x10000000
jmp 0x46cf6d
fld dword [esi + 0x14]
fcomp dword [0x5158dc]
fnstsw ax
test ah, 0x41
jne 0x46cf70
mov eax, dword [esi + 0x44]
or eax, 0x20000000
mov dword [esi + 0x44], eax
mov eax, dword [0x5d1420]
mov ebx, dword [esi + 0x44]
and eax, 0xffffff
or ebx, eax
mov dword [esi + 0x44], ebx
mov eax, dword [0x5d1428]
cmp eax, 0xffff
mov ecx, ebx
je 0x46d004
cmp eax, 0x6f54
jbe 0x46cf9e
cmp eax, 0x8ca0
jbe 0x46cfa5
cmp eax, 0x1d4c
jae 0x46cfb3
or ecx, 0x4000000
mov dword [esi + 0x44], ecx
mov eax, dword [0x5d1428]
cmp eax, 0x5dc
jbe 0x46cfd1
cmp eax, 0x4074
jae 0x46cfd1
mov eax, dword [esi + 0x44]
or eax, 0x2000000
mov dword [esi + 0x44], eax
mov eax, dword [0x5d1428]
cmp eax, 0x2904
jbe 0x46cfef
cmp eax, 0x639c
jae 0x46cfef
mov eax, dword [esi + 0x44]
or eax, 0x8000000
mov dword [esi + 0x44], eax
mov eax, dword [0x5d1428]
cmp eax, 0x4c2c
jbe 0x46d004
cmp eax, 0x86c4
jae 0x46d004
or dword [esi + 0x44], 0x1000000
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x4c]
not ecx
or edx, ecx
mov ecx, dword [esi + 0x44]
mov eax, edx
mov dword [esi + 0x4c], edx
and ecx, eax
mov dword [esi + 0x44], ecx
pop esi
mov eax, ecx
pop ebx
add esp, 8
ret