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

```asm
<X2L_tria6>:
  endbr64
  movsd  (%rcx),%xmm0
  movsd  0x8(%rcx),%xmm1
  mulsd  (%rdi),%xmm0
  mulsd  0x18(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x10(%rcx),%xmm1
  mulsd  0x30(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x18(%rcx),%xmm1
  mulsd  0x48(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x20(%rcx),%xmm1
  mulsd  0x60(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x28(%rcx),%xmm1
  mulsd  0x78(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
  movsd  (%rcx),%xmm0
  movsd  0x8(%rcx),%xmm1
  mulsd  0x8(%rdi),%xmm0
  mulsd  0x20(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x10(%rcx),%xmm1
  mulsd  0x38(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x18(%rcx),%xmm1
  mulsd  0x50(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x20(%rcx),%xmm1
  mulsd  0x68(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x28(%rcx),%xmm1
  mulsd  0x80(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%rsi)
  movsd  (%rcx),%xmm0
  movsd  0x8(%rcx),%xmm1
  mulsd  0x10(%rdi),%xmm0
  mulsd  0x28(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x10(%rcx),%xmm1
  mulsd  0x40(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x18(%rcx),%xmm1
  mulsd  0x58(%rdi),%xmm1
  movsd  D30(%rip),%xmm15
  addsd  %xmm1,%xmm0
  movsd  0x20(%rcx),%xmm1
  mulsd  0x70(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x28(%rcx),%xmm1
  mulsd  0x88(%rdi),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi)
  movsd  0x48(%rdi),%xmm2
  movsd  0x18(%rdi),%xmm7
  movsd  0x78(%rdi),%xmm10
  movsd  0x60(%rdi),%xmm0
  subsd  %xmm2,%xmm7
  movsd  (%rdi),%xmm3
  movsd  (%rdx),%xmm8
  movapd %xmm10,%xmm1
  movsd  0x20(%rdi),%xmm6
  movsd  0x68(%rdi),%xmm5
  addsd  %xmm10,%xmm1
  addsd  %xmm0,%xmm3
  mulsd  %xmm0,%xmm15
  movsd  0x8(%rdx),%xmm11
  addsd  %xmm0,%xmm7
  addsd  0x30(%rdi),%xmm0
  movsd  0x50(%rdi),%xmm13
  movsd  0x80(%rdi),%xmm14
  movsd  0x58(%rdi),%xmm12
  subsd  %xmm1,%xmm3
  movapd %xmm11,%xmm1
  subsd  %xmm13,%xmm6
  movsd  0x28(%rdi),%xmm9
  subsd  %xmm10,%xmm7
  movsd  0x70(%rdi),%xmm4
  subsd  %xmm12,%xmm9
  mulsd  %xmm8,%xmm3
  addsd  %xmm5,%xmm6
  mulsd  %xmm7,%xmm1
  mulsd  %xmm8,%xmm7
  addsd  %xmm4,%xmm9
  subsd  0x88(%rdi),%xmm9
  subsd  %xmm14,%xmm6
  addsd  %xmm1,%xmm3
  addsd  %xmm10,%xmm3
  movsd  D18(%rip),%xmm10
  movapd %xmm3,%xmm1
  movapd %xmm2,%xmm3
  addsd  %xmm2,%xmm3
  mulsd  %xmm10,%xmm1
  subsd  (%rdi),%xmm1
  subsd  %xmm3,%xmm0
  movsd  D30(%rip),%xmm3
  subsd  %xmm15,%xmm1
  mulsd  %xmm5,%xmm3
  mulsd  %xmm11,%xmm0
  addsd  %xmm7,%xmm0
  movsd  0x8(%rdi),%xmm7
  addsd  %xmm0,%xmm2
  movapd %xmm5,%xmm0
  addsd  %xmm7,%xmm0
  mulsd  %xmm10,%xmm2
  subsd  0x30(%rdi),%xmm2
  subsd  %xmm15,%xmm2
  movapd %xmm14,%xmm15
  addsd  %xmm14,%xmm15
  subsd  %xmm15,%xmm0
  movapd %xmm11,%xmm15
  mulsd  %xmm6,%xmm15
  mulsd  %xmm8,%xmm6
  mulsd  %xmm8,%xmm0
  addsd  %xmm15,%xmm0
  addsd  %xmm14,%xmm0
  movapd %xmm13,%xmm14
  addsd  %xmm13,%xmm14
  mulsd  %xmm10,%xmm0
  subsd  %xmm7,%xmm0
  movsd  0x38(%rdi),%xmm7
  addsd  %xmm7,%xmm5
  subsd  %xmm3,%xmm0
  subsd  %xmm14,%xmm5
  mulsd  %xmm11,%xmm5
  addsd  %xmm6,%xmm5
  movsd  D30(%rip),%xmm6
  mulsd  %xmm4,%xmm6
  addsd  %xmm13,%xmm5
  mulsd  %xmm10,%xmm5
  subsd  %xmm7,%xmm5
  movsd  0x10(%rdi),%xmm7
  movsd  0x88(%rdi),%xmm13
  addsd  %xmm13,%xmm13
  subsd  %xmm3,%xmm5
  movapd %xmm4,%xmm3
  addsd  %xmm7,%xmm3
  subsd  %xmm13,%xmm3
  movapd %xmm11,%xmm13
  mulsd  %xmm9,%xmm13
  mulsd  %xmm8,%xmm3
  mulsd  %xmm9,%xmm8
  addsd  %xmm13,%xmm3
  addsd  0x88(%rdi),%xmm3
  movapd %xmm12,%xmm13
  addsd  %xmm12,%xmm13
  mulsd  %xmm10,%xmm3
  subsd  %xmm7,%xmm3
  movsd  0x40(%rdi),%xmm7
  addsd  %xmm7,%xmm4
  subsd  %xmm6,%xmm3
  subsd  %xmm13,%xmm4
  mulsd  %xmm11,%xmm4
  addsd  %xmm8,%xmm4
  addsd  %xmm12,%xmm4
  mulsd  %xmm10,%xmm4
  subsd  %xmm7,%xmm4
  movapd %xmm5,%xmm7
  mulsd  %xmm3,%xmm7
  mulsd  %xmm2,%xmm3
  subsd  %xmm6,%xmm4
  mulsd  %xmm0,%xmm2
  movapd %xmm0,%xmm6
  mulsd  %xmm4,%xmm6
  mulsd  %xmm1,%xmm4
  mulsd  %xmm5,%xmm1
  subsd  %xmm7,%xmm6
  subsd  %xmm4,%xmm3
  subsd  %xmm2,%xmm1
  mulsd  %xmm6,%xmm6
  mulsd  %xmm3,%xmm3
  mulsd  %xmm1,%xmm1
  movapd %xmm6,%xmm0
  addsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L6
  sqrtsd %xmm0,%xmm0
  ret
L6:
  jmp    1050 <sqrt@plt>
```

tool_calls: name: read_data
arguments: data_tag: D30
type_infered: f64
name: read_data
arguments: data_tag: D18
type_infered: f64

tool: D30: 3

tool: D18: 4

assistant: ```c
double X2L_tria6(double X[6][3], double *XL, double *L, double *N) {
  double ax, ay, az, dx1, dx2, dy1, dy2, dz1, dz2, j1, j2, j3, L1, L2;
  XL[0] = N[0] * X[0][0] + N[1] * X[1][0] + N[2] * X[2][0] + N[3] * X[3][0] + N[4] * X[4][0] + N[5] * X[5][0];
  XL[1] = N[0] * X[0][1] + N[1] * X[1][1] + N[2] * X[2][1] + N[3] * X[3][1] + N[4] * X[4][1] + N[5] * X[5][1];
  XL[2] = N[0] * X[0][2] + N[1] * X[1][2] + N[2] * X[2][2] + N[3] * X[3][2] + N[4] * X[4][2] + N[5] * X[5][2];
  L1 = L[0];
  L2 = L[1];
  ax = X[1][0] - X[3][0] + X[4][0] - X[5][0];
  ay = X[1][1] - X[3][1] + X[4][1] - X[5][1];
  az = X[1][2] - X[3][2] + X[4][2] - X[5][2];
  dx1 = 4.0 * (L1 * (X[0][0] + X[4][0] - 2.0 * X[5][0]) + L2 * ax + X[5][0]) - X[0][0] - 3.0 * X[4][0];
  dx2 = 4.0 * (L1 * ax + L2 * (X[2][0] + X[4][0] - 2.0 * X[3][0]) + X[3][0]) - X[2][0] - 3.0 * X[4][0];
  dy1 = 4.0 * (L1 * (X[0][1] + X[4][1] - 2.0 * X[5][1]) + L2 * ay + X[5][1]) - X[0][1] - 3.0 * X[4][1];
  dy2 = 4.0 * (L1 * ay + L2 * (X[2][1] + X[4][1] - 2.0 * X[3][1]) + X[3][1]) - X[2][1] - 3.0 * X[4][1];
  dz1 = 4.0 * (L1 * (X[0][2] + X[4][2] - 2.0 * X[5][2]) + L2 * az + X[5][2]) - X[0][2] - 3.0 * X[4][2];
  dz2 = 4.0 * (L1 * az + L2 * (X[2][2] + X[4][2] - 2.0 * X[3][2]) + X[3][2]) - X[2][2] - 3.0 * X[4][2];
  j1 = dy1 * dz2 - dy2 * dz1;
  j2 = dx2 * dz1 - dx1 * dz2;
  j3 = dx1 * dy2 - dx2 * dy1;
  return sqrt(j1 * j1 + j2 * j2 + j3 * j3);
}
```