Function at 0x40b860
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4d9408
push eax
mov eax, dword [ebp + 0xc]
mov dword fs:[0], esp
sub esp, 0x20c
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
mov ebx, ecx
cmp eax, 0x281
ja 0x40b932
je 0x40b91f
sub eax, 0x10d
je 0x40b8f5
sub eax, 1
je 0x40b8d5
sub eax, 1
jne case.0x40b947.647
push edi
push esi
lea eax, [ebp - 0x218]
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.0040b6f0
jmp case.0x40b947.647
push edi
push esi
lea ecx, [ebp - 0x218]
push str.WM_IME_ENDCOMPOSITION:_wParam0x_08X__lParam0x_08X_n
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
mov byte [ebx + 0x7659], 0
jmp 0x40ba53
push edi
push esi
lea edx, [ebp - 0x218]
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.0040b6f0
mov byte [ebx + 0x7659], 1
jmp case.0x40b947.647
push edi
push esi
push str.WM_IME_SETCONTEXT:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x218]
push eax
jmp 0x40ba4d
add eax, 0xfffffd7e
cmp eax, 0xf
ja case.0x40b947.647
movzx ecx, byte [eax + 0x40baa0]
jmp dword [ecx*4 + 0x40ba7c]
push edi
movzx edx, si
push esi
push edx
lea eax, [ebp - 0x218]
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 - 0x18]
call fcn.004bc8c0
lea ecx, [ebp - 0x18]
push 0
push ecx
mov dword [ebp - 4], 0
call fcn.004b69a0
add esp, 8
test eax, eax
jl 0x40b9aa
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edi
push esi
push edx
push eax
lea ecx, [ebp - 0x18]
call fcn.004bc9d0
mov ecx, eax
call fcn.004bcc80
mov ecx, eax
call fcn.0048f030
lea ecx, [ebp - 0x18]
mov dword [ebp - 4], 0xffffffff
call fcn.004bc960
jmp case.0x40b947.647
push edi
push esi
push str.WM_IME_COMPOSITIONFULL:_wParam0x_08X__lParam0x_08X_n
jmp 0x40ba46
push edi
push esi
push str.WM_IME_CONTROL:_wParam0x_08X__lParam0x_08X_n
lea edx, [ebp - 0x218]
push edx
jmp 0x40ba4d
push edi
push esi
push str.WM_IME_KEYDOWN:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x218]
push eax
jmp 0x40ba4d
push edi
push esi
push str.WM_IME_KEYUP:_wParam0x_08X__lParam0x_08X_n
jmp 0x40ba46
push edi
push esi
lea edx, [ebp - 0x218]
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.0x40b947.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 + 0x765a], al
jmp case.0x40b947.647
push edi
push esi
push str.WM_IME_REQUEST:_wParam0x_08X__lParam0x_08X_n
lea eax, [ebp - 0x218]
push eax
jmp 0x40ba4d
push edi
push esi
push str.WM_IME_SELECT:_wParam0x_08X__lParam0x_08X_n
lea ecx, [ebp - 0x218]
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