Function at 0x53aa20
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 - 0x5c], ecx
mov dword [ebp - 0x60], 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 0x53b3a4
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [0x58a370], 0
jne 0x53b379
cmp byte [0x58a53d], 0
jne 0x53aaaf
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x5856ac]
cmp eax, 0x12c
jbe 0x53b379
cmp dword [0x5856ac], 0
je 0x53b379
push 0
push 0
push 0x486
mov eax, dword [ebp - 4]
call fcn.00447134
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x870]
xor edx, edx
call fcn.004b7a24
jmp 0x53b379
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 [0x58a4cc], eax
mov dword [0x58a4d0], 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 [0x58a53d]
sub al, 1
je 0x53ab04
sub al, 2
jne 0x53ae58
xor edx, edx
push ebp
push 0x53ae49
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov al, byte [0x58a53e]
imul eax, eax, 0xf5
mov ebx, dword [eax + 0x58a0f2]
test ebx, ebx
je 0x53ae3c
cmp byte [ebx + 0x200], 0
jne 0x53ab43
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x53b379
push 0
push 0
mov edx, 0x58a44c
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.0053a96c
fstp dword [ebp - 0xc]
wait
push 0
push 0
mov edx, 0x58a450
xor ecx, ecx
mov eax, dword [ebp - 4]
call fcn.0053a96c
fstp dword [ebp - 8]
wait
mov eax, ebx
call fcn.004ac040
mov dword [0x58a550], eax
mov eax, dword [0x58a550]
cmp eax, dword [0x5856ac]
jne 0x53ac27
cmp dword [0x58a550], 0
jne 0x53ac27
imul eax, dword [ebx + 0xc], 0xf5
mov edx, dword [eax + 0x58a140]
mov eax, dword [eax + 0x58a13c]
sub eax, dword [0x58a454]
sbb edx, dword [0x58a458]
cmp edx, 0
jne 0x53abc6
cmp eax, 0
jb 0x53abef
jmp 0x53abc8
jl 0x53abef
imul eax, dword [ebx + 0xc], 0xf5
mov edx, dword [eax + 0x58a140]
mov eax, dword [eax + 0x58a13c]
sub eax, dword [0x58a454]
sbb edx, dword [0x58a458]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
jmp 0x53ac08
imul eax, dword [ebx + 0xc], 0xf5
mov edx, dword [eax + 0x58a13c]
mov dword [ebp - 0x18], edx
mov edx, dword [eax + 0x58a140]
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 + 0x190], 0
je 0x53ac51
fld dword [ebp - 0xc]
fmul dword [0x53b3b4]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.00456034
mov edx, dword [ebx + 0x190]
mov dword [edx + 0x18c], eax
mov eax, dword [0x58a550]
cmp eax, dword [0x5856ac]
je 0x53ac89
mov eax, dword [0x58a550]
mov dword [0x5856ac], eax
imul eax, dword [ebx + 0xc], 0xf5
mov edx, dword [eax + 0x58a13c]
mov dword [0x58a454], edx
mov edx, dword [eax + 0x58a140]
mov dword [0x58a458], edx
jmp 0x53ac91
test esi, esi
jne 0x53ac91
mov byte [ebp - 0x3d], 0
cmp dword [ebx + 0x104], 0
jne 0x53ace6
cmp dword [ebx + 0x100], 0
jne 0x53ace6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7cc]
call fcn.004d8234
test al, al
jne 0x53ace6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7cc]
mov eax, dword [eax + 0x3f0]
test eax, eax
je 0x53acd6
mov edx, dword [eax + 0xb]
mov dword [ebp - 0x38], edx
mov edx, dword [eax + 0xf]
mov dword [ebp - 0x34], edx
jmp 0x53acf8
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
jmp 0x53acf8
mov eax, dword [ebx + 0x100]
mov dword [ebp - 0x38], eax
mov eax, dword [ebx + 0x104]
mov dword [ebp - 0x34], eax
imul eax, dword [ebx + 0xc], 0xf5
mov edx, dword [eax + 0x58a140]
mov eax, dword [eax + 0x58a13c]
add eax, dword [ebx + 0x2b0]
adc edx, dword [ebx + 0x2b4]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
cmp dword [ebp - 0x34], 0
jne 0x53ad27
cmp dword [ebp - 0x38], 0
je 0x53ad3d
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebp - 0x34]
jne 0x53ad3b
cmp eax, dword [ebp - 0x38]
jbe 0x53ad44
jmp 0x53ad3d
jle 0x53ad44
xor eax, eax
mov dword [ebp - 0x1c], eax
jmp 0x53ad61
fild qword [ebp - 0x18]
fild qword [ebp - 0x38]
fdivp st(1)
fmul dword [0x53b3b8]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.00456034
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 - 0x5c]
xor edx, edx
mov al, byte [0x58a478]
call fcn.004558d4
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x60]
mov eax, dword [ebp - 4]
call fcn.0053a874
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
lea edx, [ebp - 0x58]
mov ecx, 1
mov eax, 0x53b3c4
call fcn.00409ffc
mov eax, dword [ebx + 0x2b0]
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x2b4]
mov dword [ebp - 0x2c], eax
fld dword [ebp - 8]
fcomp dword [0x53b3cc]
fnstsw ax
sahf
je 0x53ae06
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x7cc]
mov edx, dword [eax + 0x3fc]
mov eax, dword [eax + 0x3f8]
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 [0x53b3b4]
fstp qword [0x58a4cc]
wait
fld dword [ebp - 0xc]
fcomp dword [0x53b3cc]
fnstsw ax
sahf
je 0x53ae3c
mov eax, dword [ebx + 0x100]
mov edx, dword [ebx + 0x104]
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 [0x53b3b4]
fstp qword [ebp - 0x24]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x53b04a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x460]
cmp byte [eax + 0x200], 0
je 0x53ae7c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x464]
cmp byte [eax + 0x200], 0
jne 0x53aea9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x870]
xor edx, edx
call fcn.004b7a24
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00566f4c
mov byte [0x58a1fc], 0
mov byte [0x58a2f1], 0
jmp 0x53b379
mov eax, dword [0x58a3a4]
mov dword [ebp - 0x30], eax
mov eax, dword [0x58a3a8]
mov dword [ebp - 0x2c], eax
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x58a39c]
mov dword [ebp - 0x48], eax
xor eax, eax
mov dword [ebp - 0x44], eax
fild qword [ebp - 0x48]
fdiv dword [0x53b3b4]
call fcn.00402a3c
mov dword [0x58a550], eax
xor eax, eax
mov dword [ebp - 0xc], eax
cmp dword [0x58a3a0], 0
jne 0x53af06
xor eax, eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x3c]
mov edx, dword [0x585ebc]
mov edx, dword [edx]
call fcn.00403ca4
jmp 0x53af7a
fild dword [0x58a3a0]
fild qword [0x58a3ac]
fdivp st(1)
fmul dword [0x53b3b8]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.00456034
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x3c]
push eax
fild dword [0x58a3a0]
add esp, 0xfffffff8
fstp qword [esp]
wait
lea ecx, [ebp - 0x5c]
xor edx, edx
mov al, 2
call fcn.004558d4
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x60]
mov eax, dword [ebp - 4]
call fcn.0053a874
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
lea edx, [ebp - 0x58]
mov ecx, 1
mov eax, 0x53b3c4
call fcn.00409ffc
fld qword [0x58a3b4]
fcomp dword [0x53b3cc]
fnstsw ax
sahf
je 0x53b04a
fld qword [0x58a3b4]
fmul dword [0x53b3d0]
call fcn.00402a3c
imul dword [0x58a550]
mov dword [0x58a3a0], eax
fld qword [0x58a3b4]
fmul dword [0x53b3d0]
call fcn.00402a3c
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
fild qword [ebp - 0x48]
mov eax, dword [0x58a3ac]
mov edx, dword [0x58a3b0]
push edx
push eax
mov eax, dword [0x58a3a0]
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 [0x58a3b4]
fmul dword [0x53b3d0]
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 + 0x7cc]
mov edx, dword [eax + 0x3fc]
mov eax, dword [eax + 0x3f8]
push edx
push eax
mov eax, dword [0x58a3a0]
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 [0x58a4cc]
wait
xor eax, eax
mov dword [0x58a3a0], eax
cmp byte [0x58a504], 0
je 0x53b379
xor eax, eax
push ebp
push 0x53b18d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
call fcn.004d88c0
cmp dword [ebp - 0x34], 0
jne 0x53b092
cmp dword [ebp - 0x38], 0
jne 0x53b092
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
xor edx, edx
mov dword [eax + 0x220], edx
jmp 0x53b0bb
fild qword [ebp - 0x30]
fild qword [ebp - 0x38]
fdivp st(1)
fmul dword [0x53b3b8]
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.00456034
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x5dc]
mov dword [edx + 0x220], eax
cmp byte [0x58a53d], 1
jne 0x53b11e
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x585ebc]
mov edx, dword [edx]
call fcn.00403f98
jne 0x53b11e
lea eax, [ebp - 0x3c]
push eax
push 0
push 0
lea ecx, [ebp - 0x5c]
xor edx, edx
mov al, 2
call fcn.004558d4
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
push dword [ebp - 0xc]
lea edx, [ebp - 0x60]
mov eax, dword [ebp - 4]
call fcn.0053a874
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
lea edx, [ebp - 0x58]
mov ecx, 1
mov eax, 0x53b3c4
call fcn.00409ffc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
mov edx, dword [ebp - 0x1c]
call fcn.004d89c4
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x585ebc]
mov edx, dword [edx]
call fcn.00403f98
setne dl
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
call fcn.0044122c
lea eax, [ebp - 0x5c]
mov ecx, 0x53b3dc
mov edx, dword [ebp - 0x3c]
call fcn.00403ed4
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
call fcn.004d8a28
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53b194
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5dc]
call fcn.004d88c8
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53b3ab
lea eax, [ebp - 0x6c]
call fcn.00403c0c
lea eax, [ebp - 0x60]
mov edx, 2
call fcn.00403c30
lea eax, [ebp - 0x3c]
call fcn.00403c0c
ret