Function at 0x4226e5
Capabilities:
Check for unmoving mouse cursor
Find taskbar
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
push ebx
xor ebx, ebx
cmp dword [0x4ca4fc], ebx
push esi
push edi
mov dword [ebp - 0x14], ecx
jne 0x422707
cmp dword [0x4c9e40], ebx
je 0x4228a8
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and eax, 1
jne 0x422722
mov dword [0x4cadbc], ebx
jmp 0x4228a8
cmp dword [0x4cadbc], ebx
jne 0x4228a8
mov dword [0x4cadbc], eax
lea eax, [ebp - 0x2c]
push eax
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x2c]
push eax
call fcn.0042217e
mov esi, eax
pop ecx
cmp esi, ebx
mov dword [ebp - 8], esi
je 0x4228a8
mov edi, dword [sym.imp.USER32.dll_GetWindowLongW]
mov dword [ebp - 4], esi
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_GetParent]
cmp eax, ebx
mov dword [ebp - 4], eax
je 0x422789
push 0xfffffffffffffff0
push esi
call edi
test eax, 0xc00000
jne 0x422789
mov eax, dword [ebp - 4]
mov dword [ebp - 8], eax
mov esi, eax
jmp 0x422763
push 0xfffffffffffffff0
push esi
call edi
test eax, 0xc00000
je 0x4228a8
lea eax, [ebp - 0x44]
mov dword [ebp - 0x44], ebx
push eax
push esi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
call dword [sym.imp.USER32.dll_GetWindowRect]
cmp dword [0x4c9e40], ebx
je 0x422843
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], ebx
push eax
push esi
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], ebx
call dword [sym.imp.USER32.dll_GetClientRect]
mov edi, dword [sym.imp.USER32.dll_ClientToScreen]
lea eax, [ebp - 0x54]
push eax
push esi
call edi
test eax, eax
je 0x4227eb
lea eax, [ebp - 0x4c]
push eax
push esi
call edi
lea esi, [ebp - 0x44]
lea edi, [ebp - 0x64]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x50]
sub dword [ebp - 0x4c], 0x34
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x58], eax
sub eax, ecx
cmp eax, 0x1e
jge 0x42280f
add ecx, 0x1e
mov dword [ebp - 0x58], ecx
push dword [ebp - 0x28]
lea eax, [ebp - 0x64]
push dword [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x422840
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
je 0x422840
push dword [ebp - 8]
mov ecx, dword [ebp - 0x14]
call fcn.0042239e
jmp 0x422c3e
mov esi, dword [ebp - 8]
cmp dword [0x4ca4fc], ebx
je 0x4228a8
cmp dword [0x4a2bcc], 6
push 0x18
pop ecx
push 0x16
pop eax
jb 0x422860
push 0x34
pop ecx
push 0x21
pop eax
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x14]
sub edx, ecx
mov ecx, dword [ebp - 0x40]
add ecx, eax
cmp esi, dword [edi + 4]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x38], ecx
je 0x4228a8
push dword [ebp - 0x28]
lea eax, [ebp - 0x44]
push dword [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4228a8
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
push esi
mov ecx, edi
je 0x4228a3
call fcn.0042239e
jmp 0x4228a8
call fcn.00420b21
cmp dword [0x4ca4f8], ebx
je 0x422c3e
test byte [0x4a1de8], 1
jne 0x4228ce
or byte [0x4a1de8], 1
call fcn.00443f27
mov dword [0x4a1de4], eax
test byte [0x4a1de8], 2
jne 0x4228e8
or byte [0x4a1de8], 2
call fcn.00443f27
mov dword [0x4a1de0], eax
mov eax, dword [0x4ca50c]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x24], eax
mov eax, dword [0x45a030]
mov dword [ebp - 0x20], eax
mov eax, dword [0x4ca510]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0xc]
push eax
mov dword [ebp - 0x1c], ebx
call fcn.00430ab1
pop ecx
mov dword [ebp - 8], eax
pop ecx
push ebx
push ebx
push 0x1018
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
cmp eax, ebx
je 0x42293a
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x42293a
push 1
pop esi
jmp 0x42293c
xor esi, esi
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov edi, dword [sym.imp.USER32.dll_FindWindowW]
cmp esi, ebx
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
je 0x4229a2
call fcn.00443f27
mov dword [0x4a1de4], eax
mov eax, dword [ebp - 0x34]
mov dword [0x4cadc0], 0x32
mov dword [0x4a1dd8], eax
mov eax, dword [ebp - 0x30]
mov dword [0x4a1ddc], eax
lea eax, [ebp - 0x34]
push eax
mov dword [0x4cadc4], 0xfa
call fcn.0042217e
cmp eax, dword [ebp - 8]
pop ecx
jne 0x4229c4
call fcn.00443f27
mov dword [0x4a1de4], eax
jmp 0x422a32
mov eax, dword [0x4a1dd8]
cmp eax, dword [ebp - 0x34]
jne 0x422960
mov eax, dword [0x4a1ddc]
cmp eax, dword [ebp - 0x30]
jne 0x422960
dec dword [0x4cadc0]
dec dword [0x4cadc4]
jmp 0x422a32
cmp dword [ebp - 0xc], eax
jne 0x422a32
cmp dword [0x4ca514], ebx
je 0x422a32
call fcn.00443f27
push 5
mov dword [0x4a1de4], eax
push dword [ebp - 8]
call esi
push ebx
push str.Shell_TrayWnd
call edi
cmp dword [0x4ca518], ebx
mov dword [ebp - 4], eax
je 0x422a0a
cmp eax, ebx
je 0x422a0a
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x422a0a
push ebx
push dword [ebp - 4]
call esi
push ebx
push str.Shell_SecondaryTrayWnd
call edi
cmp dword [0x4ca518], ebx
mov dword [ebp - 4], eax
je 0x422a32
cmp eax, ebx
je 0x422a32
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x422a32
push ebx
push dword [ebp - 4]
call esi
push ebx
push str.Shell_TrayWnd
call edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], ebx
cmp dword [0x4ca518], ebx
mov dword [ebp - 0x10], ebx
je 0x422a91
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_GetWindowRect]
push dword [ebp - 0x30]
lea eax, [ebp - 0x64]
push dword [ebp - 0x34]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
push dword [ebp - 4]
test eax, eax
je 0x422aaa
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x422a80
push 5
push dword [ebp - 4]
call esi
call fcn.00443f27
mov dword [0x4a1de0], eax
mov dword [ebp - 0x10], 1
cmp dword [ebp - 0x18], ebx
jne 0x422adb
push ebx
push str.Shell_SecondaryTrayWnd
mov dword [ebp - 0x18], 1
call edi
mov dword [ebp - 4], eax
jmp 0x422a40
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x422a91
push dword [ebp - 8]
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x422a91
call fcn.00443f27
sub eax, dword [0x4a1de0]
cmp eax, 0xbb8
jle 0x422a8a
push ebx
push dword [ebp - 4]
call esi
jmp 0x422a91
cmp dword [ebp - 0x20], ebx
mov dword [ebp - 0x18], ebx
je 0x422af6
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edi, 0x8000
test edi, eax
jne 0x422b36
jmp 0x422afb
mov edi, 0x8000
cmp dword [ebp - 0x24], ebx
je 0x422b0c
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test edi, eax
jne 0x422b36
cmp dword [ebp - 0x28], ebx
je 0x422b1d
push 4
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test edi, eax
jne 0x422b36
cmp dword [0x4ca4f4], ebx
je 0x422bc0
mov dword [0x4ca4f4], ebx
mov dword [ebp - 0x18], 1
push dword [ebp - 8]
mov edi, dword [sym.imp.USER32.dll_IsWindowVisible]
call edi
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x34]
push eax
call fcn.0042217e
cmp dword [ebp - 0x28], ebx
pop ecx
jne 0x422baf
cmp eax, dword [ebp - 0xc]
je 0x422b5d
cmp dword [ebp - 0x18], ebx
je 0x422bc6
mov dword [0x4cadc0], 0x32
mov dword [0x4cadc4], 0xfa
call fcn.00443f27
push 5
mov dword [0x4a1de4], eax
push dword [ebp - 8]
call esi
cmp dword [0x4ca518], ebx
je 0x422c3e
cmp dword [ebp - 4], ebx
je 0x422c3e
push dword [ebp - 4]
call edi
test eax, eax
jne 0x422c3e
push ebx
push dword [ebp - 4]
call esi
jmp 0x422c3e
cmp eax, dword [ebp - 8]
jne 0x422bc6
call fcn.00443f27
mov dword [0x4a1de4], eax
jmp 0x422bc6
mov edi, dword [sym.imp.USER32.dll_IsWindowVisible]
call fcn.00443f27
mov ecx, dword [0x45a034]
sub eax, dword [0x4a1de4]
imul ecx, ecx, 0x3e8
cmp eax, ecx
mov dword [ebp - 0x28], eax
jle 0x422c10
push dword [ebp - 8]
call edi
test eax, eax
je 0x422bf3
push ebx
push dword [ebp - 8]
call esi
cmp dword [0x4ca518], ebx
je 0x422c3e
cmp dword [ebp - 4], ebx
je 0x422c3e
cmp dword [ebp - 0x10], ebx
jne 0x422c3e
push dword [ebp - 4]
call edi
test eax, eax
je 0x422c3e
jmp 0x422ba4
mov eax, dword [ebp - 0x14]
push 0x3f1
push dword [eax + 4]
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ecx, dword [0x45a034]
push ebx
imul ecx, ecx, 0x3e8
sub ecx, dword [ebp - 0x28]
push ecx
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebx
leave
ret