user: What is the c source code of the assembly code below?

```asm
<_dblock_ddot_sse>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    0x100(%rsp),%eax
  mov    %rdi,0xa0(%rsp)
  mov    %rsi,0x70(%rsp)
  sub    $0x3,%eax
  mov    %rdx,0xa8(%rsp)
  mov    %ecx,0xb4(%rsp)
  mov    %r8d,0xbc(%rsp)
  mov    %r9d,0xb8(%rsp)
  mov    %eax,0x7c(%rsp)
  movsd  %xmm0,0x20(%rsp)
  test   %eax,%eax
  jle    L59
  mov    %ecx,%r10d
  mov    %rdx,%r11
  mov    %r9d,%ebx
  movslq %r9d,%rcx
  movslq %r10d,%rax
  lea    0x0(,%rcx,8),%r9
  shl    $0x4,%rcx
  mov    %rdi,0x40(%rsp)
  lea    0x0(,%rax,8),%rdx
  shl    $0x4,%rax
  mov    %r9,0x80(%rsp)
  add    %r9,%r11
  mov    %rdx,0x88(%rsp)
  movslq %r8d,%rdx
  add    %rdi,%rax
  mov    %r11,%r15
  shl    $0x3,%rdx
  mov    %rax,0x38(%rsp)
  mov    0x108(%rsp),%eax
  mov    %rdx,0x28(%rsp)
  lea    (%r8,%r8,1),%edx
  movslq %edx,%rdx
  sub    $0x2,%eax
  movl   $0x0,0x78(%rsp)
  lea    0x0(,%rdx,8),%r8
  lea    0x0(,%r10,4),%edx
  shr    %eax
  mov    %rcx,0x90(%rsp)
  movslq %edx,%rdx
  mov    %r8,0x30(%rsp)
  shl    $0x3,%rdx
  mov    %rdx,0x60(%rsp)
  lea    0x0(,%rbx,4),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  mov    %rdx,0x68(%rsp)
  lea    0x1(%rax),%edx
  mov    %rdx,%rax
  mov    %rdx,%rbx
  imul   %r8,%rdx
  shl    $0x4,%rbx
  add    %eax,%eax
  mov    %rbx,0x58(%rsp)
  mov    %eax,0xb0(%rsp)
  add    %rsi,%rdx
  mov    %rdx,0x98(%rsp)
  nopl   0x0(%rax)
L30:
  mov    0x80(%rsp),%rdi
  mov    0x90(%rsp),%rsi
  mov    %r15,%rax
  mov    0x40(%rsp),%rbx
  mov    0x88(%rsp),%r12
  sub    %rdi,%rax
  mov    0x38(%rsp),%r13
  add    %rax,%rsi
  mov    %rbx,%r14
  mov    %rax,(%rsp)
  add    %r12,%r14
  add    %rsi,%rdi
  add    %r13,%r12
  mov    %rsi,0x8(%rsp)
  cmpl   $0x1,0x108(%rsp)
  mov    %rdi,0x10(%rsp)
  mov    %r13,%rdx
  mov    %r14,0x50(%rsp)
  mov    %r12,0x48(%rsp)
  jle    L76
  mov    0x58(%rsp),%rax
  mov    0x70(%rsp),%rbp
  mov    %rbx,%rcx
  add    %rbx,%rax
  mov    %rbp,%rbx
  mov    %rcx,%rbp
  mov    %rax,0x18(%rsp)
  mov    %r12,%rax
  mov    %r14,%r12
  mov    %rax,%r14
  nopl   0x0(%rax)
L15:
  sub    $0x8,%rsp
  mov    %rbx,%r8
  mov    %r14,%rcx
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  add    $0x10,%r12
  add    $0x10,%rbp
  mov    0x118(%rsp),%eax
  add    $0x10,%r13
  add    $0x10,%r14
  push   %rax
  push   0x20(%rsp)
  push   0x20(%rsp)
  push   %r15
  push   0x28(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0x50(%rsp),%xmm0
  lea    (%rbx,%rax,1),%r9
  call   <_inner_ddot4_2_sse3@plt>
  add    0x60(%rsp),%rbx
  add    $0x30,%rsp
  cmp    0x18(%rsp),%rbp
  jne    L15
  mov    0x58(%rsp),%rax
  mov    0x38(%rsp),%rdx
  add    %rax,0x50(%rsp)
  mov    0x98(%rsp),%r8
  add    %rax,0x48(%rsp)
  add    %rax,%rdx
  mov    0xb0(%rsp),%eax
L115:
  cmp    %eax,0x108(%rsp)
  jg     L27
L73:
  mov    0x60(%rsp),%rcx
  addl   $0x4,0x78(%rsp)
  add    %rcx,0x40(%rsp)
  mov    0x78(%rsp),%eax
  add    %rcx,0x38(%rsp)
  add    0x68(%rsp),%r15
  cmp    0x7c(%rsp),%eax
  jl     L30
  mov    0x100(%rsp),%eax
  lea    -0x4(%rax),%ebx
  mov    %rcx,%rax
  shr    $0x2,%ebx
  lea    0x1(%rbx),%edx
  imul   %rdx,%rax
  add    %rax,0xa0(%rsp)
  mov    0x68(%rsp),%rax
  imul   %rdx,%rax
  add    %rax,0xa8(%rsp)
  lea    0x0(,%rdx,4),%eax
  mov    %eax,0x10(%rsp)
L70:
  mov    0x10(%rsp),%edi
  cmp    %edi,0x100(%rsp)
  je     L129
  mov    0x100(%rsp),%eax
  sub    $0x1,%eax
  cmp    %edi,%eax
  jle    L45
  movslq 0xb8(%rsp),%rax
  mov    0xa8(%rsp),%rsi
  mov    0x108(%rsp),%edx
  lea    (%rsi,%rax,8),%rbx
  movslq 0xb4(%rsp),%rax
  mov    0xa0(%rsp),%rsi
  lea    (%rsi,%rax,8),%r14
  test   %edx,%edx
  jle    L64
  movslq 0xbc(%rsp),%rbp
  movslq 0x108(%rsp),%rax
  mov    0xa0(%rsp),%r13
  mov    0x70(%rsp),%r12
  shl    $0x3,%rbp
  lea    0x0(%r13,%rax,8),%r15
  mov    %rbp,(%rsp)
  mov    %r14,%rbp
  mov    0x110(%rsp),%r14d
  mov    %r15,0x8(%rsp)
  mov    %rbx,%r15
  mov    0xa8(%rsp),%rbx
  nopl   (%rax)
L63:
  movsd  0x20(%rsp),%xmm0
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  mov    %r14d,%r9d
  mov    %r15,%r8
  mov    %rbx,%rcx
  add    $0x8,%r13
  call   <_inner_ddot2_sse3@plt>
  add    $0x8,%rbp
  add    (%rsp),%r12
  cmp    0x8(%rsp),%r13
  jne    L63
L64:
  mov    0xb4(%rsp),%eax
  mov    0xa0(%rsp),%rcx
  mov    0xa8(%rsp),%rsi
  addl   $0x2,0x10(%rsp)
  add    %eax,%eax
  cltq
  lea    (%rcx,%rax,8),%rax
  mov    %rax,0xa0(%rsp)
  mov    0xb8(%rsp),%eax
  add    %eax,%eax
  cltq
  lea    (%rsi,%rax,8),%rax
  mov    %rax,0xa8(%rsp)
L45:
  mov    0x10(%rsp),%eax
  cmp    0x100(%rsp),%eax
  jge    L129
  mov    0x108(%rsp),%eax
  test   %eax,%eax
  jle    L129
  movslq 0xbc(%rsp),%rbx
  movslq 0x108(%rsp),%rax
  mov    0xa0(%rsp),%r12
  mov    0x70(%rsp),%r13
  mov    0xa8(%rsp),%r14
  mov    0x110(%rsp),%r15d
  shl    $0x3,%rbx
  lea    (%r12,%rax,8),%rbp
L112:
  movsd  0x20(%rsp),%xmm0
  mov    %r13,%rsi
  mov    %r12,%rdi
  mov    %r15d,%ecx
  mov    %r14,%rdx
  add    $0x8,%r12
  add    %rbx,%r13
  call   <_inner_ddot_sse@plt>
  cmp    %rbp,%r12
  jne    L112
L129:
  add    $0xc8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L27:
  mov    0x110(%rsp),%eax
  push   %rax
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   %r15
  movsd  0x40(%rsp),%xmm0
  mov    0x20(%rsp),%r9
  mov    0x68(%rsp),%rcx
  mov    0x70(%rsp),%rsi
  mov    0x38(%rsp),%rdi
  call   <_inner_ddot4_sse3@plt>
  add    $0x20,%rsp
  jmp    L73
  nopw   0x0(%rax,%rax,1)
L76:
  mov    0x40(%rsp),%rax
  mov    0x70(%rsp),%r8
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  jmp    L115
L59:
  movl   $0x0,0x10(%rsp)
  jmp    L70
```

