Function at 0x511b90
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 0x511bd2
mov eax, dword [edi]
sub eax, 9
cmp eax, 9
ja 0x511bd2
mov ecx, dword [esi + 0xb4c]
push edi
test ecx, ecx
je 0x511bc6
mov eax, dword [ecx]
call dword [eax + 0xc]
jmp 0x511e00
mov ecx, esi
call fcn.00511ab8
jmp 0x511e00
mov eax, dword [edi]
push ebx
cmp eax, 0x17
jne 0x511c16
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x511c5f
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 0x511caf
mov eax, dword [ebp + 8]
inc ebx
add eax, 0x10
mov dword [ebp + 8], eax
cmp ebx, dword [esi + 0x684]
jl 0x511bed
mov eax, dword [edi]
cmp eax, 0xe
jne 0x511c5f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xe4]
test al, al
je 0x511c5f
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x511c5f
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 0x511cc8
mov eax, dword [ebp + 8]
inc ebx
add eax, 0x10
mov dword [ebp + 8], eax
cmp ebx, dword [esi + 0x684]
jl 0x511c3c
mov ecx, dword [esi + 0x684]
test ecx, ecx
jle 0x511cf1
cmp dword [edi], 9
jne 0x511cf1
or eax, 0xffffffff
xor ebx, ebx
mov dword [ebp + 8], eax
test ecx, ecx
jle 0x511cd9
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 0x511cd4
mov eax, dword [ebp - 4]
inc ebx
add eax, 0x10
mov dword [ebp - 4], eax
cmp ebx, dword [esi + 0x684]
jl 0x511c87
mov eax, dword [ebp + 8]
jmp 0x511cd9
push 0x7f89
push 0
call dword [sym.imp.USER32.dll_LoadCursorW]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x511dff
push 0
push 0
push ebx
push str.link
jmp 0x511d40
mov eax, ebx
mov dword [ebp + 8], ebx
cmp dword [esi + 0xb48], eax
je 0x511cf1
mov ecx, esi
call fcn.005142ac
mov eax, dword [ebp + 8]
mov dword [esi + 0xb48], eax
xor ebx, ebx
cmp dword [esi + 0x684], ebx
jle 0x511d17
cmp dword [edi], 0xa
jne 0x511d17
cmp dword [esi + 0xb48], 0xffffffff
je 0x511d17
mov ecx, esi
call fcn.005142ac
or dword [esi + 0xb48], 0xffffffff
cmp dword [edi], 0xd
je 0x511d59
cmp dword [edi], 0xf
je 0x511d59
cmp dword [edi], 0xe
mov ecx, esi
jne 0x511d4e
mov eax, dword [esi]
call dword [eax + 0xe4]
test al, al
je 0x511dff
push ebx
push ebx
push ebx
push str.itemclick
mov ecx, dword [esi + 0x50]
push esi
call fcn.004dfca7
jmp 0x511dff
push edi
call fcn.00511ab8
jmp 0x511dff
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xe4]
test al, al
je 0x511df3
mov ecx, dword [esi + 0xb4c]
test ecx, ecx
je 0x511dec
mov eax, dword [ecx]
call dword [eax + 0x34]
test al, al
jne 0x511dcb
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x511dbb
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 0x511db3
push ebx
call dword [edx + 0x38]
jmp 0x511dec
push 0
push ebx
call dword [edx + 0x2c]
jmp 0x511dec
mov ecx, dword [esi + 0xb4c]
mov eax, dword [ecx]
call dword [eax + 0x44]
cmp eax, 1
jne 0x511dda
lea ecx, [esi + 0x670]
mov eax, dword [ecx]
call dword [eax + 0x10]
test al, al
jne 0x511dec
mov ecx, dword [esi + 0xb4c]
push ebx
push dword [esi + 0x674]
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, esi
call fcn.005142ac
mov ecx, dword [esi + 0xb4c]
push edi
mov eax, dword [ecx]
call dword [eax + 0xc]
pop ebx
pop edi
pop esi
leave
ret 4