Function at 0x140093890
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0xe0
mov qword [rsp + 0xb8], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x20], rbp
mov r12, r9
mov ebp, edx
mov rsi, rcx
test rcx, rcx
je 0x140094524
cmp qword [rcx + 0x40], 0
je 0x140094524
test byte [rcx + 0x128], 1
jne 0x1400938e6
mov al, 1
jmp 0x140094526
mov rax, qword [rcx]
call qword [rax + 0x678]
test al, al
je 0x1400938ff
mov byte [r12], 1
xor al, al
jmp 0x140094526
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
call fcn.140055ed0
test al, al
jne 0x140094520
call fcn.140078950
test al, al
jne 0x140094520
call fcn.1400789a0
test rax, rax
jne 0x140094520
movzx eax, byte [r12]
mov byte [rsp + 0x20], al
mov r9, qword [rsp + 0x120]
mov r8d, ebp
mov rdx, rsi
lea rcx, [rsp + 0xc0]
call fcn.140078730
lea rcx, [rsp + 0xc0]
call fcn.1400787c0
test al, al
je 0x140093982
movzx eax, byte [rsp + 0xc8]
shr al, 1
and al, 1
mov byte [r12], al
mov al, 1
jmp 0x140094526
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x30], rax
lea rdx, [rsp + 0x30]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_ClientToScreen]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.USER32.dll_WindowFromPoint]
mov rdi, rax
test rax, rax
je 0x140093a83
mov edx, 0xfffffff0
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1e
jae 0x140093a83
mov rcx, rdi
call qword [sym.imp.USER32.dll_GetParent]
cmp rax, qword [rsi + 0x40]
jne 0x140093a83
mov rcx, rdi
call fcn.1400125b0
mov r13, rax
test rax, rax
je 0x140093a77
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x370]
mov edi, eax
xor ebp, ebp
mov ebx, ebp
test eax, eax
jle 0x140093a77
nop dword [rax + rax]
mov edx, ebx
mov rcx, rsi
call fcn.1400818b0
cmp qword [rax + 0xe8], rbp
je 0x140093a2c
cmp qword [rax + 0xe0], r13
je 0x140093a34
inc ebx
cmp ebx, edi
jge 0x140093a77
jmp 0x140093a10
cmp dword [rsi + 0x3c0], ebx
je 0x140093a77
mov rdi, qword [rsi + 0x40]
mov rax, qword [rsi]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 1
mov r9d, 1
xor r8d, r8d
mov edx, ebx
mov rcx, rsi
call qword [rax + 0x540]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093a77
mov al, 1
jmp 0x140094526
mov byte [r12], 1
xor al, al
jmp 0x140094526
call qword [sym.imp.USER32.dll_GetFocus]
mov rbx, rax
test rax, rax
je 0x140093abc
mov edx, 0xfffffff0
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1e
jae 0x140093abc
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetParent]
cmp rax, qword [rsi + 0x40]
jne 0x140093abc
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov rdx, qword [rsp + 0x120]
mov rcx, rsi
call qword [rax + 0x590]
test al, al
jne 0x140093e60
mov rcx, qword [rsi + 0x3e8]
test rcx, rcx
je 0x140093bd2
cmp qword [rcx + 0x40], 0
je 0x140093bd2
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x48], rax
lea rdx, [rsp + 0x48]
mov rcx, qword [rcx + 0x40]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rax, qword [rsi + 0xd8]
cmp dword [rsp + 0x30], eax
jne 0x140093b38
shr rax, 0x20
cmp dword [rsp + 0x34], eax
jne 0x140093b38
xor ebp, ebp
mov dword [rsi + 0xdc], ebp
mov dword [rsi + 0xd8], ebp
mov al, 1
jmp 0x140094526
mov rbx, qword [rsi + 0x40]
mov rcx, qword [rsi + 0x3e8]
mov rax, qword [rcx]
mov r9, r12
mov r8, qword [rsp + 0x48]
mov edx, ebp
call qword [rax + 0x560]
test al, al
je 0x140093bbe
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093b6e
mov al, 1
jmp 0x140094526
or r13, 0xffffffffffffffff
mov dword [rsi + 0x3c8], r13d
cmp byte [r12], 0
je 0x140093b87
xor al, al
jmp 0x140094526
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x140093bb7
mov edx, 0xfffffff0
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetClassLongPtrW]
bt rax, 0x1c
jae 0x140093bb7
mov rax, qword [rsi]
xor edx, edx
mov rcx, rsi
call qword [rax + 0x588]
mov al, 1
jmp 0x140094526
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093bd2
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
call fcn.140078960
cmp rax, rsi
jne 0x140093e4e
mov edx, 0xfffffff0
mov rcx, rdi
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1e
jae 0x140093c25
mov rcx, rdi
call qword [sym.imp.USER32.dll_GetParent]
mov rdi, rax
mov edx, 0xfffffff0
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowLongPtrW]
bt rax, 0x1e
jb 0x140093c04
mov rcx, rdi
call fcn.1400125b0
mov rdx, rax
lea rcx, str.CExtPopupMenuWnd
call fcn.14001b184
mov r14, rax
test rax, rax
je 0x140093d5a
mov rcx, rax
nop dword [rax + rax]
cmp rcx, rsi
je 0x140093c66
mov rcx, qword [rcx + 0x3e8]
test rcx, rcx
jne 0x140093c50
jmp 0x140093d5a
xor ebp, ebp
mov rsi, rbp
mov rbx, rax
or r13, 0xffffffffffffffff
nop word [rax + rax]
mov dword [rbx + 0x3c4], r13d
mov edx, 0x29b
mov rcx, qword [rbx + 0x40]
call qword [sym.imp.USER32.dll_KillTimer]
mov edx, 0x298
mov rcx, qword [rbx + 0x40]
call qword [sym.imp.USER32.dll_KillTimer]
and byte [rbx + 0x3cc], 0xdf
mov dword [rbx + 0x3c8], r13d
test rsi, rsi
je 0x140093d1b
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x370]
mov r12d, eax
mov edi, ebp
test eax, eax
jle 0x140093d1b
nop dword [rax]
mov edx, edi
mov rcx, rbx
call fcn.1400818b0
cmp dword [rax + 0xc], 0xffffffff
jne 0x140093ce5
cmp qword [rax], rsi
je 0x140093cee
inc edi
cmp edi, r12d
jge 0x140093d1b
jmp 0x140093cd0
cmp dword [rbx + 0x3c0], edi
je 0x140093d1b
mov rax, qword [rbx]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], ebp
mov r9d, 1
mov r8d, r9d
mov edx, edi
mov rcx, rbx
call qword [rax + 0x540]
mov dword [rbx + 0x3c8], edi
mov rsi, rbx
mov rbx, qword [rbx + 0x3e8]
test rbx, rbx
jne 0x140093c80
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x598]
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0x58], rdx
lea rdx, [rsp + 0x58]
mov rcx, qword [r14 + 0x40]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov al, 1
jmp 0x140094526
mov rdi, qword [rsi + 0x40]
mov eax, dword [rsi + 0x3c0]
test eax, eax
js 0x140093def
cmp dword [rsi + 0x3c8], 0
jl 0x140093def
mov edx, eax
mov rcx, rsi
call fcn.1400818b0
cmp dword [rax + 0xc], 0xffffffff
je 0x140093db4
mov rax, qword [rsi]
xor r9d, r9d
mov edx, 1
mov r8d, edx
mov rcx, rsi
call qword [rax + 0x530]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093e4e
mov al, 1
jmp 0x140094526
mov rax, qword [rax]
cmp dword [rax + 0x3c0], 0
jge 0x140093e4e
mov rax, qword [rsi]
xor r9d, r9d
mov edx, 1
mov r8d, edx
mov rcx, rsi
call qword [rax + 0x530]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093e4e
mov al, 1
jmp 0x140094526
cmp eax, 0xffffffff
je 0x140093e4e
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dx, ax
shr edx, 0xf
test dl, 1
jne 0x140093e3a
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x338]
test al, 0x40
jne 0x140093e3a
cmp dword [rsi + 0x3c8], 0xffffffff
je 0x140093e3a
mov rax, qword [rsi]
xor r9d, r9d
mov edx, 1
mov r8d, edx
mov rcx, rsi
call qword [rax + 0x530]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093e4e
mov al, 1
jmp 0x140094526
or r13, 0xffffffffffffffff
mov dword [rsi + 0x3c8], r13d
xor al, al
jmp 0x140094526
mov rax, qword [rsi]
xor r9d, r9d
xor r8d, r8d
lea rdx, [rsp + 0x120]
mov rcx, rsi
call qword [rax + 0x4c8]
mov r12d, eax
cmp eax, 0xfffffffc
jne 0x140093ef6
mov rdi, qword [rsi + 0x40]
mov rax, qword [rsi]
xor r9d, r9d
mov edx, 1
mov r8d, edx
mov rcx, rsi
call qword [rax + 0x530]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093eb1
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x598]
cmp byte [0x140260afa], 0
je 0x140093eef
cmp dword [rsi + 0x3d0], 0
jne 0x140093eef
xor r9d, r9d
mov edx, 0x29e
lea r8d, [r9 + 0x1e]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SetTimer]
mov dword [rsi + 0x3d0], 1
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x4d8]
test al, al
je 0x140094136
cmp r12d, 0xfffffffb
jne 0x140094136
mov rdi, qword [rsi + 0x40]
mov rax, qword [rsi]
xor r9d, r9d
xor r8d, r8d
lea edx, [r12 + 6]
mov rcx, rsi
call qword [rax + 0x530]
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140093f43
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x598]
mov edx, 0x7f86
xor ecx, ecx
call qword [sym.imp.USER32.dll_LoadCursorW]
mov rcx, rax
call qword [sym.imp.USER32.dll_SetCursor]
cmp byte [0x140260afc], 0
je 0x14009412f
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
call fcn.140078960
cmp rax, rsi
jne 0x14009412f
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x68]
mov edx, 0xfffffffb
mov rcx, rsi
call qword [rax + 0x548]
lea rdx, [rsp + 0x68]
mov rcx, rsi
call fcn.14000c39c
movzx edi, byte [rsi + 0x3cc]
shr dil, 4
not dil
and dil, 1
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x488]
mov rbx, rax
test rax, rax
je 0x140094028
cmp qword [rax + 0x40], 0
je 0x140094028
lea rdx, [rsp + 0x98]
mov ecx, dword [rax + 0xb0]
mov dword [rdx], ecx
mov ecx, dword [rax + 0xb4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 0xb8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xbc]
mov dword [rdx + 0xc], eax
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x98]
call qword [sym.imp.USER32.dll_EqualRect]
test eax, eax
jne 0x14009412f
test dil, dil
je 0x14009412f
call fcn.140008c24
mov rdx, rax
xor ebp, ebp
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140094052
mov ecx, 0x80004005
call fcn.1400052e0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rcx, [0x140272710]
call fcn.14005e6a0
mov rdi, qword [rax]
mov qword [rsp + 0x20], rbp
xor r9d, r9d
mov r8d, 0x76c2
lea rdx, [rsp + 0x38]
mov rcx, rax
call qword [rdi + pe_nt_image_headers64]
mov rdx, qword [rsp + 0x38]
or r13, 0xffffffffffffffff
cmp dword [rdx - 0x10], 0
jne 0x1400940ca
xor eax, eax
mov rcx, r13
lea rdi, str.Drag_to_make_this_menu_float
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.Drag_to_make_this_menu_float
lea rcx, [rsp + 0x38]
call fcn.140005080
mov rdx, qword [rsp + 0x38]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x308]
mov rax, qword [rbx]
mov edx, dword [reloc.OLEAUT32.dll_SysStringLen]
mov rcx, rbx
call qword [rax + 0x318]
mov qword [rsp + 0x60], rbp
mov rax, qword [rbx]
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x20], rcx
xor r9d, r9d
lea r8, [rsp + 0x68]
mov rdx, rsi
mov rcx, rbx
call qword [rax + 0x330]
nop
mov rax, qword [rsp + 0x38]
lea rdx, [rax - 0x18]
lock xadd dword [rdx + 0x10], r13d
dec r13d
test r13d, r13d
jg 0x14009412f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov al, 1
jmp 0x140094526
mov rdi, qword [rsi + 0x40]
mov rax, qword [rsi]
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x5b8]
test al, al
je 0x140094154
mov al, 1
jmp 0x140094526
mov rcx, rdi
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140094168
mov al, 1
jmp 0x140094526
mov edx, dword [rsi + 0x3c0]
cmp edx, r12d
je 0x1400941a9
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x78]
mov rcx, rsi
call qword [rax + 0x548]
lea rcx, [rsp + 0x78]
call qword [sym.imp.USER32.dll_IsRectEmpty]
test eax, eax
jne 0x1400941a9
lea r8d, [rax + 1]
lea rdx, [rsp + 0x78]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_InvalidateRect]
cmp r12d, 0xfffffffa
je 0x140094489
cmp r12d, 0xfffffff9
je 0x140094489
test r12d, r12d
js 0x140094482
mov edx, r12d
mov rcx, rsi
call fcn.1400818b0
mov rdi, rax
mov rcx, rax
call fcn.14007bbe0
test al, al
jne 0x1400941e8
cmp byte [0x1402728aa], al
je 0x1400941f3
cmp dword [rdi + 0xc], 0
sete cl
test cl, cl
je 0x14009421d
mov rax, qword [rsi]
mov edx, 1
mov r9d, edx
mov r8d, edx
mov rcx, rsi
call qword [rax + 0x530]
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x598]
xor al, al
jmp 0x140094526
mov r14d, dword [rsi + 0x3c0]
cmp r14d, r12d
je 0x140094477
mov rbx, qword [rsi + 0x40]
mov rax, qword [rsi]
xor r8d, r8d
or r13, 0xffffffffffffffff
mov edx, r13d
mov rcx, rsi
call qword [rax + 0x538]
mov byte [rsp + 0x110], 0
cmp dword [rdi + 0xc], 0xffffffff
jne 0x14009426c
mov rax, qword [rsi]
lea r8, [rsp + 0x110]
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x538]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x140094280
mov al, 1
jmp 0x140094526
xor ebp, ebp
cmp byte [rsp + 0x110], bpl
jne 0x1400942ba
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x598]
mov rax, qword [rsi]
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], ebp
lea r9d, [rbp + 1]
xor r8d, r8d
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x540]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400942ce
mov al, 1
jmp 0x140094526
mov dword [rsi + 0x3c8], r12d
mov edx, r12d
mov rcx, rsi
call fcn.1400818b0
mov rdi, rax
cmp byte [rsp + 0x110], bpl
jne 0x140094346
cmp dword [rax + 0xc], 0xffffffff
jne 0x140094346
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x488]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x338]
mov rdx, qword [rdi]
test rdx, rdx
je 0x140094319
cmp qword [rdx + 0x40], rbp
jne 0x14009433f
mov rax, qword [rsi]
xor r8d, r8d
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x538]
mov rcx, rbx
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x14009433f
mov al, 1
jmp 0x140094526
mov al, 1
jmp 0x140094526
cmp byte [0x140260afc], bpl
je 0x140094477
test byte [rsi + 0x3cc], 0x10
jne 0x140094477
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x648]
mov rcx, rax
call fcn.140078960
cmp rax, rsi
jne 0x140094477
call fcn.140008c24
mov r11, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x14009439c
mov ecx, 0x80004005
call fcn.1400052e0
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
lea rdx, [rsp + 0x40]
mov rcx, rdi
call fcn.140092350
mov rdx, qword [rsp + 0x40]
cmp dword [rdx - 0x10], 0
je 0x14009445c
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0x88]
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x548]
lea rdx, [rsp + 0x88]
mov rcx, rsi
call fcn.14000c39c
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x488]
mov rbx, rax
mov rax, qword [rax]
mov rdx, qword [rsp + 0x40]
mov rcx, rbx
call qword [rax + 0x308]
mov rdi, qword [rbx]
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x608]
mov edx, eax
mov rcx, rbx
call qword [rdi + 0x318]
mov qword [rsp + 0x50], rbp
mov rax, qword [rbx]
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x20], rcx
xor r9d, r9d
lea r8, [rsp + 0x88]
mov rdx, rsi
mov rcx, rbx
call qword [rax + 0x330]
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r13d
dec r13d
test r13d, r13d
jg 0x140094477
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp r14d, r12d
setne al
jmp 0x140094526
xor al, al
jmp 0x140094526
mov edx, dword [rsi + 0x3c0]
test edx, edx
js 0x1400944c2
mov rcx, rsi
call fcn.1400818b0
cmp dword [rax + 0xc], 0xffffffff
jne 0x1400944c2
mov edx, dword [rsi + 0x3c0]
mov rcx, rsi
call fcn.1400818b0
mov rcx, qword [rax]
test rcx, rcx
je 0x1400944c2
cmp qword [rcx + 0x40], 0
je 0x1400944c2
mov al, 1
jmp 0x140094526
mov rax, qword [rsi]
mov r9b, 1
lea r8, [rsp + 0xa8]
mov edx, r12d
mov rcx, rsi
call qword [rax + 0x548]
mov r8d, 1
lea rdx, [rsp + 0xa8]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_InvalidateRect]
mov rax, qword [rsi]
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 1]
mov rcx, rsi
call qword [rax + 0x530]
mov dword [rsi + 0x3c0], r12d
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x598]
mov al, 1
jmp 0x140094526
mov al, 1
jmp 0x140094526
xor al, al
lea r11, [rsp + 0xe0]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret