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

Disassembly:
push 0xffffffffffffffff
push 0x63f27b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, ecx
mov al, byte [esi + 0x9b]
test al, al
jne 0x42207a
mov al, byte [esi + 0x9a]
test al, al
je 0x421e5b
push 0x66c
call fcn.00614bf2
add esp, 4
mov dword [esp + 4], eax
test eax, eax
mov dword [esp + 0x10], 0
je 0x421e27
mov ecx, eax
call fcn.004acd40
jmp 0x421e29
xor eax, eax
push 0x43480000
push 0x43780000
push 0
push 0x7fbf38
mov ecx, eax
mov dword [esp + 0x20], 0xffffffff
call fcn.004ad860
pop esi
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
add esp, 0x10
ret 4
mov eax, dword [esi + 4]
push ebp
push edi
push 0
push 0
push 8
push eax
call sub.imm32.dll_ImmGetCompositionStringA
mov edi, dword [esi + 0x88]
mov ebp, dword [esi + 0x94]
mov ecx, edi
sub ecx, ebp
cmp eax, ecx
mov dword [esi + 0x8c], eax
jbe 0x421ea2
mov edx, ebp
sub edx, edi
add edx, eax
test dl, 1
je 0x421e9c
mov al, byte [esi + 0x99]
test al, al
je 0x421e9c
dec ecx
mov dword [esi + 0x8c], ecx
mov eax, dword [esi + 0x8c]
inc eax
push ebx
push eax
call fcn.00614c96
mov ecx, dword [esi + 0x8c]
add esp, 4
inc ecx
mov edx, ecx
mov ebx, eax
shr ecx, 2
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esi + 0x8c]
mov ecx, dword [esi + 4]
push eax
push ebx
push 8
push ecx
call sub.imm32.dll_ImmGetCompositionStringA
mov edx, dword [esi + 0x8c]
push 0xffffffffffffffff
push 0
lea eax, [esi + 0x40]
lea edi, [esi + 8]
push eax
mov ecx, edi
mov byte [ebx + edx], 0
call fcn.00403940
mov eax, ebx
lea ebp, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x421f02
mov ecx, dword [esi + 0x94]
sub eax, ebp
push eax
push ebx
push ecx
mov ecx, edi
call fcn.00420740
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x421f20
sub eax, edx
push eax
push ebx
lea ecx, [esi + 0x24]
call fcn.00403a30
push ebx
call fcn.00616a81
mov eax, dword [esi + 0x88]
mov ecx, dword [esi + 0x1c]
add esp, 4
cmp ecx, eax
jbe 0x421f68
mov ecx, dword [edi + 0x14]
cmp eax, ecx
ja 0x421f5c
push 0xffffffffffffffff
push eax
mov ecx, edi
call fcn.004036b0
jmp 0x421f68
sub eax, ecx
push 0
push eax
mov ecx, edi
call fcn.00406340
cmp dword [esi + 0xa0], 2
je 0x422077
mov edx, dword [esi + 4]
push 0
push 0
push 0x80
push edx
call sub.imm32.dll_ImmGetCompositionStringA
mov ecx, dword [esi + 0x8c]
cmp eax, ecx
jbe 0x421f93
mov eax, ecx
mov ecx, dword [esi + 0x94]
add eax, ecx
cmp eax, dword [esi + 0x88]
ja 0x421fa9
mov dword [esi + 0x90], eax
mov edx, dword [esi + 4]
push 0
push 0
push 0x10
push edx
call sub.imm32.dll_ImmGetCompositionStringA
mov ebx, eax
lea eax, [ebx + 1]
push eax
call fcn.00614c96
mov ebp, eax
mov ecx, ebx
mov edx, ecx
shr ecx, 2
xor eax, eax
add esp, 4
mov edi, ebp
rep stosd dword es:[edi], eax
push ebx
mov ecx, edx
and ecx, 3
push ebp
rep stosb byte es:[edi], al
mov eax, dword [esi + 4]
push 0x10
push eax
call sub.imm32.dll_ImmGetCompositionStringA
push ebx
push ebp
lea ecx, [esi + 0x5c]
mov byte [ebx + ebp], 0
call fcn.00403a30
push ebp
call fcn.00616a81
mov ecx, dword [esi + 4]
add esp, 4
push 0
push 0
push 0x20
push ecx
call sub.imm32.dll_ImmGetCompositionStringA
mov ebp, eax
mov ebx, ebp
shr ebx, 2
lea edx, [ebx*4]
push edx
call fcn.00614c96
mov edi, eax
mov ecx, ebp
mov edx, ecx
shr ecx, 2
xor eax, eax
add esp, 4
mov dword [esp + 0x10], edi
rep stosd dword es:[edi], eax
push ebp
mov ebp, dword [esp + 0x14]
mov ecx, edx
and ecx, 3
push ebp
rep stosb byte es:[edi], al
mov eax, dword [esi + 4]
push 0x20
push eax
call sub.imm32.dll_ImmGetCompositionStringA
add esi, 0x78
mov ecx, esi
call fcn.005e2880
test ebx, ebx
jbe 0x42206e
mov edi, ebp
nop
push edi
mov ecx, esi
call fcn.00421d40
add edi, 4
dec ebx
jne 0x422060
push ebp
call fcn.00616a81
add esp, 4
pop ebx
pop edi
pop ebp
mov ecx, dword [esp + 8]
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret 4