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

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ebx, 0x4e5d14
cmp byte [esi], 0
je 0x47e74e
push esi
call fcn.004bceac
pop ecx
cmp eax, 0x64
jb 0x47e755
xor eax, eax
jmp 0x47eff5
cmp byte [edi + 0x4cc], 1
je 0x47e765
xor eax, eax
jmp 0x47eff5
xor edx, edx
mov dword [0x4e5d1c], edx
xor ecx, ecx
mov dword [0x4e5d20], ecx
xor eax, eax
mov al, byte [esi]
push eax
call fcn.004c40d4
pop ecx
mov dword [0x4e5d24], eax
mov edx, dword [edi + 0x4b0]
mov dword [ebx], edx
jmp 0x47e7c6
mov eax, dword [ebx]
mov edx, dword [eax + 8]
cmp edx, dword [0x4e5d24]
jne 0x47e7b9
push esi
mov ecx, dword [eax]
push ecx
call fcn.004bcfe4
add esp, 8
test eax, eax
jne 0x47e7b9
mov eax, dword [ebx]
mov edx, dword [eax + 0x18]
mov dword [0x4e5d20], edx
jmp 0x47e7cb
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x2c]
mov dword [ebx], eax
inc dword [0x4e5d1c]
cmp dword [ebx], 0
jne 0x47e78f
mov edx, dword [ebp + 0x10]
sub edx, 1
jb 0x47e7ec
je 0x47ea41
dec edx
je 0x47efb5
dec edx
je 0x47efd6
jmp 0x47eff3
cmp dword [0x4e5d20], 0
je 0x47ea37
cmp dword [ebx], 0
je 0x47ea37
cmp dword [0x4d0368], 0
je 0x47e887
push 0
mov ecx, dword [0x4e5d1c]
push ecx
push 0x187
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d28], eax
mov eax, dword [0x4e5d28]
cmp eax, 0xffffffff
je 0x47e844
test eax, eax
jle 0x47e844
mov dword [0x4d0368], 2
jmp 0x47e84e
mov dword [0x4d0368], 3
push 0
mov edx, dword [0x4e5d1c]
push edx
push 0x199
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d2c], eax
mov eax, dword [0x4e5d2c]
cmp eax, 0xffffffff
je 0x47e87b
test eax, eax
jge 0x47e887
mov edx, dword [0x4cb07c]
mov dword [0x4e5d2c], edx
mov dword [0x4e5d38], 0xffffffff
cmp dword [0x4d42a4], 0
je 0x47e901
mov ecx, dword [edi]
cmp ecx, dword [0x4d42a8]
jne 0x47e901
cmp byte [edi + 0x4e1], 0
je 0x47e901
push 1
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x47e8c5
push 2
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x47e901
push 0x4e5d38
call sub.USER32.dll_GetCursorPos
push 0x4e5d38
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_ScreenToClient
movzx edx, word [0x4e5d3c]
shl edx, 0x10
or edx, 1
push edx
push 0
push 0x202
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0x18e
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d30], eax
push 0
push 0
push 0x19f
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d34], eax
push 0
push 0
push 0xb
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
push 0
mov eax, dword [0x4e5d1c]
push eax
push 0x182
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov eax, dword [0x4e5d1c]
cmp eax, dword [0x4e5d30]
jg 0x47e984
dec dword [0x4e5d30]
cmp dword [0x4e5d30], 0
jge 0x47e984
xor edx, edx
mov dword [0x4e5d30], edx
cmp eax, dword [0x4e5d34]
jg 0x47e9a3
dec dword [0x4e5d34]
cmp dword [0x4e5d34], 0
jge 0x47e9a3
xor ecx, ecx
mov dword [0x4e5d34], ecx
mov eax, dword [0x4e5d30]
cmp eax, dword [0x4e5d34]
jle 0x47e9bc
mov dword [0x4e5d34], 0xffffffff
jmp 0x47e9c8
push 0x4e5d34
push eax
push edi
call fcn.0047e6e8
push 0
mov edx, dword [0x4e5d30]
push edx
push 0x197
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
mov eax, dword [0x4e5d34]
cmp eax, 0xffffffff
je 0x47ea00
push 0
push eax
push 0x19e
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
push 0
push 1
push 0xb
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
push 0
push 0
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_InvalidateRect
mov edx, dword [ebx]
push edx
mov ecx, dword [edi + 0x4b0]
push ecx
call fcn.0046f72c
mov dword [edi + 0x4b0], eax
mov eax, dword [0x4e5d20]
jmp 0x47eff5
cmp dword [ebp + 0x14], 0
jne 0x47ea51
mov eax, dword [0x4e5d20]
jmp 0x47eff5
mov eax, dword [0x4e5d20]
test eax, eax
je 0x47ea8d
cmp dword [ebp + 0x14], 0
jle 0x47ea70
mov edx, eax
and edx, dword [ebp + 0x14]
jne 0x47eff5
add dword [ebp + 0x14], eax
jmp 0x47ea97
mov ecx, dword [ebp + 0x14]
mov edx, ecx
neg ecx
mov dword [ebp + 0x14], ecx
mov ecx, eax
and ecx, dword [ebp + 0x14]
je 0x47eff5
sub eax, dword [ebp + 0x14]
mov dword [ebp + 0x14], eax
jmp 0x47ea97
cmp dword [ebp + 0x14], 0
jl 0x47eff5
mov dword [0x4e5d38], 0xffffffff
cmp dword [0x4d42a4], 0
je 0x47eb11
mov eax, dword [edi]
cmp eax, dword [0x4d42a8]
jne 0x47eb11
cmp byte [edi + 0x4e1], 0
je 0x47eb11
push 1
call sub.USER32.dll_GetKeyState
test ax, ax
jl 0x47ead5
push 2
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x47eb11
push 0x4e5d38
call sub.USER32.dll_GetCursorPos
push 0x4e5d38
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_ScreenToClient
movzx edx, word [0x4e5d3c]
shl edx, 0x10
or edx, 1
push edx
push 0
push 0x202
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0x18e
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d30], eax
push 0
push 0
push 0x19f
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d34], eax
push 0
push 0
push 0xb
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
cmp dword [0x4e5d20], 0
je 0x47ec20
cmp dword [ebx], 0
je 0x47ec20
cmp dword [0x4d0368], 0
je 0x47ebf1
push 0
mov eax, dword [0x4e5d1c]
push eax
push 0x187
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d28], eax
mov eax, dword [0x4e5d28]
cmp eax, 0xffffffff
je 0x47ebae
test eax, eax
jle 0x47ebae
mov dword [0x4d0368], 2
jmp 0x47ebb8
mov dword [0x4d0368], 3
push 0
mov edx, dword [0x4e5d1c]
push edx
push 0x199
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
mov dword [0x4e5d2c], eax
mov eax, dword [0x4e5d2c]
cmp eax, 0xffffffff
je 0x47ebe5
test eax, eax
jge 0x47ebf1
mov edx, dword [0x4cb07c]
mov dword [0x4e5d2c], edx
push 0
mov ecx, dword [0x4e5d1c]
push ecx
push 0x182
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_SendMessageA
mov edx, dword [ebx]
push edx
mov ecx, dword [edi + 0x4b0]
push ecx
call fcn.0046f72c
mov dword [edi + 0x4b0], eax
xor eax, eax
mov dword [0x4e5d1c], eax
mov edx, dword [edi + 0x4b0]
mov dword [ebx], edx
test byte [ebp + 0x14], 2
je 0x47ec85
jmp 0x47ec54
mov ecx, dword [eax]
push ecx
push esi
call fcn.004bcfe4
add esp, 8
test eax, eax
jl 0x47ec60
inc dword [0x4e5d1c]
mov eax, dword [ebx]
mov edx, dword [eax + 0x2c]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
je 0x47ec60
test byte [eax + 0x18], 2
jne 0x47ec37
push esi
push edi
mov esi, 0x4d159c
mov edi, 0x4e5d40
mov eax, edi
movsw word es:[edi], word [esi]
pop edi
pop esi
push esi
push 0x4e5d40
call fcn.004bcdd0
add esp, 8
jmp 0x47ede7
test byte [ebp + 0x14], 8
je 0x47ecf4
jmp 0x47ec98
inc dword [0x4e5d1c]
mov edx, dword [eax + 0x2c]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
je 0x47ecc3
test byte [eax + 0x18], 2
jne 0x47ec8d
jmp 0x47ecc3
mov edx, dword [eax]
push edx
push esi
call fcn.004bcfe4
add esp, 8
test eax, eax
jl 0x47eccf
inc dword [0x4e5d1c]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x2c]
mov dword [ebx], eax
mov eax, dword [ebx]
test eax, eax
je 0x47eccf
test byte [eax + 0x18], 8
jne 0x47eca6
push esi
push edi
mov esi, 0x4d159f
mov edi, 0x4e5d40
mov eax, edi
movsw word es:[edi], word [esi]
pop edi
pop esi
push esi
push 0x4e5d40
call fcn.004bcdd0
add esp, 8
jmp 0x47ede7
test byte [ebp + 0x14], 4
je 0x47ed88
jmp 0x47ed0b
inc dword [0x4e5d1c]
mov edx, dword [eax + 0x2c]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
je 0x47ed24
test byte [eax + 0x18], 2
jne 0x47ed00
jmp 0x47ed24
inc dword [0x4e5d1c]
mov edx, dword [eax + 0x2c]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
je 0x47ed4f
test byte [eax + 0x18], 8
jne 0x47ed19
jmp 0x47ed4f
mov edx, dword [eax]
push edx
push esi
call fcn.004bcfe4
add esp, 8
test eax, eax
jl 0x47ed5b
inc dword [0x4e5d1c]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x2c]
mov dword [ebx], eax
mov eax, dword [ebx]
test eax, eax
je 0x47ed5b
test byte [eax + 0x18], 4
jne 0x47ed32
push esi
push edi
mov esi, 0x4d15a2
mov edi, 0x4e5d40
mov eax, edi
movsw word es:[edi], word [esi]
pop edi
pop esi
push esi
push 0x4e5d40
call fcn.004bcdd0
add esp, 8
jmp 0x47ede7
inc dword [0x4e5d1c]
mov edx, dword [eax + 0x2c]
mov dword [ebx], edx
mov eax, dword [ebx]
test eax, eax
je 0x47edb3
cmp dword [eax + 0x18], 1
jne 0x47ed7d
jmp 0x47edb3
mov edx, dword [eax]
push edx
push esi
call fcn.004bcfe4
add esp, 8
test eax, eax
jl 0x47edbf
inc dword [0x4e5d1c]
mov ecx, dword [ebx]
mov eax, dword [ecx + 0x2c]
mov dword [ebx], eax
mov eax, dword [ebx]
test eax, eax
je 0x47edbf
cmp dword [eax + 0x18], 1
je 0x47ed96
push esi
push edi
mov edi, esi
mov esi, 0x4e5d40
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
pop esi
cmp dword [ebx], 0
je 0x47ee39
mov eax, dword [ebp + 0x14]
push eax
push 0
push esi
push 0
call fcn.0046f388
mov dword [0x4e5d18], eax
cmp dword [0x4e5d18], 0
je 0x47ee7f
xor edx, edx
mov dl, byte [esi]
push edx
call fcn.004c40d4
pop ecx
mov ecx, dword [0x4e5d18]
mov dword [ecx + 8], eax
mov eax, dword [0x4e5d18]
push eax
mov edx, dword [ebx]
push edx
mov ecx, dword [edi + 0x4b0]
push ecx
call fcn.0046f7ec
mov dword [edi + 0x4b0], eax
jmp 0x47ee7f
mov eax, dword [ebp + 0x14]
push eax
push 0
push esi
mov edx, dword [edi + 0x4b0]
push edx
call fcn.0046f388
mov ebx, eax
mov dword [0x4e5d18], ebx
test ebx, ebx
je 0x47ee75
mov dword [edi + 0x4b0], ebx
xor eax, eax
mov al, byte [esi]
push eax
call fcn.004c40d4
pop ecx
mov edx, dword [edi + 0x4b0]
mov ecx, dword [edx + 0x30]
mov dword [ecx + 8], eax
mov dword [0x4e5d1c], 0xffffffff
push 0x4e5d40
mov eax, dword [0x4e5d1c]
push eax
push 0x181
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov ebx, eax
mov dword [0x4e5d28], ebx
cmp ebx, 0xffffffff
je 0x47ef10
mov eax, dword [0x4d0368]
test eax, eax
je 0x47eef2
cmp eax, 2
jne 0x47eeca
push ebx
push 1
push 0x185
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
mov ecx, dword [0x4e5d2c]
push ecx
mov eax, dword [0x4e5d28]
push eax
push 0x19a
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
xor ecx, ecx
mov dword [0x4d0368], ecx
jmp 0x47ef10
mov eax, dword [0x4cb07c]
push eax
mov edx, dword [0x4e5d28]
push edx
push 0x19a
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
mov eax, dword [0x4e5d28]
cmp eax, dword [0x4e5d30]
jg 0x47ef23
inc dword [0x4e5d30]
cmp eax, dword [0x4e5d34]
jg 0x47ef31
inc dword [0x4e5d34]
mov eax, dword [0x4e5d30]
cmp eax, dword [0x4e5d34]
jle 0x47ef4a
mov dword [0x4e5d34], 0xffffffff
jmp 0x47ef56
push 0x4e5d34
push eax
push edi
call fcn.0047e6e8
push 0
mov edx, dword [0x4e5d30]
push edx
push 0x197
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
mov eax, dword [0x4e5d34]
cmp eax, 0xffffffff
je 0x47ef8e
push 0
push eax
push 0x19e
mov edx, dword [edi + 0x51c]
push edx
call sub.USER32.dll_SendMessageA
push 0
push 1
push 0xb
mov ecx, dword [edi + 0x51c]
push ecx
call sub.USER32.dll_SendMessageA
push 0
push 0
mov eax, dword [edi + 0x51c]
push eax
call sub.USER32.dll_InvalidateRect
mov eax, dword [ebp + 0x14]
jmp 0x47eff5
cmp dword [ebp + 0x14], 0
je 0x47efcf
mov edx, dword [0x4e5d20]
and edx, dword [ebp + 0x14]
je 0x47efcb
mov eax, dword [ebp + 0x14]
jmp 0x47eff5
xor eax, eax
jmp 0x47eff5
mov eax, dword [0x4e5d20]
jmp 0x47eff5
cmp dword [0x4e5d20], 0
je 0x47efec
cmp dword [ebx], 0
je 0x47efec
mov edx, dword [ebx]
mov ecx, dword [ebp + 0x14]
mov dword [edx + 0x14], ecx
mov eax, dword [0x4e5d20]
jmp 0x47eff5
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret 0x10