Function at 0x440a8d
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
push ebx
push esi
xor ebx, ebx
push edi
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov esi, eax
mov eax, dword [ebp + 0xc]
cmp eax, 0x200
je 0x440ad1
cmp eax, 0xa0
je 0x440ad1
cmp eax, 0x202
je 0x440ad1
cmp eax, 0x205
je 0x440ad1
cmp eax, 0x208
jne 0x440b68
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call edi
test ax, ax
jl 0x440b68
push 2
call edi
test ax, ax
jl 0x440b68
push 4
call edi
test ax, ax
jl 0x440b68
call dword [sym.imp.USER32.dll_GetMessagePos]
mov edi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x4c], eax
call dword [sym.imp.USER32.dll_GetMessageTime]
mov dword [ebp - 0x48], eax
movzx eax, di
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x58]
push eax
push ebx
shr edi, 0x10
push 0x407
mov dword [ebp - 0x40], edi
push dword [esi + 0x48]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
call edi
mov eax, dword [esi + 0x44]
cmp eax, ebx
je 0x440b68
mov ecx, dword [eax + 0xee0]
add eax, 0xee0
cmp ecx, 1
lea edx, [ecx + 1]
mov dword [eax], edx
jne 0x440b68
push ebx
push ebx
push 0x41c
push dword [esi + 0x48]
call edi
mov edi, dword [ebp + 0xc]
mov eax, 0x112
cmp edi, eax
ja 0x440f6d
je 0x440ded
cmp edi, 0x10
ja 0x440c96
je 0x440c8b
mov eax, edi
dec eax
dec eax
je 0x440c7b
sub eax, 5
je 0x440c56
dec eax
je 0x440c33
sub eax, 7
jne 0x441148
lea eax, [ebp - 0xb4]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_BeginPaint]
push 0xb
lea eax, [ebp - 0xac]
pop edi
push eax
lea eax, [ebp - 0x1c]
push eax
mov dword [ebp - 0x34], edi
call dword [sym.imp.USER32.dll_CopyRect]
lea eax, [ebp - 4]
push eax
push ebx
push 0x22
push dword [esi + 4]
call fcn.00403693
cmp dword [ebp - 4], 1
je 0x440c0b
lea eax, [ebp - 0x74]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x70]
add dword [ebp - 0x1c], ecx
add dword [ebp - 0x18], eax
add dword [ebp - 0x14], ecx
add dword [ebp - 0x10], eax
cmp dword [esi + 0x20], ebx
je 0x440c1c
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.00402799
lea eax, [ebp - 0xb4]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_EndPaint]
xor eax, eax
jmp 0x441158
push 0xc
pop edi
push 2
mov dword [ebp - 0x34], edi
push dword [esi + 4]
call fcn.0040366a
lea ecx, [ebp - 0x34]
push ecx
push edi
push eax
call fcn.004060bf
mov dword [esi + 0x14], ebx
jmp 0x440d46
mov eax, dword [esi + 0x44]
cmp dword [eax + 0x14], ebx
je 0x441148
cmp dword [esi + 0x1c], ebx
je 0x441148
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x441148
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetWindowLongA]
jmp 0x441148
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x440c2c
mov eax, edi
sub eax, 0x14
je 0x440c2c
sub eax, 0x3a
je 0x440d66
sub eax, 0xb4
je 0x440d01
sub eax, 0xf
jne 0x441148
cmp dword [esi + 0x34], ebx
je 0x441148
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test ax, ax
jne 0x441148
cmp word [ebp + 0x10], 9
ja 0x441148
push ebx
push dword [ebp + 0x10]
push 0x7ec1
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [esi + 0x34]
cmp eax, ebx
je 0x440cf9
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
mov dword [esi + 0x34], ebx
jmp 0x440c2c
cmp esi, ebx
je 0x441148
mov eax, dword [ebp + 0x14]
push 0xa
pop edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], edi
cmp dword [esi + 0x14], ebx
je 0x440d2c
movzx eax, byte [ebp + 0x10]
shl eax, 8
add dword [esi + 0x28], eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x14], ebx
jmp 0x440d55
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x440d4e
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x14], 1
mov dword [esi + 0x28], eax
mov edi, dword [ebp + 0xc]
jmp 0x441148
movzx eax, byte [ebp + 0x10]
mov dword [esi + 0x14], ebx
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.00402799
jmp 0x440d46
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
cmp eax, 0xfffffdf6
je 0x440ddf
cmp eax, 0xfffffdf7
je 0x440ddf
cmp eax, 0xfffffdf8
jne 0x441148
mov eax, dword [ebp + 0x14]
push 2
mov dword [eax + 0x60], ebx
push dword [esi + 4]
call fcn.0040366a
mov esi, eax
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x3c]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ScreenToClient]
lea eax, [ebp - 0x64]
push ebx
push eax
lea eax, [ebp - 0x3c]
push ebx
push eax
push ebx
push esi
call fcn.00405f27
cmp eax, ebx
je 0x441148
lea ecx, [ebp - 4]
push ecx
mov ecx, dword [ebp + 0x14]
add ecx, 0x10
push ecx
push 0x6d
push eax
call fcn.0040dfe2
jmp 0x441148
mov eax, dword [esi + 0x44]
mov dword [eax + 0xee0], ebx
jmp 0x441148
mov eax, dword [ebp + 0x10]
and eax, 0xfff0
sub eax, 0xf020
je 0x440ef2
sub eax, 0x40
je 0x440ebd
sub eax, 0xc0
je 0x440e3b
cmp dword [ebp + 0x10], 0x1000
jne 0x441148
push dword [esi + 4]
push sym.DEMO32.EXE_PlayerAbout
push dword [ebp + 8]
push 0x39
push dword [0x45ffcc]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
jmp 0x440c2c
mov eax, dword [0x45feb4]
cmp eax, ebx
je 0x440e59
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x440e59
push 9
push dword [0x45feb4]
jmp 0x440e5e
push 9
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ShowWindow]
cmp dword [esi + 0x24], ebx
je 0x440eaf
push 5
push dword [esi + 4]
call fcn.00403526
mov edi, eax
lea eax, [ebp - 4]
push eax
push ebx
push 0x36
push dword [esi + 4]
call fcn.00403693
mov eax, dword [ebp - 4]
and eax, 1
push eax
push 0xd
push edi
call fcn.00402a21
push edi
call fcn.00402a5c
push 0x10
push dword [esi + 4]
call fcn.00403526
cmp eax, ebx
je 0x440eaf
push 3
push eax
call fcn.00411c49
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_UpdateWindow]
jmp 0x440c2c
mov eax, dword [0x45fe60]
cmp eax, ebx
je 0x440c2c
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x440c2c
push ebx
push ebx
push dword [0x45fe6c]
push dword [0x45fe60]
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x440c2c
mov eax, dword [0x45feb4]
cmp eax, ebx
je 0x440f10
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x440f10
push 6
push dword [0x45feb4]
jmp 0x440f15
push 6
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ShowWindow]
push 5
mov dword [esi + 0x24], ebx
push dword [esi + 4]
call fcn.00403526
mov edi, eax
cmp edi, ebx
je 0x440c2c
push edi
call fcn.004029f3
cmp eax, 0xa
jne 0x440c2c
push edi
mov dword [esi + 0x24], 1
call fcn.00402a8c
push 0x10
push dword [esi + 4]
call fcn.00403526
cmp eax, ebx
je 0x440c2c
push 3
push eax
call fcn.00411be6
jmp 0x440c2c
mov eax, 0x214
cmp edi, eax
ja 0x441064
je 0x44104d
cmp edi, 0x114
je 0x441044
cmp edi, 0x115
je 0x44101c
cmp edi, 0x11f
je 0x440fea
cmp edi, 0x1ff
jbe 0x441148
cmp edi, 0x206
ja 0x441148
lea eax, [ebp - 4]
push eax
push ebx
push 0x22
push dword [esi + 4]
call fcn.00403693
cmp dword [ebp - 4], 1
jne 0x440fe6
push ebx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
push dword [ebp + 8]
push esi
call fcn.004413ba
add esp, 0x18
jmp 0x441148
push 1
jmp 0x440fce
cmp dword [esi + 0x34], ebx
je 0x441148
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cmp ax, 0xffff
jne 0x441148
cmp dword [ebp + 0x14], ebx
jne 0x441148
push ebx
push 0xffffffffffffffff
push 0x7ec1
push dword [ebp + 8]
jmp 0x440ee7
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push 1
push dword [ebp + 8]
call fcn.004415ce
add esp, 0x10
push 2
push dword [esi + 4]
call fcn.0040366a
push eax
call fcn.00405b1b
jmp 0x441148
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
jmp 0x441024
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 8]
push esi
call fcn.00441669
add esp, 0x10
jmp 0x441148
mov eax, edi
sub eax, 0x311
je 0x441106
sub eax, 0xa8
je 0x4410b2
sub eax, 0x54
je 0x4410a5
sub eax, 0x7ab4
jne 0x441148
or eax, 0xffffffff
cmp dword [ebp + 0x10], eax
je 0x441094
movzx eax, word [ebp + 0x10]
push eax
push dword [esi + 0x3c]
push dword [esi + 0x38]
call fcn.0043bdd9
jmp 0x441148
push dword [ebp + 0x14]
call fcn.0041369d
jmp 0x441148
push 0x10
push dword [esi + 4]
call fcn.00403526
cmp eax, ebx
je 0x4410cf
cmp dword [ebp + 0x10], 1
jne 0x4410cf
push dword [ebp + 0x14]
push eax
call fcn.00411a19
push 0x11
push dword [esi + 4]
call fcn.00403526
cmp eax, ebx
je 0x441148
cmp dword [ebp + 0x10], 1
jne 0x441148
push dword [ebp + 0x14]
push eax
call fcn.00412e00
test eax, eax
je 0x441148
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebp + 8]
je 0x441148
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetFocus]
jmp 0x441148
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp + 8]
je 0x440c2c
mov eax, dword [esi + 0x44]
mov dword [esi + 0x1c], 1
cmp dword [eax + 0x14], ebx
je 0x441148
mov eax, dword [0x45feb4]
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
cmp eax, ebx
je 0x441141
push ebx
push ebx
push eax
call esi
push dword [0x45feb4]
call dword [sym.imp.USER32.dll_UpdateWindow]
push ebx
push ebx
push dword [ebp + 8]
call esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DefWindowProcA]
pop edi
pop esi
pop ebx
leave
ret 0x10