Function at 0x14008fd00
Capabilities:
Log keystrokes via polling

Disassembly:
push rsi
sub rsp, 0x60
mov rax, qword [0x140155040]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov r9d, edx
mov rsi, rcx
cmp edx, 0x28
ja 0x1400900d0
movabs rcx, 0x15e00000000
bt rcx, r9
jae 0x1400900d0
mov rax, qword [rsi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x1400900bb
mov qword [rsp + 0x80], rbp
lea eax, [r9 - 0x21]
xor ebp, ebp
mov qword [rsp + 0x58], rdi
cmp eax, 7
ja case.0x14008fd7d.36
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0x900e8]
add rcx, rdx
jmp rcx
mov rax, qword [rsi + 0x98]
test rax, rax
je case.0x14008fd7d.36
mov edi, dword [rax + 0x2c]
test edi, edi
je case.0x14008fd7d.36
dec edi
jmp 0x14008fe38
mov rdi, qword [rsi + 0x98]
test rdi, rdi
je case.0x14008fd7d.36
mov edi, dword [rdi + 0x2c]
inc edi
jmp 0x14008fe2b
mov rdi, qword [rsi + 0x98]
test rdi, rdi
je 0x14008fdcd
mov edi, dword [rdi + 0x2c]
jmp 0x14008fdcf
mov edi, ebp
test byte [rsi + 0x40], 8
je 0x14008fdda
mov ecx, dword [rsi + 0x7c]
jmp 0x14008fddc
mov ecx, ebp
mov eax, dword [rsi + 0x6c]
sub eax, dword [rsi + 0x70]
sub eax, ecx
js 0x1400900ae
cdq
idiv dword [rsi + 0x74]
sub eax, 1
js 0x1400900ae
mov ecx, dword ds:[rsi + 0x80]
cmp r9d, 0x21
jne 0x14008fe16
cmp edi, ecx
jbe 0x14008fe0e
mov edi, ecx
jmp 0x14008fe38
cmp edi, eax
jb case.0x14008fd7d.36
sub edi, eax
jmp 0x14008fe38
add ecx, eax
cmp ecx, r8d
jb 0x14008fe21
lea ecx, [r8 - 1]
cmp edi, ecx
jae 0x14008fe29
mov edi, ecx
jmp 0x14008fe38
add edi, eax
cmp edi, r8d
jb 0x14008fe38
lea edi, [r8 - 1]
jmp 0x14008fe38
mov edi, ebp
mov qword [rsp + 0x78], rbx
mov ecx, 0x11
mov qword [rsp + 0x50], r14
call qword [sym.imp.USER32.dll_GetKeyState]
movzx r14d, ax
mov ecx, 0x10
shr r14w, 0xf
call qword [sym.imp.USER32.dll_GetKeyState]
mov rcx, qword [rsi + 0x130]
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.14008f280
shr bx, 0xf
test bl, bl
je 0x14008fee5
mov r8d, dword ds:[rsi + 0xa4]
cmp r8d, 0xffffffff
je 0x14008fee5
cmp edi, r8d
jbe 0x14008feb3
mov edx, r8d
mov r8d, edi
jmp 0x14008feb5
mov edx, edi
lea rax, [rsp + 0x30]
mov r9d, 4
mov qword [rsp + 0x28], rax
mov rcx, rsi
lea rax, [rsp + 0x34]
mov qword [rsp + 0x20], rax
call fcn.14008f0a0
mov r8d, dword [rsp + 0x30]
mov edx, dword [rsp + 0x34]
jmp 0x140090041
test r14b, r14b
jne 0x14009006b
mov rax, qword [rsi + 0x98]
mov r8d, edi
mov ecx, dword [rax + 0x2c]
mov rax, qword [rsi + 0x130]
mov dword [rsi + 0xa4], ecx
mov ecx, dword [rax]
test ecx, ecx
je 0x140090034
lea r11d, [rcx - 1]
cmp edi, r11d
jbe 0x14008ff26
mov r8d, ecx
mov eax, r11d
mov ecx, r11d
jmp 0x14008ff2a
mov ecx, edi
mov eax, edi
cmp edi, eax
mov r14d, ebp
mov ebx, r11d
mov edx, ebp
cmovbe r14d, ecx
test r8d, r8d
je 0x14008ff76
mov r9, rbp
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14008ff6b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp ebp, edx
jae 0x14008ff6b
mov ebp, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14008ff40
cmp r8d, r14d
ja 0x14008ffb9
nop dword [rax + rax]
mov rax, qword [rsi + 0x130]
mov edx, r8d
mov rcx, qword [rax + 8]
mov r9, qword [rcx + rdx*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14008ffb1
test al, 2
jne 0x14008ffb1
xor eax, 2
cmp ebx, r8d
mov dword [r9], eax
cmova ebx, r8d
cmp ebp, r8d
cmovb ebp, r8d
inc r8d
cmp r8d, r14d
jbe 0x14008ff80
lea r8d, ds:[r14 + 1]
cmp r8d, r11d
ja 0x140090007
nop word [rax + rax]
mov rax, qword [rsi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14008ffff
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp ebp, r8d
jae 0x14008ffff
mov ebp, r8d
inc r8d
cmp r8d, r11d
jbe 0x14008ffd0
cmp ebx, ebp
ja 0x14009003c
mov rcx, qword [rsi + 0xc8]
xor r9d, r9d
mov rax, qword [rsi + 0xc0]
xor r8d, r8d
mov qword [rsp + 0x20], rcx
mov edx, 0xb
mov rcx, qword [rsi]
call qword [case.0x140071b98.0]
jmp 0x14009003c
mov ebp, dword [rsp + 0x30]
mov ebx, dword [rsp + 0x34]
mov r8d, ebp
mov edx, ebx
lea rax, [rsp + 0x38]
mov r9b, 1
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.14008ed40
test al, al
je 0x14009006b
mov rcx, qword [rsi]
lea rdx, [rsp + 0x38]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
mov edx, edi
mov rcx, rsi
call fcn.14008f6c0
mov rcx, qword [rsi + 0x38]
mov r14, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x78]
test rcx, rcx
je 0x1400900ae
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 rdi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x80]
mov al, 1
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1400c6a20
add rsp, 0x60
pop rsi
ret
xor al, al
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1400c6a20
add rsp, 0x60
pop rsi
ret