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

```asm
<corner_dtrmm_l_u_nt_2x4_lib4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x68(%rbp)
  mov    %rsi,-0x70(%rbp)
  mov    %edx,-0x74(%rbp)
  mov    %rcx,-0x80(%rbp)
  mov    %r8,-0x88(%rbp)
  movl   $0x4,-0x5c(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x18(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  0x20(%rax),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  0x28(%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x20(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x28(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x30(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  movsd  0x38(%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  cmpl   $0x0,-0x74(%rbp)
  je     L9
  cmpl   $0x1,-0x74(%rbp)
  jne    L8
  mov    -0x80(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movsd  -0x38(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x5c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x5c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x48(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x28(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x40(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x20(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L9
L8:
  mov    -0x80(%rbp),%rax
  movsd  (%rax),%xmm0
  subsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x5c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x5c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
L9:
  mov    -0x88(%rbp),%rax
  movsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x5c(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  nop
  leave
  ret
```

assistant: ```c
void corner_dtrmm_l_u_nt_2x4_lib4(double *A, double *B, int alg, double *C, double *D) {
  const int bs = 4;
  double a_0, a_1, b_0, d_0, d_4, d_8, d_c, d_1, d_5, d_9, d_d;
  a_0 = A[0];
  a_1 = A[1];
  b_0 = B[0];
  d_0 = a_0 * b_0;
  d_1 = a_1 * b_0;
  b_0 = B[1];
  d_4 = a_0 * b_0;
  d_5 = a_1 * b_0;
  b_0 = B[2];
  d_8 = a_0 * b_0;
  d_9 = a_1 * b_0;
  b_0 = B[3];
  d_c = a_0 * b_0;
  d_d = a_1 * b_0;
  a_0 = A[4];
  a_1 = A[5];
  b_0 = B[4];
  d_0 += a_0 * b_0;
  d_1 += a_1 * b_0;
  b_0 = B[5];
  d_4 += a_0 * b_0;
  d_5 += a_1 * b_0;
  b_0 = B[6];
  d_8 += a_0 * b_0;
  d_9 += a_1 * b_0;
  b_0 = B[7];
  d_c += a_0 * b_0;
  d_d += a_1 * b_0;
  if (alg != 0) {
    if (alg == 1) {
      d_0 = C[0 + bs * 0] + d_0;
      d_1 = C[1 + bs * 0] + d_1;
      d_4 = C[0 + bs * 1] + d_4;
      d_5 = C[1 + bs * 1] + d_5;
      d_8 = C[0 + bs * 2] + d_8;
      d_9 = C[1 + bs * 2] + d_9;
      d_c = C[0 + bs * 3] + d_c;
      d_d = C[1 + bs * 3] + d_d;
    } else {
      d_0 = C[0 + bs * 0] - d_0;
      d_1 = C[1 + bs * 0] - d_1;
      d_4 = C[0 + bs * 1] - d_4;
      d_5 = C[1 + bs * 1] - d_5;
      d_8 = C[0 + bs * 2] - d_8;
      d_9 = C[1 + bs * 2] - d_9;
      d_c = C[0 + bs * 3] - d_c;
      d_d = C[1 + bs * 3] - d_d;
    }
  }
  D[0 + bs * 0] = d_0;
  D[1 + bs * 0] = d_1;
  D[0 + bs * 1] = d_4;
  D[1 + bs * 1] = d_5;
  D[0 + bs * 2] = d_8;
  D[1 + bs * 2] = d_9;
  D[0 + bs * 3] = d_c;
  D[1 + bs * 3] = d_d;
}
```