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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov dword [ebp - 4], eax
lea ebx, [ebp - 4]
mov byte [ebp - 5], 0
mov eax, dword [ebx]
mov eax, dword [eax + 0x22c]
cmp eax, 0x138e
je 0x5a0f22
cmp eax, 0x138c
je 0x5a0f22
cmp eax, 0x1390
je 0x5a0f22
cmp eax, 0x14b0
je 0x5a0f22
cmp eax, 0x1480
je 0x5a0f22
cmp eax, 0x1389
je 0x5a0f22
cmp eax, 0x14af
je 0x5a0f22
cmp eax, 0x14ea
je 0x5a0f22
cmp eax, 0x14eb
je 0x5a0f22
cmp eax, 0x138a
je 0x5a0f22
mov eax, dword [ebx]
mov byte [eax + 0x388], 0
mov eax, dword [0x688a9c]
mov eax, dword [eax]
cmp eax, dword [ebx]
je 0x5a0b10
mov eax, dword [ebx]
mov eax, dword [eax + 0x3c4]
cmp dword [eax + 8], 2
jl 0x5a0b10
mov eax, dword [ebx]
mov byte [eax + 0x388], 1
mov eax, dword [ebx]
mov edx, dword [eax + 0x35c]
mov eax, dword [ebx]
sub edx, dword [eax + 0x354]
mov eax, dword [ebx]
mov si, 0xfff4
call fcn.00404528
mov eax, dword [ebx]
mov edx, dword [eax + 0x35c]
mov eax, dword [ebx]
sub edx, dword [eax + 0x354]
mov eax, dword [ebx]
mov si, 0xfff3
call fcn.00404528
mov eax, dword [ebx]
mov edi, dword [eax + 0x35c]
mov eax, dword [ebx]
cmp dword [eax + 0x22c], 0
je 0x5a0e32
mov edx, dword [ebx]
mov edx, dword [edx + 0x354]
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
cmp edx, eax
jg 0x5a0b7b
mov ecx, dword [ebx]
cmp eax, dword [ecx + 0x358]
jle 0x5a0b83
mov eax, dword [ebx]
mov dword [eax + 0x35c], edx
mov eax, dword [0x688a9c]
mov eax, dword [eax]
cmp eax, dword [ebx]
je 0x5a0bbd
mov eax, dword [ebx]
cmp byte [eax + 0x188], 0
je 0x5a0bbd
mov eax, dword [ebx]
mov eax, dword [eax + 0x374]
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0xc], eax
fild qword [ebp - 0x10]
fld xword [0x5a0f30]
fdivp st(1)
call fcn.004034fc
mov esi, eax
jmp 0x5a0bf4
mov eax, dword [ebx]
cmp byte [eax + 0x388], 0
je 0x5a0bec
mov eax, dword [ebx]
mov eax, dword [eax + 0x374]
add eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0xc], eax
fild qword [ebp - 0x10]
fdiv dword [0x5a0f3c]
call fcn.004034fc
mov esi, eax
jmp 0x5a0bf4
mov eax, dword [ebx]
mov esi, dword [eax + 0x374]
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x378]
cmp esi, eax
jae 0x5a0df9
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
mov edx, dword [ebx]
cmp eax, dword [edx + 0x358]
jge 0x5a0cd7
mov eax, dword [ebx]
cmp byte [eax + 0x188], 0
je 0x5a0cc0
mov eax, dword [ebx]
mov eax, dword [eax + 0x1b0]
mov edx, dword [ebx]
mov edx, dword [edx + 0x1b8]
sub edx, 2
cmp eax, edx
je 0x5a0c50
push ebp
call fcn.005a0a00
pop ecx
test al, al
je 0x5a0c8c
mov eax, dword [ebx]
cmp dword [eax + 0x1c4], 0
jge 0x5a0c6a
push ebp
call fcn.005a0a00
pop ecx
test al, al
je 0x5a0d3e
mov eax, dword [ebx]
inc dword [eax + 0x35c]
mov eax, dword [ebx]
inc dword [eax + 0x1b0]
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x378], eax
jmp 0x5a0d3e
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
mov edx, dword [ebx]
mov edx, dword [edx + 0x358]
dec edx
cmp eax, edx
jge 0x5a0ca9
mov eax, dword [ebx]
inc dword [eax + 0x35c]
mov eax, dword [ebx]
inc dword [eax + 0x1b0]
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x378], eax
jmp 0x5a0d3e
mov eax, dword [ebx]
inc dword [eax + 0x35c]
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x378], eax
jmp 0x5a0d3e
mov eax, dword [ebx]
cmp byte [eax + 0x3a], 0
je 0x5a0ce5
mov eax, dword [ebx]
mov byte [eax + 0x39], 1
mov eax, dword [0x688a9c]
mov eax, dword [eax]
cmp eax, dword [ebx]
jne 0x5a0d20
mov eax, dword [0x6888d0]
mov eax, dword [eax]
call fcn.0050d734
test al, al
je 0x5a0d3e
mov eax, dword [ebx]
mov si, 0xfff2
call fcn.00404528
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x22c], edx
mov eax, dword [ebx]
mov byte [eax + 0x188], 0
jmp 0x5a0d3e
mov eax, dword [ebx]
mov si, 0xfff2
call fcn.00404528
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x22c], edx
mov eax, dword [ebx]
mov byte [eax + 0x188], 0
mov eax, dword [ebx]
cmp byte [eax + 0x188], 0
je 0x5a0df9
mov eax, dword [ebx]
mov eax, dword [eax + 0x1b0]
mov edx, dword [ebx]
mov edx, dword [edx + 0x1b8]
dec edx
cmp eax, edx
jne 0x5a0df9
mov eax, dword [ebx]
cmp dword [eax + 0x1c4], 0
jle 0x5a0def
mov eax, dword [ebx]
add eax, 0x1c4
mov edx, dword [eax + 0x10]
push edx
mov edx, dword [ebx]
mov edx, dword [edx + 0xc]
push edx
mov edx, dword [ebx]
mov edx, dword [edx + 0x10]
push edx
mov edx, dword [eax + 0x14]
push edx
mov edx, dword [eax + 0x18]
push edx
mov edx, dword [eax + 8]
push edx
movzx edx, byte [eax + 0xc]
push edx
movzx edx, byte [eax + 0x1c]
push edx
mov edx, dword [eax + 0x20]
push edx
lea edx, [ebp - 6]
push edx
mov ecx, dword [eax]
mov eax, dword [0x688350]
mov eax, dword [eax]
mov edx, dword [ebx]
call fcn.005294d8
cmp byte [ebp - 6], 0
je 0x5a0dcb
mov eax, dword [ebx]
mov eax, dword [eax + 0x2a4]
call fcn.005ac880
jmp 0x5a0def
mov eax, dword [ebx]
cmp dword [eax + 0x1d4], 0x31
jne 0x5a0de2
mov eax, 0x5a0f48
call fcn.005ac7d4
jmp 0x5a0def
mov eax, dword [ebx]
mov eax, dword [eax + 0x2a8]
call fcn.005ac880
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x1c4], edx
mov eax, dword [ebx]
movzx eax, word [eax + 0x20]
sub ax, 2
jb 0x5a0e0b
sub ax, 0x29
jne 0x5a0e19
mov eax, dword [ebx]
mov dword [eax + 0x390], 0xfffffff6
jmp 0x5a0e23
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x390], edx
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x394], eax
jmp 0x5a0e99
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x3a4]
cmp eax, 0xc8
jbe 0x5a0e99
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x394]
mov edx, dword [ebx]
cmp eax, dword [edx + 0x398]
jbe 0x5a0e8e
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x394], eax
mov eax, dword [ebx]
inc dword [eax + 0x390]
mov eax, dword [ebx]
mov eax, dword [eax + 0x390]
mov edx, dword [ebx]
cmp eax, dword [edx + 0x39c]
jl 0x5a0e8e
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x390], edx
mov eax, dword [ebx]
mov si, 0xfffe
call fcn.00404528
mov eax, dword [ebx]
cmp edi, dword [eax + 0x35c]
je 0x5a0ebf
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x2b0], eax
mov eax, dword [ebx]
mov si, 0xfff0
call fcn.00404528
mov byte [ebp - 5], 1
mov eax, dword [0x6885e4]
cmp byte [eax + 0x38], 0
je 0x5a0f22
mov eax, dword [ebx]
cmp byte [eax + 0x38], 0
jne 0x5a0ef3
mov eax, dword [ebx]
cmp byte [eax + 0x31], 0
je 0x5a0f22
mov eax, dword [ebx]
cmp dword [eax + 0x34], 0
jbe 0x5a0f22
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x34]
cmp eax, 0x5dc
jbe 0x5a0f22
push 0
push 0
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov eax, dword [0x688350]
mov eax, dword [eax]
mov edx, 0x13a0
call fcn.0052dd50
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x34], edx
movzx eax, byte [ebp - 5]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret