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

Disassembly:
sub esp, 0x3c
mov ecx, dword [0x456504]
mov eax, dword [esp + 0x40]
push esi
push edi
mov dword [ecx + 0x48], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x456548]
mov edx, eax
sub edx, ecx
xor edi, edi
mov dword [esp + 8], edx
mov dword [esp + 0xc], edi
fild qword [esp + 8]
mov dword [0x456548], eax
fmul qword [0x4495d0]
fadd dword [0x456550]
fstp dword [0x456550]
fild dword [0x456538]
fcomp dword [0x456550]
fnstsw ax
test ah, 5
jp 0x40223c
mov eax, dword [0x456538]
mov esi, 2
add eax, 0xfffffffe
cmp eax, esi
jle 0x402222
push esi
call fcn.00401ff0
mov ecx, dword [0x456538]
add esp, 4
inc esi
add ecx, 0xfffffffe
cmp esi, ecx
jl 0x40220b
fild dword [0x456538]
mov dword [0x44d050], edi
fsubr dword [0x456550]
fstp dword [0x456550]
jmp 0x402244
cmp dword [0x44d050], edi
jne 0x40228e
fld dword [0x456550]
fcomp qword [0x4495c8]
fnstsw ax
and eax, 0x4100
jne 0x40228e
push edi
mov dword [0x44d050], 1
call fcn.00401ff0
push 1
call fcn.00401ff0
mov edx, dword [0x456538]
add edx, 0xfffffffe
push edx
call fcn.00401ff0
mov eax, dword [0x456538]
dec eax
push eax
call fcn.00401ff0
add esp, 0x10
mov edx, dword [0x456550]
lea ecx, [esp + 0x10]
push ecx
push edx
push 0x456530
call fcn.0043317a
add esp, 0xc
mov eax, 0x45662c
mov ecx, dword [eax - 4]
mov edx, dword [eax]
add eax, 0xfffffffc
mov ecx, dword [ecx + 0x60]
cmp eax, 0x456610
mov dword [edx + 0x60], ecx
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov edx, dword [edx + 0x64]
mov dword [ecx + 0x64], edx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ecx, dword [ecx + 0x68]
mov dword [edx + 0x68], ecx
jg 0x4022ac
fld dword [esp + 0x1c]
fmul dword [0x4495c0]
mov eax, dword [0x456610]
push ebp
push 0x437a0000
fadd dword [eax + 0x60]
fstp dword [eax + 0x60]
fld dword [esp + 0x28]
fmul dword [0x4495c0]
mov eax, dword [0x456610]
fadd dword [eax + 0x64]
fstp dword [eax + 0x64]
fld dword [esp + 0x28]
fmul dword [esp + 0x24]
mov eax, dword [0x456610]
fmul dword [0x4495c0]
fsubr dword [eax + 0x68]
fstp dword [eax + 0x68]
fld dword [esp + 0x18]
mov edx, dword [0x456504]
fstp dword [edx + 0x30]
fld dword [esp + 0x1c]
mov eax, dword [0x456504]
fstp dword [eax + 0x34]
fld dword [esp + 0x20]
mov ecx, dword [0x456504]
fstp dword [ecx + 0x38]
fld dword [0x456550]
fmul qword [0x4495b8]
mov edx, dword [0x45652c]
fsin
fmul qword [0x449500]
fstp dword [edx + 0x54]
fld dword [0x456550]
fmul qword [0x4495b8]
mov eax, dword [0x45652c]
fcos
fmul qword [0x4495b0]
fadd qword [0x4495a8]
fstp dword [eax + 0x58]
fld dword [0x456550]
fmul qword [0x4495a0]
mov ecx, dword [0x45652c]
push ecx
fcos
fmul qword [0x449500]
fstp dword [ecx + 0x5c]
mov eax, dword [0x45652c]
fld dword [eax + 0x64]
fadd qword [0x449598]
fstp dword [eax + 0x64]
fld dword [0x44d0a0]
fmul dword [0x449590]
mov eax, dword [0x45652c]
fadd qword [0x449588]
mov edx, dword [eax + 0x5c]
mov ecx, dword [eax + 0x58]
fstp dword [esp]
push edx
mov edx, dword [eax + 0x54]
mov eax, dword [0x45660c]
push ecx
push edx
push 6
push eax
call fcn.00403170
mov eax, dword [0x45652c]
add esp, 0x10
mov ecx, dword [0x456504]
fld dword [eax + 0x5c]
fmul dword [0x449580]
fstp dword [esp + 8]
fld dword [eax + 0x58]
fmul dword [0x449580]
fadd qword [0x449578]
fstp dword [esp + 4]
fld dword [eax + 0x54]
fmul dword [0x449580]
fstp dword [esp]
push ecx
call fcn.00401000
mov edx, dword [0x456504]
mov dword [edx + 0xc], 0x44bb8000
mov eax, dword [0x456504]
push eax
call fcn.004057d0
mov ecx, dword [0x45660c]
push ecx
call fcn.00405890
mov edx, dword [0x456510]
push edx
call fcn.00405980
call fcn.00406420
mov eax, dword [0x456504]
push eax
call fcn.004057d0
mov ecx, dword [0x45660c]
push ecx
call fcn.00405890
mov eax, dword [0x460674]
add esp, 0x24
cmp eax, 2
jne 0x402707
cmp dword [0x458560], edi
je 0x402707
push ebx
push 2
call fcn.00416170
push eax
call fcn.0042e670
mov ebx, dword [0x456638]
mov ebp, eax
mov eax, dword [0x45652c]
add esp, 8
mov edx, dword [ebx + 4]
mov esi, dword [ebx + 0xc]
mov ecx, dword [eax + 0xc]
cmp ebp, edi
mov dword [esp + 0x10], edx
je 0x402593
mov dword [esp + 0x50], edi
xor edx, edx
xor eax, eax
mov al, byte [edx + ebp]
add edi, eax
inc edx
cmp edx, 0x4b
jl 0x4024c9
mov eax, dword [0x45663c]
mov ebp, dword [0x4565fc]
lea eax, [eax + eax*4]
lea edx, [ebp + ebp*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
add eax, edx
cdq
and edx, 0x7f
add edx, eax
mov eax, dword [0x456508]
sar edx, 7
inc eax
mov dword [0x45663c], edx
mov dword [0x456508], eax
mov eax, edx
shl eax, 4
add eax, edx
add eax, eax
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
cmp edi, eax
jl 0x40256d
cmp edi, 0x258
jle 0x40256d
mov eax, dword [0x456508]
test eax, eax
jle 0x402542
mov dword [0x456508], 0
mov ebp, 1
jmp 0x402546
mov ebp, dword [esp + 0x50]
mov eax, dword [0x45650c]
mov dword [0x45650c], edi
add eax, edi
cdq
sub eax, edx
sar eax, 1
test ebp, ebp
mov dword [0x45663c], eax
je 0x40257b
mov dword [0x44d0a0], 0x40000000
jmp 0x402593
cmp edi, ebp
jle 0x4026e9
mov dword [0x4565fc], edi
fld dword [0x44d0a0]
fmul qword [0x449570]
fadd qword [0x449568]
fstp dword [0x44d0a0]
mov edx, dword [0x45652c]
xor edi, edi
mov eax, dword [edx + 0x54]
mov dword [ebx + 0x54], eax
mov edx, dword [0x45652c]
pop ebx
mov eax, dword [edx + 0x58]
mov edx, dword [0x456638]
mov dword [edx + 0x58], eax
mov eax, dword [0x45652c]
mov edx, dword [eax + 0x5c]
mov eax, dword [0x456638]
mov dword [eax + 0x5c], edx
mov edx, dword [0x45652c]
mov eax, dword [edx + 0x60]
mov edx, dword [0x456638]
mov dword [edx + 0x60], eax
mov eax, dword [0x45652c]
mov edx, dword [eax + 0x64]
mov eax, dword [0x456638]
mov dword [eax + 0x64], edx
mov edx, dword [0x45652c]
mov eax, dword [edx + 0x68]
mov edx, dword [0x456638]
mov dword [edx + 0x68], eax
mov eax, dword [esp + 0xc]
cmp eax, edi
je 0x4026e1
mov edx, dword [ecx]
add ecx, 0x90
fld dword [0x44d0a0]
fmul dword [edx]
mov edx, dword [esi]
add esi, 0x90
dec eax
fstp dword [edx]
mov edx, dword [ecx - 0x8c]
fld dword [0x44d0a0]
fmul dword [edx]
mov edx, dword [esi - 0x8c]
fstp dword [edx]
mov edx, dword [ecx - 0x88]
fld dword [0x44d0a0]
fmul dword [edx]
mov edx, dword [esi - 0x88]
fstp dword [edx]
mov edx, dword [ecx - 0x90]
fld dword [0x44d0a0]
fmul dword [edx + 4]
mov edx, dword [esi - 0x90]
fstp dword [edx + 4]
mov edx, dword [ecx - 0x8c]
fld dword [0x44d0a0]
fmul dword [edx + 4]
mov edx, dword [esi - 0x8c]
fstp dword [edx + 4]
mov edx, dword [ecx - 0x88]
fld dword [0x44d0a0]
fmul dword [edx + 4]
mov edx, dword [esi - 0x88]
fstp dword [edx + 4]
mov edx, dword [ecx - 0x90]
fld dword [0x44d0a0]
fmul dword [edx + 8]
mov edx, dword [esi - 0x90]
fstp dword [edx + 8]
mov edx, dword [ecx - 0x8c]
fld dword [0x44d0a0]
fmul dword [edx + 8]
mov edx, dword [esi - 0x8c]
fstp dword [edx + 8]
mov edx, dword [ecx - 0x88]
fld dword [0x44d0a0]
fmul dword [edx + 8]
mov edx, dword [esi - 0x88]
fstp dword [edx + 8]
jne 0x402604
mov eax, dword [0x456638]
push eax
jmp 0x402718
lea eax, [ebp*8]
sub eax, ebp
add eax, eax
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [0x4565fc], eax
jmp 0x40257b
mov ecx, dword [0x45652c]
mov dword [0x44d0a0], 0x3f4ccccd
push ecx
call fcn.00405980
mov eax, dword [0x460674]
add esp, 4
cmp eax, 1
jne 0x4027f8
cmp dword [0x458560], edi
je 0x4027f8
push 1
call fcn.00416170
push eax
call fcn.0042e670
add esp, 8
cmp eax, edi
je 0x402817
lea esi, [eax + 0x17]
lea ebp, [eax + 0x15]
xor ecx, ecx
xor edx, edx
xor eax, eax
mov dl, byte [esi - 1]
mov al, byte [ebp]
mov edi, edx
xor edx, edx
mov dl, byte [esi]
cmp edi, eax
mov dword [esp + 0x4c], eax
jle 0x402778
mov eax, edi
mov dword [esp + 0x4c], eax
cmp edx, eax
jle 0x402780
mov dword [esp + 0x4c], edx
fild dword [esp + 0x4c]
mov eax, dword [ecx + 0x456610]
fmul qword [0x449560]
mov edx, dword [eax + 0x10]
fcom dword [edx + 0x58]
fnstsw ax
and eax, 0x4100
je 0x4027aa
fstp st(0)
fld dword [edx + 0x58]
fmul qword [0x449558]
fstp dword [edx + 0x58]
test ecx, ecx
je 0x4027e4
mov eax, dword [0x456610]
mov edx, dword [ecx + 0x456610]
mov eax, dword [eax + 0x60]
mov dword [edx + 0x60], eax
mov eax, dword [0x456610]
mov edx, dword [ecx + 0x456610]
mov eax, dword [eax + 0x64]
mov dword [edx + 0x64], eax
mov eax, dword [0x456610]
mov edx, dword [ecx + 0x456610]
mov eax, dword [eax + 0x68]
mov dword [edx + 0x68], eax
add ecx, 4
sub ebp, 3
sub esi, 3
cmp ecx, 0x20
jb 0x40275a
jmp 0x402817
xor eax, eax
mov ecx, dword [eax + 0x456610]
add eax, 4
cmp eax, 0x20
mov ecx, dword [ecx + 0x10]
fld dword [ecx + 0x58]
fmul qword [0x449558]
fstp dword [ecx + 0x58]
jb 0x4027fa
xor esi, esi
pop ebp
mov edx, dword [esi + 0x456610]
push edx
call fcn.00405980
add esi, 4
add esp, 4
cmp esi, 0x20
jb 0x40281a
call fcn.00406420
mov eax, dword [0x456600]
test eax, eax
je 0x402959
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [0x456604]
mov ecx, eax
sub ecx, edx
mov eax, 0x3e0f83e1
mul ecx
mov eax, edx
xor edx, edx
shr eax, 3
div dword [0x44d09c]
mov esi, edx
mov eax, esi
mov ecx, esi
cdq
and edx, 0x7f
and ecx, 0x7f
add eax, edx
mov edx, dword [0x456630]
sar eax, 7
cmp eax, edx
mov edi, dword [eax*4 + 0x44d058]
je 0x40290e
cmp esi, 0x80
mov dword [0x456630], eax
jge 0x4028b0
mov dword [0x456514], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x456500], eax
push edi
call fcn.004029d0
cdq
sub eax, edx
mov edx, dword [0x456504]
sar eax, 1
mov esi, dword [edx + 0x24]
shr esi, 1
sub esi, eax
call fcn.0043c9e1
xor edx, edx
push edi
div esi
mov eax, dword [0x456504]
mov ecx, dword [eax + 0x24]
shr ecx, 2
add edx, ecx
mov dword [0x456608], edx
call fcn.00402a00
mov edx, dword [0x456504]
add esp, 8
mov esi, dword [edx + 0x1c]
sub esi, eax
sub esi, 0x14
call fcn.0043c9e1
cdq
idiv esi
add edx, 0xa
mov dword [0x4565f8], edx
jmp 0x402959
cmp ecx, 0x70
jl 0x40291c
mov eax, 0x7f
sub eax, ecx
jmp 0x402930
cmp ecx, 0x20
jl 0x402928
mov eax, 0xf
jmp 0x402934
cmp ecx, 0x10
jl 0x402959
lea eax, [ecx - 0x10]
test eax, eax
je 0x402959
cmp byte [edi], 0
je 0x402959
mov ecx, dword [0x4565f8]
mov edx, dword [0x456504]
push eax
mov eax, dword [0x456608]
push edi
push 0
push eax
push ecx
push edx
call fcn.00406860
add esp, 0x18
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [0x456500]
mov ecx, eax
sub ecx, edx
mov eax, 0x10624dd3
mul ecx
mov ecx, edx
pop edi
shr ecx, 6
pop esi
je 0x402983
mov eax, dword [0x456514]
cdq
idiv ecx
jmp 0x402985
xor eax, eax
push eax
lea edx, [esp + 0x20]
push str._dfps
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x1c]
push 4
push eax
push 0
push ecx
call fcn.004029d0
mov edx, eax
mov eax, dword [0x456504]
add esp, 4
mov ecx, dword [eax + 0x24]
sub ecx, edx
inc ecx
push ecx
push 3
push eax
call fcn.00406860
inc dword [0x456514]
add esp, 0x54
ret