Function at 0x48e2a0
Capabilities:
Log keystrokes via polling

Disassembly:
sub rsp, 0x78
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x58], rdi
mov rbx, rcx
mov rcx, qword [rcx]
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x38], r15
mov r14d, r9d
mov r15d, r8d
mov edi, edx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x48e2e0
call fcn.0049ede0
mov rcx, rbx
mov rdx, rax
call fcn.0048e170
xor r8d, r8d
mov qword [rsp + 0x50], r12
mov r12d, dword [rbx + 0x58]
test r12d, r12d
lea r9d, [r8 - 1]
jns 0x48e2fa
mov ecx, r9d
jmp 0x48e303
test r12d, r12d
mov ecx, r8d
setg cl
test edi, edi
jns 0x48e30c
mov eax, r9d
jmp 0x48e314
test edi, edi
mov eax, r8d
setg al
cmp ecx, eax
mov eax, edi
mov qword [rsp + 0x68], rbp
cmovne r12d, r8d
cdq
mov dword [rsp + 0x88], edi
xor eax, edx
mov dword [rbx + 0x58], r12d
sub eax, edx
cmp eax, 0x3e8
jle 0x48e358
test edi, edi
jns 0x48e347
mov ebp, r9d
imul ebp, ebp, 0x3e8
jmp 0x48e35a
test edi, edi
mov ebp, r8d
setg bpl
imul ebp, ebp, 0x3e8
jmp 0x48e35a
mov ebp, edi
mov ecx, dword [rsp + 0xa0]
mov qword [rsp + 0x60], rsi
mov esi, 1
sub ecx, esi
mov qword [rsp + 0x48], r13
mov edx, ebp
mov r13d, esi
je 0x48e37f
cmp ecx, esi
je 0x48e3d3
jmp 0x48e38e
mov eax, ebp
mov r13d, 2
cdq
sub eax, edx
sar eax, 1
mov edx, eax
movsd xmm1, qword [rbx + 0x18]
mov eax, edx
cdq
xor eax, edx
sub eax, edx
cvtsi2sd xmm0, eax
call fcn.004ae870
cvtsi2sd xmm1, r13d
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
mulsd xmm0, qword [0x004f38f8]
mulsd xmm0, xmm1
cvttsd2si ecx, xmm0
add ecx, eax
test edi, edi
jle 0x48e3cc
mov edi, ecx
xor r8d, r8d
jmp 0x48e3d3
mov edi, ecx
neg edi
xor r8d, r8d
mov r13, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x68]
lea ecx, [r12 + rdi]
mov r12, qword [rsp + 0x50]
test r14d, r14d
mov r14, qword [rsp + 0x40]
mov dword [rbx + 0x58], ecx
je 0x48e3fd
mov eax, 2
jmp 0x48e57b
mov edi, dword [rbx + 8]
cmp edi, 3
jne 0x48e411
cmp qword [rbx + 0x40], 0
mov edi, r8d
setne dil
cmp dword [rbx + 0x68], 0
jne 0x48e44d
test byte [rbx + 0x34], 8
jne 0x48e44d
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x48e44d
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x48e44d
lea rcx, [0x00526380]
call fcn.0045f650
test eax, eax
je 0x48e44f
xor edi, edi
mov eax, dword [rbx + 0x34]
test al, 0x40
je 0x48e45d
mov edi, 4
jmp 0x48e478
cmp edi, esi
jne 0x48e478
test sil, al
jne 0x48e476
bt eax, 0xd
jae 0x48e478
call fcn.0049de50
cmp eax, 9
jl 0x48e478
xor edi, edi
xor ecx, ecx
test edi, edi
je 0x48e541
sub edi, esi
je 0x48e525
sub edi, esi
je 0x48e512
cmp edi, 2
jne 0x48e56e
mov r8d, dword [rbx + 0x58]
mov eax, r8d
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x80
jl 0x48e56e
mov rax, qword [0x005271d0]
test rax, rax
je 0x48e555
mov rcx, qword [rax]
test rcx, rcx
je 0x48e555
mov rcx, qword [rcx + 0x58]
test r8d, r8d
mov edx, 0xffffffff
mov r10, qword [rcx]
mov eax, esi
cmovg eax, edx
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], eax
call qword [r10 + reloc.OLEAUT32.dll_VarDecAdd]
mov r11d, dword [rbx + 0x58]
test r11d, r11d
jle 0x48e508
add r11d, 0xffffff80
mov dword [rbx + 0x58], r11d
jmp 0x48e555
sub r11d, 0xffffff80
mov dword [rbx + 0x58], r11d
jmp 0x48e555
mov r8, qword [rbx]
movzx edx, sil
mov rcx, rbx
call fcn.0048d490
mov ecx, eax
jmp 0x48e551
mov r9, qword [rbx + 0x40]
mov r8, qword [rbx + 0x38]
movzx edx, sil
mov rcx, rbx
mov dword [rsp + 0x20], esi
call fcn.0048d2e0
mov ecx, eax
jmp 0x48e551
mov rdx, qword [rbx]
mov r8d, r15d
mov rcx, rbx
call fcn.0048cf80
mov ecx, eax
test ecx, ecx
jle 0x48e56e
mov eax, dword [rsp + 0x88]
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jg 0x48e579
mov dword [rbx + 0x58], 0
jmp 0x48e579
xor esi, esi
test ecx, ecx
sets sil
add esi, 2
mov eax, esi
mov r15, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x70]
add rsp, 0x78
ret