Function at 0x14001c270
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rbx
push rdi
mov rbp, rsp
sub rsp, 0x60
mov edi, edx
mov rbx, rcx
cmp edx, 0x27
ja 0x14001c295
movabs rcx, 0xa100000000
bt rcx, rdi
jb 0x14001c2ac
cmp edi, 0x6b
je 0x14001c2ac
cmp edi, 0xbb
je 0x14001c2ac
xor al, al
add rsp, 0x60
pop rdi
pop rbx
pop rbp
ret
cmp qword [rbx + 0xa0], 0
je 0x14001cafe
mov qword [rsp + 0x80], rsi
mov ecx, 0x11
mov qword [rsp + 0x90], r14
mov qword [rsp + 0x98], r15
call qword [sym.imp.USER32.dll_GetKeyState]
movzx esi, ax
mov ecx, 0x10
shr si, 0xf
call qword [sym.imp.USER32.dll_GetKeyState]
shr ax, 0xf
mov ecx, edi
sub ecx, 0x20
je 0x14001c83e
sub ecx, 5
je 0x14001c5b3
sub ecx, 2
je 0x14001c3ae
sub ecx, 0x44
je 0x14001c31e
cmp ecx, 0x50
jne 0x14001cae6
cmp edi, 0x6b
jne 0x14001c32d
test sil, sil
jne 0x14001c34a
jmp 0x14001cae6
cmp edi, 0xbb
jne 0x14001cae6
test sil, sil
je 0x14001cae6
test al, al
je 0x14001cae6
test byte [rbx + 0x40], 0x10
je 0x14001c366
mov r8, qword [rbx + 0x100]
xor r9d, r9d
mov rdx, qword [rbx + 0x10]
mov rcx, rbx
call fcn.14001a0c0
xor r14d, r14d
cmp dword [rbx + 0xf4], r14d
jbe 0x14001cae6
nop word [rax + rax]
mov r8, qword [rbx + 0xe8]
xor r9d, r9d
mov rdx, qword [rbx + 0x18]
mov rcx, rbx
mov eax, r14d
mov r8, qword [r8 + rax*8]
call fcn.14001a0c0
inc r14d
cmp r14d, dword [rbx + 0xf4]
jb 0x14001c380
jmp 0x14001cae6
mov rdi, qword [rbx + 0xa0]
test byte [rdi + 0x34], 1
jne 0x14001cae6
test byte [rdi], 4
jne 0x14001c42b
mov rcx, qword [rbx]
lea r9, [rbp - 0x20]
xor eax, eax
xorps xmm0, xmm0
mov qword [rbp - 0x10], rax
mov r8, rdi
mov rax, qword [rbx + 0xc8]
mov edx, 8
mov qword [rsp + 0x20], rax
movups xmmword [rbp - 0x20], xmm0
call qword [rbx + 0xc0]
cmp byte [rbp - 0x20], 0
jne 0x14001cae6
or dword [rdi], 4
mov rcx, rbx
call fcn.14001a3a0
mov rcx, qword [rbx]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.USER32.dll_InvalidateRect]
mov rcx, qword [rbx]
call qword [sym.imp.USER32.dll_UpdateWindow]
mov rcx, rbx
call fcn.140018af0
jmp 0x14001cae6
mov rdx, qword [rbx + 0x130]
mov eax, dword [rdi + 0x2c]
inc eax
cmp eax, dword [rdx]
jae 0x14001cae6
mov ecx, eax
mov rax, qword [rdx + 8]
mov rsi, qword [rax + rcx*8]
mov eax, dword [rdi + 0x30]
inc eax
cmp dword [rsi + 0x30], eax
jne 0x14001cae6
mov qword [rbx + 0xa0], rsi
mov rcx, rbx
mov eax, dword [rsi + 0x2c]
mov dword [rbx + 0xac], eax
mov edx, dword [rsi + 0x2c]
inc edx
call fcn.14001b7e0
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
call fcn.14001af50
mov rax, qword [rbx + 0xa0]
xor r14d, r14d
mov ecx, dword [rax + 0x2c]
mov rax, qword [rbx + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x14001c77c
lea r15d, [r8 - 1]
mov r11d, r14d
cmp ecx, r15d
mov eax, r15d
mov edi, r15d
mov esi, r14d
cmovbe eax, ecx
mov edx, r14d
cmp ecx, eax
cmovbe r8d, ecx
cmovbe r11d, eax
test r8d, r8d
je 0x14001c506
mov r9d, r14d
nop dword [rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14001c4fb
and eax, 0xfffffffd
cmp edi, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, edi
mov edi, eax
cmp esi, edx
jae 0x14001c4fb
mov esi, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14001c4d0
cmp r8d, r11d
ja 0x14001c546
nop dword [rax + rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001c53e
test al, 2
jne 0x14001c53e
xor eax, 2
cmp edi, r8d
mov dword [r9], eax
cmova edi, r8d
cmp esi, r8d
cmovb esi, r8d
inc r8d
cmp r8d, r11d
jbe 0x14001c510
lea r8d, [r11 + 1]
cmp r8d, r15d
ja 0x14001c587
nop
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14001c57f
and eax, 0xfffffffd
cmp edi, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, edi
mov edi, eax
cmp esi, r8d
jae 0x14001c57f
mov esi, r8d
inc r8d
cmp r8d, r15d
jbe 0x14001c550
cmp edi, esi
ja 0x14001c782
mov rax, qword [rbx + 0xc8]
xor r9d, r9d
mov rcx, qword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rbx + 0xc0]
jmp 0x14001c782
mov rdi, qword [rbx + 0xa0]
test byte [rdi + 0x34], 1
jne 0x14001c5d8
test byte [rdi], 4
je 0x14001c5d8
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call fcn.14001a610
jmp 0x14001cae6
mov ecx, dword [rdi + 0x30]
test ecx, ecx
je 0x14001cae6
mov edi, dword [rdi + 0x2c]
dec ecx
test edi, edi
je 0x14001cae6
mov rax, qword [rbx + 0x130]
mov rdx, qword [rax + 8]
nop dword [rax + rax]
dec edi
mov rsi, qword [rdx + rdi*8]
cmp dword [rsi + 0x30], ecx
je 0x14001c614
test edi, edi
jne 0x14001c600
jmp 0x14001cae6
mov qword [rbx + 0xa0], rsi
mov edx, edi
mov eax, dword [rsi + 0x2c]
mov rcx, rbx
mov dword [rbx + 0xac], eax
call fcn.14001b7e0
xor r8d, r8d
mov rdx, rsi
mov rcx, rbx
call fcn.14001af50
mov rax, qword [rbx + 0x130]
xor r14d, r14d
mov r8d, edi
mov ecx, dword [rax]
test ecx, ecx
je 0x14001c77c
lea r11d, [rcx - 1]
cmp edi, r11d
jbe 0x14001c667
mov r8d, ecx
mov eax, r11d
mov ecx, r11d
jmp 0x14001c66b
mov ecx, edi
mov eax, edi
cmp edi, eax
mov r15d, r14d
mov edi, r11d
mov esi, r14d
cmovbe r15d, ecx
mov edx, r14d
test r8d, r8d
je 0x14001c6c6
mov r9, r14
nop word [rax + rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14001c6bb
and eax, 0xfffffffd
cmp edi, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, edi
mov edi, eax
cmp esi, edx
jae 0x14001c6bb
mov esi, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14001c690
cmp r8d, r15d
ja 0x14001c709
nop dword [rax + rax]
mov rax, qword [rbx + 0x130]
mov edx, r8d
mov rcx, qword [rax + 8]
mov r9, qword [rcx + rdx*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001c701
test al, 2
jne 0x14001c701
xor eax, 2
cmp edi, r8d
mov dword [r9], eax
cmova edi, r8d
cmp esi, r8d
cmovb esi, r8d
inc r8d
cmp r8d, r15d
jbe 0x14001c6d0
lea r8d, [r15 + 1]
cmp r8d, r11d
ja 0x14001c757
nop dword [rax]
nop word [rax + rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14001c74f
and eax, 0xfffffffd
cmp edi, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, edi
mov edi, eax
cmp esi, r8d
jae 0x14001c74f
mov esi, r8d
inc r8d
cmp r8d, r11d
jbe 0x14001c720
cmp edi, esi
ja 0x14001c782
mov rax, qword [rbx + 0xc8]
xor r9d, r9d
mov rcx, qword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rbx + 0xc0]
jmp 0x14001c782
mov esi, dword [rbp + 0x28]
mov edi, dword [rbp + 0x28]
mov rax, qword [rbx + 0x130]
cmp esi, dword [rax]
jae 0x14001c806
cmp edi, esi
ja 0x14001c806
mov eax, dword [rbx + 0x88]
sub esi, eax
mov r9d, dword [rbx + 0x78]
inc esi
imul esi, dword [rbx + 0x7c]
sub edi, eax
imul edi, dword [rbx + 0x7c]
mov edx, dword [rbx + 0xf8]
sub edx, dword [rbx + 0x8c]
add edx, dword [rbx + 0x98]
add esi, r9d
mov dword [rbp - 0x30], r14d
test byte [rbx + 0x40], 4
lea r8d, [rdi + r9]
je 0x14001c7d3
mov r14d, dword [rbx + 0x80]
mov eax, dword [rbx + 0x70]
mov rcx, qword [rbx]
sub eax, r14d
cmp edx, eax
cmovg edx, eax
cmp r8d, r9d
mov dword [rbp - 0x28], edx
lea rdx, [rbp - 0x30]
cmovl r8d, r9d
cmp esi, dword [rbx + 0x74]
mov dword [rbp - 0x2c], r8d
cmovg esi, dword [rbx + 0x74]
xor r8d, r8d
mov dword [rbp - 0x24], esi
call qword [sym.imp.USER32.dll_InvalidateRect]
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x14001cae6
xor r9d, r9d
xor r8d, r8d
mov edx, 0x41c
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rbx + 0x160], 0xffffffffffffffff
mov dword [rbx + 0x190], 0xffffffff
jmp 0x14001cae6
test sil, sil
je 0x14001c911
mov rcx, qword [rbx + 0xa0]
xor r14d, r14d
mov eax, dword [rcx + 0x2c]
mov dword [rbx + 0xac], eax
mov edx, dword [rcx + 0x2c]
mov rcx, qword [rbx + 0x130]
mov r8d, dword [rcx]
test r8d, r8d
je 0x14001c904
lea edi, [r8 - 1]
mov r15d, r14d
cmp edx, edi
mov eax, edi
mov esi, r14d
cmovbe eax, edx
cmp edx, eax
cmovbe r8d, edx
cmovbe r15d, eax
cmp r8d, r15d
ja 0x14001c8d3
mov rax, qword [rbx + 0x130]
mov r11d, edi
mov r10d, edi
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001c8c4
xor eax, 2
mov edi, r8d
cmp r10d, r8d
mov dword [r9], eax
cmovbe edi, r10d
cmp esi, r8d
jae 0x14001c8c4
mov esi, r8d
inc r8d
cmp r8d, r15d
jbe 0x14001c890
mov rcx, qword [rbx + 0x130]
cmp edi, esi
ja 0x14001c90a
mov rax, qword [rbx + 0xc8]
xor r9d, r9d
mov rcx, qword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rbx + 0xc0]
mov rcx, qword [rbx + 0x130]
cmp esi, dword [rcx]
jmp 0x14001ca6b
mov esi, dword [rbp + 0x28]
mov edi, dword [rbp + 0x28]
cmp esi, dword [rcx]
jmp 0x14001ca6b
test al, al
je 0x14001cae6
mov edx, dword [rbx + 0xac]
mov rax, qword [rbx + 0xa0]
mov ecx, dword [rax + 0x2c]
cmp ecx, edx
mov rax, qword [rbx + 0x130]
mov r9d, ecx
cmovbe r9d, edx
cmovbe edx, ecx
xor r14d, r14d
mov r8d, dword [rax]
test r8d, r8d
je 0x14001ca5c
lea r15d, [r8 - 1]
mov r11d, r14d
cmp r9d, r15d
mov eax, r15d
mov edi, r15d
mov esi, r14d
cmovbe eax, r9d
cmp edx, eax
cmovbe r8d, edx
cmovbe r11d, eax
mov edx, r14d
test r8d, r8d
je 0x14001c9b6
mov r9d, r14d
nop word [rax + rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14001c9ab
and eax, 0xfffffffd
cmp edi, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, edi
mov edi, eax
cmp esi, edx
jae 0x14001c9ab
mov esi, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14001c980
cmp r8d, r11d
ja 0x14001c9f6
nop dword [rax + rax]
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001c9ee
test al, 2
jne 0x14001c9ee
xor eax, 2
cmp edi, r8d
mov dword [r9], eax
cmova edi, r8d
cmp esi, r8d
cmovb esi, r8d
inc r8d
cmp r8d, r11d
jbe 0x14001c9c0
lea r8d, [r11 + 1]
cmp r8d, r15d
ja 0x14001ca37
nop
mov rax, qword [rbx + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14001ca2f
and eax, 0xfffffffd
cmp edi, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, edi
mov edi, eax
cmp esi, r8d
jae 0x14001ca2f
mov esi, r8d
inc r8d
cmp r8d, r15d
jbe 0x14001ca00
cmp edi, esi
ja 0x14001ca62
mov rax, qword [rbx + 0xc8]
xor r9d, r9d
mov rcx, qword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rbx + 0xc0]
jmp 0x14001ca62
mov esi, dword [rbp + 0x28]
mov edi, dword [rbp + 0x28]
mov rax, qword [rbx + 0x130]
cmp esi, dword [rax]
jae 0x14001cae6
cmp edi, esi
ja 0x14001cae6
mov eax, dword [rbx + 0x88]
sub esi, eax
mov r9d, dword [rbx + 0x78]
inc esi
imul esi, dword [rbx + 0x7c]
sub edi, eax
imul edi, dword [rbx + 0x7c]
mov edx, dword [rbx + 0xf8]
sub edx, dword [rbx + 0x8c]
add edx, dword [rbx + 0x98]
add esi, r9d
mov dword [rbp - 0x30], r14d
test byte [rbx + 0x40], 4
lea r8d, [rdi + r9]
je 0x14001cab3
mov r14d, dword [rbx + 0x80]
mov eax, dword [rbx + 0x70]
mov rcx, qword [rbx]
sub eax, r14d
cmp edx, eax
cmovg edx, eax
cmp r8d, r9d
mov dword [rbp - 0x28], edx
lea rdx, [rbp - 0x30]
cmovl r8d, r9d
cmp esi, dword [rbx + 0x74]
mov dword [rbp - 0x2c], r8d
cmovg esi, dword [rbx + 0x74]
xor r8d, r8d
mov dword [rbp - 0x24], esi
call qword [sym.imp.USER32.dll_InvalidateRect]
mov r14, qword [rsp + 0x90]
mov r15, qword [rsp + 0x98]
mov rsi, qword [rsp + 0x80]
mov al, 1
add rsp, 0x60
pop rdi
pop rbx
pop rbp
ret