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

```asm
<invmat2>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xe8,%rsp
  mov    %rdi,%r10
  mov    %rsi,0x38(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0xd8(%rsp)
  xor    %eax,%eax
  movsd  D14(%rip),%xmm0
  movsd  %xmm0,0x90(%rsp)
  movq   $0x0,0x98(%rsp)
  movq   $0x0,0xa0(%rsp)
  movq   $0x0,0xa8(%rsp)
  movsd  %xmm0,0xb0(%rsp)
  movq   $0x0,0xb8(%rsp)
  movq   $0x0,0xc0(%rsp)
  movq   $0x0,0xc8(%rsp)
  movsd  %xmm0,0xd0(%rsp)
  lea    0x40(%rsp),%rcx
  mov    %rcx,0x8(%rsp)
  mov    $0x3,%esi
  mov    $0x0,%r8d
  mov    $0x0,%edi
  jmp    L67
L9:
  movslq %r8d,%rax
  lea    (%r10,%rax,8),%r9
  mov    %rcx,%rdx
  mov    $0x0,%eax
L200:
  movsd  (%r9,%rax,8),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  %xmm0,(%rcx,%rax,8)
  add    $0x1,%rax
  add    $0x18,%rdx
  cmp    %rsi,%rax
  jne    L200
  add    $0x3,%r8d
  sub    %edi,%r8d
L172:
  add    $0x1,%edi
  add    $0x20,%rcx
  sub    $0x1,%rsi
  cmp    $0x3,%edi
  je     L238
L67:
  cmp    $0x2,%edi
  jle    L9
  jmp    L172
L238:
  lea    0x90(%rsp),%rsi
  lea    0xa8(%rsp),%r13
  mov    0x8(%rsp),%rax
  mov    %rax,%r15
  mov    %rsi,%r12
  mov    %rax,0x10(%rsp)
  mov    $0x0,%ebx
  movq   $0x0,0x18(%rsp)
  mov    $0x0,%r11d
  mov    $0x0,%r14d
  movq   D6(%rip),%xmm3
  lea    0x40(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    %rsi,0x30(%rsp)
  pxor   %xmm4,%xmm4
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm7
  movsd  D39(%rip),%xmm6
  mov    %rsi,0x20(%rsp)
  jmp    L242
L85:
  add    $0x1,%ecx
  add    $0x18,%rdi
  add    $0x18,%r8
  sub    $0x3,%rsi
  cmp    $0x3,%ecx
  je     L122
L169:
  cmp    %r11d,%ecx
  je     L85
  movsd  (%rdi,%r11,8),%xmm1
  mov    %r8,%rax
  mov    %rdi,%rdx
  mov    0x8(%rsp),%r10
  sub    %rdi,%r10
  lea    0x18(%r8),%r9
L76:
  lea    (%r10,%rdx,1),%rbp
  movapd %xmm1,%xmm2
  mulsd  0x0(%rbp,%rbx,1),%xmm2
  movsd  (%rdx),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rdx)
  movapd %xmm1,%xmm2
  mulsd  (%rax,%rsi,8),%xmm2
  movsd  (%rax),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  add    $0x8,%rdx
  add    $0x8,%rax
  cmp    %r9,%rax
  jne    L76
  jmp    L85
L122:
  add    $0x1,%r11
  addq   $0x3,0x18(%rsp)
  add    $0x18,%rbx
  addq   $0x18,0x10(%rsp)
  add    $0x18,%r12
  add    $0x18,%r13
  add    $0x20,%r15
  cmp    $0x3,%r14d
  je     L40
L242:
  mov    %r14d,%edx
  add    $0x1,%r14d
  cmp    $0x2,%r14d
  jg     L86
  movsd  (%r15),%xmm1
  andpd  D6(%rip),%xmm1
  mov    %r15,%rcx
  mov    %r14d,%eax
L131:
  movsd  0x18(%rcx),%xmm0
  andpd  %xmm3,%xmm0
  ucomisd %xmm1,%xmm0
  cmova  %eax,%edx
  add    $0x1,%eax
  add    $0x18,%rcx
  cmp    $0x3,%eax
  jne    L131
  cmp    %r11d,%edx
  je     L86
  movslq %edx,%rdx
  lea    (%rdx,%rdx,2),%rax
  shl    $0x3,%rax
  mov    0x28(%rsp),%rdi
  lea    (%rdi,%rax,1),%rsi
  add    0x30(%rsp),%rax
  mov    %r12,%rdx
  mov    0x10(%rsp),%rcx
L199:
  movsd  (%rcx),%xmm0
  movsd  (%rsi),%xmm1
  movsd  %xmm1,(%rcx)
  movsd  %xmm0,(%rsi)
  movsd  (%rdx),%xmm0
  movsd  (%rax),%xmm1
  movsd  %xmm1,(%rdx)
  movsd  %xmm0,(%rax)
  add    $0x8,%rcx
  add    $0x8,%rsi
  add    $0x8,%rdx
  add    $0x8,%rax
  cmp    %r13,%rdx
  jne    L199
L86:
  movsd  (%r15),%xmm1
  ucomisd %xmm4,%xmm1
  jp     L102
  ucomisd %xmm5,%xmm1
  je     L191
L102:
  movapd %xmm1,%xmm0
  andpd  %xmm7,%xmm0
  comisd %xmm0,%xmm6
  ja     L239
  mov    %r12,%rax
  mov    0x10(%rsp),%rdx
L21:
  movsd  (%rdx),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  movsd  (%rax),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  add    $0x8,%rdx
  add    $0x8,%rax
  cmp    %r13,%rax
  jne    L21
  mov    0x18(%rsp),%rsi
  mov    0x20(%rsp),%r8
  mov    0x8(%rsp),%rdi
  mov    $0x0,%ecx
  jmp    L169
L40:
  mov    0x20(%rsp),%rsi
  mov    $0x18,%edx
  mov    $0x0,%r8d
  mov    $0x0,%edi
  mov    0x38(%rsp),%r10
L161:
  cmp    $0x2,%edi
  jg     L228
  mov    %edi,%r9d
  movslq %r8d,%rax
  lea    (%r10,%rax,8),%rcx
  mov    $0x0,%eax
L11:
  movsd  (%rsi,%rax,1),%xmm0
  movsd  %xmm0,(%rcx,%rax,1)
  add    $0x8,%rax
  cmp    %rax,%rdx
  jne    L11
  add    $0x3,%r8d
  sub    %r9d,%r8d
L228:
  add    $0x1,%edi
  add    $0x20,%rsi
  sub    $0x8,%rdx
  cmp    $0x3,%edi
  jne    L161
  mov    $0x1,%eax
L58:
  mov    0xd8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L80
  add    $0xe8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L191:
  mov    $0x0,%eax
  jmp    L58
L239:
  mov    $0x0,%eax
  jmp    L58
L80:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D14
data_type: f64
name: retrieve_data
arguments: data_label: D6
data_type: qword[2]
name: retrieve_data
arguments: data_label: D39
data_type: byte[8]

tool: D14: 1

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

tool: {"D39": [0x8d,0xed,0xb5,0xa0,0xf7,0xc6,0xb0,0x3e]}

assistant: ```c
int invmat2(double m[6], double m11[6]) {
  double t, tmp[3][3], m1[9];
  int i, j, k, sw;
  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
      m1[i * 3 + j] = i == j ? 1.0 : 0.0;
  for (k = 0, i = 0; i < 3; i++)
    for (j = i; j < 3; j++)
      tmp[i][j] = tmp[j][i] = m[k++];
  for (i = 0; i < 3; i++) {
    sw = i;
    for (j = i + 1; j < 3; j++)
      if (fabs(tmp[j][i]) > fabs(tmp[i][i]))
        sw = j;
    if (sw != i) {
      for (k = 0; k < 3; k++) {
        t = tmp[i][k];
        tmp[i][k] = tmp[sw][k];
        tmp[sw][k] = t;
        t = m1[i * 3 + k];
        m1[i * 3 + k] = m1[sw * 3 + k];
        m1[sw * 3 + k] = t;
      }
    }
    if (((((tmp[i][i]) == 0.0f) ? (fabs(0.0) < 1.e-06) : (((0.0) == 0.0f) ? (fabs(tmp[i][i]) < 1.e-06) : (fabs((tmp[i][i]) - (0.0)) / (fabs(tmp[i][i]) + fabs(0.0)) < 2.e-06)))))
      return (0);
    t = tmp[i][i];
    for (k = 0; k < 3; k++) {
      tmp[i][k] /= t;
      m1[i * 3 + k] /= t;
    }
    for (j = 0; j < 3; j++)
      if (j != i) {
        t = tmp[j][i];
        for (k = 0; k < 3; k++) {
          tmp[j][k] -= tmp[i][k] * t;
          m1[j * 3 + k] -= m1[i * 3 + k] * t;
        }
      }
  }
  for (k = 0, i = 0; i < 3; i++)
    for (j = i; j < 3; j++)
      m11[k++] = m1[i * 3 + j];
  return (1);
}
```