user: 请将以下的汇编代码转换成C语言代码:

```asm
<coplanar_tri_tri3d>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8,-0x78(%rbp)
  mov    %r9,-0x80(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comiss %xmm1,%xmm0
  jbe    L15
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  movss  D22(%rip),%xmm1
  xorps  %xmm1,%xmm0
  jmp    L32
L15:
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
L32:
  movss  %xmm0,-0x44(%rbp)
  mov    -0x88(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comiss %xmm1,%xmm0
  jbe    L92
  mov    -0x88(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  movss  D22(%rip),%xmm1
  xorps  %xmm1,%xmm0
  jmp    L83
L92:
  mov    -0x88(%rbp),%rax
  movss  0x4(%rax),%xmm0
L83:
  movss  %xmm0,-0x40(%rbp)
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comiss %xmm1,%xmm0
  jbe    L16
  mov    -0x88(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  movss  D22(%rip),%xmm1
  xorps  %xmm1,%xmm0
  jmp    L13
L16:
  mov    -0x88(%rbp),%rax
  movss  0x8(%rax),%xmm0
L13:
  movss  %xmm0,-0x3c(%rbp)
  movss  -0x44(%rbp),%xmm0
  comiss -0x3c(%rbp),%xmm0
  jbe    L10
  movss  -0x44(%rbp),%xmm0
  comiss -0x40(%rbp),%xmm0
  jb     L10
  mov    -0x60(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  mov    -0x60(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x34(%rbp)
  mov    -0x58(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x68(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x68(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x24(%rbp)
  mov    -0x78(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x78(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x70(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    -0x70(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x80(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x80(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L80
L10:
  movss  -0x40(%rbp),%xmm0
  comiss -0x3c(%rbp),%xmm0
  jbe    L26
  movss  -0x40(%rbp),%xmm0
  comiss -0x44(%rbp),%xmm0
  jb     L26
  mov    -0x60(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  mov    -0x60(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x34(%rbp)
  mov    -0x58(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x68(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x68(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x24(%rbp)
  mov    -0x78(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x78(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x70(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    -0x70(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x80(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x80(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0xc(%rbp)
  jmp    L80
L26:
  mov    -0x58(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  mov    -0x58(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x34(%rbp)
  mov    -0x60(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x30(%rbp)
  mov    -0x60(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x68(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x68(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x24(%rbp)
  mov    -0x70(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x70(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x78(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    -0x78(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x80(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x80(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0xc(%rbp)
L80:
  lea    -0x10(%rbp),%r8
  lea    -0x18(%rbp),%rdi
  lea    -0x20(%rbp),%rcx
  lea    -0x28(%rbp),%rdx
  lea    -0x30(%rbp),%rsi
  lea    -0x38(%rbp),%rax
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <tri_tri_overlap_test_2d@plt>
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L126
  call   <__stack_chk_fail@plt>
L126:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D22
datatype: byte[4]

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

assistant: ```c
int coplanar_tri_tri3d(float p1[3], float q1[3], float r1[3], float p2[3], float q2[3], float r2[3], float normal_1[3], float normal_2[3]) {
  float P1[2], Q1[2], R1[2];
  float P2[2], Q2[2], R2[2];
  float n_x, n_y, n_z;
  n_x = ((normal_1[0] < 0) ? -normal_1[0] : normal_1[0]);
  n_y = ((normal_1[1] < 0) ? -normal_1[1] : normal_1[1]);
  n_z = ((normal_1[2] < 0) ? -normal_1[2] : normal_1[2]);
  if ((n_x > n_z) && (n_x >= n_y)) {
    P1[0] = q1[2];
    P1[1] = q1[1];
    Q1[0] = p1[2];
    Q1[1] = p1[1];
    R1[0] = r1[2];
    R1[1] = r1[1];
    P2[0] = q2[2];
    P2[1] = q2[1];
    Q2[0] = p2[2];
    Q2[1] = p2[1];
    R2[0] = r2[2];
    R2[1] = r2[1];
  } else if ((n_y > n_z) && (n_y >= n_x)) {
    P1[0] = q1[0];
    P1[1] = q1[2];
    Q1[0] = p1[0];
    Q1[1] = p1[2];
    R1[0] = r1[0];
    R1[1] = r1[2];
    P2[0] = q2[0];
    P2[1] = q2[2];
    Q2[0] = p2[0];
    Q2[1] = p2[2];
    R2[0] = r2[0];
    R2[1] = r2[2];
  } else {
    P1[0] = p1[0];
    P1[1] = p1[1];
    Q1[0] = q1[0];
    Q1[1] = q1[1];
    R1[0] = r1[0];
    R1[1] = r1[1];
    P2[0] = p2[0];
    P2[1] = p2[1];
    Q2[0] = q2[0];
    Q2[1] = q2[1];
    R2[0] = r2[0];
    R2[1] = r2[1];
  }
  return tri_tri_overlap_test_2d(P1, Q1, R1, P2, Q2, R2);
}
```