user: 请将以下的汇编代码转换成C语言代码：

```asm
<smatvec>:
  endbr64
  push   %r15
  push   %r14
  mov    %r9,%r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xb0,%rsp
  mov    %edi,0x98(%rsp)
  mov    %esi,-0x28(%rsp)
  mov    %rcx,0x88(%rsp)
  mov    %r8,0x80(%rsp)
  mov    %edx,0x78(%rsp)
  cmp    $0x7,%edx
  jle    L0
  lea    0x0(,%rdi,8),%eax
  movslq %edi,%r9
  mov    %esi,%r11d
  mov    %rcx,%r12
  cltq
  lea    0x0(,%r9,4),%rbx
  mov    %r9,0x28(%rsp)
  mov    %r12,%r13
  lea    0x0(,%rax,4),%rsi
  lea    (%r9,%r9,2),%rax
  mov    %rbx,%rdx
  mov    %rbx,%r10
  mov    %rsi,-0x20(%rsp)
  lea    0x0(,%rax,8),%rsi
  lea    0x0(,%rax,4),%r15
  mov    %rbx,%rax
  add    %rsi,%rdx
  mov    %rsi,0x8(%rsp)
  add    %r15,%rax
  lea    0x0(,%r9,8),%rbp
  lea    (%rcx,%rdx,1),%rdi
  mov    %rbx,%rdx
  add    %rbp,%r10
  mov    %r15,0x18(%rsp)
  add    %r9,%rdx
  mov    %r12,%r15
  mov    %r10,0x50(%rsp)
  add    %rbp,%r13
  lea    0x0(,%rdx,4),%rsi
  mov    %rbx,%rdx
  add    %r10,%r15
  mov    %rbx,-0x18(%rsp)
  add    %rsi,%rdx
  mov    %rsi,0x10(%rsp)
  lea    (%rcx,%rdx,1),%rsi
  mov    %r9,%rcx
  mov    %rbx,%rdx
  mov    %r8,-0x78(%rsp)
  shl    $0x4,%rcx
  mov    %rbp,-0x10(%rsp)
  add    %rcx,%rdx
  mov    %rcx,-0x8(%rsp)
  lea    (%r12,%rdx,1),%rcx
  lea    (%r12,%rax,1),%rdx
  mov    0x78(%rsp),%eax
  mov    %rdx,-0x30(%rsp)
  sub    $0x8,%eax
  shr    $0x3,%eax
  mov    %eax,0x9c(%rsp)
  mov    %rax,0xa0(%rsp)
  shl    $0x5,%rax
  lea    0x20(%r8,%rax,1),%rax
  lea    -0x1(%r11),%r8d
  mov    %rax,(%rsp)
  mov    %rbp,%rax
  mov    %rdi,%rbp
  sub    %r9,%rax
  mov    %rbx,%r9
  mov    %r8d,0x60(%rsp)
  shl    $0x2,%rax
  mov    %rax,0x20(%rsp)
  mov    %rbx,%rax
  add    %r10,%rax
  mov    %rbx,%r10
  add    %rax,%r9
  mov    %rax,0x30(%rsp)
  mov    %rbx,%rax
  add    $0x4,%rax
  add    %r9,%r10
  mov    %r9,0x38(%rsp)
  mov    %rax,0x58(%rsp)
  mov    %r11d,%eax
  add    %r10,%rbx
  shr    $0x2,%eax
  mov    %r10,0x40(%rsp)
  mov    %r11d,%r10d
  sub    $0x1,%eax
  and    $0xfffffffc,%r10d
  mov    %rbx,0x48(%rsp)
  mov    %r11d,%ebx
  add    $0x1,%rax
  sub    %r10d,%ebx
  mov    %r10d,0x64(%rsp)
  shl    $0x4,%rax
  mov    %ebx,0x7c(%rsp)
  mov    %rax,0x68(%rsp)
  mov    %r10d,%eax
  shl    $0x2,%rax
  mov    %rax,0x70(%rsp)
  mov    %r8d,%eax
  mov    -0x78(%rsp),%r8
  mov    %rax,0x90(%rsp)
  nopw   0x0(%rax,%rax,1)
L75:
  mov    -0x10(%rsp),%rbx
  mov    -0x18(%rsp),%rax
  mov    -0x28(%rsp),%edx
  movss  (%r8),%xmm0
  add    %r12,%rbx
  add    %r12,%rax
  movss  0x4(%r8),%xmm2
  movss  0x8(%r8),%xmm3
  mov    %rbx,-0x78(%rsp)
  mov    0x18(%rsp),%rbx
  mov    %rax,%rdi
  movss  0xc(%r8),%xmm4
  movss  0x10(%r8),%xmm5
  add    %r12,%rbx
  movss  0x14(%r8),%xmm6
  movss  0x18(%r8),%xmm7
  mov    %rbx,-0x70(%rsp)
  mov    -0x8(%rsp),%rbx
  movss  0x1c(%r8),%xmm8
  add    %r12,%rbx
  mov    %rbx,-0x68(%rsp)
  mov    0x10(%rsp),%rbx
  add    %r12,%rbx
  mov    %rbx,-0x60(%rsp)
  mov    0x8(%rsp),%rbx
  add    %r12,%rbx
  mov    %rbx,-0x38(%rsp)
  mov    0x20(%rsp),%rbx
  add    %r12,%rbx
  test   %edx,%edx
  jle    L358
  lea    0x4(%rbp),%r10
  mov    %r14,%r9
  lea    0x4(%rsi),%r11
  sub    %r10,%r9
  cmp    $0x8,%r9
  mov    %r14,%r9
  seta   %r10b
  sub    %r11,%r9
  lea    0x4(%rcx),%r11
  cmp    $0x8,%r9
  seta   %r9b
  and    %r10d,%r9d
  cmp    $0x1,%edx
  mov    -0x30(%rsp),%rdx
  setne  %r10b
  and    %r10d,%r9d
  mov    %r14,%r10
  sub    %r11,%r10
  lea    0x4(%rdx),%r11
  cmp    $0x8,%r10
  seta   %r10b
  and    %r9d,%r10d
  mov    %r14,%r9
  sub    %r11,%r9
  lea    0x4(%r15),%r11
  cmp    $0x8,%r9
  seta   %r9b
  and    %r10d,%r9d
  mov    %r14,%r10
  sub    %r11,%r10
  lea    0x4(%r13),%r11
  cmp    $0x8,%r10
  seta   %r10b
  and    %r9d,%r10d
  mov    %r14,%r9
  sub    %r11,%r9
  lea    0x4(%r12),%r11
  cmp    $0x8,%r9
  seta   %r9b
  and    %r10d,%r9d
  mov    %r14,%r10
  sub    %r11,%r10
  cmp    $0x8,%r10
  seta   %r10b
  test   %r10b,%r9b
  je     L348
  mov    0x58(%rsp),%rdx
  mov    %r14,%r9
  lea    (%rdx,%r12,1),%r10
  sub    %r10,%r9
  cmp    $0x8,%r9
  jbe    L348
  cmpl   $0x2,0x60(%rsp)
  jbe    L118
  movaps %xmm7,%xmm1
  mov    0x68(%rsp),%r9
  mov    -0x30(%rsp),%rdx
  xor    %edi,%edi
  shufps $0x0,%xmm1,%xmm1
  movaps %xmm0,%xmm14
  movaps %xmm2,%xmm13
  movaps %xmm3,%xmm12
  movaps %xmm1,-0x58(%rsp)
  movaps %xmm8,%xmm1
  movaps %xmm4,%xmm11
  movaps %xmm5,%xmm10
  movaps %xmm6,%xmm9
  shufps $0x0,%xmm1,%xmm1
  movaps %xmm1,-0x48(%rsp)
  shufps $0x0,%xmm14,%xmm14
  shufps $0x0,%xmm13,%xmm13
  shufps $0x0,%xmm12,%xmm12
  shufps $0x0,%xmm11,%xmm11
  shufps $0x0,%xmm10,%xmm10
  shufps $0x0,%xmm9,%xmm9
  nopl   0x0(%rax)
L355:
  movups (%r12,%rdi,1),%xmm1
  movups (%rax,%rdi,1),%xmm15
  mulps  %xmm14,%xmm1
  mulps  %xmm13,%xmm15
  addps  %xmm1,%xmm15
  movups 0x0(%r13,%rdi,1),%xmm1
  mulps  %xmm12,%xmm1
  addps  %xmm15,%xmm1
  movups (%r15,%rdi,1),%xmm15
  mulps  %xmm11,%xmm15
  addps  %xmm1,%xmm15
  movups (%rdx,%rdi,1),%xmm1
  mulps  %xmm10,%xmm1
  addps  %xmm15,%xmm1
  movups (%rcx,%rdi,1),%xmm15
  mulps  %xmm9,%xmm15
  addps  %xmm1,%xmm15
  movups (%rsi,%rdi,1),%xmm1
  mulps  -0x58(%rsp),%xmm1
  addps  %xmm15,%xmm1
  movups 0x0(%rbp,%rdi,1),%xmm15
  mulps  -0x48(%rsp),%xmm15
  addps  %xmm15,%xmm1
  movups (%r14,%rdi,1),%xmm15
  addps  %xmm15,%xmm1
  movups %xmm1,(%r14,%rdi,1)
  add    $0x10,%rdi
  cmp    %r9,%rdi
  jne    L355
  mov    0x70(%rsp),%r11
  mov    %rdx,-0x30(%rsp)
  add    %r11,-0x78(%rsp)
  mov    0x64(%rsp),%edx
  add    %r11,-0x70(%rsp)
  lea    (%r12,%r11,1),%r10
  lea    (%rax,%r11,1),%rdi
  add    %r11,%rbx
  add    %r11,-0x68(%rsp)
  add    %r11,-0x60(%rsp)
  add    %r11,-0x38(%rsp)
  cmp    %edx,-0x28(%rsp)
  je     L358
  mov    0x7c(%rsp),%r11d
  mov    %r11d,-0x48(%rsp)
  cmp    $0x1,%r11d
  je     L47
  mov    %edx,-0x24(%rsp)
  mov    %edx,%r11d
L201:
  mov    0x28(%rsp),%rdx
  lea    0x0(,%r11,4),%r9
  movaps %xmm0,%xmm9
  movaps %xmm2,%xmm10
  movq   (%r12,%r11,4),%xmm1
  shufps $0xe0,%xmm9,%xmm9
  shufps $0xe0,%xmm10,%xmm10
  add    %r11,%rdx
  mov    %rdx,-0x58(%rsp)
  mov    -0x58(%rsp),%r11
  mulps  %xmm9,%xmm1
  lea    (%r14,%r9,1),%rdx
  movq   (%r12,%r11,4),%xmm9
  mulps  %xmm10,%xmm9
  movaps %xmm3,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r11,4),%xmm9
  mov    0x50(%rsp),%rax
  mov    -0x48(%rsp),%r11d
  mulps  %xmm10,%xmm9
  add    %r12,%rax
  movaps %xmm4,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r9,1),%xmm9
  mov    0x30(%rsp),%rax
  mulps  %xmm10,%xmm9
  add    %r12,%rax
  movaps %xmm5,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r9,1),%xmm9
  mov    0x38(%rsp),%rax
  mulps  %xmm10,%xmm9
  add    %r12,%rax
  movaps %xmm6,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r9,1),%xmm9
  mov    0x40(%rsp),%rax
  mulps  %xmm10,%xmm9
  add    %r12,%rax
  movaps %xmm7,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r9,1),%xmm9
  mov    0x48(%rsp),%rax
  mulps  %xmm10,%xmm9
  add    %r12,%rax
  movaps %xmm8,%xmm10
  shufps $0xe0,%xmm10,%xmm10
  addps  %xmm9,%xmm1
  movq   (%rax,%r9,1),%xmm9
  mov    %r11d,%r9d
  and    $0xfffffffe,%r9d
  mulps  %xmm10,%xmm9
  mov    %r9d,%eax
  shl    $0x2,%rax
  add    %rax,-0x78(%rsp)
  add    %rax,-0x70(%rsp)
  add    %rax,%r10
  add    %rax,%rdi
  add    %rax,%rbx
  add    %rax,-0x68(%rsp)
  add    %rax,-0x60(%rsp)
  addps  %xmm9,%xmm1
  movq   (%rdx),%xmm9
  add    %rax,-0x38(%rsp)
  mov    -0x24(%rsp),%eax
  addps  %xmm9,%xmm1
  add    %r9d,%eax
  movlps %xmm1,(%rdx)
  cmp    %r9d,%r11d
  je     L358
L265:
  mulss  (%rdi),%xmm2
  mov    -0x78(%rsp),%rdi
  cltq
  mulss  (%r10),%xmm0
  lea    (%r14,%rax,4),%rax
  mulss  (%rdi),%xmm3
  mov    -0x70(%rsp),%rdi
  mulss  (%rbx),%xmm8
  mulss  (%rdi),%xmm4
  mov    -0x68(%rsp),%rdi
  addss  %xmm2,%xmm0
  mulss  (%rdi),%xmm5
  mov    -0x60(%rsp),%rdi
  mulss  (%rdi),%xmm6
  mov    -0x38(%rsp),%rdi
  addss  %xmm3,%xmm0
  mulss  (%rdi),%xmm7
  addss  %xmm0,%xmm4
  addss  %xmm4,%xmm5
  addss  %xmm5,%xmm6
  addss  %xmm6,%xmm7
  addss  %xmm8,%xmm7
  addss  (%rax),%xmm7
  movss  %xmm7,(%rax)
L358:
  mov    -0x20(%rsp),%rax
  add    $0x20,%r8
  add    %rax,-0x30(%rsp)
  add    %rax,%r12
  add    %rax,%rbp
  add    %rax,%rsi
  add    %rax,%rcx
  add    %rax,%r15
  add    %rax,%r13
  cmp    (%rsp),%r8
  jne    L75
  mov    0xa0(%rsp),%rax
  add    $0x1,%rax
  imul   -0x20(%rsp),%rax
  add    %rax,0x88(%rsp)
  mov    0x9c(%rsp),%eax
  lea    0x8(,%rax,8),%eax
  mov    %eax,-0x8(%rsp)
  mov    %eax,%esi
L243:
  mov    0x78(%rsp),%r8d
  lea    -0x3(%r8),%eax
  cmp    %esi,%eax
  jle    L370
  movslq 0x98(%rsp),%rax
  mov    0x88(%rsp),%r11
  movslq %esi,%rdx
  mov    0x80(%rsp),%r10
  mov    %rax,%rcx
  lea    0x0(,%rax,4),%rbx
  mov    %rax,-0x58(%rsp)
  shl    $0x3,%rax
  shl    $0x4,%rcx
  lea    (%r11,%rax,1),%rdi
  add    %rbx,%rax
  mov    %rbx,-0x60(%rsp)
  mov    %rcx,-0x68(%rsp)
  lea    -0x4(%r8),%ecx
  lea    (%r10,%rdx,4),%r15
  sub    %esi,%ecx
  mov    -0x28(%rsp),%esi
  mov    %rax,-0x48(%rsp)
  lea    0x4(%rbx),%rax
  shr    $0x2,%ecx
  mov    %rax,-0x30(%rsp)
  lea    (%rdx,%rcx,4),%rdx
  mov    %esi,%eax
  mov    %ecx,0x8(%rsp)
  lea    -0x1(%rsi),%ebx
  mov    %rcx,0x10(%rsp)
  shr    $0x2,%eax
  lea    0x10(%r10,%rdx,4),%rcx
  mov    %rdi,%r10
  mov    %rcx,-0x38(%rsp)
  sub    $0x1,%eax
  mov    %esi,%ecx
  and    $0xfffffffc,%ecx
  add    $0x1,%rax
  mov    %ebx,-0x24(%rsp)
  shl    $0x4,%rax
  sub    %ecx,%esi
  mov    %ecx,-0x20(%rsp)
  mov    %rax,%r12
  mov    %rbx,(%rsp)
  mov    %ecx,%eax
  mov    %esi,-0x10(%rsp)
  shl    $0x2,%rax
  mov    %r12,%r13
  mov    %rax,-0x18(%rsp)
  mov    %r11,%rax
  cs nopw 0x0(%rax,%rax,1)
L390:
  mov    -0x60(%rsp),%rdx
  mov    -0x28(%rsp),%ebx
  mov    %rdi,%rsi
  movss  (%r15),%xmm1
  movss  0x4(%r15),%xmm5
  lea    (%rdx,%rax,1),%rcx
  movss  0x8(%r15),%xmm4
  movss  0xc(%r15),%xmm3
  add    %rdi,%rdx
  mov    %rcx,%r8
  test   %ebx,%ebx
  jle    L341
  lea    0x4(%r10),%r11
  mov    %r14,%r9
  mov    -0x30(%rsp),%rbp
  sub    %r11,%r9
  cmp    $0x8,%r9
  seta   %r11b
  cmp    $0x1,%ebx
  lea    0x0(%rbp,%rdi,1),%rbx
  setne  %r9b
  and    %r9d,%r11d
  mov    %r14,%r9
  sub    %rbx,%r9
  lea    0x4(%rax),%rbx
  cmp    $0x8,%r9
  seta   %r9b
  and    %r11d,%r9d
  mov    %r14,%r11
  sub    %rbx,%r11
  cmp    $0x8,%r11
  seta   %r11b
  test   %r11b,%r9b
  je     L391
  lea    0x0(%rbp,%rax,1),%r11
  mov    %r14,%r9
  sub    %r11,%r9
  cmp    $0x8,%r9
  jbe    L391
  cmpl   $0x2,-0x24(%rsp)
  jbe    L297
  movaps %xmm1,%xmm9
  movaps %xmm5,%xmm8
  movaps %xmm4,%xmm7
  xor    %esi,%esi
  movaps %xmm3,%xmm6
  shufps $0x0,%xmm9,%xmm9
  shufps $0x0,%xmm8,%xmm8
  shufps $0x0,%xmm7,%xmm7
  shufps $0x0,%xmm6,%xmm6
  nopl   0x0(%rax)
L256:
  movups (%rax,%rsi,1),%xmm0
  movups (%rcx,%rsi,1),%xmm2
  mulps  %xmm9,%xmm0
  mulps  %xmm8,%xmm2
  addps  %xmm2,%xmm0
  movups (%r10,%rsi,1),%xmm2
  mulps  %xmm7,%xmm2
  addps  %xmm2,%xmm0
  movups (%rdx,%rsi,1),%xmm2
  mulps  %xmm6,%xmm2
  addps  %xmm2,%xmm0
  movups (%r14,%rsi,1),%xmm2
  addps  %xmm2,%xmm0
  movups %xmm0,(%r14,%rsi,1)
  add    $0x10,%rsi
  cmp    %r13,%rsi
  jne    L256
  mov    -0x18(%rsp),%rbx
  mov    -0x28(%rsp),%r11d
  lea    (%rax,%rbx,1),%r9
  lea    (%rcx,%rbx,1),%r8
  add    %rbx,%rdx
  lea    (%rdi,%rbx,1),%rsi
  mov    -0x20(%rsp),%ebx
  cmp    %r11d,%ebx
  je     L341
  mov    -0x10(%rsp),%r11d
  mov    %r11d,-0x78(%rsp)
  cmp    $0x1,%r11d
  je     L387
  mov    %ebx,-0x70(%rsp)
  mov    %ebx,%r11d
L4:
  mov    -0x58(%rsp),%rbx
  movq   (%rax,%r11,4),%xmm0
  movaps %xmm1,%xmm2
  movaps %xmm5,%xmm6
  shufps $0xe0,%xmm2,%xmm2
  shufps $0xe0,%xmm6,%xmm6
  lea    0x0(,%r11,4),%rbp
  lea    (%rbx,%r11,1),%r12
  mulps  %xmm2,%xmm0
  lea    (%r14,%rbp,1),%rbx
  movq   (%rax,%r12,4),%xmm2
  mulps  %xmm6,%xmm2
  movaps %xmm4,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  addps  %xmm2,%xmm0
  movq   (%rcx,%r12,4),%xmm2
  mov    -0x48(%rsp),%rcx
  mulps  %xmm6,%xmm2
  add    %rax,%rcx
  movaps %xmm3,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  addps  %xmm2,%xmm0
  movq   (%rcx,%rbp,1),%xmm2
  mulps  %xmm6,%xmm2
  addps  %xmm2,%xmm0
  movq   (%rbx),%xmm2
  addps  %xmm0,%xmm2
  movlps %xmm2,(%rbx)
  mov    -0x78(%rsp),%ebx
  mov    %ebx,%r11d
  and    $0xfffffffe,%r11d
  mov    %r11d,%ecx
  shl    $0x2,%rcx
  add    %rcx,%r9
  add    %rcx,%r8
  add    %rcx,%rsi
  add    %rcx,%rdx
  mov    -0x70(%rsp),%ecx
  add    %r11d,%ecx
  cmp    %r11d,%ebx
  je     L341
L12:
  mulss  (%r9),%xmm1
  movslq %ecx,%rcx
  mulss  (%r8),%xmm5
  lea    (%r14,%rcx,4),%rcx
  mulss  (%rsi),%xmm4
  mulss  (%rdx),%xmm3
  addss  %xmm5,%xmm1
  addss  %xmm4,%xmm1
  addss  %xmm3,%xmm1
  addss  (%rcx),%xmm1
  movss  %xmm1,(%rcx)
L341:
  mov    -0x68(%rsp),%rbx
  add    $0x10,%r15
  add    %rbx,%rax
  add    %rbx,%rdi
  add    %rbx,%r10
  cmp    -0x38(%rsp),%r15
  jne    L390
  mov    0x10(%rsp),%rax
  mov    0x8(%rsp),%ecx
  add    $0x1,%rax
  imul   %rbx,%rax
  add    %rax,0x88(%rsp)
  mov    -0x8(%rsp),%eax
  lea    0x4(%rax,%rcx,4),%eax
  mov    %eax,-0x8(%rsp)
L370:
  mov    -0x8(%rsp),%eax
  cmp    %eax,0x78(%rsp)
  jle    L60
  movslq 0x98(%rsp),%r8
  mov    -0x28(%rsp),%esi
  shl    $0x2,%r8
  test   %esi,%esi
  jle    L60
  movslq %eax,%rdi
  mov    %esi,%eax
  mov    %esi,%r10d
  mov    %esi,%ebp
  shr    $0x2,%eax
  and    $0xfffffffc,%r10d
  lea    -0x1(%rsi),%r13d
  mov    %esi,%r11d
  lea    -0x1(%rax),%ecx
  mov    %r10d,%ebx
  mov    %r13d,-0x78(%rsp)
  sub    %r10d,%ebp
  add    $0x1,%rcx
  mov    0x88(%rsp),%rdx
  shl    $0x2,%rbx
  mov    %esi,%r13d
  shl    $0x4,%rcx
L190:
  mov    0x80(%rsp),%rax
  lea    0x4(%rdx),%rsi
  movss  (%rax,%rdi,4),%xmm1
  mov    %r14,%rax
  sub    %rsi,%rax
  cmp    $0x8,%rax
  jbe    L251
  cmp    $0x1,%r13d
  je     L251
  cmpl   $0x2,-0x78(%rsp)
  jbe    L141
  movaps %xmm1,%xmm2
  xor    %eax,%eax
  shufps $0x0,%xmm2,%xmm2
  nopl   0x0(%rax)
L180:
  movups (%rdx,%rax,1),%xmm0
  movups (%r14,%rax,1),%xmm3
  mulps  %xmm2,%xmm0
  addps  %xmm3,%xmm0
  movups %xmm0,(%r14,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rcx
  jne    L180
  lea    (%rdx,%rbx,1),%rsi
  cmp    %r13d,%r10d
  je     L375
  mov    %ebp,%r12d
  mov    %r10d,%eax
  mov    %r10d,%r9d
  cmp    $0x1,%ebp
  je     L77
L144:
  movq   (%rdx,%r9,4),%xmm0
  movaps %xmm1,%xmm2
  lea    (%r14,%r9,4),%r15
  mov    %r12d,%r9d
  shufps $0xe0,%xmm2,%xmm2
  and    $0xfffffffe,%r9d
  mulps  %xmm2,%xmm0
  movq   (%r15),%xmm2
  add    %r9d,%eax
  addps  %xmm2,%xmm0
  movlps %xmm0,(%r15)
  mov    %r9d,%r15d
  lea    (%rsi,%r15,4),%rsi
  cmp    %r9d,%r12d
  je     L375
L77:
  mulss  (%rsi),%xmm1
  cltq
  lea    (%r14,%rax,4),%rax
  addss  (%rax),%xmm1
  movss  %xmm1,(%rax)
L375:
  add    %r8,%rdx
  add    $0x1,%rdi
  cmp    %edi,0x78(%rsp)
  jg     L190
L60:
  add    $0xb0,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L391:
  mov    (%rsp),%r9
  xor    %esi,%esi
  cs nopw 0x0(%rax,%rax,1)
L308:
  movss  (%rcx,%rsi,4),%xmm0
  movss  (%rax,%rsi,4),%xmm2
  mov    %rsi,%r8
  mulss  %xmm1,%xmm2
  mulss  %xmm5,%xmm0
  addss  %xmm2,%xmm0
  movss  (%rdi,%rsi,4),%xmm2
  mulss  %xmm4,%xmm2
  addss  %xmm2,%xmm0
  movss  (%rdx,%rsi,4),%xmm2
  mulss  %xmm3,%xmm2
  addss  %xmm2,%xmm0
  addss  (%r14,%rsi,4),%xmm0
  movss  %xmm0,(%r14,%rsi,4)
  add    $0x1,%rsi
  cmp    %r9,%r8
  jne    L308
  jmp    L341
  nopl   (%rax)
L348:
  mov    %r8,-0x58(%rsp)
  mov    -0x78(%rsp),%r9
  xor    %edi,%edi
  mov    -0x70(%rsp),%r10
  mov    -0x68(%rsp),%r11
  mov    %rbp,-0x48(%rsp)
  mov    %r15,-0x78(%rsp)
  mov    -0x60(%rsp),%rbp
  mov    -0x38(%rsp),%r15
  mov    0x90(%rsp),%rdx
  nopw   0x0(%rax,%rax,1)
L299:
  movss  (%r12,%rdi,4),%xmm1
  movss  (%rax,%rdi,4),%xmm9
  mov    %rdi,%r8
  mulss  %xmm2,%xmm9
  mulss  %xmm0,%xmm1
  addss  %xmm9,%xmm1
  movss  (%r9,%rdi,4),%xmm9
  mulss  %xmm3,%xmm9
  addss  %xmm9,%xmm1
  movss  (%r10,%rdi,4),%xmm9
  mulss  %xmm4,%xmm9
  addss  %xmm9,%xmm1
  movss  (%r11,%rdi,4),%xmm9
  mulss  %xmm5,%xmm9
  addss  %xmm9,%xmm1
  movss  0x0(%rbp,%rdi,4),%xmm9
  mulss  %xmm6,%xmm9
  addss  %xmm9,%xmm1
  movss  (%r15,%rdi,4),%xmm9
  mulss  %xmm7,%xmm9
  addss  %xmm9,%xmm1
  movss  (%rbx,%rdi,4),%xmm9
  mulss  %xmm8,%xmm9
  addss  %xmm9,%xmm1
  addss  (%r14,%rdi,4),%xmm1
  movss  %xmm1,(%r14,%rdi,4)
  add    $0x1,%rdi
  cmp    %rdx,%r8
  jne    L299
  mov    -0x58(%rsp),%r8
  mov    -0x48(%rsp),%rbp
  mov    -0x78(%rsp),%r15
  jmp    L358
L118:
  mov    -0x28(%rsp),%edx
  movl   $0x0,-0x24(%rsp)
  mov    %r12,%r10
  xor    %r11d,%r11d
  mov    %edx,-0x48(%rsp)
  jmp    L201
L297:
  mov    -0x28(%rsp),%ebx
  movl   $0x0,-0x70(%rsp)
  mov    %rax,%r9
  xor    %r11d,%r11d
  mov    %ebx,-0x78(%rsp)
  jmp    L4
L251:
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L384:
  movss  (%rdx,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  addss  (%r14,%rax,4),%xmm0
  movss  %xmm0,(%r14,%rax,4)
  add    $0x1,%rax
  cmp    %rax,%r11
  jne    L384
  jmp    L375
L47:
  mov    %edx,%eax
  jmp    L265
L387:
  mov    %ebx,%ecx
  jmp    L12
L141:
  mov    %rdx,%rsi
  mov    %r13d,%r12d
  xor    %eax,%eax
  xor    %r9d,%r9d
  jmp    L144
L0:
  movl   $0x0,-0x8(%rsp)
  mov    -0x8(%rsp),%esi
  jmp    L243
```

