Function at 0x4ec040
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
sub esp, 0x34
push ebx
push esi
push edi
mov edi, ecx
cmp eax, 0x101
ja 0x4ec1ba
je 0x4ec18c
mov ecx, eax
sub ecx, 0x87
je 0x4ec07e
sub ecx, 0x79
jne 0x4ec1c1
pop edi
pop esi
lea eax, [ecx + 1]
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x4ec17e
cmp dword [esi + 4], 0x100
jne 0x4ec298
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call ebx
test al, al
jns 0x4ec298
cmp dword [esi + 8], 9
jne 0x4ec0b6
push 0x10
call ebx
test al, al
js 0x4ec0be
mov eax, dword [esi + 8]
cmp eax, 0x26
jne 0x4ec0d3
mov eax, dword [edi + 0x20]
lea ebx, [eax - 1]
test ebx, ebx
jns 0x4ec0cc
mov ebx, dword [edi + 0x1c]
dec ebx
lea ecx, [ebp - 0x34]
push ecx
push eax
jmp 0x4ec0fa
cmp eax, 9
je 0x4ec0e1
cmp eax, 0x28
jne 0x4ec16b
mov edx, dword [edi + 0x20]
xor ebx, ebx
mov eax, dword [edi + 0x1c]
dec eax
lea ecx, [edx + 1]
cmp ecx, eax
lea eax, [ebp - 0x34]
push eax
setg bl
dec ebx
and ebx, ecx
push edx
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0x102b
push dword [edi + 0xc]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 3
call esi
mov eax, dword [edi + 0x20]
push eax
push eax
push 0x1015
push dword [edi + 0xc]
call esi
push dword [edi + 0xc]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
lea eax, [ebp - 0x34]
mov dword [ebp - 0x24], 3
push eax
push ebx
push 0x102b
push dword [edi + 0xc]
mov dword [ebp - 0x28], 3
call dword [sym.imp.USER32.dll_SendMessageW]
push ebx
push ebx
push 0x1015
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_SendMessageW]
push dword [edi + 0xc]
call esi
mov dword [edi + 0x20], ebx
push 1
push dword [edi + 0x20]
push 0x1013
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
mov eax, 4
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [ebp + 0x10], 0x11
jne 0x4ec298
push dword [edi + 0x20]
push 0x993
push 0x111
push dword [edi + 8]
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp eax, 0x20a
je 0x4ec1dd
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push eax
push dword [ebp + 8]
push dword [edi + 0x10]
call dword [sym.imp.USER32.dll_CallWindowProcW]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test ax, ax
jle 0x4ec1fd
mov eax, dword [edi + 0x20]
lea ebx, [eax - 1]
test ebx, ebx
jns 0x4ec1f6
mov ebx, dword [edi + 0x1c]
dec ebx
lea ecx, [ebp - 0x34]
push ecx
push eax
jmp 0x4ec216
mov edx, dword [edi + 0x20]
xor ebx, ebx
mov eax, dword [edi + 0x1c]
dec eax
lea ecx, [edx + 1]
cmp ecx, eax
lea eax, [ebp - 0x34]
push eax
setg bl
dec ebx
and ebx, ecx
push edx
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0x102b
push dword [edi + 0xc]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 3
call esi
mov eax, dword [edi + 0x20]
push eax
push eax
push 0x1015
push dword [edi + 0xc]
call esi
push dword [edi + 0xc]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
lea eax, [ebp - 0x34]
mov dword [ebp - 0x24], 3
push eax
push ebx
push 0x102b
push dword [edi + 0xc]
mov dword [ebp - 0x28], 3
call dword [sym.imp.USER32.dll_SendMessageW]
push ebx
push ebx
push 0x1015
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_SendMessageW]
push dword [edi + 0xc]
call esi
push 1
push ebx
push 0x1013
push dword [edi + 0xc]
mov dword [edi + 0x20], ebx
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x10