user: 这段汇编代码用C语言表示是什么样的:

```asm
<_dblock_ddot_sse>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xd8,%rsp
  mov    %rdi,0xb0(%rsp)
  mov    %rsi,0x80(%rsp)
  mov    %rdx,0xb8(%rsp)
  movsd  %xmm0,0x20(%rsp)
  mov    %ecx,0xc4(%rsp)
  mov    %r8d,0xcc(%rsp)
  mov    %r9d,0xc8(%rsp)
  mov    0x110(%rsp),%eax
  sub    $0x3,%eax
  mov    %eax,0x8c(%rsp)
  test   %eax,%eax
  jle    L105
  mov    %rdx,%r11
  mov    %ecx,%r10d
  mov    %r9d,%ebx
  movslq %r9d,%rcx
  lea    0x0(,%rcx,8),%r9
  mov    %r9,0x90(%rsp)
  movslq %r10d,%rax
  lea    0x0(,%rax,8),%rdx
  mov    %rdx,0x98(%rsp)
  movslq %r8d,%rdx
  shl    $0x3,%rdx
  mov    %rdx,0x28(%rsp)
  lea    (%r8,%r8,1),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%r8
  mov    %r8,0x30(%rsp)
  lea    0x0(,%r10,4),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  mov    %rdx,0x70(%rsp)
  lea    0x0(,%rbx,4),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  mov    %rdx,0x78(%rsp)
  shl    $0x4,%rax
  add    %rdi,%rax
  mov    %rax,0x58(%rsp)
  add    %r9,%r11
  mov    %r11,0x60(%rsp)
  mov    0x118(%rsp),%eax
  sub    $0x2,%eax
  shr    %eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    %rdx,%rbx
  shl    $0x4,%rbx
  mov    %rbx,0x68(%rsp)
  imul   %r8,%rdx
  add    %rsi,%rdx
  mov    %rdx,0xa8(%rsp)
  add    %eax,%eax
  mov    %eax,0xc0(%rsp)
  mov    %rdi,0x38(%rsp)
  movl   $0x0,0x88(%rsp)
  shl    $0x4,%rcx
  mov    %rcx,0xa0(%rsp)
  jmp    L117
L133:
  mov    0x80(%rsp),%r8
  mov    0x38(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    $0x0,%eax
  jmp    L148
L66:
  mov    0x70(%rsp),%rcx
  add    %rcx,0x38(%rsp)
  addl   $0x4,0x88(%rsp)
  mov    0x88(%rsp),%eax
  add    %rcx,0x58(%rsp)
  mov    0x78(%rsp),%rdi
  add    %rdi,0x60(%rsp)
  cmp    0x8c(%rsp),%eax
  jge    L72
L117:
  mov    0x60(%rsp),%rsi
  mov    %rsi,%rax
  mov    0x90(%rsp),%rdi
  sub    %rdi,%rax
  mov    %rax,0x8(%rsp)
  mov    %rsi,(%rsp)
  mov    0xa0(%rsp),%r15
  add    %rax,%r15
  lea    (%rdi,%r15,1),%rax
  mov    %rax,0x10(%rsp)
  mov    0x38(%rsp),%rbx
  mov    %rbx,%r12
  mov    0x98(%rsp),%r14
  add    %r14,%r12
  mov    %r12,0x50(%rsp)
  mov    0x58(%rsp),%r13
  mov    %r13,0x48(%rsp)
  add    %r13,%r14
  mov    %r14,0x40(%rsp)
  cmpl   $0x1,0x118(%rsp)
  jle    L133
  mov    %rbx,%rax
  add    0x68(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    0x80(%rsp),%rbp
L12:
  sub    $0x8,%rsp
  mov    0x128(%rsp),%eax
  push   %rax
  push   0x20(%rsp)
  push   %r15
  push   0x20(%rsp)
  push   0x30(%rsp)
  movsd  0x50(%rsp),%xmm0
  mov    0x58(%rsp),%rax
  lea    0x0(%rbp,%rax,1),%r9
  mov    %rbp,%r8
  mov    %r14,%rcx
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <_inner_ddot4_2_sse3@plt>
  add    0x60(%rsp),%rbp
  add    $0x10,%rbx
  add    $0x10,%r12
  add    $0x10,%r13
  add    $0x10,%r14
  add    $0x30,%rsp
  cmp    0x18(%rsp),%rbx
  jne    L12
  mov    0x68(%rsp),%rax
  add    %rax,0x50(%rsp)
  add    %rax,0x48(%rsp)
  add    %rax,0x40(%rsp)
  mov    0xa8(%rsp),%r8
  mov    0xc0(%rsp),%eax
L148:
  cmp    %eax,0x118(%rsp)
  jle    L66
  mov    0x120(%rsp),%eax
  push   %rax
  push   0x18(%rsp)
  push   %r15
  push   0x18(%rsp)
  movsd  0x40(%rsp),%xmm0
  mov    0x28(%rsp),%r9
  mov    0x60(%rsp),%rcx
  mov    0x68(%rsp),%rdx
  mov    0x70(%rsp),%rsi
  mov    0x38(%rsp),%rdi
  call   <_inner_ddot4_sse3@plt>
  add    $0x20,%rsp
  jmp    L66
L72:
  mov    0x110(%rsp),%eax
  lea    -0x4(%rax),%ebp
  shr    $0x2,%ebp
  add    $0x1,%ebp
  mov    %ebp,%edx
  mov    %rcx,%rax
  imul   %rdx,%rax
  add    %rax,0xb0(%rsp)
  mov    %rdi,%rax
  imul   %rdx,%rax
  add    %rax,0xb8(%rsp)
  shl    $0x2,%ebp
L56:
  cmp    %ebp,0x110(%rsp)
  je     L34
  mov    0x110(%rsp),%eax
  sub    $0x1,%eax
  cmp    %ebp,%eax
  jle    L77
  movslq 0xc8(%rsp),%rax
  mov    0xb8(%rsp),%rsi
  lea    (%rsi,%rax,8),%r15
  movslq 0xc4(%rsp),%rax
  mov    0xb0(%rsp),%rdx
  lea    (%rdx,%rax,8),%r12
  cmpl   $0x0,0x118(%rsp)
  jle    L6
  movslq 0xcc(%rsp),%rax
  shl    $0x3,%rax
  mov    %rax,(%rsp)
  mov    0x118(%rsp),%eax
  lea    (%rdx,%rax,8),%r14
  mov    0x80(%rsp),%r13
  mov    %rdx,%rbx
  mov    %ebp,0x8(%rsp)
  mov    %rsi,%rbp
L17:
  mov    0x120(%rsp),%r9d
  movsd  0x20(%rsp),%xmm0
  mov    %r15,%r8
  mov    %rbp,%rcx
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <_inner_ddot2_sse3@plt>
  add    (%rsp),%r13
  add    $0x8,%rbx
  add    $0x8,%r12
  cmp    %r14,%rbx
  jne    L17
  mov    0x8(%rsp),%ebp
L6:
  mov    0xc4(%rsp),%eax
  add    %eax,%eax
  cltq
  mov    0xb0(%rsp),%rdx
  lea    (%rdx,%rax,8),%rax
  mov    %rax,0xb0(%rsp)
  mov    0xc8(%rsp),%eax
  add    %eax,%eax
  cltq
  mov    0xb8(%rsp),%rdx
  lea    (%rdx,%rax,8),%rax
  mov    %rax,0xb8(%rsp)
  add    $0x2,%ebp
L77:
  cmp    0x110(%rsp),%ebp
  jge    L34
  cmpl   $0x0,0x118(%rsp)
  jle    L34
  movslq 0xcc(%rsp),%rbx
  shl    $0x3,%rbx
  mov    0x118(%rsp),%eax
  mov    0xb0(%rsp),%r12
  lea    (%r12,%rax,8),%rbp
  mov    0x80(%rsp),%r13
  mov    0xb8(%rsp),%r14
  mov    0x120(%rsp),%r15d
L92:
  mov    %r15d,%ecx
  movsd  0x20(%rsp),%xmm0
  mov    %r14,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <_inner_ddot_sse@plt>
  add    %rbx,%r13
  add    $0x8,%r12
  cmp    %rbp,%r12
  jne    L92
L34:
  add    $0xd8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L105:
  mov    $0x0,%ebp
  jmp    L56
```

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++;
  }
}
```