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

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov esi, dword [0x586404]
mov edi, dword [0x586a98]
xor eax, eax
push ebp
push 0x52907a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [esi]
mov eax, dword [eax + 0x590]
test eax, eax
je 0x52905f
sub eax, 3
je 0x52905f
mov eax, dword [esi]
inc dword [eax + 0x594]
push 0x529090
lea edx, [ebp - 0xc]
mov eax, dword [esi]
mov eax, dword [eax + 0x594]
call fcn.00409fe0
push dword [ebp - 0xc]
push 0x5290a0
lea eax, [ebp - 8]
mov edx, 3
call fcn.0040553c
mov edx, dword [ebp - 8]
mov eax, dword [edi]
call fcn.0051f280
mov eax, dword [esi]
mov dword [eax + 0x374], 0x66
call fcn.004b9988
mov edx, dword [esi]
mov dword [edx + 0x598], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x594]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0xb4]
jle 0x528ef5
call fcn.004b9988
mov ebx, eax
jmp 0x528ee8
push 0x5290b4
call fcn.004b9988
sub eax, ebx
mov ecx, 0x3e8
xor edx, edx
div ecx
push eax
mov eax, 0x1e
pop edx
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.0040a0cc
push dword [ebp - 0x14]
push 0x5290d8
lea eax, [ebp - 0x10]
mov edx, 3
call fcn.0040553c
mov edx, dword [ebp - 0x10]
mov eax, dword [edi]
call fcn.00521e50
push 0x3e8
call sub.kernel32.dll_Sleep_2
call fcn.004b9988
sub eax, ebx
cmp eax, 0x7530
jbe 0x528edd
mov eax, dword [esi]
mov dword [eax + 0x5a8], 2
mov eax, dword [esi]
cmp dword [eax + 0x590], 0
je 0x528ef5
mov eax, dword [ebp - 4]
cmp byte [eax + 0xd], 0
je 0x528e70
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050bdb8
test al, al
je 0x52905f
mov eax, dword [esi]
cmp dword [eax + 0x590], 0
je 0x52905f
call fcn.004b9988
mov ebx, eax
jmp 0x528f86
push 0xc8
call sub.kernel32.dll_Sleep_2
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050bdb8
test al, al
jne 0x528f47
push 0x3e8
call sub.kernel32.dll_Sleep_2
jmp 0x528f8f
mov eax, dword [esi]
cmp dword [eax + 0x5e8], 0
jne 0x528f78
push 0x3e8
call sub.kernel32.dll_Sleep_2
push 0x5290f0
push 2
push 1
mov eax, dword [edi]
mov ecx, 0x529128
mov edx, 1
call fcn.00521fa0
jmp 0x528f86
call fcn.004b9988
sub eax, ebx
cmp eax, 0x5dc
ja 0x528f8f
mov eax, dword [ebp - 4]
cmp byte [eax + 0xd], 0
je 0x528f21
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050bdb8
test al, al
je 0x52905f
mov eax, dword [edi]
mov edx, 0x529138
call fcn.0051f280
call fcn.004b9988
mov ebx, eax
jmp 0x529052
push 0xc8
call sub.kernel32.dll_Sleep_2
call fcn.004b9988
sub eax, ebx
cmp eax, 0x3e8
jbe 0x529000
mov eax, 0x52914c
call fcn.004b8ff8
mov eax, dword [edi]
mov byte [eax + 0x1a5], 1
push ebp
call fcn.00528d4c
pop ecx
push 0x7d0
call sub.kernel32.dll_Sleep_2
mov eax, dword [edi]
mov byte [eax + 0x1a5], 0
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050bdb8
test al, al
jne 0x529027
mov eax, dword [esi]
cmp byte [eax + 0x5cd], 0
je 0x52905f
push 0xbb8
call sub.kernel32.dll_Sleep_2
jmp 0x52905f
call fcn.004b9988
sub eax, ebx
cmp eax, 0x7530
jbe 0x529052
mov eax, 0x52915c
call fcn.004b8ff8
mov eax, dword [esi]
mov byte [eax + 0x379], 1
push 0x3e8
call sub.kernel32.dll_Sleep_2
mov eax, dword [ebp - 4]
cmp byte [eax + 0xd], 0
je 0x528fbb
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x529081
lea eax, [ebp - 0x14]
mov edx, 4
call fcn.004051cc
ret