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

```asm
<__intersects_no_norm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x18,%rsp
  movsd  %xmm0,-0x48(%rbp)
  movsd  %xmm1,-0x50(%rbp)
  movsd  %xmm2,-0x58(%rbp)
  movsd  %xmm3,-0x60(%rbp)
  movsd  %xmm4,-0x68(%rbp)
  movsd  %xmm5,-0x70(%rbp)
  movsd  %xmm6,-0x78(%rbp)
  movsd  %xmm7,-0x80(%rbp)
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  movsd  -0x60(%rbp),%xmm0
  subsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x80(%rbp),%xmm0
  subsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x78(%rbp),%xmm0
  subsd  -0x68(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  subsd  -0x48(%rbp),%xmm1
  mulsd  -0x30(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0x28(%rbp),%xmm0
  jp     L55
  pxor   %xmm0,%xmm0
  ucomisd -0x28(%rbp),%xmm0
  jne    L55
  movsd  D5(%rip),%xmm0
  jmp    L68
L55:
  movsd  -0x50(%rbp),%xmm0
  subsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x48(%rbp),%xmm0
  subsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x30(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x78(%rbp),%xmm1
  subsd  -0x68(%rbp),%xmm1
  mulsd  -0x20(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  ja     L65
  movsd  -0x10(%rbp),%xmm0
  movsd  D22(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L85
L65:
  movsd  D5(%rip),%xmm0
  jmp    L68
L85:
  movsd  -0x38(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  -0x58(%rbp),%xmm1
  subsd  -0x48(%rbp),%xmm1
  mulsd  -0x20(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  divsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L74
  movsd  D22(%rip),%xmm0
  comisd -0x8(%rbp),%xmm0
  jb     L74
  movsd  -0x60(%rbp),%xmm0
  subsd  -0x50(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x50(%rbp),%xmm0
  mov    -0x90(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x58(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x48(%rbp),%xmm0
  mov    -0x88(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  jmp    L68
L74:
  movsd  D5(%rip),%xmm0
L68:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D5
type_infered: f32[2]
name: parse_data
arguments: data_tag: D22
type_infered: f64

tool: {"D5": [0.0,-1.875]}

tool: D22: 1

assistant: ```c
double __intersects_no_norm(double latitude, double longitude, double new_latitude, double new_longitude, double seg_a_latitude, double seg_a_longitude, double seg_b_latitude, double seg_b_longitude, double *inter_latitude, double *inter_longitude) {
  double x, y, x1, x2, t, t_seg, d;
  x1 = (new_longitude - longitude);
  x2 = (seg_b_longitude - seg_a_longitude);
  d = ((seg_b_latitude - seg_a_latitude) * x1 - x2 * (new_latitude - latitude));
  if (d == 0.0) {
    return -1;
  }
  x = (longitude - seg_a_longitude);
  y = (latitude - seg_a_latitude);
  t = (x2 * y - (seg_b_latitude - seg_a_latitude) * x) / d;
  if (t < 0.0 || t > 1.0) {
    return -1;
  }
  t_seg = (x1 * y - (new_latitude - latitude) * x) / d;
  if (t_seg >= 0.0 && t_seg <= 1.0) {
    *inter_longitude = longitude + t * (new_longitude - longitude);
    *inter_latitude = latitude + t * (new_latitude - latitude);
    return t;
  }
  return -1;
}
```