Function at 0x180076170
Capabilities:
Get keyboard layout
Log keystrokes via polling

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rax - 0x78]
sub rsp, 0x150
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rsi
mov rax, qword [0x1804e0010]
xor rax, rsp
mov qword [rbp + 0x40], rax
mov rsi, rdx
mov r14, rcx
mov qword [rsp + 0x40], rdx
xor r12d, r12d
mov dword [rsp + 0x30], r12d
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x58], xmm0
movdqa xmm1, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x58], xmm1
mov word [rsp + 0x48], r12w
cmp byte [rcx + 1], r12b
je 0x180076246
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov rax, rdx
sub rax, rcx
cmp rax, 5
jb 0x180076225
lea rdi, [rcx + 5]
mov qword [rsp + 0x58], rdi
lea rbx, [rsp + 0x48]
cmp rdx, 8
cmovae rbx, qword [rsp + 0x48]
lea rcx, [rbx + rcx*2]
lea r8d, [r12 + 0xa]
lea rdx, [0x1803d2468]
call sub.VCRUNTIME140.dll_memmove
mov word [rbx + rdi*2], r12w
jmp 0x180076246
mov qword [rsp + 0x20], 5
lea r9, [0x1803d2468]
xor r8d, r8d
lea edx, [r8 + 5]
lea rcx, [rsp + 0x48]
call fcn.18000ada0
cmp byte [r14 + 2], 0
je 0x1800762b9
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov rax, rdx
sub rax, rcx
cmp rax, 6
jb 0x180076298
lea rdi, [rcx + 6]
mov qword [rsp + 0x58], rdi
lea rbx, [rsp + 0x48]
cmp rdx, 8
cmovae rbx, qword [rsp + 0x48]
lea rcx, [rbx + rcx*2]
mov r8d, 0xc
lea rdx, [0x1803d2458]
call sub.VCRUNTIME140.dll_memmove
mov word [rbx + rdi*2], r12w
jmp 0x1800762b9
mov qword [rsp + 0x20], 6
lea r9, [0x1803d2458]
xor r8d, r8d
lea edx, [r8 + 6]
lea rcx, [rsp + 0x48]
call fcn.18000ada0
cmp byte [r14], 0
je 0x18007632b
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov rax, rdx
sub rax, rcx
cmp rax, 4
jb 0x18007630a
lea rdi, [rcx + 4]
mov qword [rsp + 0x58], rdi
lea rbx, [rsp + 0x48]
cmp rdx, 8
cmovae rbx, qword [rsp + 0x48]
lea rcx, [rbx + rcx*2]
mov r8d, 8
lea rdx, [0x1803d24a8]
call sub.VCRUNTIME140.dll_memmove
mov word [rbx + rdi*2], r12w
jmp 0x18007632b
mov qword [rsp + 0x20], 4
lea r9, [0x1803d24a8]
xor r8d, r8d
lea edx, [r8 + 4]
lea rcx, [rsp + 0x48]
call fcn.18000ada0
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov r8, rax
movzx ecx, byte [r14 + 3]
xor edx, edx
call qword [sym.imp.USER32.dll_MapVirtualKeyExW]
mov ebx, eax
xor edx, edx
mov r8d, 0xa2
lea rcx, [rbp - 0x70]
call sub.VCRUNTIME140.dll_memset
movzx eax, byte [r14 + 3]
cmp al, 0x21
jb 0x1800764c7
cmp al, 0x28
jbe 0x18007642e
cmp al, 0x2c
jbe 0x1800764c7
cmp al, 0x2e
jbe 0x18007642e
cmp al, 0xbb
jne 0x1800764c7
lea r8, [0x1803d24a0]
mov edx, 0x51
lea rcx, [rbp - 0x70]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x78], xmm0
movdqa xmm1, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm1
mov word [rsp + 0x68], r12w
lea rax, [rbp - 0x70]
mov rbx, 0xffffffffffffffff
mov r8, rbx
inc r8
cmp word [rax + r8*2], 0
jne 0x1800763c4
lea rdx, [rbp - 0x70]
lea rcx, [rsp + 0x68]
call fcn.180005cd0
nop
mov rdi, qword [rsp + 0x78]
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x18007655b
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180076556
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180076556
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
bts ebx, 8
shl ebx, 0x10
mov r8d, 0x50
lea rdx, [rbp - 0x70]
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyNameTextW]
test eax, eax
jne 0x180076399
mov qword [rsi + 0x10], r12
mov qword [rsi + 0x18], 7
mov word [rsi], r12w
xor r8d, r8d
lea rdx, [0x1803cd4c0]
mov rcx, rsi
call fcn.180005cd0
mov dword [rsp + 0x30], 1
mov rdx, qword [rsp + 0x60]
cmp rdx, 8
jb 0x180076778
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800764bd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1800764bd
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.180393fb0
jmp 0x180076778
shl ebx, 0x10
mov r8d, 0x50
lea rdx, [rbp - 0x70]
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyNameTextW]
test eax, eax
jne 0x180076399
mov qword [rsi + 0x10], r12
mov qword [rsi + 0x18], 7
mov word [rsi], r12w
xor r8d, r8d
lea rdx, [0x1803cd4c0]
mov rcx, rsi
call fcn.180005cd0
mov dword [rsp + 0x30], 1
mov rdx, qword [rsp + 0x60]
cmp rdx, 8
jb 0x180076778
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800764bd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1800764bd
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call fcn.180393fb0
movdqa xmm0, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm0
mov word [rsp + 0x68], r12w
cmp rdi, 1
jbe 0x180076642
lea rcx, [rbp - 0x70]
call qword [sym.imp.USER32.dll_CharNextW]
mov rdi, rax
test rax, rax
je 0x180076642
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x78], xmm0
movdqa xmm1, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm1
mov word [rsp + 0x68], r12w
lea rax, [rbp - 0x70]
mov r8, rbx
inc r8
cmp word [rax + r8*2], 0
jne 0x1800765b3
lea rdx, [rbp - 0x70]
lea rcx, [rsp + 0x68]
call fcn.180005cd0
nop
lea rcx, [rbp - 0x70]
mov rax, rdi
sub rax, rcx
sar rax, 1
mov edx, dword [rsp + 0x78]
sub edx, eax
mov rcx, rdi
call qword [sym.imp.USER32.dll_CharLowerBuffW]
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x18007662e
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180076629
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180076629
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.180393fb0
movdqa xmm0, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm0
mov word [rsp + 0x68], r12w
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x78], xmm0
movdqa xmm1, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm1
mov word [rsp + 0x68], r12w
lea rax, [rbp - 0x70]
inc rbx
cmp word [rax + rbx*2], 0
jne 0x180076663
mov r8, rbx
lea rdx, [rbp - 0x70]
lea rcx, [rsp + 0x68]
call fcn.180005cd0
nop
lea r9, [rsp + 0x68]
mov r14, qword [rsp + 0x68]
mov r15, qword [rbp - 0x80]
cmp r15, 8
cmovae r9, r14
mov rcx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x60]
mov rax, r8
sub rax, rcx
mov rdx, qword [rsp + 0x78]
cmp rdx, rax
ja 0x1800766de
lea rdi, [rdx + rcx]
mov qword [rsp + 0x58], rdi
lea rbx, [rsp + 0x48]
cmp r8, 8
cmovae rbx, qword [rsp + 0x48]
lea r8, [rdx + rdx]
lea rcx, [rbx + rcx*2]
mov rdx, r9
call sub.VCRUNTIME140.dll_memmove
mov word [rbx + rdi*2], r12w
jmp 0x1800766f9
mov qword [rsp + 0x20], rdx
xor r8d, r8d
lea rcx, [rsp + 0x48]
call fcn.18000ada0
mov r15, qword [rbp - 0x80]
mov r14, qword [rsp + 0x68]
cmp r15, 8
jb 0x180076737
lea rdx, [r15*2 + 2]
mov rax, r14
cmp rdx, 0x1000
jb 0x18007672f
add rdx, 0x27
mov r14, qword [r14 - 8]
sub rax, r14
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x18007672f
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, r14
call fcn.180393fb0
movdqa xmm0, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x78], xmm0
mov word [rsp + 0x68], r12w
movups xmm0, xmmword [rsp + 0x48]
movups xmmword [rsi], xmm0
movups xmm1, xmmword [rsp + 0x58]
movups xmmword [rsi + 0x10], xmm1
movdqa xmm0, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x58], xmm0
mov word [rsp + 0x48], r12w
mov dword [rsp + 0x30], 1
movdqa xmm0, xmmword [0x1803f7240]
movdqu xmmword [rsp + 0x58], xmm0
mov word [rsp + 0x48], r12w
mov rax, rsi
mov rcx, qword [rbp + 0x40]
xor rcx, rsp
call fcn.180393f50
lea r11, [rsp + 0x150]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret