Function at 0x46c940
Capabilities:
Log keystrokes via input method manager

Disassembly:
sub esp, 0x110
push ebx
push ebp
mov ebp, dword [esp + 0x11c]
push esi
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push edi
mov edi, dword [esp + 0x128]
mov eax, dword [edi + 4]
cmp eax, 0x100
je 0x46c973
cmp eax, 0x104
jne 0x46ce0f
mov eax, dword [ebp]
push 0x3eb
push eax
call esi
mov ebx, eax
test ebx, ebx
je 0x46c9e3
push 0x416
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
jne 0x46c9d8
mov ecx, dword [esp + 0x128]
cmp dword [ecx + 8], 0x20
jne 0x46c9e1
push 0
push 9
push 0x110a
push 0x416
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push eax
push ebx
push ebp
call fcn.0046a360
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov edi, dword [esp + 0x128]
jmp 0x46c9e3
mov edi, ecx
mov edx, dword [ebp]
push 0x3ea
push edx
call esi
mov ebx, eax
test ebx, ebx
je 0x46cba1
push 0x46b
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
jne 0x46cb9a
call fcn.0044a6c0
mov edi, eax
mov eax, dword [esp + 0x128]
mov ecx, dword [eax + 8]
add ecx, 0xfffffff8
cmp ecx, 0xdd
ja case.0x46ca37.10
movzx ecx, byte [ecx + 0x46cefc]
jmp dword [ecx*4 + 0x46cee4]
test edi, 0xfffffffb
jne case.0x46ca37.10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x110
ret
test edi, edi
jmp 0x46ca44
test edi, edi
jne case.0x46ca37.10
mov edx, dword [0x4aa7bc]
mov eax, dword [edx + 0x2cc]
push eax
push 0x46b
push ebx
call esi
push eax
call fcn.00445470
add esp, 8
push 0xffffffffffffffff
push edi
push 0xb1
push 0x46b
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x46b
push ebx
call esi
push eax
call edi
push 0x46b
push ebx
call esi
push 0
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov ecx, ebp
call fcn.00468500
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov ecx, dword [eax]
push ecx
call sub.IMM32.dll_ImmGetVirtualKey
mov edx, dword [esp + 0x128]
mov dword [edx + 8], eax
mov eax, edx
mov eax, dword [eax + 8]
push eax
push edi
push 0
push 0
lea ecx, [esp + 0x30]
push 0x100
push ecx
call fcn.00441520
add esp, 0x18
lea edx, [esp + 0x20]
push edx
push 0x46b
push ebx
call esi
push eax
call fcn.00445470
mov eax, dword [esp + 0x130]
add esp, 8
shl edi, 8
or edi, dword [eax + 8]
push 0x46b
push ebx
shl edi, 0x10
call esi
push edi
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0xffffffffffffffff
push 0
push 0xb1
push 0x46b
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x46b
push ebx
call esi
push eax
call edi
cmp byte [ebp + 0x15e], 0
je 0x46cb8a
mov ecx, dword [ebp]
push 1
push 0x3e9
push ecx
call esi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov edi, dword [esp + 0x128]
mov edx, dword [ebp]
push 0x3ed
push edx
call esi
mov ebx, eax
test ebx, ebx
je 0x46ccaa
push 0x424
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
mov edi, dword [esp + 0x128]
jne 0x46ccaa
mov eax, dword [edi + 8]
add eax, 0xfffffff0
cmp eax, 0xd5
ja case.0x46cbe9.19
movzx eax, byte [eax + 0x46cfe8]
jmp dword [eax*4 + 0x46cfdc]
mov ecx, dword [edi]
push ecx
call sub.IMM32.dll_ImmGetVirtualKey
mov dword [edi + 8], eax
call fcn.0044a6c0
mov edx, dword [esp + 0x128]
mov edi, eax
mov eax, dword [edx + 8]
push eax
push edi
push 0
push 0
lea ecx, [esp + 0x30]
push 0x100
push ecx
call fcn.00441520
add esp, 0x18
lea edx, [esp + 0x20]
push edx
push 0x424
push ebx
call esi
push eax
call fcn.00445470
mov eax, dword [esp + 0x130]
add esp, 8
shl edi, 8
or edi, dword [eax + 8]
push 0x424
push ebx
shl edi, 0x10
call esi
push edi
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0xffffffffffffffff
push 0
push 0xb1
push 0x424
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x424
push ebx
call esi
push eax
call edi
push ebx
mov ecx, ebp
call fcn.00469920
push ebx
mov ecx, ebp
call fcn.00469ba0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov ecx, dword [ebp]
push 0x3ee
push ecx
call esi
mov ebx, eax
test ebx, ebx
je 0x46ccff
push 0x42a
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
jne 0x46ccf4
mov edx, dword [esp + 0x128]
cmp dword [edx + 8], 0x2e
jne 0x46ccfd
push ebx
mov ecx, ebp
call fcn.00469dd0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov edi, dword [esp + 0x128]
jmp 0x46ccff
mov edi, edx
call fcn.00450a40
mov edi, dword [edi + 8]
cmp edi, 9
mov ebx, eax
jne 0x46cd36
test bl, 0x24
jne 0x46cd18
test bl, 8
jne 0x46cd78
cmp edi, 9
jne 0x46cd36
test bl, 0x20
jne 0x46cd36
test bl, 4
je 0x46cd36
test bl, 8
je 0x46cd36
mov dword [esp + 0x10], 0xffffffff
jmp 0x46cd80
cmp edi, 0x21
jne 0x46cd58
push 1
push 0
push 0
push ebx
call fcn.0045aad0
add esp, 0x10
test eax, eax
je 0x46cd58
mov dword [esp + 0x10], 0xffffffff
jmp 0x46cd80
cmp edi, 0x22
jne 0x46ce08
push 1
push 0
push 0
push ebx
call fcn.0045aad0
add esp, 0x10
test eax, eax
je 0x46ce08
mov dword [esp + 0x10], 1
mov eax, dword [ebp]
push 0x3e8
push eax
call esi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
mov esi, eax
push 0x130b
push esi
call edi
push 0
push 0
push 0x1304
push esi
mov ebx, eax
call edi
cmp dword [esp + 0x10], 0
jge 0x46cdbe
sub ebx, 1
jns 0x46cdc7
lea ebx, [eax - 1]
jmp 0x46cdc7
add ebx, 1
cmp ebx, eax
jl 0x46cdc7
xor ebx, ebx
push 0
push ebx
push 0x130c
push esi
call edi
mov edx, dword [ebp]
lea ecx, [esp + 0x14]
push ecx
push 0xfffffdd9
push 0x4e
push edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], 0x3e8
mov dword [esp + 0x2c], 0xfffffdd9
call edi
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov edi, dword [esp + 0x128]
mov eax, dword [edi + 4]
cmp eax, 0x200
jb 0x46ce88
cmp eax, 0x20d
ja 0x46ce88
mov eax, dword [ebp]
push 0x3ea
push eax
call esi
test eax, eax
je 0x46ce6b
mov ebx, dword [edi]
push 0x46b
push eax
call esi
cmp ebx, eax
jne 0x46ce6b
mov edi, dword [edi + 4]
cmp edi, 0x201
je 0x46ce54
cmp edi, 0x204
jne case.0x46cbe9.16
push ebx
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov ecx, dword [ebp]
push 0x3ed
push ecx
call esi
test eax, eax
je 0x46ce88
mov ebx, dword [edi]
push 0x424
push eax
call esi
cmp ebx, eax
je 0x46ce3d
cmp dword [edi + 4], 0x7b
jne 0x46ca4a
mov edx, dword [ebp]
push 0x3ea
push edx
call esi
test eax, eax
je 0x46ceb1
push 0x46b
push eax
call esi
cmp dword [edi], eax
je case.0x46cbe9.16
mov eax, dword [ebp]
push 0x3ed
push eax
call esi
test eax, eax
je 0x46ca4a
push 0x424
push eax
call esi
cmp dword [edi], eax
jne 0x46ca4a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret