user: Translate the below assembly code into C programming language:

```asm
<corner_dttmm_ll_nt_4x4_lib4>:
  endbr64
  movsd  (%rsi),%xmm13
  movsd  0x10(%rdi),%xmm4
  pxor   %xmm0,%xmm0
  movsd  0x30(%rdi),%xmm6
  movsd  0x20(%rsi),%xmm3
  mulsd  %xmm13,%xmm4
  movsd  0x18(%rdi),%xmm2
  movsd  0x38(%rdi),%xmm1
  movapd %xmm6,%xmm11
  movsd  0x48(%rsi),%xmm5
  movsd  0x28(%rdi),%xmm7
  mulsd  %xmm3,%xmm11
  movsd  0x28(%rsi),%xmm9
  movapd %xmm1,%xmm10
  movsd  0x50(%rsi),%xmm14
  mulsd  %xmm13,%xmm2
  movsd  0x40(%rsi),%xmm8
  movsd  0x8(%rdi),%xmm12
  mulsd  %xmm3,%xmm10
  movsd  %xmm14,-0x8(%rsp)
  addsd  %xmm0,%xmm4
  mulsd  %xmm9,%xmm1
  mulsd  %xmm13,%xmm12
  mulsd  %xmm9,%xmm6
  addsd  %xmm4,%xmm11
  movsd  0x58(%rdi),%xmm4
  addsd  %xmm0,%xmm2
  mulsd  %xmm7,%xmm3
  mulsd  %xmm9,%xmm7
  movapd %xmm4,%xmm15
  movapd %xmm4,%xmm14
  addsd  %xmm0,%xmm1
  mulsd  %xmm8,%xmm15
  addsd  %xmm2,%xmm10
  movsd  0x50(%rdi),%xmm2
  addsd  %xmm0,%xmm12
  mulsd  %xmm5,%xmm14
  addsd  %xmm0,%xmm6
  mulsd  -0x8(%rsp),%xmm4
  mulsd  %xmm2,%xmm8
  addsd  %xmm12,%xmm3
  addsd  %xmm0,%xmm7
  mulsd  %xmm2,%xmm5
  addsd  %xmm10,%xmm15
  movsd  0x60(%rsi),%xmm10
  mulsd  -0x8(%rsp),%xmm2
  addsd  %xmm1,%xmm14
  movsd  0x78(%rdi),%xmm1
  addsd  %xmm0,%xmm4
  mulsd  %xmm1,%xmm10
  addsd  %xmm11,%xmm8
  addsd  %xmm6,%xmm5
  addsd  %xmm0,%xmm2
  addsd  %xmm15,%xmm10
  movsd  0x68(%rsi),%xmm15
  mulsd  %xmm1,%xmm15
  addsd  %xmm14,%xmm15
  movsd  0x70(%rsi),%xmm14
  mulsd  %xmm1,%xmm14
  mulsd  0x78(%rsi),%xmm1
  addsd  %xmm4,%xmm14
  movsd  (%rdi),%xmm4
  movsd  %xmm3,0x8(%rdx)
  addsd  %xmm0,%xmm1
  movsd  %xmm8,0x10(%rdx)
  mulsd  %xmm13,%xmm4
  movsd  %xmm10,0x18(%rdx)
  movsd  %xmm7,0x28(%rdx)
  movsd  %xmm5,0x30(%rdx)
  movsd  %xmm15,0x38(%rdx)
  movsd  %xmm2,0x50(%rdx)
  addsd  %xmm0,%xmm4
  movsd  %xmm14,0x58(%rdx)
  movsd  %xmm4,(%rdx)
  movsd  %xmm1,0x78(%rdx)
  ret
```

assistant: ```c
void corner_dttmm_ll_nt_4x4_lib4(double *A, double *B, double *C) {
  const int bs = 4;
  double a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3, c_00 = 0, c_10 = 0, c_11 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_30 = 0, c_31 = 0, c_32 = 0, c_33 = 0;
  a_0 = A[0 + bs * 0];
  a_1 = A[1 + bs * 0];
  a_2 = A[2 + bs * 0];
  a_3 = A[3 + bs * 0];
  b_0 = B[0 + bs * 0];
  c_00 += a_0 * b_0;
  c_10 += a_1 * b_0;
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  a_1 = A[1 + bs * 1];
  a_2 = A[2 + bs * 1];
  a_3 = A[3 + bs * 1];
  b_0 = B[0 + bs * 1];
  b_1 = B[1 + bs * 1];
  c_10 += a_1 * b_0;
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  c_11 += a_1 * b_1;
  c_21 += a_2 * b_1;
  c_31 += a_3 * b_1;
  a_2 = A[2 + bs * 2];
  a_3 = A[3 + bs * 2];
  b_0 = B[0 + bs * 2];
  b_1 = B[1 + bs * 2];
  b_2 = B[2 + bs * 2];
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  c_21 += a_2 * b_1;
  c_31 += a_3 * b_1;
  c_22 += a_2 * b_2;
  c_32 += a_3 * b_2;
  a_3 = A[3 + bs * 3];
  b_0 = B[0 + bs * 3];
  b_1 = B[1 + bs * 3];
  b_2 = B[2 + bs * 3];
  b_3 = B[3 + bs * 3];
  c_30 += a_3 * b_0;
  c_31 += a_3 * b_1;
  c_32 += a_3 * b_2;
  c_33 += a_3 * b_3;
  C[0 + bs * 0] = c_00;
  C[1 + bs * 0] = c_10;
  C[2 + bs * 0] = c_20;
  C[3 + bs * 0] = c_30;
  C[1 + bs * 1] = c_11;
  C[2 + bs * 1] = c_21;
  C[3 + bs * 1] = c_31;
  C[2 + bs * 2] = c_22;
  C[3 + bs * 2] = c_32;
  C[3 + bs * 3] = c_33;
}
```