Function at 0x1401a4ae0
Capabilities:
Log keystrokes via polling

Disassembly:
push rsi
sub rsp, 0x50
mov rax, qword [0x1402bf040]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov r9d, edx
mov rsi, rcx
cmp edx, 0x28
ja 0x1401a4d5e
movabs rcx, 0x15e00000000
bt rcx, r9
jae 0x1401a4d5e
mov rax, qword [rsi + 0x128]
mov r8d, dword [rax]
test r8d, r8d
je 0x1401a4d49
lea eax, ds:[r9 - 0x21]
mov qword [rsp + 0x78], rdi
cmp eax, 7
ja case.0x1401a4b5a.37
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0x1a4d74]
add rcx, rdx
jmp rcx
mov rax, qword [rsi + 0x98]
test rax, rax
je case.0x1401a4b5a.36
mov edi, dword [rax + 0x2c]
test edi, edi
je case.0x1401a4b5a.36
dec edi
jmp 0x1401a4c22
mov rdi, qword [rsi + 0x98]
test rdi, rdi
je case.0x1401a4b5a.36
mov edi, dword [rdi + 0x2c]
inc edi
cmp edi, r8d
jb 0x1401a4c22
lea edi, ds:[r8 - 1]
jmp 0x1401a4c22
mov rdi, qword [rsi + 0x98]
test rdi, rdi
je 0x1401a4bb4
mov edi, dword [rdi + 0x2c]
test byte [rsi + 0x40], 8
je 0x1401a4bbf
mov ecx, dword [rsi + 0x7c]
jmp 0x1401a4bc1
xor ecx, ecx
mov eax, dword [rsi + 0x6c]
sub eax, dword [rsi + 0x70]
sub eax, ecx
js 0x1401a4d44
cdq
idiv dword [rsi + 0x74]
sub eax, 1
js 0x1401a4d44
mov ecx, dword [rsi + 0x80]
cmp r9d, 0x21
jne 0x1401a4bfc
cmp edi, ecx
jbe 0x1401a4bf0
mov edi, ecx
jmp 0x1401a4c22
cmp edi, eax
jb case.0x1401a4b5a.36
sub edi, eax
jmp 0x1401a4c22
xor edi, edi
jmp 0x1401a4c22
add ecx, eax
cmp ecx, r8d
jb 0x1401a4c09
lea ecx, [r8 - 1]
cmp edi, ecx
jae 0x1401a4c11
mov edi, ecx
jmp 0x1401a4c22
add edi, eax
cmp edi, r8d
jb 0x1401a4c22
lea edi, [r8 - 1]
jmp 0x1401a4c22
mov edi, dword [rsp + 0x30]
mov qword [rsp + 0x68], rbx
mov ecx, 0x11
mov qword [rsp + 0x70], rbp
call qword [sym.imp.USER32.dll_GetKeyState]
movzx ebp, ax
mov ecx, 0x10
shr bp, 0xf
call qword [sym.imp.USER32.dll_GetKeyState]
mov rcx, qword [rsi + 0x128]
xor r8d, r8d
mov edx, edi
movzx ebx, ax
mov rcx, qword [rcx + 8]
mov rdx, qword [rcx + rdx*8]
mov rcx, rsi
mov qword [rsi + 0x98], rdx
call fcn.1401a41c0
shr bx, 0xf
test bl, bl
mov rbx, qword [rsp + 0x68]
je 0x1401a4c96
mov r8d, dword [rsi + 0xa4]
cmp r8d, 0xffffffff
je 0x1401a4c96
cmp edi, r8d
jbe 0x1401a4cae
mov edx, r8d
mov r8d, edi
jmp 0x1401a4cb0
test bpl, bpl
jne 0x1401a4d06
mov rax, qword [rsi + 0x98]
mov r8d, edi
mov ecx, dword [rax + 0x2c]
mov dword [rsi + 0xa4], ecx
mov edx, edi
lea rax, [rsp + 0x34]
mov r9d, 4
mov qword [rsp + 0x28], rax
mov rcx, rsi
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.1401a3fe0
mov r8d, dword [rsp + 0x34]
lea rax, [rsp + 0x38]
mov edx, dword [rsp + 0x30]
mov r9b, 1
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.1401a3c80
test al, al
je 0x1401a4d06
mov rcx, qword ds:[rsi]
lea rdx, [rsp + 0x38]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
mov edx, edi
mov rcx, rsi
call fcn.1401a44a0
mov rcx, qword [rsi + 0x38]
mov rbp, qword [rsp + 0x70]
test rcx, rcx
je 0x1401a4d44
xor r9d, r9d
xor r8d, r8d
mov edx, 0x41c
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rsi + 0x158], 0xffffffffffffffff
mov dword [rsi + 0x188], 0xffffffff
mov rdi, qword [rsp + 0x78]
mov al, 1
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401e4160
add rsp, 0x50
pop rsi
ret
xor al, al
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1401e4160
add rsp, 0x50
pop rsi
ret