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

```asm
<matmult_vp_notrans>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,-0x28(%rsp)
  mov    %rdx,-0x20(%rsp)
  mov    %ecx,-0x18(%rsp)
  mov    %r9d,-0x14(%rsp)
  mov    0x48(%rsp),%ebp
  mov    0x50(%rsp),%r12d
  cmpl   $0x0,0x58(%rsp)
  mov    $0x1e,%edx
  cmovne 0x58(%rsp),%edx
  mov    %edx,0x58(%rsp)
  cmp    %r9d,%edx
  mov    %r9d,%r13d
  cmovle %edx,%r13d
  test   %r9d,%r9d
  jle    L131
  movapd %xmm0,%xmm4
  mov    %r9d,%ebx
  mov    %ecx,%edx
  imul   0x38(%rsp),%edx
  add    %ebp,%edx
  movslq %edx,%rdx
  lea    (%rdi,%rdx,8),%rax
  mov    %rax,-0x8(%rsp)
  mov    %r9d,%eax
  imul   0x38(%rsp),%ebx
  mov    %ebx,-0x2c(%rsp)
  movslq %ecx,%r8
  shl    $0x3,%r8
  cltq
  shl    $0x3,%rax
  mov    %rax,-0x38(%rsp)
  lea    -0x1(%r12),%eax
  sub    %ebp,%eax
  lea    0x8(,%rax,8),%rax
  mov    %rax,-0x10(%rsp)
  mov    $0x0,%r15d
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm3
  jmp    L99
L69:
  add    $0x8,%rsi
  add    %r8,%rdi
  add    %r8,%rcx
  cmp    %r9,%rsi
  je     L30
L119:
  movsd  (%rsi),%xmm1
  ucomisd %xmm2,%xmm1
  jp     L116
  ucomisd %xmm3,%xmm1
  je     L69
L116:
  mulsd  %xmm4,%xmm1
  cmp    %r12d,%ebp
  jge    L69
  mov    %r10,%rdx
  mov    %rdi,%rax
L28:
  movapd %xmm1,%xmm0
  mulsd  (%rax),%xmm0
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  add    $0x8,%rdx
  add    $0x8,%rax
  cmp    %rcx,%rax
  jne    L28
  jmp    L69
L30:
  add    %r8,%r10
  mov    -0x38(%rsp),%rax
  add    %rax,%r11
  add    $0x1,%ebx
  add    %rax,%r9
  cmp    %ebx,0x40(%rsp)
  je     L133
L89:
  mov    -0x40(%rsp),%rcx
  mov    %r14,%rdi
  mov    %r11,%rsi
  cmp    %r13d,%r15d
  jl     L119
  jmp    L30
L133:
  mov    %r13d,%eax
  add    0x58(%rsp),%eax
  mov    -0x14(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %r13d,%r15d
  cmp    %r13d,%ebx
  jle    L131
  mov    %eax,%r13d
L99:
  mov    -0x2c(%rsp),%eax
  add    %r15d,%eax
  cltq
  mov    -0x20(%rsp),%rbx
  lea    (%rbx,%rax,8),%r11
  mov    -0x18(%rsp),%eax
  imul   %r15d,%eax
  add    %ebp,%eax
  cltq
  mov    -0x28(%rsp),%rbx
  lea    (%rbx,%rax,8),%r14
  mov    0x40(%rsp),%eax
  cmp    %eax,0x38(%rsp)
  jge    L133
  lea    -0x1(%r13),%eax
  sub    %r15d,%eax
  lea    0x8(%r11,%rax,8),%r9
  mov    -0x10(%rsp),%rax
  add    %r14,%rax
  mov    %rax,-0x40(%rsp)
  mov    -0x8(%rsp),%r10
  mov    0x38(%rsp),%ebx
  jmp    L89
L131:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void matmult_vp_notrans(double *C, const double *A, const double *B, double alpha, int M, int N, int P, int S, int L, int R, int E, int vlen) {
  int j, k, vpS, vpL;
  const double *Bc, *Br, *Ac, *AvpS;
  double *Cc;
  register const double *Ar;
  register int i;
  register double *Cr;
  register double coeff;
  if (vlen == 0) {
    vlen = 30;
  }
  vpS = 0;
  vpL = vlen < P ? vlen : P;
  while (vpS < P) {
    Cc = &C[S * M + R];
    Bc = &B[S * P + vpS];
    AvpS = &A[vpS * M + R];
    for (j = S; j < L; j++) {
      Ac = AvpS;
      Br = Bc;
      for (k = vpS; k < vpL; k++) {
        Cr = Cc;
        Ar = Ac;
        if (*Br != 0.0) {
          coeff = (*Br) * alpha;
          for (i = R; i < E; i++) {
            *Cr += (*Ar) * coeff;
            Cr++;
            Ar++;
          }
        }
        Br++;
        Ac += M;
      }
      Cc += M;
      Bc += P;
    }
    vpS = vpL;
    vpL += vlen;
    if (vpL > P) {
      vpL = P;
    }
  }
}
```