Function at 0x4196e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push ecx
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push ebx
push 0
mov esi, ecx
mov eax, dword [esi + 0x444]
push 0x407
push eax
call edi
mov ecx, dword [esi + 0x79c]
push ebx
push 0
push 0x407
push ecx
call edi
mov edx, dword [esi + 0x80c]
push ebx
push 0
push 0x407
push edx
call edi
mov eax, dword [ebx + 4]
sub eax, 0x100
je 0x4197c4
sub eax, 4
je 0x4197a8
sub eax, 0xff
jne case.0x4197da.10
mov edi, dword [sym.imp.USER32.dll_GetFocus]
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x4b4]
jne 0x41976c
call fcn.00417ae0
test al, al
jne 0x41996b
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov ecx, dword [eax + 0x20]
cmp ecx, dword [esi + 0x568]
jne case.0x4197da.10
call fcn.00417ae0
test al, al
je case.0x4197da.10
mov ecx, esi
call fcn.004185f0
push ebx
mov ecx, esi
call sub.mfc90.dll_Ordinal_5636
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [ebx + 8]
push edx
mov edi, esi
call fcn.00419530
push ebx
mov ecx, esi
call sub.mfc90.dll_Ordinal_5636
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebx + 8]
add eax, 0xfffffff7
cmp eax, 0x6e
ja case.0x4197da.10
movzx eax, byte [eax + 0x419aa8]
jmp dword [eax*4 + 0x419a88]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov edi, dword [sym.imp.USER32.dll_GetFocus]
mov ecx, 0x8000
test cx, ax
je 0x419861
lea ecx, [esi + 0x494]
call sub.mfc90.dll_Ordinal_4384
test eax, eax
je 0x41981b
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov edx, dword [eax + 0x20]
cmp edx, dword [esi + 0x4b4]
je 0x41983d
lea ecx, [esi + 0x494]
call sub.mfc90.dll_Ordinal_4384
test eax, eax
jne 0x419861
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x568]
jne 0x419861
lea ecx, [esi + 0x168]
call sub.mfc90.dll_Ordinal_6291
lea eax, [esi + 0x98]
call fcn.00402ed0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne case.0x4197da.10
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov edx, dword [eax + 0x20]
cmp edx, dword [esi + 0x748]
jne case.0x4197da.10
lea ecx, [esi + 0x26c]
jmp 0x419843
mov edi, dword [sym.imp.USER32.dll_GetFocus]
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x4b4]
jne 0x4198c4
mov ecx, esi
call fcn.004195e0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov ecx, dword [eax + 0x20]
cmp ecx, dword [esi + 0x568]
jne 0x4198ec
mov ecx, esi
call fcn.004185f0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov edx, dword [eax + 0x20]
cmp edx, dword [esi + 0x6f4]
je case.0x4197da.10
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x748]
je case.0x4197da.10
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esi + 0x20]
push 0
push 0
push 0x10
push ecx
call edi
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov edx, 0x8000
test dx, ax
je case.0x4197da.10
lea ecx, [esi + 0x494]
call sub.mfc90.dll_Ordinal_4384
test eax, eax
je case.0x4197da.10
mov ecx, esi
call fcn.004195e0
push ebx
mov ecx, esi
call sub.mfc90.dll_Ordinal_5636
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x748]
jne case.0x4197da.10
lea ecx, [esi + 0x26c]
jmp 0x419843
lea ebx, [esi + 0x494]
mov ecx, ebx
call sub.mfc90.dll_Ordinal_4384
mov edi, dword [sym.imp.USER32.dll_GetFocus]
test eax, eax
je 0x4199d7
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov ecx, dword [eax + 0x20]
cmp ecx, dword [esi + 0x4b4]
je 0x41983d
mov ecx, ebx
call sub.mfc90.dll_Ordinal_4384
test eax, eax
jne 0x4199f9
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov edx, dword [eax + 0x20]
cmp edx, dword [esi + 0x568]
je 0x41983d
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov eax, dword [eax + 0x20]
cmp eax, dword [esi + 0x6f4]
jne 0x419a2e
add esi, 0x6d4
mov ecx, esi
call sub.mfc90.dll_Ordinal_6291
mov eax, esi
call fcn.00402ed0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call edi
push eax
call sub.mfc90.dll_Ordinal_2592
mov ecx, dword [eax + 0x20]
cmp ecx, dword [esi + 0x748]
jne 0x419a72
lea ecx, [esi + 0x6d4]
call sub.mfc90.dll_Ordinal_4384
test eax, eax
jne 0x419a72
add esi, 0x728
mov ecx, esi
call sub.mfc90.dll_Ordinal_6291
mov eax, esi
call fcn.00402ed0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ebx, dword [ebp + 8]
push ebx
mov ecx, esi
call sub.mfc90.dll_Ordinal_5636
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4