user: Converte this assembly snippet into its equivalent C code:

```asm
<X2L_tria6>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  mov    %rdx,-0x88(%rbp)
  mov    %rcx,-0x90(%rbp)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x80(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x78(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x8(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x80(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x78(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x90(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x10(%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x80(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x88(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  mov    -0x88(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  0x8(%rax),%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x8(%rax),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x8(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x78(%rbp),%rax
  add    $0x18,%rax
  movsd  0x10(%rax),%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x10(%rax),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x10(%rax),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x60(%rbp),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  movapd %xmm1,%xmm0
  mulsd  -0x68(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movapd %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x78(%rbp),%rax
  movsd  0x8(%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x8(%rax),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  movsd  0x8(%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x58(%rbp),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x8(%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x8(%rax),%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  movapd %xmm1,%xmm0
  mulsd  -0x68(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movapd %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x8(%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x8(%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x78(%rbp),%rax
  movsd  0x10(%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x10(%rax),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x78,%rax
  movsd  0x10(%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  movsd  0x10(%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x50(%rbp),%xmm2
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x10(%rax),%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x10(%rax),%xmm0
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  movapd %xmm1,%xmm0
  mulsd  -0x68(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movapd %xmm2,%xmm1
  mov    -0x78(%rbp),%rax
  add    $0x48,%rax
  movsd  0x10(%rax),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x30,%rax
  movsd  0x10(%rax),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x78(%rbp),%rax
  add    $0x60,%rax
  movsd  0x10(%rax),%xmm2
  movsd  D36(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x38(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  mulsd  -0x28(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x40(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  -0x48(%rbp),%xmm1
  mulsd  -0x20(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x48(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  -0x40(%rbp),%xmm1
  mulsd  -0x38(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D87
type_guessed: f64
name: disassemble_data
arguments: label: D36
type_guessed: f64

tool: D87: 4

tool: D36: 3

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