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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1f8
mov rbx, rdx
mov rbp, rcx
call fcn.0042fa20
and bh, 8
mov esi, eax
jne 0x42fd00
xor eax, eax
add rsp, 0x1f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbp
call sub.IMM32.dll_ImmGetContext
test rax, rax
mov r12, rax
je 0x42fce5
xor r9d, r9d
xor r8d, r8d
cmp esi, 2
mov edx, 0x800
mov rcx, rax
jne 0x42feb0
call sub.IMM32.dll_ImmGetCompositionStringW
test eax, eax
mov ebx, eax
jle 0x42fe94
mov r14, qword [0x00670bd0]
mov ecx, ebx
lea rsi, [rsp + 0x110]
mov rax, qword [r14]
call qword [rax + 0x28]
mov r9d, ebx
mov r8, rax
mov edx, 0x800
mov rcx, r12
mov r13, rax
call sub.IMM32.dll_ImmGetCompositionStringW
mov r15d, eax
nop word cs:[rax + rax]
mov rcx, rbp
mov rdi, rsi
call fcn.00425ea0
mov ecx, 0xc
mov r8, rax
xor eax, eax
rep stosq qword [rdi], rax
mov rdx, qword [r8]
mov eax, dword [rdx + 0x8c]
lea ecx, [rax + 1]
mov dword [rdx + 0x8c], ecx
mov qword [rsp + 0x120], rdx
mov dword [rsp + 0x114], eax
mov dword [rsp + 0x118], 0xfffffffe
mov rax, qword [r8 + 0x28]
mov qword [rsp + 0x128], rax
movsxd rax, dword [r8 + 0x10]
lea rcx, [rax*8]
shl rax, 7
sub rax, rcx
add rax, qword [rdx + 0xd8]
mov rax, qword [rax + 0x10]
mov qword [rsp + 0x130], rax
call fcn.00424c50
mov dword [rsp + 0x154], eax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
test r15d, r15d
mov dword [rsp + 0x140], eax
mov dword [rsp + 0x15c], 1
mov dword [rsp + 0x158], 0
mov dword [rsp + 0x164], 2
jle 0x42fe8b
sub r15d, 1
lea rbx, [r13 + 1]
shr r15d, 1
lea rdi, [r15 + r15 + 3]
add rdi, r13
nop dword [rax + rax]
movzx eax, byte [rbx - 1]
xor edx, edx
mov rcx, rsi
add rbx, 2
mov byte [rsp + 0x160], al
movzx r9d, byte [rbx - 2]
mov dword [rsp + 0x110], 2
mov byte [rsp + 0x161], r9b
call fcn.00405670
xor edx, edx
mov rcx, rsi
mov dword [rsp + 0x110], 3
call fcn.00405670
cmp rbx, rdi
jne 0x42fe40
mov rax, qword [r14]
mov rcx, r13
call qword [rax + 0x30]
mov rdx, r12
mov rcx, rbp
call sub.IMM32.dll_ImmReleaseContext
mov eax, 1
jmp 0x42fce7
call sub.IMM32.dll_ImmGetCompositionStringA
test eax, eax
mov r9d, eax
jle 0x42fe94
mov r14, qword [0x00670bd0]
mov ecx, r9d
mov dword [rsp + 0x2c], r9d
mov rax, qword [r14]
call qword [rax + 0x28]
mov r15, qword [0x0069f2a0]
mov r13, rax
mov r9d, dword [rsp + 0x2c]
test r15, r15
je 0x42ff9b
mov r8, r13
mov edx, 0x800
mov rcx, r12
call sub.IMM32.dll_ImmGetCompositionStringA
mov edi, eax
mov rax, qword [r14]
lea rbx, [rsp + 0x30]
lea rsi, [rsp + 0x110]
mov rcx, rbx
call qword [rax + 0x3e0]
mov rax, qword [r14]
mov r9, rbx
mov r8d, edi
mov rdx, r13
mov rcx, qword [0x0069f2a8]
call qword [rax + 0x950]
mov rax, qword [r14]
mov rcx, r15
mov r9, rsi
mov r8d, 0xffffffff
mov rdx, qword [rsp + 0x30]
call qword [rax + 0xa78]
mov r15d, dword [rsp + 0x118]
cmp edi, r15d
jl 0x42ff84
mov rdx, qword [rsp + 0x110]
mov r8d, r15d
mov rcx, r13
call sub.msvcrt.dll_memcpy
mov rax, qword [r14]
mov rcx, rbx
call qword [rax + 0x3d0]
mov rax, qword [r14]
mov rcx, rsi
call qword [rax + 0x3d0]
jmp 0x42fd70
mov rax, qword [r14]
mov rcx, r13
call qword [rax + 0x30]
mov rax, qword [r14]
mov ecx, r15d
call qword [rax + 0x28]
mov r13, rax
jmp 0x42ff54
mov rax, qword [r14]
mov dword [rsp + 0x2c], r9d
lea rdx, [0x0062bce9]
xor ecx, ecx
call qword [rax + 0x978]
mov r9d, dword [rsp + 0x2c]
mov r15, rax
mov qword [0x0069f2a0], rax
jmp 0x42fee9