user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<box_intersect>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xd0,%rsp
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  movsd  %xmm0,-0x98(%rbp)
  movsd  %xmm1,-0xa0(%rbp)
  movsd  %xmm2,-0xa8(%rbp)
  movsd  %xmm3,-0xb0(%rbp)
  movsd  %xmm4,-0xb8(%rbp)
  movsd  %xmm5,-0xc0(%rbp)
  movsd  %xmm6,-0xc8(%rbp)
  movsd  %xmm7,-0xd0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  ucomisd -0xb0(%rbp),%xmm0
  jp     L481
  pxor   %xmm0,%xmm0
  ucomisd -0xb0(%rbp),%xmm0
  je     L476
L481:
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  addsd  -0x98(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  -0xa0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xa8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L489
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L489
  movsd  0x10(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x50(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L489
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x50(%rbp),%xmm0
  jbe    L489
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  jmp    L511
L489:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
L511:
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  subsd  -0x98(%rbp),%xmm0
  divsd  -0xb0(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  -0xa0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xa8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L279
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L279
  movsd  0x10(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x50(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L279
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x50(%rbp),%xmm0
  jbe    L279
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L204
L279:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L204
L476:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
L204:
  pxor   %xmm0,%xmm0
  ucomisd -0xb8(%rbp),%xmm0
  jp     L441
  pxor   %xmm0,%xmm0
  ucomisd -0xb8(%rbp),%xmm0
  je     L520
L441:
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  addsd  -0xa0(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xa8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xc8(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x48(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L483
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x48(%rbp),%xmm0
  jbe    L483
  movsd  0x10(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x50(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L483
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x50(%rbp),%xmm0
  jbe    L483
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L117
L483:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
L117:
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  subsd  -0xa0(%rbp),%xmm0
  divsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xc0(%rbp),%xmm0
  movsd  -0xa8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xc8(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x48(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L452
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x48(%rbp),%xmm0
  jbe    L452
  movsd  0x10(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x50(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L452
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x50(%rbp),%xmm0
  jbe    L452
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L480
L452:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L480
L520:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
L480:
  pxor   %xmm0,%xmm0
  ucomisd -0xc0(%rbp),%xmm0
  jp     L109
  pxor   %xmm0,%xmm0
  ucomisd -0xc0(%rbp),%xmm0
  je     L364
L109:
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  addsd  -0xa8(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0xc0(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  -0xa0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xc8(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x48(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L165
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x48(%rbp),%xmm0
  jbe    L165
  movsd  -0xd0(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L165
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L165
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L168
L165:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L168:
  movsd  0x10(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  subsd  -0xa8(%rbp),%xmm0
  divsd  -0xc0(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb0(%rbp),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  -0xa0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xc8(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x48(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L21
  movsd  -0xc8(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x48(%rbp),%xmm0
  jbe    L21
  movsd  -0xd0(%rbp),%xmm0
  movq   D185(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D301(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L21
  movsd  -0xd0(%rbp),%xmm0
  movsd  D301(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L21
  movsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L210
L21:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L210
L364:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
L210:
  movl   $0x0,-0x74(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0x0,-0x78(%rbp)
  movl   $0x0,-0x7c(%rbp)
  jmp    L412
L366:
  mov    -0x7c(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L453
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L453
  addl   $0x1,-0x74(%rbp)
  jmp    L273
L453:
  cmpl   $0x0,-0x78(%rbp)
  jne    L310
  mov    -0x7c(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0x1,-0x78(%rbp)
  jmp    L273
L310:
  mov    -0x7c(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movl   $0x2,-0x78(%rbp)
L273:
  addl   $0x1,-0x7c(%rbp)
L412:
  cmpl   $0x5,-0x7c(%rbp)
  jle    L366
  pxor   %xmm0,%xmm0
  ucomisd -0x70(%rbp),%xmm0
  jp     L294
  pxor   %xmm0,%xmm0
  ucomisd -0x70(%rbp),%xmm0
  jne    L294
  pxor   %xmm0,%xmm0
  ucomisd -0x68(%rbp),%xmm0
  jp     L294
  pxor   %xmm0,%xmm0
  ucomisd -0x68(%rbp),%xmm0
  jne    L294
  mov    $0x0,%eax
  jmp    L457
L294:
  movsd  -0x68(%rbp),%xmm0
  comisd -0x70(%rbp),%xmm0
  jbe    L292
  mov    -0x88(%rbp),%rax
  movsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    $0x1,%eax
  jmp    L457
L292:
  mov    -0x88(%rbp),%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%rax
  movsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    $0x1,%eax
L457:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L323
  call   <__stack_chk_fail@plt>
L323:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D301
datatype: byte[8]
name: parse_data
arguments: label: D185
datatype: byte[8]

tool: {"D301": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

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

assistant: ```c
int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, double vx, double vy, double vz, double dx, double dy, double dz) {
  double x_in, y_in, z_in, tt, t[6], a, b;
  int i, count, s;
  if (vx != 0) {
    tt = -(dx / 2 + x) / vx;
    y_in = y + tt * vy;
    z_in = z + tt * vz;
    if (y_in > -dy / 2 && y_in < dy / 2 && z_in > -dz / 2 && z_in < dz / 2)
      t[0] = tt;
    else
      t[0] = 0;
    tt = (dx / 2 - x) / vx;
    y_in = y + tt * vy;
    z_in = z + tt * vz;
    if (y_in > -dy / 2 && y_in < dy / 2 && z_in > -dz / 2 && z_in < dz / 2)
      t[1] = tt;
    else
      t[1] = 0;
  } else
    t[0] = t[1] = 0;
  if (vy != 0) {
    tt = -(dy / 2 + y) / vy;
    x_in = x + tt * vx;
    z_in = z + tt * vz;
    if (x_in > -dx / 2 && x_in < dx / 2 && z_in > -dz / 2 && z_in < dz / 2)
      t[2] = tt;
    else
      t[2] = 0;
    tt = (dy / 2 - y) / vy;
    x_in = x + tt * vx;
    z_in = z + tt * vz;
    if (x_in > -dx / 2 && x_in < dx / 2 && z_in > -dz / 2 && z_in < dz / 2)
      t[3] = tt;
    else
      t[3] = 0;
  } else
    t[2] = t[3] = 0;
  if (vz != 0) {
    tt = -(dz / 2 + z) / vz;
    x_in = x + tt * vx;
    y_in = y + tt * vy;
    if (x_in > -dx / 2 && x_in < dx / 2 && y_in > -dy / 2 && y_in < dy / 2)
      t[4] = tt;
    else
      t[4] = 0;
    tt = (dz / 2 - z) / vz;
    x_in = x + tt * vx;
    y_in = y + tt * vy;
    if (x_in > -dx / 2 && x_in < dx / 2 && y_in > -dy / 2 && y_in < dy / 2)
      t[5] = tt;
    else
      t[5] = 0;
  } else
    t[4] = t[5] = 0;
  a = b = s = 0;
  count = 0;
  for (i = 0; i < 6; i = i + 1)
    if (t[i] == 0)
      s = s + 1;
    else if (count == 0) {
      a = t[i];
      count = 1;
    } else {
      b = t[i];
      count = 2;
    }
  if (a == 0 && b == 0)
    return 0;
  else if (a < b) {
    *dt_in = a;
    *dt_out = b;
    return 1;
  } else {
    *dt_in = b;
    *dt_out = a;
    return 1;
  }
}
```