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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x74
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0x64], 0
jne 0x54ade1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, 0x3c
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x64], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x64]
mov dword [ebp - 8], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x64], eax
mov edx, dword [ebp - 4]
cmp dword [edx + 0x20], 0
jle 0x54ae27
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x20]
sub ecx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0x20], ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0x20], 0
jge 0x54ae27
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x20], 0
movsd xmm0, qword [0x58bd30]
movsd qword [ebp - 0x64], xmm0
mov dword [ebp - 0x5c], 0
mov edx, dword [ebp - 4]
add edx, 0x48
mov eax, dword [ebp - 0x64]
mov dword [edx], eax
mov ecx, dword [ebp - 0x60]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0x5c]
mov dword [edx + 8], eax
mov ecx, dword [ebp - 0x58]
mov dword [edx + 0xc], ecx
mov edx, dword [ebp - 4]
cmp dword [edx + 8], 0
jl 0x54ae73
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [eax + 8]
cmp edx, dword [ecx + 4]
jle 0x54af93
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jge 0x54ae85
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x30], 1
je 0x54aea4
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 8]
cmp ecx, dword [eax + 4]
jle 0x54af37
mov edx, dword [ebp - 4]
cmp dword [edx + 0x30], 0
jne 0x54af37
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jge 0x54aeba
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 8]
neg edx
mov dword [ebp - 0xc], edx
jmp 0x54aec9
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [eax + 8]
sub edx, dword [ecx + 4]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 4]
imul eax, dword [eax + 0x58], 3
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp dword [ebp - 0xc], eax
jge 0x54af37
mov ecx, dword [ebp - 4]
cmp dword [ecx + 8], 0
jle 0x54aef8
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 8]
sub ecx, dword [eax + 4]
mov dword [ebp - 0x10], ecx
jmp 0x54af03
mov edx, dword [ebp - 4]
mov eax, dword [edx + 8]
neg eax
mov dword [ebp - 0x10], eax
imul ecx, dword [ebp - 0x10], 0x32
cvtsi2sd xmm0, ecx
mov edx, dword [ebp - 4]
movsd qword [edx + 0x48], xmm0
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jge 0x54af25
mov dword [ebp - 0x14], 0
jmp 0x54af2c
mov dword [ebp - 0x14], 1
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
mov dword [ecx + 0x50], edx
jmp 0x54af91
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jle 0x54af51
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ecx + 8]
sub eax, dword [edx + 4]
mov dword [ebp - 0x18], eax
jmp 0x54af5c
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 8]
neg edx
mov dword [ebp - 0x18], edx
imul eax, dword [ebp - 0x18], 0x96
cvtsi2sd xmm0, eax
mov ecx, dword [ebp - 4]
movsd qword [ecx + 0x48], xmm0
mov edx, dword [ebp - 4]
cmp dword [edx + 8], 0
jge 0x54af81
mov dword [ebp - 0x1c], 1
jmp 0x54af88
mov dword [ebp - 0x1c], 0
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 0x50], ecx
jmp 0x54b008
mov edx, dword [ebp - 4]
add edx, 0x28
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x20]
movsd xmm0, qword [eax]
comisd xmm0, xmmword [0x582970]
jbe 0x54afc7
mov ecx, dword [ebp - 0x20]
movsd xmm0, qword [0x582948]
comisd xmm0, xmmword [ecx]
jbe 0x54afc7
mov dword [ebp - 0x24], 1
jmp 0x54afce
mov dword [ebp - 0x24], 0
movzx edx, byte [ebp - 0x24]
test edx, edx
jne 0x54b008
mov eax, dword [ebp - 4]
movsd xmm0, qword [0x582950]
movsd qword [eax + 0x48], xmm0
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x30], 0
jne 0x54aff8
mov dword [ebp - 0x28], 1
jmp 0x54afff
mov dword [ebp - 0x28], 0
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x28]
mov dword [edx + 0x50], eax
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x20], 0
jle 0x54b0a1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 0x50]
cmp ecx, dword [eax + 0x18]
jne 0x54b03d
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
movsd xmm0, qword [edx + 0x48]
addsd xmm0, qword [eax + 0x10]
mov ecx, dword [ebp - 4]
movsd qword [ecx + 0x48], xmm0
jmp 0x54b0a1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
movsd xmm0, qword [edx + 0x48]
subsd xmm0, qword [eax + 0x10]
mov ecx, dword [ebp - 4]
movsd qword [ecx + 0x48], xmm0
mov edx, dword [ebp - 4]
movsd xmm0, qword [0x58bd30]
comisd xmm0, xmmword [edx + 0x48]
jbe 0x54b0a1
mov eax, dword [ebp - 4]
movsd xmm0, qword [eax + 0x48]
xorpd xmm0, xmmword [0x58bda0]
mov ecx, dword [ebp - 4]
movsd qword [ecx + 0x48], xmm0
mov edx, dword [ebp - 4]
cmp dword [edx + 0x50], 0
jne 0x54b091
mov dword [ebp - 0x2c], 1
jmp 0x54b098
mov dword [ebp - 0x2c], 0
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x2c]
mov dword [eax + 0x50], ecx
mov edx, dword [ebp - 4]
movsd xmm0, qword [edx + 0x48]
divsd xmm0, qword [0x57e130]
mov eax, dword [ebp - 4]
movsd qword [eax + 0x38], xmm0
mov ecx, dword [ebp - 4]
add ecx, 0x48
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0x30]
movsd xmm0, qword [edx]
comisd xmm0, xmmword [0x582970]
jbe 0x54b0ed
mov eax, dword [ebp - 0x30]
movsd xmm0, qword [0x582948]
comisd xmm0, xmmword [eax]
jbe 0x54b0ed
mov dword [ebp - 0x34], 1
jmp 0x54b0f4
mov dword [ebp - 0x34], 0
movzx ecx, byte [ebp - 0x34]
test ecx, ecx
jne 0x54b108
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x50]
mov dword [edx + 0x40], ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 0x30]
cmp ecx, dword [eax + 0x40]
jne 0x54b140
cvtsi2sd xmm0, dword [ebp - 8]
mov edx, dword [ebp - 4]
mulsd xmm0, qword [edx + 0x38]
divsd xmm0, qword [0x582958]
mov eax, dword [ebp - 4]
addsd xmm0, qword [eax + 0x28]
mov ecx, dword [ebp - 4]
movsd qword [ecx + 0x28], xmm0
jmp 0x54b273
mov edx, dword [ebp - 4]
movsd xmm0, qword [edx + 0x28]
movsd qword [ebp - 0x54], xmm0
cvtsi2sd xmm0, dword [ebp - 8]
mov eax, dword [ebp - 4]
mulsd xmm0, qword [eax + 0x38]
divsd xmm0, qword [0x582958]
mov ecx, dword [ebp - 4]
movsd xmm1, qword [ecx + 0x28]
subsd xmm1, xmm0
mov edx, dword [ebp - 4]
movsd qword [edx + 0x28], xmm1
mov eax, dword [ebp - 4]
movsd xmm0, qword [0x58bd30]
comisd xmm0, xmmword [eax + 0x28]
jbe 0x54b273
mov ecx, dword [ebp - 4]
cmp dword [ecx + 8], 0
jle 0x54b1b6
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 8]
cmp ecx, dword [eax + 4]
jge 0x54b1b6
movsd xmm0, qword [ebp - 0x54]
ucomisd xmm0, qword [0x58bd30]
lahf
test ah, 0x44
jp 0x54b220
mov edx, dword [ebp - 4]
movsd xmm0, qword [edx + 0x28]
xorpd xmm0, xmmword [0x58bda0]
mov eax, dword [ebp - 4]
movsd qword [eax + 0x28], xmm0
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x30], 0
jne 0x54b1e0
mov dword [ebp - 0x38], 1
jmp 0x54b1e7
mov dword [ebp - 0x38], 0
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x38]
mov dword [edx + 0x30], eax
mov ecx, dword [ebp - 4]
cmp dword [ecx + 8], 0
jge 0x54b206
mov edx, dword [ebp - 4]
mov eax, dword [edx + 8]
neg eax
mov dword [ebp - 0x3c], eax
jmp 0x54b215
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ecx + 8]
sub eax, dword [edx + 4]
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x3c]
mov dword [ecx + 0x58], edx
jmp 0x54b273
movsd xmm0, qword [0x58bd30]
movsd qword [ebp - 0x74], xmm0
mov dword [ebp - 0x6c], 0
mov eax, dword [ebp - 4]
add eax, 0x38
mov ecx, dword [ebp - 0x74]
mov dword [eax], ecx
mov edx, dword [ebp - 0x70]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x6c]
mov dword [eax + 8], ecx
mov edx, dword [ebp - 0x68]
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
add eax, 0x38
mov ecx, dword [ebp - 4]
add ecx, 0x28
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [ebp - 4]
movsd xmm0, qword [ecx + 0x28]
comisd xmm0, xmmword [0x582960]
jbe 0x54b295
mov edx, dword [ebp - 4]
movsd xmm0, qword [0x582960]
movsd qword [edx + 0x28], xmm0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x30], 0
jne 0x54b306
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x40], edx
cvtsi2sd xmm0, dword [ebp - 8]
mov eax, dword [ebp - 4]
mulsd xmm0, qword [eax + 0x28]
divsd xmm0, qword [0x582958]
cvttsd2si ecx, xmm0
mov edx, dword [ebp - 4]
mov eax, dword [edx + 8]
sub eax, ecx
mov ecx, dword [ebp - 4]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 4]
cmp dword [edx + 0x20], 0
jg 0x54b304
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x40]
cmp ecx, dword [eax + 4]
jle 0x54b304
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + 8]
cmp ecx, dword [eax + 4]
jg 0x54b304
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 4]
mov dword [edx + 8], ecx
mov ecx, dword [ebp - 4]
call fcn.0054aa80
jmp 0x54b35e
mov edx, dword [ebp - 4]
mov eax, dword [edx + 8]
mov dword [ebp - 0x44], eax
cvtsi2sd xmm0, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mulsd xmm0, qword [ecx + 0x28]
divsd xmm0, qword [0x582958]
cvttsd2si edx, xmm0
mov eax, dword [ebp - 4]
add edx, dword [eax + 8]
mov ecx, dword [ebp - 4]
mov dword [ecx + 8], edx
mov edx, dword [ebp - 4]
cmp dword [edx + 0x20], 0
jg 0x54b35e
cmp dword [ebp - 0x44], 0
jge 0x54b35e
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jl 0x54b35e
mov ecx, dword [ebp - 4]
mov dword [ecx + 8], 0
mov ecx, dword [ebp - 4]
call fcn.0054aa80
lea edx, [ebp - 0x4c]
push edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
mov edx, dword [ebp - 4]
mov eax, dword [ecx]
mov ecx, dword [edx]
mov edx, dword [eax + 0x180]
call edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 8]
mov dword [ebp - 0x48], ecx
push 1
mov edx, dword [ebp - 0x48]
push edx
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx]
call fcn.00545990
mov esp, ebp
pop ebp
ret