assistant: ```c
void _dblock_ddot_sse(double *Cc, const double *Aroot, const double *Bc, double alpha, int ldC, int ldA, int ldB, int nSL, int nRE, int nVP) {
  register int i, j;
  register double *c0, *c1, *c2, *c3;
  register const double *Br0, *Br1, *Br2, *Br3;
  const double *Ac;
  double *Cx = Cc;
  const double *Bx = Bc;
  for (j = 0; j < nSL - 3; j += 4) {
    Ac = Aroot;
    Br0 = Bc;
    Br1 = Br0 + ldB;
    Br2 = Br1 + ldB;
    Br3 = Br2 + ldB;
    c0 = Cc;
    c1 = c0 + ldC;
    c2 = c1 + ldC;
    c3 = c2 + ldC;
    for (i = 0; i < nRE - 1; i += 2) {
      _inner_ddot4_2_sse3(c0, c1, c2, c3, Ac, Ac + ldA, Br0, Br1, Br2, Br3, alpha, nVP);
      Ac += (ldA << 1);
      c0 += 2;
      c1 += 2;
      c2 += 2;
      c3 += 2;
    }
    if (i < nRE) {
      _inner_ddot4_sse3(c0, c1, c2, c3, Ac, Br0, Br1, Br2, Br3, alpha, nVP);
      Ac += ldA;
      c0++;
      c1++;
      c2++;
      c3++;
    }
    Cc += (ldC << 2);
    Bc += (ldB << 2);
  }
  if (j == nSL) {
    return;
  }
  if (j < nSL - 1) {
    Ac = Aroot;
    Br0 = Bc;
    Br1 = Br0 + ldB;
    c0 = Cc;
    c1 = c0 + ldC;
    for (i = 0; i < nRE; i++) {
      _inner_ddot2_sse3(c0, c1, Ac, Br0, Br1, alpha, nVP);
      Ac += ldA;
      c0++;
      c1++;
    }
    Cc += (ldC << 1);
    Bc += (ldB << 1);
    j += 2;
  }
  if (j < nSL) {
    Ac = Aroot;
    Br0 = Bc;
    c0 = Cc;
    for (i = 0; i < nRE; i++) {
      _inner_ddot_sse(c0, Ac, Br0, alpha, nVP);
      Ac += ldA;
      c0++;
    }
    j++;
  }
}
```