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

```asm
<_inner_ddot_trans>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  mov    %rdi,-0x10(%rbp)
  mov    %rsi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  movsd  %xmm0,-0x28(%rbp)
  mov    %ecx,-0x2c(%rbp)
  mov    %r8d,-0x30(%rbp)
  pxor   %xmm7,%xmm7
  movapd %xmm7,%xmm5
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm7
  mov    $0x0,%ebx
  jmp    L9
L66:
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm4
  mulsd  %xmm0,%xmm4
  movapd %xmm5,%xmm2
  addsd  %xmm4,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm5
  mulsd  %xmm0,%xmm5
  movapd %xmm7,%xmm3
  addsd  %xmm5,%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm6
  mulsd  %xmm0,%xmm6
  addsd  %xmm6,%xmm2
  movapd %xmm2,%xmm5
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm7
  mulsd  %xmm0,%xmm7
  addsd  %xmm7,%xmm3
  movapd %xmm3,%xmm7
  mov    -0x30(%rbp),%eax
  shl    $0x2,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  addq   $0x20,-0x18(%rbp)
  add    $0x4,%ebx
L9:
  mov    -0x2c(%rbp),%eax
  sub    $0x3,%eax
  cmp    %eax,%ebx
  jl     L66
  cmp    -0x2c(%rbp),%ebx
  je     L23
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,%ebx
  jge    L20
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm4
  mulsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm5
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm6
  mulsd  %xmm0,%xmm6
  addsd  %xmm6,%xmm7
  mov    -0x30(%rbp),%eax
  add    %eax,%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  addq   $0x10,-0x18(%rbp)
  add    $0x2,%ebx
L20:
  cmp    -0x2c(%rbp),%ebx
  jge    L25
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm0,%xmm2
  movapd %xmm5,%xmm3
  addsd  %xmm2,%xmm3
  movapd %xmm3,%xmm5
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x20(%rbp)
  addq   $0x8,-0x18(%rbp)
  add    $0x1,%ebx
  jmp    L28
L23:
  nop
  jmp    L28
L25:
  nop
L28:
  movapd %xmm5,%xmm0
  addsd  %xmm7,%xmm0
  movapd %xmm0,%xmm5
  mulsd  -0x28(%rbp),%xmm5
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm0
  addsd  %xmm5,%xmm0
  mov    -0x10(%rbp),%rax
  movsd  %xmm0,(%rax)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void _inner_ddot_trans(double *Cr, const double *Ar, const double *Br, double alpha, int nVP, int ldB) {
  register int k, iB;
  register double f0, f1, f2, f3, cval0, cval1;
  cval0 = 0.0;
  cval1 = 0.0;
  for (k = 0; k < nVP - 3; k += 4) {
    f0 = Ar[0] * Br[0];
    cval0 += f0;
    f1 = Ar[1] * Br[ldB];
    cval1 += f1;
    f2 = Ar[2] * Br[2 * ldB];
    cval0 += f2;
    f3 = Ar[3] * Br[3 * ldB];
    cval1 += f3;
    Br += 4 * ldB;
    Ar += 4;
  }
  if (k == nVP)
    goto update;
  if (k < nVP - 1) {
    f0 = Ar[0] * Br[0];
    cval0 += f0;
    f1 = Ar[1] * Br[ldB];
    cval1 += f1;
    Br += 2 * ldB;
    Ar += 2;
    k += 2;
  }
  if (k < nVP) {
    f0 = Ar[0] * Br[0];
    cval0 += f0;
    Br += ldB;
    Ar++;
    k++;
  }
update:
  f0 = (cval0 + cval1) * alpha;
  Cr[0] += f0;
}
```