Function at 0x180012904
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rdi, rcx
mov rbx, rdx
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetKeyState]
mov esi, 1
movzx r14d, ax
shr r14d, 7
and r14b, sil
lea ecx, [rsi + 0x10]
call qword [sym.imp.USER32.dll_GetKeyState]
movzx r12d, ax
mov cl, r14b
shr r12d, 7
and r12b, sil
neg cl
sbb r13d, r13d
and r13d, 3
sub rbx, 0x25
je 0x180012b7b
sub rbx, rsi
je 0x180012ae7
sub rbx, rsi
je 0x180012a0b
cmp rbx, rsi
jne 0x180012c44
mov rbp, qword [rdi + 0x108]
xor r9d, r9d
mov rcx, qword [rdi + 0x60]
xor r8d, r8d
mov edx, 0x1004
mov r15d, dword [rbp + 0x250]
call qword [sym.imp.USER32.dll_SendMessageW]
cmp r15d, eax
jae 0x180012c44
mov rcx, rdi
call fcn.18000f660
movsx ebx, word [rbp + 0x21c]
mov rcx, rdi
movsx r14d, word [rbp + 0x21e]
mov r12d, eax
imul r14d, ebx
call fcn.18000f6fc
lea ecx, [rbx + 1]
lea r8d, [r14 + rax]
cmp dword [rbp + 0x254], ecx
je 0x1800129fd
mov eax, r8d
xor ebx, ebx
cdq
idiv r14d
test edx, edx
jne 0x1800129ff
cmp dword [rbp + 0x25c], r15d
jne 0x1800129ff
mov ebx, esi
mov dword [rsp + 0x20], ebx
mov edx, r12d
jmp 0x180012c11
mov rbp, qword [rdi + 0x108]
xor ebx, ebx
movsx r15d, word [rbp + 0x21c]
mov edx, dword [rbp + 0x254]
cmp edx, r15d
je 0x180012a2f
lea eax, [r15 + 1]
cmp edx, eax
jne 0x180012a7e
movsx eax, word [rbp + 0x21e]
mov ecx, dword [rbp + 0x258]
imul eax, r15d
lea r8d, [rax - 1]
cmp ecx, r8d
je 0x180012a4d
cmp ecx, eax
jne 0x180012a7e
test r14b, r14b
je 0x180012a7e
cmp ecx, r8d
jne 0x180012c44
lea eax, [rdx + 1]
mov rcx, rdi
mov dword [rbp + 0x254], eax
mov rax, qword [rdi + 0x108]
add dword [rax + 0x258], esi
call fcn.180014cd0
jmp 0x180012c44
mov rcx, rdi
call fcn.18000f660
mov rcx, rdi
mov r14d, eax
call fcn.18000f6fc
mov r10d, eax
test r12b, r12b
jne 0x180012ac2
cmp dword [rbp + 0x228], esi
je 0x180012ac2
movsx r8d, word [rbp + 0x21e]
cdq
idiv r8d
mov ecx, r8d
imul r8d, r15d
sub ecx, edx
add r10d, ecx
mov eax, r10d
cdq
idiv r8d
jmp 0x180012ad6
movsx ecx, word [rbp + 0x21e]
add r10d, esi
imul ecx, r15d
mov eax, r10d
cdq
idiv ecx
test edx, edx
mov r8d, r10d
sete bl
mov dword [rsp + 0x20], ebx
jmp 0x180012c0e
mov rbp, qword [rdi + 0x108]
xor ebx, ebx
mov r14d, dword [rbp + 0x250]
test r14d, r14d
je 0x180012c44
mov rcx, rdi
call fcn.18000f660
mov rcx, rdi
mov r15d, eax
call fcn.18000f6fc
lea rdx, [rbp + 0x21c]
mov r8d, eax
cmp dword [rbp + 0x25c], r14d
jne 0x180012b53
movsx ecx, word [rdx]
add ecx, esi
cmp dword [rbp + 0x254], ecx
jne 0x180012b53
mov dword [rbp + 0x254], esi
mov rcx, rdi
mov rax, qword [rdi + 0x108]
mov dword [rax + 0x258], ebx
call fcn.180014cd0
jmp 0x180012c1c
movsx ecx, word [rdx]
mov edx, r15d
lea eax, [rcx + 1]
cmp dword [rbp + 0x254], eax
movsx eax, word [rbp + 0x21e]
sete bl
imul eax, ecx
mov dword [rsp + 0x20], ebx
sub r8d, eax
jmp 0x180012c11
mov rbp, qword [rdi + 0x108]
xor ebx, ebx
cmp dword [rbp + 0x254], esi
jne 0x180012b9d
cmp dword [rbp + 0x258], ebx
jne 0x180012b9d
test r14b, r14b
jne 0x180012c44
mov rcx, rdi
call fcn.18000f660
mov rcx, rdi
mov r14d, eax
call fcn.18000f6fc
mov r8d, eax
test r12b, r12b
jne 0x180012be5
cmp dword [rbp + 0x228], esi
je 0x180012be5
movsx r9d, word [rbp + 0x21e]
cdq
idiv r9d
test edx, edx
je 0x180012bd5
sub r8d, edx
jmp 0x180012bd8
sub r8d, r9d
movsx ecx, word [rbp + 0x21c]
imul ecx, r9d
jmp 0x180012bf9
movsx ecx, word [rbp + 0x21e]
sub r8d, esi
movsx eax, word [rbp + 0x21c]
imul ecx, eax
mov eax, r8d
cdq
idiv ecx
test edx, edx
jne 0x180012c08
cmp r14d, r8d
jl 0x180012c0a
mov esi, ebx
mov dword [rsp + 0x20], esi
mov edx, r14d
mov r9d, r13d
mov rcx, rdi
call fcn.180012ed4
mov rax, qword [rdi + 0x108]
xor r9d, r9d
mov rcx, qword [rdi + 0x60]
mov edx, 0x1013
movsxd r8, dword [rax + 0x250]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, rdi
call fcn.18000f7bc
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret