Function at 0x140046110
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x30
cmp dword [0x14011c9b0], 0
movaps xmmword [rsp + 0x20], xmm6
movsxd rbx, ecx
jne 0x14004633f
cmp byte [0x140118cf0], 0
je 0x14004617d
call fcn.140045a30
mov rax, qword [0x14011c9d8]
movaps xmm1, xmm0
mov rcx, rbx
add rcx, rcx
mulsd xmm1, qword [rax + rcx*8 + 8]
call fcn.1400459a0
mulsd xmm1, xmm0
movss xmm0, dword [0x140118d00]
cvtps2pd xmm0, xmm0
mulsd xmm1, qword [0x1400ffa28]
divsd xmm1, xmm0
movaps xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c94e], 0
je 0x1400461cf
call fcn.140045a30
mov rax, qword [0x14011cac8]
movaps xmm2, xmm0
mov rcx, rbx
add rcx, rcx
mulsd xmm2, qword [rax + rcx*8 + 8]
call fcn.1400459a0
movss xmm1, dword [0x140118d00]
mulsd xmm2, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm2, qword [0x1400ffa28]
divsd xmm2, xmm1
movaps xmm0, xmm2
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c93f], 0
je 0x1400461e6
call fcn.140045a30
mov rax, qword [0x14011ca80]
jmp 0x140046192
cmp byte [0x14011c95a], 0
je 0x1400461fd
call fcn.140045a30
mov rax, qword [0x14011cb10]
jmp 0x140046192
cmp byte [0x14011c94c], 0
je 0x140046217
call fcn.140045a30
mov rax, qword [0x14011cb78]
jmp 0x140046192
cmp byte [0x14011c93d], 0
je 0x14004628a
shl rbx, 4
mov ecx, SafeArrayGetLBound
add rbx, qword [0x14011ca38]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs ecx, dword [0x140118d44]
call fcn.140045a30
movaps xmm2, xmm0
mulsd xmm2, qword [rbx + 8]
call fcn.1400459a0
movd xmm1, ecx
mulsd xmm2, xmm0
cvtdq2pd xmm0, xmm1
movss xmm1, dword [0x140118d00]
mulsd xmm0, xmm2
cvtps2pd xmm1, xmm1
mulsd xmm0, qword [0x1400ffa28]
divsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c94d], 0
je 0x1400462d4
mov ecx, SafeArrayGetLBound
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs edx, dword [0x140118d44]
call fcn.140045a30
mov rax, qword [0x14011ca50]
movaps xmm2, xmm0
mov rcx, rbx
add rcx, rcx
mulsd xmm2, qword [rax + rcx*8 + 8]
call fcn.1400459a0
movd xmm1, edx
jmp 0x14004625c
cmp byte [0x14011c93e], 0
je 0x140046306
mov ecx, SafeArrayGetLBound
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs edx, dword [0x140118d44]
call fcn.140045a30
mov rax, qword [0x14011c9f0]
jmp 0x1400462ba
cmp byte [0x14011c939], 0
je 0x140046708
mov ecx, SafeArrayGetLBound
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs edx, dword [0x140118d44]
call fcn.140045a30
mov rax, qword [0x14011cae0]
jmp 0x1400462ba
cmp byte [0x140118cf0], 0
je 0x1400463cc
mov rax, rbx
shl rax, 4
add rax, qword [0x14011c9d8]
call fcn.140045a30
movaps xmm6, xmm0
mulsd xmm6, qword [rax + 8]
call fcn.1400459a0
movss xmm1, dword [0x140118d00]
mulsd xmm6, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm6, qword [0x1400ffa28]
divsd xmm6, xmm1
divsd xmm6, qword [0x1400ffaf0]
mulsd xmm6, qword [0x1400ffaf0]
call fcn.1400bd9c8
mov r8d, dword [0x14011c9b0]
xorps xmm0, xmm0
cdq
xorps xmm1, xmm1
lea ecx, [r8 + r8]
idiv ecx
cvtsi2sd xmm1, r8d
cvtsi2sd xmm0, edx
addsd xmm0, xmm6
subsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c94e], 0
je 0x1400463e8
mov rax, rbx
shl rax, 4
add rax, qword [0x14011cac8]
jmp 0x14004635a
cmp byte [0x14011c93f], 0
je 0x140046404
mov rax, rbx
shl rax, 4
add rax, qword [0x14011ca80]
jmp 0x14004635a
cmp byte [0x14011c95a], 0
je 0x140046420
mov rax, rbx
shl rax, 4
add rax, qword [0x14011cb10]
jmp 0x14004635a
cmp byte [0x14011c94c], 0
je 0x14004643c
mov rax, rbx
shl rax, 4
add rax, qword [0x14011cb78]
jmp 0x14004635a
cmp byte [0x14011c93d], 0
je 0x1400464ef
shl rbx, 4
mov ecx, SafeArrayGetLBound
add rbx, qword [0x14011ca38]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs ecx, dword [0x140118d44]
call fcn.140045a30
movaps xmm6, xmm0
mulsd xmm6, qword [rbx + 8]
call fcn.1400459a0
mulsd xmm6, xmm0
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
mulsd xmm6, xmm1
movss xmm1, dword [0x140118d00]
cvtps2pd xmm1, xmm1
mulsd xmm6, qword [0x1400ffa28]
divsd xmm6, xmm1
divsd xmm6, qword [0x1400ffaf0]
mulsd xmm6, qword [0x1400ffaf0]
call fcn.1400bd9c8
mov r8d, dword [0x14011c9b0]
cdq
lea ecx, [r8 + r8]
movd xmm1, r8d
idiv ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
subsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c94d], 0
je 0x1400465a2
shl rbx, 4
mov ecx, SafeArrayGetLBound
add rbx, qword [0x14011ca50]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs ecx, dword [0x140118d44]
call fcn.140045a30
movaps xmm6, xmm0
mulsd xmm6, qword [rbx + 8]
call fcn.1400459a0
mulsd xmm6, xmm0
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
mulsd xmm6, xmm1
movss xmm1, dword [0x140118d00]
cvtps2pd xmm1, xmm1
mulsd xmm6, qword [0x1400ffa28]
divsd xmm6, xmm1
divsd xmm6, qword [0x1400ffaf0]
mulsd xmm6, qword [0x1400ffaf0]
call fcn.1400bd9c8
mov r8d, dword [0x14011c9b0]
cdq
lea ecx, [r8 + r8]
movd xmm1, r8d
idiv ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
subsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c93e], 0
je 0x140046655
shl rbx, 4
mov ecx, SafeArrayGetLBound
add rbx, qword [0x14011c9f0]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs ecx, dword [0x140118d44]
call fcn.140045a30
movaps xmm6, xmm0
mulsd xmm6, qword [rbx + 8]
call fcn.1400459a0
mulsd xmm6, xmm0
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
mulsd xmm6, xmm1
movss xmm1, dword [0x140118d00]
cvtps2pd xmm1, xmm1
mulsd xmm6, qword [0x1400ffa28]
divsd xmm6, xmm1
divsd xmm6, qword [0x1400ffaf0]
mulsd xmm6, qword [0x1400ffaf0]
call fcn.1400bd9c8
mov r8d, dword [0x14011c9b0]
cdq
lea ecx, [r8 + r8]
movd xmm1, r8d
idiv ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
subsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x14011c939], 0
je 0x140046708
shl rbx, 4
mov ecx, SafeArrayGetLBound
add rbx, qword [0x14011cae0]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [reloc.OLEAUT32.dll_SysReAllocString]
test ax, ax
cmovs ecx, dword [0x140118d44]
call fcn.140045a30
movaps xmm6, xmm0
mulsd xmm6, qword [rbx + 8]
call fcn.1400459a0
mulsd xmm6, xmm0
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
mulsd xmm6, xmm1
movss xmm1, dword [0x140118d00]
cvtps2pd xmm1, xmm1
mulsd xmm6, qword [0x1400ffa28]
divsd xmm6, xmm1
divsd xmm6, qword [0x1400ffaf0]
mulsd xmm6, qword [0x1400ffaf0]
call fcn.1400bd9c8
mov r8d, dword [0x14011c9b0]
cdq
lea ecx, [r8 + r8]
movd xmm1, r8d
idiv ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
subsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
movaps xmm6, xmmword [rsp + 0x20]
xorps xmm0, xmm0
add rsp, 0x30
pop rbx
ret