Function at 0x1400f8720
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp - 0x20], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov rdi, rcx
mov ecx, reloc.OLEAUT32.dll_SafeArrayUnaccessData
call qword [sym.imp.USER32.dll_GetSystemMetrics]
neg eax
sbb ecx, ecx
neg ecx
inc ecx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x1400f8b2d
xor esi, esi
cmp qword [rdi + 0x21c8], rsi
jne 0x1400f8ac2
call fcn.140014770
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x1400f879d
mov ecx, 0x80004005
call fcn.140004b6c
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rbp + 0x58], rbx
mov r14d, 0x42bf
mov ecx, r14d
call fcn.140031aec
test rax, rax
jne 0x1400f87c5
mov eax, esi
jmp 0x1400f87d8
mov r8d, r14d
mov rdx, rax
lea rcx, [rbp + 0x58]
call fcn.140007318
mov rbx, qword [rbp + 0x58]
mov ecx, esi
test eax, eax
setne cl
test ecx, ecx
jne 0x1400f87e9
call fcn.140010b1c
int3
mov ecx, 0x270
call fcn.140010904
mov qword [rbp - 0x18], rax
test rax, rax
je 0x1400f880c
xor r8d, r8d
mov rdx, rbx
mov rcx, rax
call fcn.140183c04
jmp 0x1400f880f
mov rax, rsi
lea r15, [rdi + 0x21b8]
mov r8, rax
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.140118294
mov r13d, esi
cmp dword [rdi + 0x2178], esi
jle 0x1400f8959
mov r14, rsi
test r14, r14
js 0x1400f8953
cmp r14, qword [rdi + 0x2178]
jge 0x1400f8953
mov rax, qword [rdi + 0x2170]
mov r12, qword [rax + r14*8]
lea rcx, [rdi + 0x21e0]
xor r8d, r8d
mov rdx, r12
call fcn.140085c18
test rax, rax
jne 0x1400f8939
lea rdx, str.CMFCRibbonSeparator
mov rcx, r12
call fcn.14003f80c
test eax, eax
je 0x1400f88c6
mov ecx, 0x188
call fcn.140010904
mov qword [rbp - 0x18], rax
test rax, rax
je 0x1400f88a8
mov edx, 1
mov rcx, rax
call fcn.14009a304
jmp 0x1400f88ab
mov rax, rsi
mov dword [rax + 0x160], 1
mov r8, rax
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.140118294
jmp 0x1400f8939
mov ecx, 0x270
call fcn.140010904
mov rsi, rax
mov qword [rbp - 0x10], rax
test rax, rax
je 0x1400f8915
cmp r14, qword [rdi + 0x2128]
jge 0x1400f894d
mov rax, qword [rdi + 0x2120]
and dword [rsp + 0x28], 0
or ecx, 0xffffffff
mov dword [rsp + 0x20], ecx
mov r9d, ecx
mov r8, qword [rax + r14*8]
xor edx, edx
mov rcx, rsi
call fcn.14009dce8
lea rax, vtable.CMFCRibbonStatusBarCustomizeButton.0
mov qword [rsi], rax
jmp 0x1400f8917
xor esi, esi
mov qword [rsi + 0x110], r12
mov dword [rsi + 0x160], 1
mov r8, rsi
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.140118294
xor esi, esi
inc r13d
inc r14
cmp r13d, dword [rdi + 0x2178]
jge 0x1400f8959
jmp 0x1400f8837
call fcn.140010b1c
nop
call fcn.140010b1c
int3
cmp dword [rdi + 0x21c8], 1
jle 0x1400f89a9
cmp qword [rdi + 0x21a0], rsi
jle 0x1400f89a9
mov ecx, 0x188
call fcn.140010904
mov qword [rbp - 0x10], rax
test rax, rax
je 0x1400f898d
mov edx, 1
mov rcx, rax
call fcn.14009a304
jmp 0x1400f8990
mov rax, rsi
mov dword [rax + 0x160], 1
mov r8, rax
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.140118294
mov r12d, esi
cmp dword [rdi + 0x21a0], esi
jle 0x1400f8aa8
test rsi, rsi
js 0x1400f8aa2
cmp rsi, qword [rdi + 0x21a0]
jge 0x1400f8aa2
mov rax, qword [rdi + 0x2198]
mov r13, qword [rax + rsi*8]
lea rdx, str.CMFCRibbonSeparator
mov rcx, r13
call fcn.14003f80c
test eax, eax
je 0x1400f8a1c
mov ecx, 0x188
call fcn.140010904
mov qword [rbp - 0x10], rax
test rax, rax
je 0x1400f8a0d
mov edx, 1
mov rcx, rax
call fcn.14009a304
nop
mov dword [rax + 0x160], 1
mov r8, rax
jmp 0x1400f8a78
mov ecx, 0x270
call fcn.140010904
mov r14, rax
mov qword [rbp - 0x18], rax
test rax, rax
je 0x1400f8a6b
cmp rsi, qword [rdi + 0x2150]
jge 0x1400f8a98
mov rax, qword [rdi + 0x2148]
and dword [rsp + 0x28], 0
or ecx, 0xffffffff
mov dword [rsp + 0x20], ecx
mov r9d, ecx
mov r8, qword [rax + rsi*8]
xor edx, edx
mov rcx, r14
call fcn.14009dce8
lea rax, vtable.CMFCRibbonStatusBarCustomizeButton.0
mov qword [r14], rax
jmp 0x1400f8a6e
xor r14d, r14d
mov qword [r14 + 0x110], r13
mov r8, r14
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.140118294
inc r12d
inc rsi
cmp r12d, dword [rdi + 0x21a0]
jge 0x1400f8a9e
jmp 0x1400f89b8
call fcn.140010b1c
nop
xor esi, esi
jmp 0x1400f8aa8
call fcn.140010b1c
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400f8ac2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov ecx, 0x2f60
call fcn.140010904
mov qword [rbp + 0x58], rax
test rax, rax
je 0x1400f8aef
lea r8, [rdi + 0x21b8]
xor r9d, r9d
mov rdx, rdi
mov rcx, rax
call fcn.1400f9aa0
mov rcx, rax
jmp 0x1400f8af2
mov rcx, rsi
mov dword [rcx + 0x2df0], 1
mov dword [rcx + 0x2df4], 1
mov dword [rcx + 0x2dfc], esi
mov rax, qword [rcx]
mov dword [rsp + 0x30], esi
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rsi
mov r9d, dword [rbp + 0x54]
mov r8d, dword [rbp + 0x50]
mov rdx, rdi
call qword [rax + 0x420]
mov rbx, qword [rsp + 0xa0]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret