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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
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 + 0x506], 0
mov eax, dword [0x544ccc]
mov dword [eax], edi
mov eax, dword [0x544bd4]
mov edx, dword [ebp + 8]
mov dword [eax], edx
mov eax, dword [0x544aa8]
mov byte [eax], 0
cmp byte [ebp - 1], 1
jne 0x4a71af
mov eax, dword [0x544ed8]
cmp byte [eax], 0
je 0x4a71af
mov eax, dword [0x5452a8]
mov eax, dword [eax]
call fcn.004d5894
jmp 0x4a7b0b
mov eax, dword [0x544978]
mov byte [eax], 0
mov eax, dword [0x544738]
cmp dword [eax], 0
je 0x4a7b0b
mov eax, dword [0x544a40]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov edx, dword [0x544574]
cmp eax, dword [edx]
jne 0x4a7b0b
mov eax, dword [0x5449f0]
cmp byte [eax], 0
ja 0x4a7b0b
test byte [ebp - 2], 0x10
je 0x4a73b9
mov al, byte [0x4a7b14]
cmp al, byte [ebp - 2]
jne 0x4a7206
mov eax, dword [0x54521c]
inc dword [eax]
mov eax, dword [0x54521c]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x14]
push eax
push 0
mov eax, dword [0x544574]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.00524788
mov ebx, eax
mov eax, dword [0x54521c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x14]
je 0x4a723c
mov eax, dword [0x54521c]
xor edx, edx
mov dword [eax], edx
test ebx, ebx
je 0x4a7284
test byte [ebp - 2], 4
je 0x4a728d
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5444a4]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a728d
cmp byte [ebx + 0x12], 0
jne 0x4a728d
cmp byte [ebx + 0x2c], 0
jne 0x4a728d
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.004aa548
jmp 0x4a7b0b
mov eax, dword [0x54521c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7b0b
mov eax, dword [0x5445c4]
push eax
mov eax, dword [0x5444b0]
push eax
mov eax, dword [0x544574]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.0052442c
mov eax, dword [0x544738]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov eax, ebx
mov edx, dword [0x5445c4]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jge 0x4a7377
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x5444b0]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
cmp eax, 2
jge 0x4a7377
mov eax, dword [0x5444b0]
mov eax, dword [eax]
push eax
mov ecx, dword [0x5445c4]
mov ecx, dword [ecx]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, ebx
call fcn.00527538
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004adf78
test al, al
je 0x4a73b9
mov eax, esi
call fcn.004adf4c
test al, al
je 0x4a73b9
mov eax, dword [0x544738]
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 [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov dx, 0xbc2
call fcn.005138f0
jmp 0x4a73b9
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a738e
mov eax, dword [0x544df8]
mov byte [eax], 2
jmp 0x4a7396
mov eax, dword [0x544df8]
mov byte [eax], 3
mov eax, dword [0x5445c4]
mov eax, dword [eax]
mov edx, dword [0x54488c]
mov dword [edx], eax
mov eax, dword [0x5444b0]
mov eax, dword [eax]
mov edx, dword [0x54472c]
mov dword [edx], eax
jmp 0x4a7b0b
test byte [ebp - 2], 8
je 0x4a7b0b
mov eax, dword [0x54521c]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x14]
push eax
push 1
mov eax, dword [0x544574]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.00524788
mov ebx, eax
test ebx, ebx
jne 0x4a7480
mov eax, dword [0x544574]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.00524984
test al, al
je 0x4a7480
mov eax, dword [0x544738]
cmp dword [eax], 0
je 0x4a7480
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x2c], 0
jne 0x4a7480
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
je 0x4a7480
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544d90]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a7b0b
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544d90]
mov dword [edx], eax
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 8]
push eax
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
push 0
mov eax, dword [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov edx, 0x13fd
mov eax, esi
call fcn.004aa548
jmp 0x4a7b0b
mov eax, dword [0x5445c4]
push eax
mov eax, dword [0x5444b0]
push eax
mov eax, dword [0x544574]
mov eax, dword [eax]
mov ecx, dword [ebp + 8]
mov edx, edi
call fcn.0052442c
mov eax, dword [0x54515c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5444e4]
cmp byte [eax + 0xa8], 0
je 0x4a75d5
test ebx, ebx
jne 0x4a75d5
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a75d5
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a75d5
mov eax, dword [0x5449f0]
cmp byte [eax], 0
jne 0x4a75d5
mov eax, dword [0x5444e4]
cmp byte [eax + 0xe7], 0x13
jne 0x4a75d5
mov eax, dword [0x5444b0]
mov eax, dword [eax]
push eax
mov ecx, dword [0x5445c4]
mov ecx, dword [ecx]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.00527538
and eax, 0xff
mov dword [ebp - 8], eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 8]
call fcn.00527708
mov eax, dword [0x5451f4]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
call fcn.00502d58
test al, al
je 0x4a7576
test byte [ebp - 2], 1
je 0x4a75d5
mov eax, esi
call fcn.004adf78
test al, al
je 0x4a75c8
mov eax, esi
call fcn.004adf4c
test al, al
je 0x4a75c8
mov eax, esi
call fcn.004adfb4
test al, al
je 0x4a75c8
mov eax, dword [0x544738]
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 [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov dx, 0xbc7
call fcn.005138f0
mov eax, dword [0x544aa8]
mov byte [eax], 1
jmp 0x4a7b0b
test byte [ebp - 2], 2
je 0x4a7719
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7719
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7719
mov eax, dword [0x5449f0]
cmp byte [eax], 0
jne 0x4a7719
mov eax, dword [0x5444b0]
mov eax, dword [eax]
push eax
mov ecx, dword [0x5445c4]
mov ecx, dword [ecx]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.00527538
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004adf78
test al, al
je 0x4a7709
mov eax, esi
call fcn.004adf4c
test al, al
je 0x4a7709
mov ecx, dword [0x5444b0]
mov ecx, dword [ecx]
mov edx, dword [0x5445c4]
mov edx, dword [edx]
mov eax, dword [0x544574]
mov eax, dword [eax]
call fcn.00525d0c
mov ebx, eax
test ebx, ebx
je 0x4a76d8
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebx + 4]
push eax
mov ecx, dword [0x5444b0]
mov ecx, dword [ecx]
mov edx, dword [0x5445c4]
mov edx, dword [edx]
mov eax, esi
call fcn.004ac548
mov eax, dword [0x544738]
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 [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.005138f0
jmp 0x4a7b0b
mov eax, dword [0x544738]
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 [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.005138f0
mov eax, dword [0x54488c]
mov dword [eax], 0xffffffff
jmp 0x4a7b0b
test ebx, ebx
jne 0x4a7727
test byte [ebp - 2], 1
je 0x4a799b
mov eax, dword [0x54488c]
mov dword [eax], 0xffffffff
test ebx, ebx
je 0x4a78c9
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5444a4]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x4a7795
cmp byte [ebx + 0x12], 0x32
jne 0x4a7795
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7795
push 0
push 0
mov eax, dword [0x5452a8]
mov eax, dword [eax]
mov eax, dword [eax + 0xb1c]
mov al, byte [eax + 0x2a8]
call fcn.004702f0
push eax
mov ecx, dword [ebx + 4]
mov edx, 0x3f2
mov eax, esi
call fcn.004aa548
jmp 0x4a7b0b
cmp byte [ebx + 0x2c], 0
jne 0x4a77ed
cmp byte [ebx + 0x12], 0
jne 0x4a77ed
cmp byte [ebx + 0x290], 0
je 0x4a77ed
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544d90]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x4a7b0b
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544d90]
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.004aa548
jmp 0x4a7b0b
cmp byte [ebx + 0x2c], 0
jne 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7b0b
mov eax, dword [0x5449f0]
cmp byte [eax], 0
jne 0x4a7b0b
mov eax, dword [0x54515c]
mov dword [eax], ebx
mov edx, dword [ebp - 8]
mov eax, esi
call fcn.004a657c
mov edi, eax
mov eax, dword [0x5449f0]
cmp byte [eax], 0
jne 0x4a786a
cmp byte [ebx + 0x12], 0
je 0x4a786a
cmp byte [ebx + 0x12], 0xb
je 0x4a786a
cmp byte [ebx + 0x12], 0x32
je 0x4a786a
mov edx, dword [ebx + 0x34]
mov eax, 0x4a7b20
call fcn.00405694
test eax, eax
je 0x4a78ae
test byte [ebp - 2], 1
jne 0x4a78ae
cmp byte [ebx + 0x12], 0x32
je 0x4a7881
mov eax, dword [0x544f94]
cmp byte [eax + 0x3a], 0
jne 0x4a78ae
cmp dword [ebx + 0x38], 0x45
je 0x4a78ae
mov eax, edi
call fcn.004a6960
test al, al
je 0x4a7b0b
mov ecx, 4
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
call fcn.004a67e0
test al, al
je 0x4a7b0b
mov edx, ebx
mov eax, esi
call fcn.004a6d74
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544df4]
mov dword [edx], eax
jmp 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7b0b
mov eax, dword [0x5449f0]
cmp byte [eax], 0
jne 0x4a7b0b
mov eax, dword [0x5444b0]
mov eax, dword [eax]
push eax
mov ecx, dword [0x5445c4]
mov ecx, dword [ecx]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.00527538
and eax, 0xff
mov dword [ebp - 8], eax
mov eax, esi
call fcn.004adf78
test al, al
je 0x4a7989
mov eax, esi
call fcn.004adf4c
test al, al
je 0x4a7989
mov eax, esi
call fcn.004adfb4
test al, al
je 0x4a7989
mov edx, dword [ebp - 8]
mov eax, esi
call fcn.004a62e0
mov edi, eax
mov eax, dword [0x544738]
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 [0x544738]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, edi
call fcn.005138f0
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544a48]
mov dword [edx], eax
jmp 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x290], 0
jne 0x4a7b0b
mov eax, dword [0x544738]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
mov eax, dword [0x5445c4]
cmp ebx, dword [eax]
jne 0x4a7a26
mov eax, dword [0x5444b0]
mov eax, dword [eax]
mov edx, dword [0x544738]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc]
jne 0x4a7a26
mov eax, dword [0x5444b0]
mov eax, dword [eax]
push eax
mov ecx, dword [0x5445c4]
mov ecx, dword [ecx]
mov eax, dword [0x544738]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x544738]
mov eax, ebx
call fcn.00527538
mov eax, esi
call fcn.004adf78
test al, al
je 0x4a7aac
mov eax, esi
call fcn.004adf4c
test al, al
je 0x4a7aac
mov eax, esi
call fcn.004abc80
jmp 0x4a7aac
mov eax, dword [0x544aa4]
cmp byte [eax + 0xf], 0
je 0x4a7aa5
mov eax, dword [0x544738]
mov eax, dword [eax]
movzx eax, byte [eax + 0xa2]
imul eax, eax, 0x3e8
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x1c]
fdiv dword [0x4a7b24]
call fcn.0040333c
mov edx, 0x3e8
sub edx, eax
mov dword [ebp - 0x18], edx
mov eax, dword [0x544738]
mov eax, dword [eax]
movsx eax, word [eax + 0x2a0]
cdq
push edx
push eax
mov eax, dword [ebp - 0x18]
xor edx, edx
call fcn.0040623c
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], edx
fild qword [ebp - 0x24]
fdiv dword [0x4a7b28]
call fcn.00403330
push eax
mov eax, dword [ebp - 0x18]
pop edx
sub eax, edx
mov edx, 1
call fcn.004660e8
mov dword [ebp - 0x18], eax
jmp 0x4a7aac
mov dword [ebp - 0x18], 0x3e8
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x544a48]
sub eax, dword [edx]
cmp eax, dword [ebp - 0x18]
jbe 0x4a7b0b
test byte [ebp - 2], 4
je 0x4a7ae5
mov eax, dword [0x544738]
mov eax, dword [eax]
cmp byte [eax + 0x16], 0
jne 0x4a7adb
mov eax, dword [0x544df8]
mov byte [eax], 2
jmp 0x4a7aed
mov eax, dword [0x544df8]
mov byte [eax], 3
jmp 0x4a7aed
mov eax, dword [0x544df8]
mov byte [eax], 1
mov eax, dword [0x5445c4]
mov eax, dword [eax]
mov edx, dword [0x54488c]
mov dword [edx], eax
mov eax, dword [0x5444b0]
mov eax, dword [eax]
mov edx, dword [0x54472c]
mov dword [edx], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8