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

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov ebx, eax
mov esi, dword [ebp + 8]
add esi, 0xfffffffc
call fcn.004b9988
mov edx, dword [esi]
mov dword [edx + 0x68], eax
mov eax, dword [esi]
mov edx, ebx
call fcn.0052f51c
mov eax, ebx
call fcn.005243c8
cmp ax, 0x151
jbe 0x52c6f1
mov eax, ebx
call fcn.005243c8
cmp ax, 0x157
jae 0x52c6f1
mov eax, ebx
call fcn.005243a0
movzx edx, ax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050b348
jmp 0x52ca44
mov eax, dword [esi]
cmp byte [eax + 0x5d], 0
jne 0x52c708
mov eax, dword [esi]
cmp dword [eax + 0x80], 0
je 0x52c84c
call fcn.004b9988
mov edx, dword [0x5865d0]
mov edx, dword [edx]
sub eax, dword [edx + 0xc]
cmp eax, 0x3e80
jbe 0x52c84c
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.005107bc
cmp eax, 0x32
jl 0x52c84c
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.005115f0
cmp eax, 0x32
jl 0x52c84c
call fcn.004b9988
mov edx, dword [esi]
sub eax, dword [edx + 0x84]
cmp eax, 0x7d0
jbe 0x52c84c
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511c74
movzx eax, al
cmp eax, 4
ja case.default.0x52c77d
jmp dword [eax*4 + 0x52c784]
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
mov dl, 0x17
call fcn.00511a74
jmp case.default.0x52c77d
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
mov dl, 0x18
call fcn.00511a74
jmp case.default.0x52c77d
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
mov dl, 0x19
call fcn.00511a74
jmp case.default.0x52c77d
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
mov dl, 0x1a
call fcn.00511a74
jmp case.default.0x52c77d
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
mov dl, 0x53
call fcn.00511a74
call fcn.004b9988
mov edx, dword [esi]
mov dword [edx + 0x84], eax
mov eax, dword [0x586a98]
mov eax, dword [eax]
cmp byte [eax + 0x9b], 0
je 0x52ca44
push 0x14
call sub.kernel32.dll_Sleep_2
mov eax, dword [ebp + 8]
push eax
mov eax, ebx
call fcn.0052c69c
pop ecx
jmp 0x52ca44
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050b17c
test al, al
jne 0x52ca44
mov eax, dword [esi]
cmp byte [eax + 0x52], 0
jne 0x52c874
mov eax, dword [esi]
cmp byte [eax + 0x51], 0
je 0x52ca2e
mov eax, dword [esi]
cmp byte [eax + 0x52], 0
je 0x52c931
mov eax, dword [esi]
cmp byte [eax + 0x52], 8
jne 0x52c8af
push 3
mov eax, ebx
call fcn.005246d0
push eax
mov eax, ebx
call fcn.005246c0
mov edx, eax
mov eax, dword [0x586a98]
mov eax, dword [eax]
pop ecx
call fcn.00514740
mov edx, dword [esi]
cmp eax, dword [edx + 0x4c]
jge 0x52c8e8
mov eax, dword [esi]
cmp byte [eax + 0x52], 8
je 0x52c931
push 3
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511cb0
push eax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511c88
mov edx, eax
mov eax, dword [0x586a98]
mov eax, dword [eax]
pop ecx
call fcn.00514740
mov edx, dword [esi]
cmp eax, dword [edx + 0x4c]
jl 0x52c931
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [esi]
movzx edx, byte [eax + 0x52]
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511a74
test al, al
je 0x52c9ce
mov eax, dword [esi]
cmp byte [eax + 0x50], 0
je 0x52c9ce
mov eax, dword [esi]
mov eax, dword [eax + 0x58]
test eax, eax
jns 0x52c923
add eax, 3
sar eax, 2
push eax
call sub.kernel32.dll_Sleep_2
jmp 0x52c9ce
mov eax, dword [esi]
movzx eax, byte [eax + 0x51]
test al, al
je 0x52c9ce
cmp al, 0xa
jne 0x52c992
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.005107bc
cmp eax, 0x1e
jl 0x52c9ce
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [esi]
movzx edx, byte [eax + 0x51]
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511a74
test al, al
je 0x52c9ce
mov eax, dword [esi]
cmp byte [eax + 0x50], 0
je 0x52c9ce
mov eax, dword [esi]
mov eax, dword [eax + 0x58]
test eax, eax
jns 0x52c987
add eax, 3
sar eax, 2
push eax
call sub.kernel32.dll_Sleep_2
jmp 0x52c9ce
mov eax, ebx
call fcn.005243a0
mov ecx, eax
mov eax, dword [esi]
movzx edx, byte [eax + 0x51]
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511a74
test al, al
je 0x52c9ce
mov eax, dword [esi]
cmp byte [eax + 0x50], 0
je 0x52c9ce
mov eax, dword [esi]
mov eax, dword [eax + 0x58]
test eax, eax
jns 0x52c9c5
add eax, 3
sar eax, 2
push eax
call sub.kernel32.dll_Sleep_2
mov eax, dword [esi]
cmp byte [eax + 0x50], 0
je 0x52c9ee
mov eax, ebx
call fcn.005243a0
movzx edx, ax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050b348
jmp 0x52ca44
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511c74
cmp al, 1
jne 0x52ca16
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.00511c74
cmp al, 1
jne 0x52ca44
mov eax, dword [esi]
cmp byte [eax + 0x51], 0
jne 0x52ca44
mov eax, ebx
call fcn.005243a0
movzx edx, ax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050b348
jmp 0x52ca44
mov eax, ebx
call fcn.005243a0
movzx edx, ax
mov eax, dword [0x5865d0]
mov eax, dword [eax]
call fcn.0050b348
pop esi
pop ebx
pop ebp
ret