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

Disassembly:
sub esp, 0x110
push ebx
push ebp
mov ebp, dword [esp + 0x120]
mov eax, dword [ebp + 4]
cmp eax, 0x100
push esi
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push edi
je 0x47173c
cmp eax, 0x104
jne 0x471c55
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
push 0x3eb
push ecx
call esi
mov edi, eax
test edi, edi
je 0x4717a7
push 0x415
push edi
call esi
mov ebx, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, ebx
jne 0x4717a7
cmp dword [ebp + 8], 0x20
jne 0x4717a7
push 0
push 9
push 0x110a
push 0x415
push edi
call esi
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov edx, dword [esp + 0x124]
push eax
push edi
push edx
call fcn.0046f310
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
push 0x3ea
push ecx
call esi
mov edi, eax
test edi, edi
je 0x471814
call dword [sym.imp.USER32.dll_GetFocus]
push 0x477
mov ebx, eax
push edi
mov dword [esp + 0x18], ebx
call esi
cmp ebx, eax
je 0x4717e2
push 0x476
push edi
call esi
cmp ebx, eax
jne 0x471814
call fcn.0044cb80
mov ebx, eax
mov eax, dword [ebp + 8]
add eax, 0xfffffff8
cmp eax, 0xdd
ja case.0x471801.10
movzx edx, byte [eax + 0x471d80]
jmp dword [edx*4 + 0x471d68]
test ebx, 0xfffffffa
jne case.0x471801.10
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
push 0x3ed
push ecx
call esi
mov ebx, eax
test ebx, ebx
je 0x471afe
push 0x423
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
jne 0x471afe
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
cmp eax, 0xd5
ja case.0x47185f.19
movzx edx, byte [eax + 0x471e6c]
jmp dword [edx*4 + 0x471e60]
test ebx, ebx
je 0x471814
jmp case.0x471801.10
test ebx, ebx
jne case.0x471801.10
mov eax, dword [0x4b177c]
mov ecx, dword [eax + 0x2cc]
mov esi, dword [esp + 0x10]
push ecx
push esi
call fcn.00448ee0
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
add esp, 8
push 0xffffffffffffffff
push ebx
push 0xb1
push esi
call edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push esi
call edi
push ebx
push 0xffffffffffffffeb
push esi
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov ecx, dword [esp + 0x124]
call fcn.0046d4b0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov edx, dword [ebp]
push edx
call sub.IMM32.dll_ImmGetVirtualKey
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
push eax
push ebx
push 0
push 0
lea ecx, [esp + 0x30]
push 0x100
push ecx
call fcn.00445090
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x38]
push edx
push eax
call fcn.00448ee0
shl ebx, 8
or ebx, dword [ebp + 8]
mov ebp, dword [esp + 0x30]
add esp, 0x20
shl ebx, 0x10
push ebx
push 0xffffffffffffffeb
push ebp
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0x477
push edi
call esi
cmp ebp, eax
mov ebp, dword [sym.imp.USER32.dll_SendMessageW]
jne 0x471991
push 0x476
push edi
call esi
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
cmp eax, ebx
jne 0x4719fe
mov ecx, dword [0x4b177c]
mov edx, dword [ecx + 0x2cc]
push edx
push 0x476
push edi
call esi
push eax
call fcn.00448ee0
add esp, 8
push 0xffffffffffffffff
push 0
push 0xb1
push 0x476
push edi
call esi
push eax
call ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x476
push edi
call esi
push eax
call ebp
push 0x476
jmp 0x4719f0
push 0x477
push edi
call esi
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
cmp eax, ebx
jne 0x4719fe
mov eax, dword [0x4b177c]
mov ecx, dword [eax + 0x2cc]
push ecx
push 0x477
push edi
call esi
push eax
call fcn.00448ee0
add esp, 8
push 0xffffffffffffffff
push 0
push 0xb1
push 0x477
push edi
call esi
push eax
call ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x477
push edi
call esi
push eax
call ebp
push 0x477
push edi
call esi
push 0
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov esi, dword [esp + 0x10]
push 0xffffffffffffffff
push 0
push 0xb1
push esi
call ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push esi
call ebp
mov eax, dword [esp + 0x124]
cmp byte [eax + 0x16a], 0
je 0x471a3a
mov edx, dword [eax]
push 0x3e9
push edx
call fcn.004490b0
add esp, 8
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov eax, dword [ebp]
push eax
call sub.IMM32.dll_ImmGetVirtualKey
mov dword [ebp + 8], eax
call fcn.0044cb80
mov ecx, dword [ebp + 8]
push ecx
mov edi, eax
push edi
push 0
push 0
lea edx, [esp + 0x30]
push 0x100
push edx
call fcn.00445090
add esp, 0x18
lea eax, [esp + 0x20]
push eax
push 0x423
push ebx
call esi
push eax
call fcn.00448ee0
add esp, 8
shl edi, 8
or edi, dword [ebp + 8]
push 0x423
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 0x423
push ebx
call esi
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xb1
push 0x423
push ebx
call esi
push eax
call edi
mov esi, dword [esp + 0x124]
push ebx
mov ecx, esi
call fcn.0046e8c0
push ebx
mov ecx, esi
call fcn.0046eb40
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
mov ecx, dword [esp + 0x124]
mov edx, dword [ecx]
push 0x3ee
push edx
call esi
mov ebx, eax
test ebx, ebx
je 0x471b4c
push 0x42b
push ebx
call esi
mov edi, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, edi
jne 0x471b4c
cmp dword [ebp + 8], 0x2e
jne 0x471b4c
mov ecx, dword [esp + 0x124]
push ebx
call fcn.0046ed70
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x110
ret
call fcn.00455370
mov edi, dword [ebp + 8]
cmp edi, 9
mov ebx, eax
jne 0x471b82
test bl, 0x24
jne 0x471b65
test bl, 8
jne 0x471bbf
cmp edi, 9
jne 0x471b82
push 1
push 1
push 0
push ebx
call fcn.0045f940
add esp, 0x10
test eax, eax
je 0x471b82
or ebx, 0xffffffff
jmp 0x471bc4
cmp edi, 0x21
jne 0x471b9f
push 1
push 0
push 0
push ebx
call fcn.0045f940
add esp, 0x10
test eax, eax
je 0x471b9f
or ebx, 0xffffffff
jmp 0x471bc4
cmp edi, 0x22
jne 0x471c55
push 1
push 0
push 0
push ebx
call fcn.0045f940
add esp, 0x10
test eax, eax
je 0x471c55
mov ebx, 1
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
push 0x3e8
push ecx
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 ebp, eax
call edi
test ebx, ebx
jge 0x471c05
sub ebp, 1
jns 0x471c0e
lea ebp, [eax - 1]
jmp 0x471c0e
add ebp, 1
cmp ebp, eax
jl 0x471c0e
xor ebp, ebp
push 0
push ebp
push 0x130c
push esi
call edi
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0xfffffdd9
push 0x4e
push ecx
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 eax, dword [ebp + 4]
cmp eax, 0x200
jb 0x471cf5
cmp eax, 0x20d
ja 0x471cf5
mov edx, dword [esp + 0x124]
mov eax, dword [edx]
push 0x3ea
push eax
call esi
mov ebx, eax
test ebx, ebx
je 0x471cd1
mov edi, dword [ebp]
push 0x476
push ebx
call esi
cmp edi, eax
je 0x471ca3
mov edi, dword [ebp]
push 0x477
push ebx
call esi
cmp edi, eax
jne 0x471cd1
mov ebp, dword [ebp + 4]
cmp ebp, 0x201
je 0x471cba
cmp ebp, 0x204
jne case.0x47185f.16
push edi
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 [esp + 0x124]
mov edx, dword [ecx]
push 0x3ed
push edx
call esi
test eax, eax
je 0x471cf5
mov edi, dword [ebp]
push 0x423
push eax
call esi
cmp edi, eax
je 0x471ca3
cmp dword [ebp + 4], 0x7b
jne 0x471d5a
mov eax, dword [esp + 0x124]
mov ecx, dword [eax]
push 0x3ea
push ecx
call esi
mov edi, eax
test edi, edi
je 0x471d34
push 0x476
push edi
call esi
cmp dword [ebp], eax
je case.0x47185f.16
push 0x477
push edi
call esi
cmp dword [ebp], eax
je case.0x47185f.16
mov edx, dword [esp + 0x124]
mov eax, dword [edx]
push 0x3ed
push eax
call esi
test eax, eax
je 0x471d5a
push 0x423
push eax
call esi
cmp dword [ebp], eax
je case.0x47185f.16
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x110
ret