Function at 0x406590
Capabilities:
Check for unmoving mouse cursor
Find taskbar
Hide graphical window
Hide the windows taskbar
Log keystrokes via polling
Print debug messages

Disassembly:
mov al, byte [0x42901c]
sub esp, 0xa08
test al, 1
jne 0x4065b0
or al, 1
mov byte [0x42901c], al
call sub.MSVCRT.dll_clock
mov dword [0x429018], eax
mov eax, dword [0x418234]
mov ecx, dword [0x41822c]
mov edx, dword [0x418238]
push ebx
push ebp
mov dword [esp + 0x20], eax
push esi
mov esi, dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [esp + 0x14]
push edi
push eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], edx
call esi
lea ecx, [esp + 0x30]
lea edx, [esp + 0x20]
xor ebx, ebx
push ecx
push edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], ebx
call fcn.00404530
add esp, 8
mov dword [esp + 0x10], eax
push ebx
push ebx
push 0x1018
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0x14], eax
mov eax, dword [0x418220]
cmp eax, ebx
je 0x4066f5
lea eax, [esp + 0x18]
push eax
call esi
lea ecx, [esp + 0x18]
push ecx
call fcn.00406480
mov edx, dword [0x427f18]
mov ebp, dword [sym.imp.USER32.dll_GetClassNameW]
mov esi, eax
mov ecx, 0x1ff
xor eax, eax
lea edi, [esp + 0x220]
add esp, 4
mov dword [esp + 0x218], edx
rep stosd dword es:[edi], eax
lea eax, [esp + 0x218]
push 0x7c
push eax
push esi
call ebp
lea ecx, [esp + 0x218]
push str.32768
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x4066f5
lea edx, [esp + 0x34]
push edx
push esi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
dec eax
dec ecx
push ecx
push eax
call dword [sym.imp.USER32.dll_WindowFromPoint]
mov edi, dword [esp + 0x10]
mov edx, eax
mov eax, dword [esp + 0x20]
cmp edi, edx
je 0x40670d
cmp eax, edx
je 0x40670d
test ebx, ebx
jne 0x4066f5
mov eax, dword [0x427f18]
mov ecx, 0x1ff
mov dword [esp + 0x218], eax
xor eax, eax
lea edi, [esp + 0x21c]
push 0x7c
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x21c]
mov ebx, 1
push ecx
push edx
mov esi, edx
call ebp
lea edx, [esp + 0x218]
push str.32768
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x40667a
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4067a2
call sub.MSVCRT.dll_clock
mov dword [0x429940], eax
jmp 0x406756
push eax
lea eax, [esp + 0x21c]
push eax
push edx
push edi
push esi
lea ecx, [esp + 0x58]
push str.h__d_listview_hwnd:_d_P:_d__s_desk:_d_n
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x1c
lea edx, [esp + 0x44]
push edx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
call sub.MSVCRT.dll_clock
push edi
mov dword [0x429940], eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x406756
push eax
push edi
call fcn.00406560
add esp, 8
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x18]
mov dword [0x429010], eax
push edx
mov dword [0x429014], ecx
mov dword [0x429fc4], 0x32
mov dword [0x429fc8], 0xfa
call fcn.00406480
mov esi, dword [esp + 0x14]
add esp, 4
cmp eax, esi
jne 0x406857
call sub.MSVCRT.dll_clock
mov dword [0x429940], eax
jmp 0x4067e1
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [0x429010]
mov eax, dword [esp + 0x18]
cmp ecx, eax
jne 0x406756
mov edx, dword [0x429014]
mov eax, dword [esp + 0x1c]
cmp edx, eax
jne 0x406756
mov ecx, dword [0x429fc4]
mov eax, dword [0x429fc8]
dec ecx
dec eax
mov dword [0x429fc4], ecx
mov dword [0x429fc8], eax
mov edi, dword [sym.imp.USER32.dll_FindWindowW]
mov ebp, dword [sym.imp.USER32.dll_ShowWindow]
push 0
push str.Shell_TrayWnd
call edi
mov ebx, eax
xor esi, esi
mov eax, dword [0x429f8c]
mov dword [esp + 0x14], 0
test eax, eax
je 0x406955
lea eax, [esp + 0x34]
push eax
push ebx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
lea eax, [esp + 0x38]
push edx
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
push ebx
je 0x40690a
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x406848
push 5
push ebx
call ebp
call sub.MSVCRT.dll_clock
mov dword [0x429018], eax
jmp 0x40694d
cmp dword [esp + 0x20], eax
jne 0x4067e1
mov eax, dword [0x429f80]
test eax, eax
je 0x4067e1
call sub.MSVCRT.dll_clock
push 1
push esi
mov dword [0x429940], eax
call fcn.00406560
mov edi, dword [sym.imp.USER32.dll_FindWindowW]
add esp, 8
push 0
push str.Shell_TrayWnd
call edi
mov esi, eax
mov eax, dword [0x429f8c]
test eax, eax
je 0x4068be
test esi, esi
je 0x4068be
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x4068be
mov eax, dword [0x429f84]
test eax, eax
je 0x4068be
mov ebp, dword [sym.imp.USER32.dll_ShowWindow]
push 5
push esi
call ebp
jmp 0x4068c4
mov ebp, dword [sym.imp.USER32.dll_ShowWindow]
push 0
push str.Shell_SecondaryTrayWnd
call edi
mov esi, eax
mov eax, dword [0x429f8c]
test eax, eax
je 0x4067ed
test esi, esi
je 0x4067ed
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x4067ed
mov eax, dword [0x429f84]
test eax, eax
je 0x4067ed
push 5
push esi
call ebp
jmp 0x4067ed
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x406955
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x406955
call sub.MSVCRT.dll_clock
mov ecx, dword [0x418240]
mov edx, dword [0x429018]
sub eax, edx
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea edx, [ecx + ecx*4]
shl edx, 3
cmp eax, edx
jle 0x40694d
push 0
push ebx
call ebp
jmp 0x406955
mov dword [esp + 0x14], 1
test esi, esi
jne 0x40696e
push 0
push str.Shell_SecondaryTrayWnd
mov esi, 1
call edi
mov ebx, eax
jmp 0x4067fa
mov eax, dword [esp + 0x2c]
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor esi, esi
xor ebp, ebp
test eax, eax
je 0x406990
push 1
call edi
test ah, 0x80
je 0x406990
mov esi, 1
jmp 0x4069fc
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4069a8
push 2
call edi
test ah, 0x80
je 0x4069a8
mov esi, 1
jmp 0x4069fc
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4069c0
push 4
call edi
test ah, 0x80
je 0x4069c0
mov esi, 1
jmp 0x4069fc
mov eax, dword [0x429f7c]
test eax, eax
je 0x4069e2
push 0x5b
call edi
test ah, 0x80
je 0x4069e2
push 0x44
call edi
test ah, 0x80
je 0x4069e2
mov esi, 1
jmp 0x4069fc
mov eax, dword [0x429f90]
test eax, eax
je 0x4069fc
mov esi, 1
mov dword [0x429f90], 0
mov ebp, esi
mov eax, dword [0x429f48]
test eax, eax
je 0x406a4a
push 4
call edi
mov edi, dword [esp + 0x10]
test ah, 0x80
je 0x406a4e
push edi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x406a4e
push 0
push edi
call fcn.00406560
add esp, 8
call sub.MSVCRT.dll_clock
mov ecx, eax
mov eax, dword [0x418240]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
sub ecx, edx
mov dword [0x429940], ecx
jmp 0x406a4e
mov edi, dword [esp + 0x10]
test esi, esi
je 0x406ae8
push edi
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov esi, eax
lea eax, [esp + 0x18]
push eax
call fcn.00406480
add esp, 4
test esi, esi
jne 0x406ada
cmp eax, dword [esp + 0x20]
je 0x406a7a
test ebp, ebp
je 0x406ae8
mov dword [0x429fc4], 0x32
mov dword [0x429fc8], 0xfa
call sub.MSVCRT.dll_clock
push 1
push edi
mov dword [0x429940], eax
call fcn.00406560
mov eax, dword [0x429f8c]
add esp, 8
test eax, eax
je 0x406b89
test ebx, ebx
je 0x406b89
push ebx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x406b89
push eax
push ebx
call dword [sym.imp.USER32.dll_ShowWindow]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa08
ret
cmp eax, edi
jne 0x406ae8
call sub.MSVCRT.dll_clock
mov dword [0x429940], eax
call sub.MSVCRT.dll_clock
mov ecx, dword [0x418240]
mov ebp, dword [0x429940]
sub eax, ebp
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
shl ecx, 3
cmp eax, ecx
jle 0x406b53
mov esi, dword [sym.imp.USER32.dll_IsWindowVisible]
push edi
call esi
test eax, eax
je 0x406b23
push 0
push edi
call fcn.00406560
add esp, 8
mov eax, dword [0x429f8c]
test eax, eax
je 0x406b89
test ebx, ebx
je 0x406b89
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x406b89
push ebx
call esi
test eax, eax
je 0x406b89
push 0
push ebx
call dword [sym.imp.USER32.dll_ShowWindow]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa08
ret
sub ecx, eax
push 0
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
fmul qword [0x40f3c0]
call sub.MSVCRT.dll__ftol
mov ecx, dword [0x429f60]
push eax
push 0x402
push 0x40c
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa08
ret