Function at 0x48f6b0
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
lea eax, [ebp - 0xc]
push ebx
push esi
push edi
mov edi, ecx
push eax
test dword [edi + 0x34], 0x20000000
je 0x48f6d0
call dword [sym.imp.USER32.dll_GetCursorPos]
jmp 0x48f6d8
call fcn.0045fc40
add esp, 4
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x11
call esi
xor ebx, ebx
test ax, ax
push 0x10
sets bl
call esi
push dword [ebp + 0x14]
xor ecx, ecx
test ax, ax
sets cl
push ecx
mov dword [ebp - 4], ecx
mov ecx, edi
push ebx
call fcn.0048ec80
mov esi, eax
test ebx, ebx
jne 0x48f712
cdq
xor eax, edx
sub eax, edx
je 0x48f773
mov eax, dword [edi + 0x34]
test eax, 0x80000
je 0x48f727
test ebx, ebx
je 0x48f727
mov edx, 1
jmp 0x48f729
xor edx, edx
test al, 2
je 0x48f736
test ebx, ebx
jne 0x48f736
lea ecx, [ebx + 1]
jmp 0x48f738
xor ecx, ecx
cmp dword [ebp + 0x10], 0
je 0x48f753
mov eax, dword [edi + 0x64]
test al, 1
je 0x48f753
test eax, 0x800
je 0x48f753
mov eax, 1
jmp 0x48f755
xor eax, eax
cmp dword [ebp + 0x14], 0
jne 0x48f77e
test ecx, ecx
jne 0x48f7d1
test eax, eax
jne 0x48f7d1
test edx, edx
jne 0x48f7d1
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x78
jge 0x48f7d1
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push dword [ebp + 0x1c]
mov ecx, edi
call fcn.0048ebc0
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jl 0x48f773
cmp dword [ebp + 0x1c], 0
je 0x48f7d1
test dword [edi + 0x34], 0x10000000
je 0x48f7d1
push dword [edi + 0x5c]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push dword [edi + 0x88]
call fcn.0040b880
add esp, 0xc
test eax, eax
je 0x48f7d1
inc dword [edi + 0x8c]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 8]
test eax, eax
je 0x48f7ec
test dword [edi + 0x34], 0x10000
je 0x48f7ec
push 0
push eax
call fcn.0049de70
add esp, 8
push dword [ebp + 0xc]
mov ecx, edi
push dword [ebp - 4]
push ebx
call fcn.0048ed60
mov ebx, dword [ebp + 0x10]
mov dword [ebp + 0x1c], eax
test ebx, ebx
jne 0x48f81e
cmp dword [edi + 0x44], ebx
jne 0x48f81e
cmp dword [ebp + 0x14], ebx
jne 0x48f81e
test dword [edi + 0x34], 0x1000
jne 0x48f81e
mov ebx, 1
neg esi
call fcn.0049d840
mov edx, dword [ebp + 8]
xor ecx, ecx
cmp edx, eax
mov eax, dword [edi + 0x8c]
sete cl
test eax, eax
je 0x48f845
inc eax
mov dword [edi + 0x8c], 0
imul esi, eax
cmp dword [ebp + 0x1c], 0
je 0x48f851
test byte [edi + 0x34], 4
jne 0x48f858
mov eax, dword [edi + 0x34]
test al, 1
je 0x48f894
movzx ecx, word [ebp - 8]
movzx eax, word [ebp - 0xc]
shl ecx, 0x10
or ecx, eax
mov eax, dword [ebp + 0x1c]
push ecx
movzx eax, ax
movzx ecx, si
shl ecx, 0x10
or ecx, eax
xor eax, eax
test ebx, ebx
push ecx
sete al
mov ecx, 0x515d60
lea eax, [eax*4 + 0x20a]
push eax
push edx
call fcn.00466610
jmp 0x48f933
test eax, 0x200000
je 0x48f89f
test ecx, ecx
jne 0x48f8a5
cmp dword [ebp + 0x14], 0
je 0x48f8f1
test ebx, ebx
mov dword [ebp - 0x28], 0
mov ecx, 0x800
mov dword [ebp - 0x24], 0
mov eax, 0x1000
mov dword [ebp - 0x20], 0
cmovne eax, ecx
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], eax
mov ecx, 0x515d60
push 0x1c
lea eax, [ebp - 0x28]
mov dword [ebp - 0x1c], esi
push eax
push 1
mov dword [ebp - 0x14], 0
call fcn.00466780
jmp 0x48f933
movzx ecx, word [ebp - 8]
lea eax, [ebp + 0x14]
push eax
movzx eax, word [ebp - 0xc]
shl ecx, 0x10
or ecx, eax
mov eax, dword [ebp + 0x1c]
push 0xc8
push 0
push ecx
movzx eax, ax
movzx ecx, si
shl ecx, 0x10
or ecx, eax
xor eax, eax
test ebx, ebx
push ecx
sete al
mov ecx, 0x515d60
lea eax, [eax*4 + 0x20a]
push eax
push edx
call fcn.00466910
add dword [edi + 0x7c], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x88], eax
mov eax, dword [edi + 0x48]
cdq
mov dword [edi + 0x48], 0
xor eax, edx
mov dword [edi + 0x84], 0
sub eax, edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18