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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x88
lea rbp, [rsp + 0x80]
mov qword [rbp], 0xfffffffffffffffe
mov rsi, rcx
mov rdi, qword [rdx + 8]
lea rcx, [rbp - 0x58]
mov rdx, rdi
mov r8d, 8
call fcn.140021ad0
mov rcx, qword [rbp - 0x58]
mov rax, rcx
neg rax
jno 0x140021564
mov qword [rsi], 2
jmp 0x140021a02
mov qword [rbp - 0x18], rcx
mov rbx, qword [rbp - 0x50]
mov r13, qword [rbp - 0x48]
mov qword [rbp - 0x28], rdi
mov rcx, rdi
mov edx, 0x10
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.imm32.dll_ImmGetCompositionStringW]
xor edx, edx
mov r12d, eax
mov edi, 1
mov r14d, 1
mov eax, 0
test r12d, r12d
mov qword [rbp - 8], rbx
je 0x140021612
movabs rdx, 0x8000000000000000
js 0x1400215f5
mov r15d, r12d
movzx eax, byte [0x143b47541]
mov edx, 1
mov rcx, r15
call fcn.14001d4d0
test rax, rax
je 0x140021a4f
mov r14, rax
mov rcx, qword [rbp - 0x28]
mov edx, 0x10
mov r8, rax
mov r9d, r12d
call qword [sym.imp.imm32.dll_ImmGetCompositionStringW]
test eax, eax
js 0x1400215f7
mov eax, eax
mov rdx, r15
jmp 0x140021612
jmp 0x140021612
mov r8d, 1
mov rcx, r14
mov rdx, r15
call fcn.14001d4e0
movabs rdx, 0x8000000000000000
mov qword [rbp - 0x10], rsi
xor r15d, r15d
mov rcx, rdx
neg rcx
cmovo rax, r15
cmovo r14, rdi
cmovo rdx, r15
mov qword [rbp - 0x38], r13
lea rdi, [rbx + r13]
test rax, rax
mov rcx, r14
je 0x140021850
mov r8, rbx
mov rsi, rax
mov qword [rbp - 0x40], rdx
xor eax, eax
xor ebx, ebx
xor r15d, r15d
xor edx, edx
mov qword [rbp - 0x30], rsi
jmp 0x14002166f
add rdx, r10
inc rax
cmp rsi, rax
je 0x140021861
cmp r8, rdi
je 0x140021861
movzx r10d, byte [rcx + rax]
movzx r12d, byte [r8]
movzx r9d, r12b
test r9b, r9b
js 0x1400216b0
inc r8
cmp r10b, 1
jne 0x140021750
mov r11b, 1
cmp rbx, 1
jne 0x140021764
jmp 0x140021796
mov r14, r15
mov r15, rdi
mov r11d, r9d
and r11d, 0x1f
movzx edi, byte [r8 + 1]
and edi, 0x3f
cmp r9b, 0xdf
jbe 0x140021723
movzx esi, byte [r8 + 2]
shl edi, 6
and esi, 0x3f
or esi, edi
cmp r12b, 0xf0
jb 0x140021829
movzx r9d, byte [r8 + 3]
and r11d, 7
shl r11d, 0x12
shl esi, 6
and r9d, 0x3f
or r9d, esi
or r9d, r11d
cmp r9d, 0x110000
mov rdi, r15
je 0x14002185e
add r8, 4
mov r15, r14
mov rsi, qword [rbp - 0x30]
cmp r10b, 1
je 0x140021697
jmp 0x140021750
add r8, 2
shl r11d, 6
or r11d, edi
mov r9d, r11d
mov rdi, r15
mov r15, r14
cmp r10b, 1
je 0x140021697
nop word cs:[rax + rax]
cmp r10b, 3
sete r11b
cmp rbx, 1
je 0x140021790
cmp r10b, 3
jne 0x140021790
mov qword [rbp - 0x20], rdx
mov ebx, 1
mov r10d, 1
cmp r9d, 0x80
jb 0x140021660
jmp 0x140021800
cmp rbx, 1
jne 0x1400217df
mov ebx, 1
cmp r15, 1
jne 0x1400217bc
mov r15d, 1
mov r10d, 1
cmp r9d, 0x80
jb 0x140021660
jmp 0x140021800
test r11b, r11b
cmove r13, rdx
xor r11b, 1
movzx r15d, r11b
mov r10d, 1
cmp r9d, 0x80
jae 0x140021800
jmp 0x140021660
xor ebx, ebx
mov r10d, 1
cmp r9d, 0x80
jb 0x140021660
nop word cs:[rax + rax]
mov r10d, 2
cmp r9d, 0x800
jb 0x140021660
cmp r9d, 0x10000
mov r10d, 4
sbb r10, 0
jmp 0x140021660
add r8, 3
shl r11d, 0xc
or esi, r11d
mov r9d, esi
mov rdi, r15
mov r15, r14
mov rsi, qword [rbp - 0x30]
cmp r10b, 1
je 0x140021697
jmp 0x140021750
mov rbx, 0xffffffffffffffff
test rdx, rdx
jne 0x14002186d
jmp 0x140021878
mov r15, r14
dec rbx
mov rdx, qword [rbp - 0x40]
test rdx, rdx
je 0x140021878
mov r8d, 1
call fcn.14001d4e0
mov edx, 1
test rbx, rbx
jne 0x140021897
cmp r15, 1
je 0x140021897
mov r13, qword [rbp - 0x38]
mov r15d, 1
jmp 0x1400219d3
test rbx, rbx
je 0x1400219d3
xor r15d, r15d
mov rcx, qword [rbp - 0x28]
mov edx, 0x80
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.imm32.dll_ImmGetCompositionStringW]
test eax, eax
mov rsi, qword [rbp - 0x10]
mov r11, qword [rbp - 8]
js 0x140021a19
je 0x140021a1d
mov eax, eax
xor ebx, ebx
mov rcx, r11
mov r15d, 1
jmp 0x1400218fd
inc rcx
mov r13d, 1
add r13, rbx
mov rbx, r13
mov edx, 1
dec rax
je 0x1400219df
cmp rcx, rdi
je 0x140021a2f
movzx r8d, byte [rcx]
test r8b, r8b
jns 0x1400218e0
movzx edx, r8b
and edx, 0x1f
movzx r10d, byte [rcx + 1]
and r10d, 0x3f
cmp r8b, 0xe0
jb 0x140021974
movzx r9d, byte [rcx + 2]
shl r10d, 6
and r9d, 0x3f
or r9d, r10d
cmp r8b, 0xf0
jb 0x140021990
movzx r8d, byte [rcx + 3]
and edx, 7
shl edx, 0x12
shl r9d, 6
and r8d, 0x3f
or r8d, r9d
or r8d, edx
cmp r8d, 0x110000
je 0x140021a3f
add rcx, 4
cmp r8d, 0x80
jb 0x1400218e3
jmp 0x1400219aa
add rcx, 2
shl edx, 6
or edx, r10d
mov r8d, edx
cmp r8d, 0x80
jb 0x1400218e3
jmp 0x1400219aa
add rcx, 3
shl edx, 0xc
or r9d, edx
mov r8d, r9d
cmp r8d, 0x80
jb 0x1400218e3
mov r13d, 2
cmp r8d, 0x800
jb 0x1400218e9
cmp r8d, 0x10000
mov r13d, 4
sbb r13, 0
jmp 0x1400218e9
mov rsi, qword [rbp - 0x10]
mov r11, qword [rbp - 8]
mov rbx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x18]
mov qword [rsi + 0x10], rax
mov qword [rsi + 0x18], r11
mov rax, qword [rbp - 0x38]
mov qword [rsi + 0x20], rax
mov qword [rsi], rdx
mov qword [rsi + 8], rbx
mov qword [rsi + 0x28], r15
mov qword [rsi + 0x30], r13
mov rax, rsi
add rsp, 0x88
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
xor edx, edx
jmp 0x1400219df
xor r13d, r13d
mov r15d, 1
xor ebx, ebx
mov edx, 1
jmp 0x1400219df
mov r13, rbx
mov r15d, 1
mov edx, 1
jmp 0x1400219df
mov r15d, 1
mov r13, rbx
mov edx, 1
jmp 0x1400219df
mov ecx, 1
mov rdx, r15
call fcn.140045f40
ud2