user: 这段汇编代码用C语言表示是什么样的？

```asm
<nx_dmat3_inv>:
  endbr64
  movsd  (%rsi),%xmm1
  movsd  0x20(%rsi),%xmm2
  movapd %xmm1,%xmm6
  mulsd  %xmm2,%xmm6
  movsd  0x38(%rsi),%xmm9
  mulsd  %xmm9,%xmm1
  movsd  0x18(%rsi),%xmm4
  movsd  0x8(%rsi),%xmm3
  movapd %xmm4,%xmm7
  mulsd  %xmm3,%xmm7
  movsd  0x30(%rsi),%xmm5
  mulsd  %xmm5,%xmm3
  movsd  0x10(%rsi),%xmm0
  mulsd  %xmm0,%xmm4
  mulsd  %xmm0,%xmm5
  movsd  0x40(%rsi),%xmm11
  movsd  0x28(%rsi),%xmm10
  movapd %xmm11,%xmm0
  mulsd  %xmm6,%xmm0
  movapd %xmm10,%xmm8
  mulsd  %xmm1,%xmm8
  subsd  %xmm8,%xmm0
  movapd %xmm11,%xmm8
  mulsd  %xmm7,%xmm8
  subsd  %xmm8,%xmm0
  movapd %xmm10,%xmm8
  mulsd  %xmm3,%xmm8
  addsd  %xmm8,%xmm0
  movapd %xmm9,%xmm8
  mulsd  %xmm4,%xmm8
  addsd  %xmm8,%xmm0
  movapd %xmm2,%xmm8
  mulsd  %xmm5,%xmm8
  subsd  %xmm8,%xmm0
  movapd %xmm0,%xmm8
  andpd  D35(%rip),%xmm8
  comisd D22(%rip),%xmm8
  jbe    L9
  movsd  D6(%rip),%xmm8
  divsd  %xmm0,%xmm8
  mulsd  %xmm11,%xmm2
  mulsd  %xmm10,%xmm9
  subsd  %xmm9,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,(%rdi)
  movsd  0x8(%rsi),%xmm2
  mulsd  0x40(%rsi),%xmm2
  movsd  0x38(%rsi),%xmm9
  mulsd  0x10(%rsi),%xmm9
  subsd  %xmm9,%xmm2
  movq   D21(%rip),%xmm9
  xorpd  %xmm9,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x8(%rdi)
  movsd  0x8(%rsi),%xmm2
  mulsd  0x28(%rsi),%xmm2
  movsd  0x20(%rsi),%xmm10
  mulsd  0x10(%rsi),%xmm10
  subsd  %xmm10,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x10(%rdi)
  movsd  0x18(%rsi),%xmm2
  mulsd  0x40(%rsi),%xmm2
  movsd  0x30(%rsi),%xmm10
  mulsd  0x28(%rsi),%xmm10
  subsd  %xmm10,%xmm2
  xorpd  %xmm9,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x18(%rdi)
  movsd  (%rsi),%xmm2
  mulsd  0x40(%rsi),%xmm2
  subsd  %xmm5,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x20(%rdi)
  movsd  (%rsi),%xmm2
  mulsd  0x28(%rsi),%xmm2
  subsd  %xmm4,%xmm2
  xorpd  %xmm9,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x28(%rdi)
  movsd  0x18(%rsi),%xmm2
  mulsd  0x38(%rsi),%xmm2
  movsd  0x30(%rsi),%xmm4
  mulsd  0x20(%rsi),%xmm4
  subsd  %xmm4,%xmm2
  mulsd  %xmm8,%xmm2
  movsd  %xmm2,0x30(%rdi)
  subsd  %xmm3,%xmm1
  xorpd  %xmm9,%xmm1
  mulsd  %xmm8,%xmm1
  movsd  %xmm1,0x38(%rdi)
  subsd  %xmm7,%xmm6
  mulsd  %xmm8,%xmm6
  movsd  %xmm6,0x40(%rdi)
L9:
  ret
```

tool_calls: name: read_data
arguments: tag: D35
type_infered: qword[2]
name: read_data
arguments: tag: D22
type_infered: f64[2]
name: read_data
arguments: tag: D6
type_infered: f64
name: read_data
arguments: tag: D21
type_infered: byte[8]

tool: {"D35": [0x7fffffffffffffff,0x0000000000000000]}

tool: {"D22": [0.0,-0.0]}

tool: D6: 1

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

assistant: ```c
double nx_dmat3_inv(double *M3i, const double *M3) {
  const double t4 = M3[0] * M3[4];
  const double t6 = M3[0] * M3[7];
  const double t8 = M3[3] * M3[1];
  const double t10 = M3[6] * M3[1];
  const double t12 = M3[3] * M3[2];
  const double t14 = M3[6] * M3[2];
  double detM3 = t4 * M3[8] - t6 * M3[5] - t8 * M3[8] + t10 * M3[5] + t12 * M3[7] - t14 * M3[4];
  if (fabs(detM3) > 0.0) {
    const double t17 = 1.0 / detM3;
    M3i[0] = (M3[4] * M3[8] - M3[7] * M3[5]) * t17;
    M3i[1] = -(M3[1] * M3[8] - M3[7] * M3[2]) * t17;
    M3i[2] = (M3[1] * M3[5] - M3[4] * M3[2]) * t17;
    M3i[3] = -(M3[3] * M3[8] - M3[6] * M3[5]) * t17;
    M3i[4] = (M3[0] * M3[8] - t14) * t17;
    M3i[5] = -(M3[0] * M3[5] - t12) * t17;
    M3i[6] = (M3[3] * M3[7] - M3[6] * M3[4]) * t17;
    M3i[7] = -(t6 - t10) * t17;
    M3i[8] = (t4 - t8) * t17;
  }
  return detM3;
}
```