Function at 0x50d99b
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x14
mov eax, 0x58e076
call fcn.00566477
mov ebx, ecx
mov dword [ebp - 0x10], ebx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 4]
cmp eax, 0x14
je 0x50dc42
xor edi, edi
cmp dword [ebx + 0x8c], edi
je 0x50d9d2
push ecx
mov ecx, ebx
call fcn.0042c1e3
jmp 0x50dc45
cmp eax, 0x201
jne 0x50da21
mov edx, dword [ebx + 0x80]
mov dword [ebp - 0x14], edx
cmp dword [edx + 0x1e4], edi
je 0x50db81
cmp dword [edx + 0xcc], edi
jne 0x50db81
mov eax, dword [ebx + 0x20]
cmp dword [ecx], eax
je 0x50db81
mov eax, dword [edx]
push edi
mov esi, dword [eax + 0x224]
mov ecx, esi
call dword [0x5959e4]
mov ecx, dword [ebp - 0x14]
call esi
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
cmp eax, 0x200
jne 0x50db81
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xdc]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
jne 0x50db81
push 0x17
call dword [sym.imp.USER32.dll_GetSystemMetrics]
xor ecx, ecx
test eax, eax
setne cl
inc ecx
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x50da80
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.00429f8d
cmp eax, ebx
jne 0x50dc42
xor edi, edi
cmp dword [ebx + 0x84], edi
jne 0x50dac2
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x20]
push eax
mov dword [ebx + 0x84], 1
mov dword [ebp - 0x20], 0x10
mov dword [ebp - 0x1c], 2
call dword [sym.imp.USER32.dll_TrackMouseEvent]
push 0x105
push edi
push edi
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_RedrawWindow]
cmp dword [ebx + 0x88], edi
jne 0x50db81
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xa4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
je 0x50db81
lea eax, [ebp - 0x18]
xor esi, esi
push eax
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], esi
call dword [sym.imp.USER32.dll_GetCursorPos]
push 0x105
push esi
push esi
push dword [ebx + 0x20]
mov dword [ebx + 0x88], 1
call dword [sym.imp.USER32.dll_RedrawWindow]
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xa4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
lea ecx, [ebp - 0x18]
push ecx
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_ScreenToClient]
mov edi, dword [ebp - 0x10]
movzx ebx, word [ebp - 0x14]
movzx eax, word [ebp - 0x18]
shl ebx, 0x10
mov edi, dword [edi + 0x80]
or ebx, eax
mov eax, dword [edi]
mov esi, dword [eax + 0xa4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
push ebx
push 0
push 0x200
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x100
jne 0x50de98
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xdc]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
mov eax, dword [ebp + 8]
jne 0x50de98
push dword [eax + 8]
mov ecx, ebx
call fcn.0050de9e
test eax, eax
jne 0x50dc42
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
cmp ecx, 9
je 0x50de73
cmp ecx, 0xd
je 0x50dd5a
cmp ecx, 0x1b
je 0x50dc92
cmp ecx, 0x20
jbe 0x50de98
cmp ecx, 0x22
jbe 0x50dc4d
cmp ecx, 0x26
je 0x50dc4d
cmp ecx, 0x28
jne 0x50de98
mov edi, dword [ebx + 0x80]
cmp dword [edi + 0x1dc], 0
je 0x50dc4d
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
jne 0x50dc4d
mov edi, dword [ebx + 0x80]
mov edx, dword [edi]
mov esi, dword [edx + 0x298]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
xor eax, eax
inc eax
call fcn.00566440
ret 4
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
je 0x50de95
mov eax, dword [0x5f57b4]
test eax, eax
je 0x50dc7b
mov eax, dword [eax + 0x20]
mov ecx, dword [ebp + 8]
push dword [ecx + 0xc]
push dword [ecx + 8]
push 0x100
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x50dc42
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
je 0x50dcc5
mov ecx, dword [0x5f57b4]
test ecx, ecx
je 0x50dcc5
xor eax, eax
push eax
push eax
push 0x10
push dword [ecx + 0x20]
jmp 0x50dc8a
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
jne 0x50dd16
push dword [ebx + 0x90]
mov ecx, ebx
call fcn.0045f23b
push ecx
mov esi, esp
mov dword [ebp - 0x14], esi
mov eax, dword [ebx + 0x90]
sub eax, 0x10
push eax
call fcn.0041d136
add eax, 0x10
pop ecx
mov dword [esi], eax
mov ecx, dword [ebx + 0x80]
call fcn.0050e2e0
mov ecx, ebx
call fcn.0042a3de
test eax, eax
je 0x50de95
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
jne 0x50de95
mov ecx, ebx
call fcn.0042a3de
mov ecx, eax
call fcn.0045f165
jmp 0x50dc42
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xe4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
jne 0x50de95
call fcn.004277e9
push eax
lea ecx, [ebp - 0x10]
call fcn.0041cb4f
lea eax, [ebp - 0x10]
xor edi, edi
push eax
mov ecx, ebx
mov dword [ebp - 4], edi
call fcn.0042a4f0
push ecx
mov esi, esp
mov dword [ebp - 0x14], esi
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
push eax
call fcn.0041d136
add eax, 0x10
pop ecx
mov dword [esi], eax
mov ecx, dword [ebx + 0x80]
call fcn.0050e2e0
mov ecx, dword [ebx + 0x80]
push 1
call fcn.0047d698
mov eax, dword [ebx + 0x80]
mov eax, dword [eax + 0x94]
test eax, eax
je 0x50de2d
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.00429f8d
mov ecx, edi
test eax, eax
je 0x50ddf2
mov ecx, dword [eax + 0x20]
mov eax, dword [0x5f57b4]
test eax, eax
jne 0x50ddff
mov eax, edi
jmp 0x50de02
mov eax, dword [eax + 0x20]
cmp ecx, eax
jne 0x50de2d
mov eax, dword [ebx + 0x80]
push dword [eax + 0x94]
call fcn.004348c8
mov edi, eax
pop ecx
mov ecx, dword [edi]
mov esi, dword [ecx + 0x60]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
jmp 0x50de52
mov ecx, ebx
call fcn.0042a3de
test eax, eax
je 0x50de62
mov eax, dword [ebx + 0x80]
mov ecx, ebx
mov dword [eax + 0x1e8], edi
call fcn.0042a3de
mov ecx, eax
call fcn.0045f165
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.00416850
jmp 0x50dc42
mov ecx, dword [ebp - 0x10]
or dword [ebp - 4], 0xffffffff
lea ecx, [ecx - 0x10]
call fcn.00416850
jmp 0x50de95
mov edi, dword [ebx + 0x80]
mov eax, dword [edi]
mov esi, dword [eax + 0xd4]
mov ecx, esi
call dword [0x5959e4]
mov ecx, edi
call esi
test eax, eax
je 0x50dc42
mov eax, dword [ebp + 8]
push eax
jmp 0x50d9c6