Function at 0x18015b410
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x48], rbx
test edx, edx
jne 0x18015b58b
xor ebx, ebx
cmp qword [0x180344ab0], rbx
jne 0x18015b461
lea ecx, [rdx + 0x20]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov byte [rax], 1
mov qword [rax + 8], rbx
mov dword [rax + 0x10], 1
mov qword [rax + 0x18], rbx
mov qword [0x180344ab0], rax
cmp qword [0x180344fe8], rbx
jne 0x18015b489
mov ecx, 0x70
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.18012e5a0
nop
mov qword [0x180344fe8], rax
mov edx, 2
call fcn.18012f100
cmp qword [0x180344ab0], 0
jne 0x18015b4c5
mov ecx, 0x20
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov byte [rax], 1
mov qword [rax + 8], rbx
mov dword [rax + 0x10], 1
mov qword [rax + 0x18], rbx
mov qword [0x180344ab0], rax
cmp qword [0x180344fe8], 0
jne 0x18015b4ee
mov ecx, 0x70
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.18012e5a0
nop
mov qword [0x180344fe8], rax
mov edx, 5
call fcn.18012f100
mov rax, qword [0x180344ad8]
test rax, rax
jne 0x18015b536
lea ecx, [rax + 0x30]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
lea rcx, vtable.CThreadImeUIWnd.0
mov qword [rax], rcx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbx
mov qword [rax + 0x28], rbx
mov qword [0x180344ad8], rax
mov rcx, rax
call fcn.18015ce20
cmp qword [0x180344ac0], 0
jne 0x18015b55e
mov ecx, 1
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [0x180344ac0], rax
mov rax, qword [0x180344f48]
test rax, rax
jne 0x18015b8a7
mov ecx, 0x320
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.1800c0bf0
nop
jmp 0x18015b8a0
mov ecx, 0x14
call qword [sym.imp.USER32.dll_GetKeyState]
cmp al, 1
jne 0x18015b68e
mov rax, qword [0x180344ae0]
test rax, rax
jne 0x18015b5c9
mov ecx, 0x1f8
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.18011a420
nop
mov qword [0x180344ae0], rax
mov rcx, rax
call fcn.180125c50
cmp qword [0x180345018], 0
jne 0x18015b5fa
mov ecx, 0x1a8
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.180137570
nop
mov qword [0x180345018], rax
xor ebx, ebx
mov rax, qword [0x180344ad8]
test rax, rax
jne 0x18015b63a
lea ecx, [rbx + 0x30]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
lea rcx, vtable.CThreadImeUIWnd.0
mov qword [rax], rcx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbx
mov qword [rax + 0x28], rbx
mov qword [0x180344ad8], rax
mov rcx, rax
call fcn.18015ced0
cmp qword [0x180344ac0], rbx
jne 0x18015b661
mov ecx, 1
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [0x180344ac0], rax
mov rax, qword [0x180344f48]
test rax, rax
jne 0x18015b8a7
mov ecx, 0x320
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.1800c0bf0
nop
jmp 0x18015b8a0
call fcn.180211b44
mov r9, qword [rax]
xor r8d, r8d
lea edx, [r8 + 0x73]
mov rcx, rax
call qword [r9 + 0x10]
cmp eax, 1
jne 0x18015b6b8
call fcn.180074980
mov rcx, rax
call fcn.180125800
jmp 0x18015b6c5
call fcn.180074980
mov rcx, rax
call fcn.1801253b0
lea rbx, vtable.CShareConfigManager.0
mov rax, qword [0x180344aa8]
test rax, rax
jne 0x18015b6ef
lea ecx, [rax + 8]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [rax], rbx
mov qword [0x180344aa8], rax
mov r8, qword [rax]
mov edx, 0x52
mov rcx, rax
call qword [r8]
test eax, eax
je 0x18015b710
call fcn.180074980
mov rcx, rax
call fcn.180126600
jmp 0x18015b747
call fcn.180211b44
mov r9, qword [rax]
xor r8d, r8d
lea edx, [r8 + 0x73]
mov rcx, rax
call qword [r9 + 0x10]
cmp eax, 1
jne 0x18015b73a
call fcn.180074980
mov rcx, rax
call fcn.180126600
jmp 0x18015b747
call fcn.180074980
mov rcx, rax
call fcn.1801260a0
call fcn.180211b44
mov r9, qword [rax]
xor r8d, r8d
lea edx, [r8 + 0x75]
mov rcx, rax
call qword [r9 + 0x10]
cmp eax, 1
jne 0x18015b771
call fcn.180074980
mov rcx, rax
call fcn.1801270b0
jmp 0x18015b77e
call fcn.180074980
mov rcx, rax
call fcn.180126b60
mov rax, qword [0x180344aa8]
test rax, rax
jne 0x18015b7a1
lea ecx, [rax + 8]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [rax], rbx
mov qword [0x180344aa8], rax
mov r8, qword [rax]
mov edx, 0x74
mov rcx, rax
call qword [r8]
cmp eax, 1
jne 0x18015b7c3
call fcn.180074980
mov rcx, rax
call fcn.180127b50
jmp 0x18015b815
mov rax, qword [0x180344aa8]
test rax, rax
jne 0x18015b7e6
lea ecx, [rax + 8]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [rax], rbx
mov qword [0x180344aa8], rax
mov r8, qword [rax]
mov edx, 0x74
mov rcx, rax
call qword [r8]
cmp eax, 2
jne 0x18015b808
call fcn.180074980
mov rcx, rax
call fcn.180128090
jmp 0x18015b815
call fcn.180074980
mov rcx, rax
call fcn.180127610
xor ebx, ebx
mov rax, qword [0x180344ad8]
test rax, rax
jne 0x18015b855
lea ecx, [rbx + 0x30]
call fcn.1802037c4
mov qword [rsp + 0x40], rax
lea rcx, vtable.CThreadImeUIWnd.0
mov qword [rax], rcx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbx
mov qword [rax + 0x28], rbx
mov qword [0x180344ad8], rax
mov rcx, rax
call fcn.18015ced0
cmp qword [0x180344ac0], rbx
jne 0x18015b87c
mov ecx, 1
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov qword [0x180344ac0], rax
mov rax, qword [0x180344f48]
test rax, rax
jne 0x18015b8a7
mov ecx, 0x320
call fcn.1802037c4
mov qword [rsp + 0x40], rax
mov rcx, rax
call fcn.1800c0bf0
nop
mov qword [0x180344f48], rax
mov rcx, rax
call fcn.1800d21a0
mov rdi, qword [0x180345038]
test rdi, rdi
jne 0x18015b8f2
lea ecx, [rdi + 0x38]
call fcn.1802037c4
mov rdi, rax
mov qword [rsp + 0x40], rax
mov qword [rax], rbx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov qword [rax + 0x20], rbx
mov byte [rax + 0x2c], 1
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [rdi + 0x28], eax
mov byte [rdi + 0x30], 0
mov qword [0x180345038], rdi
mov rcx, rdi
call fcn.180167240
mov rbx, qword [rax + 0x80]
test rbx, rbx
je 0x18015b930
call fcn.180211d54
mov r8, qword [rax]
mov edx, 3
mov rcx, rax
call qword [r8 + 0x10]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x18015b930
mov r8, qword [rcx]
movzx edx, ax
call qword [r8 + 0x80]
call fcn.180211d54
mov r8, qword [rax]
mov edx, 3
mov rcx, rax
call qword [r8 + 0x10]
lea ecx, [rax + 1]
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
jmp fcn.1800acce0