Function at 0x102e3d9
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 0x102e618
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xc], ecx
and dword [ebp - 0xc], 8
push edi
je 0x102e43b
push ebx
push ebx
push 8
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jge 0x102e41d
push esi
jmp 0x102e60f
test byte [ebp + 0x10], 0x10
je 0x102e436
push ebx
push ebx
push 0x10
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
cmp eax, ebx
mov dword [ebp - 4], eax
jl 0x102e45f
jmp 0x102e462
mov dword [ebp - 4], edi
jmp 0x102e462
mov eax, 0x800
test eax, ecx
je 0x102e455
push ebx
push ebx
push eax
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jl 0x102e417
jmp 0x102e45f
cmp ecx, ebx
jne 0x102e617
xor edi, edi
mov dword [ebp - 4], ebx
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 0x102e48d
cmp ecx, dword [eax]
jbe 0x102e48d
push eax
call fcn.01029f33
pop ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi + 0x224], ebx
cmp dword [esi + 0x224], ebx
jne 0x102e4af
push ecx
call fcn.01029f40
pop ecx
mov dword [esi + 0x224], eax
cmp eax, ebx
je 0x102e60c
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 - 0x10], 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
test dword [ebp + 0x10], 0x2000
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 ecx, [esi + edi + 0x2e]
lea ebx, [esi + 0x2c]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], esi
je 0x102e53f
mov ax, word [ebp + 0x14]
mov word [ebx], ax
shr edi, 1
xor eax, eax
mov word [ebx + edi*2], ax
mov eax, dword [ebp - 4]
mov byte [ecx], 1
mov byte [eax + ecx], 0
jmp 0x102e603
cmp dword [ebp - 0xc], 0
je 0x102e5b3
push edi
push ebx
push 8
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 ebx, dword [ebp - 4]
test ebx, ebx
je 0x102e594
test byte [ebp + 0x10], 0x10
je 0x102e57f
push ebx
push dword [ebp + 0xc]
push 0x10
push dword [ebp - 8]
call sub.IMM32.dll_ImmGetCompositionStringW
mov eax, dword [ebp + 0xc]
mov byte [ebx + eax], 0
jmp 0x102e594
test ebx, ebx
jl 0x102e594
lea eax, [ebx + 1]
push eax
push 1
push dword [ebp + 0xc]
call sub.msvcrt.dll_memset
add esp, 0xc
mov dword [esi + 0xc], edi
test edi, edi
je 0x102e5a2
mov dword [esi + 0x10], 0x2c
mov eax, dword [ebp - 0x10]
mov dword [eax], ebx
test ebx, ebx
je 0x102e603
add edi, 0x2e
mov dword [esi + 8], edi
jmp 0x102e603
mov eax, 0x800
test dword [ebp + 0x10], eax
je 0x102e5e2
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 0x102e603
mov dword [esi + 0x18], 0x2c
jmp 0x102e603
cmp dword [ebp + 0x10], 0
jne 0x102e603
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 - 0x10]
mov dword [esi + 0x14], edi
mov dword [esi + 0xc], edi
mov dword [ecx], eax
lea eax, [ebp - 0x1c]
push eax
call fcn.01027b29
push dword [ebp - 8]
push dword [ebp + 8]
call sub.IMM32.dll_ImmReleaseContext
pop edi
pop esi
pop ebx
leave
ret 0x10