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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push dword [ebp + 8]
call sub.IMM32.dll_ImmGetContext
mov esi, eax
xor ebx, ebx
mov dword [ebp - 8], esi
cmp esi, ebx
je 0x102df3c
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xc], ecx
and dword [ebp - 0xc], 8
push edi
je 0x102dd79
push ebx
push ebx
push 8
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jge 0x102dd60
push esi
jmp 0x102df33
test byte [ebp + 0x10], 0x10
je 0x102dd91
push ebx
push ebx
push 0x10
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
cmp eax, ebx
mov dword [ebp - 4], eax
jl 0x102dd91
jmp 0x102dda1
mov eax, 0x800
test eax, ecx
je 0x102dd96
push ebx
push ebx
push eax
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jl 0x102dd5a
mov dword [ebp - 4], ebx
jmp 0x102dda1
cmp ecx, ebx
jne 0x102dd9e
xor edi, edi
jmp 0x102dd91
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov esi, dword [ebp + 0xc]
lea ecx, [eax + edi + 0x2f]
mov eax, dword [esi + 0x224]
mov dword [ebp - 0x10], ecx
cmp eax, ebx
je 0x102ddcc
cmp ecx, dword [eax]
jbe 0x102ddcc
push eax
call fcn.01029efb
pop ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi + 0x224], ebx
cmp dword [esi + 0x224], ebx
jne 0x102ddee
push ecx
call fcn.01029f08
pop ecx
mov dword [esi + 0x224], eax
cmp eax, ebx
je 0x102df30
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov esi, dword [esi + 0x224]
mov ecx, dword [esi]
sub ecx, 4
push ecx
lea eax, [esi + 4]
push ebx
push eax
mov dword [ebp + 0xc], eax
call sub.msvcrt.dll_memset
mov eax, 0x8007
mov word [esi + 0x20], ax
mov edx, eax
add esp, 0xc
mov word [esi + 0x1c], dx
add eax, 0x6a
cmp dword [ebp - 0xc], 0
mov word [esi + 0x22], ax
push 0x17
pop edx
mov word [esi + 0x1e], dx
mov eax, 0x8004
mov edx, eax
mov word [esi + 0x2a], ax
mov word [esi + 0x24], dx
mov word [esi + 0x26], dx
mov word [esi + 0x28], dx
mov dword [ebp - 0x1c], 0x4b425930
mov eax, dword [esi]
lea ebx, [esi + 0x2c]
lea ecx, [esi + edi + 0x2e]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], esi
je 0x102ded7
push edi
push ebx
push 8
push dword [ebp - 8]
call sub.IMM32.dll_ImmGetCompositionStringW
mov eax, edi
xor ecx, ecx
shr eax, 1
mov word [ebx + eax*2], cx
cmp dword [ebp - 4], ecx
je 0x102de8e
push dword [ebp - 4]
lea ebx, [esi + edi + 0x2e]
push ebx
push 0x10
push dword [ebp - 8]
call sub.IMM32.dll_ImmGetCompositionStringW
mov eax, dword [ebp - 4]
mov byte [ebx + eax], 0
push 0
push 0
push 0x80
push dword [ebp - 8]
call sub.IMM32.dll_ImmGetCompositionStringW
test eax, eax
jne 0x102deaa
or byte [esi + edi + 0x2e], 0x20
jmp 0x102deb5
lea ecx, [esi + edi + 0x2e]
lea eax, [ecx + eax - 1]
or byte [eax], 0x10
mov dword [esi + 0xc], edi
test edi, edi
je 0x102dec3
mov dword [esi + 0x10], 0x2c
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
test eax, eax
je 0x102df27
add edi, 0x2e
mov dword [esi + 8], edi
jmp 0x102df27
mov eax, 0x800
test dword [ebp + 0x10], eax
je 0x102df06
push edi
push ebx
push eax
push dword [ebp - 8]
call sub.IMM32.dll_ImmGetCompositionStringW
mov eax, edi
shr eax, 1
xor ecx, ecx
mov word [ebx + eax*2], cx
mov dword [esi + 0x14], edi
test edi, edi
je 0x102df27
mov dword [esi + 0x18], 0x2c
jmp 0x102df27
cmp dword [ebp + 0x10], 0
jne 0x102df27
mov eax, edi
shr eax, 1
xor edx, edx
mov word [ebx + eax*2], dx
mov eax, dword [ebp - 4]
mov byte [ecx + eax], dl
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x14], edi
mov dword [esi + 0xc], edi
mov dword [ecx], eax
lea eax, [ebp - 0x1c]
push eax
call fcn.01027af1
push dword [ebp - 8]
push dword [ebp + 8]
call sub.IMM32.dll_ImmReleaseContext
pop edi
pop esi
pop ebx
leave
ret 0xc