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

```asm
<glmCrossProduct4d>:
  endbr64
  movsd  0x10(%rsi),%xmm4
  movsd  0x8(%rsi),%xmm2
  movq   D7(%rip),%xmm0
  movsd  0x8(%rdx),%xmm3
  movsd  0x10(%rdx),%xmm7
  movapd %xmm4,%xmm1
  movapd %xmm2,%xmm10
  movsd  0x18(%rsi),%xmm8
  xorpd  %xmm0,%xmm1
  movsd  0x18(%rdx),%xmm6
  movsd  0x10(%rcx),%xmm5
  mulsd  %xmm3,%xmm1
  movsd  0x18(%rcx),%xmm11
  movsd  0x8(%rcx),%xmm9
  mulsd  %xmm7,%xmm10
  mulsd  %xmm8,%xmm7
  mulsd  %xmm6,%xmm4
  mulsd  %xmm8,%xmm3
  mulsd  %xmm11,%xmm1
  mulsd  %xmm11,%xmm10
  mulsd  %xmm9,%xmm7
  mulsd  %xmm9,%xmm4
  mulsd  %xmm6,%xmm2
  mulsd  %xmm5,%xmm3
  addsd  %xmm10,%xmm1
  subsd  %xmm7,%xmm1
  mulsd  %xmm5,%xmm2
  addsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,(%rdi)
  movsd  0x10(%rsi),%xmm5
  movsd  (%rsi),%xmm3
  movsd  (%rdx),%xmm4
  movsd  0x10(%rdx),%xmm1
  movapd %xmm5,%xmm2
  movapd %xmm3,%xmm10
  movsd  0x18(%rdx),%xmm7
  movsd  0x18(%rsi),%xmm8
  mulsd  %xmm4,%xmm2
  movsd  0x18(%rcx),%xmm11
  movsd  (%rcx),%xmm9
  mulsd  %xmm1,%xmm10
  movsd  0x10(%rcx),%xmm6
  mulsd  %xmm8,%xmm1
  mulsd  %xmm7,%xmm5
  mulsd  %xmm8,%xmm4
  mulsd  %xmm11,%xmm2
  mulsd  %xmm11,%xmm10
  mulsd  %xmm9,%xmm1
  mulsd  %xmm9,%xmm5
  mulsd  %xmm7,%xmm3
  mulsd  %xmm6,%xmm4
  subsd  %xmm10,%xmm2
  addsd  %xmm2,%xmm1
  mulsd  %xmm6,%xmm3
  subsd  %xmm5,%xmm1
  subsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm1
  movsd  %xmm1,0x8(%rdi)
  movsd  0x8(%rsi),%xmm3
  movsd  (%rsi),%xmm1
  movsd  (%rdx),%xmm2
  movsd  0x8(%rdx),%xmm6
  xorpd  %xmm3,%xmm0
  movapd %xmm1,%xmm9
  movsd  0x18(%rsi),%xmm7
  movsd  0x18(%rcx),%xmm10
  mulsd  %xmm2,%xmm0
  movsd  0x18(%rdx),%xmm5
  movsd  (%rcx),%xmm8
  mulsd  %xmm6,%xmm9
  movsd  0x8(%rcx),%xmm4
  mulsd  %xmm7,%xmm6
  mulsd  %xmm5,%xmm3
  mulsd  %xmm7,%xmm2
  mulsd  %xmm10,%xmm0
  mulsd  %xmm10,%xmm9
  mulsd  %xmm8,%xmm6
  mulsd  %xmm8,%xmm3
  mulsd  %xmm5,%xmm1
  mulsd  %xmm4,%xmm2
  addsd  %xmm9,%xmm0
  subsd  %xmm6,%xmm0
  mulsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rdi)
  movsd  0x10(%rsi),%xmm4
  movsd  0x8(%rdx),%xmm1
  movsd  0x8(%rsi),%xmm2
  movsd  0x10(%rdx),%xmm3
  movapd %xmm4,%xmm0
  movsd  (%rdx),%xmm7
  movsd  (%rcx),%xmm10
  movapd %xmm2,%xmm8
  movsd  (%rsi),%xmm6
  movsd  0x10(%rcx),%xmm5
  mulsd  %xmm1,%xmm0
  movsd  0x8(%rcx),%xmm9
  mulsd  %xmm3,%xmm8
  mulsd  %xmm7,%xmm4
  mulsd  %xmm6,%xmm3
  mulsd  %xmm7,%xmm2
  mulsd  %xmm10,%xmm0
  mulsd  %xmm10,%xmm8
  mulsd  %xmm9,%xmm4
  mulsd  %xmm9,%xmm3
  mulsd  %xmm6,%xmm1
  mulsd  %xmm5,%xmm2
  subsd  %xmm8,%xmm0
  subsd  %xmm4,%xmm0
  mulsd  %xmm5,%xmm1
  addsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rdi)
  ret
```

tool_calls: name: parse_data
arguments: data_label: D7
type_guessed: byte[8]

tool: {"D7": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void glmCrossProduct4d(double result[4], const double v1[4], const double v2[4], const double v3[4]) {
  result[0] = -v1[2] * v2[1] * v3[3] + v1[1] * v2[2] * v3[3] - v1[3] * v2[2] * v3[1] + v1[2] * v2[3] * v3[1] + v1[3] * v2[1] * v3[2] - v1[1] * v2[3] * v3[2];
  result[1] = v1[2] * v2[0] * v3[3] - v1[0] * v2[2] * v3[3] + v1[3] * v2[2] * v3[0] - v1[2] * v2[3] * v3[0] - v1[3] * v2[0] * v3[2] + v1[0] * v2[3] * v3[2];
  result[2] = -v1[1] * v2[0] * v3[3] + v1[0] * v2[1] * v3[3] - v1[3] * v2[1] * v3[0] + v1[1] * v2[3] * v3[0] + v1[3] * v2[0] * v3[1] - v1[0] * v2[3] * v3[1];
  result[3] = v1[2] * v2[1] * v3[0] - v1[1] * v2[2] * v3[0] - v1[2] * v2[0] * v3[1] + v1[0] * v2[2] * v3[1] + v1[1] * v2[0] * v3[2] - v1[0] * v2[1] * v3[2];
}
```