Function at 0x1400ac9a0
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r14
sub rsp, 0x80
mov rax, qword [0x14036a3c8]
xor rax, rsp
mov qword [rsp + 0x70], rax
xor ebp, ebp
mov r14, r9
mov rbx, r8
mov esi, edx
mov rdi, rcx
cmp edx, 1
jne 0x1400aca39
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov r8, qword [rdi + 8]
mov rcx, rax
mov rdx, qword [rdi + 0x28]
call fcn.14006c2f0
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006dde0
test al, al
je 0x1400aca1e
call qword [sym.imp.USER32.dll_GetCaretBlinkTime]
mov rcx, qword [rdi + 8]
lea edx, [rsi + 0x13]
mov r8d, eax
xor r9d, r9d
call qword [sym.imp.USER32.dll_SetTimer]
mov r9, r14
mov r8, rbx
mov edx, esi
mov rcx, rdi
call fcn.140074660
mov rbp, rax
mov rax, rbp
jmp 0x1400acefb
cmp esi, 8
jne 0x1400acae3
mov rcx, qword [rcx + 8]
mov edx, esi
call qword [sym.imp.USER32.dll_DefWindowProcW]
mov rcx, qword [rdi + 0x28]
mov rsi, rax
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006d860
cmp rbx, rax
je 0x1400aca94
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006d860
mov rcx, rax
mov r9, r14
mov r8, rbx
mov edx, 8
call qword [sym.imp.USER32.dll_SendMessageW]
xor r9d, r9d
xor r8d, r8d
mov rcx, rdi
lea edx, [r9 + 0x10]
call fcn.140074700
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x1400acad8
call fcn.14007bbe0
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rdx, qword [rdi + 8]
mov rcx, rax
call fcn.140071e80
mov rax, qword [rdi + 0x28]
mov qword [rax + 0x888], rbp
mov rbp, rsi
mov rax, rsi
jmp 0x1400acefb
cmp esi, 0x2111
jne 0x1400acb4f
mov rax, rbx
mov ecx, 0x300
shr rax, 0x10
cmp ax, cx
jne 0x1400acb18
lea rax, [rsp + 0x40]
mov edx, esi
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400ad2a0
mov rbp, rax
jmp 0x1400acefb
mov ecx, 0x400
cmp ax, cx
jne 0x1400aca31
mov rcx, qword [rdi + 8]
lea rdx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_GetClientRect]
mov rcx, qword [rdi + 8]
lea rdx, [rsp + 0x60]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
mov rax, rbp
jmp 0x1400acefb
cmp esi, 0x100
jne 0x1400acc66
cmp bx, 0xd
jne 0x1400acb9b
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rdx, qword [rdi + 0x28]
lea r8, str.return
mov byte [rsp + 0x30], 1
mov rcx, rax
mov byte [rsp + 0x28], bpl
xor r9d, r9d
mov qword [rsp + 0x20], rbp
call fcn.1400724e0
mov rax, rbp
jmp 0x1400acefb
cmp bx, 9
jne 0x1400acc25
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
call fcn.14006dd10
mov rcx, qword [rdi + 0x28]
mov rdx, qword [rcx]
test al, al
jne 0x1400acbf5
call qword [rdx + 0x100]
mov rdx, qword [rdi + 0x28]
lea r8, [0x140299e70]
mov byte [rsp + 0x30], 1
mov rcx, rax
mov byte [rsp + 0x28], bpl
xor r9d, r9d
mov qword [rsp + 0x20], rbp
call fcn.1400724e0
mov rax, rbp
jmp 0x1400acefb
call qword [rdx + 0x100]
mov ecx, reloc.WS2_32.dll_recv
mov rbx, rax
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov rcx, rbx
setns dl
xor r9d, r9d
xor r8d, r8d
call fcn.140072cc0
mov rax, rbp
jmp 0x1400acefb
cmp bx, 0x14
jne 0x1400aca1e
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rdx, qword [rdi + 0x28]
lea r8, str.capital
mov byte [rsp + 0x30], 1
mov rcx, rax
mov byte [rsp + 0x28], bpl
xor r9d, r9d
mov qword [rsp + 0x20], rbp
call fcn.1400724e0
jmp 0x1400aca1e
cmp esi, 0x2133
je 0x1400acda7
cmp esi, 0x2138
je 0x1400acda7
cmp esi, 0xf
jne 0x1400accc2
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006dde0
test al, al
je 0x1400aca1e
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov r8, qword [rdi + 8]
mov rcx, rax
mov rdx, qword [rdi + 0x28]
call fcn.14006c2f0
jmp 0x1400aca1e
cmp esi, 0x317
jne 0x1400acd77
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006dde0
test al, al
je 0x1400aca1e
mov r9, r14
mov r8, rbx
mov edx, esi
mov rcx, rdi
call fcn.140074660
mov rcx, qword [rdi + 0x28]
mov rsi, rax
mov rdx, qword [rcx]
call qword [rdx + 0x2a8]
test al, al
je 0x1400acd6f
cmp byte [rdi + 0x39], bpl
je 0x1400acd6f
mov rcx, qword [rdi + 8]
lea rdx, [rsp + 0x60]
call qword [sym.imp.USER32.dll_GetClientRect]
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_GetCaretPos]
mov rax, qword [rsp + 0x40]
lea rdx, [rsp + 0x50]
mov ecx, dword [rsp + 0x44]
mov r9d, 0xff000000
mov dword [rsp + 0x50], eax
mov r8d, 1
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x6c]
sub eax, dword [rsp + 0x64]
add eax, ecx
mov dword [rsp + 0x54], ecx
mov rcx, rbx
mov dword [rsp + 0x5c], eax
mov dword [rsp + 0x20], ebp
call fcn.140086a40
mov rax, rsi
jmp 0x1400acefb
cmp esi, 0x113
jne 0x1400aca1e
cmp rbx, 0x14
jne 0x1400aca1e
cmp byte [rcx + 0x39], bpl
sete al
mov byte [rcx + 0x39], al
mov rcx, qword [rcx + 0x28]
call fcn.14007bbe0
xor eax, eax
jmp 0x1400acefb
mov rcx, qword [rcx + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006dde0
test al, al
je 0x1400acdf6
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, rax
call fcn.14006de00
test al, al
jne 0x1400acdf6
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov r8, qword [rdi + 8]
mov rcx, rax
mov rdx, qword [rdi + 0x28]
call fcn.14006c2f0
mov rax, qword [rdi + 0x28]
mov esi, dword [rax + 0x928]
cmp esi, 0xffffffff
je 0x1400acda0
mov edx, 1
mov rcx, rbx
call qword [sym.imp.GDI32.dll_SetBkMode]
mov rcx, qword [rdi + 0x28]
call fcn.1400786d0
mov ecx, eax
movzx edx, ax
shr ecx, 0x10
and edx, 0xffffff00
movzx r8d, cl
mov rcx, rbx
movzx eax, al
or edx, r8d
shl eax, 0x10
or edx, eax
call qword [sym.imp.GDI32.dll_SetTextColor]
mov rax, qword [rdi + 0x30]
cmp esi, 0xff000000
jae 0x1400acecc
test rax, rax
je 0x1400ace5c
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rdi + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov r8, qword [rdi + 8]
lea rdx, [rsp + 0x60]
mov rcx, rax
call fcn.14006d7d0
mov rbx, qword [rdi + 0x28]
movups xmm0, xmmword [rsp + 0x60]
mov rcx, rbx
mov rax, qword [rbx]
movups xmmword [rsp + 0x50], xmm0
call qword [rax + 0x100]
movups xmm0, xmmword [rsp + 0x50]
mov r9d, esi
lea rdx, [rsp + 0x50]
mov r8, rbx
mov rcx, rax
movaps xmmword [rsp + 0x50], xmm0
call fcn.1400876f0
mov rcx, rax
mov rbx, rax
call qword [sym.imp.GDI32.dll_CreatePatternBrush]
mov rcx, rbx
mov qword [rdi + 0x30], rax
call qword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x1400acef7
test rax, rax
jne 0x1400acef7
mov eax, esi
movzx ecx, si
shr eax, 0x10
and ecx, 0xffffff00
movzx edx, al
movzx eax, sil
or ecx, edx
shl eax, 0x10
or ecx, eax
call qword [sym.imp.GDI32.dll_CreateSolidBrush]
mov qword [rdi + 0x30], rax
mov rax, qword [rdi + 0x30]
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.140240e30
add rsp, 0x80
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret