user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<find_inverse_matrix>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %rdi,-0xb8(%rbp)
  mov    %rsi,-0xc0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xb0(%rbp)
  jmp    L91
L72:
  movl   $0x0,-0xac(%rbp)
  jmp    L46
L54:
  mov    -0xb0(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0xb8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xac(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mov    -0xac(%rbp),%eax
  movslq %eax,%rcx
  mov    -0xb0(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  add    %rcx,%rax
  movsd  %xmm0,-0xa0(%rbp,%rax,8)
  addl   $0x1,-0xac(%rbp)
L46:
  cmpl   $0x2,-0xac(%rbp)
  jle    L54
  addl   $0x1,-0xb0(%rbp)
L91:
  cmpl   $0x2,-0xb0(%rbp)
  jle    L72
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x80(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x98(%rbp),%xmm2
  movsd  -0x78(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  -0x70(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x90(%rbp),%xmm2
  movsd  -0x88(%rbp),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  -0x68(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x90(%rbp),%xmm2
  movsd  -0x80(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  -0x70(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm2
  movsd  -0x88(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  -0x60(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0xa0(%rbp),%xmm2
  movsd  -0x78(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  -0x68(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  movq   D64(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  D59(%rip),%xmm0
  comisd %xmm1,%xmm0
  jbe    L16
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <HECMW_vis_print_exit@plt>
L16:
  movsd  -0x80(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x78(%rbp),%xmm2
  movsd  -0x68(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x98(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm2
  movsd  -0x90(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movq   D28(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x98(%rbp),%xmm1
  movsd  -0x78(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x80(%rbp),%xmm2
  movsd  -0x90(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x70(%rbp),%xmm2
  movsd  -0x78(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movq   D28(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x70(%rbp),%xmm2
  movsd  -0x90(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x78(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x88(%rbp),%xmm2
  movsd  -0x90(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movq   D28(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x88(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x70(%rbp),%xmm2
  movsd  -0x80(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x70(%rbp),%xmm2
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movq   D28(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  -0x80(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x88(%rbp),%xmm2
  movsd  -0x98(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movl   $0x0,-0xb0(%rbp)
  jmp    L64
L56:
  movl   $0x0,-0xac(%rbp)
  jmp    L27
L22:
  mov    -0xac(%rbp),%eax
  movslq %eax,%rcx
  mov    -0xb0(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  add    %rcx,%rax
  movsd  -0x50(%rbp,%rax,8),%xmm0
  mov    -0xb0(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0xc0(%rbp),%rax
  add    %rax,%rdx
  divsd  -0xa8(%rbp),%xmm0
  mov    -0xac(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  addl   $0x1,-0xac(%rbp)
L27:
  cmpl   $0x2,-0xac(%rbp)
  jle    L22
  addl   $0x1,-0xb0(%rbp)
L64:
  cmpl   $0x2,-0xb0(%rbp)
  jle    L56
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D64
type_infered: qword
name: extract_symbolic_data
arguments: data_tag: D59
type_infered: byte[8]
name: extract_symbolic_data
arguments: data_tag: D48
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D28
type_infered: byte[8]

tool: D64: 9223372036854775807

tool: {"D59": [0x48,0xaf,0xbc,0x9a,0xf2,0xd7,0x7a,0x3e]}

tool: D48: ERROR: HEC-MW-VIS-E2001: There is something wrong with transform matrix, invers =0

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

assistant: ```c
void find_inverse_matrix(double coff_matrix[3][3], double inv_matrix[3][3]) {
  int i, j;
  double a[3][3], norm_a, aa[3][3];
  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
      a[i][j] = coff_matrix[i][j];
  norm_a = a[0][0] * a[1][1] * a[2][2] + a[0][1] * a[1][2] * a[2][0] + a[0][2] * a[1][0] * a[2][1] - a[0][2] * a[1][1] * a[2][0] - a[0][1] * a[1][0] * a[2][2] - a[0][0] * a[1][2] * a[2][1];
  if (fabs(norm_a) < 1.0E-7)
    HECMW_vis_print_exit("ERROR: HEC-MW-VIS-E2001: There is something wrong with transform "
                         "matrix, invers =0");
  aa[0][0] = a[1][1] * a[2][2] - a[1][2] * a[2][1];
  aa[0][1] = -(a[0][1] * a[2][2] - a[2][1] * a[0][2]);
  aa[0][2] = a[0][1] * a[1][2] - a[1][1] * a[0][2];
  aa[1][0] = -(a[1][0] * a[2][2] - a[2][0] * a[1][2]);
  aa[1][1] = a[0][0] * a[2][2] - a[2][0] * a[0][2];
  aa[1][2] = -(a[0][0] * a[1][2] - a[1][0] * a[0][2]);
  aa[2][0] = a[1][0] * a[2][1] - a[2][0] * a[1][1];
  aa[2][1] = -(a[0][0] * a[2][1] - a[2][0] * a[0][1]);
  aa[2][2] = a[0][0] * a[1][1] - a[1][0] * a[0][1];
  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
      inv_matrix[i][j] = aa[i][j] / norm_a;
  return;
}
```