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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x38], ebx
mov byte [ebp - 5], cl
mov dword [ebp - 0x28], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x56b5af
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x56b578
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x6e46d0]
mov byte [eax], 0
cmp byte [ebp - 5], 1
jne 0x56ab42
mov eax, dword [0x6e3a20]
cmp byte [eax], 0
je 0x56ab42
mov eax, dword [0x6e4a7c]
mov eax, dword [eax]
call fcn.005dad7c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push eax
mov eax, dword [0x6e3c9c]
mov eax, dword [eax]
mov cl, byte [ebp + 0x10]
mov dl, byte [ebp - 5]
call fcn.004d8550
test al, al
je 0x56ab6d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [0x6e42cc]
cmp dword [eax], 0
je 0x56ab87
mov eax, dword [0x6ef078]
mov eax, dword [eax + 0x30]
cmp eax, dword [0x6ef088]
je 0x56ab94
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
test byte [ebp + 0x10], 0x10
je 0x56ae81
mov eax, dword [0x6e4734]
cmp byte [eax + 0x31], 0
je 0x56abb1
mov eax, dword [0x6e4830]
mov byte [eax], 1
mov al, byte [0x56b5c0]
cmp al, byte [ebp + 0x10]
jne 0x56abc2
mov eax, dword [0x6e3e28]
inc dword [eax]
mov eax, dword [0x6e3e28]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [0x6ef088]
call fcn.005b02a4
mov dword [ebp - 0x20], eax
mov eax, dword [0x6e3e28]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x1c]
je 0x56abf8
mov eax, dword [0x6e3e28]
xor edx, edx
mov dword [eax], edx
cmp dword [ebp - 0x20], 0
je 0x56acfd
test byte [ebp + 0x10], 4
je 0x56ac5d
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e3f80]
sub eax, dword [edx]
cmp eax, 0x3e8
jbe 0x56ad6d
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0
jne 0x56ad6d
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0xc]
push eax
push 0
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 4]
mov edx, 0x52
mov eax, dword [ebp - 4]
call fcn.0056d958
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
test byte [ebp + 0x10], 2
je 0x56ad6d
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x90], 0
je 0x56acd4
mov eax, dword [0x6e3ab8]
mov eax, dword [eax]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x56acd4
lea eax, [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x98]
mov dword [ebp - 0x40], eax
mov byte [ebp - 0x3c], 0xb
lea edx, [ebp - 0x40]
xor ecx, ecx
mov eax, 0x56b5cc
call fcn.0040b9d8
mov edx, dword [ebp - 0x38]
mov eax, dword [0x6e4a7c]
mov eax, dword [eax]
mov cx, word [0x56b5ec]
call fcn.005de228
cmp eax, 6
jne 0x56acf0
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + 0x98]
mov eax, dword [ebp - 4]
call fcn.00570f14
jmp 0x56acf0
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0
jne 0x56acf0
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + 0x98]
mov eax, dword [0x6ef088]
call fcn.005b22f0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [0x6e3e28]
xor edx, edx
mov dword [eax], edx
test byte [ebp + 0x10], 2
je 0x56ad6d
mov eax, dword [0x6e450c]
cmp byte [eax], 1
jne 0x56ad6d
push 1
push 0
lea eax, [ebp - 0x34]
push eax
mov ecx, dword [0x6e3f88]
mov cx, word [ecx]
mov edx, dword [0x6e40c0]
mov edx, dword [edx]
mov ax, 0xbd8
call fcn.004b4ec4
lea edx, [ebp - 0x44]
lea eax, [ebp - 0x34]
call fcn.004b5310
lea eax, [ebp - 0x44]
push eax
lea edx, [ebp - 0x48]
mov eax, dword [0x6e4734]
mov eax, dword [eax + 0x48]
call fcn.004b5378
mov edx, dword [ebp - 0x48]
pop eax
call fcn.004056a0
mov edx, dword [ebp - 0x44]
mov eax, dword [0x6ef074]
call fcn.0056d824
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56ae81
mov eax, dword [0x6e40c0]
push eax
mov eax, dword [0x6e3f88]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [0x6ef088]
call fcn.005aff8c
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov edx, dword [0x6e40c0]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x56ae4e
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x6e3f88]
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x56ae4e
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
push eax
mov ecx, dword [0x6e40c0]
mov ecx, dword [ecx]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.0064789c
and eax, 0xff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.00572b44
test al, al
je 0x56ae81
mov eax, dword [ebp - 4]
call fcn.00572b00
test al, al
je 0x56ae81
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov dx, 0xbc2
call fcn.00635814
jmp 0x56ae81
mov eax, dword [0x6e4ac8]
mov byte [eax], 1
mov eax, dword [0x6e40c0]
mov eax, dword [eax]
mov edx, dword [0x6e43fc]
mov dword [edx], eax
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
mov edx, dword [0x6e42b4]
mov dword [edx], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
test byte [ebp + 0x10], 8
je 0x56b56e
mov eax, dword [0x6e3e28]
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x1c]
push eax
push 1
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [0x6ef088]
call fcn.005b02a4
mov dword [ebp - 0x20], eax
mov eax, dword [0x6e40c0]
push eax
mov eax, dword [0x6e3f88]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [0x6ef088]
call fcn.005aff8c
mov eax, dword [0x6e3d08]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x6e3fc0]
cmp byte [eax + 0xa1], 0
je 0x56affa
cmp dword [ebp - 0x20], 0
jne 0x56affa
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x1b], 0
jne 0x56affa
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56affa
mov eax, dword [0x6e3fc0]
cmp byte [eax + 0xb1], 0x13
jne 0x56affa
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
push eax
mov ecx, dword [0x6e40c0]
mov ecx, dword [ecx]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.0064789c
and eax, 0xff
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 0xc]
call fcn.00647f40
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [0x6ef0b4]
call fcn.0061db98
test al, al
je 0x56af90
test byte [ebp + 0x10], 1
je 0x56affa
mov eax, dword [ebp - 4]
call fcn.00572b44
test al, al
je 0x56afe5
mov eax, dword [ebp - 4]
call fcn.00572b00
test al, al
je 0x56afe5
mov eax, dword [ebp - 4]
call fcn.00572bb8
test al, al
je 0x56afe5
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov dx, 0xbc7
call fcn.00635814
mov eax, dword [0x6e46d0]
mov byte [eax], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
test byte [ebp + 0x10], 2
je 0x56b13c
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x1b], 0
jne 0x56b13c
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56b13c
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
push eax
mov ecx, dword [0x6e40c0]
mov ecx, dword [ecx]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.0064789c
and eax, 0xff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.00572b44
test al, al
je 0x56b12c
mov eax, dword [ebp - 4]
call fcn.00572b00
test al, al
je 0x56b12c
mov ecx, dword [0x6e3f88]
mov ecx, dword [ecx]
mov edx, dword [0x6e40c0]
mov edx, dword [edx]
mov eax, dword [0x6ef088]
call fcn.005b220c
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je 0x56b0fb
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 4]
push eax
mov ecx, dword [0x6e3f88]
mov ecx, dword [ecx]
mov edx, dword [0x6e40c0]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.0056fbf4
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.00635814
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.00635814
mov eax, dword [0x6e43fc]
mov dword [eax], 0xffffffff
jmp 0x56b532
cmp dword [ebp - 0x20], 0
jne 0x56b14c
test byte [ebp + 0x10], 1
je 0x56b41c
mov eax, dword [0x6e43fc]
mov dword [eax], 0xffffffff
cmp dword [ebp - 0x20], 0
je 0x56b2b5
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e3f80]
sub eax, dword [edx]
cmp eax, 0x1f4
jbe 0x56b204
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0x32
jne 0x56b1b5
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e3f80]
mov dword [edx], eax
push 0
push 0
push 0
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 4]
mov edx, 0x3f2
mov eax, dword [ebp - 4]
call fcn.0056d958
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0
jne 0x56b204
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x6d], 0
je 0x56b204
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e3f80]
mov dword [edx], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0xc]
push eax
push 0
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 4]
mov edx, 0xfad
mov eax, dword [ebp - 4]
call fcn.0056d958
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x30], 0
jne 0x56b532
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x1b], 0
jne 0x56b532
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56b532
mov eax, dword [0x6e3d08]
mov edx, dword [ebp - 0x20]
mov dword [eax], edx
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0
je 0x56b26f
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0xc
je 0x56b26f
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0x32
je 0x56b26f
mov eax, dword [ebp - 0x20]
mov edx, dword [eax + 0x98]
mov eax, 0x56b5f8
call fcn.004059b0
test eax, eax
je 0x56b298
test byte [ebp + 0x10], 1
jne 0x56b27f
mov eax, dword [0x6e483c]
cmp byte [eax], 0
je 0x56b288
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x12], 0x32
jne 0x56b298
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x9c], 0x45
jne 0x56b532
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.0056a20c
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e4aac]
mov dword [edx], eax
jmp 0x56b532
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x1b], 0
jne 0x56b532
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56b532
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
push eax
mov ecx, dword [0x6e40c0]
mov ecx, dword [ecx]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.0064789c
and eax, 0xff
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.00572b44
test al, al
je 0x56b40a
mov eax, dword [ebp - 4]
call fcn.00572b00
test al, al
je 0x56b40a
mov eax, dword [ebp - 4]
call fcn.00572bb8
test al, al
je 0x56b40a
mov eax, 3
call fcn.0040354c
add eax, 0xbc6
mov dword [ebp - 0x18], eax
mov eax, dword [0x6e4198]
cmp byte [eax], 0
je 0x56b37d
mov ecx, 2
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00569800
test al, al
jne 0x56b376
mov eax, dword [0x6e4734]
cmp byte [eax + 0xd1], 0
je 0x56b37d
mov dword [ebp - 0x18], 0xbcb
mov eax, dword [0x6e42e4]
cmp byte [eax], 0
je 0x56b3ab
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp word [eax + 0x51], 3
jb 0x56b3ab
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00569950
test al, al
je 0x56b3ab
mov dword [ebp - 0x18], 0xbd0
mov eax, dword [0x6e4804]
cmp byte [eax], 0
je 0x56b3d9
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp word [eax + 0x51], 6
jb 0x56b3d9
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00569ab0
test al, al
je 0x56b3d9
mov dword [ebp - 0x18], 0xbdc
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
mov dx, word [ebp - 0x18]
call fcn.00635814
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e4624]
mov dword [edx], eax
jmp 0x56b532
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
cmp byte [eax + 0x6d], 0
jne 0x56b532
mov eax, dword [0x6e40c0]
mov eax, dword [eax]
mov edx, dword [0x6e42cc]
mov edx, dword [edx]
cmp eax, dword [edx + 8]
jne 0x56b47b
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
mov edx, dword [0x6e42cc]
mov edx, dword [edx]
cmp eax, dword [edx + 0xc]
jne 0x56b47b
mov eax, dword [ebp - 4]
call fcn.00572b44
test al, al
je 0x56b4ea
mov eax, dword [ebp - 4]
call fcn.00572b00
test al, al
je 0x56b4ea
mov eax, dword [ebp - 4]
call fcn.0056f814
jmp 0x56b4ea
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
movzx eax, byte [eax + 0x6b]
imul eax, eax, 0x3e8
mov dword [ebp - 0x4c], eax
fild dword [ebp - 0x4c]
fdiv dword [0x56b5fc]
call fcn.00403640
mov edx, 0x3e8
sub edx, eax
mov dword [ebp - 0x24], edx
mov eax, dword [0x6e42cc]
mov eax, dword [eax]
movsx eax, word [eax + 0x270]
cdq
push edx
push eax
mov eax, dword [ebp - 0x24]
xor edx, edx
call fcn.00406610
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], edx
fild qword [ebp - 0x40]
fdiv dword [0x56b600]
call fcn.00403634
push eax
mov eax, dword [ebp - 0x24]
pop edx
sub eax, edx
mov edx, 1
call fcn.00492c5c
mov dword [ebp - 0x24], eax
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x6e4624]
sub eax, dword [edx]
cmp eax, dword [ebp - 0x24]
jbe 0x56b532
test byte [ebp + 0x10], 4
je 0x56b50c
mov eax, dword [0x6e4ac8]
mov byte [eax], 1
jmp 0x56b514
mov eax, dword [0x6e4ac8]
mov byte [eax], 0
mov eax, dword [0x6e40c0]
mov eax, dword [eax]
mov edx, dword [0x6e43fc]
mov dword [edx], eax
mov eax, dword [0x6e3f88]
mov eax, dword [eax]
mov edx, dword [0x6e42b4]
mov dword [edx], eax
mov eax, dword [0x6e450c]
cmp byte [eax], 0
je 0x56b56e
mov eax, dword [0x6e4734]
cmp byte [eax + 0x31], 0
je 0x56b54f
mov eax, dword [0x6e4830]
mov byte [eax], 0
mov eax, dword [0x6e4820]
mov byte [eax], 0
mov eax, dword [0x6e3994]
mov eax, dword [eax]
mov eax, dword [eax + 0x7d4]
mov edx, 0x56b60c
call fcn.0045c678
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56b58c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x56b5b6
lea eax, [ebp - 0x48]
mov edx, 2
call fcn.004053f8
lea eax, [ebp - 0x38]
call fcn.004053d4
ret