Function at 0x18018c330
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xa0
mov rax, qword [0x1802d1460]
xor rax, rsp
mov qword [rbp + 0x17], rax
xor r15d, r15d
mov r12, r9
mov rdi, r8
mov r14d, edx
mov rsi, rcx
cmp edx, 0x302
jne 0x18018c3e3
mov byte [rcx + 0x34], 1
movzx ecx, di
cmp r14d, 0x100
jne 0x18018c4a3
lea eax, [rcx - 0x41]
mov edx, 0xffdf
test dx, ax
jne 0x18018c45d
mov ecx, reloc.COMCTL32.dll_InitCommonControls
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x18018c823
mov rax, qword [rsi + 0x20]
test rax, rax
je 0x18018c823
mov rcx, qword [rax + 0x7e0]
test rcx, rcx
je 0x18018c823
mov rcx, qword [rcx + 8]
mov r9, 0xffffffffffffffff
xor r8d, r8d
mov edx, 0xb1
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, r15
jmp 0x18018c9a0
cmp r14d, 0x100
jne 0x18018c370
cmp di, 0x26
ja 0x18018c405
movzx eax, di
movabs rcx, 0x4000100300
bt rcx, rax
jb 0x18018c412
movzx ecx, di
cmp di, 0x28
jne 0x18018c380
mov rax, qword [rsi + 0x20]
mov qword [rbp - 0x11], rax
mov qword [rbp - 0x19], 3
mov qword [rbp - 9], r15
mov dword [rbp - 1], r15d
mov word [rbp + 5], r15w
mov word [rbp + 3], di
mov qword [rbp + 7], rdi
mov qword [rbp + 0xf], r12
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov rcx, qword [rsi + 0x20]
lea rdx, [rbp - 0x19]
mov dword [rbp - 9], eax
mov rax, qword [rcx]
call qword [rax + 0x310]
mov rax, r15
jmp 0x18018c9a0
cmp cx, 0xd
jne 0x18018c4f8
mov rbx, qword [rsi + 0x20]
mov rcx, rbx
mov rax, qword [rbx]
call qword [rax + 0x110]
mov byte [rsp + 0x30], 1
lea r8, str.return
mov rcx, rax
mov byte [rsp + 0x28], r15b
xor r9d, r9d
mov qword [rsp + 0x20], r15
mov rdx, rbx
call fcn.180170830
mov rax, r15
jmp 0x18018c9a0
cmp r14d, 1
jne 0x18018c516
mov rbx, qword [rsi + 0x20]
mov rcx, rbx
mov rax, qword [rbx]
call qword [rax + 0x110]
mov r8, qword [rsi + 8]
mov rdx, rbx
mov rcx, rax
call fcn.1801704c0
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x1a1], r15b
je 0x18018c4f8
call qword [sym.imp.USER32.dll_GetCaretBlinkTime]
mov rcx, qword [rsi + 8]
lea edx, [r14 + 0x13]
mov r8d, eax
xor r9d, r9d
call qword [sym.imp.USER32.dll_SetTimer]
mov rdx, qword [rsi + 8]
mov r9, rdi
mov rcx, qword [rsi + 0x10]
mov r8d, r14d
mov qword [rsp + 0x20], r12
call qword [sym.imp.USER32.dll_CallWindowProcW]
jmp 0x18018c9a0
cmp r14d, 8
jne 0x18018c581
mov rcx, qword [rsi + 8]
mov edx, r14d
call qword [0x180201710]
mov rcx, qword [rsi + 0x20]
mov r15, rax
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp rdi, qword [rax + 0x88]
je 0x18018c565
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov r9, r12
mov r8, rdi
mov edx, r14d
mov rcx, qword [rax + 0x88]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, qword [rsi + 8]
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x10]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rax, r15
jmp 0x18018c9a0
cmp r14d, 0x2111
jne 0x18018c6bc
shr rdi, 0x10
mov eax, 0x300
cmp di, ax
jne 0x18018c687
cmp byte [rsi + 0x30], r15b
je 0x18018c823
cmp qword [rsi + 0x20], r15
je 0x18018c823
lea rdx, [rbp - 0x19]
mov rcx, rsi
call fcn.18018c9c0
cmp qword [rax + 0x18], 8
jb 0x18018c5ca
mov rax, qword [rax]
mov rbx, qword [rsi + 0x20]
test rax, rax
je 0x18018c5ea
mov r8d, 0xffffffff
lea rcx, [rbx + 0x228]
mov rdx, rax
call fcn.18016b370
jmp 0x18018c60d
mov rcx, qword [rbx + 0x228]
lea rdi, [rbx + 0x230]
cmp rcx, rdi
je 0x18018c602
call fcn.1801cc408
mov qword [rbx + 0x228], rdi
mov word [rdi], r15w
lea rcx, [rbp - 0x19]
call fcn.180114210
mov rbx, qword [rsi + 0x20]
mov rcx, rbx
mov rax, qword [rbx]
call qword [rax + 0x110]
mov byte [rsp + 0x30], 1
lea r8, str.textchanged
mov rcx, rax
mov byte [rsp + 0x28], r15b
xor r9d, r9d
mov qword [rsp + 0x20], r15
mov rdx, rbx
call fcn.180170830
mov rcx, qword [rsi + 8]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x18018c823
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x1a1], r15b
je 0x18018c823
mov rcx, qword [rsi + 0x20]
call fcn.180176e70
mov rax, r15
jmp 0x18018c9a0
mov eax, 0x400
cmp di, ax
jne 0x18018c823
mov rcx, qword [rsi + 8]
lea rdx, [rbp - 0x19]
call qword [sym.imp.USER32.dll_GetClientRect]
mov rcx, qword [rsi + 8]
lea rdx, [rbp - 0x19]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
mov rax, r15
jmp 0x18018c9a0
cmp r14d, 0x2133
je 0x18018c82b
cmp r14d, 0x2138
je 0x18018c82b
cmp r14d, 0xf
jne 0x18018c71a
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x1a1], r15b
je 0x18018c4f8
mov rbx, qword [rsi + 0x20]
mov rcx, rbx
mov rax, qword [rbx]
call qword [rax + 0x110]
mov r8, qword [rsi + 8]
mov rdx, rbx
mov rcx, rax
call fcn.1801704c0
jmp 0x18018c4f8
cmp r14d, 0x317
jne 0x18018c7cc
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x1a1], r15b
je 0x18018c4f8
mov rdx, qword [rsi + 8]
mov r9, rdi
mov rcx, qword [rsi + 0x10]
mov r8d, r14d
mov qword [rsp + 0x20], r12
call qword [sym.imp.USER32.dll_CallWindowProcW]
mov rcx, qword [rsi + 0x20]
mov rbx, rax
mov rdx, qword [rcx]
call qword [rdx + 0x2a8]
test al, al
je 0x18018c7c4
cmp byte [rsi + 0x31], r15b
je 0x18018c7c4
mov rcx, qword [rsi + 8]
lea rdx, [rbp - 0x19]
call qword [sym.imp.USER32.dll_GetClientRect]
lea rcx, [rbp - 0x39]
call qword [sym.imp.USER32.dll_GetCaretPos]
mov rax, qword [rbp - 0x39]
lea rdx, [rbp - 0x29]
mov ecx, dword [rbp - 0x35]
mov r9d, 0xff000000
mov dword [rbp - 0x29], eax
mov r8d, 1
mov dword [rbp - 0x21], eax
mov eax, dword [rbp - 0xd]
sub eax, dword [rbp - 0x15]
add eax, ecx
mov dword [rbp - 0x25], ecx
mov rcx, rdi
mov dword [rbp - 0x1d], eax
mov dword [rsp + 0x20], r15d
call fcn.180199a70
mov rax, rbx
jmp 0x18018c9a0
cmp r14d, 0x113
jne 0x18018c80f
cmp rdi, 0x14
jne 0x18018c4f8
cmp byte [rsi + 0x31], r15b
lea rdx, [rbp - 0x19]
mov rcx, qword [rsi + 8]
sete al
mov byte [rsi + 0x31], al
call qword [sym.imp.USER32.dll_GetClientRect]
mov rcx, qword [rsi + 8]
lea rdx, [rbp - 0x19]
xor r8d, r8d
call qword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
jmp 0x18018c9a0
cmp r14d, 0xd
jne 0x18018c4f8
cmp byte [rsi + 0x32], r15b
je 0x18018c4f8
mov rax, r15
jmp 0x18018c9a0
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x1a1], r15b
je 0x18018c876
mov rcx, qword [rsi + 0x20]
mov rax, qword [rcx]
call qword [rax + 0x110]
cmp byte [rax + 0x322], r15b
jne 0x18018c876
mov rbx, qword [rsi + 0x20]
mov rcx, rbx
mov rax, qword [rbx]
call qword [rax + 0x110]
mov r8, qword [rsi + 8]
mov rdx, rbx
mov rcx, rax
call fcn.1801704c0
mov rax, qword [rsi + 0x20]
mov r14d, dword [rax + 0x7f8]
cmp r14d, 0xffffffff
je 0x18018c808
mov edx, 1
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SetBkMode]
mov rax, qword [rsi + 0x20]
mov r8d, dword [rax + 0x778]
mov eax, r8d
shr eax, 0x10
movzx ecx, al
movzx edx, r8w
and edx, 0xffffff00
movzx eax, r8b
or edx, ecx
shl eax, 0x10
or edx, eax
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SetTextColor]
mov rax, qword [rsi + 0x28]
cmp r14d, 0xff000000
jae 0x18018c96f
test rax, rax
je 0x18018c8e6
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rsi + 0x20]
mov rbx, qword [rsi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
lea rdx, [rbp - 0x29]
mov rcx, rbx
mov rdi, rax
call qword [sym.imp.USER32.dll_GetWindowRect]
mov rcx, qword [rdi + 0x88]
lea rdx, [rbp - 0x29]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rcx, qword [rdi + 0x88]
lea rdx, [rbp - 0x21]
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rbx, qword [rsi + 0x20]
movaps xmm0, xmmword [rbp - 0x29]
mov rcx, rbx
movdqa xmmword [rbp - 0x19], xmm0
mov rax, qword [rbx]
call qword [rax + 0x110]
mov r9d, r14d
lea rdx, [rbp - 0x19]
mov rcx, rax
mov r8, rbx
call fcn.18019c9c0
mov rcx, rax
mov rbx, rax
call qword [sym.imp.GDI32.dll_CreatePatternBrush]
mov rcx, rbx
mov qword [rsi + 0x28], rax
call qword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x18018c99c
test rax, rax
jne 0x18018c99c
mov eax, r14d
movzx ecx, r14w
shr eax, 0x10
and ecx, 0xffffff00
movzx edx, al
movzx eax, r14b
or ecx, edx
shl eax, 0x10
or ecx, eax
call qword [sym.imp.GDI32.dll_CreateSolidBrush]
mov qword [rsi + 0x28], rax
mov rax, qword [rsi + 0x28]
mov rcx, qword [rbp + 0x17]
xor rcx, rsp
call fcn.1801c74b0
add rsp, 0xa0
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret