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

Disassembly:
sub esp, 0x108
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x58]
push eax
call sub.IMM32.dll_ImmGetContext
mov ebp, eax
xor ebx, ebx
cmp ebp, ebx
je 0x50d8fe
mov eax, dword [esp + 0x11c]
push edi
cmp eax, ebx
jne 0x50d656
mov ecx, 0x3f
xor eax, eax
lea edi, [esi + 0x280]
mov byte [esi + 0x80], bl
mov word [esi + 0x82], bx
mov dword [esp + 0x10], esi
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x7f
xor eax, eax
lea edi, [esi + 0x380]
mov dword [esp + 0x14], 6
rep stosd dword es:[edi], eax
mov edx, dword [esi + 0x30]
lea ecx, [esi + 0x30]
lea eax, [esp + 0x10]
mov dword [esi + 0x57c], ebx
push eax
mov word [esi + 0x580], bx
call dword [edx + 4]
jmp 0x50d8f3
test ah, 8
je 0x50d6ee
mov al, byte [esi + 0x7f]
lea edi, [esi + 0x97c]
test al, al
je 0x50d691
push 0x1fe
push edi
push 0x800
push ebp
call sub.IMM32.dll_ImmGetCompositionStringW
cmp eax, ebx
jge 0x50d689
mov word [edi], bx
jmp 0x50d8f3
shr eax, 1
mov word [edi + eax*2], bx
jmp 0x50d6cf
lea ecx, [esp + 0x18]
push 0xff
push ecx
push 0x800
push ebp
call sub.IMM32.dll_ImmGetCompositionStringA
cmp eax, ebx
jge 0x50d6b2
mov word [edi], bx
jmp 0x50d8f3
push 0xff
push edi
lea edx, [esp + 0x20]
mov byte [esp + eax + 0x20], 0
mov eax, dword [esi + 0x70]
push 0xffffffffffffffff
push edx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edx, dword [esi + 0x30]
lea ecx, [esi + 0x30]
lea eax, [esp + 0x10]
mov dword [esp + 0x10], esi
push eax
mov dword [esp + 0x18], 7
call dword [edx + 4]
jmp 0x50d8f3
mov dword [esp + 0x10], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test al, 1
je 0x50d76b
mov al, byte [esi + 0x7f]
lea edi, [esi + 0x580]
test al, al
je 0x50d72c
push 0x3fc
push edi
push 1
push ebp
call sub.IMM32.dll_ImmGetCompositionStringW
test eax, eax
jge 0x50d722
mov word [edi], 0
jmp 0x50d76b
shr eax, 1
mov word [edi + eax*2], 0
jmp 0x50d763
lea ecx, [esp + 0x18]
push 0xff
push ecx
push 1
push ebp
call sub.IMM32.dll_ImmGetCompositionStringA
test eax, eax
jge 0x50d749
mov word [edi], 0
jmp 0x50d76b
push 0x1fe
push edi
lea edx, [esp + 0x20]
mov byte [esp + eax + 0x20], 0
mov eax, dword [esi + 0x70]
push 0xffffffffffffffff
push edx
push 0
push eax
call ebx
mov dword [esp + 0x10], 3
test byte [esp + 0x120], 8
je 0x50d7e4
mov al, byte [esi + 0x7f]
lea edi, [esi + 0x82]
test al, al
je 0x50d7a5
push 0x1fe
push edi
push 8
push ebp
call sub.IMM32.dll_ImmGetCompositionStringW
test eax, eax
jge 0x50d79b
mov word [edi], 0
jmp 0x50d7e4
shr eax, 1
mov word [edi + eax*2], 0
jmp 0x50d7dc
lea ecx, [esp + 0x18]
push 0xff
push ecx
push 8
push ebp
call sub.IMM32.dll_ImmGetCompositionStringA
test eax, eax
jge 0x50d7c2
mov word [edi], 0
jmp 0x50d7e4
push 0xff
push edi
lea edx, [esp + 0x20]
mov byte [esp + eax + 0x20], 0
mov eax, dword [esi + 0x70]
push 0xffffffffffffffff
push edx
push 0
push eax
call ebx
mov dword [esp + 0x10], 3
test byte [esp + 0x120], 0x10
je 0x50d842
mov al, byte [esi + 0x7f]
lea ebx, [esi + 0x280]
test al, al
push 0xff
je 0x50d80b
push ebx
push 0x10
push ebp
call sub.IMM32.dll_ImmGetCompositionStringW
jmp 0x50d842
lea ecx, [esp + 0x1c]
push ecx
push 8
push ebp
call sub.IMM32.dll_ImmGetCompositionStringA
mov edi, eax
test edi, edi
jle 0x50d842
push 0xff
push ebx
push 0x10
push ebp
mov byte [esp + edi + 0x28], 0
call sub.IMM32.dll_ImmGetCompositionStringA
cmp eax, edi
jle 0x50d842
lea edx, [esp + 0x18]
push ebx
push edx
mov ecx, esi
call fcn.0050e390
test byte [esp + 0x120], 0x20
je 0x50d8ac
mov al, byte [esi + 0x7f]
lea ebx, [esi + 0x380]
test al, al
mov dword [ebx], 0
je 0x50d86f
push 0x1fc
push ebx
push 0x20
push ebp
call sub.IMM32.dll_ImmGetCompositionStringW
jmp 0x50d8ac
lea eax, [esp + 0x18]
push 0xff
push eax
push 8
push ebp
call sub.IMM32.dll_ImmGetCompositionStringA
mov edi, eax
test edi, edi
jle 0x50d8ac
push 0x1fc
push ebx
push 0x20
push ebp
mov byte [esp + edi + 0x28], 0
call sub.IMM32.dll_ImmGetCompositionStringA
test eax, eax
jle 0x50d8ac
push ebx
lea ecx, [esp + 0x1c]
push edi
push ecx
mov ecx, esi
call fcn.0050e3d0
test byte [esp + 0x120], 0x80
je 0x50d8ce
push ebp
mov ecx, esi
call fcn.0050ded0
mov dword [esi + 0x57c], eax
mov dword [esp + 0x10], 3
jmp 0x50d8d6
mov eax, dword [esp + 0x10]
test eax, eax
je 0x50d8f3
mov edx, dword [esp + 0x10]
push esi
push edx
lea ecx, [esp + 0x18]
call fcn.0050ee60
mov eax, dword [esi + 0x30]
lea ecx, [esi + 0x30]
lea edx, [esp + 0x10]
push edx
call dword [eax + 4]
mov eax, dword [esi + 0x58]
push ebp
push eax
call sub.IMM32.dll_ImmReleaseContext
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 8