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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x522d45
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetTickCount_1
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [0x7071dc]
cmp byte [eax], 0
je 0x522cfa
xor edx, edx
push ebp
push 0x522cad
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
add eax, 4
push eax
call sub.kernel32.dll_EnterCriticalSection
xor edx, edx
push ebp
push 0x522c9c
push dword fs:[edx]
mov dword fs:[edx], esp
mov dword [ebp - 0xc], 2
mov eax, dword [0x7070f8]
cmp dword [eax + 0x114], 0
jle 0x522b5e
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x2a8]
cmp eax, 0x64
jb 0x522b5e
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x2a8], eax
xor esi, esi
mov edi, 0xb07084
mov ebx, edi
cmp byte [ebx + 4], 0
je 0x522b55
cmp dword [ebx + 0x34], 0
je 0x522b55
mov ebx, dword [0x7070f8]
mov ebx, dword [ebx + 0x114]
dec ebx
test ebx, ebx
jl 0x522b55
inc ebx
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.0052417c
dec ebx
jne 0x522b48
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x522b28
mov dword [ebp - 0xc], 3
xor esi, esi
mov edi, 0xb07084
mov ebx, edi
mov dword [ebp - 0xc], 4
cmp byte [ebx + 4], 0
je 0x522bbe
cmp dword [ebx + 0x34], 0
je 0x522bbe
cmp dword [ebx], 0
je 0x522bbe
mov dword [ebp - 0xc], 5
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebx + 0x34]
push eax
mov ecx, ebx
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.005233a0
test al, al
je 0x522bb5
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x50], eax
jmp 0x522bbe
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x50], eax
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x522b6c
mov dword [ebp - 0xc], 6
xor esi, esi
mov edi, 0xb07084
cmp dword [edi], 0
je 0x522c75
mov dword [ebp - 0xc], 7
mov ebx, edi
cmp byte [ebx + 4], 0
je 0x522c75
mov dword [ebp - 0xc], 8
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebx + 0x3c]
cmp eax, 0xea60
jb 0x522c1a
mov eax, dword [ebx]
call fcn.00486f6c
mov edx, dword [ebx]
mov eax, dword [ebp - 4]
call fcn.00522560
jmp 0x522c75
mov dword [ebp - 0xc], 9
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebx + 0x54]
cmp eax, 0x3e8
jb 0x522c4e
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x54], eax
mov eax, dword [ebx + 0x5c]
mov dword [ebx + 0x58], eax
mov eax, dword [ebx + 0x64]
mov dword [ebx + 0x60], eax
xor eax, eax
mov dword [ebx + 0x5c], eax
xor eax, eax
mov dword [ebx + 0x64], eax
mov dword [ebp - 0xc], 0xa
cmp byte [ebx + 0x38], 0
je 0x522c6e
mov byte [ebx + 0x38], 0
mov ecx, 3
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00523da0
mov dword [ebp - 0xc], 0xb
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x522bd5
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x522ca3
mov eax, dword [ebp - 4]
add eax, 4
push eax
call sub.kernel32.dll_LeaveCriticalSection
ret
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebp - 8]
mov edx, dword [0x707a74]
mov dword [edx], eax
mov eax, dword [0x707a74]
mov eax, dword [eax]
mov edx, dword [0x7079dc]
cmp eax, dword [edx]
jle 0x522d2a
mov eax, dword [0x707a74]
mov eax, dword [eax]
mov edx, dword [0x7079dc]
mov dword [edx], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x522d4c
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.004054f4
ret