Function at 0x14000fc54
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, 0x60
xor r13d, r13d
mov edi, ecx
or edi, dword [0x1400c5ff8]
mov eax, 0x8000
mov r15d, edi
mov r12d, edi
mov ebp, edi
and r15d, 0x4000
and r12d, 0x2000
and ebp, 0x1000
mov ebx, r13d
test eax, edi
je 0x14000fcb0
call qword [sym.imp.USER32.dll_InSendMessage]
mov esi, r13d
test eax, eax
je 0x14000fcb5
mov esi, 2
and edi, 0xffff0fff
mov r14d, 1
cmp edi, r14d
jne 0x14000fd78
cmp byte [0x1400c6038], r13b
je 0x14000ff1a
cmp byte [0x1400c5ff4], r13b
je 0x14000fce8
mov ebx, r14d
jmp 0x14000ff1a
mov ecx, 3
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test r14b, al
jne 0x14000fd48
mov ecx, 0x1b
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test r14b, al
je 0x14000ff1a
mov ecx, reloc.ODBC32.dll_SQLNumResultCols
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x14000ff1a
mov ecx, SQLPrepare
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x14000ff1a
mov ecx, reloc.ODBC32.dll_SQLFreeStmt
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x14000ff1a
or esi, r14d
xor edx, edx
mov dword [rsp + 0x20], esi
mov r9d, 0x20e
lea rcx, [rsp + 0x30]
mov r8d, 0xa0
call qword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
jne 0x14000fd4b
mov byte [0x1400c5ff4], r14b
jmp 0x14000fce0
test ebp, ebp
jne 0x14000fd8b
call qword [sym.imp.USER32.dll_GetCapture]
test rax, rax
jne 0x14000ff15
xor r9d, r9d
mov dword [rsp + 0x20], esi
xor r8d, r8d
lea rcx, [rsp + 0x30]
xor edx, edx
call qword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x14000feec
cmp dword [0x1400c6018], 1
mov ebp, r13d
mov r14d, dword [rsp + 0x38]
jne 0x14000ff3a
mov eax, r14d
sub eax, 0xf
je 0x14000fe05
sub eax, 0x11
je 0x14000fdee
sub eax, 0x80
je 0x14000fdee
sub eax, 0x61
je 0x14000fde9
sub eax, 0x17
je 0x14000fdfd
sub eax, 0xe8
je 0x14000fdee
cmp eax, 2
jne 0x14000fe14
test r12d, r12d
jmp 0x14000fe08
test edi, edi
jne 0x14000fdff
call qword [sym.imp.USER32.dll_GetCapture]
test rax, rax
jne 0x14000fe14
test edi, edi
sete bpl
jmp 0x14000fe0a
test r15d, r15d
jne 0x14000fe14
mov ebx, r13d
mov ecx, 1
jmp 0x14000fe2e
lea eax, [r14 - 0xa0]
mov ecx, r13d
cmp eax, 0x16e
jbe 0x14000ff15
mov ebx, 1
test ebp, ebp
je 0x14000fe78
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x30]
mov eax, esi
mov r9d, r14d
or eax, 1
mov r8d, r14d
mov dword [rsp + 0x20], eax
call qword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x14000fe6b
lea rcx, [rsp + 0x30]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0x30]
call qword [sym.imp.USER32.dll_DispatchMessageA]
test ebx, ebx
jne 0x14000ff1a
jmp 0x14000fd8b
test ecx, ecx
je 0x14000feec
test r15d, r15d
je 0x14000fe9b
xor edx, edx
mov dword [rsp + 0x20], esi
lea rcx, [rsp + 0x30]
lea r9d, [rdx + 0xf]
mov r8d, r9d
call qword [sym.imp.USER32.dll_PeekMessageA]
mov ebx, eax
mov ebp, r13d
test ebx, ebx
jne 0x14000fed7
lea rdi, [0x1400b3c90]
cmp ebp, 0x10
jae 0x14000fed3
mov r9d, dword [rdi + 4]
lea rcx, [rsp + 0x30]
mov r8d, dword [rdi]
xor edx, edx
mov dword [rsp + 0x20], esi
call qword [sym.imp.USER32.dll_PeekMessageA]
add ebp, 2
add rdi, 8
mov ebx, eax
test eax, eax
je 0x14000fea9
test ebx, ebx
je 0x14000fef0
mov eax, dword [rsp + 0x38]
add eax, 0xffffff60
cmp eax, 0x16e
jbe 0x14000ff15
mov ebx, 1
test ebx, ebx
jne 0x14000ff1a
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edi, 0x8000
test di, ax
jne 0x14000ff15
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
je 0x14000ff1a
mov ebx, 2
lea r11, [rsp + 0x60]
mov eax, ebx
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov ebx, 1
jmp 0x14000ff1a