Function at 0x1800374c0
Capabilities:
Log keystrokes

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0x98
mov rdi, r8
mov rbx, rdx
mov rsi, rcx
lea rcx, [rsp + 0x68]
call fcn.18004e6a0
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x40], rax
movups xmm0, xmmword [rsp + 0x68]
movaps xmmword [rsp + 0x30], xmm0
movups xmm0, xmmword [rsp + 0x80]
movups xmmword [rsp + 0x48], xmm0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x68], 0x30
mov dword [rsp + 0x20], 0x18
lea r8, [rsp + 0x30]
lea r9, [rsp + 0x68]
mov rcx, rdi
mov edx, 0x10000003
call qword [sym.imp.user32.dll_GetRawInputData]
test bl, bl
jne 0x1800377ba
cmp eax, 0xffffffff
je 0x1800377ba
mov eax, dword [rsp + 0x30]
test eax, eax
je 0x1800375b8
cmp eax, 1
jne 0x1800377ba
movzx r14d, word [rsp + 0x4e]
test r14w, r14w
je 0x1800377ba
movzx ebx, word [rsp + 0x4a]
movzx edi, bx
lea eax, [r14 - 0x10]
cmp ax, 2
ja 0x18003778a
movzx eax, word [rsp + 0x48]
mov edx, eax
or edx, 0xe000
test dil, 2
cmove edx, eax
mov ecx, edx
or ecx, 0xe100
test dil, 4
cmove ecx, edx
mov edx, 3
call qword [sym.imp.user32.dll_MapVirtualKeyA]
test eax, eax
jne 0x18003778d
jmp 0x18003779b
movzx eax, word [rsp + 0x4c]
test al, 1
jne 0x18003762b
test al, 2
jne 0x18003763d
test al, 4
jne 0x180037653
test al, 8
jne 0x180037669
test al, 0x10
jne 0x18003767f
test al, 0x20
jne 0x180037695
test al, 0x40
jne 0x1800376ab
test al, al
js 0x1800376c1
test eax, 0x100
jne 0x1800376da
test eax, 0x200
jne 0x1800376f3
movzx ecx, word [rsp + 0x4e]
test eax, 0x400
jne 0x180037711
test eax, 0x800
jne 0x180037752
jmp 0x1800377ba
mov byte [rsi + 0xb29], 1
mov byte [rsi + 0xdfc], 1
test al, 2
je 0x1800375c5
mov byte [rsi + 0xb29], 0
mov byte [rsi + 0xdfc], 0
test al, 4
je 0x1800375cd
mov byte [rsi + 0xb2a], 1
mov byte [rsi + 0xdfd], 1
test al, 8
je 0x1800375d5
mov byte [rsi + 0xb2a], 0
mov byte [rsi + 0xdfd], 0
test al, 0x10
je 0x1800375dd
mov byte [rsi + 0xb2c], 1
mov byte [rsi + 0xdfe], 1
test al, 0x20
je 0x1800375e5
mov byte [rsi + 0xb2c], 0
mov byte [rsi + 0xdfe], 0
test al, 0x40
je 0x1800375ed
mov byte [rsi + 0xb2d], 1
mov byte [rsi + 0xdff], 1
test al, al
jns 0x1800375f5
mov byte [rsi + 0xb2d], 0
mov byte [rsi + 0xdff], 0
test eax, 0x100
je 0x180037600
mov byte [rsi + 0xb2e], 1
mov byte [rsi + 0xe00], 1
test eax, 0x200
je 0x18003760b
mov byte [rsi + 0xb2e], 0
mov byte [rsi + 0xe00], 0
movzx ecx, word [rsp + 0x4e]
test eax, 0x400
je 0x18003761b
movsx edx, cx
imul edx, edx, 0xffff8889
shr edx, 0x10
add edx, ecx
movzx edx, dx
movsx r8d, dx
shr edx, 0xf
sar r8d, 6
add r8d, edx
movsx edx, r8w
xorps xmm0, xmm0
cvtsi2ss xmm0, edx
addss xmm0, dword [rsi + 0xe04]
movss dword [rsi + 0xe04], xmm0
test eax, 0x800
je 0x1800377ba
movsx eax, cx
imul eax, eax, 0xffff8889
shr eax, 0x10
add eax, ecx
movzx eax, ax
movsx ecx, ax
shr eax, 0xf
sar ecx, 6
add ecx, eax
movsx eax, cx
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
addss xmm0, dword [rsi + 0xe08]
movss dword [rsi + 0xe08], xmm0
jmp 0x1800377ba
mov eax, r14d
movzx ecx, ax
mov r14d, eax
cmp ecx, 0xfe
ja 0x1800377ba
movzx eax, r14w
test bx, bx
jne 0x1800377ac
mov byte [rsi + rax + 0xb28], 1
test dil, 1
je 0x1800377ba
mov byte [rsi + rax + 0xb28], 0
add rsp, 0x98
pop rbx
pop rdi
pop rsi
pop r14
ret