assistant: ```c
void smatvec(ldm, nrow, ncol, M, vec, Mxvec) int ldm;
int nrow;
int ncol;
float *M;
float *vec;
float *Mxvec;
{
  float vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7;
  float *M0;
  register float *Mki0, *Mki1, *Mki2, *Mki3, *Mki4, *Mki5, *Mki6, *Mki7;
  register int firstcol = 0;
  int k;
  M0 = &M[0];
  while (firstcol < ncol - 7) {
    Mki0 = M0;
    Mki1 = Mki0 + ldm;
    Mki2 = Mki1 + ldm;
    Mki3 = Mki2 + ldm;
    Mki4 = Mki3 + ldm;
    Mki5 = Mki4 + ldm;
    Mki6 = Mki5 + ldm;
    Mki7 = Mki6 + ldm;
    vi0 = vec[firstcol++];
    vi1 = vec[firstcol++];
    vi2 = vec[firstcol++];
    vi3 = vec[firstcol++];
    vi4 = vec[firstcol++];
    vi5 = vec[firstcol++];
    vi6 = vec[firstcol++];
    vi7 = vec[firstcol++];
    for (k = 0; k < nrow; k++)
      Mxvec[k] += vi0 * *Mki0++ + vi1 * *Mki1++ + vi2 * *Mki2++ + vi3 * *Mki3++ + vi4 * *Mki4++ + vi5 * *Mki5++ + vi6 * *Mki6++ + vi7 * *Mki7++;
    M0 += 8 * ldm;
  }
  while (firstcol < ncol - 3) {
    Mki0 = M0;
    Mki1 = Mki0 + ldm;
    Mki2 = Mki1 + ldm;
    Mki3 = Mki2 + ldm;
    vi0 = vec[firstcol++];
    vi1 = vec[firstcol++];
    vi2 = vec[firstcol++];
    vi3 = vec[firstcol++];
    for (k = 0; k < nrow; k++)
      Mxvec[k] += vi0 * *Mki0++ + vi1 * *Mki1++ + vi2 * *Mki2++ + vi3 * *Mki3++;
    M0 += 4 * ldm;
  }
  while (firstcol < ncol) {
    Mki0 = M0;
    vi0 = vec[firstcol++];
    for (k = 0; k < nrow; k++)
      Mxvec[k] += vi0 * *Mki0++;
    M0 += ldm;
  }
}
```