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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff94
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x3c], ecx
mov esi, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x53ffa4
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [0x586504], 0
jne 0x53ff79
cmp byte [0x5866cc], 0
jne 0x53f56f
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x581620]
cmp eax, 0x12c
jbe 0x53ff79
cmp dword [0x581620], 0
je 0x53ff79
push 0
push 0
push 0x486
mov eax, dword [ebp - 4]
call fcn.00447120
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x878]
xor edx, edx
call fcn.004bed3c
jmp 0x53ff79
xor eax, eax
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [0x586660], eax
mov dword [0x586664], 0xbff00000
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov byte [ebp - 0x3d], 1
mov al, byte [0x5866cc]
sub al, 1
je 0x53f5c4
sub al, 2
jne 0x53f980
xor edx, edx
push ebp
push 0x53f971
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov al, byte [0x5866cd]
imul eax, eax, 0x7b
mov ebx, dword [eax*2 + 0x586282]
test ebx, ebx
je 0x53f964
cmp byte [ebx + 0x394], 0
jne 0x53f601
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x53ff79
push 0
push 0
mov edx, 0x5865e0
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.0053f42c
fstp dword [ebp - 0xc]
wait
push 0
push 0
mov edx, 0x5865e4
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.0053f42c
fstp dword [ebp - 8]
wait
mov eax, ebx
call fcn.004b3780
mov dword [0x5866e0], eax
mov eax, dword [0x5866e0]
cmp eax, dword [0x581620]
jne 0x53f6e2
cmp dword [0x5866e0], 0
jne 0x53f6e2
imul eax, dword [ebx + 0xc], 0x7b
mov edx, dword [eax*2 + 0x5862d0]
mov eax, dword [eax*2 + 0x5862cc]
sub eax, dword [0x5865e8]
sbb edx, dword [0x5865ec]
cmp edx, 0
jne 0x53f683
cmp eax, 0
jb 0x53f6ab
jmp 0x53f685
jl 0x53f6ab
imul eax, dword [ebx + 0xc], 0x7b
mov edx, dword [eax*2 + 0x5862d0]
mov eax, dword [eax*2 + 0x5862cc]
sub eax, dword [0x5865e8]
sbb edx, dword [0x5865ec]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
jmp 0x53f6c3
imul eax, dword [ebx + 0xc], 0x7b
mov edx, dword [eax*2 + 0x5862cc]
mov dword [ebp - 0x18], edx
mov edx, dword [eax*2 + 0x5862d0]
mov dword [ebp - 0x14], edx
push 0
push 0x400
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
call fcn.0040669a
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
fstp dword [ebp - 0xc]
wait
cmp dword [ebx + 0x318], 0
je 0x53f70c
fld dword [ebp - 0xc]
fmul dword [0x53ffb4]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.0045605c
mov edx, dword [ebx + 0x318]
mov dword [edx + 0x314], eax
mov eax, dword [0x5866e0]
cmp eax, dword [0x581620]
je 0x53f7b2
mov eax, dword [0x5866e0]
mov dword [0x581620], eax
imul eax, dword [ebx + 0xc], 0x7b
mov edx, dword [eax*2 + 0x5862cc]
mov dword [0x5865e8], edx
mov edx, dword [eax*2 + 0x5862d0]
mov dword [0x5865ec], edx
mov dl, byte [ebx + 0xc]
mov cl, 0x12
mov eax, dword [ebp - 4]
call fcn.0056b218
cmp al, 2
jne 0x53f7ba
test esi, esi
je 0x53f7ba
inc dword [0x58161c]
mov eax, dword [0x58161c]
cmp eax, dword [0x586624]
jbe 0x53f7ba
xor eax, eax
mov dword [0x58161c], eax
lea edx, [ebp - 0x50]
mov eax, dword [0x581f74]
call fcn.00405c64
push dword [ebp - 0x50]
push 0x53ffc0
push 0x53ffcc
lea eax, [ebp - 0x4c]
mov edx, 3
call fcn.00403f48
mov eax, dword [ebp - 0x4c]
call fcn.0040404c
mov edx, eax
mov cx, 6
mov eax, ebx
call fcn.004a61e0
jmp 0x53f7ba
test esi, esi
jne 0x53f7ba
mov byte [ebp - 0x3d], 0
cmp dword [ebx + 0xfc], 0
jne 0x53f80f
cmp dword [ebx + 0xf8], 0
jne 0x53f80f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7d4]
call fcn.004df460
test al, al
jne 0x53f80f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7d4]
mov eax, dword [eax + 0x3e8]
test eax, eax
je 0x53f7ff
mov edx, dword [eax + 0xb]
mov dword [ebp - 0x38], edx
mov edx, dword [eax + 0xf]
mov dword [ebp - 0x34], edx
jmp 0x53f821
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
jmp 0x53f821
mov eax, dword [ebx + 0xf8]
mov dword [ebp - 0x38], eax
mov eax, dword [ebx + 0xfc]
mov dword [ebp - 0x34], eax
imul eax, dword [ebx + 0xc], 0x7b
mov edx, dword [eax*2 + 0x5862d0]
mov eax, dword [eax*2 + 0x5862cc]
add eax, dword [ebx + 0x438]
adc edx, dword [ebx + 0x43c]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
cmp dword [ebp - 0x34], 0
jne 0x53f84f
cmp dword [ebp - 0x38], 0
je 0x53f865
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebp - 0x34]
jne 0x53f863
cmp eax, dword [ebp - 0x38]
jbe 0x53f86c
jmp 0x53f865
jle 0x53f86c
xor eax, eax
mov dword [ebp - 0x1c], eax
jmp 0x53f889
fild qword [ebp - 0x18]
fild qword [ebp - 0x38]
fdivp st(1)
fmul dword [0x53ffd0]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.0045605c
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x3c]
push eax
fild qword [ebp - 0x18]
add esp, 0xfffffff8
fstp qword [esp]
wait
lea ecx, [ebp - 0x4c]
xor edx, edx
mov al, byte [0x58660c]
call fcn.004558fc
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x50]
mov eax, dword [ebp - 4]
call fcn.0053f334
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
lea edx, [ebp - 0x60]
mov ecx, 1
mov eax, 0x53ffdc
call fcn.00409ffc
mov eax, dword [ebx + 0x438]
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x43c]
mov dword [ebp - 0x2c], eax
fld dword [ebp - 8]
fcomp dword [0x53ffe4]
fnstsw ax
sahf
je 0x53f92e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7d4]
mov edx, dword [eax + 0x3f4]
mov eax, dword [eax + 0x3f0]
sub eax, dword [ebp - 0x18]
sbb edx, dword [ebp - 0x14]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
fdiv dword [ebp - 8]
fdiv dword [0x53ffb4]
fstp qword [0x586660]
wait
fld dword [ebp - 0xc]
fcomp dword [0x53ffe4]
fnstsw ax
sahf
je 0x53f964
mov eax, dword [ebx + 0xf8]
mov edx, dword [ebx + 0xfc]
sub eax, dword [ebp - 0x18]
sbb edx, dword [ebp - 0x14]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
fdiv dword [ebp - 0xc]
fdiv dword [0x53ffb4]
fstp qword [ebp - 0x24]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x53fc4a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x464]
cmp byte [eax + 0x394], 0
je 0x53f9a4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x468]
cmp byte [eax + 0x394], 0
jne 0x53f9d1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x878]
xor edx, edx
call fcn.004bed3c
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0056a570
mov byte [0x58638d], 0
mov byte [0x586483], 0
jmp 0x53ff79
inc dword [0x58161c]
mov eax, dword [0x58161c]
cmp eax, dword [0x586624]
jbe 0x53faa9
xor eax, eax
mov dword [0x58161c], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x464]
mov dl, byte [eax + 0xc]
mov cl, 0x12
mov eax, dword [ebp - 4]
call fcn.0056b218
cmp al, 2
jne 0x53fa4c
lea edx, [ebp - 0x50]
mov eax, dword [0x581f74]
call fcn.00405c64
push dword [ebp - 0x50]
push 0x53ffc0
push 0x53ffcc
lea eax, [ebp - 0x4c]
mov edx, 3
call fcn.00403f48
mov eax, dword [ebp - 0x4c]
call fcn.0040404c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x464]
mov cx, 6
call fcn.004a61e0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x468]
mov dl, byte [eax + 0xc]
mov cl, 0x12
mov eax, dword [ebp - 4]
call fcn.0056b218
cmp al, 2
jne 0x53faa9
lea edx, [ebp - 0x50]
mov eax, dword [0x581f74]
call fcn.00405c64
push dword [ebp - 0x50]
push 0x53ffc0
push 0x53ffcc
lea eax, [ebp - 0x4c]
mov edx, 3
call fcn.00403f48
mov eax, dword [ebp - 0x4c]
call fcn.0040404c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x468]
mov cx, 6
call fcn.004a61e0
mov eax, dword [0x586538]
mov dword [ebp - 0x30], eax
mov eax, dword [0x58653c]
mov dword [ebp - 0x2c], eax
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x586530]
mov dword [ebp - 0x48], eax
xor eax, eax
mov dword [ebp - 0x44], eax
fild qword [ebp - 0x48]
fdiv dword [0x53ffb4]
call fcn.00402a3c
mov dword [0x5866e0], eax
xor eax, eax
mov dword [ebp - 0xc], eax
cmp dword [0x586534], 0
jne 0x53fb06
xor eax, eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x3c]
mov edx, dword [0x581dd8]
mov edx, dword [edx]
call fcn.00403ca4
jmp 0x53fb7a
fild dword [0x586534]
fild qword [0x586540]
fdivp st(1)
fmul dword [0x53ffd0]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.0045605c
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x3c]
push eax
fild dword [0x586534]
add esp, 0xfffffff8
fstp qword [esp]
wait
lea ecx, [ebp - 0x4c]
xor edx, edx
mov al, 2
call fcn.004558fc
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x50]
mov eax, dword [ebp - 4]
call fcn.0053f334
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
lea edx, [ebp - 0x60]
mov ecx, 1
mov eax, 0x53ffdc
call fcn.00409ffc
fld qword [0x586548]
fcomp dword [0x53ffe4]
fnstsw ax
sahf
je 0x53fc4a
fld qword [0x586548]
fmul dword [0x53ffe8]
call fcn.00402a3c
imul dword [0x5866e0]
mov dword [0x586534], eax
fld qword [0x586548]
fmul dword [0x53ffe8]
call fcn.00402a3c
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
mov eax, dword [0x586540]
mov edx, dword [0x586544]
push edx
push eax
mov eax, dword [0x586534]
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
fild qword [ebp - 0x68]
fdivrp st(1)
fstp qword [ebp - 0x24]
wait
fld qword [0x586548]
fmul dword [0x53ffe8]
call fcn.00402a3c
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7d4]
mov edx, dword [eax + 0x3f4]
mov eax, dword [eax + 0x3f0]
push edx
push eax
mov eax, dword [0x586534]
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
fild qword [ebp - 0x68]
fdivrp st(1)
fstp qword [0x586660]
wait
xor eax, eax
mov dword [0x586534], eax
cmp byte [0x586698], 0
je 0x53ff79
xor eax, eax
push ebp
push 0x53fd8d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
call fcn.004dfaec
cmp dword [ebp - 0x34], 0
jne 0x53fc92
cmp dword [ebp - 0x38], 0
jne 0x53fc92
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
xor edx, edx
mov dword [eax + 0x220], edx
jmp 0x53fcbb
fild qword [ebp - 0x30]
fild qword [ebp - 0x38]
fdivp st(1)
fmul dword [0x53ffd0]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.0045605c
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x5e4]
mov dword [edx + 0x220], eax
cmp byte [0x5866cc], 1
jne 0x53fd1e
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x581dd8]
mov edx, dword [edx]
call fcn.00403f98
jne 0x53fd1e
lea eax, [ebp - 0x3c]
push eax
push 0
push 0
lea ecx, [ebp - 0x4c]
xor edx, edx
mov al, 2
call fcn.004558fc
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x50]
mov eax, dword [ebp - 4]
call fcn.0053f334
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
lea edx, [ebp - 0x60]
mov ecx, 1
mov eax, 0x53ffdc
call fcn.00409ffc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
mov edx, dword [ebp - 0x1c]
call fcn.004dfbf0
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x581dd8]
mov edx, dword [edx]
call fcn.00403f98
setne dl
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
call fcn.00441218
lea eax, [ebp - 0x4c]
mov ecx, 0x53fff4
mov edx, dword [ebp - 0x3c]
call fcn.00403ed4
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
call fcn.004dfc54
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53fd94
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5e4]
call fcn.004dfaf4
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53ffab
lea eax, [ebp - 0x6c]
call fcn.00403c0c
lea eax, [ebp - 0x50]
mov edx, 2
call fcn.00403c30
lea eax, [ebp - 0x3c]
call fcn.00403c0c
ret