Function at 0x506e24
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 [0x68f044]
mov dword [eax], edi
mov eax, dword [0x68eecc]
mov edx, dword [ebp + 8]
mov dword [eax], edx
mov eax, dword [0x68edc8]
mov byte [eax], 0
cmp byte [ebp - 5], 1
jne 0x506e75
mov eax, dword [0x68e2f0]
cmp byte [eax], 0
je 0x506e75
mov eax, dword [0x68f170]
mov eax, dword [eax]
call fcn.00543fa4
jmp 0x507946
cmp byte [ebp - 5], 1
jne 0x506e9e
mov eax, dword [0x68ec18]
cmp byte [eax], 0
je 0x506e9e
mov eax, dword [0x68ec18]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.00447e40
jmp 0x507946
cmp esi, dword [ebp - 4]
jne 0x506ec2
push edi
mov eax, dword [ebp + 8]
push eax
mov eax, dword [0x68e4f0]
mov eax, dword [eax]
mov ecx, ebx
movzx edx, byte [ebp - 5]
call fcn.0049445c
test al, al
jne 0x507946
mov eax, dword [0x68eab8]
cmp dword [eax], 0
je 0x507946
mov eax, dword [0x69a58c]
mov eax, dword [eax + 4]
cmp eax, dword [0x69a598]
jne 0x507946
mov eax, dword [0x68ec18]
cmp byte [eax], 0
je 0x506f11
mov eax, dword [0x68ec18]
cmp byte [eax], 5
je 0x506f11
mov eax, dword [0x68ec18]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.00447e40
jmp 0x507946
xor eax, eax
push ebp
push 0x50793f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x68f140]
cmp byte [eax], 0
je 0x506f82
mov eax, dword [0x68f140]
mov byte [eax], 0
mov eax, dword [0x68e708]
mov byte [eax], 0
mov eax, dword [0x68eba8]
mov dword [eax], 0xffffffff
mov eax, dword [0x68eab4]
mov dword [eax], 0xffffffff
mov eax, dword [0x68e9a8]
mov dword [eax], 0xffffffff
push 1
push 0
mov ecx, 0xffffff
mov edx, 0x507958
mov eax, dword [0x69a58c]
call fcn.0053d6d4
mov eax, dword [0x68f1d4]
mov edx, dword [0x4a750c]
call fcn.004069ec
test bl, 0x10
je 0x5072fc
movzx eax, byte [0x50796c]
cmp al, bl
jne 0x506f9d
mov eax, dword [0x68e678]
inc dword [eax]
mov eax, dword [0x68e678]
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 [0x69a598]
call fcn.0052c488
mov esi, eax
mov eax, dword [0x68e678]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x18]
je 0x506fd1
mov eax, dword [0x68e678]
xor edx, edx
mov dword [eax], edx
test esi, esi
je 0x507018
test bl, 4
je 0x507021
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e774]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x507021
cmp byte [esi + 0x16], 0
jne 0x507021
cmp byte [esi + 0x31], 0
jne 0x507021
mov eax, dword [ebp + 8]
push eax
mov eax, dword [0x68f170]
mov eax, dword [eax]
mov ecx, edi
mov edx, esi
call fcn.00570e2c
call fcn.00404c4c
jmp 0x507946
mov eax, dword [0x68e678]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x134], 0
je 0x50703b
call fcn.00404c4c
jmp 0x507946
mov eax, dword [0x68e8b8]
push eax
mov eax, dword [0x68e76c]
push eax
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x69a598]
call fcn.0052c088
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov eax, esi
mov edx, dword [0x68e8b8]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x50712a
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov edx, dword [0x68e76c]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x50712a
mov eax, dword [0x68e76c]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68e8b8]
mov ecx, dword [ecx]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, esi
call fcn.005b7fb8
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050e0a0
test al, al
je 0x5072fc
mov eax, dword [ebp - 4]
call fcn.0050e03c
test al, al
je 0x5072fc
mov eax, dword [0x68eab8]
mov eax, dword [eax]
movzx eax, byte [eax + 0x14]
cmp eax, dword [ebp - 0xc]
je 0x5072fc
mov eax, dword [0x68eab8]
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 [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov dx, 1
call fcn.005a33d8
jmp 0x5072fc
mov eax, dword [0x68e76c]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68e8b8]
mov ecx, dword [ecx]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, esi
call fcn.005b7fb8
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x14], eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x1c], 0
je 0x5071e0
movzx eax, byte [ebp - 0xc]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.005b7f4c
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x69a598]
call fcn.0052c8d0
test al, al
je 0x507299
mov eax, dword [0x68f1ac]
mov byte [eax], 1
mov eax, dword [0x68eba4]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68ea94]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404c4c
jmp 0x507946
movzx eax, byte [ebp - 0xc]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.005b7ee0
mov eax, dword [0x68ec7c]
cmp byte [eax], 0
je 0x507249
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x69a598]
call fcn.0052ca08
test al, al
je 0x507249
mov eax, dword [0x68f1ac]
mov byte [eax], 6
mov eax, dword [0x68eba4]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68ea94]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404c4c
jmp 0x507946
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x69a598]
call fcn.0052ca38
test al, al
je 0x507299
mov eax, dword [0x68f1ac]
mov byte [eax], 1
mov eax, dword [0x68eba4]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68ea94]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404c4c
jmp 0x507946
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [0x68eab8]
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.005b7e80
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x69a598]
call fcn.0052cd20
test al, al
je 0x5072f2
mov eax, dword [0x68f1ac]
mov byte [eax], 0
mov eax, dword [0x68eba4]
mov edx, dword [ebp - 0x10]
mov dword [eax], edx
mov eax, dword [0x68ea94]
mov edx, dword [ebp - 0x14]
mov dword [eax], edx
call fcn.00404c4c
jmp 0x507946
test bl, 8
je 0x507913
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x134], 0
jne 0x507913
mov eax, dword [0x68e678]
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 [0x69a598]
call fcn.0052c488
mov esi, eax
mov eax, dword [0x68ec18]
cmp byte [eax], 5
jne 0x5073a4
test esi, esi
je 0x50739a
cmp byte [esi + 0x16], 0
jne 0x50739a
cmp byte [esi + 0x31], 0
jne 0x50739a
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e818]
cmp eax, dword [edx]
jbe 0x50739a
mov eax, dword [0x68eab8]
cmp esi, dword [eax]
jne 0x507374
call fcn.00404c4c
jmp 0x507946
call sub.kernel32.dll_GetTickCount
add eax, 0xbb8
mov edx, dword [0x68e818]
mov dword [edx], eax
mov eax, dword [esi + 0x10]
push eax
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
mov eax, dword [0x69a588]
call fcn.0050d6ec
call fcn.00404c4c
jmp 0x507946
mov eax, dword [0x68e8b8]
push eax
mov eax, dword [0x68e76c]
push eax
mov ecx, dword [ebp + 8]
mov edx, edi
mov eax, dword [0x69a598]
call fcn.0052c088
mov eax, dword [0x68e570]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x68e7a8]
cmp byte [eax + 0x10e], 0
je 0x5074ec
test esi, esi
jne 0x5074ec
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x1c], 0
jne 0x5074ec
mov eax, dword [0x68e7a8]
cmp byte [eax + 0x120], 0x13
jne 0x5074ec
mov eax, dword [0x68e76c]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68e8b8]
mov ecx, dword [ecx]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b7fb8
movzx eax, al
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0xc]
call fcn.005b8188
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x69a5ac]
call fcn.00523aa0
test al, al
je 0x507471
test bl, 1
je 0x5074ec
mov eax, dword [ebp - 4]
call fcn.0050e0a0
test al, al
je 0x5074c6
mov eax, dword [ebp - 4]
call fcn.0050e03c
test al, al
je 0x5074c6
mov eax, dword [ebp - 4]
call fcn.0050e0e8
test al, al
je 0x5074c6
mov eax, dword [0x68eab8]
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 [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov dx, 8
call fcn.005a33d8
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x69a5ac]
call fcn.00523aa0
test al, al
jne 0x5074e2
mov eax, dword [0x68edc8]
mov byte [eax], 1
call fcn.00404c4c
jmp 0x507946
test bl, 2
je 0x507613
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x1c], 0
jne 0x507613
mov eax, dword [0x68e76c]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68e8b8]
mov ecx, dword [ecx]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b7fb8
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050e0a0
test al, al
je 0x507603
mov eax, dword [ebp - 4]
call fcn.0050e03c
test al, al
je 0x507603
mov ecx, dword [0x68e76c]
mov ecx, dword [ecx]
mov edx, dword [0x68e8b8]
mov edx, dword [edx]
mov eax, dword [0x69a598]
call fcn.0052e94c
mov esi, eax
test esi, esi
je 0x5075d2
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [esi + 4]
push eax
mov ecx, dword [0x68e76c]
mov ecx, dword [ecx]
mov edx, dword [0x68e8b8]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0050c9b8
mov eax, dword [0x68eab8]
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 [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov dx, 3
call fcn.005a33d8
call fcn.00404c4c
jmp 0x507946
mov eax, dword [0x68eab8]
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 [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov dx, 3
call fcn.005a33d8
mov eax, dword [0x68eba4]
mov dword [eax], 0xffffffff
jmp 0x507913
test esi, esi
jne 0x507620
test bl, 1
je 0x5078a5
mov eax, dword [0x68eba4]
mov dword [eax], 0xffffffff
test esi, esi
je 0x507786
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e774]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x5076f5
cmp byte [esi + 0x17], 0xa
jne 0x50769f
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e4c0]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x50769f
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e4c0]
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.0050b274
mov eax, esi
mov si, 0xfffb
call fcn.00404528
call fcn.00404c4c
jmp 0x507946
cmp byte [esi + 0x16], 0
jne 0x5076f5
cmp byte [esi + 0x134], 0
je 0x5076f5
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e4c0]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x5076f5
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68e4c0]
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.0050b274
call fcn.00404c4c
jmp 0x507946
cmp byte [esi + 0x31], 0
jne 0x507913
cmp byte [esi + 0x134], 0
jne 0x507913
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x1c], 0
je 0x507731
mov eax, dword [0x68e7a8]
cmp byte [eax + 0xdad], 0x21
je 0x507731
cmp byte [esi + 0x17], 0x1e
jne 0x507913
mov eax, dword [0x68e570]
mov dword [eax], esi
cmp byte [esi + 0x16], 0
je 0x50775b
cmp byte [esi + 0x17], 0xb
je 0x50775b
cmp byte [esi + 0x17], 0xa
je 0x50775b
mov edx, dword [esi + 0x40]
mov eax, 0x507978
call fcn.00405744
test eax, eax
je 0x50776a
test bl, 1
jne 0x50776a
cmp byte [esi + 0x58], 0x45
jne 0x507913
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.005060dc
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68f194]
mov dword [edx], eax
jmp 0x507913
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp byte [eax + 0x1c], 0
jne 0x507913
mov eax, dword [0x68e76c]
mov eax, dword [eax]
push eax
mov ecx, dword [0x68e8b8]
mov ecx, dword [ecx]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
call fcn.005b7fb8
movzx eax, al
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0050e0a0
test al, al
je 0x507896
mov eax, dword [ebp - 4]
call fcn.0050e03c
test al, al
je 0x507896
mov eax, dword [ebp - 4]
call fcn.0050e0e8
test al, al
je 0x507896
mov eax, 3
call fcn.00403440
mov ebx, eax
add ebx, 7
mov eax, dword [0x68e600]
cmp byte [eax + 0x26], 0
jne 0x507829
mov eax, dword [0x68e988]
cmp byte [eax], 0
je 0x50782e
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00505924
test al, al
je 0x50782e
mov ebx, 0xb
mov eax, dword [0x68eac4]
cmp byte [eax], 0
jne 0x507843
mov eax, dword [0x68e600]
cmp byte [eax + 0x27], 0
je 0x507867
mov eax, dword [0x68eab8]
mov eax, dword [eax]
cmp dword [eax + 0x97], 3
jl 0x507867
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00505b00
test al, al
je 0x507867
mov ebx, 0xc
mov eax, dword [0x68eab8]
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 [0x68eab8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x68eab8]
mov eax, dword [eax]
mov edx, ebx
call fcn.005a33d8
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68ed5c]
mov dword [edx], eax
jmp 0x507913
mov eax, dword [0x68e8b8]
mov eax, dword [eax]
mov edx, dword [0x68eab8]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc]
jne 0x5078d9
mov eax, dword [0x68e76c]
mov eax, dword [eax]
mov edx, dword [0x68eab8]
mov edx, dword [edx]
cmp eax, dword [edx + 0x10]
jne 0x5078d9
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.005089e4
jmp 0x507913
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x68ed5c]
sub eax, dword [edx]
cmp eax, 0x12c
jbe 0x507913
mov eax, dword [0x68f1ac]
mov byte [eax], 0
mov eax, dword [0x68e8b8]
mov eax, dword [eax]
mov edx, dword [0x68eba4]
mov dword [edx], eax
mov eax, dword [0x68e76c]
mov eax, dword [eax]
mov edx, dword [0x68ea94]
mov dword [edx], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x507946
mov eax, dword [0x68ec18]
cmp byte [eax], 0
je 0x50793e
mov eax, dword [0x68ec18]
mov byte [eax], 0
mov dx, 1
mov eax, dword [ebp - 4]
call fcn.00447e40
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc