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

Disassembly:
push ebx
push esi
mov ax, word [0x5f074c]
push edi
push ebp
push ecx
mov word [esp], ax
mov al, byte [0x5f074e]
mov byte [esp + 2], al
mov edx, dword [0x629444]
dec edx
je 0x461bc1
dec edx
je 0x461c2a
dec edx
je 0x461c38
dec edx
je 0x461c46
jmp 0x461c8e
mov ebx, dword [0x610a90]
test ebx, ebx
je 0x461c24
push ebx
call sub.IMM32.DLL_ImmGetContext
mov esi, eax
test esi, esi
je 0x461c24
push 0x400
push 0
push 0x628c34
call fcn.0045ea68
add esp, 0xc
push 0x400
push 0
push 0x629035
call fcn.0045ea68
add esp, 0xc
push 0x400
push 0x629035
push 8
push esi
call sub.IMM32.DLL_ImmGetCompositionStringA
push 0
push 4
push 0x15
push esi
call sub.IMM32.DLL_ImmNotifyIME
push esi
push ebx
call sub.IMM32.DLL_ImmReleaseContext
inc dword [0x629444]
push 0
call fcn.0045d88c
pop ecx
inc dword [0x629444]
push 1
call fcn.0045d88c
pop ecx
inc dword [0x629444]
mov ebx, dword [0x610a90]
test ebx, ebx
je 0x461c87
push ebx
call sub.IMM32.DLL_ImmGetContext
mov esi, eax
test esi, esi
je 0x461c87
push 1
push esi
call sub.IMM32.DLL_ImmSetOpenStatus
push 0
push 0
push 0x629035
call sub.KERNEL32.DLL_lstrlenA
push eax
push 0x629035
push 9
push esi
call sub.IMM32.DLL_ImmSetCompositionStringA
push esi
push ebx
call sub.IMM32.DLL_ImmReleaseContext
xor eax, eax
mov dword [0x629444], eax
cmp dword [0x62988c], 0xffffffff
jne 0x461c9e
xor eax, eax
jmp 0x461faa
mov eax, dword [0x62988c]
test eax, 0x80000000
jne 0x461cf2
mov edx, eax
and edx, 0x78000000
cmp edx, 0x50000000
jne 0x461cf2
mov ecx, eax
and ecx, 0xffff
cmp ecx, 0x14
jge 0x461cf2
mov edx, eax
and edx, 0xffff
lea ebx, [edx + edx*4]
lea ebx, [edx + ebx*2]
shl ebx, 2
add ebx, 0x629894
cmp dword [ebx], 0
je 0x461cf2
mov edx, dword [ebx + 4]
shl edx, 0x10
and eax, 0x7ff0000
cmp edx, eax
je 0x461cfa
or eax, 0xffffffff
jmp 0x461faa
cmp dword [ebx + 8], 0
je case.0x461d3f.9
xor eax, eax
jmp 0x461faa
push 1
lea edx, [esp + 4]
push edx
call fcn.004618ac
add esp, 8
mov ebp, eax
test eax, eax
je 0x461fa8
call fcn.0045d918
movsx edx, byte [esp]
add edx, 0xfffffff8
cmp edx, 0x17
ja case.0x461d3f.8
mov dl, byte [edx + 0x461d46]
jmp dword [edx*4 + 0x461d5e]
mov dword [ebx + 8], 1
jmp case.0x461d3f.9
cmp dword [ebx + 0x20], 0
je case.0x461d3f.9
mov dword [ebx + 0xc], 1
mov dword [ebx + 8], 1
jmp case.0x461d3f.9
mov esi, dword [ebx + 0x18]
cmp esi, dword [ebx + 0x10]
je case.0x461d3f.9
mov eax, dword [0x61c0fc]
push eax
mov edx, dword [ebx + 0x1c]
add edx, esi
push edx
call fcn.0058edb4
add esp, 8
dec eax
jne 0x461dd6
mov ecx, 2
jmp 0x461ddb
mov ecx, 1
mov esi, ecx
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
sub ecx, eax
push ecx
mov ecx, eax
add ecx, esi
mov edx, dword [ebx + 0x1c]
add ecx, edx
push ecx
add edx, eax
push edx
call fcn.0045eaf0
add esp, 0xc
sub dword [ebx + 0x10], esi
jmp case.0x461d3f.9
mov esi, dword [ebx + 0x18]
test esi, esi
jle case.0x461d3f.9
cmp esi, 1
jle 0x461e3b
mov eax, dword [0x61c0fc]
push eax
add esi, dword [ebx + 0x1c]
add esi, 0xfffffffe
push esi
call fcn.0058edb4
add esp, 8
dec eax
jne 0x461e32
mov edx, 2
jmp 0x461e37
mov edx, 1
mov esi, edx
jmp 0x461e40
mov esi, 1
sub dword [ebx + 0x18], esi
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
sub ecx, eax
push ecx
mov ecx, eax
add ecx, esi
mov edx, dword [ebx + 0x1c]
add ecx, edx
push ecx
add edx, eax
push edx
call fcn.0045eaf0
add esp, 0xc
sub dword [ebx + 0x10], esi
jmp case.0x461d3f.9
mov eax, dword [ebx + 0x18]
test eax, eax
jle case.0x461d3f.9
cmp eax, 1
jle 0x461ea3
mov edx, dword [0x61c0fc]
push edx
add eax, dword [ebx + 0x1c]
add eax, 0xfffffffe
push eax
call fcn.0058edb4
add esp, 8
dec eax
jne 0x461e9b
sub dword [ebx + 0x18], 2
jmp case.0x461d3f.9
dec dword [ebx + 0x18]
jmp case.0x461d3f.9
dec dword [ebx + 0x18]
jmp case.0x461d3f.9
mov eax, dword [ebx + 0x18]
cmp eax, dword [ebx + 0x10]
jge case.0x461d3f.9
mov ecx, dword [0x61c0fc]
push ecx
mov edx, dword [ebx + 0x1c]
add edx, eax
push edx
call fcn.0058edb4
add esp, 8
dec eax
jne 0x461ed8
add dword [ebx + 0x18], 2
jmp case.0x461d3f.9
inc dword [ebx + 0x18]
jmp case.0x461d3f.9
cmp dword [ebx + 0x28], 0
je 0x461f05
mov al, byte [esp]
cmp al, 0x30
jb 0x461ef1
cmp al, 0x39
jbe 0x461f05
cmp byte [esp], 0x2d
jne case.0x461d3f.9
cmp dword [ebx + 0x18], 0
jne case.0x461d3f.9
cmp dword [ebx + 0x24], 0
je 0x461f5a
cmp ebp, 1
jne case.0x461d3f.9
jmp 0x461f5a
xor esi, esi
jmp 0x461f3f
mov eax, dword [0x61c0fc]
push eax
mov edx, dword [ebx + 0x1c]
add edx, esi
push edx
call fcn.0058edb4
add esp, 8
dec eax
jne 0x461f38
mov edi, 2
jmp 0x461f3d
mov edi, 1
add esi, edi
cmp esi, dword [ebx + 0x10]
jl 0x461f1a
mov eax, esi
sub eax, edi
mov edx, dword [ebx + 0x1c]
mov byte [edx + eax], 0
sub dword [ebx + 0x10], edi
cmp esi, dword [ebx + 0x18]
jne 0x461f5a
sub dword [ebx + 0x18], edi
mov ecx, dword [ebx + 0x10]
add ecx, ebp
cmp ecx, dword [ebx + 0x14]
jg 0x461f16
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x10]
sub ecx, eax
inc ecx
push ecx
mov edx, dword [ebx + 0x1c]
mov ecx, edx
add ecx, eax
add eax, ebp
add eax, edx
push ecx
push eax
call fcn.0045eaf0
add esp, 0xc
push ebp
lea eax, [esp + 4]
push eax
mov edx, dword [ebx + 0x1c]
add edx, dword [ebx + 0x18]
push edx
call fcn.0045eaf0
add esp, 0xc
add dword [ebx + 0x18], ebp
add dword [ebx + 0x10], ebp
cmp dword [ebx + 8], 0
je 0x461d0b
xor eax, eax
pop edx
pop ebp
pop edi
pop esi
pop ebx
ret
retf 0xf9c1