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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd8
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x18], ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x56e772
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x5d3598]
mov eax, dword [eax]
cmp dword [eax + 8], 0
jg 0x56dddc
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0056f8c8
mov eax, dword [0x5d3c60]
cmp dword [eax], 0
jge 0x56e757
mov eax, dword [ebp - 4]
call fcn.00573d70
mov edx, dword [0x5d3dd0]
mov dword [edx], eax
test ebx, ebx
je 0x56e757
mov eax, dword [0x5d31b0]
cmp byte [eax], 0
jne 0x56de12
cmp byte [ebx + 0x65], 0
jne 0x56de75
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 0x56de75
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, 0x56e788
call fcn.005455fc
test eax, eax
je 0x56de75
mov edx, dword [0x5d3de0]
mov edx, dword [edx]
mov ecx, ebx
mov eax, dword [ebp - 4]
call fcn.0057477c
dec eax
je 0x56e757
lea eax, [ebp - 0x18]
call fcn.00404414
mov dword [ebp - 0x10], 0xf
xor esi, esi
lea edi, [esi + esi*8]
cmp byte [ebx + edi + 0x18], 0
je 0x56dee6
mov al, byte [ebx + edi + 0x1a]
cmp al, byte [ebx + edi + 0x19]
jae 0x56dee6
lea eax, [ebp - 0x18]
mov edx, dword [ebx + edi + 0x14]
call fcn.004044ac
mov eax, dword [ebp - 0x18]
mov edx, 0x56e798
call fcn.00404820
jne 0x56deec
xor eax, eax
mov al, byte [ebx + edi + 0x19]
mov dword [ebp - 0x10], eax
mov eax, dword [0x5d32c4]
mov eax, dword [eax]
call fcn.005b4bc8
mov edx, dword [0x5d3b40]
cmp eax, dword [edx]
jl 0x56deec
mov al, byte [ebx + edi + 0x19]
mov byte [ebx + edi + 0x1a], al
lea eax, [ebp - 0x18]
call fcn.00404414
jmp 0x56deec
inc esi
cmp esi, 3
jne 0x56de86
mov eax, dword [ebp - 0x18]
mov edx, 0x56e7ac
call fcn.00404820
jne 0x56df0a
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0056f8c8
jmp 0x56e757
xor eax, eax
mov dword [ebp - 0x14], eax
cmp byte [ebx + 0x78], 0
jne 0x56e687
mov eax, dword [0x5d3c60]
cmp dword [eax], 0
jge 0x56e687
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 0x56e687
cmp byte [ebx + 0x65], 0
jne 0x56e04f
mov eax, dword [0x5d3240]
cmp byte [eax], 0
je 0x56e04f
movzx eax, word [ebx + 0x120]
push eax
movzx eax, word [ebx + 0x122]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xc]
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 [ebp - 4]
call fcn.005779e8
test al, al
je 0x56e04f
push 0x56e7c0
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 8]
call fcn.00408cf0
push dword [ebp - 0x1c]
push 0x56e7d0
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.00408cf0
push dword [ebp - 0x20]
mov eax, dword [0x5d3368]
mov edx, 4
call fcn.00404794
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3f30]
mov dword [edx], eax
mov eax, dword [0x5d3c60]
mov edx, dword [ebp - 8]
mov dword [eax], edx
mov eax, dword [0x5d3b5c]
mov edx, dword [ebp - 0xc]
mov dword [eax], edx
mov eax, dword [ebp - 4]
call fcn.0057170c
test al, al
jne 0x56e04f
mov eax, dword [0x5d3c60]
mov dword [eax], 0xffffffff
mov eax, dword [0x5d3b60]
mov edx, 0x56e7dc
call fcn.00404468
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d32d4]
mov dword [edx], eax
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535624
test al, al
je 0x56e675
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535578
test al, al
je 0x56e675
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.00535714
test al, al
je 0x56e675
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
mov eax, dword [0x5d387c]
cmp dword [eax], 0xf
jle 0x56e0c2
mov eax, dword [ebp - 0x18]
mov edx, 0x56e798
call fcn.00404820
jne 0x56e0dd
mov eax, dword [ebp - 0x18]
mov edx, 0x56e798
call fcn.00404820
jne 0x56e13f
mov eax, dword [0x5d387c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x10]
jle 0x56e13f
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 0x56e114
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, 0x56e7f0
mov eax, dword [ebp - 4]
call fcn.00574724
jmp 0x56e675
cmp byte [ebx + 0x78], 0
jne 0x56e675
mov eax, dword [0x5d37a8]
xor edx, edx
mov dword [eax], edx
cmp dword [ebp - 0x18], 0
jne 0x56e168
lea eax, [ebp - 0x18]
mov edx, dword [0x5d392c]
mov edx, dword [edx]
call fcn.004044ac
cmp byte [ebx + 0x65], 0
jne 0x56e17e
lea eax, [ebp - 0x18]
mov edx, dword [0x5d3780]
mov edx, dword [edx]
call fcn.004044ac
mov eax, dword [0x5d3760]
cmp byte [eax], 0
je 0x56e1af
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.00571a68
test al, al
je 0x56e1af
lea eax, [ebp - 0x18]
mov edx, dword [0x5d34ac]
mov edx, dword [edx]
call fcn.004044ac
mov dword [ebp - 0x14], 1
jmp 0x56e1e2
mov eax, dword [0x5d34a8]
cmp byte [eax], 0
je 0x56e1e2
mov eax, dword [ebp - 4]
call fcn.00571c28
test al, al
je 0x56e1e2
cmp byte [ebx + 0x65], 0
je 0x56e1e2
lea eax, [ebp - 0x18]
mov edx, dword [0x5d3208]
mov edx, dword [edx]
call fcn.004044ac
mov dword [ebp - 0x14], 2
mov eax, dword [0x5d3814]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5d37d4]
cmp byte [eax], 0
je 0x56e3fd
mov eax, dword [ebp - 4]
call fcn.00571d08
test al, al
je 0x56e3fd
mov ebx, dword [0x5d3814]
mov ebx, dword [ebx]
movzx eax, word [ebx + 0x120]
mov edx, dword [ebp - 4]
mov dword [edx + 0xc], eax
movzx eax, word [ebx + 0x122]
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
movzx edi, word [ebx + 0x120]
mov esi, dword [ebx + 0x3c]
cmp edi, esi
jne 0x56e249
movzx eax, word [ebx + 0x122]
cmp eax, dword [ebx + 0x40]
je 0x56e395
movzx eax, word [ebx + 0x122]
push eax
mov ecx, edi
mov edx, dword [ebx + 0x40]
mov eax, esi
call fcn.005c6a4c
test al, al
je 0x56e395
call sub.kernel32.dll_GetTickCount_1
xor edx, edx
push edx
push eax
mov eax, dword [ebx + 0x4c]
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
cmp edx, 0
jne 0x56e28d
cmp eax, 0x3e8
jae 0x56e395
jmp 0x56e293
jge 0x56e395
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx eax, word [eax + 0x122]
push eax
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx ecx, word [eax + 0x120]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
call fcn.005c420c
and eax, 0xff
mov edx, dword [ebp - 4]
add edx, 0xc
push edx
mov edx, dword [ebp - 4]
add edx, 0x10
push edx
movzx edx, word [ebx + 0x122]
movzx ecx, word [ebx + 0x120]
xchg ecx, eax
call fcn.005c4300
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx edi, word [eax + 0x120]
mov eax, dword [ebp - 4]
mov esi, dword [eax + 0xc]
cmp edi, esi
jne 0x56e319
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov edx, dword [0x5d34c0]
mov edx, dword [edx]
movzx edx, word [edx + 0x122]
cmp eax, edx
je 0x56e395
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx eax, word [eax + 0x122]
push eax
mov eax, dword [0x5d34c0]
mov ecx, edi
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x10]
mov eax, esi
call fcn.005c420c
and eax, 0xff
lea edx, [ebp - 8]
push edx
lea edx, [ebp - 0xc]
push edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0xc]
xchg ecx, eax
call fcn.005c4300
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00572238
mov esi, eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp - 4]
call fcn.00572238
cmp esi, eax
jl 0x56e395
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 8]
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x10]
mov eax, dword [ebp - 4]
lea edx, [eax + 0xc]
mov eax, dword [ebp - 4]
call fcn.00572174
mov esi, dword [0x5d3344]
mov esi, dword [esi]
cmp esi, 2
jl 0x56e3fd
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0xc]
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, 5
jge 0x56e3fd
lea eax, [ebp - 0x18]
mov edx, 0x56e808
call fcn.004044ac
mov dword [ebp - 0x14], 3
cmp byte [ebx + 0x56], 0
je 0x56e42c
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, 0x56e818
call fcn.005455fc
test eax, eax
je 0x56e42c
lea eax, [ebp - 0x18]
mov edx, 0x56e818
call fcn.004044ac
mov dword [ebp - 0x14], 1
mov eax, dword [0x5d3ea8]
cmp byte [eax], 0
je 0x56e479
mov eax, dword [ebp - 4]
call fcn.00572308
test al, al
je 0x56e479
xor esi, esi
cmp dword [ebp - 0x14], 3
jne 0x56e460
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp - 4]
call fcn.00572484
mov esi, eax
cmp esi, 3
jge 0x56e479
lea eax, [ebp - 0x18]
mov edx, 0x56e828
call fcn.004044ac
mov dword [ebp - 0x14], 4
cmp dword [ebp - 0x14], 2
jne 0x56e48b
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.005726a4
mov ebx, eax
mov eax, dword [0x5d3694]
cmp byte [eax], 0
je 0x56e4ee
push 0x56e7d0
mov eax, dword [0x5d3ec4]
push dword [eax]
push 0x56e7d0
lea eax, [ebp - 0x24]
mov edx, 3
call fcn.00404794
mov eax, dword [ebp - 0x24]
push eax
push 0x56e7d0
push dword [ebx + 0x11c]
push 0x56e7d0
lea eax, [ebp - 0x28]
mov edx, 3
call fcn.00404794
mov eax, dword [ebp - 0x28]
pop edx
call fcn.00404a18
test eax, eax
jle 0x56e4ee
lea eax, [ebp - 0x18]
mov edx, 0x56e818
call fcn.004044ac
mov eax, dword [0x5d3ba0]
cmp byte [eax], 0
je 0x56e562
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3f38]
sub eax, dword [edx]
cmp eax, 0x1388
jbe 0x56e562
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
cmp eax, 3
jge 0x56e548
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.005772cc
test al, al
je 0x56e562
lea eax, [ebp - 0x18]
mov edx, 0x56e83c
call fcn.004044ac
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3f38]
mov dword [edx], eax
xor esi, esi
lea edi, [esi + esi*8]
cmp byte [ebx + edi + 0x18], 0
je 0x56e58c
mov eax, dword [ebx + edi + 0x14]
mov edx, dword [ebp - 0x18]
call fcn.00404820
jne 0x56e58c
mov al, byte [ebx + edi + 0x1a]
cmp al, byte [ebx + edi + 0x19]
jae 0x56e58c
inc byte [ebx + edi + 0x1a]
jmp 0x56e592
inc esi
cmp esi, 3
jne 0x56e564
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, dword [ebp - 0x18]
call fcn.005455fc
test eax, eax
je 0x56e675
movzx edx, word [eax + 0x1a]
movzx eax, byte [eax + 0x3c]
add edx, eax
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
movzx eax, word [eax + 0x9a]
cmp edx, eax
ja 0x56e659
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
call fcn.005cccd8
test al, al
jne 0x56e675
mov eax, dword [0x5d3d3c]
inc dword [eax]
mov eax, dword [0x5d387c]
inc dword [eax]
cmp byte [ebx + 0x65], 0
jne 0x56e5f9
mov eax, dword [0x5d3240]
mov byte [eax], 1
cmp dword [ebp - 0x14], 3
jne 0x56e62b
mov eax, dword [ebp - 0x18]
push eax
push ebx
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xc]
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
call fcn.0054518c
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5d3e90]
mov dword [edx], eax
jmp 0x56e64a
mov eax, dword [ebp - 0x18]
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 - 0x18]
call fcn.00404468
jmp 0x56e675
mov eax, dword [0x5d3b60]
mov edx, 0x56e850
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 0x56e757
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp byte [eax + 0x119], 0
jne 0x56e6fd
mov eax, dword [0x5d32c4]
mov eax, dword [eax]
call fcn.005b648c
mov ebx, eax
test ebx, ebx
je 0x56e6dc
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 0x56e6dc
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 0x56e757
mov eax, dword [0x5d3e24]
xor edx, edx
mov dword [eax], edx
jmp 0x56e757
mov eax, dword [0x5d33d4]
cmp byte [eax], 0
je 0x56e757
test ebx, ebx
je 0x56e757
mov esi, dword [ebx + 0x108]
test esi, esi
je 0x56e757
mov eax, dword [0x5d34c0]
mov eax, dword [eax]
cmp esi, dword [eax + 0x60]
je 0x56e757
mov eax, dword [0x5d37a0]
mov eax, dword [eax]
mov edx, esi
call fcn.00535fec
test al, al
jne 0x56e757
mov edx, dword [0x5d3864]
mov edx, dword [edx]
mov eax, ebx
call fcn.005c4cd4
test al, al
je 0x56e757
push 0
mov cl, 1
mov edx, 0x56e868
mov eax, dword [ebp - 4]
call fcn.00574724
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x56e779
lea eax, [ebp - 0x28]
mov edx, 5
call fcn.00404438
ret