Function at 0x140016600
Capabilities:
Log keystrokes via polling

Disassembly:
jmp 0x140233ca0
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0xf0
lea rdi, [rsp + 0x30]
mov ecx, 0x30
mov eax, 0xcccccccc
rep stosd dword [rdi], eax
mov rcx, qword [rsp + 0x100]
mov rax, qword [0x1405dc580]
xor rax, rsp
mov qword [rsp + 0xe0], rax
mov byte [rsp + 0xc8], 0
cmp dword [rsp + 0x108], 0x26
je 0x140233d27
cmp dword [rsp + 0x108], 0x28
je 0x140233d27
cmp dword [rsp + 0x108], 0x24
je 0x140233d27
cmp dword [rsp + 0x108], 0x23
je 0x140233d27
cmp dword [rsp + 0x108], 0x21
je 0x140233d27
cmp dword [rsp + 0x108], 0x22
je 0x140233d27
xor al, al
jmp 0x140234405
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x130]
mov eax, dword [rax]
mov dword [rsp + 0x30], eax
cmp dword [rsp + 0x30], 0
jne 0x140233d4a
mov al, 1
jmp 0x140234405
mov eax, dword [rsp + 0x108]
mov dword [rsp + 0xcc], eax
mov eax, dword [rsp + 0xcc]
sub eax, 0x21
mov dword [rsp + 0xcc], eax
cmp dword [rsp + 0xcc], 7
ja case.0x140233d8f.37
mov eax, dword [rsp + 0xcc]
lea rcx, [0x140000000]
mov eax, dword [rcx + rax*4 + 0x234434]
add rax, rcx
jmp rax
mov rax, qword [rsp + 0x100]
cmp qword [rax + 0xa0], 0
je 0x140233dda
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0xa0]
cmp dword [rax + 0x2c], 0
jbe 0x140233dda
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0xa0]
mov eax, dword [rax + 0x2c]
dec eax
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
jmp 0x140233dea
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], 0
jmp case.0x140233d8f.37
mov rax, qword [rsp + 0x100]
cmp qword [rax + 0xa0], 0
je 0x140233e55
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0xa0]
mov eax, dword [rax + 0x2c]
inc eax
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
cmp byte [rsp + 0xc8], 0
jne 0x140233e37
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0x30]
cmp dword [rsp + 0x34], eax
jb 0x140233e53
mov eax, dword [rsp + 0x30]
dec eax
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
jmp 0x140233e65
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], 0
jmp case.0x140233d8f.37
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], 0
jmp case.0x140233d8f.37
mov eax, dword [rsp + 0x30]
dec eax
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
jmp case.0x140233d8f.37
mov rax, qword [rsp + 0x100]
cmp qword [rax + 0xa0], 0
je 0x140233ec8
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0xa0]
mov byte [rsp + 0xc8], 1
mov eax, dword [rax + 0x2c]
mov dword [rsp + 0x34], eax
jmp 0x140233ed8
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], 0
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0x40]
shr eax, 3
and eax, 1
test eax, eax
je 0x140233f04
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0x84]
mov dword [rsp + 0xd0], eax
jmp 0x140233f0f
mov dword [rsp + 0xd0], 0
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov ecx, dword [rcx + 0x78]
mov eax, dword [rax + 0x74]
sub eax, ecx
sub eax, dword [rsp + 0xd0]
mov dword [rsp + 0xb4], eax
cmp dword [rsp + 0xb4], 0
jge 0x140233f46
mov al, 1
jmp 0x140234405
mov eax, dword [rsp + 0xb4]
cdq
mov rcx, qword [rsp + 0x100]
idiv dword [rcx + 0x7c]
dec eax
mov dword [rsp + 0xb4], eax
cmp dword [rsp + 0xb4], 0
jge 0x140233f73
mov al, 1
jmp 0x140234405
cmp dword [rsp + 0x108], 0x21
jne 0x140234039
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0x88]
mov dword [rsp + 0xb8], eax
cmp byte [rsp + 0xc8], 0
jne 0x140233fac
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0xb8]
cmp dword [rsp + 0x34], eax
jbe 0x140233fce
mov byte [rsp + 0xc8], 1
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x34], eax
jmp 0x140234034
cmp byte [rsp + 0xc8], 0
jne 0x140233fe4
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0xb4]
cmp dword [rsp + 0x34], eax
jb 0x140234024
cmp byte [rsp + 0xc8], 0
jne 0x140234007
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0xb4]
mov ecx, dword [rsp + 0x34]
sub ecx, eax
mov eax, ecx
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
jmp 0x140234034
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], 0
jmp case.0x140233d8f.37
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0x88]
add eax, dword [rsp + 0xb4]
mov dword [rsp + 0xbc], eax
mov eax, dword [rsp + 0x30]
cmp dword [rsp + 0xbc], eax
jb 0x14023406f
mov eax, dword [rsp + 0x30]
dec eax
mov dword [rsp + 0xbc], eax
cmp byte [rsp + 0xc8], 0
jne 0x140234085
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0xbc]
cmp dword [rsp + 0x34], eax
jae 0x1402340a7
mov byte [rsp + 0xc8], 1
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x34], eax
jmp case.0x140233d8f.37
cmp byte [rsp + 0xc8], 0
jne 0x1402340bd
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0xb4]
mov ecx, dword [rsp + 0x34]
add ecx, eax
mov eax, ecx
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
cmp byte [rsp + 0xc8], 0
jne 0x1402340ee
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0x30]
cmp dword [rsp + 0x34], eax
jb case.0x140233d8f.37
mov eax, dword [rsp + 0x30]
dec eax
mov byte [rsp + 0xc8], 1
mov dword [rsp + 0x34], eax
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x140234127
mov dword [rsp + 0xd4], 1
jmp 0x140234132
mov dword [rsp + 0xd4], 0
movzx eax, byte [rsp + 0xd4]
mov byte [rsp + 0x38], al
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x14023415b
mov dword [rsp + 0xd8], 1
jmp 0x140234166
mov dword [rsp + 0xd8], 0
movzx eax, byte [rsp + 0xd8]
mov byte [rsp + 0x39], al
cmp byte [rsp + 0xc8], 0
jne 0x140234188
lea rcx, str.index
call fcn.140005060
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x130]
mov ecx, dword [rsp + 0x34]
mov rax, qword [rax + 8]
mov rdx, qword [rsp + 0x100]
mov rax, qword [rax + rcx*8]
mov qword [rdx + 0xa0], rax
xor r8d, r8d
mov rax, qword [rsp + 0x100]
mov rdx, qword [rax + 0xa0]
mov rcx, qword [rsp + 0x100]
call fcn.140019770
movzx eax, byte [rsp + 0x39]
test eax, eax
je 0x1402342fd
mov rax, qword [rsp + 0x100]
cmp dword [rax + 0xac], 0xffffffff
je 0x1402342fd
cmp byte [rsp + 0xc8], 0
jne 0x140234209
lea rcx, str.index
call fcn.140005060
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xac]
cmp dword [rsp + 0x34], eax
jbe 0x14023424f
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xac]
mov dword [rsp + 0x3c], eax
cmp byte [rsp + 0xc8], 0
jne 0x140234245
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0x34]
mov dword [rsp + 0x40], eax
jmp 0x14023427f
cmp byte [rsp + 0xc8], 0
jne 0x140234265
lea rcx, str.index
call fcn.140005060
mov eax, dword [rsp + 0x34]
mov dword [rsp + 0x3c], eax
mov rax, qword [rsp + 0x100]
mov eax, dword [rax + 0xac]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0x74]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
mov r9d, 4
mov r8d, dword [rsp + 0x40]
mov edx, dword [rsp + 0x3c]
mov rcx, qword [rsp + 0x100]
call fcn.1400099e0
lea rax, [rsp + 0x98]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x74]
mov edx, dword [rsp + 0x54]
mov rcx, qword [rsp + 0x100]
call fcn.140012e70
movzx eax, al
test eax, eax
je 0x1402342f8
xor r8d, r8d
lea rdx, [rsp + 0x98]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x1402343cf
movzx eax, byte [rsp + 0x38]
test eax, eax
jne 0x1402343cf
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0xa0]
mov rcx, qword [rsp + 0x100]
mov eax, dword [rax + 0x2c]
mov dword [rcx + 0xac], eax
cmp byte [rsp + 0xc8], 0
jne 0x140234340
lea rcx, str.index
call fcn.140005060
cmp byte [rsp + 0xc8], 0
jne 0x140234356
lea rcx, str.index
call fcn.140005060
lea rax, [rsp + 0x74]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
mov r9d, 4
mov r8d, dword [rsp + 0x34]
mov edx, dword [rsp + 0x34]
mov rcx, qword [rsp + 0x100]
call fcn.1400099e0
lea rax, [rsp + 0x98]
mov qword [rsp + 0x20], rax
mov r9b, 1
mov r8d, dword [rsp + 0x74]
mov edx, dword [rsp + 0x54]
mov rcx, qword [rsp + 0x100]
call fcn.140012e70
movzx eax, al
test eax, eax
je 0x1402343cf
xor r8d, r8d
lea rdx, [rsp + 0x98]
mov rax, qword [rsp + 0x100]
mov rcx, qword [rax]
call qword [sym.imp.USER32.dll_InvalidateRect]
cmp byte [rsp + 0xc8], 0
jne 0x1402343e5
lea rcx, str.index
call fcn.140005060
mov edx, dword [rsp + 0x34]
mov rcx, qword [rsp + 0x100]
call fcn.14000c970
mov rcx, qword [rsp + 0x100]
call fcn.14000af90
mov al, 1
mov rdi, rax
mov rcx, rsp
lea rdx, [0x140510b00]
call fcn.140015750
mov rax, rdi
mov rcx, qword [rsp + 0xe0]
xor rcx, rsp
call fcn.14000d430
add rsp, 0xf0
pop rdi
ret