Function at 0x180065d80
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x30
mov rbx, r9
mov rdi, r8
cmp edx, 0x200
ja 0x1800661c1
je 0x180066169
sub edx, 0x100
je 0x180065ede
sub edx, 1
je 0x180065ede
sub edx, 1
je 0x180065ddb
sub edx, 2
je 0x180065ede
sub edx, 1
je 0x180065ede
xor eax, eax
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp rdi, 0x20
jb case.0x1800661e2.518
cmp edi, 0x10ffff
jae 0x180065e05
cmp edi, 0xd800
jb 0x180065df9
cmp edi, 0xdfff
jb 0x180065e05
mov ecx, 1
cmp edi, 0x7f
jbe 0x180065e29
jmp 0x180065e0a
mov edi, 0xfffd
lea rax, [0x180091fb4]
mov ecx, 1
inc ecx
lea rax, [rax + 4]
cmp edi, dword [rax]
ja 0x180065e16
cmp ecx, 4
jg 0x180065e79
test ecx, ecx
je 0x180065e79
lea eax, [rcx - 1]
movsxd rdx, eax
test eax, eax
je 0x180065e55
nop dword [rax]
nop word [rax + rax]
movzx eax, dil
shr edi, 6
and al, 0x3f
or al, 0x80
mov byte [rsp + rdx + 0x48], al
sub rdx, 1
jne 0x180065e40
movsxd rcx, ecx
lea r8, [0x180000000]
movzx eax, byte [rcx + r8 + 0x92f28]
not al
and al, dil
or al, byte [rcx + r8 + 0x91fc4]
mov byte [rsp + 0x48], al
mov r8d, 4
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x48]
call fcn.18004b1c0
mov r11d, eax
test eax, eax
je 0x1800664ca
movsxd rcx, dword [0x1800a2b10]
add eax, ecx
cmp eax, 0x10
jge 0x1800664ca
mov r8d, 0x10
lea rdx, [0x1800a2b00]
sub r8d, ecx
add rdx, rcx
mov ecx, dword [rsp + 0x20]
call fcn.18004b340
add dword [0x1800a2b10], r11d
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
sar rbx, 0x1f
mov ecx, 0x11
not ebx
and ebx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
movzx edx, ax
add rdi, 0xfffffffffffffff8
and edx, 0x8000
cmp rdi, 0x99
ja case.0x1800661e2.518
lea r8, [0x180000000]
movzx eax, byte [r8 + rdi + 0x66520]
mov ecx, dword [r8 + rax*4 + 0x664dc]
add rcx, r8
jmp rcx
inc dword [0x1800a2a1c]
mov eax, 1
mov dword [0x1800a2a18], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a2c]
mov eax, 1
mov dword [0x1800a2a28], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a34]
mov eax, 1
mov dword [0x1800a2a30], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a3c]
mov eax, 1
mov dword [0x1800a2a38], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je 0x180065fb9
inc dword [0x1800a2ad4]
mov eax, 1
mov dword [0x1800a2ad0], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a74]
mov eax, 1
mov dword [0x1800a2a70], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je 0x180065ff5
inc dword [0x1800a2adc]
mov eax, 1
mov dword [0x1800a2ad8], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a7c]
mov eax, 1
mov dword [0x1800a2a78], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2a44]
mov eax, 1
mov dword [0x1800a2a40], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2aac]
mov eax, 1
inc dword [0x1800a2ae4]
mov dword [0x1800a2aa8], ebx
mov dword [0x1800a2ae0], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2ab4]
mov eax, 1
inc dword [0x1800a2aec]
mov dword [0x1800a2ab0], ebx
mov dword [0x1800a2ae8], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2af4]
mov eax, 1
mov dword [0x1800a2af0], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
inc dword [0x1800a2afc]
mov eax, 1
mov dword [0x1800a2af8], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je case.0x1800661e2.518
inc dword [0x1800a2a4c]
mov eax, 1
mov dword [0x1800a2a48], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je case.0x1800661e2.518
inc dword [0x1800a2a5c]
mov eax, 1
mov dword [0x1800a2a58], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je case.0x1800661e2.518
inc dword [0x1800a2a54]
mov eax, 1
mov dword [0x1800a2a50], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je case.0x1800661e2.518
inc dword [0x1800a2abc]
mov eax, 1
mov dword [0x1800a2ab8], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
test edx, edx
je case.0x1800661e2.518
inc dword [0x1800a2ac4]
mov eax, 1
mov dword [0x1800a2ac0], ebx
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
movsx eax, bx
shr rbx, 0x10
movd xmm1, eax
movsx eax, bx
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov eax, 1
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b54], xmm1
subss xmm1, dword [0x1800a2b5c]
movss dword [0x1800a2b58], xmm0
subss xmm0, dword [0x1800a2b60]
movss dword [0x1800a2b64], xmm1
movss dword [0x1800a2b68], xmm0
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
add edx, 0xfffffdff
cmp edx, 9
ja case.0x1800661e2.518
lea r8, [0x180000000]
mov eax, dword [r8 + rdx*4 + 0x665bc]
add rax, r8
jmp rax
cmp dword [0x1800a2b14], 1
je 0x1800663cd
inc dword [0x1800a2b18]
movsx eax, bx
shr rbx, 0x10
mov dword [0x1800a2b14], 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b1c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b20], xmm0
call qword [sym.imp.USER32.dll_SetCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
mov rdx, rbx
xor ecx, ecx
shr rdx, 0x10
cmp dword [0x1800a2b44], ecx
je 0x180066280
inc dword [0x1800a2b48]
movsx eax, bx
mov dword [0x1800a2b44], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, dx
movss dword [0x1800a2b4c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b50], xmm0
cmp dword [0x1800a2b14], ecx
je 0x180066422
inc dword [0x1800a2b18]
movsx eax, bx
mov byte [0x1800a2b77], cl
mov dword [0x1800a2b14], ecx
movd xmm0, eax
movsx eax, dx
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
movss dword [0x1800a2b1c], xmm0
movss dword [0x1800a2b20], xmm1
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp dword [0x1800a2b34], 1
je 0x1800663cd
inc dword [0x1800a2b38]
movsx eax, bx
shr rbx, 0x10
mov dword [0x1800a2b34], 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b3c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b40], xmm0
call qword [sym.imp.USER32.dll_SetCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp dword [0x1800a2b34], 0
je 0x180066422
inc dword [0x1800a2b38]
xor ecx, ecx
movsx eax, bx
shr rbx, 0x10
mov dword [0x1800a2b34], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b3c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b40], xmm0
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp dword [0x1800a2b24], 1
je 0x1800663cd
movsx eax, bx
shr rbx, 0x10
inc dword [0x1800a2b28]
mov dword [0x1800a2b24], 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b2c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b30], xmm0
call qword [sym.imp.USER32.dll_SetCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp dword [0x1800a2b24], 0
je 0x180066422
movsx eax, bx
xor ecx, ecx
shr rbx, 0x10
inc dword [0x1800a2b28]
mov dword [0x1800a2b24], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b2c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b30], xmm0
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, 1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
movss xmm1, dword [0x1800a2b6c]
xorps xmm0, xmm0
addss xmm1, xmm0
shr rdi, 0x10
movsx eax, di
movd xmm0, eax
mov eax, 1
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b6c], xmm1
divss xmm0, dword [0x1800961f8]
movss xmm1, dword [0x1800a2b70]
addss xmm1, xmm0
movss dword [0x1800a2b70], xmm1
mov rbx, qword [rsp + 0x40]
add rsp, 0x30
pop rdi
ret
cmp dword [0x1800a2b44], 1
je 0x1800664ca
movsx eax, bx
shr rbx, 0x10
inc dword [0x1800a2b48]
mov dword [0x1800a2b44], 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movsx eax, bx
movss dword [0x1800a2b4c], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1800a2b50], xmm0
mov rbx, qword [rsp + 0x40]
mov eax, 1
add rsp, 0x30
pop rdi
ret