Function at 0x407870
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4beac8
push eax
mov eax, dword [ebp + 0xc]
mov dword fs:[0], esp
sub esp, 0x200
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
mov ebx, ecx
cmp eax, 0x281
ja 0x407942
je 0x40792f
sub eax, 0x10d
je 0x407905
sub eax, 1
je 0x4078e5
sub eax, 1
jne case.0x407957.647
push edi
push esi
lea eax, [ebp - 0x20c]
push str.WM_IME_COMPOSITION:_wParam0x_08X__lParam0x_08X_n
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
mov ecx, ebx
call fcn.00407670
jmp case.0x407957.647
push edi
push esi
lea ecx, [ebp - 0x20c]
push str.WM_IME_ENDCOMPOSITION:_wParam0x_08X__lParam0x_08X_n
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
mov byte [ebx + 0x71ad], 0
jmp 0x407a63
push edi
push esi
lea edx, [ebp - 0x20c]
push str.WM_IME_STARTCOMPOSITION:_wParam0x_08X__lParam0x_08X_n
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
mov ecx, ebx
call fcn.00407670
mov byte [ebx + 0x71ad], 1
jmp case.0x407957.647
push edi
push esi
push str.WM_IME_SETCONTEXT:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x20c]
push eax
jmp 0x407a5d
add eax, 0xfffffd7e
cmp eax, 0xf
ja case.0x407957.647
movzx ecx, byte [eax + 0x407ab0]
jmp dword [ecx*4 + 0x407a8c]
push edi
movzx edx, si
push esi
push edx
lea eax, [ebp - 0x20c]
push str.WM_IME_CHAR:_char_c__wParam_u__lParam0x_08X_n
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea ecx, [ebp + 0x14]
call fcn.004a4720
lea ecx, [ebp + 0x14]
push 0
push ecx
mov dword [ebp - 4], 0
call fcn.0049f8f0
add esp, 8
test eax, eax
jl 0x4079ba
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edi
push esi
push edx
push eax
lea ecx, [ebp + 0x14]
call fcn.004a4800
mov ecx, eax
call fcn.004a4a70
mov ecx, eax
call fcn.0047daa0
lea ecx, [ebp + 0x14]
mov dword [ebp - 4], 0xffffffff
call fcn.004a4770
jmp case.0x407957.647
push edi
push esi
push str.WM_IME_COMPOSITIONFULL:_wParam0x_08X__lParam0x_08X_n
jmp 0x407a56
push edi
push esi
push str.WM_IME_CONTROL:_wParam0x_08X__lParam0x_08X_n
lea edx, [ebp - 0x20c]
push edx
jmp 0x407a5d
push edi
push esi
push str.WM_IME_KEYDOWN:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x20c]
push eax
jmp 0x407a5d
push edi
push esi
push str.WM_IME_KEYUP:_wParam0x_08X__lParam0x_08X_n
jmp 0x407a56
push edi
push esi
lea edx, [ebp - 0x20c]
push str.WM_IME_NOTIFY:_wParam0x_08X__lParam0x_08X_n
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
cmp esi, 8
jne case.0x407957.647
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
mov cx, ax
mov edx, 0x8000
and cx, dx
xor eax, eax
cmp cx, dx
sete al
mov byte [ebx + 0x71ae], al
jmp case.0x407957.647
push edi
push esi
push str.WM_IME_REQUEST:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x20c]
push eax
jmp 0x407a5d
push edi
push esi
push str.WM_IME_SELECT:_wParam0x_08X__lParam0x_08X_n
lea ecx, [ebp - 0x20c]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edi
push esi
push edx
push eax
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10