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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov r14, r9
mov rdi, r8
mov r13, rcx
mov rcx, rdx
call fcn.1802326a0
mov r12, rax
test rax, rax
je 0x180088a38
mov rcx, rdi
call qword [sym.imp.IMM32.dll_ImmGetContext]
mov rdi, rax
mov qword [rbp - 0x28], rax
test rax, rax
je 0x180088a38
cmp dword [r13], 0
jge 0x180088715
mov rcx, qword [r12]
mov r8, qword [rcx + 0x10]
lea rdx, [rbp - 0x18]
mov rcx, r12
call r8
mov ecx, dword [rax]
mov dword [rbp - 0x30], ecx
mov dword [rbp - 0x2c], ecx
mov rax, qword [rbp - 0x30]
mov qword [r13], rax
bt r14, 0xb
jae 0x1800887b7
mov r9d, 0x800
mov r8, rdi
lea rdx, [rbp - 0x20]
call fcn.180088a50
nop
mov rbx, 0xffffffffffffffff
mov r9, rbx
mov r8, rax
mov rdx, r12
mov rcx, r13
call fcn.180088cc0
nop
mov rcx, qword [rbp - 0x20]
add rcx, 0xfffffffffffffff0
lea rax, [0x180660020]
cmp rcx, rax
je 0x180088771
mov eax, ebx
lock xadd dword [rcx], eax
dec eax
cmp eax, ebx
jne 0x180088771
call fcn.18011d9c0
mov qword [rbp - 0x28], 0xffffffffffffffff
mov rax, qword [rbp - 0x28]
mov qword [r13], rax
mov byte [r13 + 8], 0
mov rax, qword [r12]
xorps xmm0, xmm0
movups xmmword [rbp - 0x10], xmm0
xor esi, esi
mov qword [rbp - 0x10], rsi
mov qword [rbp - 8], rsi
lea rdx, [rbp - 0x10]
mov rcx, r12
call qword [rax + 0x20]
nop
mov dword [rbp - 4], esi
mov rcx, qword [rbp - 0x10]
call fcn.180124068
jmp 0x180088a1c
test r14b, 8
je 0x180088a1c
xor esi, esi
mov ebx, esi
mov r15d, esi
test r14b, 0x10
je 0x180088865
xor r9d, r9d
xor r8d, r8d
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
mov rcx, rdi
call qword [sym.imp.IMM32.dll_ImmGetCompositionStringW]
mov dword [rbp - 0x30], eax
test eax, eax
jle 0x180088865
movsxd r14, eax
mov rcx, r14
call fcn.180124500
mov rdi, rax
mov r9d, dword [rbp - 0x30]
mov r8, rax
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
mov rcx, qword [rbp - 0x28]
call qword [sym.imp.IMM32.dll_ImmGetCompositionStringW]
test r14, r14
jle 0x180088834
mov ecx, esi
nop dword [rax + rax]
movzx eax, byte [rcx + rdi]
dec al
test al, 0xfd
je 0x180088834
inc ebx
inc rcx
cmp rcx, r14
jl 0x180088820
mov r15d, ebx
movsxd rdx, ebx
cmp rdx, r14
jge 0x180088855
nop
movzx eax, byte [rdx + rdi]
dec al
test al, 0xfd
jne 0x180088855
inc r15d
inc rdx
cmp rdx, r14
jl 0x180088840
mov rcx, rdi
call fcn.180124068
mov rdi, qword [rbp - 0x28]
mov r14, qword [rbp + 0x58]
mov r8d, ebx
cmp ebx, r15d
cmovl r8d, r15d
mov ecx, dword [r13]
lea eax, [r8 + rcx]
lea edx, [rcx + rbx]
cmp edx, eax
cmovl ebx, r8d
add ebx, ecx
shl rbx, 0x20
mov eax, edx
or rbx, rax
mov r9d, 8
mov r8, rdi
lea rdx, [rbp - 0x20]
call fcn.180088a50
nop
mov r9, rbx
mov r8, rax
mov rdx, r12
mov rcx, r13
call fcn.180088cc0
nop
mov rcx, qword [rbp - 0x20]
add rcx, 0xfffffffffffffff0
lea rax, [0x180660020]
cmp rcx, rax
je 0x1800888db
mov rbx, 0xffffffffffffffff
lock xadd dword [rcx], ebx
dec ebx
cmp ebx, 0xffffffff
jne 0x1800888db
call fcn.18011d9c0
mov rax, qword [r12]
mov rcx, qword [rax + 0x20]
mov qword [rbp - 0x18], rcx
mov qword [rbp - 0x10], rsi
mov qword [rbp - 8], rsi
test r14b, 0x20
je 0x180088a00
xor r9d, r9d
xor r8d, r8d
mov edx, 0x20
mov rcx, rdi
call qword [sym.imp.IMM32.dll_ImmGetCompositionStringW]
movsxd rbx, eax
test eax, eax
jle 0x180088a00
mov r14, rbx
shr r14, 2
lea rcx, [r14*4]
test rcx, rcx
jne 0x180088931
mov r15, rsi
jmp 0x180088939
call fcn.180124500
mov r15, rax
mov qword [rbp - 0x20], r15
mov r9d, ebx
mov r8, r15
mov edx, 0x20
mov rcx, rdi
call qword [sym.imp.IMM32.dll_ImmGetCompositionStringW]
test eax, eax
jle 0x1800889f7
cmp r14, 1
jbe 0x1800889f7
mov edi, 1
mov rbx, r15
nop dword [rax + rax]
lea r15, [rbx + 4]
mov ebx, dword [rbx]
mov edx, ebx
cmp ebx, dword [r15]
cmovl edx, dword [r15]
mov ecx, dword [r13]
lea eax, [rdx + rcx]
lea r8d, [rcx + rbx]
mov dword [rbp - 0x30], r8d
cmp r8d, eax
cmovl ebx, edx
add ebx, ecx
mov edx, dword [rbp - 4]
lea ecx, [rdx + 1]
cmp ecx, dword [rbp - 8]
jle 0x1800889c4
mov eax, ecx
test ecx, ecx
jns 0x1800889aa
lea eax, [rcx + 1]
sar eax, 1
lea edx, [rcx + 8]
add edx, eax
and edx, 0xfffffff8
lea rcx, [rbp - 0x10]
call fcn.180009700
mov edx, dword [rbp - 4]
mov r8d, dword [rbp - 0x30]
lea eax, [rdx + 1]
mov dword [rbp - 4], eax
movsxd rcx, edx
mov rax, qword [rbp - 0x10]
lea rdx, [rax + rcx*8]
mov ecx, ebx
shl rcx, 0x20
mov eax, r8d
or rcx, rax
mov qword [rdx], rcx
mov rbx, r15
inc rdi
cmp rdi, r14
jb 0x180088970
mov rdi, qword [rbp - 0x28]
mov r15, qword [rbp - 0x20]
mov rcx, r15
call fcn.180124068
nop
lea rdx, [rbp - 0x10]
mov rcx, r12
call qword [rbp - 0x18]
nop
mov dword [rbp - 4], esi
mov rcx, qword [rbp - 0x10]
call fcn.180124068
mov byte [r13 + 8], 1
mov r9, r12
mov r8, qword [rbp + 0x48]
mov rdx, rdi
call fcn.180088d90
mov rdx, rdi
mov rcx, qword [rbp + 0x50]
call qword [sym.imp.IMM32.dll_ImmReleaseContext]
mov rbx, qword [rsp + 0x90]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret