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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
movsx eax, bl
mov edx, dword [0x48d270]
cmp esi, dword [edx + eax*4 + 0x98]
jb 0x41c547
cmp byte [0x49a615], 0
jne 0x41c547
mov byte [ebp - 1], 0
jmp 0x41c7f6
mov eax, dword [0x48d9b4]
cmp byte [eax], 0
je 0x41c580
movsx eax, bl
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
push eax
mov eax, 0xc800
pop edx
mov ecx, edx
xor edx, edx
div ecx
cmp edi, eax
ja 0x41c580
movsx eax, bl
mov edx, dword [0x48d71c]
cmp byte [edx + eax + 0x26], 0
je 0x41c5d9
movsx eax, bl
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jge 0x41c59f
push 0x7f02
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
mov eax, dword [ebp + 8]
push eax
mov ecx, edi
mov edx, esi
mov eax, ebx
call fcn.0041c258
mov byte [ebp - 1], al
movsx eax, bl
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jge 0x41c7f6
push 0x7f00
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
jmp 0x41c7f6
cmp dword [0x49a6c4], 0
jne 0x41c5fa
push 4
push 0x1000
push 0xc800
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x49a6c4], eax
cmp bl, byte [0x49a614]
jne 0x41c639
cmp esi, dword [0x49a6cc]
jb 0x41c639
xor eax, eax
mov al, byte [0x49a6d0]
add eax, dword [0x49a6cc]
lea edx, [edi + esi]
cmp eax, edx
jb 0x41c639
call sub.kernel32.dll_GetTickCount
sub eax, dword [0x49a6c8]
cmp eax, 0x9c4
jae 0x41c639
mov byte [ebp - 1], 1
jmp 0x41c7b5
mov dword [ebp - 0xc], esi
xor eax, eax
mov dword [ebp - 8], eax
fild qword [ebp - 0xc]
mov eax, dword [0x48d318]
fistp qword [eax]
wait
push 0
push 0
movsx eax, bl
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
push eax
mov eax, 0xc800
pop edx
mov ecx, edx
xor edx, edx
div ecx
mov ecx, 3
xor edx, edx
div ecx
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
mov eax, dword [0x48d318]
fild qword [eax]
fsubrp st(1)
add esp, 0xfffffff8
fistp qword [esp]
wait
call fcn.0040bbcc
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0040fd58
mov dword [0x49a6cc], eax
mov eax, dword [0x49a6cc]
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 8], eax
fild qword [ebp - 0xc]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dword [ebp - 0x18], edi
xor eax, eax
mov dword [ebp - 0x14], eax
fild qword [ebp - 0x18]
mov eax, dword [0x48d318]
fild qword [eax]
faddp st(1)
movsx eax, bl
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
push eax
mov eax, 0xc800
pop edx
mov ecx, edx
xor edx, edx
div ecx
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fsubp st(1)
add esp, 0xfffffff8
fistp qword [esp]
wait
call fcn.0040bbcc
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0040fd58
mov dword [0x49a6cc], eax
movsx eax, bl
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
push eax
mov eax, 0xc800
pop edx
mov ecx, edx
xor edx, edx
div ecx
movsx edx, bl
mov ecx, dword [0x48d270]
mov edx, dword [ecx + edx*4 + 0x98]
sub edx, dword [0x49a6cc]
call fcn.0040bb7c
mov byte [0x49a6d0], al
mov byte [0x49a614], bl
movsx eax, bl
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jge 0x41c76b
push 0x7f02
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
mov eax, dword [0x49a6c4]
push eax
xor ecx, ecx
mov cl, byte [0x49a6d0]
mov edx, dword [0x49a6cc]
mov eax, ebx
call fcn.0041c258
mov byte [ebp - 1], al
movsx eax, bl
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jge 0x41c7a8
push 0x7f00
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
cmp byte [ebp - 1], 0
jne 0x41c7b5
mov byte [0x49a614], 0
movsx eax, bl
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
mov edx, eax
imul edx, edi
push edx
movsx edx, bl
mov ecx, dword [0x48d9a0]
mov edx, eax
sub esi, dword [0x49a6cc]
imul edx, esi
add edx, dword [0x49a6c4]
mov eax, dword [ebp + 8]
pop ecx
call fcn.00405a94
call sub.kernel32.dll_GetTickCount
mov dword [0x49a6c8], eax
mov al, byte [ebp - 1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4