Function at 0x40d26e
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x20]
push edi
push eax
push esi
push ebx
call fcn.0040acb0
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0x50]
push eax
push esi
mov dword [ebp + 0xc], eax
mov dword [ebp - 8], ecx
call fcn.0040b027
mov edi, eax
mov eax, dword [ebp + 0x10]
add eax, 0xffffffdf
add esp, 0x14
cmp eax, 7
ja case.default.0x40d2af
jmp dword [eax*4 + 0x40d68a]
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x40d2cc
and dword [esi + 0x4c], 0
jmp 0x40d38e
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xd
pop ecx
pop ecx
je 0x40d2ee
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xa
pop ecx
pop ecx
jne 0x40d2f3
dec dword [esi + 0x4c]
jmp 0x40d2cc
cmp dword [esi + 0x4c], 0
jbe 0x40d320
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xd
pop ecx
pop ecx
je 0x40d320
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xa
pop ecx
pop ecx
je 0x40d320
dec dword [esi + 0x4c]
jne 0x40d2f9
mov eax, dword [esi + 0x4c]
test eax, eax
jbe 0x40d38e
inc eax
jmp 0x40d343
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov eax, dword [esi + 0x14]
jge 0x40d348
sub eax, dword [esi + 0x48]
sub eax, dword [esi + 0x40]
add eax, dword [esi + 8]
mov dword [esi + 0x4c], eax
jmp 0x40d38e
sub eax, dword [esi + 0x48]
sub eax, dword [esi + 0x40]
add eax, dword [esi + 8]
cmp dword [esi + 0x4c], eax
jae 0x40d38e
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xd
pop ecx
pop ecx
je 0x40d38e
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xa
pop ecx
pop ecx
je 0x40d38e
mov ecx, dword [esi + 0x14]
inc dword [esi + 0x4c]
sub ecx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
sub ecx, dword [esi + 0x40]
add ecx, dword [esi + 8]
cmp eax, ecx
jb 0x40d356
push 0
push 0
push ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp case.default.0x40d2af
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
test eax, eax
je case.default.0x40d2af
cmp dword [esi + 0x54], 0
jne 0x40d3bc
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x54], eax
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x14]
add eax, dword [ebp - 0xc]
push eax
push dword [esi + 0x54]
push esi
call fcn.0040cf96
add esp, 0xc
mov dword [esi + 0x4c], eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40d3e8
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x50], eax
push 0
push 2
jmp 0x40d43c
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
test eax, eax
je case.default.0x40d2af
cmp dword [esi + 0x54], 0
jne 0x40d40c
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x54], eax
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x1c]
add eax, dword [ebp - 0xc]
push eax
push dword [esi + 0x54]
push esi
call fcn.0040cf96
add esp, 0xc
mov dword [esi + 0x4c], eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40d438
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x50], eax
push 0
push 3
push 0x115
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
jmp case.default.0x40d2af
dec edi
test edi, edi
jl 0x40d484
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
test eax, eax
je case.default.0x40d2af
cmp dword [esi + 0x54], 0
jne 0x40d470
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x54], eax
mov eax, dword [ebp - 0xc]
sub eax, dword [esi + 0xa4]
jmp 0x40d4c1
mov eax, dword [esi + 0x20]
dec eax
inc edi
cmp edi, eax
jle 0x40d49a
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl case.default.0x40d2af
jmp 0x40d5b9
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
test eax, eax
je case.default.0x40d2af
cmp dword [esi + 0x54], 0
jne 0x40d4b8
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0xa4]
add eax, dword [ebp - 0xc]
push eax
push dword [esi + 0x54]
push esi
call fcn.0040cf96
add esp, 0xc
mov dword [esi + 0x4c], eax
jmp case.default.0x40d2af
mov eax, dword [esi + 0x4c]
and dword [esi + 0x54], 0
cmp eax, dword [esi + 0x50]
je 0x40d502
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40d502
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x50]
cmp ecx, eax
jbe 0x40d5b9
jmp 0x40d5ab
push edi
push esi
call fcn.0040b0b1
cmp dword [esi + 0x4c], eax
pop ecx
pop ecx
jne 0x40d517
dec edi
js case.default.0x40d2af
push edi
push esi
call fcn.0040b0b1
inc edi
mov ebx, eax
push edi
push esi
mov dword [ebp + 0x10], edi
call fcn.0040b0b1
add esp, 0x10
cmp ebx, eax
jae 0x40d57a
cmp ebx, dword [esi + 0x4c]
jae 0x40d57a
push ebx
push esi
mov dword [ebp - 4], ebx
call fcn.0040afcf
mov edi, eax
pop ecx
pop ecx
mov ax, word [edi]
cmp ax, 0xd
je 0x40d57a
cmp ax, 0xa
je 0x40d57a
push edi
push esi
call fcn.0040b516
pop ecx
cmp eax, 1
pop ecx
jne 0x40d56c
push edi
push esi
call fcn.0040b557
pop ecx
inc ebx
pop ecx
push dword [ebp + 0x10]
inc ebx
push esi
call fcn.0040b0b1
pop ecx
pop ecx
jmp 0x40d52e
mov eax, dword [ebp - 4]
mov ebx, dword [ebp + 8]
mov dword [esi + 0x4c], eax
jmp case.default.0x40d2af
mov eax, dword [esi + 0x4c]
and dword [esi + 0x54], 0
cmp eax, dword [esi + 0x50]
je 0x40d5c4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40d5c4
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x50]
cmp ecx, eax
jae 0x40d5b9
sub eax, ecx
sub dword [esi + 0x50], eax
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0x50]
add dword [esi + 0x4c], eax
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x50], eax
jmp case.default.0x40d2af
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
sub eax, dword [esi + 0x48]
sub eax, dword [esi + 0x40]
add ecx, eax
mov eax, dword [esi + 0x4c]
cmp eax, ecx
jae case.default.0x40d2af
lea edx, [eax + 1]
cmp edx, ecx
jae 0x40d608
push eax
push esi
call fcn.0040afcf
cmp word [eax], 0xd
pop ecx
pop ecx
jne 0x40d608
mov eax, dword [esi + 0x4c]
inc eax
push eax
push esi
call fcn.0040afcf
cmp word [eax], 0xa
pop ecx
pop ecx
jne 0x40d608
add dword [esi + 0x4c], 2
jmp case.default.0x40d2af
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xd
pop ecx
pop ecx
je 0x40d642
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
cmp word [eax], 0xa
pop ecx
pop ecx
je 0x40d642
push dword [esi + 0x4c]
push esi
call fcn.0040afcf
push eax
push esi
call fcn.0040b516
add esp, 0x10
cmp eax, 1
je 0x40d602
inc dword [esi + 0x4c]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40d658
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x50], eax
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x50]
je 0x40d66e
push eax
push dword [ebp + 0xc]
push esi
push ebx
call fcn.0040b606
add esp, 0x10
push dword [esi + 0x4c]
push dword [ebp + 0xc]
push esi
push ebx
call fcn.0040b606
push esi
push ebx
call fcn.0040ae88
add esp, 0x18
pop edi
pop esi
pop ebx
leave
ret