Function at 0x4445ee
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]
cmp dword [ebp + 0xc], 0xa0
mov esi, eax
je 0x444657
cmp dword [ebp + 0xc], 0x1ff
jbe 0x4446ee
cmp dword [ebp + 0xc], 0x202
jbe 0x444657
cmp dword [ebp + 0xc], 0x203
jbe 0x4446ee
cmp dword [ebp + 0xc], 0x205
jbe 0x444657
cmp dword [ebp + 0xc], 0x206
jbe 0x4446ee
cmp dword [ebp + 0xc], 0x208
ja 0x4446ee
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call edi
test ax, ax
jl 0x4446ee
push 2
call edi
test ax, ax
jl 0x4446ee
push 4
call edi
test ax, ax
jl 0x4446ee
call dword [sym.imp.USER32.dll_GetMessagePos]
mov edi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x5c], eax
call dword [sym.imp.USER32.dll_GetMessageTime]
mov dword [ebp - 0x58], eax
movzx eax, di
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x68]
push eax
push ebx
shr edi, 0x10
push 0x407
mov dword [ebp - 0x50], edi
push dword [esi + 0x48]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
call edi
mov eax, dword [esi + 0x44]
cmp eax, ebx
je 0x4446ee
mov ecx, dword [eax + 0xee0]
add eax, 0xee0
cmp ecx, 1
lea edx, [ecx + 1]
mov dword [eax], edx
jne 0x4446ee
push ebx
push ebx
push 0x41c
push dword [esi + 0x48]
call edi
mov edi, dword [ebp + 0xc]
mov eax, 0x112
cmp edi, eax
ja 0x444b56
je 0x4449d6
cmp edi, 0x10
ja 0x444881
je 0x444873
mov eax, edi
dec eax
dec eax
je 0x444863
dec eax
je 0x444808
sub eax, 4
je 0x4447e3
dec eax
je 0x4447c0
sub eax, 7
jne 0x444d2f
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.0040382e
cmp dword [ebp - 4], 1
je 0x444798
lea eax, [ebp - 0x44]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
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 0x4447a9
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.004029b5
lea eax, [ebp - 0xb4]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_EndPaint]
xor eax, eax
jmp 0x444d41
push 0xc
pop edi
push 2
mov dword [ebp - 0x34], edi
push dword [esi + 4]
call fcn.00403805
lea ecx, [ebp - 0x34]
push ecx
push edi
push eax
call fcn.00406ed9
mov dword [esi + 0x14], ebx
jmp 0x444d2f
mov eax, dword [esi + 0x44]
cmp dword [eax + 0x14], ebx
je 0x444d2f
cmp dword [esi + 0x1c], ebx
je 0x444d2f
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x444d2f
mov edi, dword [sym.imp.USER32.dll_GetWindow]
push ebx
push dword [ebp + 8]
call edi
mov esi, eax
cmp esi, ebx
je 0x444d2f
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x44485e
push esi
call dword [sym.imp.USER32.dll_GetParent]
cmp eax, dword [ebp + 8]
jne 0x44485e
lea eax, [ebp - 0x44]
push eax
push esi
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [ebp + 0x14]
push 0x15
shr eax, 0x10
add eax, dword [ebp - 0x40]
push ebx
push ebx
push eax
movzx eax, word [ebp + 0x14]
add eax, dword [ebp - 0x44]
push eax
push ebx
push esi
call dword [sym.imp.USER32.dll_SetWindowPos]
push 2
push esi
jmp 0x444812
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetWindowLongA]
jmp 0x444d2f
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x4447b9
mov eax, edi
sub eax, 0x14
je 0x4447b9
sub eax, 0x3a
je 0x444955
sub eax, 0xb4
je 0x4448f0
sub eax, 0xf
jne 0x444d2f
cmp dword [esi + 0x34], ebx
je 0x444d2f
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test ax, ax
jne 0x444d2f
cmp word [ebp + 0x10], 9
ja 0x444d2f
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 0x4448e8
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
mov dword [esi + 0x34], ebx
jmp 0x4447b9
cmp esi, ebx
je 0x444d2f
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 0x44492d
movzx eax, byte [ebp + 0x10]
shl eax, 8
add dword [esi + 0x28], eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x14], ebx
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.004029b5
jmp 0x444d2f
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x44494c
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x14], 1
mov dword [esi + 0x28], eax
jmp 0x444d2f
movzx eax, byte [ebp + 0x10]
mov dword [esi + 0x14], ebx
jmp 0x444919
mov edi, dword [ebp + 0x14]
mov eax, dword [edi + 8]
cmp eax, 0xfffffdf6
je 0x4449c8
cmp eax, 0xfffffdf7
je 0x4449c8
cmp eax, 0xfffffdf8
jne 0x444d2f
push 2
mov dword [edi + 0x60], ebx
push dword [esi + 4]
call fcn.00403805
mov esi, eax
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x4c]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ScreenToClient]
lea eax, [ebp - 0x74]
push ebx
push eax
lea eax, [ebp - 0x4c]
push ebx
push eax
push ebx
push esi
call fcn.00406d41
cmp eax, ebx
je 0x444d2f
lea ecx, [ebp - 4]
add edi, 0x10
push ecx
push edi
push 0x6d
push eax
call fcn.0040e55c
jmp 0x444d2f
mov eax, dword [esi + 0x44]
mov dword [eax + 0xee0], ebx
jmp 0x444d2f
mov eax, dword [ebp + 0x10]
and eax, 0xfff0
sub eax, 0xf020
je 0x444adb
sub eax, 0x40
je 0x444aa6
sub eax, 0xc0
je 0x444a24
cmp dword [ebp + 0x10], 0x1000
jne 0x444d2f
push dword [esi + 4]
push sym.DEMO32.EXE_PlayerAbout
push dword [ebp + 8]
push 0x39
push dword [0x46950c]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
jmp 0x4447b9
mov eax, dword [0x4693f4]
cmp eax, ebx
je 0x444a42
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x444a42
push 9
push dword [0x4693f4]
jmp 0x444a47
push 9
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ShowWindow]
cmp dword [esi + 0x24], ebx
je 0x444a98
push 5
push dword [esi + 4]
call fcn.004036c1
mov edi, eax
lea eax, [ebp - 4]
push eax
push ebx
push 0x36
push dword [esi + 4]
call fcn.0040382e
mov eax, dword [ebp - 4]
and eax, 1
push eax
push 0xd
push edi
call fcn.00402c3d
push edi
call fcn.00402c78
push 0x10
push dword [esi + 4]
call fcn.004036c1
cmp eax, ebx
je 0x444a98
push 3
push eax
call fcn.004123f5
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_UpdateWindow]
jmp 0x4447b9
mov eax, dword [0x4693a0]
cmp eax, ebx
je 0x4447b9
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4447b9
push ebx
push ebx
push dword [0x4693ac]
push dword [0x4693a0]
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x4447b9
mov eax, dword [0x4693f4]
cmp eax, ebx
je 0x444af9
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x444af9
push 6
push dword [0x4693f4]
jmp 0x444afe
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.004036c1
mov edi, eax
cmp edi, ebx
je 0x4447b9
push edi
call fcn.00402c0f
cmp eax, 0xa
jne 0x4447b9
push edi
mov dword [esi + 0x24], 1
call fcn.00402ca8
push 0x10
push dword [esi + 4]
call fcn.004036c1
cmp eax, ebx
je 0x4447b9
push 3
push eax
call fcn.00412392
jmp 0x4447b9
mov eax, 0x214
cmp edi, eax
ja 0x444c4d
je 0x444c36
cmp edi, 0x114
je 0x444c2d
cmp edi, 0x115
je 0x444c05
cmp edi, 0x11f
je 0x444bd3
cmp edi, 0x1ff
jbe 0x444d2f
cmp edi, 0x206
ja 0x444d2f
lea eax, [ebp - 4]
push eax
push ebx
push 0x22
push dword [esi + 4]
call fcn.0040382e
cmp dword [ebp - 4], 1
jne 0x444bcf
push ebx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
push dword [ebp + 8]
push esi
call fcn.00444fa3
add esp, 0x18
jmp 0x444d2f
push 1
jmp 0x444bb7
cmp dword [esi + 0x34], ebx
je 0x444d2f
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cmp ax, 0xffff
jne 0x444d2f
cmp dword [ebp + 0x14], ebx
jne 0x444d2f
push ebx
push 0xffffffffffffffff
push 0x7ec1
push dword [ebp + 8]
jmp 0x444ad0
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push 1
push dword [ebp + 8]
call fcn.004451b7
add esp, 0x10
push 2
push dword [esi + 4]
call fcn.00403805
push eax
call fcn.00406935
jmp 0x444d2f
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
jmp 0x444c0d
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 8]
push esi
call fcn.00445252
add esp, 0x10
jmp 0x444d2f
mov eax, edi
sub eax, 0x311
je 0x444cef
sub eax, 0xa8
je 0x444c9b
sub eax, 0x54
je 0x444c8e
sub eax, 0x7ab4
jne 0x444d2f
or eax, 0xffffffff
cmp dword [ebp + 0x10], eax
je 0x444c7d
movzx eax, word [ebp + 0x10]
push eax
push dword [esi + 0x3c]
push dword [esi + 0x38]
call fcn.0043f50a
jmp 0x444d2f
push dword [ebp + 0x14]
call fcn.00414884
jmp 0x444d2f
push 0x10
push dword [esi + 4]
call fcn.004036c1
cmp eax, ebx
je 0x444cb8
cmp dword [ebp + 0x10], 1
jne 0x444cb8
push dword [ebp + 0x14]
push eax
call fcn.00412161
push 0x11
push dword [esi + 4]
call fcn.004036c1
cmp eax, ebx
je 0x444d2f
cmp dword [ebp + 0x10], 1
jne 0x444d2f
push dword [ebp + 0x14]
push eax
call fcn.00413fed
test eax, eax
je 0x444d2f
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebp + 8]
je 0x444d2f
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetFocus]
jmp 0x444d2f
mov edi, dword [ebp + 8]
cmp dword [ebp + 0x10], edi
je 0x4447b9
mov eax, dword [esi + 0x44]
mov dword [esi + 0x1c], 1
cmp dword [eax + 0x14], ebx
je 0x444d2f
mov eax, dword [0x4693f4]
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
cmp eax, ebx
je 0x444d2a
push ebx
push ebx
push eax
call esi
push dword [0x4693f4]
call dword [sym.imp.USER32.dll_UpdateWindow]
push ebx
push ebx
push edi
call esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DefWindowProcA]
pop edi
pop esi
pop ebx
leave
ret 0x10