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

```asm
<range>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x150,%rsp
  movsd  %xmm0,-0x138(%rbp)
  movsd  %xmm1,-0x140(%rbp)
  movsd  %xmm2,-0x148(%rbp)
  mov    %rdi,-0x150(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L134
L123:
  movb   $0x66,-0x121(%rbp)
  jmp    L0
L105:
  lea    -0x11c(%rbp),%rcx
  lea    -0x120(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  lea    D20(%rip),%rsi
  mov    %rax,%rdi
  call   <sscanf@plt>
  movss  -0x11c(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x140(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsd2ss %xmm0,%xmm2
  movss  -0x120(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x138(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  pxor   %xmm6,%xmm6
  cvtsd2ss %xmm0,%xmm6
  movd   %xmm6,%eax
  movaps %xmm2,%xmm1
  movd   %eax,%xmm0
  call   <pythagoras@plt>
  movsd  -0x148(%rbp),%xmm1
  comisd %xmm0,%xmm1
  jb     L129
  mov    $0x0,%eax
  jmp    L5
L129:
  cmpb   $0x74,-0x121(%rbp)
  jne    L106
  movss  -0x11c(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x114(%rbp),%xmm1
  movss  -0x120(%rbp),%xmm0
  subss  -0x118(%rbp),%xmm0
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  call   <pythagoras@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm7
  comisd D11(%rip),%xmm7
  ja     L92
  jmp    L0
L92:
  movss  -0x11c(%rbp),%xmm2
  movss  -0x120(%rbp),%xmm1
  movss  -0x114(%rbp),%xmm4
  movss  -0x118(%rbp),%xmm3
  movsd  -0x140(%rbp),%xmm0
  mov    -0x138(%rbp),%rax
  movaps %xmm4,%xmm5
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <nearLine@plt>
  movsd  -0x148(%rbp),%xmm1
  comisd %xmm0,%xmm1
  jae    L50
  jmp    L0
L50:
  mov    $0x0,%eax
  jmp    L5
L106:
  movss  -0x120(%rbp),%xmm0
  movss  %xmm0,-0x118(%rbp)
  movss  -0x11c(%rbp),%xmm0
  movss  %xmm0,-0x114(%rbp)
  movb   $0x74,-0x121(%rbp)
L0:
  mov    -0x150(%rbp),%rdx
  lea    -0x110(%rbp),%rax
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  je     L134
  lea    -0x110(%rbp),%rax
  lea    D0(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L105
L134:
  mov    -0x150(%rbp),%rax
  mov    %rax,%rdi
  call   <feof@plt>
  test   %eax,%eax
  je     L123
  mov    $0x1,%eax
L5:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L57
  call   <__stack_chk_fail@plt>
L57:
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D20
type_infered: string
name: read_data
arguments: tag: D11
type_infered: f64
name: read_data
arguments: tag: D0
type_infered: string

tool: D20: %f %f

tool: D11: 0.01

tool: D0: front


assistant: ```c
int range(double lat, double lon, double d, FILE *in) {
  float newLat, newLon, oldLat, oldLon;
  char line[256], oldValid;
  while (!feof(in)) {
    oldValid = 'f';
    while ((fgets(line, 256, in) != NULL) && (strcmp(line, "front\n"))) {
      (void)sscanf(line, "%f %f", &newLat, &newLon);
      if (pythagoras(lat - newLat, lon - newLon) <= d)
        return 0;
      if (oldValid == 't') {
        if (pythagoras(newLat - oldLat, newLon - oldLon) > 0.01) {
          if (nearLine(lat, lon, newLat, newLon, oldLat, oldLon) <= d)
            return 0;
        }
      } else {
        oldLat = newLat;
        oldLon = newLon;
        oldValid = 't';
      }
    }
  }
  return 1;
}
```