Function at 0x40ca8b
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x30
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ebx, [esi + 0x12c]
push ebx
call fcn.0040d669
test eax, eax
je 0x40cceb
mov eax, dword [ebx + 4]
mov edi, dword [ebx]
push 0x11
mov dword [esp + 0x18], eax
call dword [sym.imp.USER32.dll_GetKeyState]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
mov ebp, 0x115
test ah, 0x80
jne 0x40cc71
mov eax, dword [esp + 0x44]
cmp eax, 0x26
ja 0x40cbe5
je 0x40cc34
sub eax, 0x21
je 0x40cb8a
dec eax
je 0x40cb37
dec eax
je 0x40cb22
dec eax
je 0x40cb0d
dec eax
jne 0x40cbf5
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 0x8c]
jle 0x40cc71
dec dword [esp + 0x14]
jmp 0x40cc71
push 0
push 6
push ebp
push dword [esi + 0x1c]
call ebx
mov edi, dword [esi + 0x84]
jmp 0x40cc71
push 0
push 7
push ebp
push dword [esi + 0x1c]
call ebx
mov edi, dword [esi + 0x80]
jmp 0x40cc3c
lea eax, [esp + 0x20]
mov ecx, esi
push eax
call fcn.0040df46
mov ecx, dword [eax]
push 0
push 3
push ebp
mov eax, dword [eax + 4]
push dword [esi + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
call ebx
lea eax, [esp + 0x28]
mov ecx, esi
push eax
call fcn.0040df46
mov ecx, eax
mov eax, dword [ecx]
sub eax, dword [esp + 0x18]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x2c], ecx
je 0x40cb2c
add edi, eax
mov eax, dword [esi + 0x80]
dec eax
cmp edi, eax
jle 0x40cc71
jmp 0x40cbde
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.0040df46
mov ecx, dword [eax]
push 0
push 2
push ebp
mov eax, dword [eax + 4]
push dword [esi + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
call ebx
lea eax, [esp + 0x38]
mov ecx, esi
push eax
call fcn.0040df46
mov ecx, eax
mov eax, dword [ecx]
sub eax, dword [esp + 0x18]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x3c], ecx
je 0x40cb17
add edi, eax
mov eax, dword [esi + 0x84]
cmp edi, eax
jge 0x40cc71
mov edi, eax
jmp 0x40cc71
sub eax, 0x27
je 0x40cc60
dec eax
je 0x40cc52
sub eax, 5
je 0x40cc3f
dec eax
je 0x40cbfe
mov ecx, esi
call fcn.00445ae2
jmp 0x40cc71
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.00445b7b
push 0
push edi
push 0x802
push dword [eax + 0x1c]
call ebx
push edi
mov ecx, esi
call fcn.0040f03d
push 0x105
push 0
push 0
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_RedrawWindow]
cmp edi, dword [esi + 0x84]
jle 0x40cc71
dec edi
jmp 0x40cc71
mov eax, dword [esi]
push 1
push dword [esp + 0x18]
mov ecx, esi
push edi
call dword [eax + 0xec]
jmp 0x40cc71
mov eax, dword [esi + 0x80]
dec eax
cmp edi, eax
jge 0x40cc71
inc edi
jmp 0x40cc71
mov eax, dword [esi + 0x88]
dec eax
cmp dword [esp + 0x14], eax
jge 0x40cc71
inc dword [esp + 0x14]
cmp edi, dword [esi + 0x12c]
lea eax, [esi + 0x12c]
jne 0x40cc88
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 4]
je 0x40cceb
push dword [esp + 0x14]
lea eax, [esp + 0x3c]
mov ecx, esi
push edi
push eax
call fcn.0040d85d
push dword [esp + 0x14]
mov ecx, esi
push edi
call fcn.0040fa46
test eax, eax
jne 0x40cceb
mov eax, dword [esp + 0x44]
sub eax, 0x25
je 0x40ccce
dec eax
je 0x40ccc7
dec eax
je 0x40ccc1
dec eax
jne 0x40ccdc
push 0
push 1
jmp 0x40cccb
push 0
push 1
jmp 0x40ccd2
push 0
push 0
push ebp
jmp 0x40ccd7
push 0
push 0
push 0x114
push dword [esi + 0x1c]
call ebx
push 1
push 0
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x40cc99
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0xc