Function at 0x140023e40
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
sub rsp, 0x40
mov rbp, r8
mov rsi, rdx
mov rdi, rcx
test rdx, rdx
jne 0x140023e65
lea eax, [rdx + 0xb]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret
mov rcx, qword [rdx + 0x108]
xor r8d, r8d
mov rdx, rbp
add rcx, 0x20
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r14
call fcn.1400b22a0
lea rcx, [rdi + 0x50]
mov r14, rax
call fcn.140032530
test al, al
jne 0x140023ee1
mov ecx, 0x1b
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x140023eb5
mov ecx, 0xd
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140023ee1
mov rcx, qword [0x14026e108]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
mov rdx, rsi
mov rcx, rdi
call fcn.140024450
lea rcx, [rsi + 8]
mov edx, eax
call fcn.14006d2e0
jmp 0x140024433
mov rcx, qword [r14]
mov qword [rsp + 0x38], r12
xor r12d, r12d
test rcx, rcx
jne 0x140023ef6
mov eax, r12d
jmp 0x140023f0a
mov rax, qword [rcx]
lea r8, [rsp + 0x68]
mov edx, 0x10000313
call qword [rax + 0x18]
mov eax, dword [rsp + 0x68]
mov qword [rsp + 0x60], rbx
bt eax, 0x17
jae 0x140023f74
mov rcx, qword [r14]
test rcx, rcx
jne 0x140023f22
mov edx, r12d
jmp 0x140023f3b
mov dword [rsp + 0x68], r12d
mov rax, qword [rcx]
lea r8, [rsp + 0x68]
mov edx, 0x10000317
call qword [rax + 0x18]
mov edx, dword [rsp + 0x68]
lea rcx, [rdi + 0x1070]
mov rax, qword [rcx]
call qword [rax + 0x48]
mov rcx, qword [rax]
test rcx, rcx
jne 0x140023f55
mov eax, r12d
jmp 0x140023f69
mov rax, qword [rcx]
lea r8, [rsp + 0x78]
mov edx, 0x10000313
call qword [rax + 0x18]
mov eax, dword [rsp + 0x78]
mov ebx, 1
bt eax, 0x17
jae 0x140023f77
mov ebx, r12d
mov rcx, r14
mov qword [rsp + 0x20], r15
call fcn.14000dde0
test al, al
je 0x140023fcd
mov rcx, qword [r14]
test rcx, rcx
jne 0x140023f95
mov edx, r12d
jmp 0x140023fae
mov dword [rsp + 0x68], r12d
mov rax, qword [rcx]
lea r8, [rsp + 0x68]
mov edx, 0x10000317
call qword [rax + 0x18]
mov edx, dword [rsp + 0x68]
lea rcx, [rdi + 0x1070]
mov rax, qword [rcx]
call qword [rax + 0x48]
mov rcx, rax
call fcn.14000dde0
mov r15d, 1
test al, al
je 0x140023fd0
mov r15d, r12d
lea rcx, [rdi + 0x50]
call fcn.140032530
test al, al
jne 0x140024027
test ebx, ebx
jne 0x140023fe6
test r15d, r15d
je 0x140024027
mov rcx, qword [0x14026e108]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
mov ecx, dword [rdi + 0x1004]
test ecx, ecx
je 0x140024007
call qword [sym.imp.KERNEL32.dll_Sleep]
xor edx, edx
mov rcx, rsi
call fcn.1400adae0
lea rcx, [rsi + 8]
mov edx, eax
call fcn.14006d2e0
lea rcx, [rsi + 8]
xor edx, edx
call fcn.14006d2e0
mov rcx, qword [rdi + 0xc60]
test rcx, rcx
je 0x14002403c
mov rax, qword [rcx]
call qword [rax + 0x18]
mov r12d, eax
lea rcx, [rdi + 0x50]
call fcn.140032530
test al, al
je 0x1400240da
test r12d, r12d
je 0x1400241be
cmp dword [rdi + 0xd50], 0
jne 0x14002410d
mov rcx, r14
call fcn.14000dde0
test al, al
jne 0x14002408a
mov rdx, r14
mov rcx, rdi
call fcn.1400310d0
mov rcx, rax
call fcn.14000dde0
test al, al
jne 0x14002410d
mov rcx, qword [rsi + 0x108]
add rcx, 0x20
call fcn.1400b2290
test eax, eax
jne 0x1400240b5
mov rcx, qword [rsi + 0x108]
add rcx, 0xf0
call fcn.1400b2290
test eax, eax
jne 0x14002410d
mov rcx, rbp
call fcn.140032490
test eax, eax
jne 0x1400241be
lea rcx, [rdi + 0x1070]
call fcn.140032490
test eax, eax
jne 0x14002410d
jmp 0x1400241be
mov rcx, qword [rsi + 0x108]
add rcx, 0x20
call fcn.1400b2290
test eax, eax
jne 0x1400241be
mov rcx, qword [rsi + 0x108]
add rcx, 0xf0
call fcn.1400b2290
test eax, eax
je 0x1400241be
mov rcx, qword [rdi + 0x350]
test rcx, rcx
je 0x1400241be
xor eax, eax
lea r8, [rsp + 0x78]
mov edx, 0x12
mov dword [rsp + 0x78], eax
mov dword [rsp + 0x68], eax
mov rax, qword [rcx]
call qword [rax + 0x38]
mov rcx, qword [rdi + 0x350]
lea r8, [rsp + 0x68]
mov rax, qword [rcx]
mov edx, 0x11
call qword [rax + 0x38]
mov ebx, dword [rsp + 0x68]
test ebx, ebx
je 0x140024195
mov rcx, rbp
call fcn.14000fe30
mov edx, dword [rsp + 0x78]
cmp eax, edx
jb 0x14002416a
sub eax, edx
jmp 0x140024179
or ecx, 0xffffffff
sub ecx, edx
cmp ecx, 0x1388
ja 0x140024184
add eax, ecx
xor ecx, ecx
cmp eax, ebx
seta cl
test ecx, ecx
jne 0x140024195
mov rdx, qword [rdi + 0x350]
mov rcx, rdi
call fcn.140020f60
jmp 0x1400241be
mov r8d, dword [rdi + 0xd4c]
mov rcx, qword [0x14026e108]
lea rdx, [rsi + 0xa]
lea r9, [0x140026990]
call qword [sym.imp.USER32.dll_SetTimer]
mov dword [rdi + 0xd50], 0
lea rcx, [rdi + 0x50]
xor ebp, ebp
call fcn.140032530
test al, al
je 0x14002423f
test r12d, r12d
je 0x14002427b
test r15d, r15d
jne 0x140024229
mov rcx, qword [rsi + 0x108]
add rcx, 0x20
call fcn.1400b2290
test eax, eax
je 0x140024206
mov rcx, qword [rsi + 0x108]
add rcx, 0xf0
call fcn.1400b2290
test eax, eax
je 0x140024229
mov r14, qword [rsp + 0x70]
mov rcx, r14
call fcn.140032490
test eax, eax
je 0x140024280
lea rcx, [rdi + 0x1070]
call fcn.140032490
test eax, eax
je 0x14002422e
jmp 0x140024280
mov r14, qword [rsp + 0x70]
mov ebp, 1
mov dword [rdi + 0xd50], 0
jmp 0x140024280
mov rcx, qword [rsi + 0x108]
add rcx, 0x20
call fcn.1400b2290
test eax, eax
je 0x14002427b
mov rcx, qword [rsi + 0x108]
add rcx, 0xf0
call fcn.1400b2290
test eax, eax
jne 0x14002427b
mov rcx, r14
call fcn.140032be0
test al, al
jne 0x14002427b
mov ebp, 1
mov r14, qword [rsp + 0x70]
cmp qword [rdi + 0x350], 0
mov r15, qword [rsp + 0x20]
je 0x140024402
mov rcx, qword [rsi + 0x108]
add rcx, 0x20
call fcn.1400b2290
test eax, eax
je 0x140024402
mov rcx, qword [rdi + 0x350]
xor r8d, r8d
xor edx, edx
call fcn.1400a99e0
bt eax, 0x12
jae 0x140024402
mov rbx, qword [rdi + 0x10]
test rbx, rbx
je 0x14002435e
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rbx]
lea rdx, str.Right_Edge_Pull
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x1400242ff
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x1400242e0
jmp 0x14002435e
mov rcx, qword [rbx]
test rcx, rcx
je 0x14002435e
mov rdx, r14
call fcn.140030300
cmp eax, 1
jne 0x14002435e
cmp dword [rdi + 0xf90], 0
mov dword [rdi + 0xf94], eax
jne 0x14002433f
mov rcx, qword [rdi + 0x58]
test rcx, rcx
jne 0x140024330
lea rcx, [rdi + 0x70]
mov rax, qword [rcx]
mov edx, 1
call qword [rax + 0x60]
test eax, eax
jne 0x14002434f
inc dword [rdi + 0x7c8]
mov dword [rdi + 0xf90], 1
mov rdx, qword [rdi + 0x350]
mov rcx, rdi
call fcn.140020f60
mov rbx, qword [rdi + 0x10]
test rbx, rbx
je 0x140024402
nop dword [rax + rax]
mov rcx, qword [rbx]
lea rdx, str.4FVertical_Scrolling
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x14002438f
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x140024370
jmp 0x140024402
mov rbx, qword [rbx]
test rbx, rbx
je 0x140024402
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1400a9c20
test al, 2
je 0x140024402
mov rdx, r14
mov rcx, rbx
call fcn.140030300
cmp eax, 1
jne 0x140024402
cmp dword [rdi + 0xf90], 0
mov dword [rdi + 0xf94], eax
jne 0x1400243e3
mov rcx, qword [rdi + 0x58]
test rcx, rcx
jne 0x1400243d4
lea rcx, [rdi + 0x70]
mov rax, qword [rcx]
mov edx, 1
call qword [rax + 0x60]
test eax, eax
jne 0x1400243f3
inc dword [rdi + 0x7c8]
mov dword [rdi + 0xf90], 1
mov rdx, qword [rdi + 0x350]
mov rcx, rdi
call fcn.140020f60
mov rbx, qword [rsp + 0x60]
test ebp, ebp
jne 0x14002441d
lea rcx, [rdi + 0x50]
call fcn.140032530
test al, al
je 0x14002442e
test r12d, r12d
jne 0x14002442e
mov rcx, qword [0x14026e108]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
mov r12, qword [rsp + 0x38]
mov eax, dword [rsi + 0x28]
mov r13, qword [rsp + 0x30]
mov r14, qword [rsp + 0x28]
add rsp, 0x40
pop rdi
pop rsi
pop rbp
ret