Function at 0x4d4a82
Capabilities:
Check for unmoving mouse cursor
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff78
push ebx
push esi
push edi
mov ebx, dword [ebp + 0xc]
cmp dword [ebp + 8], 0
je 0x4d4aad
mov eax, dword [ebp + 8]
cmp byte [eax], 0
je 0x4d4aad
push dword [ebp + 8]
call fcn.0054c2d0
pop ecx
cmp eax, 0x5a
jb 0x4d4ab4
xor eax, eax
jmp 0x4d5307
test ebx, ebx
je 0x4d4ac2
push ebx
call fcn.0051df69
test eax, eax
jne 0x4d4ac9
xor eax, eax
jmp 0x4d5307
push dword [ebx + 0xb6c]
call fcn.00412773
test eax, eax
jne 0x4d4adf
xor eax, eax
jmp 0x4d5307
cmp dword [ebx + 0x6bc], 1
je 0x4d4aef
xor eax, eax
jmp 0x4d5307
xor edx, edx
mov dword [ebp - 8], edx
xor ecx, ecx
mov dword [ebp - 0xc], ecx
xor eax, eax
mov dword [ebp - 0x14], eax
lea edx, [ebx + 0x67c]
push edx
push 0
push dword [ebp + 8]
call fcn.0048e640
mov edi, eax
test edi, edi
je 0x4d4b4c
mov eax, dword [edi + 0x1c]
mov dword [ebp - 0xc], eax
mov edx, dword [edi + 0x20]
mov dword [ebp - 0x14], edx
mov esi, dword [ebx + 0x674]
jmp 0x4d4b2f
mov esi, dword [esi + 0x40]
inc dword [ebp - 8]
test esi, esi
je 0x4d4b37
cmp edi, esi
jne 0x4d4b29
test esi, esi
jne 0x4d4b4c
xor eax, eax
mov dword [ebp - 8], eax
xor edx, edx
mov dword [ebp - 0xc], edx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
xor edi, edi
mov eax, dword [ebp + 0x10]
sub eax, 1
jb 0x4d4b6d
je 0x4d4d96
dec eax
je 0x4d52d4
dec eax
je 0x4d52f0
jmp 0x4d5305
cmp dword [ebp - 0xc], 0
je 0x4d4d8e
test edi, edi
je 0x4d4d8e
mov edx, dword [ebx + 0xb6c]
cmp dword [edx + 0x1bf8], 0
je 0x4d4c0a
push 0
push dword [ebp - 8]
push 0x187
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov esi, eax
cmp esi, 0xffffffff
je 0x4d4bbd
test esi, esi
jle 0x4d4bbd
mov eax, dword [ebx + 0xb6c]
or dword [eax + 0x1bf8], 4
jmp 0x4d4bca
mov edx, dword [ebx + 0xb6c]
or dword [edx + 0x1bf8], 8
push 0
push dword [ebp - 8]
push 0x199
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [0x569b24], eax
mov eax, dword [0x569b24]
cmp eax, 0xffffffff
je 0x4d4bf7
test eax, eax
jl 0x4d4bf7
cmp eax, 0xf
jle 0x4d4c01
mov dword [0x569b24], 0x63
mov edx, dword [ebp - 0x14]
mov dword [0x569b28], edx
mov dword [ebp - 0x24], 0xffffffff
cmp dword [0x56cef0], 0
je 0x4d4c90
mov ecx, dword [ebx]
cmp ecx, dword [0x56cef4]
jne 0x4d4c90
cmp dword [ebx + 0x6ec], 0
je 0x4d4c90
push 1
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
je 0x4d4c5b
push 2
call sub.USER32.dll_GetKeyState
movsx edx, ax
and edx, 0x8000
cmp edx, 0x8000
jne 0x4d4c90
lea ecx, [ebp - 0x24]
push ecx
call sub.USER32.dll_GetCursorPos
lea eax, [ebp - 0x24]
push eax
push dword [ebx + 0x820]
call sub.USER32.dll_ScreenToClient
movzx edx, word [ebp - 0x20]
shl edx, 0x10
or edx, 1
push edx
push 0
push 0x202
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0x18e
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x18], eax
push 0
push 0
push 0x19f
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x1c], eax
push 0
push 0
push 0xb
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push dword [ebp - 8]
push 0x182
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp - 0x18]
jg 0x4d4cfa
dec dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0
jge 0x4d4cfa
xor eax, eax
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 8]
cmp edx, dword [ebp - 0x1c]
jg 0x4d4d10
dec dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0
jge 0x4d4d10
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x18]
push ebx
call fcn.004d4a24
push 0
push dword [ebp - 0x18]
push 0x197
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
cmp dword [ebp - 0x1c], 0xffffffff
je 0x4d4d4d
push 0
push dword [ebp - 0x1c]
push 0x19e
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 1
push 0xb
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 0
push dword [ebx + 0x820]
call sub.USER32.dll_InvalidateRect
push edi
push dword [ebx + 0x674]
call fcn.004c6cb6
mov dword [ebx + 0x674], eax
add ebx, 0x67c
push ebx
push dword [ebp + 8]
call fcn.0048e6dc
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
cmp dword [ebp + 0x14], 0
jne 0x4d4da4
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
cmp dword [ebp - 0xc], 0
je 0x4d4ded
cmp dword [ebp + 0x14], 0
jle 0x4d4dc8
mov edx, dword [ebp - 0xc]
and edx, dword [ebp + 0x14]
je 0x4d4dc0
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
mov edx, dword [ebp - 0xc]
add dword [ebp + 0x14], edx
jmp 0x4d4dfb
mov ecx, dword [ebp + 0x14]
mov eax, ecx
neg ecx
mov dword [ebp + 0x14], ecx
mov edx, dword [ebp - 0xc]
and edx, dword [ebp + 0x14]
jne 0x4d4de2
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
mov edx, dword [ebp - 0xc]
sub edx, dword [ebp + 0x14]
mov dword [ebp + 0x14], edx
jmp 0x4d4dfb
cmp dword [ebp + 0x14], 0
jge 0x4d4dfb
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
mov dword [ebp - 0x24], 0xffffffff
cmp dword [0x56cef0], 0
je 0x4d4e81
mov edx, dword [ebx]
cmp edx, dword [0x56cef4]
jne 0x4d4e81
cmp dword [ebx + 0x6ec], 0
je 0x4d4e81
push 1
call sub.USER32.dll_GetKeyState
movsx ecx, ax
and ecx, 0x8000
cmp ecx, 0x8000
je 0x4d4e4c
push 2
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
jne 0x4d4e81
lea edx, [ebp - 0x24]
push edx
call sub.USER32.dll_GetCursorPos
lea ecx, [ebp - 0x24]
push ecx
push dword [ebx + 0x820]
call sub.USER32.dll_ScreenToClient
movzx eax, word [ebp - 0x20]
shl eax, 0x10
or eax, 1
push eax
push 0
push 0x202
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0x18e
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x18], eax
push 0
push 0
push 0x19f
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x1c], eax
push 0
push 0
push 0xb
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
cmp dword [ebp - 0xc], 0
je 0x4d4f93
test edi, edi
je 0x4d4f93
mov edx, dword [ebx + 0xb6c]
cmp dword [edx + 0x1bf8], 0
je 0x4d4f5d
push 0
push dword [ebp - 8]
push 0x187
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov esi, eax
cmp esi, 0xffffffff
je 0x4d4f10
test esi, esi
jle 0x4d4f10
mov eax, dword [ebx + 0xb6c]
or dword [eax + 0x1bf8], 4
jmp 0x4d4f1d
mov edx, dword [ebx + 0xb6c]
or dword [edx + 0x1bf8], 8
push 0
push dword [ebp - 8]
push 0x199
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov dword [0x569b24], eax
mov eax, dword [0x569b24]
cmp eax, 0xffffffff
je 0x4d4f4a
test eax, eax
jl 0x4d4f4a
cmp eax, 0xf
jle 0x4d4f54
mov dword [0x569b24], 0x63
mov edx, dword [ebp - 0x14]
mov dword [0x569b28], edx
push 0
push dword [ebp - 8]
push 0x182
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push edi
push dword [ebx + 0x674]
call fcn.004c6cb6
mov dword [ebx + 0x674], eax
lea ecx, [ebx + 0x67c]
push ecx
push dword [ebp + 8]
call fcn.0048e6dc
xor eax, eax
mov dword [ebp - 4], eax
mov esi, 1
mov eax, dword [ebx + 0xb6c]
lea edx, [eax + 0x18dc]
mov ecx, dword [ebx + 0xb6c]
lea eax, [ecx + 0x1878]
jmp 0x4d4fce
mov ecx, dword [edx]
mov edi, ecx
and edi, dword [ebp + 0x14]
je 0x4d4fca
mov esi, ecx
movzx eax, byte [eax]
mov dword [ebp - 4], eax
jmp 0x4d4fd3
add edx, 4
inc eax
cmp byte [eax], 0
jne 0x4d4fb7
xor edx, edx
mov dword [ebp - 8], edx
mov edi, dword [ebx + 0x674]
test edi, edi
je 0x4d500c
mov eax, dword [edi + 0x1c]
mov edx, esi
add edx, edx
cmp eax, edx
jge 0x4d5002
test eax, esi
je 0x4d500c
push dword [edi]
push dword [ebp + 8]
call fcn.0054c494
add esp, 8
test eax, eax
jl 0x4d500c
inc dword [ebp - 8]
mov edi, dword [edi + 0x40]
test edi, edi
jne 0x4d4fe2
cmp dword [ebp - 4], 0
je 0x4d502e
push dword [ebp + 8]
push dword [ebp - 4]
push 0x569b44
lea ecx, [ebp - 0x88]
push ecx
call sub.USER32.dll_wsprintfA
add esp, 0x10
jmp 0x4d5058
mov eax, dword [ebp + 8]
push edi
lea esi, [ebp - 0x88]
mov edi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
cmp dword [ebx + 0x678], 0
je 0x4d50bf
mov eax, dword [ebp + 8]
xor edx, edx
mov dl, byte [eax]
push edx
call fcn.005542dc
pop ecx
mov dword [ebp - 0x10], eax
mov esi, dword [ebx + 0x678]
test esi, esi
je 0x4d50bf
mov eax, dword [esi + 0xc]
cmp eax, dword [ebp - 0x10]
jne 0x4d50b8
push dword [ebp + 8]
push dword [esi]
call fcn.0054c494
add esp, 8
test eax, eax
jne 0x4d50b8
mov edx, dword [esi + 8]
mov dword [0x569b24], edx
mov ecx, dword [esi + 0x20]
mov dword [ebp - 0x14], ecx
push esi
push dword [ebx + 0x678]
call fcn.004c6cb6
mov dword [ebx + 0x678], eax
jmp 0x4d50bf
mov esi, dword [esi + 0x40]
test esi, esi
jne 0x4d507c
mov eax, dword [ebx + 0xb6c]
cmp dword [eax + 0x1bf8], 0
je 0x4d50e0
cmp dword [0x569b28], 0xffffffff
je 0x4d50e0
mov edx, dword [0x569b28]
mov dword [ebp - 0x14], edx
mov dword [0x569b28], 0xffffffff
test edi, edi
je 0x4d5143
push dword [ebp + 0x14]
push dword [ebp + 8]
push 0
call fcn.004c6a50
mov esi, eax
test esi, esi
je 0x4d5195
mov eax, dword [ebp + 8]
xor edx, edx
mov dl, byte [eax]
push edx
call fcn.005542dc
pop ecx
mov dword [esi + 0xc], eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x20], ecx
push esi
push edi
push dword [ebx + 0x674]
call fcn.004c6d36
mov dword [ebx + 0x674], eax
lea eax, [ebx + 0x67c]
push eax
push 0xffffffffffffffff
push esi
push dword [ebp + 8]
call fcn.0048e4da
jmp 0x4d5195
push dword [ebp + 0x14]
push dword [ebp + 8]
push dword [ebx + 0x674]
call fcn.004c6a50
mov esi, eax
test esi, esi
je 0x4d518e
mov eax, esi
mov dword [ebx + 0x674], eax
mov edi, dword [eax + 0x44]
mov eax, dword [ebp + 8]
xor edx, edx
mov dl, byte [eax]
push edx
call fcn.005542dc
pop ecx
mov dword [edi + 0xc], eax
mov ecx, dword [ebp - 0x14]
mov dword [edi + 0x20], ecx
lea eax, [ebx + 0x67c]
push eax
push 0xffffffffffffffff
push edi
push dword [ebp + 8]
call fcn.0048e4da
mov dword [ebp - 8], 0xffffffff
lea edx, [ebp - 0x88]
push edx
push dword [ebp - 8]
push 0x181
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov esi, eax
cmp esi, 0xffffffff
je 0x4d525d
cmp esi, 0xfffffffe
je 0x4d525d
mov eax, dword [ebx + 0xb6c]
mov eax, dword [eax + 0x1bf8]
test eax, eax
je 0x4d5211
test al, 4
je 0x4d51ea
push esi
push 1
push 0x185
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push dword [0x569b24]
push esi
push 0x19a
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
mov edx, dword [ebx + 0xb6c]
xor ecx, ecx
mov dword [edx + 0x1bf8], ecx
jmp 0x4d525d
cmp dword [ebp - 0x14], 0
je 0x4d5221
mov eax, dword [0x569b24]
mov dword [ebp - 8], eax
jmp 0x4d5249
push dword [ebx + 0xb6c]
push 2
push 0
lea edx, [ebp - 8]
push edx
push dword [ebp + 0x14]
push dword [ebp + 8]
push dword [ebx]
call fcn.0043dc54
cmp dword [ebp - 8], 0xffffffff
jne 0x4d5249
mov dword [ebp - 8], 0x63
push dword [ebp - 8]
push esi
push 0x19a
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
cmp esi, 0xffffffff
je 0x4d52af
cmp esi, dword [ebp - 0x18]
jg 0x4d526a
inc dword [ebp - 0x18]
cmp esi, dword [ebp - 0x1c]
jg 0x4d5272
inc dword [ebp - 0x1c]
lea ecx, [ebp - 0x1c]
push ecx
push dword [ebp - 0x18]
push ebx
call fcn.004d4a24
push 0
push dword [ebp - 0x18]
push 0x197
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
cmp dword [ebp - 0x1c], 0xffffffff
je 0x4d52af
push 0
push dword [ebp - 0x1c]
push 0x19e
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 1
push 0xb
push dword [ebx + 0x820]
call sub.USER32.dll_SendMessageA
push 0
push 0
push dword [ebx + 0x820]
call sub.USER32.dll_InvalidateRect
mov eax, dword [ebp + 0x14]
jmp 0x4d5307
cmp dword [ebp + 0x14], 0
je 0x4d52eb
mov edx, dword [ebp - 0xc]
and edx, dword [ebp + 0x14]
je 0x4d52e7
mov eax, dword [ebp + 0x14]
jmp 0x4d5307
xor eax, eax
jmp 0x4d5307
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
cmp dword [ebp - 0xc], 0
je 0x4d5300
test edi, edi
je 0x4d5300
mov edx, dword [ebp + 0x14]
mov dword [edi + 0x18], edx
mov eax, dword [ebp - 0xc]
jmp 0x4d5307
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10