Function at 0x14015e870
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xe0
mov rax, qword [0x140412700]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov r15, rcx
mov qword [rsp + 0x48], rcx
xor esi, esi
mov dword [rsp + 0x30], esi
xor edx, edx
lea r8d, [rsi + 0x48]
lea rcx, [rsp + 0x70]
call fcn.1402bf2e0
lea rcx, [rsp + 0x70]
call fcn.1401bac50
nop
mov rdi, qword [r15 + 0xe8]
xor r14d, r14d
mov qword [rsp + 0xc0], r14
mov dword [rsp + 0xc8], r14d
movsxd rax, dword [r15 + 0x2978]
mov rdx, qword [r15 + 0x274]
shr rdx, 0x20
mov rcx, qword [rdi + rax*8 + 0x188]
call fcn.140112540
mov r13d, eax
mov r12d, esi
cmp dword [rdi + 0x1a0], esi
jle 0x14015e94c
lea rbx, [rsp + 0xc0]
lea r14, [rdi + 0x188]
mov rcx, qword [r14]
call fcn.14000ec58
lea edx, [rax - 1]
mov rcx, qword [r14]
call fcn.140112540
mov dword [rbx], eax
inc r12d
lea r14, [r14 + 8]
lea rbx, [rbx + 4]
cmp r12d, dword [rdi + 0x1a0]
jl 0x14015e91b
mov r14d, dword [rsp + 0xc8]
lea r8d, [r13 + 1]
lea rdx, [0x14036b4f4]
lea rcx, [rsp + 0x50]
call fcn.1401ae50c
mov r12d, 2
mov dword [rsp + 0x30], r12d
mov ebx, r12d
and ebx, 0xfffffffd
mov dword [rsp + 0x30], ebx
or ebx, 1
mov dword [rsp + 0x30], ebx
lea rcx, [rsp + 0x70]
call fcn.14000dd24
lea r8d, [r12 + 0x1e]
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x70]
call fcn.1402bec40
movdqa xmm0, xmmword [0x1403a9d70]
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], si
and ebx, 0xfffffffe
mov dword [rsp + 0x30], ebx
lea rcx, [rsp + 0x50]
call fcn.14000dd24
mov ecx, dword [r15 + 0x2978]
cmp dword [rdi + 0x1a0], 3
jge 0x14015e9da
mov eax, esi
cmp ecx, 1
cmove eax, r12d
jmp 0x14015e9dc
mov eax, ecx
mov dword [rsp + 0x90], eax
mov dword [rsp + 0x94], esi
mov eax, dword [rdi + 0x1a0]
mov dword [rsp + 0x98], eax
mov eax, dword [rsp + 0xc0]
inc eax
mov dword [rsp + 0x9c], eax
mov eax, dword [rsp + 0xc4]
cmp dword [rdi + 0x1a0], 3
jge 0x14015ea1c
or ecx, 0xffffffff
jmp 0x14015ea1f
lea ecx, [rax + 1]
mov dword [rsp + 0xa0], ecx
cmp dword [rdi + 0x1a0], 3
jge 0x14015ea33
inc eax
jmp 0x14015ea37
lea eax, [r14 + 1]
mov dword [rsp + 0xa4], eax
mov rax, qword [rdi + 0x1e0]
sub rax, qword [rdi + 0x1d8]
sar rax, 6
mov dword [rsp + 0xa8], eax
lea rcx, [rsp + 0x70]
call fcn.1401bad1c
cmp eax, 1
jne 0x14015eb60
mov r13, qword [r15 + 0xe8]
mov qword [rsp + 0x38], r13
mov edx, dword [r15 + 0x2978]
mov rcx, r15
call fcn.140159758
mov rbx, rax
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x34], esi
lea rcx, [rsp + 0x70]
call fcn.140162f04
lea r14d, [rax - 1]
mov dword [rsp + 0x34], r14d
jmp 0x14015eac0
cmp dword [rsp + 0x94], esi
jne 0x14015eb28
mov eax, esi
mov edi, dword [rsp + 0x90]
cmp edi, r12d
sete al
cmp dword [r13 + 0x1a0], 3
cmovl edi, eax
test r14d, r14d
cmovs r14d, esi
movsxd rax, edi
mov ebx, dword [rsp + rax*4 + 0xc0]
mov ecx, InitCommonControls
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
not al
and al, 1
cmp r14d, ebx
cmovle ebx, r14d
or dword [rsp + 0x28], 0xffffffff
mov byte [rsp + 0x20], al
mov r9d, edi
mov r8b, 1
mov edx, ebx
mov rcx, r15
call fcn.14015f864
jmp 0x14015eb60
test r14d, r14d
cmovs r14d, esi
mov rax, qword [r13 + 0x1e0]
sub rax, qword [r13 + 0x1d8]
sar rax, 6
lea edx, [rax - 1]
cmp r14d, eax
cmovl edx, r14d
test rbx, rbx
je 0x14015eb60
test edx, edx
js 0x14015eb60
mov r8b, 1
mov rcx, rbx
call fcn.14015b138
nop
lea rcx, [rsp + 0x70]
call fcn.1401bace4
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.1402194b0
lea r11, [rsp + 0xe0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret