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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
xor edx, edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x589065
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x5ab6c4]
cmp dword [eax], 0
je 0x58904a
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
cmp byte [eax + 0x2c], 0
jne 0x58904a
mov eax, dword [0x5abc08]
cmp byte [eax], 0
je 0x588792
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 0x53]
mov edx, dword [0x5abd74]
cmp eax, dword [edx]
jge 0x588792
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac354]
sub eax, dword [edx]
mov edx, dword [0x5ab620]
imul edx, dword [edx], 0x3e8
cmp eax, edx
jbe 0x588792
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac354]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x589070
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588704
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588773
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x58907c
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588735
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588773
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x58908c
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588766
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588773
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x5886d3
cmp byte [ebp - 9], 0
jne 0x588792
push 0xffffff
mov ecx, 0xff
mov edx, 0x5890a4
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5aba34]
cmp byte [eax], 0
je 0x5888ae
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 0x57]
mov edx, dword [0x5abb74]
cmp eax, dword [edx]
jge 0x5888ae
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac1ac]
sub eax, dword [edx]
mov edx, dword [0x5ab46c]
imul edx, dword [edx], 0x3e8
cmp eax, edx
jbe 0x5888ae
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac1ac]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x5890c8
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588820
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x58888f
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x5890d4
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588851
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x58888f
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x5890e4
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588882
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x58888f
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x5887ef
cmp byte [ebp - 9], 0
jne 0x5888ae
push 0xffffff
mov ecx, 0xff
mov edx, 0x5890fc
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5abe58]
cmp byte [eax], 0
je 0x5889fe
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 0x53]
mov edx, dword [0x5abff8]
cmp eax, dword [edx]
jge 0x5889fe
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ab500]
sub eax, dword [edx]
mov edx, dword [0x5ab8a0]
imul edx, dword [edx], 0x3e8
cmp eax, edx
jbe 0x5889fe
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ab500]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x589120
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x58893f
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x5889df
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x58912c
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x588970
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x5889df
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x589134
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x5889a1
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x5889df
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
lea eax, [edx + eax*8]
mov edx, 0x589140
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00403158
jne 0x5889d2
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x5889df
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x58890b
cmp byte [ebp - 9], 0
jne 0x5889fe
push 0xffffff
mov ecx, 0xff
mov edx, 0x589150
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5ac310]
cmp byte [eax], 0
je 0x588ad9
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 0x53]
mov edx, dword [0x5ab3e8]
cmp eax, dword [edx]
jge 0x588ad9
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ab9ec]
sub eax, dword [edx]
mov edx, dword [0x5abd98]
imul edx, dword [edx], 0x3e8
cmp eax, edx
jbe 0x588ad9
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ab9ec]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x14]
mov edx, dword [ebp - 8]
lea edx, [edx + edx*8]
mov ecx, dword [0x5ac178]
lea edx, [ecx + edx*8]
call fcn.004049ec
mov eax, dword [ebp - 0x14]
mov edx, dword [0x5abbc4]
mov edx, dword [edx]
call fcn.00404b94
jne 0x588a95
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588a9e
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x588a5b
cmp byte [ebp - 9], 0
jne 0x588ad9
push 0xffffff
push 0x58917c
mov eax, dword [0x5abbc4]
push dword [eax]
push 0x589190
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.00404b08
mov edx, dword [ebp - 0x18]
mov ecx, 0xff
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5abb40]
cmp byte [eax], 0
je 0x588bb7
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
movzx eax, word [eax + 0x7b]
imul eax, eax, 0x64
mov edx, dword [0x5ab6c4]
mov edx, dword [edx]
movzx edx, word [edx + 0x79]
mov ecx, edx
xor edx, edx
div ecx
mov edx, dword [0x5abe40]
movzx edx, byte [edx]
cmp eax, edx
ja 0x588bb7
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac2c0]
sub eax, dword [edx]
cmp eax, 0x1388
jbe 0x588bb7
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac2c0]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8], 0
je 0x588b8f
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0xf], 0x3c
jne 0x588b8f
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0x12], 1
jne 0x588b8f
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588b98
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x588b46
cmp byte [ebp - 9], 0
jne 0x588bb7
push 0xffffff
mov ecx, 0xff
mov edx, 0x5891ac
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5ac0d0]
cmp dword [eax], 0
je 0x588cd8
mov eax, dword [0x5ac0d0]
mov eax, dword [eax]
cmp word [eax + 0x79], 0
jbe 0x588cd8
mov eax, dword [0x5ac0d0]
mov eax, dword [eax]
cmp word [eax + 0x7b], 0
jbe 0x588cd8
mov eax, dword [0x5abc58]
cmp byte [eax], 0
je 0x588cd8
mov eax, dword [0x5ac0d0]
mov eax, dword [eax]
movzx eax, word [eax + 0x7b]
imul eax, eax, 0x64
mov edx, dword [0x5ac0d0]
mov edx, dword [edx]
movzx edx, word [edx + 0x79]
mov ecx, edx
xor edx, edx
div ecx
mov edx, dword [0x5abf80]
movzx edx, byte [edx]
cmp eax, edx
ja 0x588cd8
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac398]
sub eax, dword [edx]
cmp eax, 0x1388
jbe 0x588cd8
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac398]
mov dword [edx], eax
mov byte [ebp - 9], 0
mov eax, dword [0x5abcf4]
mov eax, dword [eax]
dec eax
test eax, eax
jl 0x588cb9
inc eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8], 0
je 0x588cb1
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8 + 0xf], 0x3c
jne 0x588cb1
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8 + 0x12], 1
jne 0x588cb1
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586de0
mov byte [ebp - 9], 1
jmp 0x588cb9
inc dword [ebp - 8]
dec dword [ebp - 0x10]
jne 0x588c68
cmp byte [ebp - 9], 0
jne 0x588cd8
push 0xffffff
mov ecx, 0xff
mov edx, 0x5891d8
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5ab88c]
cmp byte [eax], 0
je 0x588d94
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac050]
sub eax, dword [edx]
mov edx, dword [0x5abb5c]
movzx edx, byte [edx]
imul edx, edx, 0x3e8
imul edx, edx, 0x3c
cmp eax, edx
jb 0x588d94
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac050]
mov dword [edx], eax
mov byte [ebp - 9], 0
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8], 0
je 0x588d6c
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0xf], 0x3c
jne 0x588d6c
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0x12], 2
jne 0x588d6c
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
mov byte [ebp - 9], 1
jmp 0x588d75
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x588d23
cmp byte [ebp - 9], 0
jne 0x588d94
push 0xffffff
mov ecx, 0xff
mov edx, 0x589208
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5ac0d0]
cmp dword [eax], 0
je 0x588e6f
mov eax, dword [0x5ab980]
cmp byte [eax], 0
je 0x588e6f
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac128]
sub eax, dword [edx]
mov edx, dword [0x5abc60]
movzx edx, byte [edx]
imul edx, edx, 0x3e8
imul edx, edx, 0x3c
cmp eax, edx
jb 0x588e6f
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac128]
mov dword [edx], eax
mov byte [ebp - 9], 0
mov eax, dword [0x5abcf4]
mov eax, dword [eax]
dec eax
test eax, eax
jl 0x588e50
inc eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8], 0
je 0x588e48
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8 + 0xf], 0x3c
jne 0x588e48
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac240]
cmp byte [edx + eax*8 + 0x12], 2
jne 0x588e48
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586de0
mov byte [ebp - 9], 1
jmp 0x588e50
inc dword [ebp - 8]
dec dword [ebp - 0x10]
jne 0x588dff
cmp byte [ebp - 9], 0
jne 0x588e6f
push 0xffffff
mov ecx, 0xff
mov edx, 0x5891d8
mov eax, dword [0x5b6a14]
call fcn.0057ee70
mov eax, dword [0x5abb08]
cmp byte [eax], 0
je 0x588eed
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac038]
sub eax, dword [edx]
cmp eax, 0x1f4
jb 0x588eed
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac038]
mov dword [edx], eax
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8], 0
je 0x588ee4
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0xf], 0x1f
jne 0x588ee4
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0x12], 0x2b
jne 0x588ee4
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
jmp 0x588eed
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x588e9f
mov eax, dword [0x5ab888]
cmp byte [eax], 0
je 0x588f6d
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5abd50]
sub eax, dword [edx]
cmp eax, 0x1f4
jb 0x588f6d
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5abd50]
mov dword [edx], eax
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8], 0
je 0x588f64
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp byte [edx + eax*8 + 0xf], 0
jne 0x588f64
mov eax, dword [ebp - 8]
lea eax, [eax + eax*8]
mov edx, dword [0x5ac178]
cmp word [edx + eax*8 + 0x16], 0x632
jne 0x588f64
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00586494
jmp 0x588f6d
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x34
jne 0x588f1d
mov eax, dword [0x5abd8c]
cmp byte [eax], 0
je 0x58904a
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [0x5ac23c]
sub eax, dword [edx]
cmp eax, 0x3e8
jb 0x58904a
mov eax, dword [0x5ab5c8]
cmp dword [eax], 0
je 0x58904a
mov eax, dword [0x5ab5c8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [0x5ab5c8]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 8]
call fcn.00507510
mov byte [ebp - 0xa], al
mov eax, dword [ebp - 4]
call fcn.0058fbf4
test al, al
je 0x58904a
mov eax, dword [ebp - 4]
call fcn.0058fbb0
test al, al
je 0x58904a
xor eax, eax
mov al, byte [ebp - 0xa]
push eax
mov eax, dword [0x5ab5c8]
mov eax, dword [eax]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x5ab5c8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x5ab5c8]
mov eax, dword [eax]
mov edx, dword [eax + 8]
mov eax, dword [ebp - 4]
call fcn.0058d88c
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
xor eax, eax
mov al, byte [ebp - 0xa]
push eax
push 0
push 0
push 0
push 0
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [0x5ab6c4]
mov eax, dword [eax]
mov dx, 0xbc4
call fcn.004f7e3c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58906c
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.004047ac
ret