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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
push edi
mov edi, ecx
cmp byte [edi + 0x4d9], 0
je 0x54610c
mov eax, dword [edi]
call dword [eax + 0xa8]
mov cl, byte [edi + 0x4ed]
test cl, cl
jne 0x54615a
cmp byte [edi + 0x580], cl
je 0x54615a
cmp byte [edi + 0x439], cl
jne 0x54615a
cmp byte [edi + 0x581], cl
jne 0x54615a
cmp byte [edi + 0x33a], cl
je 0x546146
cmp byte [edi + 0x590], cl
je 0x54615a
cmp byte [edi + 0x591], cl
jne 0x54615a
mov edx, dword [edi + 0x434]
movsd xmm2, qword [edi + 0x470]
mov byte [ebp - 1], 1
jmp 0x546175
cmp byte [edi + 0x580], 0
mov edx, dword [edi + 0x434]
movsd xmm2, qword [edi + 0x470]
mov byte [ebp - 1], 0
je 0x5461b3
mov eax, dword [edi + 0x57c]
movsd xmm1, qword [0x5e2b88]
movaps xmm3, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
imul eax, edx
divsd xmm3, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm3, xmm2
divsd xmm1, xmm0
movsd qword [ebp - 0x18], xmm3
cvtpd2ps xmm0, xmm1
cvtps2pd xmm0, xmm0
jmp 0x5461d0
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mov byte [ebp - 1], 0
divsd xmm0, xmm2
movsd qword [ebp - 0x18], xmm0
movsd xmm0, qword [0x5db028]
movsd qword [ebp - 0x20], xmm0
test cl, cl
je 0x54638d
mov eax, dword [edi + 0x464]
cmp eax, dword [edi + 0x47c]
jl 0x5461f8
cmp byte [edi + 0x480], 0
je 0x546366
cmp byte [edi + 0x418], 0
jne 0x54621d
cmp byte [edi + 0x481], 0
jne 0x54621d
mov eax, dword [edi]
mov ecx, edi
push 1
mov byte [edi + 0x418], 1
call dword [eax + 0xf8]
mov eax, dword fs:[0x2c]
mov ecx, dword [0x668d98]
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x668354]
cmp eax, dword [ecx + 4]
jg 0x5466c8
lea ecx, [edi + 0x481]
mov esi, ecx
nop dword [eax + eax]
mov eax, dword [edi + 0x464]
cmp eax, dword [edi + 0x47c]
jl 0x54626d
cmp byte [edi + 0x480], 0
mov esi, ecx
je 0x546366
push 0
mov ecx, edi
call fcn.0053d310
mov eax, dword [edi]
mov ecx, edi
mov ebx, dword [edi + 0x464]
mov eax, dword [eax + 0x24]
call eax
test al, al
je 0x546323
movsd xmm0, qword [ebp - 0x20]
mov ecx, edi
addsd xmm0, qword [edi + 0x440]
subsd xmm0, qword [0x5db028]
movsd qword [edi + 0x440], xmm0
call fcn.00547620
movsd xmm0, qword [edi + 0x440]
comisd xmm0, xmmword [0x5db028]
jb 0x546300
mov ecx, edi
call fcn.005472e0
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x24]
call eax
test al, al
je 0x546300
mov ecx, edi
call fcn.00547620
movsd xmm0, qword [edi + 0x440]
subsd xmm0, qword [0x5db028]
comisd xmm0, xmmword [0x5db028]
movsd qword [edi + 0x440], xmm0
jae 0x5462c3
movsd xmm0, qword [ebp - 0x20]
mov eax, dword [edi]
cvtpd2ps xmm0, xmm0
push ecx
mov ecx, edi
movss dword [esp], xmm0
call dword [eax + 0x28]
mov ecx, edi
call fcn.00547620
lea esi, [edi + 0x481]
cmp ebx, dword [edi + 0x464]
je 0x5466bd
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
sub eax, dword [0x668350]
cmp eax, 0x3e8
jae 0x546469
cmp byte [edi + 0x481], 0
lea esi, [edi + 0x481]
jne 0x546469
lea ecx, [edi + 0x481]
jmp 0x546250
cmp byte [edi + 0x418], 0
je 0x54638d
mov ecx, dword [edi + 0x494]
mov byte [edi + 0x418], 0
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax + 0xfc]
cmp byte [edi + 0x478], 0
jne 0x5466b6
movsd xmm0, qword [edi + 0x470]
xorps xmm1, xmm1
comisd xmm0, xmm1
movsd qword [ebp - 0x28], xmm1
jbe 0x5466b6
mov eax, dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [ebp - 0x10], eax
call eax
xor ebx, ebx
mov dword [ebp - 0xc], eax
cmp byte [ebp - 1], bl
jne 0x5463cf
mov ecx, edi
call fcn.0054c360
mov eax, dword [edi + 0x468]
mov edx, dword [sym.imp.KERNEL32.dll_Sleep]
mov cl, byte [ebp + 8]
mov dword [ebp - 8], edx
cmp eax, 1
jne 0x54653f
movsd xmm0, qword [edi + 0x470]
sub esp, 8
mulsd xmm0, qword [0x5e2780]
inc dword [edi + 0x430]
movsd qword [ebp - 0x28], xmm0
fld qword [ebp - 0x28]
fstp qword [esp]
call fcn.005b58b0
fstp qword [ebp - 0x28]
cvttsd2si eax, qword [ebp - 0x28]
add esp, 8
cmp dword [edi + 0x430], eax
jl 0x546432
cmp byte [edi + 0x4d7], bl
jne 0x54662c
cmp byte [ebp - 1], bl
je 0x546488
cmp byte [edi + 0x43a], bl
je 0x54649f
movsd xmm2, qword [ebp - 0x18]
movaps xmm0, xmm2
mulsd xmm0, qword [0x5da760]
cvttsd2si eax, xmm0
movsd xmm0, qword [edi + 0x448]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
comisd xmm0, xmm1
jmp 0x546499
mov byte [esi], 0
call ebx
mov dword [0x668350], eax
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0x16c]
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4
movsd xmm0, qword [edi + 0x448]
movsd xmm2, qword [ebp - 0x18]
comisd xmm0, xmm2
jb 0x546631
cmp byte [edi + 0x4ed], bl
jne 0x54651c
movsd xmm0, qword [edi + 0x470]
ucomisd xmm0, qword [0x5db028]
lahf
test ah, 0x44
jp 0x54651c
mov ecx, dword [edi + 0x434]
mov esi, dword [edi + 0x58c]
inc esi
mov dword [edi + 0x58c], esi
lea eax, [ecx + 0x3e7]
cdq
idiv ecx
cmp esi, eax
jb 0x54651c
mov esi, dword [ebp - 0xc]
mov eax, esi
sub eax, dword [edi + 0x588]
cmp eax, 0x320
ja 0x54650a
mov eax, dword [edi + 0x584]
inc eax
mov dword [edi + 0x584], eax
cmp eax, 3
jl 0x546510
mov byte [edi + 0x581], 1
jmp 0x546510
mov dword [edi + 0x584], ebx
mov dword [edi + 0x588], esi
mov dword [edi + 0x58c], ebx
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x24]
call eax
test al, al
je 0x546533
mov dword [edi + 0x468], 2
mov byte [edi + 0x43a], 1
jmp 0x54667a
cmp eax, 2
jne 0x546625
movsd xmm0, qword [ebp - 0x20]
mov ecx, edi
addsd xmm0, qword [edi + 0x440]
mov dword [edi + 0x468], 3
subsd xmm0, qword [0x5db028]
movsd qword [edi + 0x440], xmm0
call fcn.00547620
movsd xmm0, qword [edi + 0x440]
comisd xmm0, xmmword [0x5db028]
jb 0x5465cb
mov ecx, edi
call fcn.005472e0
mov eax, dword [edi]
mov ecx, edi
inc dword [edi + 0x430]
mov eax, dword [eax + 0x24]
call eax
test al, al
je 0x5465cb
mov ecx, edi
call fcn.00547620
movsd xmm0, qword [edi + 0x440]
subsd xmm0, qword [0x5db028]
comisd xmm0, xmmword [0x5db028]
movsd qword [edi + 0x440], xmm0
jae 0x546588
movsd xmm0, qword [ebp - 0x20]
mov eax, dword [edi]
cvtpd2ps xmm0, xmm0
push ecx
mov ecx, edi
movss dword [esp], xmm0
call dword [eax + 0x28]
mov ecx, edi
call fcn.00547620
movsd xmm0, qword [edi + 0x448]
subsd xmm0, qword [ebp - 0x18]
movsd xmm1, qword [ebp - 0x28]
cmp byte [ebp - 1], bl
je 0x54660b
subsd xmm0, qword [0x5e81c0]
maxsd xmm0, xmm1
movsd qword [edi + 0x448], xmm0
cmp dword [edi + 0x9c], ebx
jle 0x54667a
movsd qword [edi + 0x448], xmm1
jmp 0x54667a
movsd xmm2, qword [ebp - 0x18]
jmp 0x546637
movsd xmm2, qword [ebp - 0x18]
mov cl, byte [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [edi + 0x468], 3
mov dword [edi + 0x430], ebx
cmp byte [edi + 0x43a], bl
je 0x54665b
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x16c]
jmp 0x54667a
subsd xmm2, qword [edi + 0x448]
cvttsd2si esi, xmm2
test esi, esi
jle 0x54667a
test cl, cl
je 0x5466a7
inc dword [edi + 0x45c]
push esi
call edx
mov ebx, esi
cmp byte [edi + 0x4d8], 0
je 0x5466b6
call dword [ebp - 0x10]
sub eax, ebx
sub eax, dword [ebp - 0xc]
add eax, eax
sub eax, ebx
cmp eax, 0xfa
jle 0x54669d
mov eax, 0xfa
jmp 0x5466a1
test eax, eax
js 0x5466b6
cmp byte [ebp + 8], 0
jne 0x5466b2
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 4
push eax
call dword [ebp - 8]
mov ecx, edi
call fcn.00547620
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x668354
call fcn.0059be9f
add esp, 4
cmp dword [0x668354], 0xffffffff
jne 0x546243
call ebx
push 0x668354
mov dword [0x668350], eax
call fcn.0059be55
add esp, 4
jmp 0x546243