Function at 0x18010bf90
Capabilities:
Encode data using xor
Hash data using fnv
Log keystrokes
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0xb0
mov rbx, rcx
xor r8d, r8d
movsx r13, dx
cmp r13d, 0xa3
ja case.0x18010bfe5.3
lea rdx, [0x180000000]
movzx eax, byte [rdx + r13 + 0x10ca1c]
mov ecx, dword [rdx + rax*4 + 0x10c964]
add rcx, rdx
jmp rcx
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 4
mov qword [rbx + 0x18], 0xf
mov dword [rbx], 0x656e6f6e
mov byte [rbx + 4], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 6
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.mouse1]
mov dword [rbx], eax
movzx eax, word [0x1801f9c80]
mov word [rbx + 4], ax
mov byte [rbx + 6], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 6
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.mouse2]
mov dword [rbx], eax
movzx eax, word [0x1801f9cb8]
mov word [rbx + 4], ax
mov byte [rbx + 6], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 6
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.mouse3]
mov dword [rbx], eax
movzx eax, word [0x1801f9cb0]
mov word [rbx + 4], ax
mov byte [rbx + 6], r8b
jmp 0x18010c93d
lea rdx, str.mouse4
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.mouse5
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 7
mov qword [rbx + 0x18], 0xf
mov rax, qword [str.control]
mov dword [rbx], eax
movzx eax, word [0x1801f9cd4]
mov word [rbx + 4], ax
movzx eax, byte [0x1801f9cd6]
mov byte [rbx + 6], al
mov byte [rbx + 7], r8b
jmp 0x18010c93d
lea rdx, str.num0
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 4
mov qword [rbx + 0x18], 0xf
mov dword [rbx], 0x316d756e
mov byte [rbx + 4], r8b
jmp 0x18010c93d
lea rdx, str.num2
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num3
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num4
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num5
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num6
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num7
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num8
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num9
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.num_
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.insert
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.delete
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.pgup
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.pgdown
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, str.home
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
lea rdx, [0x1801f1db0]
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 5
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.clear]
mov dword [rbx], eax
movzx eax, byte [0x1801f9d1c]
mov byte [rbx + 4], al
mov byte [rbx + 5], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 2
mov qword [rbx + 0x18], 0xf
mov word [rbx], 0x7075
mov byte [rbx + 2], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 4
mov qword [rbx + 0x18], 0xf
mov dword [rbx], 0x6e776f64
mov byte [rbx + 4], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 4
mov qword [rbx + 0x18], 0xf
mov dword [rbx], 0x7466656c
mov byte [rbx + 4], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 5
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.right]
mov dword [rbx], eax
movzx eax, byte [0x1801f9d3c]
mov byte [rbx + 4], al
mov byte [rbx + 5], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 6
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.escape]
mov dword [rbx], eax
movzx eax, word [0x1801f9d50]
mov word [rbx + 4], ax
mov byte [rbx + 6], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d48]
mov word [rbx], ax
movzx eax, byte [0x1801f9d4a]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d44]
mov word [rbx], ax
movzx eax, byte [0x1801f9d46]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d40]
mov word [rbx], ax
movzx eax, byte [0x1801f9d42]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
lea rdx, [0x1801f9d60]
mov rcx, rbx
call fcn.18008f930
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d5c]
mov word [rbx], ax
movzx eax, byte [0x1801f9d5e]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d58]
mov word [rbx], ax
movzx eax, byte [0x1801f9d5a]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d54]
mov word [rbx], ax
movzx eax, byte [0x1801f9d56]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d70]
mov word [rbx], ax
movzx eax, byte [0x1801f9d72]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d6c]
mov word [rbx], ax
movzx eax, byte [0x1801f9d6e]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d68]
mov word [rbx], ax
movzx eax, byte [0x1801f9d6a]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d64]
mov word [rbx], ax
movzx eax, byte [0x1801f9d66]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 3
mov qword [rbx + 0x18], 0xf
mov eax, dword [0x1801f9d88]
mov word [rbx], ax
movzx eax, byte [0x1801f9d8a]
mov byte [rbx + 2], al
mov byte [rbx + 3], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 7
mov qword [rbx + 0x18], 0xf
mov rax, qword [str.windows]
mov dword [rbx], eax
movzx eax, word [0x1801f9d84]
mov word [rbx + 4], ax
movzx eax, byte [0x1801f9d86]
mov byte [rbx + 6], al
mov byte [rbx + 7], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 5
mov qword [rbx + 0x18], 0xf
mov eax, dword [str.pause]
mov dword [rbx], eax
movzx eax, byte [0x1801f9d78]
mov byte [rbx + 4], al
mov byte [rbx + 5], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], 4
mov qword [rbx + 0x18], 0xf
mov dword [rbx], 0x73707061
mov byte [rbx + 4], r8b
jmp 0x18010c93d
xorps xmm0, xmm0
movups xmmword [rbp - 0x59], xmm0
movdqa xmm1, xmmword [0x180202740]
movdqu xmmword [rbp - 0x49], xmm1
mov rax, qword [str.unknown]
mov dword [rbp - 0x59], eax
movzx eax, word [0x1801f9da4]
mov word [rbp - 0x55], ax
movzx eax, byte [0x1801f9da6]
mov byte [rbp - 0x53], al
mov byte [rbp - 0x52], r8b
mov word [rbp - 0x39], r8w
xor eax, eax
mov qword [rbp - 0x37], rax
mov dword [rbp - 0x2f], eax
mov word [rbp - 0x2b], ax
xor edx, edx
mov ecx, r13d
call qword [sym.imp.USER32.dll_MapVirtualKeyW]
shl eax, 0x10
mov r8d, 0x10
lea rdx, [rbp - 0x39]
mov ecx, eax
call qword [sym.imp.USER32.dll_GetKeyNameTextA]
mov r14, 0xffffffffffffffff
test eax, eax
je 0x18010c6cd
lea rax, [rbp - 0x39]
mov r8, r14
inc r8
cmp byte [rax + r8], 0
jne 0x18010c6b6
lea rdx, [rbp - 0x39]
lea rcx, [rbp - 0x59]
call fcn.18008fd60
lea rsi, [rbp - 0x59]
mov rcx, qword [rbp - 0x59]
mov r8, qword [rbp - 0x41]
cmp r8, 0xf
cmova rsi, rcx
lea r15, [rbp - 0x59]
cmova r15, rcx
mov r12, qword [rbp - 0x49]
add r15, r12
lea rdi, [rbp - 0x59]
cmp r8, 0xf
cmova rdi, rcx
cmp rdi, r15
je 0x18010c724
sub rsi, rdi
movsx ecx, byte [rdi]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
mov byte [rsi + rdi], al
inc rdi
cmp rdi, r15
jne 0x18010c704
mov r8, qword [rbp - 0x41]
mov r12, qword [rbp - 0x49]
mov rcx, qword [rbp - 0x59]
lea rdx, [rbp - 0x59]
cmp r8, 0xf
cmova rdx, rcx
add rdx, r12
mov qword [rbp + 0x77], rdx
lea r15, [rbp - 0x59]
cmp r8, 0xf
cmova r15, rcx
add r15, r12
lea rdi, [rbp - 0x59]
cmp r8, 0xf
cmova rdi, rcx
cmp rdi, r15
je 0x18010c7af
movsx ecx, byte [rdi]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isspace]
test eax, eax
jne 0x18010c76c
inc rdi
cmp rdi, r15
jne 0x18010c757
mov r8, qword [rbp - 0x41]
mov r12, qword [rbp - 0x49]
mov rcx, qword [rbp - 0x59]
cmp rdi, r15
je 0x18010c7af
lea rsi, [rdi + 1]
cmp rsi, r15
je 0x18010c7af
movsx ecx, byte [rsi]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isspace]
test eax, eax
jne 0x18010c79b
movzx eax, byte [rsi]
mov byte [rdi], al
inc rdi
inc rsi
cmp rsi, r15
jne 0x18010c786
mov r8, qword [rbp - 0x41]
mov r12, qword [rbp - 0x49]
mov rcx, qword [rbp - 0x59]
lea rax, [rbp - 0x59]
cmp r8, 0xf
cmova rax, rcx
mov rdx, rdi
sub rdx, rax
mov r9, qword [rbp + 0x77]
sub r9, rdi
mov rax, r12
sub rax, rdx
cmp rax, r9
cmovb r9, rax
lea rax, [rbp - 0x59]
cmp r8, 0xf
cmova rax, rcx
lea rcx, [rax + rdx]
sub r12, r9
mov r8, r12
sub r8, rdx
inc r8
lea rdx, [rcx + r9]
call sub.VCRUNTIME140.dll_memmove
mov qword [rbp - 0x49], r12
cmp byte [0x1802355f1], 0
je 0x18010c91e
lea rdx, [rbp - 0x59]
cmp qword [rbp - 0x41], 0xf
cmova rdx, qword [rbp - 0x59]
mov edi, 0x811c9dc5
nop
inc r14
cmp byte [rdx + r14], 0
jne 0x18010c820
xor ecx, ecx
test r14, r14
je 0x18010c845
movsx eax, byte [rcx + rdx]
xor eax, edi
imul edi, eax, 0x1000193
inc rcx
cmp rcx, r14
jb 0x18010c831
mov edx, 0xf00c3c10
lea rcx, [0x1801f9da1]
call fcn.1800de0e0
cmp edi, eax
jne 0x18010c91e
lea rax, str.:x
mov qword [rbp - 0x19], rax
mov qword [rbp - 0x11], 5
mov dword [rbp + 7], r13d
movabs rax, 0x1000000000000000
mov qword [rbp - 1], rax
mov qword [rbp - 0x29], 1
lea rax, [rbp - 1]
mov qword [rbp - 0x21], rax
movaps xmm0, xmmword [rbp - 0x29]
movdqa xmmword [rbp - 0x29], xmm0
movaps xmm1, xmmword [rbp - 0x19]
movdqa xmmword [rbp - 0x19], xmm1
lea r8, [rbp - 0x29]
lea rdx, [rbp - 0x19]
lea rcx, [rbp + 0xf]
call fcn.1800cad30
mov rdx, qword [rbp - 0x41]
cmp rdx, 0xf
jbe 0x18010c8f4
inc rdx
mov rcx, qword [rbp - 0x59]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18010c8ef
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x18010c8ef
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.18017f74c
movups xmm0, xmmword [rbp + 0xf]
movups xmmword [rbp - 0x59], xmm0
movups xmm1, xmmword [rbp + 0x1f]
movups xmmword [rbp - 0x49], xmm1
movdqa xmm0, xmmword [0x1802026d0]
movdqu xmmword [rbp + 0x1f], xmm0
mov byte [rbp + 0xf], 0
lea rcx, [rbp + 0xf]
call fcn.18008fd00
mov qword [rbx + 0x10], 0
mov qword [rbx + 0x18], 0
movups xmm0, xmmword [rbp - 0x59]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rbp - 0x49]
movups xmmword [rbx + 0x10], xmm1
mov rax, rbx
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret