Function at 0x50d099
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, ecx
push edi
mov eax, dword [esi]
call dword [eax + 0xec]
mov edi, dword [ebp + 8]
test al, al
jne 0x50d0db
mov eax, dword [edi]
sub eax, 9
cmp eax, 9
ja 0x50d0db
mov ecx, dword [esi + 0xb4c]
push edi
test ecx, ecx
je 0x50d0cf
mov eax, dword [ecx]
call dword [eax + 0xc]
jmp 0x50d309
mov ecx, esi
call fcn.0050cfc1
jmp 0x50d309
mov eax, dword [edi]
push ebx
cmp eax, 0x17
jne 0x50d11f
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x50d168
lea eax, [esi + 0x688]
mov dword [ebp + 8], eax
push dword [edi + 0x10]
push dword [edi + 0xc]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x50d1b8
mov eax, dword [ebp + 8]
inc ebx
add eax, 0x10
mov dword [ebp + 8], eax
cmp ebx, dword [esi + 0x684]
jl 0x50d0f6
mov eax, dword [edi]
cmp eax, 0xe
jne 0x50d168
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xe4]
test al, al
je 0x50d168
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x50d168
lea eax, [esi + 0x688]
mov dword [ebp + 8], eax
push dword [edi + 0x10]
push dword [edi + 0xc]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x50d1d1
mov eax, dword [ebp + 8]
inc ebx
add eax, 0x10
mov dword [ebp + 8], eax
cmp ebx, dword [esi + 0x684]
jl 0x50d145
mov ecx, dword [esi + 0x684]
test ecx, ecx
jle 0x50d1fa
cmp dword [edi], 9
jne 0x50d1fa
or eax, 0xffffffff
xor ebx, ebx
mov dword [ebp + 8], eax
test ecx, ecx
jle 0x50d1e2
lea eax, [esi + 0x688]
mov dword [ebp - 4], eax
push dword [edi + 0x10]
push dword [edi + 0xc]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x50d1dd
mov eax, dword [ebp - 4]
inc ebx
add eax, 0x10
mov dword [ebp - 4], eax
cmp ebx, dword [esi + 0x684]
jl 0x50d190
mov eax, dword [ebp + 8]
jmp 0x50d1e2
push 0x7f89
push 0
call dword [sym.imp.USER32.dll_LoadCursorW]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x50d308
push 0
push 0
push ebx
push str.link
jmp 0x50d249
mov eax, ebx
mov dword [ebp + 8], ebx
cmp dword [esi + 0xb48], eax
je 0x50d1fa
mov ecx, esi
call fcn.0050f7b5
mov eax, dword [ebp + 8]
mov dword [esi + 0xb48], eax
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x50d220
cmp dword [edi], 0xa
jne 0x50d220
cmp dword [esi + 0xb48], 0xffffffff
je 0x50d220
mov ecx, esi
call fcn.0050f7b5
or dword [esi + 0xb48], 0xffffffff
cmp dword [edi], 0xd
je 0x50d262
cmp dword [edi], 0xf
je 0x50d262
cmp dword [edi], 0xe
mov ecx, esi
jne 0x50d257
mov eax, dword [esi]
call dword [eax + 0xe4]
test al, al
je 0x50d308
push ebx
push ebx
push ebx
push str.itemclick
mov ecx, dword [esi + 0x50]
push esi
call fcn.004db377
jmp 0x50d308
push edi
call fcn.0050cfc1
jmp 0x50d308
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xe4]
test al, al
je 0x50d2fc
mov ecx, dword [esi + 0xb4c]
test ecx, ecx
je 0x50d2f5
mov eax, dword [ecx]
call dword [eax + 0x34]
test al, al
jne 0x50d2d4
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x50d2c4
lea ecx, [esi + 0x670]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [esi + 0xb4c]
mov ebx, dword [esi + 0x674]
mov edx, dword [ecx]
test al, al
je 0x50d2bc
push ebx
call dword [edx + 0x38]
jmp 0x50d2f5
push 0
push ebx
call dword [edx + 0x2c]
jmp 0x50d2f5
mov ecx, dword [esi + 0xb4c]
mov eax, dword [ecx]
call dword [eax + 0x44]
cmp eax, 1
jne 0x50d2e3
lea ecx, [esi + 0x670]
mov eax, dword [ecx]
call dword [eax + 0x10]
test al, al
jne 0x50d2f5
mov ecx, dword [esi + 0xb4c]
push ebx
push dword [esi + 0x674]
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, esi
call fcn.0050f7b5
mov ecx, dword [esi + 0xb4c]
push edi
mov eax, dword [ecx]
call dword [eax + 0xc]
pop ebx
pop edi
pop esi
leave
ret 4