Function at 0x418960
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
test edi, edi
jne 0x418988
call fcn.0040d800
neg eax
pop edi
sbb eax, eax
and eax, 4
add eax, 0xa
pop esi
mov esp, ebp
pop ebp
ret 8
push ebx
mov ebx, dword [edi + 0x18]
cmp ebx, 0xc
je 0x4189cf
test byte [0x652fc0], 4
je 0x4189c4
push dword [edi + 0x20]
call fcn.004a3cb0
add esp, 4
push eax
push ebx
call fcn.0046d030
add esp, 4
push eax
push str.cur_strokestate_is__s_for_zone__s___return_same_strokestate_n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0x14
mov eax, ebx
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
lea ecx, [esi + 0x30]
call fcn.00405910
test al, al
jne 0x418a20
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x1b
call ebx
test ax, ax
js 0x4189f3
push 0xd
call ebx
test ax, ax
jns 0x418a20
lea eax, [edi + 0xa]
push eax
push dword [0x6579b8]
call dword [sym.imp.USER32.dll_KillTimer]
push edi
mov ecx, esi
call fcn.00418680
push eax
lea ecx, [edi + 4]
call fcn.0046c390
mov eax, dword [edi + 0x18]
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebp + 0xc]
mov ecx, esi
push ebx
call fcn.00427b70
mov ecx, ebx
mov dword [ebp - 8], eax
call fcn.00427070
test eax, eax
je 0x418a4f
lea ecx, [esi + 0xdd8]
call fcn.00427070
mov dword [ebp + 8], 1
test eax, eax
je 0x418a56
mov dword [ebp + 8], 0
test byte [0x652fc0], 4
je 0x418abe
mov ecx, dword [esi + 0xddc]
test ecx, ecx
jne 0x418a6e
mov dword [ebp - 0xc], ecx
jmp 0x418a83
mov eax, dword [ecx]
lea edx, [ebp - 0x10]
push edx
push 0x100003e2
push ecx
call dword [eax + 0xc]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebx + 4]
test ecx, ecx
jne 0x418a8e
xor eax, eax
jmp 0x418aa0
mov eax, dword [ecx]
lea edx, [ebp - 4]
push edx
push 0x100003e2
push ecx
call dword [eax + 0xc]
mov eax, dword [ebp - 4]
push dword [ebp + 8]
push dword [ebp - 8]
push dword [ebp - 0xc]
push eax
push str.CurID_d__LastID_d__Tap_d__Btn_d_n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0x1c
lea ecx, [esi + 0x30]
call fcn.00405910
test al, al
jne 0x418b47
cmp dword [ebp - 8], 0
jne 0x418ad6
cmp dword [ebp + 8], 0
je 0x418b47
test byte [0x652fc0], 4
je 0x418af3
push str.tap_or_btn_click__run_extra_action__n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0xc
lea eax, [edi + 0xa]
push eax
push dword [0x6579b8]
call dword [sym.imp.USER32.dll_KillTimer]
cmp dword [esi + 0xd80], 0
je 0x418b35
test byte [0x652fc0], 4
je 0x418b29
push str.Delayed_Ext_Action_when_Btn_clicked._n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0xc
push dword [esi + 0xd80]
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
mov ecx, edi
call fcn.004a2ca0
push eax
lea ecx, [edi + 4]
call fcn.0046c390
mov ecx, dword [edi + 0xdc]
push 0
push ebx
add ecx, 0x10
call fcn.004a5cf0
mov ecx, dword [esi + 0xa74]
mov dword [ebp - 0xc], eax
test ecx, ecx
je 0x418b6f
mov edx, dword [ecx]
call dword [edx + 0xc]
mov dword [ebp - 4], eax
jmp 0x418b76
mov dword [ebp - 4], 0
lea ecx, [esi + 0x30]
call fcn.00405910
test al, al
je 0x418bfa
cmp dword [ebp - 4], 0
je 0x418ce1
cmp dword [esi + 0xadc], 0
jne 0x418c29
mov ecx, dword [ebp - 0xc]
call fcn.004056b0
test al, al
jne 0x418bba
push dword [ebp - 0xc]
mov ecx, esi
call fcn.004210a0
mov ecx, eax
call fcn.004056b0
test al, al
jne 0x418c29
mov ecx, dword [edi + 0xdc]
add ecx, 0x10
call fcn.004a5c20
test eax, eax
jne 0x418bd7
mov ecx, edi
call fcn.004326d0
test eax, eax
jne 0x418c29
mov ecx, ebx
call fcn.004271f0
test eax, eax
jne 0x418ce1
lea ecx, [esi + 0xdd8]
call fcn.004271f0
test eax, eax
jne 0x418c29
jmp 0x418ce1
mov ecx, dword [edi + 0xdc]
add ecx, 0x10
call fcn.004a5c20
test eax, eax
jne 0x418ce1
mov ecx, dword [edi + 0xdc]
add ecx, 0xcc
call fcn.004a5c20
test eax, eax
je 0x418ce1
mov ecx, dword [esi + 0x2e0]
test ecx, ecx
je 0x418ce1
mov dword [ebp - 0x10], 0
lea edx, [ebp - 0x10]
mov dword [ebp - 8], 0
mov eax, dword [ecx]
push edx
push 0x12
call dword [eax + 0x20]
mov ecx, dword [esi + 0x2e0]
lea edx, [ebp - 8]
push edx
push 0x11
mov eax, dword [ecx]
call dword [eax + 0x20]
mov eax, dword [ebp - 8]
test eax, eax
je 0x418c8f
push eax
mov ecx, ebx
call fcn.004084e0
push eax
push dword [ebp - 0x10]
call fcn.00405f40
add esp, 0xc
test eax, eax
jne 0x418c8f
push dword [esi + 0x2e0]
mov ecx, esi
call fcn.00432100
jmp 0x418ce1
push 0x4291f0
push dword [esi + 0xad8]
lea eax, [edi + 0xa]
push eax
push dword [0x6579b8]
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [esi + 0xadc], 0
test byte [0x652fc0], 4
je 0x418ce1
push dword [esi + 0xad8]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push dword [ebp - 8]
push str.Need_RunExtAction:_finger_up__time__d___t0_d__set_timer_with_m_lExtActionWaitingTime_d_n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0x18
lea ecx, [esi + 0x30]
xor ebx, ebx
call fcn.00405910
test al, al
je 0x418d46
cmp dword [ebp - 4], ebx
je 0x418d82
cmp dword [ebp + 8], ebx
jne 0x418d35
mov ecx, dword [edi + 0xdc]
add ecx, 0x10
call fcn.004a5c20
test eax, eax
je 0x418d1a
mov ecx, edi
call fcn.004326d0
test eax, eax
je 0x418d35
mov ecx, dword [ebp + 0xc]
call fcn.004271f0
test eax, eax
je 0x418d80
lea ecx, [esi + 0xdd8]
call fcn.004271f0
test eax, eax
jne 0x418d80
mov ebx, 1
mov dword [esi + 0xadc], 0
jmp 0x418d82
mov ecx, dword [edi + 0xdc]
add ecx, 0x10
call fcn.004a5c20
test eax, eax
je 0x418d80
mov ecx, dword [edi + 0xdc]
add ecx, 0xcc
call fcn.004a5c20
test eax, eax
jne 0x418d80
mov ecx, dword [ebp - 0xc]
call fcn.00405f00
test al, al
jne 0x418d80
mov ebx, 1
jmp 0x418d82
xor ebx, ebx
cmp dword [esi + 0x2e0], 0
je 0x418e84
mov ecx, dword [edi + 0xdc]
add ecx, 0x10
call fcn.004a5c20
test eax, eax
je 0x418e84
mov ecx, dword [esi + 0x2e0]
push 0
push 0
call fcn.0049ece0
test eax, 0x40000
je 0x418e84
push 0
lea ecx, [esi + 4]
push str.Right_Edge_Pull
call fcn.0041c6d0
test eax, eax
je 0x418e18
push dword [ebp + 0xc]
mov ecx, eax
call fcn.00419140
cmp eax, 1
jne 0x418e18
test byte [0x652fc0], 4
je 0x418dfe
push str.easactive__acquire_device_and_update_interlock_zone__n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0xc
push 0
push 1
push 1
mov ecx, esi
call fcn.00417ec0
push dword [esi + 0x2e0]
mov ecx, esi
call fcn.00432100
push 0
push str.4FVertical_Scrolling
lea ecx, [esi + 4]
call fcn.0041c6d0
mov dword [ebp + 8], eax
test eax, eax
je 0x418e84
push 0
push 0
mov ecx, eax
call fcn.0049f0a0
test al, 2
je 0x418e84
push dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
call fcn.00419140
cmp eax, 1
jne 0x418e84
test byte [0x652fc0], 4
je 0x418e6a
push str.easactive__acquire_device_at_6923__n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0xc
push 0
push 1
push 1
mov ecx, esi
call fcn.00417ec0
push dword [esi + 0x2e0]
mov ecx, esi
call fcn.00432100
test ebx, ebx
jne 0x418e99
lea ecx, [esi + 0x30]
call fcn.00405910
test al, al
je 0x418ec7
cmp dword [ebp - 4], ebx
jne 0x418ec7
test byte [0x652fc0], 4
je 0x418eb7
push ebx
push str.bFingerJustDown__d___or_CB_in_Default_mode__kill_timer._n
push 3
push str.CManagedPointingDevice::CheckAndRunExtAction
call fcn.004cb3a0
add esp, 0x10
lea eax, [edi + 0xa]
push eax
push dword [0x6579b8]
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [edi + 0x18]
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8