Function at 0x14002ea90
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push rbx
push rsi
push r13
sub rsp, 0x70
mov r13, r8
mov rsi, rdx
mov rbx, rcx
test rdx, rdx
jne 0x14002eac6
call fcn.140011480
mov ecx, 0xa
mov edx, 0xe
test eax, eax
cmovne ecx, edx
mov eax, ecx
add rsp, 0x70
pop r13
pop rsi
pop rbx
ret
mov qword [rsp + 0x68], rdi
mov edi, dword [rdx + 0x28]
cmp edi, 0xc
je 0x14002eb1e
test byte [0x1402d741c], 4
je 0x14002eb0e
mov ecx, dword [rdx + 0x30]
call fcn.1400d0c00
mov ecx, edi
mov rbx, rax
call fcn.14008c8b0
lea r8, str.cur_strokestate_is__s_for_zone__s___return_same_strokestate_n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov edx, 3
mov r9, rax
mov qword [rsp + 0x20], rbx
call fcn.14011a490
mov eax, edi
mov rdi, qword [rsp + 0x68]
add rsp, 0x70
pop r13
pop rsi
pop rbx
ret
add rcx, 0x50
mov qword [rsp + 0x60], r12
call fcn.14000ae00
test al, al
jne 0x14002eb7c
mov ecx, 0x1b
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x14002eb50
mov ecx, 0xd
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x14002eb7c
mov rcx, qword [0x1402dd258]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
mov rdx, rsi
mov rcx, rbx
call fcn.14002f2f0
lea rcx, [rsi + 8]
mov edx, eax
call fcn.14008d980
jmp 0x14002f2d2
mov qword [rsp + 0x90], rbp
mov rdx, r13
mov rcx, rbx
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x50], r15
call fcn.14003f520
mov rcx, r13
mov ebp, eax
call fcn.14003ed80
xor r15d, r15d
test eax, eax
je 0x14002ebbe
lea rcx, [rbx + 0x1038]
call fcn.14003ed80
lea r14d, [r15 + 1]
test eax, eax
je 0x14002ebc1
mov r14d, r15d
test byte [0x1402d741c], 4
je 0x14002ec43
mov rcx, qword [rbx + 0x1040]
test rcx, rcx
jne 0x14002ebdb
mov edi, r15d
jmp 0x14002ebf5
mov rax, qword [rcx]
lea r8, [rsp + 0x98]
mov edx, 0x100003e2
call qword [rax + 0x18]
mov edi, dword [rsp + 0x98]
mov rcx, qword [r13 + 8]
test rcx, rcx
jne 0x14002ec03
mov r9d, r15d
jmp 0x14002ec1e
mov rax, qword [rcx]
lea r8, [rsp + 0xa8]
mov edx, 0x100003e2
call qword [rax + 0x18]
mov r9d, dword [rsp + 0xa8]
mov dword [rsp + 0x30], r14d
lea r8, str.CurID_d__LastID_d__Tap_d__Btn_d_n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov edx, 3
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], edi
call fcn.14011a490
lea rcx, [rbx + 0x50]
call fcn.14000ae00
test al, al
jne 0x14002ecda
test ebp, ebp
jne 0x14002ec5d
test r14d, r14d
je 0x14002ecda
test byte [0x1402d741c], 4
je 0x14002ec7e
lea r8, str.tap_or_btn_click__run_extra_action__n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov edx, 3
call fcn.14011a490
mov rcx, qword [0x1402dd258]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
cmp dword [rbx + 0xfc4], r15d
je 0x14002ecc5
test byte [0x1402d741c], 4
je 0x14002ecb9
lea r8, str.Delayed_Ext_Action_when_Btn_clicked._n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov edx, 3
call fcn.14011a490
mov ecx, dword [rbx + 0xfc4]
call qword [sym.imp.KERNEL32.dll_Sleep]
xor edx, edx
mov rcx, rsi
call fcn.1400d8b60
lea rcx, [rsi + 8]
mov edx, eax
call fcn.14008d980
mov rcx, qword [rsi + 0x120]
xor r8d, r8d
mov rdx, r13
add rcx, 0x20
call fcn.1400de4f0
mov rcx, qword [rbx + 0xc58]
mov rbp, rax
test rcx, rcx
je 0x14002ed09
mov rdx, qword [rcx]
call qword [rdx + 0x18]
mov edi, eax
jmp 0x14002ed0c
mov edi, r15d
lea rcx, [rbx + 0x50]
mov dword [rsp + 0x98], edi
call fcn.14000ae00
test al, al
je 0x14002edb0
test edi, edi
je 0x14002eed8
cmp dword [rbx + 0xd24], r15d
jne 0x14002ede3
mov rcx, rbp
call fcn.14000ac20
test al, al
jne 0x14002ed60
mov rdx, rbp
mov rcx, rbx
call fcn.14003dca0
mov rcx, rax
call fcn.14000ac20
test al, al
jne 0x14002ede3
mov rcx, qword [rsi + 0x120]
add rcx, 0x20
call fcn.1400de4e0
test eax, eax
jne 0x14002ed8b
mov rcx, qword [rsi + 0x120]
add rcx, 0xf0
call fcn.1400de4e0
test eax, eax
jne 0x14002ede3
mov rcx, r13
call fcn.14003ef80
test eax, eax
jne 0x14002eed8
lea rcx, [rbx + 0x1038]
call fcn.14003ef80
test eax, eax
jne 0x14002ede3
jmp 0x14002eed8
mov rcx, qword [rsi + 0x120]
add rcx, 0x20
call fcn.1400de4e0
test eax, eax
jne 0x14002eed8
mov rcx, qword [rsi + 0x120]
add rcx, 0xf0
call fcn.1400de4e0
test eax, eax
je 0x14002eed8
mov rcx, qword [rbx + 0x348]
test rcx, rcx
je 0x14002eed8
mov dword [rsp + 0x40], r15d
mov dword [rsp + 0xa8], r15d
mov rax, qword [rcx]
lea r8, [rsp + 0x40]
mov edx, 0x12
call qword [rax + 0x48]
mov rcx, qword [rbx + 0x348]
lea r8, [rsp + 0xa8]
mov rax, qword [rcx]
mov edx, 0x11
call qword [rax + 0x48]
mov edi, dword [rsp + 0xa8]
test edi, edi
je 0x14002ee75
mov rcx, r13
call fcn.14000b750
mov edx, dword [rsp + 0x40]
cmp eax, edx
jb 0x14002ee49
sub eax, edx
jmp 0x14002ee58
or ecx, 0xffffffff
sub ecx, edx
cmp ecx, 0x1388
ja 0x14002ee64
add eax, ecx
cmp eax, edi
mov ecx, r15d
seta cl
test ecx, ecx
jne 0x14002ee75
mov rdx, qword [rbx + 0x348]
mov rcx, rbx
call fcn.14002b760
jmp 0x14002eed8
mov r8d, dword [rbx + 0xd20]
mov rcx, qword [0x1402dd258]
lea rdx, [rsi + 0xa]
lea r9, [0x140031d70]
call qword [sym.imp.USER32.dll_SetTimer]
mov dword [rbx + 0xd24], r15d
test byte [0x1402d741c], 4
je 0x14002eed8
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [rbx + 0xd20]
mov r9d, dword [rsp + 0xa8]
mov dword [rsp + 0x28], ecx
lea r8, str.Need_RunExtAction:_finger_up__time__d___t0_d__set_timer_with_m_lExtActionWaitingTime_d_n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov edx, 3
mov dword [rsp + 0x20], eax
call fcn.14011a490
lea rcx, [rbx + 0x50]
call fcn.14000ae00
test al, al
je 0x14002ef52
mov ebp, dword [rsp + 0x98]
test ebp, ebp
je 0x14002ef96
test r14d, r14d
jne 0x14002ef40
mov rcx, qword [rsi + 0x120]
add rcx, 0x20
call fcn.1400de4e0
test eax, eax
je 0x14002ef24
mov rcx, qword [rsi + 0x120]
add rcx, 0xf0
call fcn.1400de4e0
test eax, eax
je 0x14002ef40
mov rcx, r13
call fcn.14003ef80
test eax, eax
je 0x14002ef96
lea rcx, [rbx + 0x1038]
call fcn.14003ef80
test eax, eax
jne 0x14002ef96
mov r15d, 1
mov dword [rbx + 0xd24], 0
jmp 0x14002ef96
mov rcx, qword [rsi + 0x120]
add rcx, 0x20
call fcn.1400de4e0
test eax, eax
je 0x14002ef8f
mov rcx, qword [rsi + 0x120]
add rcx, 0xf0
call fcn.1400de4e0
test eax, eax
jne 0x14002ef8f
mov rcx, rbp
call fcn.14000b450
test al, al
jne 0x14002ef8f
mov r15d, 1
mov ebp, dword [rsp + 0x98]
cmp qword [rbx + 0x348], 0
mov r14, qword [rsp + 0x58]
je 0x14002f27a
mov rcx, qword [rsi + 0x120]
add rcx, 0x20
call fcn.1400de4e0
test eax, eax
je 0x14002f27a
mov rcx, qword [rbx + 0x348]
xor r8d, r8d
xor edx, edx
call fcn.1400d2300
bt eax, 0x12
jae 0x14002f27a
mov rdi, qword [rbx + 0x10]
test rdi, rdi
je 0x14002f122
nop dword [rax]
cmp qword [rdi], 0
jne 0x14002f00f
lea rdx, str.g:CheckpointsTPDrvheadgit1LibSynList.h
lea rcx, str.m_pItem
mov r8d, 0x60
call fcn.14000cb10
mov rcx, qword [rdi]
lea rdx, str.Right_Edge_Pull
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x14002f031
mov rdi, qword [rdi + 8]
test rdi, rdi
jne 0x14002eff0
jmp 0x14002f122
mov rcx, qword [rdi]
test rcx, rcx
je 0x14002f122
mov rdx, r13
call fcn.14003ccc0
cmp eax, 1
jne 0x14002f122
test byte [0x1402d741c], 4
je 0x14002f06d
lea r8, str.easactive__acquire_device_and_update_interlock_zone__n
lea edx, [rax + 2]
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.14011a490
cmp dword [rbx + 0xf54], 0
mov dword [rbx + 0xf58], 1
jne 0x14002f0bf
mov rcx, qword [rbx + 0x58]
test rcx, rcx
jne 0x14002f08d
lea rcx, [rbx + 0x70]
mov rax, qword [rcx]
mov edx, 1
call qword [rax + 0x60]
test eax, eax
je 0x14002f0bf
test byte [0x1402d741c], 4
je 0x14002f113
lea r8, str.SuppressCursor_failed_n
lea rcx, str.CManagedPointingDevice::AcquireOrUnacquire
mov edx, 3
call fcn.14011a490
jmp 0x14002f113
inc dword [rbx + 0x7c0]
mov edi, dword [rbx + 0x7c0]
mov dword [rbx + 0xf54], 1
test byte [0x1402d741c], 4
je 0x14002f113
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x30], 0
lea r8, str._Acquired_at_t_d__new_cnt_d__dwSuppressType_d__eAcquireMode_d_n
lea rcx, str.CManagedPointingDevice::AcquireOrUnacquire
mov edx, 3
mov r9d, eax
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], edi
call fcn.14011a490
mov rdx, qword [rbx + 0x348]
mov rcx, rbx
call fcn.14002b760
mov rdi, qword [rbx + 0x10]
test rdi, rdi
je 0x14002f27a
nop
cmp qword [rdi], 0
jne 0x14002f14f
lea rdx, str.g:CheckpointsTPDrvheadgit1LibSynList.h
lea rcx, str.m_pItem
mov r8d, 0x60
call fcn.14000cb10
mov rcx, qword [rdi]
lea rdx, str.4FVertical_Scrolling
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x14002f171
mov rdi, qword [rdi + 8]
test rdi, rdi
jne 0x14002f130
jmp 0x14002f27a
mov rdi, qword [rdi]
test rdi, rdi
je 0x14002f27a
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call fcn.1400d2600
test al, 2
je 0x14002f27a
mov rdx, r13
mov rcx, rdi
call fcn.14003ccc0
cmp eax, 1
jne 0x14002f27a
test byte [0x1402d741c], 4
je 0x14002f1c5
lea r8, str.easactive__acquire_device_at_6923__n
lea edx, [rax + 2]
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.14011a490
cmp dword [rbx + 0xf54], 0
mov dword [rbx + 0xf58], 1
jne 0x14002f217
mov rcx, qword [rbx + 0x58]
test rcx, rcx
jne 0x14002f1e5
lea rcx, [rbx + 0x70]
mov rax, qword [rcx]
mov edx, 1
call qword [rax + 0x60]
test eax, eax
je 0x14002f217
test byte [0x1402d741c], 4
je 0x14002f26b
lea r8, str.SuppressCursor_failed_n
lea rcx, str.CManagedPointingDevice::AcquireOrUnacquire
mov edx, 3
call fcn.14011a490
jmp 0x14002f26b
inc dword [rbx + 0x7c0]
mov edi, dword [rbx + 0x7c0]
mov dword [rbx + 0xf54], 1
test byte [0x1402d741c], 4
je 0x14002f26b
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x30], 0
lea r8, str._Acquired_at_t_d__new_cnt_d__dwSuppressType_d__eAcquireMode_d_n
lea rcx, str.CManagedPointingDevice::AcquireOrUnacquire
mov edx, 3
mov r9d, eax
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], edi
call fcn.14011a490
mov rdx, qword [rbx + 0x348]
mov rcx, rbx
call fcn.14002b760
test r15d, r15d
jne 0x14002f290
lea rcx, [rbx + 0x50]
call fcn.14000ae00
test al, al
je 0x14002f2c5
test ebp, ebp
jne 0x14002f2c5
test byte [0x1402d741c], 4
je 0x14002f2b4
lea r8, str.bFingerJustDown__d___or_CB_in_Default_mode__kill_timer._n
lea rcx, str.CManagedPointingDevice::CheckAndRunExtAction
mov r9d, r15d
mov edx, 3
call fcn.14011a490
mov rcx, qword [0x1402dd258]
lea rdx, [rsi + 0xa]
call qword [sym.imp.USER32.dll_KillTimer]
mov r15, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x90]
mov eax, dword [rsi + 0x28]
mov r12, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
add rsp, 0x70
pop r13
pop rsi
pop rbx
ret