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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2a4
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 0x102e167
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x10], ecx
and dword [ebp - 0x10], 8
push edi
je 0x102dfa7
push ebx
push ebx
push 8
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jge 0x102df8e
push esi
jmp 0x102e15e
test byte [ebp + 0x10], 0x10
je 0x102dfbf
push ebx
push ebx
push 0x10
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
cmp eax, ebx
mov dword [ebp - 4], eax
jl 0x102dfbf
jmp 0x102dfcf
mov eax, 0x800
test eax, ecx
je 0x102dfc4
push ebx
push ebx
push eax
push esi
call sub.IMM32.dll_ImmGetCompositionStringW
mov edi, eax
cmp edi, ebx
jl 0x102df88
mov dword [ebp - 4], ebx
jmp 0x102dfcf
cmp ecx, ebx
jne 0x102dfcc
xor edi, edi
jmp 0x102dfbf
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 - 0xc], ecx
cmp eax, ebx
je 0x102dffa
cmp ecx, dword [eax]
jbe 0x102dffa
push eax
call fcn.01029efb
pop ecx
mov ecx, dword [ebp - 0xc]
mov dword [esi + 0x224], ebx
cmp dword [esi + 0x224], ebx
jne 0x102e01c
push ecx
call fcn.01029f08
pop ecx
mov dword [esi + 0x224], eax
cmp eax, ebx
je 0x102e15b
mov ecx, dword [ebp - 0xc]
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
add esp, 0xc
mov edx, eax
mov word [esi + 0x20], ax
add eax, 0x6a
cmp dword [ebp - 0x10], 0
mov word [esi + 0x1c], dx
push 0x17
pop edx
mov word [esi + 0x22], ax
mov eax, 0x8004
mov word [esi + 0x1e], dx
mov edx, eax
lea ebx, [esi + 0x2c]
lea ecx, [esi + edi + 0x2e]
mov word [esi + 0x24], dx
mov word [esi + 0x26], dx
mov word [esi + 0x28], dx
mov word [esi + 0x2a], ax
je 0x102e0cf
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 0x102e0ad
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
mov dword [esi + 0xc], edi
test edi, edi
je 0x102e0bb
mov dword [esi + 0x10], 0x2c
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
mov dword [ecx], eax
test eax, eax
je 0x102e12e
add edi, 0x2e
mov dword [esi + 8], edi
jmp 0x102e12e
mov eax, 0x800
test dword [ebp + 0x10], eax
je 0x102e10d
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 0x102e0fc
mov dword [esi + 0x18], 0x2c
mov dword [ebp - 0x1c], 0x4b425930
mov eax, dword [esi]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], esi
jmp 0x102e152
cmp dword [ebp + 0x10], 0
jne 0x102e15b
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 - 0x2a4]
push eax
push dword [ebp + 0xc]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], 0x4b425931
mov dword [ebp - 0x18], 0x288
call fcn.0102dc6d
test eax, eax
je 0x102e15b
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