Function at 0x5a752c
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 0x5a79f2
cmp eax, 0x138c
je 0x5a79f2
cmp eax, 0x1390
je 0x5a79f2
cmp eax, 0x14b0
je 0x5a79f2
cmp eax, 0x1480
je 0x5a79f2
cmp eax, 0x1389
je 0x5a79f2
cmp eax, 0x14af
je 0x5a79f2
cmp eax, 0x14ea
je 0x5a79f2
cmp eax, 0x14eb
je 0x5a79f2
cmp eax, 0x138a
je 0x5a79f2
mov eax, dword [ebx]
mov byte [eax + 0x388], 0
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp eax, dword [ebx]
je 0x5a75e0
mov eax, dword [ebx]
mov eax, dword [eax + 0x3c4]
cmp dword [eax + 8], 2
jl 0x5a75e0
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 0x5a7902
mov edx, dword [ebx]
mov edx, dword [edx + 0x354]
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
cmp edx, eax
jg 0x5a764b
mov ecx, dword [ebx]
cmp eax, dword [ecx + 0x358]
jle 0x5a7653
mov eax, dword [ebx]
mov dword [eax + 0x35c], edx
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp eax, dword [ebx]
je 0x5a768d
mov eax, dword [ebx]
cmp byte [eax + 0x188], 0
je 0x5a768d
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 [0x5a7a00]
fdivp st(1)
call fcn.004034fc
mov esi, eax
jmp 0x5a76c4
mov eax, dword [ebx]
cmp byte [eax + 0x388], 0
je 0x5a76bc
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 [0x5a7a0c]
call fcn.004034fc
mov esi, eax
jmp 0x5a76c4
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 0x5a78c9
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
mov edx, dword [ebx]
cmp eax, dword [edx + 0x358]
jge 0x5a77a7
mov eax, dword [ebx]
cmp byte [eax + 0x188], 0
je 0x5a7790
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 0x5a7720
push ebp
call fcn.005a74d0
pop ecx
test al, al
je 0x5a775c
mov eax, dword [ebx]
cmp dword [eax + 0x1c4], 0
jge 0x5a773a
push ebp
call fcn.005a74d0
pop ecx
test al, al
je 0x5a780e
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 0x5a780e
mov eax, dword [ebx]
mov eax, dword [eax + 0x35c]
mov edx, dword [ebx]
mov edx, dword [edx + 0x358]
dec edx
cmp eax, edx
jge 0x5a7779
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 0x5a780e
mov eax, dword [ebx]
inc dword [eax + 0x35c]
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
mov dword [edx + 0x378], eax
jmp 0x5a780e
mov eax, dword [ebx]
cmp byte [eax + 0x3a], 0
je 0x5a77b5
mov eax, dword [ebx]
mov byte [eax + 0x39], 1
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp eax, dword [ebx]
jne 0x5a77f0
mov eax, dword [0x68e8ec]
mov eax, dword [eax]
call fcn.0050e03c
test al, al
je 0x5a780e
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 0x5a780e
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 0x5a78c9
mov eax, dword [ebx]
mov eax, dword [eax + 0x1b0]
mov edx, dword [ebx]
mov edx, dword [edx + 0x1b8]
dec edx
cmp eax, edx
jne 0x5a78c9
mov eax, dword [ebx]
cmp dword [eax + 0x1c4], 0
jle 0x5a78bf
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 [0x68e36c]
mov eax, dword [eax]
mov edx, dword [ebx]
call fcn.00529ea4
cmp byte [ebp - 6], 0
je 0x5a789b
mov eax, dword [ebx]
mov eax, dword [eax + 0x2a4]
call fcn.005b2460
jmp 0x5a78bf
mov eax, dword [ebx]
cmp dword [eax + 0x1d4], 0x31
jne 0x5a78b2
mov eax, 0x5a7a18
call fcn.005b23b4
jmp 0x5a78bf
mov eax, dword [ebx]
mov eax, dword [eax + 0x2a8]
call fcn.005b2460
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 0x5a78db
sub ax, 0x29
jne 0x5a78e9
mov eax, dword [ebx]
mov dword [eax + 0x390], 0xfffffff6
jmp 0x5a78f3
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 0x5a7969
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x3a4]
cmp eax, 0xc8
jbe 0x5a7969
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x394]
mov edx, dword [ebx]
cmp eax, dword [edx + 0x398]
jbe 0x5a795e
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 0x5a795e
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 0x5a798f
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 [0x68e600]
cmp byte [eax + 0x38], 0
je 0x5a79f2
mov eax, dword [ebx]
cmp byte [eax + 0x38], 0
jne 0x5a79c3
mov eax, dword [ebx]
cmp byte [eax + 0x31], 0
je 0x5a79f2
mov eax, dword [ebx]
cmp dword [eax + 0x34], 0
jbe 0x5a79f2
call sub.kernel32.dll_GetTickCount
mov edx, dword [ebx]
sub eax, dword [edx + 0x34]
cmp eax, 0x5dc
jbe 0x5a79f2
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 [0x68e36c]
mov eax, dword [eax]
mov edx, 0x13a0
call fcn.0052e9bc
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