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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
mov al, byte [esi + 0x40d]
test al, al
push edi
je 0x52883d
mov eax, dword [esi]
call dword [eax + 0xa0]
mov cl, byte [esi + 0x41d]
test cl, cl
jne 0x528889
mov al, byte [esi + 0x494]
test al, al
je 0x528889
mov al, byte [esi + 0x371]
test al, al
jne 0x528889
mov al, byte [esi + 0x495]
test al, al
jne 0x528889
mov al, byte [esi + 0x2c0]
test al, al
je 0x528883
mov al, byte [esi + 0x4a4]
test al, al
je 0x528889
mov al, byte [esi + 0x4a5]
test al, al
jne 0x528889
mov byte [ebp - 1], 1
jmp 0x52888d
mov byte [ebp - 1], 0
mov al, byte [esi + 0x494]
test al, al
je 0x5288cc
mov eax, dword [esi + 0x490]
mov dword [ebp - 0xc], eax
fild dword [ebp - 0xc]
mov edx, dword [esi + 0x36c]
imul edx, eax
fdivr qword [0x614bb0]
mov dword [ebp - 0xc], edx
fdiv qword [esi + 0x3a8]
fstp qword [ebp - 0x1c]
fild dword [ebp - 0xc]
fdivr qword [0x614bb0]
fstp qword [ebp - 0x14]
jmp 0x5288e4
fild dword [esi + 0x36c]
fdiv qword [esi + 0x3a8]
fstp qword [ebp - 0x1c]
fld qword [0x611680]
fstp qword [ebp - 0x14]
test cl, cl
je 0x528a8f
mov eax, dword [esi + 0x39c]
cmp eax, dword [esi + 0x3b4]
jl 0x528908
mov al, byte [esi + 0x3b8]
test al, al
je 0x528a67
mov al, byte [esi + 0x358]
test al, al
jne 0x52892f
mov al, byte [esi + 0x3b9]
test al, al
jne 0x52892f
mov edx, dword [esi]
push 1
mov ecx, esi
mov byte [esi + 0x358], 1
call dword [edx + 0xe4]
test byte [0x68ce54], 1
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
jne 0x528950
or dword [0x68ce54], 1
call ebx
mov dword [0x68ce50], eax
lea esp, [esp]
mov eax, dword [esi + 0x39c]
cmp eax, dword [esi + 0x3b4]
jl 0x52896c
mov al, byte [esi + 0x3b8]
test al, al
je 0x528a67
call dword [sym.imp.WINMM.dll_timeGetTime]
fld qword [0x60d4b8]
mov edx, dword [esi]
fstp qword [esi + 0x380]
mov edi, dword [esi + 0x39c]
mov ecx, esi
mov dword [esi + 0x388], eax
call dword [edx + 0x24]
test al, al
je 0x528a1b
fld qword [ebp - 0x14]
mov ecx, esi
fadd qword [esi + 0x378]
fsub qword [0x611680]
fstp qword [esi + 0x378]
call fcn.00528760
fld qword [esi + 0x378]
fcomp qword [0x611680]
fnstsw ax
test ah, 1
jne 0x528a06
mov ecx, esi
call fcn.00525000
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x24]
test al, al
je 0x528a06
mov ecx, esi
call fcn.00528760
fld qword [esi + 0x378]
fsub qword [0x611680]
fstp qword [esi + 0x378]
fld qword [esi + 0x378]
fcomp qword [0x611680]
fnstsw ax
test ah, 1
je 0x5289c8
fld qword [ebp - 0x14]
mov edx, dword [esi]
push ecx
mov ecx, esi
fstp dword [esp]
call dword [edx + 0x28]
mov ecx, esi
call fcn.00528760
cmp edi, dword [esi + 0x39c]
je 0x528da5
call ebx
sub eax, dword [0x68ce50]
cmp eax, 0x3e8
jae 0x528a44
mov al, byte [esi + 0x3b9]
test al, al
je 0x528950
mov byte [esi + 0x3b9], 0
call ebx
mov dword [0x68ce50], eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14c]
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [esi + 0x358]
test al, al
je 0x528a8f
mov ecx, dword [esi + 0x3cc]
mov byte [esi + 0x358], 0
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0xe8]
mov al, byte [esi + 0x3b0]
test al, al
jne 0x528d9e
fld qword [esi + 0x3a8]
fcomp qword [0x60d4b8]
fnstsw ax
test ah, 0x41
jne 0x528d9e
call dword [sym.imp.WINMM.dll_timeGetTime]
mov bl, byte [ebp - 1]
xor edi, edi
test bl, bl
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edi
jne 0x528ad0
mov ecx, esi
call fcn.00525770
mov eax, dword [esi + 0x3a0]
cmp eax, 1
jne 0x528c3e
fld qword [esi + 0x3a8]
mov ecx, dword [esi + 0x368]
fmul qword [0x60e090]
inc ecx
sub esp, 8
mov dword [esi + 0x368], ecx
fstp qword [esp]
call fcn.005e1e70
add esp, 8
call fcn.005e0b1c
cmp dword [esi + 0x368], eax
jl 0x528b1d
mov al, byte [esi + 0x40b]
test al, al
jne 0x528b4c
test bl, bl
je 0x528b79
mov al, byte [esi + 0x372]
test al, al
je 0x528b89
fld qword [ebp - 0x1c]
fmul qword [0x616df8]
call fcn.005e0b1c
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fcomp qword [esi + 0x380]
fnstsw ax
test ah, 0x41
jnp 0x528b89
mov al, byte [esi + 0x372]
test al, al
mov dword [esi + 0x3a0], 3
mov dword [esi + 0x368], edi
je 0x528d23
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14c]
jmp 0x528d55
fld qword [esi + 0x380]
fcomp qword [ebp - 0x1c]
fnstsw ax
test ah, 1
jne 0x528b4c
mov al, byte [esi + 0x41d]
test al, al
jne 0x528c1d
cmp dword [esi + 0x3a8], edi
jne 0x528c1d
cmp dword [esi + 0x3ac], 0x3ff00000
jne 0x528c1d
mov edx, dword [esi + 0x4a0]
mov ecx, dword [esi + 0x36c]
inc edx
mov edi, edx
mov dword [esi + 0x4a0], edx
lea eax, [ecx + 0x3e7]
cdq
idiv ecx
cmp edi, eax
jb 0x528c1d
mov eax, dword [ebp - 0xc]
mov edi, dword [esi + 0x49c]
mov ecx, eax
sub ecx, edi
cmp ecx, 0x320
ja 0x528c03
mov edx, dword [esi + 0x498]
inc edx
mov ecx, edx
cmp ecx, 3
mov dword [esi + 0x498], edx
jl 0x528c0d
mov byte [esi + 0x495], 1
jmp 0x528c0d
mov dword [esi + 0x498], 0
mov dword [esi + 0x49c], eax
mov dword [esi + 0x4a0], 0
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x24]
test al, al
je 0x528c32
mov dword [esi + 0x3a0], 2
mov byte [esi + 0x372], 1
jmp 0x528d55
cmp eax, 2
jne 0x528b4c
fld qword [ebp - 0x14]
mov ecx, esi
fadd qword [esi + 0x378]
mov dword [esi + 0x3a0], 3
fsub qword [0x611680]
fstp qword [esi + 0x378]
call fcn.00528760
fld qword [esi + 0x378]
fcomp qword [0x611680]
fnstsw ax
test ah, 1
jne 0x528ccb
mov ecx, esi
call fcn.00525000
mov edx, dword [esi + 0x368]
mov eax, dword [esi]
inc edx
mov ecx, esi
mov dword [esi + 0x368], edx
call dword [eax + 0x24]
test al, al
je 0x528ccb
mov ecx, esi
call fcn.00528760
fld qword [esi + 0x378]
fsub qword [0x611680]
fstp qword [esi + 0x378]
fld qword [esi + 0x378]
fcomp qword [0x611680]
fnstsw ax
test ah, 1
je 0x528c80
fld qword [ebp - 0x14]
mov edx, dword [esi]
push ecx
mov ecx, esi
fstp dword [esp]
call dword [edx + 0x28]
mov ecx, esi
call fcn.00528760
fld qword [esi + 0x380]
test bl, bl
fsub qword [ebp - 0x1c]
je 0x528d08
fsub qword [0x616df0]
fcom qword [0x60d4b8]
fnstsw ax
test ah, 0x41
je 0x528d08
fstp st(0)
fld qword [0x60d4b8]
mov eax, dword [esi + 0x3c]
fstp qword [esi + 0x380]
cmp eax, edi
jle 0x528d55
fld qword [0x60d4b8]
fstp qword [esi + 0x380]
jmp 0x528d55
fld qword [ebp - 0x1c]
fsub qword [esi + 0x380]
call fcn.005e0b1c
mov edi, eax
test edi, edi
jle 0x528d55
mov al, byte [ebp + 8]
test al, al
je 0x528d8c
mov ecx, dword [esi + 0x394]
inc ecx
push edi
mov dword [esi + 0x394], ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 8], edi
mov al, byte [esi + 0x40c]
test al, al
je 0x528d9e
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
sub eax, ecx
sub eax, edi
add eax, eax
sub eax, ecx
cmp eax, 0xfa
jle 0x528d81
mov eax, 0xfa
jmp 0x528d85
test eax, eax
jl 0x528d9e
mov cl, byte [ebp + 8]
test cl, cl
jne 0x528d97
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 4
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, esi
call fcn.00528760
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4