Function at 0x4fe2f4
Capabilities:
Get graphical window text
Hide graphical window
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push 0
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x4fe6ec
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 8]
cmp byte [eax - 0x11], 0
je 0x4fe3cf
mov eax, dword [ebp + 8]
cmp byte [eax - 0x15c], 0
je 0x4fe3cf
call sub.user32.dll_GetForegroundWindow
mov edx, dword [ebp + 8]
mov dword [edx - 0x160], eax
push 0xff
mov eax, dword [ebp + 8]
add eax, 0xfffffea5
push eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
push eax
call sub.user32.dll_GetClassNameA
lea eax, [ebp - 8]
mov edx, dword [ebp + 8]
add edx, 0xfffffea5
mov ecx, 0xff
call fcn.0040674c
mov eax, dword [ebp - 8]
mov edx, 0x4fe704
call fcn.00406904
jne 0x4fe3cf
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x174]
sub eax, 8
je 0x4fe3cf
sub eax, 5
je 0x4fe3cf
add eax, 0xfffffffd
sub eax, 3
jb 0x4fe3cf
sub eax, 0x2e
je 0x4fe3cf
push 0
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x180]
push eax
call sub.user32.dll_EnableWindow
push 0
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
push eax
call sub.user32.dll_ShowWindow
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
mov edx, dword [ebp + 8]
mov dword [edx - 0x180], eax
mov eax, dword [ebp + 8]
cmp dword [eax - 0x174], 0x2c
jne 0x4fe4c3
mov dl, 1
mov eax, dword [0x42bb78]
call fcn.00431f0c
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4fe4bc
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
call sub.user32.dll_GetSystemMetrics
mov edx, eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
push 1
call sub.user32.dll_GetSystemMetrics
mov edx, eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x34]
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_GetDC
mov ebx, eax
push 0x40cc0020
push 0
push 0
push ebx
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
push eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x2c]
push eax
push 0
push 0
mov eax, dword [ebp - 4]
call fcn.004324e0
call fcn.0042dd20
push eax
call sub.gdi32.dll_BitBlt
push ebx
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_ReleaseDC
xor eax, eax
push ebp
push 0x4fe49c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00442c50
mov edx, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 8]
mov edx, 0x4fe714
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x50]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4fe4a6
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4fe4c3
mov eax, dword [ebp - 4]
call fcn.004055b0
ret
mov eax, dword [ebp + 8]
cmp byte [eax - 0x11], 0
je 0x4fe4f3
mov eax, dword [ebp + 8]
cmp dword [eax - 0x174], 0x76
jne 0x4fe4f3
push 0x5c
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x4fe4f3
mov eax, dword [ebp + 8]
push eax
mov eax, 0x4fe72c
call fcn.004fe298
pop ecx
mov eax, dword [ebp + 8]
cmp byte [eax - 0x11], 0
je 0x4fe6d1
mov eax, dword [ebp + 8]
cmp dword [eax - 0x174], 0x76
jne 0x4fe6c6
mov eax, dword [ebp + 8]
inc dword [eax - 0x184]
mov eax, dword [ebp + 8]
cmp dword [eax - 0x184], 5
jle 0x4fe6d1
mov eax, dword [ebp + 8]
cmp dword [eax - 0x180], 0
jne 0x4fe5d8
call sub.user32.dll_GetForegroundWindow
mov edx, dword [ebp + 8]
mov dword [edx - 0x160], eax
push 0xff
mov eax, dword [ebp + 8]
add eax, 0xfffffea5
push eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
push eax
call sub.user32.dll_GetWindowTextA
push 0x4fe730
mov eax, dword [ebp + 8]
add eax, 0xfffffea5
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
jne 0x4fe6b9
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
mov edx, dword [ebp + 8]
mov dword [edx - 0x180], eax
mov eax, dword [ebp + 8]
mov byte [eax - 0x15c], 1
push 1
mov ecx, 0x4fe748
mov edx, 0x4fe760
mov eax, 0x80000002
call fcn.004fdc5c
push 0
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x180]
push eax
call sub.user32.dll_EnableWindow
push 0
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x160]
push eax
call sub.user32.dll_ShowWindow
jmp 0x4fe6b9
push 5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x180]
push eax
call sub.user32.dll_ShowWindow
push 0xffffffffffffffff
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0x180]
push eax
call sub.user32.dll_EnableWindow
push 5
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_GetWindow
mov edx, dword [ebp + 8]
mov dword [edx - 0xc], eax
mov eax, dword [ebp + 8]
cmp dword [eax - 0xc], 0
je 0x4fe68e
push 0xff
mov eax, dword [ebp + 8]
add eax, 0xfffffea5
push eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0xc]
push eax
call sub.user32.dll_GetClassNameA
lea eax, [ebp - 0xc]
mov edx, dword [ebp + 8]
add edx, 0xfffffea5
mov ecx, 0xff
call fcn.0040674c
mov eax, dword [ebp - 0xc]
mov edx, 0x4fe704
call fcn.00406904
jne 0x4fe671
push 5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0xc]
push eax
call sub.user32.dll_ShowWindow
push 0xffffffffffffffff
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0xc]
push eax
call sub.user32.dll_EnableWindow
push 2
mov eax, dword [ebp + 8]
mov eax, dword [eax - 0xc]
push eax
call sub.user32.dll_GetWindow
mov edx, dword [ebp + 8]
mov dword [edx - 0xc], eax
mov eax, dword [ebp + 8]
cmp dword [eax - 0xc], 0
jne 0x4fe616
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax - 0x180], edx
mov eax, dword [ebp + 8]
mov byte [eax - 0x15c], 0
push 0
mov ecx, 0x4fe748
mov edx, 0x4fe760
mov eax, 0x80000002
call fcn.004fdc5c
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax - 0x184], edx
jmp 0x4fe6d1
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax - 0x184], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4fe6f3
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.004064f0
ret