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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe4
push ebx
push esi
push edi
mov byte [ebp - 2], cl
mov byte [ebp - 1], dl
mov esi, eax
mov edi, dword [ebp + 0xc]
mov word [esi + 0x3ca], 0
mov eax, dword [0x53ec6c]
mov dword [eax], edi
mov eax, dword [0x53eb6c]
mov edx, dword [ebp + 8]
mov dword [eax], edx
mov eax, dword [0x53ea40]
mov byte [eax], 0
cmp byte [ebp - 1], 1
jne 0x4a797f
mov eax, dword [0x53ee68]
cmp byte [eax], 0
je 0x4a797f
mov eax, dword [0x53f218]
mov eax, dword [eax]
call fcn.004d57ac
jmp 0x4a82a7
mov eax, dword [0x53e908]
mov byte [eax], 0
mov eax, dword [0x53e6d8]
cmp dword [eax], 0
je 0x4a82a7
mov eax, dword [0x53e9d0]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov edx, dword [0x53e520]
cmp eax, dword [edx]
jne 0x4a82a7
mov eax, dword [0x53e980]
cmp byte [eax], 0
ja 0x4a82a7
test byte [ebp - 2], 0x10
je 0x4a7b89
mov al, byte [0x4a82b0]
cmp al, byte [ebp - 2]
jne 0x4a79d6
mov eax, dword [0x53f1a4]
inc dword [eax]
mov eax, dword [0x53f1a4]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x14]
push eax
push 0
mov eax, dword [0x53e520]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.00510590
mov ebx, eax
mov eax, dword [0x53f1a4]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x14]
je 0x4a7a0c
mov eax, dword [0x53f1a4]
xor edx, edx
mov dword [eax], edx
test ebx, ebx
je 0x4a7a54
test byte [ebp - 2], 4
je 0x4a7a5d
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53e458]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a7a5d
cmp byte [ebx + 0x12], 0
jne 0x4a7a5d
cmp byte [ebx + 0x30], 0
jne 0x4a7a5d
mov eax, dword [ebx + 8]
push eax
mov eax, dword [ebx + 0xc]
push eax
push 0
mov ecx, dword [ebx + 4]
mov edx, 0x52
mov eax, esi
call fcn.004aa9d8
jmp 0x4a82a7
mov eax, dword [0x53f1a4]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a82a7
mov eax, dword [0x53e578]
push eax
mov eax, dword [0x53e454]
push eax
mov eax, dword [0x53e520]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.0051030c
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov eax, ebx
mov edx, dword [0x53e578]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jge 0x4a7b47
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x53e454]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jge 0x4a7b47
mov eax, dword [0x53e454]
mov eax, dword [eax]
push eax
mov ecx, dword [0x53e578]
mov ecx, dword [ecx]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, ebx
call fcn.005388ac
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004ae26c
test al, al
je 0x4a7b89
mov eax, esi
call fcn.004ae240
test al, al
je 0x4a7b89
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov dx, 0xbc2
call fcn.0051ee08
jmp 0x4a7b89
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7b5e
mov eax, dword [0x53ed98]
mov byte [eax], 1
jmp 0x4a7b66
mov eax, dword [0x53ed98]
mov byte [eax], 2
mov eax, dword [0x53e578]
mov eax, dword [eax]
mov edx, dword [0x53e824]
mov dword [edx], eax
mov eax, dword [0x53e454]
mov eax, dword [eax]
mov edx, dword [0x53e6cc]
mov dword [edx], eax
jmp 0x4a82a7
test byte [ebp - 2], 8
je 0x4a82a7
mov eax, dword [0x53f1a4]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x14]
push eax
push 1
mov eax, dword [0x53e520]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.00510590
mov ebx, eax
test ebx, ebx
jne 0x4a7c50
mov eax, dword [0x53e520]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.0051078c
test al, al
je 0x4a7c50
mov eax, dword [0x53e6d8]
cmp dword [eax], 0
je 0x4a7c50
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x30], 0
jne 0x4a7c50
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
je 0x4a7c50
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ed28]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a82a7
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ed28]
mov dword [edx], eax
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
push eax
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov edx, 0x13fd
mov eax, esi
call fcn.004aa9d8
jmp 0x4a82a7
mov eax, dword [0x53e578]
push eax
mov eax, dword [0x53e454]
push eax
mov eax, dword [0x53e520]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.0051030c
mov eax, dword [0x53f0e0]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x53e490]
cmp byte [eax + 0x58], 0
je 0x4a7d9f
test ebx, ebx
jne 0x4a7d9f
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7d9f
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a7d9f
mov eax, dword [0x53e980]
cmp byte [eax], 0
jne 0x4a7d9f
mov eax, dword [0x53e490]
cmp byte [eax + 0x68], 0x13
jne 0x4a7d9f
mov eax, dword [0x53e454]
mov eax, dword [eax]
push eax
mov ecx, dword [0x53e578]
mov ecx, dword [ecx]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.005388ac
and eax, 0xff
mov dword [ebp - 8], eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 8]
call fcn.00538a7c
mov eax, dword [0x53f170]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.0050a91c
test al, al
je 0x4a7d40
test byte [ebp - 2], 1
je 0x4a7d9f
mov eax, esi
call fcn.004ae26c
test al, al
je 0x4a7d92
mov eax, esi
call fcn.004ae240
test al, al
je 0x4a7d92
mov eax, esi
call fcn.004ae2a8
test al, al
je 0x4a7d92
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov dx, 0xbc7
call fcn.0051ee08
mov eax, dword [0x53ea40]
mov byte [eax], 1
jmp 0x4a82a7
test byte [ebp - 2], 2
je 0x4a7ee3
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7ee3
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a7ee3
mov eax, dword [0x53e980]
cmp byte [eax], 0
jne 0x4a7ee3
mov eax, dword [0x53e454]
mov eax, dword [eax]
push eax
mov ecx, dword [0x53e578]
mov ecx, dword [ecx]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.005388ac
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004ae26c
test al, al
je 0x4a7ed3
mov eax, esi
call fcn.004ae240
test al, al
je 0x4a7ed3
mov ecx, dword [0x53e454]
mov ecx, dword [ecx]
mov edx, dword [0x53e578]
mov edx, dword [edx]
mov eax, dword [0x53e520]
mov eax, dword [eax]
call fcn.00511be0
mov ebx, eax
test ebx, ebx
je 0x4a7ea2
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebx + 4]
push eax
mov ecx, dword [0x53e454]
mov ecx, dword [ecx]
mov edx, dword [0x53e578]
mov edx, dword [edx]
mov eax, esi
call fcn.004ac8d8
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.0051ee08
jmp 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.0051ee08
mov eax, dword [0x53e824]
mov dword [eax], 0xffffffff
jmp 0x4a82a7
test ebx, ebx
jne 0x4a7ef1
test byte [ebp - 2], 1
je 0x4a8165
mov eax, dword [0x53e824]
mov dword [eax], 0xffffffff
test ebx, ebx
je 0x4a8093
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53e458]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x4a7f5f
cmp byte [ebx + 0x12], 0x32
jne 0x4a7f5f
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a7f5f
push 0
push 0
mov eax, dword [0x53f218]
mov eax, dword [eax]
mov eax, dword [eax + 0xb1c]
mov al, byte [eax + 0x2a8]
call fcn.00478288
push eax
mov ecx, dword [ebx + 4]
mov edx, 0x3f2
mov eax, esi
call fcn.004aa9d8
jmp 0x4a82a7
cmp byte [ebx + 0x30], 0
jne 0x4a7fb7
cmp byte [ebx + 0x12], 0
jne 0x4a7fb7
cmp byte [ebx + 0x240], 0
je 0x4a7fb7
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ed28]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a82a7
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ed28]
mov dword [edx], eax
mov eax, dword [ebx + 8]
push eax
mov eax, dword [ebx + 0xc]
push eax
push 0
mov ecx, dword [ebx + 4]
mov edx, 0x13fd
mov eax, esi
call fcn.004aa9d8
jmp 0x4a82a7
cmp byte [ebx + 0x30], 0
jne 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a82a7
mov eax, dword [0x53e980]
cmp byte [eax], 0
jne 0x4a82a7
mov eax, dword [0x53f0e0]
mov dword [eax], ebx
mov edx, dword [ebp - 8]
mov eax, esi
call fcn.004a6cf4
mov edi, eax
mov eax, dword [0x53e980]
cmp byte [eax], 0
jne 0x4a8034
cmp byte [ebx + 0x12], 0
je 0x4a8034
cmp byte [ebx + 0x12], 0xb
je 0x4a8034
cmp byte [ebx + 0x12], 0x32
je 0x4a8034
mov edx, dword [ebx + 0x38]
mov eax, 0x4a82bc
call fcn.00405350
test eax, eax
je 0x4a8078
test byte [ebp - 2], 1
jne 0x4a8078
cmp byte [ebx + 0x12], 0x32
je 0x4a804b
mov eax, dword [0x53ef18]
cmp byte [eax + 0x3a], 0
jne 0x4a8078
cmp dword [ebx + 0x3c], 0x45
je 0x4a8078
mov eax, edi
call fcn.004a7130
test al, al
je 0x4a82a7
mov ecx, 4
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
call fcn.004a6fb0
test al, al
je 0x4a82a7
mov edx, ebx
mov eax, esi
call fcn.004a7544
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53ed8c]
mov dword [edx], eax
jmp 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a82a7
mov eax, dword [0x53e980]
cmp byte [eax], 0
jne 0x4a82a7
mov eax, dword [0x53e454]
mov eax, dword [eax]
push eax
mov ecx, dword [0x53e578]
mov ecx, dword [ecx]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.005388ac
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004ae26c
test al, al
je 0x4a8153
mov eax, esi
call fcn.004ae240
test al, al
je 0x4a8153
mov eax, esi
call fcn.004ae2a8
test al, al
je 0x4a8153
mov edx, dword [ebp - 8]
mov eax, esi
call fcn.004a6a00
mov edi, eax
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, edi
call fcn.0051ee08
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53e9d8]
mov dword [edx], eax
jmp 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x240], 0
jne 0x4a82a7
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov eax, dword [0x53e578]
cmp ebx, dword [eax]
jne 0x4a81e5
mov eax, dword [0x53e454]
mov eax, dword [eax]
mov edx, dword [0x53e6d8]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc]
jne 0x4a81e5
mov eax, dword [0x53e454]
mov eax, dword [eax]
push eax
mov ecx, dword [0x53e578]
mov ecx, dword [ecx]
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x53e6d8]
mov eax, ebx
call fcn.005388ac
mov eax, esi
call fcn.004ae26c
test al, al
je 0x4a8248
mov eax, esi
call fcn.004ae240
test al, al
je 0x4a8248
mov eax, esi
call fcn.004ac010
jmp 0x4a8248
mov eax, dword [0x53ea3c]
cmp byte [eax + 0xf], 0
je 0x4a821e
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
movzx eax, byte [eax + 0x72]
imul eax, eax, 0x3e8
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x1c]
fdiv dword [0x4a82c0]
call fcn.00402fd4
mov edx, 0x3e8
sub edx, eax
mov dword [ebp - 0x18], edx
jmp 0x4a8248
mov eax, dword [0x53ea3c]
movzx eax, byte [eax + 0x31]
imul eax, eax, 0x3e8
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x1c]
fdiv dword [0x4a82c0]
call fcn.00402fd4
mov edx, 0x3e8
sub edx, eax
mov dword [ebp - 0x18], edx
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x53e9d8]
sub eax, dword [edx]
cmp eax, dword [ebp - 0x18]
jbe 0x4a82a7
test byte [ebp - 2], 4
je 0x4a8281
mov eax, dword [0x53e6d8]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a8277
mov eax, dword [0x53ed98]
mov byte [eax], 1
jmp 0x4a8289
mov eax, dword [0x53ed98]
mov byte [eax], 2
jmp 0x4a8289
mov eax, dword [0x53ed98]
mov byte [eax], 0
mov eax, dword [0x53e578]
mov eax, dword [eax]
mov edx, dword [0x53e824]
mov dword [edx], eax
mov eax, dword [0x53e454]
mov eax, dword [eax]
mov edx, dword [0x53e6cc]
mov dword [edx], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8