Function at 0x1401f7800
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
sub rsp, 0x20
mov edi, edx
mov ebx, r8d
xor edx, edx
mov rbp, rcx
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
mov rsi, rax
mov rdx, qword [rax + 0x328]
mov eax, dword [rdx]
test ebx, ebx
je 0x1401f7b9f
cmp edi, 9
je 0x1401f7de6
cmp edi, 0x1b
je 0x1401f7bb4
mov qword [rsp + 0x30], r14
lea r14d, [rdi - 0x21]
cmp r14d, 7
ja 0x1401f7b9a
test eax, eax
jle 0x1401f7b9a
movsxd rax, dword [rsi + 0x318]
lea rdi, [rsi + 0x330]
mov rbx, qword [rdx + 8]
mov ebp, 2
imul rbx, rax
mov rcx, rdi
add rbx, qword [rdx + 0x10]
mov edx, ebp
mov rax, rbx
nop dword [rax]
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub rdx, 1
jne 0x1401f7890
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
mov rax, qword [rax + 0x50]
mov qword [rcx + 0x50], rax
lea ecx, [rdx + 0x11]
call qword [sym.imp.USER32.dll_GetKeyState]
xor r8d, r8d
lea r9, [0x140000000]
mov ecx, dword [r9 + r14*4 + 0x1f8088]
test ax, ax
mov edx, r8d
sets dl
add rcx, r9
jmp rcx
mov qword [rbx + 8], r8
jmp 0x1401f7a0a
movabs rax, 0x3ff0000000000000
mov qword [rbx + 8], rax
jmp 0x1401f7a0a
movsd xmm3, qword [rbx + 8]
xorps xmm0, xmm0
comisd xmm0, xmm3
movsd xmm1, qword [0x1404538b8]
jbe 0x1401f7a25
xorps xmm2, xmm2
jmp 0x1401f7a2c
movaps xmm2, xmm1
minsd xmm2, xmm3
movsd xmm3, qword [rbx]
comisd xmm0, xmm3
movsd qword [rbx + 8], xmm2
ja 0x1401f7a42
minsd xmm1, xmm3
movaps xmm0, xmm1
movsd qword [rbx], xmm0
lea rcx, [rsi + 0x20]
mov eax, dword [rsi + 0x318]
mov dword [rsi + 0x18], eax
mov rax, rbp
mov dword [rsi + 0x10], 0x838
nop dword [rax]
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
lea rdi, [rdi + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm0, xmmword [rdi - 0x60]
movups xmmword [rcx - 0x70], xmm1
movups xmm1, xmmword [rdi - 0x50]
movups xmmword [rcx - 0x60], xmm0
movups xmm0, xmmword [rdi - 0x40]
movups xmmword [rcx - 0x50], xmm1
movups xmm1, xmmword [rdi - 0x30]
movups xmmword [rcx - 0x40], xmm0
movups xmm0, xmmword [rdi - 0x20]
movups xmmword [rcx - 0x30], xmm1
movups xmm1, xmmword [rdi - 0x10]
movups xmmword [rcx - 0x20], xmm0
movups xmmword [rcx - 0x10], xmm1
sub rax, 1
jne 0x1401f7a60
movups xmm0, xmmword [rdi]
mov rax, qword [rdi + 0x50]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rcx], xmm0
movups xmm0, xmmword [rdi + 0x20]
movups xmmword [rcx + 0x10], xmm1
movups xmm1, xmmword [rdi + 0x30]
movups xmmword [rcx + 0x20], xmm0
movups xmm0, xmmword [rdi + 0x40]
movups xmmword [rcx + 0x30], xmm1
movups xmmword [rcx + 0x40], xmm0
mov qword [rcx + 0x50], rax
lea rcx, [rsi + 0x178]
nop dword [rax + rax]
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rbx]
lea rbx, [rbx + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rbx - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rbx - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rbx - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rbx - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rbx - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rbx - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rbx - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub rbp, 1
jne 0x1401f7af0
movups xmm0, xmmword [rbx]
movsxd r8, dword [rsi + 8]
lea edx, [rbp + 0x4e]
mov r9, rsi
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rbx + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rbx + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rbx + 0x40]
movups xmmword [rcx + 0x40], xmm0
mov rax, qword [rbx + 0x50]
mov qword [rcx + 0x50], rax
mov rcx, qword [rsi + 0x2e0]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [rsi + 0x2d0]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.USER32.dll_InvalidateRect]
mov r14, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
add rsp, 0x20
pop rdi
ret
cmp dword [rsi + 0x314], 1
jne 0x1401f7b9f
test eax, eax
jle 0x1401f7db6
movsxd rax, dword [rsi + 0x318]
mov ebp, 2
mov rcx, qword [rdx + 8]
mov r9d, ebp
imul rcx, rax
add rcx, qword [rdx + 0x10]
lea rdx, [rsi + 0x330]
mov rax, rdx
mov r8, rcx
nop dword [rax]
lea r8, [r8 + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [r8 - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [r8 - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [r8 - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [r8 - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [r8 - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [r8 - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [r8 - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [r8 - 0x10], xmm1
sub r9, 1
jne 0x1401f7bf0
movups xmm0, xmmword [rax]
movups xmmword [r8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r8 + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [r8 + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [r8 + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [r8 + 0x40], xmm0
mov rax, qword [rax + 0x50]
mov qword [r8 + 0x50], rax
xor r8d, r8d
mov eax, dword [rsi + 0x318]
mov dword [rsi + 0x314], r8d
lea r8, [rsi + 0x20]
mov dword [rsi + 0x18], eax
mov rax, rbp
mov dword [rsi + 0x10], 0x838
nop
lea r8, [r8 + 0x80]
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
lea rdx, [rdx + 0x80]
movups xmmword [r8 - 0x80], xmm0
movups xmm0, xmmword [rdx - 0x60]
movups xmmword [r8 - 0x70], xmm1
movups xmm1, xmmword [rdx - 0x50]
movups xmmword [r8 - 0x60], xmm0
movups xmm0, xmmword [rdx - 0x40]
movups xmmword [r8 - 0x50], xmm1
movups xmm1, xmmword [rdx - 0x30]
movups xmmword [r8 - 0x40], xmm0
movups xmm0, xmmword [rdx - 0x20]
movups xmmword [r8 - 0x30], xmm1
movups xmm1, xmmword [rdx - 0x10]
movups xmmword [r8 - 0x20], xmm0
movups xmmword [r8 - 0x10], xmm1
sub rax, 1
jne 0x1401f7ca0
movups xmm0, xmmword [rdx]
mov rax, qword [rdx + 0x50]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r8], xmm0
movups xmm0, xmmword [rdx + 0x20]
movups xmmword [r8 + 0x10], xmm1
movups xmm1, xmmword [rdx + 0x30]
movups xmmword [r8 + 0x20], xmm0
movups xmm0, xmmword [rdx + 0x40]
lea rdx, [rsi + 0x178]
movups xmmword [r8 + 0x30], xmm1
movups xmmword [r8 + 0x40], xmm0
mov qword [r8 + 0x50], rax
lea rdx, [rdx + 0x80]
movups xmm0, xmmword [rcx]
lea rcx, [rcx + 0x80]
movups xmmword [rdx - 0x80], xmm0
movups xmm1, xmmword [rcx - 0x70]
movups xmmword [rdx - 0x70], xmm1
movups xmm0, xmmword [rcx - 0x60]
movups xmmword [rdx - 0x60], xmm0
movups xmm1, xmmword [rcx - 0x50]
movups xmmword [rdx - 0x50], xmm1
movups xmm0, xmmword [rcx - 0x40]
movups xmmword [rdx - 0x40], xmm0
movups xmm1, xmmword [rcx - 0x30]
movups xmmword [rdx - 0x30], xmm1
movups xmm0, xmmword [rcx - 0x20]
movups xmmword [rdx - 0x20], xmm0
movups xmm1, xmmword [rcx - 0x10]
movups xmmword [rdx - 0x10], xmm1
sub rbp, 1
jne 0x1401f7d35
movups xmm0, xmmword [rcx]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdx + 0x10], xmm1
movups xmm0, xmmword [rcx + 0x20]
movups xmmword [rdx + 0x20], xmm0
movups xmm1, xmmword [rcx + 0x30]
movups xmmword [rdx + 0x30], xmm1
movups xmm0, xmmword [rcx + 0x40]
movups xmmword [rdx + 0x40], xmm0
mov rax, qword [rcx + 0x50]
mov qword [rdx + 0x50], rax
movsxd r8, dword [rsi + 8]
mov r9, rsi
mov rcx, qword [rsi + 0x2e0]
mov edx, 0x4e
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [rsi + 0x2d0]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x1401f7b9f
cmp dword [rsi + 0x314], 1
je 0x1401f7b9f
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
xor edx, edx
mov rcx, rbp
test ax, ax
jns 0x1401f7e5b
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
mov r8d, dword [rax + 0x318]
sub r8d, 1
js 0x1401f7e56
mov rax, qword [rax + 0x328]
movsxd r9, r8d
mov rcx, r9
mov r10, qword [rax + 8]
mov rdx, qword [rax + 0x10]
imul rcx, r10
add rdx, 0x14
add rdx, rcx
nop dword [rax + rax]
cmp dword [rdx], 1
je 0x1401f7e51
dec r8d
sub rdx, r10
sub r9, 1
jns 0x1401f7e40
test r8d, r8d
jns 0x1401f7eac
xor r8d, r8d
jmp 0x1401f7eac
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
mov r9, qword [rax + 0x328]
mov edx, dword [rax + 0x318]
inc edx
movsxd rbx, dword [r9]
cmp edx, ebx
jge 0x1401f7ea3
mov r10, qword [r9 + 8]
mov r9, qword [r9 + 0x10]
movsxd r8, edx
add r9, 0x14
mov rcx, r8
imul rcx, r10
add r9, rcx
cmp dword [r9], 1
je 0x1401f7ea3
inc edx
inc r8
add r9, r10
cmp r8, rbx
jl 0x1401f7e90
xor r8d, r8d
cmp edx, ebx
cmovne r8d, edx
mov rcx, qword [rsi + 0x328]
mov ebp, 2
mov dword [rsi + 0x318], r8d
mov r9d, ebp
movsxd rax, r8d
mov rdx, qword [rcx + 8]
imul rdx, rax
add rdx, qword [rcx + 0x10]
lea rcx, [rsi + 0x330]
mov rax, rdx
nop dword [rax + rax]
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub r9, 1
jne 0x1401f7ee0
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
mov rax, qword [rax + 0x50]
mov qword [rcx + 0x50], rax
lea rcx, [rsi + 0x20]
mov dword [rsi + 0x18], r8d
mov rax, rdx
mov dword [rsi + 0x10], 0x836
mov r8, rbp
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub r8, 1
jne 0x1401f7f76
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
mov rax, qword [rax + 0x50]
mov qword [rcx + 0x50], rax
lea rcx, [rsi + 0x178]
nop
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rdx]
lea rdx, [rdx + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rdx - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rdx - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rdx - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rdx - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rdx - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rdx - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rdx - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub rbp, 1
jne 0x1401f8000
movups xmm0, xmmword [rdx]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rdx + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rdx + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rdx + 0x40]
movups xmmword [rcx + 0x40], xmm0
mov rax, qword [rdx + 0x50]
mov qword [rcx + 0x50], rax
jmp 0x1401f7db6