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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
mov byte [ebp - 5], cl
mov esi, edx
mov dword [ebp - 4], eax
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x40c], edx
mov eax, dword [0x690300]
mov dword [eax], edi
mov eax, dword [0x6901a8]
mov edx, dword [ebp + 8]
mov dword [eax], edx
mov eax, dword [0x6900bc]
mov byte [eax], 0
cmp byte [ebp - 5], 1
jne 0x506b3c
mov eax, dword [0x68f680]
cmp byte [eax], 0
je 0x506b3c
mov eax, dword [0x690414]
mov eax, dword [eax]
call fcn.005464f0
jmp 0x5075ed
cmp byte [ebp - 5], 1
jne 0x506b65
mov eax, dword [0x68ff44]
cmp byte [eax], 0
je 0x506b65
mov eax, dword [0x68ff44]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.004480bc
jmp 0x5075ed
cmp esi, dword [ebp - 4]
jne 0x506b89
push edi
mov eax, dword [ebp + 8]
push eax
mov eax, dword [0x68f85c]
mov eax, dword [eax]
mov ecx, ebx
movzx edx, byte [ebp - 5]
call fcn.00489f58
test al, al
jne 0x5075ed
mov eax, dword [0x68fdf8]
cmp dword [eax], 0
je 0x5075ed
mov eax, dword [0x79ade8]
mov eax, dword [eax + 4]
cmp eax, dword [0x79adf4]
jne 0x5075ed
mov eax, dword [0x68ff44]
cmp byte [eax], 0
je 0x506bd8
mov eax, dword [0x68ff44]
cmp byte [eax], 5
je 0x506bd8
mov eax, dword [0x68ff44]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.004480bc
jmp 0x5075ed
xor eax, eax
push ebp
push 0x5075e6
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x6903e4]
cmp byte [eax], 0
je 0x506c49
mov eax, dword [0x6903e4]
mov byte [eax], 0
mov eax, dword [0x68fa5c]
mov byte [eax], 0
mov eax, dword [0x68fee4]
mov dword [eax], 0xffffffff
mov eax, dword [0x68fdf4]
mov dword [eax], 0xffffffff
mov eax, dword [0x68fce4]
mov dword [eax], 0xffffffff
push 1
push 0
mov ecx, 0xffffff
mov edx, 0x507600
mov eax, dword [0x79ade8]
call fcn.0053f540
mov eax, dword [0x690474]
mov edx, dword [0x4ae7c8]
call fcn.00406ba0
test bl, 0x10
je 0x506fca
movzx eax, byte [0x507614]
cmp al, bl
jne 0x506c64
mov eax, dword [0x68f9cc]
inc dword [eax]
mov eax, dword [0x68f9cc]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x18]
push eax
push 0
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x79adf4]
call fcn.0052bdec
mov esi, eax
mov eax, dword [0x68f9cc]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x18]
je 0x506c98
mov eax, dword [0x68f9cc]
xor edx, edx
mov dword [eax], edx
test esi, esi
je 0x506ce6
test bl, 4
je 0x506cef
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68fac0]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x506cef
cmp byte [esi + 0x16], 0
jne 0x506cef
cmp byte [esi + 0x4d], 0
jne 0x506cef
mov eax, dword [0x68fd98]
mov dword [eax], esi
mov eax, dword [ebp + 8]
push eax
mov eax, dword [0x690414]
mov eax, dword [eax]
mov ecx, edi
mov edx, esi
call fcn.00578ee4
call fcn.00404d0c
jmp 0x5075ed
mov eax, dword [0x68f9cc]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x100], 0
je 0x506d09
call fcn.00404d0c
jmp 0x5075ed
mov eax, dword [0x68fbfc]
push eax
mov eax, dword [0x68fab8]
push eax
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x79adf4]
call fcn.0052bb5c
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov eax, esi
mov edx, dword [0x68fbfc]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x506df8
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov edx, dword [0x68fab8]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x506df8
mov eax, dword [0x68fab8]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68fbfc]
mov ecx, dword [ecx]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, esi
call fcn.005b5e80
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050d8f4
test al, al
je 0x506fca
mov eax, dword [ebp - 4]
call fcn.0050d890
test al, al
je 0x506fca
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
movzx eax, byte [eax + 0x14]
cmp eax, dword [ebp - 0xc]
je 0x506fca
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov dx, 1
call fcn.005a09f8
jmp 0x506fca
mov eax, dword [0x68fab8]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68fbfc]
mov ecx, dword [ecx]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, esi
call fcn.005b5e80
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x14], eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0
je 0x506eae
movzx eax, byte [ebp - 0xc]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.005b5e14
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x79adf4]
call fcn.0052c234
test al, al
je 0x506f67
mov eax, dword [0x690450]
mov byte [eax], 1
mov eax, dword [0x68fee0]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68fdd4]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404d0c
jmp 0x5075ed
movzx eax, byte [ebp - 0xc]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.005b5da8
mov eax, dword [0x68ff90]
cmp byte [eax], 0
je 0x506f17
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x79adf4]
call fcn.0052c36c
test al, al
je 0x506f17
mov eax, dword [0x690450]
mov byte [eax], 6
mov eax, dword [0x68fee0]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68fdd4]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404d0c
jmp 0x5075ed
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x79adf4]
call fcn.0052c39c
test al, al
je 0x506f67
mov eax, dword [0x690450]
mov byte [eax], 1
mov eax, dword [0x68fee0]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68fdd4]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404d0c
jmp 0x5075ed
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x14], eax
movzx eax, byte [ebp - 0xc]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.005b5d48
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x79adf4]
call fcn.0052c684
test al, al
je 0x506fc0
mov eax, dword [0x690450]
mov byte [eax], 0
mov eax, dword [0x68fee0]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68fdd4]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404d0c
jmp 0x5075ed
test bl, 8
je 0x5075ba
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x100], 0
jne 0x5075ba
mov eax, dword [0x68f9cc]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x18]
push eax
push 1
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x79adf4]
call fcn.0052bdec
mov esi, eax
mov eax, dword [0x68ff44]
cmp byte [eax], 5
jne 0x507072
test esi, esi
je 0x507068
cmp byte [esi + 0x16], 0
jne 0x507068
cmp byte [esi + 0x4d], 0
jne 0x507068
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68fb64]
cmp eax, dword [edx]
jbe 0x507068
mov eax, dword [0x68fdf8]
cmp esi, dword [eax]
jne 0x507042
call fcn.00404d0c
jmp 0x5075ed
call sub.kernel32.dll_GetTickCount_1
add eax, 0xbb8
mov edx, dword [0x68fb64]
mov dword [edx], eax
mov eax, dword [esi + 0x10]
push eax
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
mov eax, dword [0x79ade4]
call fcn.0050cf34
call fcn.00404d0c
jmp 0x5075ed
mov eax, dword [0x68fbfc]
push eax
mov eax, dword [0x68fab8]
push eax
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x79adf4]
call fcn.0052bb5c
mov eax, dword [0x68f8d4]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x68fafc]
cmp byte [eax + 0xec], 0
je 0x5071ba
test esi, esi
jne 0x5071ba
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0
jne 0x5071ba
mov eax, dword [0x68fafc]
cmp byte [eax + 0xfe], 0x13
jne 0x5071ba
mov eax, dword [0x68fab8]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68fbfc]
mov ecx, dword [ecx]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b5e80
movzx eax, al
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0xc]
call fcn.005b6050
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x79ae18]
call fcn.00523850
test al, al
je 0x50713f
test bl, 1
je 0x5071ba
mov eax, dword [ebp - 4]
call fcn.0050d8f4
test al, al
je 0x507194
mov eax, dword [ebp - 4]
call fcn.0050d890
test al, al
je 0x507194
mov eax, dword [ebp - 4]
call fcn.0050d93c
test al, al
je 0x507194
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov dx, 8
call fcn.005a09f8
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x79ae18]
call fcn.00523850
test al, al
jne 0x5071b0
mov eax, dword [0x6900bc]
mov byte [eax], 1
call fcn.00404d0c
jmp 0x5075ed
test bl, 2
je 0x5072b9
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0
jne 0x5072b9
mov eax, dword [0x68fab8]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68fbfc]
mov ecx, dword [ecx]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b5e80
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050d8f4
test al, al
je 0x5072a9
mov eax, dword [ebp - 4]
call fcn.0050d890
test al, al
je 0x5072a9
mov ecx, dword [0x68fab8]
mov ecx, dword [ecx]
mov edx, dword [0x68fbfc]
mov edx, dword [edx]
mov eax, dword [0x79adf4]
call fcn.0052df9c
mov esi, eax
test esi, esi
je 0x507278
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [esi + 4]
push eax
push 0
push 0
push 0
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov dx, 3
call fcn.005a09f8
jmp 0x5072a9
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov dx, 3
call fcn.005a09f8
mov eax, dword [0x68fee0]
mov dword [eax], 0xffffffff
jmp 0x5075ba
test esi, esi
jne 0x5072c6
test bl, 1
je 0x50754c
mov eax, dword [0x68fee0]
mov dword [eax], 0xffffffff
test esi, esi
je 0x50742c
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68fac0]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x50739b
cmp byte [esi + 0x17], 0xa
jne 0x507345
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68f830]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x507345
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68f830]
mov dword [edx], eax
push 0
push 0
push 0
push 0
mov ecx, dword [esi + 4]
mov edx, 0x21
mov eax, dword [ebp - 4]
call fcn.0050a8f8
mov eax, esi
mov si, 0xfffb
call fcn.00404524
call fcn.00404d0c
jmp 0x5075ed
cmp byte [esi + 0x16], 0
jne 0x50739b
cmp byte [esi + 0x100], 0
je 0x50739b
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68f830]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x50739b
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x68f830]
mov dword [edx], eax
mov eax, dword [esi + 0xc]
push eax
mov eax, dword [esi + 0x10]
push eax
push 0
push 0
mov ecx, dword [esi + 4]
mov edx, 0x45
mov eax, dword [ebp - 4]
call fcn.0050a8f8
call fcn.00404d0c
jmp 0x5075ed
cmp byte [esi + 0x4d], 0
jne 0x5075ba
cmp byte [esi + 0x100], 0
jne 0x5075ba
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0
je 0x5073d7
mov eax, dword [0x68fafc]
cmp byte [eax + 0xbf3], 0x21
je 0x5073d7
cmp byte [esi + 0x17], 0x1e
jne 0x5075ba
mov eax, dword [0x68f8d4]
mov dword [eax], esi
cmp byte [esi + 0x16], 0
je 0x507401
cmp byte [esi + 0x17], 0xb
je 0x507401
cmp byte [esi + 0x17], 0xa
je 0x507401
mov edx, dword [esi + 0x58]
mov eax, 0x507620
call fcn.00405820
test eax, eax
je 0x507410
test bl, 1
jne 0x507410
cmp byte [esi + 0x70], 0x45
jne 0x5075ba
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00505fd0
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x690438]
mov dword [edx], eax
jmp 0x5075ba
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp byte [eax + 0x37], 0
jne 0x5075ba
mov eax, dword [0x68fab8]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68fbfc]
mov ecx, dword [ecx]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b5e80
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050d8f4
test al, al
je 0x50753d
mov eax, dword [ebp - 4]
call fcn.0050d890
test al, al
je 0x50753d
mov eax, dword [ebp - 4]
call fcn.0050d93c
test al, al
je 0x50753d
mov eax, 3
call fcn.0040346c
mov ebx, eax
add ebx, 7
mov eax, dword [0x68f954]
cmp byte [eax + 0x26], 0
jne 0x5074cf
mov eax, dword [0x68fcc4]
cmp byte [eax], 0
je 0x5074d4
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00505abc
test al, al
je 0x5074d4
mov ebx, 0xb
mov eax, dword [0x68fe08]
cmp byte [eax], 0
jne 0x5074e9
mov eax, dword [0x68f954]
cmp byte [eax + 0x27], 0
je 0x50750e
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
cmp word [eax + 0x89], 3
jb 0x50750e
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00505b50
test al, al
je 0x50750e
mov ebx, 0xc
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68fdf8]
mov eax, dword [eax]
mov edx, ebx
call fcn.005a09f8
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x690060]
mov dword [edx], eax
jmp 0x5075ba
mov eax, dword [0x68fbfc]
mov eax, dword [eax]
mov edx, dword [0x68fdf8]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc]
jne 0x507580
mov eax, dword [0x68fab8]
mov eax, dword [eax]
mov edx, dword [0x68fdf8]
mov edx, dword [edx]
cmp eax, dword [edx + 0x10]
jne 0x507580
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00508328
jmp 0x5075ba
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x690060]
sub eax, dword [edx]
cmp eax, 0x12c
jbe 0x5075ba
mov eax, dword [0x690450]
mov byte [eax], 0
mov eax, dword [0x68fbfc]
mov eax, dword [eax]
mov edx, dword [0x68fee0]
mov dword [edx], eax
mov eax, dword [0x68fab8]
mov eax, dword [eax]
mov edx, dword [0x68fdd4]
mov dword [edx], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5075ed
mov eax, dword [0x68ff44]
cmp byte [eax], 0
je 0x5075e5
mov eax, dword [0x68ff44]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.004480bc
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc