Function at 0x18001aec0
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, 0x30
mov r15d, r9d
movzx r12d, r8b
mov edi, edx
mov rsi, rcx
mov r13d, r9d
and r13d, 1
setne bpl
inc bpl
and r15d, 2
jne 0x18001afcf
test byte [r12 + rcx + 0x2c], bpl
jne 0x18001afcf
call qword [sym.imp.UICommon.dll_public:_static_class_UIExtraDataManager____ptr64___cdecl_UIExtraDataManager::instance_void_]
lea rdx, [rsp + 0x28]
mov rcx, rax
call qword [sym.imp.UICommon.dll_public:_class_QString___cdecl_UIExtraDataManager::hostKeyCombination_void____ptr64]
nop
mov rdx, rax
lea rcx, [rsp + 0x20]
call qword [sym.imp.UICommon.dll_class_QList_int____cdecl_UIHostCombo::toKeyCodeList_class_QString_const____ptr64_]
nop
lea rcx, [rsp + 0x28]
call qword [sym.imp.Qt5Core.dll_public:_void___cdecl_QString::destructor_void____ptr64]
lea rcx, [rsp + 0x20]
call qword [sym.imp.Qt5Core.dll_public:_void____ptr64____ptr64___cdecl_QListData::end_void_const___ptr64]
mov rbx, rax
lea rcx, [rsp + 0x20]
call qword [sym.imp.Qt5Core.dll_public:_void____ptr64____ptr64___cdecl_QListData::begin_void_const___ptr64]
cmp rax, rbx
je 0x18001af65
cmp dword [rax], edi
je 0x18001af9b
add rax, 8
cmp rax, rbx
jne 0x18001af58
mov rax, qword [rsp + 0x20]
mov ecx, dword [rax]
test ecx, ecx
je 0x18001af88
cmp ecx, 0xffffffff
je 0x18001af94
mov rax, qword [rsp + 0x20]
mov ecx, 0xffffffff
lock xadd dword [rax], ecx
cmp ecx, 1
jne 0x18001af94
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.Qt5Core.dll_public:_static_void___cdecl_QListData::dispose_struct_QListData::Data____ptr64_]
nop
mov al, 1
jmp 0x18001b144
mov rax, qword [rsp + 0x20]
mov ecx, dword [rax]
test ecx, ecx
je 0x18001afbe
cmp ecx, 0xffffffff
je 0x18001afca
mov rax, qword [rsp + 0x20]
mov ecx, 0xffffffff
lock xadd dword [rax], ecx
cmp ecx, 1
jne 0x18001afca
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.Qt5Core.dll_public:_static_void___cdecl_QListData::dispose_struct_QListData::Data____ptr64_]
nop
jmp 0x18001b142
mov rax, qword [rcx + 0x10]
mov rdi, qword [rsp + 0x88]
mov r14, qword [rsp + 0x80]
cmp byte [rax + 0x88], 0
jne 0x18001b0e5
test r15d, r15d
je 0x18001b0e5
mov rcx, qword [rax + 0x10]
cmp dword [rcx + 0x41c], 0
je 0x18001b050
movzx ebx, byte [rcx + 0x418]
and bl, 1
mov ecx, 0x90
call qword [sym.imp.USER32.dll_GetKeyState]
xor ecx, ecx
test ax, ax
setne cl
movzx eax, bl
cmp ecx, eax
je 0x18001b050
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x10]
dec dword [rcx + 0x41c]
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0x45
inc dword [rdi]
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0xc5
inc dword [rdi]
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x10]
cmp dword [rcx + 0x420], 0
je 0x18001b0e5
movzx ebx, byte [rcx + 0x418]
shr bl, 1
and bl, 1
mov ecx, SafeArrayUnaccessData
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ecx, 0
setne cl
movzx eax, bl
cmp ecx, eax
je 0x18001b0e5
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x10]
dec dword [rcx + 0x420]
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0x3a
inc dword [rdi]
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0xba
mov edx, dword [rdi]
inc edx
mov dword [rdi], edx
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x10]
test byte [rcx + 0x418], 2
je 0x18001b0e5
test byte [rsi + 0x56], 1
jne 0x18001b0e5
mov dword [r14 + rdx*4], 0x2a
inc dword [rdi]
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0xaa
inc dword [rdi]
test r13d, r13d
je 0x18001b0f6
mov eax, dword [rdi]
mov dword [r14 + rax*4], 0xe0
inc dword [rdi]
lea rdx, [rsi + r12]
test r15d, r15d
je 0x18001b10d
mov eax, dword [rdi]
mov dword [r14 + rax*4], r12d
inc dword [rdi]
or byte [rdx + 0x2c], bpl
jmp 0x18001b12c
movzx eax, byte [rdx + 0x2c]
test bpl, al
je 0x18001b130
mov ecx, r12d
bts ecx, 7
mov eax, dword [rdi]
mov dword [r14 + rax*4], ecx
inc dword [rdi]
not bpl
and byte [rdx + 0x2c], bpl
movzx eax, byte [rdx + 0x2c]
test byte [rsi + 0x138], 1
je 0x18001b13d
or al, 0x80
jmp 0x18001b13f
and al, 0x7f
mov byte [rdx + 0x2c], al
xor al, al
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret