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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x18
push ebx
push ebp
push esi
push edi
mov edi, ecx
lea ebp, [edi + 0x10]
mov dword [esp + 0x1c], 0x21
mov eax, dword [ebp]
mov edx, dword [eax + 4]
mov ecx, ebp
call edx
cmp dword [0x4b5a90], 1
jne 0x403c65
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x403c6b
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ebx, eax
mov eax, dword [edi + 0x38]
sub eax, 1
jne 0x403dc7
mov ecx, dword [edi + 0x3c]
mov esi, dword [edi + 0x44]
mov eax, ecx
sub eax, esi
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [esp + 0x14], ecx
fld qword [0x495ee0]
fmul st(1), st(0)
fxch st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld1
fcom st(1)
fnstsw ax
fxch st(1)
test ah, 0x41
jnp 0x403cc2
fcom qword [0x495ed8]
fnstsw ax
test ah, 0x41
jnp 0x403cc2
fstp st(0)
mov dword [edi + 0x44], ecx
jmp 0x403ccc
call fcn.004815a0
add eax, esi
mov dword [edi + 0x44], eax
mov ecx, dword [edi + 0x40]
mov esi, dword [edi + 0x48]
mov edx, ecx
sub edx, esi
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
mov dword [esp + 0x18], ecx
fmul st(2)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
je 0x403d0b
fcom qword [0x495ed8]
fnstsw ax
test ah, 0x41
jnp 0x403d0b
fstp st(0)
mov dword [edi + 0x48], ecx
jmp 0x403d15
call fcn.004815a0
add eax, esi
mov dword [edi + 0x48], eax
fild dword [edi + 0x44]
fstp dword [esp + 0x10]
fild dword [esp + 0x14]
fstp dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fsub st(2)
fld dword [esp + 0x14]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x403d90
fxch st(1)
fadd st(2)
fcompp
fnstsw ax
test ah, 0x41
jne 0x403d94
fild dword [edi + 0x48]
fstp dword [esp + 0x14]
fild dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [esp + 0x14]
fld st(0)
fsub st(2)
fld dword [esp + 0x18]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x403d90
fxch st(1)
faddp st(2)
fcompp
fnstsw ax
test ah, 5
jp 0x403d96
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x40]
mov dword [edi + 0x44], eax
mov dword [edi + 0x48], ecx
mov dword [edi + 0x38], 0
jmp 0x403d96
fstp st(1)
fstp st(0)
fstp st(0)
mov eax, dword [edi + 0x44]
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x34]
push edx
push eax
mov dword [esp + 0x2c], ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
test eax, eax
je 0x403dc7
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push ecx
push edx
call dword [sym.imp.USER32.dll_SetCursorPos]
cmp dword [0x4b5a90], 1
jne 0x403dd8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
jmp 0x403dde
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, ebx
mov dword [esp + 0x18], eax
cmp eax, 0x21
lea eax, [esp + 0x1c]
ja 0x403df1
lea eax, [esp + 0x18]
mov esi, 0x21
sub esi, dword [eax]
cmp esi, 1
jae 0x403e04
mov esi, 1
jmp 0x403e10
cmp esi, 0x21
jbe 0x403e10
mov esi, 0x21
mov edi, edi
mov eax, dword [ebp]
mov edx, dword [eax + 8]
mov ecx, ebp
call edx
mov eax, dword [edi + 8]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x403c4a
pop edi
xor eax, eax
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret