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

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x56f075
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x5d38cc]
cmp byte [eax], 0
je 0x56e8c5
mov eax, dword [0x5d3434]
mov byte [eax], 1
mov eax, dword [ebp - 4]
call fcn.0057067c
mov eax, dword [0x5d3c60]
cmp dword [eax], 0
jge 0x56f05a
test ebx, ebx
je 0x56f05a
lea eax, [ebp - 0xc]
call fcn.00404414
mov eax, dword [0x5d3f1c]
cmp byte [eax], 0
je 0x56e9eb
call fcn.005c95f0
test al, al
je 0x56e9eb
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
call fcn.004074a8
test al, 0x80
jne 0x56e9eb
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edx, word [eax + 0x122]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx eax, word [eax + 0x120]
mov ecx, 1
call fcn.005c48a4
mov edx, dword [0x5d3d60]
cmp eax, dword [edx]
jl 0x56e9eb
call fcn.005c8388
imul eax, eax, 0x35
mov edx, dword [0x5d3260]
add edx, eax
lea eax, [ebp - 0x10]
call fcn.00404678
mov eax, dword [ebp - 0x10]
call fcn.005c5974
test al, al
jne 0x56e979
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
xor ecx, ecx
mov dl, 1
call fcn.00552aec
test al, al
jne 0x56f05a
jmp 0x56e9eb
lea eax, [ebp - 0xc]
mov edx, 0x56f08c
call fcn.004044ac
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535624
test al, al
je 0x56e9eb
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535578
test al, al
je 0x56e9eb
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535714
test al, al
je 0x56e9eb
push 0x56f08c
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
push eax
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx ecx, word [eax + 0x122]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edx, word [eax + 0x120]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.0054518c
mov eax, dword [0x5d3b68]
cmp byte [eax], 0
je 0x56ea87
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3840]
sub eax, dword [edx]
mov edx, dword [0x5d3ae8]
cmp eax, dword [edx]
jbe 0x56ea87
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, 0x56f09c
call fcn.005455fc
test eax, eax
je 0x56ea87
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535624
test al, al
je 0x56ea87
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535714
test al, al
je 0x56ea87
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3840]
mov dword [edx], eax
push 0x56f09c
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
push eax
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx ecx, word [eax + 0x122]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edx, word [eax + 0x120]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.0054518c
mov eax, dword [0x5d3640]
cmp byte [eax], 0
je 0x56eb9f
cmp byte [ebx + 0x78], 0
jne 0x56eb9f
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp byte [eax + 0x69], 0
je 0x56eabd
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp byte [eax + 0x69], 2
jne 0x56eb9f
mov edx, dword [0x5d3e44]
mov edx, dword [edx]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.005455fc
test eax, eax
je 0x56eb9f
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3464]
sub eax, dword [edx]
xor edx, edx
push edx
push eax
mov eax, dword [0x5d347c]
imul eax, dword [eax], 0x3e8
cdq
cmp edx, dword [esp + 4]
jne 0x56eb09
cmp eax, dword [esp]
pop edx
pop eax
jae 0x56eb9f
jmp 0x56eb11
pop edx
pop eax
jge 0x56eb9f
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535578
test al, al
je 0x56eb9f
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535624
test al, al
je 0x56eb9f
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535714
test al, al
je 0x56eb9f
movzx edx, word [ebx + 0x122]
movzx eax, word [ebx + 0x120]
mov ecx, 2
call fcn.005c48a4
mov edx, dword [0x5d33a4]
cmp eax, dword [edx]
jl 0x56eb9f
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3464]
mov dword [edx], eax
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.005726a4
mov ebx, eax
mov eax, dword [0x5d3e44]
mov eax, dword [eax]
push eax
push ebx
movzx ecx, word [ebx + 0x122]
movzx edx, word [ebx + 0x120]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.0054518c
mov eax, dword [0x5d31b0]
cmp byte [eax], 0
jne 0x56ebb9
cmp byte [ebx + 0x65], 0
jne 0x56ec27
mov eax, dword [0x5d3a94]
cmp byte [eax], 0
je 0x56ec27
movzx eax, word [ebx + 0x122]
push eax
movzx ecx, word [ebx + 0x120]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edx, word [eax + 0x122]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx eax, word [eax + 0x120]
call fcn.005c40a0
cmp eax, 6
jge 0x56ec27
lea eax, [ebp - 0x14]
call fcn.005cb424
cmp dword [ebp - 0x14], 0
je 0x56ec27
mov edx, dword [0x5d3de0]
mov edx, dword [edx]
mov ecx, ebx
mov eax, dword [ebp - 4]
call fcn.0057477c
cmp eax, 1
je 0x56f05a
cmp eax, 2
jne 0x56ec27
mov eax, dword [0x5d327c]
mov dword [eax], 1
mov eax, dword [0x5d3b3c]
cmp dword [eax], 3
je 0x56f05a
lea eax, [ebp - 0xc]
call fcn.00404414
xor eax, eax
xor esi, esi
lea edi, [esi + esi*8]
cmp byte [ebx + edi + 0x18], 0
je 0x56ec83
mov dl, byte [ebx + edi + 0x1a]
cmp dl, byte [ebx + edi + 0x19]
jae 0x56ec83
lea eax, [ebp - 0xc]
mov edx, dword [ebx + edi + 0x14]
call fcn.004044ac
mov eax, dword [ebp - 0xc]
mov edx, 0x56f0b0
call fcn.00404820
jne 0x56ec7f
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0056f8c8
jmp 0x56f05a
mov al, 1
jmp 0x56ec89
inc esi
cmp esi, 3
jne 0x56ec41
mov edx, dword [0x5d3dd0]
mov dword [edx], 1
mov edx, dword [0x5d3b3c]
cmp dword [edx], 0
jne 0x56ecb3
test al, al
jne 0x56ecb3
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0056f8c8
jmp 0x56f05a
mov edx, dword [0x5d3b3c]
cmp dword [edx], 2
jne 0x56ece8
test al, al
jne 0x56ece8
mov eax, dword [0x5d327c]
mov eax, dword [eax]
and eax, 0x80000003
jns 0x56ecd5
dec eax
or eax, 0xfffffffc
inc eax
test eax, eax
je 0x56ecf8
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0056f8c8
jmp 0x56f05a
mov eax, dword [ebp - 4]
call fcn.00573d70
mov edx, dword [0x5d3dd0]
mov dword [edx], eax
movzx eax, word [ebx + 0x120]
push eax
movzx eax, word [ebx + 0x122]
push eax
mov eax, dword [0x5d3dd0]
mov eax, dword [eax]
push eax
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx ecx, word [eax + 0x122]
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edx, word [eax + 0x120]
mov eax, ebx
call fcn.005c68b0
test al, al
je 0x56ef8a
cmp byte [ebx + 0x78], 0
jne 0x56ef8a
mov eax, dword [0x5d3c60]
cmp dword [eax], 0
jge 0x56ef8a
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535624
test al, al
je 0x56ef78
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535578
test al, al
je 0x56ef78
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535714
test al, al
je 0x56ef78
mov eax, dword [0x5d3b38]
mov byte [eax], 1
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
xor edx, edx
call fcn.005cf318
mov eax, dword [0x5d3854]
mov byte [eax], 1
call fcn.005c8388
imul eax, eax, 0x35
mov edx, dword [0x5d3260]
add edx, eax
lea eax, [ebp - 0x18]
call fcn.00404678
mov eax, dword [ebp - 0x18]
call fcn.005c5974
test al, al
jne 0x56ee1c
call fcn.005c95f0
test al, al
je 0x56edef
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
xor ecx, ecx
xor edx, edx
call fcn.00552aec
jmp 0x56f05a
mov eax, dword [0x5d3b3c]
cmp dword [eax], 2
jne 0x56ee00
mov eax, dword [0x5d327c]
inc dword [eax]
mov eax, dword [0x5d3b60]
mov edx, 0x56f0c4
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d32d4]
mov dword [edx], eax
mov eax, dword [0x5d387c]
cmp dword [eax], 0xf
jle 0x56ee88
mov eax, dword [0x5d3d3c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5d387c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5d3774]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
call fcn.005ccfb8
test al, al
je 0x56ee5d
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
call fcn.005ccfc8
mov dword [ebx + 0x108], 0xffffffff
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x10c], eax
push 1
mov cl, 1
mov edx, 0x56f0dc
mov eax, dword [ebp - 4]
call fcn.00574724
jmp 0x56ef78
cmp byte [ebx + 0x78], 0
jne 0x56ef78
mov eax, dword [0x5d37a8]
xor edx, edx
mov dword [eax], edx
cmp dword [ebp - 0xc], 0
jne 0x56eeae
lea eax, [ebp - 0xc]
mov edx, 0x56f0f4
call fcn.004044ac
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, dword [ebp - 0xc]
call fcn.005455fc
mov dword [ebp - 8], eax
mov eax, dword [0x5d327c]
inc dword [eax]
xor esi, esi
lea edi, [esi + esi*8]
cmp byte [ebx + edi + 0x18], 0
je 0x56eef1
mov al, byte [ebx + edi + 0x1a]
cmp al, byte [ebx + edi + 0x19]
jae 0x56eef1
mov eax, dword [ebx + edi + 0x14]
mov edx, dword [ebp - 0xc]
call fcn.00404820
jne 0x56eef1
inc byte [ebx + edi + 0x1a]
jmp 0x56eef7
inc esi
cmp esi, 3
jne 0x56eec9
cmp dword [ebp - 8], 0
je 0x56ef78
mov eax, dword [ebp - 8]
movzx eax, word [eax + 0x1a]
mov edx, dword [ebp - 8]
movzx edx, byte [edx + 0x3c]
add eax, edx
mov edx, dword [0x5d34c0]
mov edx, dword [edx]
movzx edx, word [edx + 0x9a]
cmp eax, edx
ja 0x56ef5c
mov eax, dword [0x5d3d3c]
inc dword [eax]
mov eax, dword [0x5d387c]
inc dword [eax]
mov eax, dword [ebp - 0xc]
push eax
push ebx
movzx ecx, word [ebx + 0x122]
movzx edx, word [ebx + 0x120]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.0054518c
mov eax, dword [0x5d35cc]
mov edx, dword [ebp - 0xc]
call fcn.00404468
jmp 0x56ef78
mov eax, dword [0x5d3b60]
mov edx, 0x56f108
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d32d4]
mov dword [edx], eax
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3868]
mov dword [edx], eax
jmp 0x56f05a
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp byte [eax + 0x119], 0
jne 0x56f000
mov eax, dword [0x5d32c4]
mov eax, dword [eax]
call fcn.005b648c
mov ebx, eax
test ebx, ebx
je 0x56efdf
mov edx, dword [0x5d3e24]
mov edx, dword [edx]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov ecx, ebx
call fcn.0055686c
test al, al
je 0x56efdf
mov eax, dword [0x5d3e24]
mov dword [eax], ebx
mov eax, dword [0x5d3d3c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5d387c]
xor edx, edx
mov dword [eax], edx
mov edx, dword [0x5d3e24]
mov edx, dword [edx]
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.00571248
test al, al
jne 0x56f05a
mov eax, dword [0x5d3e24]
xor edx, edx
mov dword [eax], edx
jmp 0x56f05a
mov eax, dword [0x5d33d4]
cmp byte [eax], 0
je 0x56f05a
test ebx, ebx
je 0x56f05a
mov esi, dword [ebx + 0x108]
test esi, esi
je 0x56f05a
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp esi, dword [eax + 0x60]
je 0x56f05a
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, esi
call fcn.00535fec
test al, al
jne 0x56f05a
mov edx, dword [0x5d3864]
mov edx, dword [edx]
mov eax, ebx
call fcn.005c4cd4
test al, al
je 0x56f05a
push 0
mov cl, 1
mov edx, 0x56f120
mov eax, dword [ebp - 4]
call fcn.00574724
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x56f07c
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.00404438
ret