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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x254
mov eax, dword [0x5bd254]
xor eax, ebp
mov dword [ebp - 0x18], eax
mov dword [ebp - 8], 0
cmp dword [0x6a26c0], 0
jne 0x406a47
cmp dword [0x6013e8], 0
je 0x406a3d
xor eax, eax
cmp dword [0x6013e4], 0
sete al
mov dword [0x6013e4], eax
mov dword [0x6a26c0], 1
mov ecx, dword [ebp + 8]
push ecx
call sym.convertifd.exe_ImmGetContext
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0xc]
and edx, 8
je 0x406a9f
push 0x200
push 0
push sym.convertifd.exe_szCompStr
call fcn.00511e90
add esp, 0xc
push 0x200
push sym.convertifd.exe_szCompStr
push 8
mov eax, dword [ebp - 4]
push eax
call sym.convertifd.exe_ImmGetCompositionStringA
mov dword [sym.convertifd.exe_dwCompStrLen], eax
mov ecx, dword [sym.convertifd.exe_dwCompStrLen]
mov byte [ecx + sym.convertifd.exe_szCompStr], 0
mov dword [ebp - 8], 1
jmp 0x406ab0
mov dword [sym.convertifd.exe_dwCompStrLen], 0
mov byte [sym.convertifd.exe_szCompStr], 0
mov edx, dword [ebp + 0xc]
and edx, 0x10
je 0x406adb
push 0x200
push sym.convertifd.exe_bCompAttr
push 0x10
mov eax, dword [ebp - 4]
push eax
call sym.convertifd.exe_ImmGetCompositionStringA
mov dword [sym.convertifd.exe_dwCompAttrLen], eax
mov dword [ebp - 8], 1
jmp 0x406aec
mov dword [sym.convertifd.exe_dwCompAttrLen], 0
mov byte [sym.convertifd.exe_bCompAttr], 0
mov ecx, dword [ebp + 0xc]
and ecx, 0x20
je 0x406b17
push 0x200
push sym.convertifd.exe_dwCompCls
push 0x20
mov edx, dword [ebp - 4]
push edx
call sym.convertifd.exe_ImmGetCompositionStringA
mov dword [sym.convertifd.exe_dwCompClsLen], eax
mov dword [ebp - 8], 1
jmp 0x406b35
mov dword [sym.convertifd.exe_dwCompClsLen], 0
mov dword [sym.convertifd.exe_dwCompCls], 0
mov dword [0x6a3384], 0
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [ebp + 8]
push ecx
call sym.convertifd.exe_ImmReleaseContext
cmp dword [ebp - 8], 0
je 0x406b54
mov edx, dword [ebp + 8]
push edx
call sym.convertifd.exe_IME_ReFlashDraw
add esp, 4
call fcn.00407480
test eax, eax
jne 0x406b6b
mov eax, dword [ebp + 0xc]
and eax, 0x800
je 0x406c4b
call sym.convertifd.exe_DeHiliteText
lea ecx, [ebp - 0xc]
push ecx
call sym.convertifd.exe_IsAsianDBCSEnv
add esp, 4
test eax, eax
je 0x406c22
cmp dword [ebp - 0xc], 0x3b5
jne 0x406c22
mov edx, dword [0x6a26b0]
sub edx, dword [0x6013f0]
mov dword [0x6a26b0], edx
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x10]
cmp eax, dword [0x6013f0]
jge 0x406c22
mov ecx, dword [ebp - 0x10]
add ecx, 0x6011d0
push ecx
push 0x6011d0
call fcn.00513d14
add esp, 8
neg eax
sbb eax, eax
neg eax
add eax, 1
mov dword [ebp - 0x14], eax
mov edx, dword [0x6a26b0]
mov dword [0x6a26c8], edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [0x6a26b0]
lea edx, [ecx + eax - 1]
mov dword [0x6a26cc], edx
push 0
call sym.convertifd.exe_DeleteText
add esp, 4
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov dword [0x6a26cc], 0xffffffff
mov ecx, dword [0x6a26cc]
mov dword [0x6a26c8], ecx
jmp 0x406baa
mov dword [0x6013f0], 0
cmp dword [sym.convertifd.exe_dwCompStrLen], 0
ja 0x406c4b
push 1
push 2
call sym.convertifd.exe_TextCursorOperation
add esp, 8
mov eax, 1
jmp 0x40713d
cmp dword [0x6013ec], 0
je 0x406c65
mov dword [0x6013f0], 0
xor eax, eax
jmp 0x40713d
cmp dword [sym.convertifd.exe_dwCompStrLen], 0
jb 0x40713b
mov dword [ebp - 0x228], 0xffffffff
mov edx, 0xc8
cmp edx, dword [sym.convertifd.exe_dwCompStrLen]
sbb eax, eax
neg eax
mov dword [ebp - 0x224], eax
je 0x406ca7
mov ecx, dword [sym.convertifd.exe_dwCompStrLen]
sub ecx, 0xc8
mov dword [ebp - 0x250], ecx
jmp 0x406cb1
mov dword [ebp - 0x250], 0
mov edx, dword [ebp - 0x250]
add edx, sym.convertifd.exe_szCompStr
push edx
lea eax, [ebp - 0x218]
push eax
call fcn.00513670
add esp, 8
lea ecx, [ebp - 0x218]
push ecx
call fcn.005138b0
add esp, 4
mov dword [ebp - 0x22c], eax
call sym.convertifd.exe_DeHiliteText
mov edx, dword [0x6a26b0]
sub edx, dword [0x6013f0]
mov dword [0x6a26b0], edx
mov eax, dword [0x6a26b0]
mov dword [ebp - 0x220], eax
mov dword [0x6a26cc], 0xffffffff
mov ecx, dword [0x6a26cc]
mov dword [0x6a26c8], ecx
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x230], 0
mov edx, dword [ebp - 0x230]
cmp edx, dword [0x6013f0]
jge 0x406e68
mov eax, dword [ebp - 0x21c]
lea ecx, [ebp + eax - 0x218]
push ecx
lea edx, [ebp - 0x218]
push edx
call fcn.00513d14
add esp, 8
neg eax
sbb eax, eax
neg eax
add eax, 1
mov dword [ebp - 0x234], eax
mov eax, dword [ebp - 0x230]
add eax, 0x6011d0
push eax
push 0x6011d0
call fcn.00513d14
add esp, 8
neg eax
sbb eax, eax
neg eax
add eax, 1
mov dword [ebp - 0x238], eax
mov ecx, dword [ebp - 0x234]
cmp ecx, dword [ebp - 0x238]
jne 0x406dd9
cmp dword [ebp - 0x228], 0
jge 0x406dd9
mov edx, dword [ebp - 0x234]
push edx
mov eax, dword [ebp - 0x21c]
lea ecx, [ebp + eax - 0x218]
push ecx
mov edx, dword [ebp - 0x230]
add edx, 0x6011d0
push edx
call fcn.00513bae
add esp, 0xc
test eax, eax
je 0x406e2f
mov eax, dword [0x6a26b0]
mov dword [0x6a26c8], eax
mov ecx, dword [ebp - 0x238]
mov edx, dword [0x6a26b0]
lea eax, [edx + ecx - 1]
mov dword [0x6a26cc], eax
push 0
call sym.convertifd.exe_DeleteText
add esp, 4
cmp dword [ebp - 0x228], 0
jge 0x406e17
mov ecx, dword [ebp - 0x21c]
mov dword [ebp - 0x228], ecx
mov dword [0x6a26cc], 0xffffffff
mov edx, dword [0x6a26cc]
mov dword [0x6a26c8], edx
jmp 0x406e3f
mov eax, dword [0x6a26b0]
add eax, dword [ebp - 0x238]
mov dword [0x6a26b0], eax
mov ecx, dword [ebp - 0x21c]
add ecx, dword [ebp - 0x234]
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x230]
add edx, dword [ebp - 0x238]
mov dword [ebp - 0x230], edx
jmp 0x406d2e
cmp dword [0x6013d8], 0
je 0x406f61
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x21c], 0
mov eax, dword [ebp - 0x21c]
cmp eax, dword [ebp - 0x22c]
jge 0x406ee6
mov ecx, dword [ebp - 0x21c]
lea edx, [ebp + ecx - 0x218]
push edx
lea eax, [ebp - 0x218]
push eax
call fcn.00513d14
add esp, 8
neg eax
sbb eax, eax
neg eax
add eax, 1
mov dword [ebp - 0x240], eax
mov ecx, dword [ebp - 0x21c]
add ecx, dword [ebp - 0x240]
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x23c]
add edx, 1
mov dword [ebp - 0x23c], edx
jmp 0x406e89
mov eax, dword [0x6013dc]
mov dword [ebp - 0x21c], eax
jmp 0x406f02
mov ecx, dword [ebp - 0x21c]
add ecx, 1
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x21c]
cmp edx, dword [ebp - 0x23c]
jge 0x406f30
mov eax, dword [0x6a26b0]
push eax
call fcn.00407ad0
add esp, 4
test eax, eax
jne 0x406f24
jmp 0x406f30
push 1
call sym.convertifd.exe_DeleteText
add esp, 4
jmp 0x406ef3
mov ecx, dword [0x6013dc]
cmp ecx, dword [ebp - 0x23c]
jle 0x406f61
mov edx, dword [0x6a26b0]
mov dword [ebp - 0x244], edx
call fcn.00407ca0
mov eax, dword [ebp - 0x244]
mov dword [0x6a26b0], eax
call sym.convertifd.exe_RelocateTextCursor
jmp 0x406f30
cmp dword [ebp - 0x228], 0
jge 0x406f78
mov ecx, dword [0x6013f0]
mov dword [ebp - 0x254], ecx
jmp 0x406f84
mov edx, dword [ebp - 0x228]
mov dword [ebp - 0x254], edx
mov eax, dword [ebp - 0x254]
mov dword [ebp - 0x228], eax
mov ecx, dword [ebp - 0x22c]
mov dword [0x6013f0], ecx
lea edx, [ebp - 0x218]
push edx
push 0x6011d0
call fcn.00513670
add esp, 8
cmp dword [ebp - 0x224], 0
je 0x406fcc
push 0
push sym.convertifd.exe_szCompStr
mov eax, dword [ebp + 8]
push eax
call fcn.004071e0
add esp, 0xc
push 1
mov ecx, dword [ebp - 0x228]
lea edx, [ebp + ecx - 0x218]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.004071e0
add esp, 0xc
mov ecx, dword [0x6a26b0]
cmp ecx, dword [ebp - 0x220]
jle 0x4070b8
mov edx, dword [ebp - 0x220]
mov dword [0x6a26c8], edx
mov eax, dword [0x6a26b0]
sub eax, 1
mov dword [0x6a26cc], eax
mov dword [0x6a2bc4], 0xffffffff
mov ecx, dword [0x6a2bc4]
mov dword [0x6a2bc0], ecx
mov dword [ebp - 0x24c], 0
mov edx, dword [0x6a26b0]
sub edx, dword [sym.convertifd.exe_dwCompAttrLen]
mov dword [ebp - 0x248], edx
jmp 0x407065
mov eax, dword [ebp - 0x24c]
add eax, 1
mov dword [ebp - 0x24c], eax
mov ecx, dword [ebp - 0x248]
add ecx, 1
mov dword [ebp - 0x248], ecx
mov edx, dword [ebp - 0x24c]
cmp edx, dword [sym.convertifd.exe_dwCompAttrLen]
jge 0x4070a7
mov eax, dword [ebp - 0x24c]
movzx ecx, byte [eax + sym.convertifd.exe_bCompAttr]
and ecx, 1
je 0x4070a5
cmp dword [0x6a2bc0], 0
jge 0x40709a
mov edx, dword [ebp - 0x248]
mov dword [0x6a2bc0], edx
mov eax, dword [ebp - 0x248]
mov dword [0x6a2bc4], eax
jmp 0x407047
call sym.convertifd.exe_IME_CheckChanged
call fcn.004077c0
call sym.convertifd.exe_HiliteText
jmp 0x4070da
mov dword [0x6a26cc], 0xffffffff
mov ecx, dword [0x6a26cc]
mov dword [0x6a26c8], ecx
push 1
push 2
call sym.convertifd.exe_TextCursorOperation
add esp, 8
cmp dword [sym.convertifd.exe_dwCompStrLen], 0
jne 0x40713b
cmp dword [0x6013d8], 0
je 0x40713b
cmp dword [0x6013e0], 0
je 0x40713b
mov edx, dword [0x6013e0]
movzx eax, byte [edx]
test eax, eax
je 0x40713b
mov ecx, dword [0x6013e0]
push ecx
call fcn.005138b0
add esp, 4
push eax
mov edx, dword [0x6013e0]
push edx
call sym.convertifd.exe_IpTextChars
add esp, 8
mov eax, dword [ebp - 0x220]
mov dword [0x6a26c8], eax
mov ecx, dword [0x6a26b0]
sub ecx, 1
mov dword [0x6a26cc], ecx
xor eax, eax
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.00511a80
mov esp, ebp
pop ebp
ret