user: What would the C source look like for the assembly code provided here?

```asm
<kernel_dgemv_n_8_vs_lib4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x74(%rbp)
  mov    %esi,-0x78(%rbp)
  mov    %rdx,-0x80(%rbp)
  mov    %ecx,-0x84(%rbp)
  mov    %r8,-0x90(%rbp)
  mov    %r9,-0x98(%rbp)
  cmpl   $0x0,-0x78(%rbp)
  jle    L105
  mov    -0x84(%rbp),%eax
  shl    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  movl   $0x4,-0x6c(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L57
L0:
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  0x18(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x80(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x6c(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x6c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x6c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x6c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x6c(%rbp),%eax
  shl    $0x2,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x80(%rbp)
  mov    -0x6c(%rbp),%eax
  shl    $0x2,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x68(%rbp)
  addq   $0x20,-0x90(%rbp)
  addl   $0x4,-0x70(%rbp)
L57:
  mov    -0x78(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,-0x70(%rbp)
  jl     L0
  jmp    L130
L67:
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x80(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x6c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x80(%rbp)
  mov    -0x6c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x68(%rbp)
  addq   $0x8,-0x90(%rbp)
  addl   $0x1,-0x70(%rbp)
L130:
  mov    -0x70(%rbp),%eax
  cmp    -0x78(%rbp),%eax
  jl     L67
  cmpl   $0x0,0x18(%rbp)
  je     L68
  cmpl   $0x1,0x18(%rbp)
  jne    L118
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L71
L118:
  mov    -0x98(%rbp),%rax
  movsd  (%rax),%xmm0
  subsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  subsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x98(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L71
L68:
  nop
L71:
  mov    0x10(%rbp),%rax
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x10,%rax
  movsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x18,%rax
  movsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  cmpl   $0x7,-0x74(%rbp)
  jle    L92
  mov    0x10(%rbp),%rax
  add    $0x20,%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  add    $0x38,%rax
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L117
L92:
  mov    0x10(%rbp),%rax
  add    $0x20,%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  cmpl   $0x5,-0x74(%rbp)
  jle    L117
  mov    0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  cmpl   $0x6,-0x74(%rbp)
  jle    L117
  mov    0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L117
L105:
  nop
L117:
  leave
  ret
```

assistant: ```c
void kernel_dgemv_n_8_vs_lib4(int km, int kmax, double *A0, int sda, double *x, double *y, double *z, int alg) {
  if (kmax <= 0)
    return;
  double *A1 = A0 + 4 * sda;
  const int lda = 4;
  int k;
  double x_0, x_1, x_2, x_3, y_0 = 0, y_1 = 0, y_2 = 0, y_3 = 0, y_4 = 0, y_5 = 0, y_6 = 0, y_7 = 0;
  k = 0;
  for (; k < kmax - 3; k += 4) {
    x_0 = x[0];
    x_1 = x[1];
    x_2 = x[2];
    x_3 = x[3];
    y_0 += A0[0 + lda * 0] * x_0;
    y_1 += A0[1 + lda * 0] * x_0;
    y_2 += A0[2 + lda * 0] * x_0;
    y_3 += A0[3 + lda * 0] * x_0;
    y_4 += A1[0 + lda * 0] * x_0;
    y_5 += A1[1 + lda * 0] * x_0;
    y_6 += A1[2 + lda * 0] * x_0;
    y_7 += A1[3 + lda * 0] * x_0;
    y_0 += A0[0 + lda * 1] * x_1;
    y_1 += A0[1 + lda * 1] * x_1;
    y_2 += A0[2 + lda * 1] * x_1;
    y_3 += A0[3 + lda * 1] * x_1;
    y_4 += A1[0 + lda * 1] * x_1;
    y_5 += A1[1 + lda * 1] * x_1;
    y_6 += A1[2 + lda * 1] * x_1;
    y_7 += A1[3 + lda * 1] * x_1;
    y_0 += A0[0 + lda * 2] * x_2;
    y_1 += A0[1 + lda * 2] * x_2;
    y_2 += A0[2 + lda * 2] * x_2;
    y_3 += A0[3 + lda * 2] * x_2;
    y_4 += A1[0 + lda * 2] * x_2;
    y_5 += A1[1 + lda * 2] * x_2;
    y_6 += A1[2 + lda * 2] * x_2;
    y_7 += A1[3 + lda * 2] * x_2;
    y_0 += A0[0 + lda * 3] * x_3;
    y_1 += A0[1 + lda * 3] * x_3;
    y_2 += A0[2 + lda * 3] * x_3;
    y_3 += A0[3 + lda * 3] * x_3;
    y_4 += A1[0 + lda * 3] * x_3;
    y_5 += A1[1 + lda * 3] * x_3;
    y_6 += A1[2 + lda * 3] * x_3;
    y_7 += A1[3 + lda * 3] * x_3;
    A0 += 4 * lda;
    A1 += 4 * lda;
    x += 4;
  }
  for (; k < kmax; k++) {
    x_0 = x[0];
    y_0 += A0[0 + lda * 0] * x_0;
    y_1 += A0[1 + lda * 0] * x_0;
    y_2 += A0[2 + lda * 0] * x_0;
    y_3 += A0[3 + lda * 0] * x_0;
    y_4 += A1[0 + lda * 0] * x_0;
    y_5 += A1[1 + lda * 0] * x_0;
    y_6 += A1[2 + lda * 0] * x_0;
    y_7 += A1[3 + lda * 0] * x_0;
    A0 += 1 * lda;
    A1 += 1 * lda;
    x += 1;
  }
  if (alg == 0) {
    goto store;
  } else if (alg == 1) {
    y_0 += y[0];
    y_1 += y[1];
    y_2 += y[2];
    y_3 += y[3];
    y_4 += y[4];
    y_5 += y[5];
    y_6 += y[6];
    y_7 += y[7];
    goto store;
  } else {
    y_0 = y[0] - y_0;
    y_1 = y[1] - y_1;
    y_2 = y[2] - y_2;
    y_3 = y[3] - y_3;
    y_4 = y[4] - y_4;
    y_5 = y[5] - y_5;
    y_6 = y[6] - y_6;
    y_7 = y[7] - y_7;
    goto store;
  }
store:
  z[0] = y_0;
  z[1] = y_1;
  z[2] = y_2;
  z[3] = y_3;
  if (km >= 8) {
    z[4] = y_4;
    z[5] = y_5;
    z[6] = y_6;
    z[7] = y_7;
  } else {
    z[4] = y_4;
    if (km >= 6) {
      z[5] = y_5;
      if (km > 6) {
        z[6] = y_6;
      }
    }
  }
}
```