Function at 0x1400fa070
Capabilities:
Log keystrokes via polling

Disassembly:
push rsi
sub rsp, 0x50
mov r9d, edx
mov rsi, rcx
cmp edx, 0x28
ja 0x1400fa528
mov eax, r9d
movabs rcx, 0x15e00000000
bt rcx, rax
jae 0x1400fa528
mov rax, qword [rsi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
jne 0x1400fa0b3
mov al, 1
add rsp, 0x50
pop rsi
ret
mov qword [rsp + 0x70], rbp
lea eax, [r9 - 0x21]
mov qword [rsp + 0x48], rdi
xor edi, edi
cmp eax, 7
ja case.0x1400fa0dd.37
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0xfa530]
add rcx, rdx
jmp rcx
mov rax, qword [rsi + 0xa0]
test rax, rax
je case.0x1400fa0dd.36
mov ebp, dword [rax + 0x2c]
test ebp, ebp
je case.0x1400fa0dd.36
dec ebp
jmp 0x1400fa1b0
mov rax, qword [rsi + 0xa0]
test rax, rax
je case.0x1400fa0dd.36
mov eax, dword [rax + 0x2c]
lea ebp, [r8 - 1]
inc eax
cmp eax, r8d
cmovb ebp, eax
jmp 0x1400fa1b0
lea ebp, [r8 - 1]
jmp 0x1400fa1b0
mov rax, qword [rsi + 0xa0]
test rax, rax
je 0x1400fa13b
mov ebp, dword [rax + 0x2c]
jmp 0x1400fa13d
mov ebp, edi
test byte [rsi + 0x40], 8
je 0x1400fa14b
mov ecx, dword [rsi + 0x84]
jmp 0x1400fa14d
mov ecx, edi
mov eax, dword [rsi + 0x74]
sub eax, dword [rsi + 0x78]
sub eax, ecx
js 0x1400fa516
cdq
idiv dword [rsi + 0x7c]
mov ecx, eax
sub ecx, 1
js 0x1400fa516
mov eax, dword [rsi + 0x88]
cmp r9d, 0x21
jne 0x1400fa18a
cmp ebp, eax
jbe 0x1400fa17e
mov ebp, eax
jmp 0x1400fa1b0
cmp ebp, ecx
jb case.0x1400fa0dd.36
sub ebp, ecx
jmp 0x1400fa1b0
mov ebp, edi
jmp 0x1400fa1b0
add eax, ecx
lea r9d, [r8 - 1]
cmp eax, r8d
mov edx, r9d
cmovb edx, eax
cmp ebp, edx
jae 0x1400fa1a1
mov ebp, edx
jmp 0x1400fa1b0
add ebp, ecx
cmp ebp, r8d
cmovae ebp, r9d
jmp 0x1400fa1b0
mov ebp, dword [rsp + 0x68]
mov qword [rsp + 0x60], rbx
mov ecx, 0x11
mov qword [rsp + 0x40], r14
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ecx, 0x10
sets r14b
call qword [sym.imp.USER32.dll_GetKeyState]
mov rcx, qword [rsi + 0x130]
movzx ebx, ax
mov r8d, ebp
mov rdx, qword [rcx + 8]
mov rcx, rsi
mov rdx, qword [rdx + r8*8]
xor r8d, r8d
mov qword [rsi + 0xa0], rdx
call fcn.1400f9550
test bx, bx
jns 0x1400fa353
mov ecx, dword [rsi + 0xac]
cmp ecx, 0xffffffff
je 0x1400fa353
mov rax, qword [rsi + 0x130]
cmp ebp, ecx
mov edx, ebp
cmovbe edx, ecx
cmovbe ecx, ebp
mov r8d, dword [rax]
test r8d, r8d
je 0x1400fa49c
lea r14d, [r8 - 1]
mov r11d, edi
cmp edx, r14d
mov eax, r14d
mov ebx, r14d
cmovbe eax, edx
mov edx, edi
cmp ecx, eax
cmovbe r8d, ecx
cmovbe r11d, eax
test r8d, r8d
je 0x1400fa296
mov r9, rdi
nop word [rax + rax]
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x1400fa28b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp edi, edx
jae 0x1400fa28b
mov edi, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x1400fa260
cmp r8d, r11d
ja 0x1400fa2e5
nop dword [rax + rax]
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov ecx, dword [r9]
test cl, 0x20
jne 0x1400fa2dd
test cl, 2
jne 0x1400fa2dd
mov eax, ecx
not eax
xor eax, ecx
and eax, 2
xor eax, ecx
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp edi, r8d
jae 0x1400fa2dd
mov edi, r8d
inc r8d
cmp r8d, r11d
jbe 0x1400fa2a0
lea r8d, [r11 + 1]
cmp r8d, r14d
ja 0x1400fa327
nop
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x1400fa31f
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp edi, r8d
jae 0x1400fa31f
mov edi, r8d
inc r8d
cmp r8d, r14d
jbe 0x1400fa2f0
cmp ebx, edi
ja 0x1400fa4a4
mov rax, qword [rsi + 0xc8]
xor r9d, r9d
mov rcx, qword [rsi]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rsi + 0xc0]
jmp 0x1400fa4a4
test r14b, r14b
jne 0x1400fa4d3
mov rax, qword [rsi + 0xa0]
mov ecx, dword [rax + 0x2c]
mov rax, qword [rsi + 0x130]
mov dword [rsi + 0xac], ecx
mov r8d, dword [rax]
test r8d, r8d
je 0x1400fa49c
lea r14d, [r8 - 1]
mov r11d, edi
cmp ebp, r14d
mov eax, r14d
mov ebx, r14d
mov edx, edi
cmovbe eax, ebp
cmp ebp, eax
cmovbe r8d, ebp
cmovbe r11d, eax
test r8d, r8d
je 0x1400fa3e6
mov r9, rdi
nop word [rax + rax]
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x1400fa3db
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp edi, edx
jae 0x1400fa3db
mov edi, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x1400fa3b0
cmp r8d, r11d
ja 0x1400fa435
nop dword [rax + rax]
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov ecx, dword [r9]
test cl, 0x20
jne 0x1400fa42d
test cl, 2
jne 0x1400fa42d
mov eax, ecx
not eax
xor eax, ecx
and eax, 2
xor eax, ecx
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp edi, r8d
jae 0x1400fa42d
mov edi, r8d
inc r8d
cmp r8d, r11d
jbe 0x1400fa3f0
lea r8d, [r11 + 1]
cmp r8d, r14d
ja 0x1400fa477
nop
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x1400fa46f
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp edi, r8d
jae 0x1400fa46f
mov edi, r8d
inc r8d
cmp r8d, r14d
jbe 0x1400fa440
cmp ebx, edi
ja 0x1400fa4a4
mov rax, qword [rsi + 0xc8]
xor r9d, r9d
mov rcx, qword [rsi]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rsi + 0xc0]
jmp 0x1400fa4a4
mov edi, dword [rsp + 0x68]
mov ebx, dword [rsp + 0x68]
lea rax, [rsp + 0x30]
mov r9b, 1
mov r8d, edi
mov qword [rsp + 0x20], rax
mov edx, ebx
mov rcx, rsi
call fcn.1400f9070
test al, al
je 0x1400fa4d3
mov rcx, qword [rsi]
lea rdx, [rsp + 0x30]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
mov edx, ebp
mov rcx, rsi
call fcn.1400f9b10
mov rcx, qword [rsi + 0x38]
mov r14, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x60]
test rcx, rcx
je 0x1400fa516
xor r9d, r9d
xor r8d, r8d
mov edx, 0x41c
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rsi + 0x160], 0xffffffffffffffff
mov dword [rsi + 0x190], 0xffffffff
mov rbp, qword [rsp + 0x70]
mov al, 1
mov rdi, qword [rsp + 0x48]
add rsp, 0x50
pop rsi
ret
xor al, al
add rsp, 0x50
pop rsi
ret