user: Demonstrate the C code that generates the assembly output below:

```asm
<nearLine>:
  endbr64
  push   %rbx
  sub    $0x40,%rsp
  movsd  %xmm4,(%rsp)
  movsd  %xmm5,0x8(%rsp)
  movsd  %xmm1,0x18(%rsp)
  movapd %xmm1,%xmm6
  movsd  %xmm3,0x28(%rsp)
  subsd  %xmm3,%xmm6
  movapd %xmm6,%xmm1
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm0,%xmm6
  movsd  %xmm2,0x20(%rsp)
  subsd  %xmm2,%xmm6
  movsd  %xmm6,0x38(%rsp)
  movapd %xmm6,%xmm0
  call   <pythagoras@plt>
  movq   %xmm0,%rbx
  movsd  0x10(%rsp),%xmm0
  subsd  (%rsp),%xmm0
  movsd  0x18(%rsp),%xmm1
  subsd  0x8(%rsp),%xmm1
  call   <pythagoras@plt>
  movapd %xmm0,%xmm1
  movsd  0x28(%rsp),%xmm3
  subsd  0x8(%rsp),%xmm3
  movapd %xmm3,%xmm0
  movsd  0x20(%rsp),%xmm5
  movapd %xmm5,%xmm2
  movsd  (%rsp),%xmm7
  subsd  %xmm7,%xmm2
  divsd  %xmm2,%xmm0
  movq   %rbx,%xmm4
  minsd  %xmm4,%xmm1
  movq   %xmm1,%rbx
  movapd %xmm0,%xmm1
  andpd  D71(%rip),%xmm1
  movsd  D57(%rip),%xmm2
  comisd %xmm1,%xmm2
  jbe    L84
  movsd  0x10(%rsp),%xmm0
  comisd %xmm5,%xmm0
  jbe    L76
  comisd %xmm7,%xmm0
  ja     L80
L76:
  movsd  0x20(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm6
  comisd %xmm6,%xmm5
  jbe    L110
  movsd  (%rsp),%xmm4
  comisd %xmm6,%xmm4
  ja     L80
L110:
  movsd  0x30(%rsp),%xmm0
  addsd  0x18(%rsp),%xmm0
  subsd  0x8(%rsp),%xmm0
  andpd  D71(%rip),%xmm0
  mulsd  D38(%rip),%xmm0
  movq   %xmm0,%rbx
L80:
  movq   %rbx,%xmm0
  add    $0x40,%rsp
  pop    %rbx
  ret
L84:
  comisd D52(%rip),%xmm1
  jbe    L156
  movsd  0x18(%rsp),%xmm5
  comisd 0x28(%rsp),%xmm5
  jbe    L115
  comisd 0x8(%rsp),%xmm5
  ja     L80
L115:
  movsd  0x28(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm4
  comisd %xmm4,%xmm5
  jbe    L36
  movsd  0x8(%rsp),%xmm6
  comisd %xmm4,%xmm6
  ja     L80
L36:
  movsd  0x38(%rsp),%xmm0
  addsd  0x10(%rsp),%xmm0
  subsd  (%rsp),%xmm0
  andpd  D71(%rip),%xmm0
  mulsd  D38(%rip),%xmm0
  movq   %xmm0,%rbx
  jmp    L80
L156:
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movapd %xmm1,%xmm4
  addsd  D16(%rip),%xmm4
  movsd  0x20(%rsp),%xmm5
  movapd %xmm5,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  0x28(%rsp),%xmm8
  movapd %xmm8,%xmm3
  movsd  0x18(%rsp),%xmm7
  subsd  %xmm7,%xmm3
  mulsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm2
  movsd  0x10(%rsp),%xmm3
  addsd  %xmm3,%xmm2
  movapd %xmm2,%xmm6
  divsd  %xmm4,%xmm6
  mulsd  %xmm7,%xmm1
  movapd %xmm5,%xmm2
  subsd  %xmm3,%xmm2
  mulsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  addsd  %xmm8,%xmm1
  divsd  %xmm4,%xmm1
  movsd  %xmm6,0x8(%rsp)
  subsd  %xmm6,%xmm3
  movapd %xmm3,%xmm0
  subsd  %xmm1,%xmm7
  movapd %xmm7,%xmm1
  call   <pythagoras@plt>
  movsd  0x8(%rsp),%xmm6
  comisd 0x20(%rsp),%xmm6
  jbe    L158
  comisd (%rsp),%xmm6
  ja     L80
L158:
  movsd  0x20(%rsp),%xmm5
  movsd  0x8(%rsp),%xmm1
  comisd %xmm1,%xmm5
  jbe    L35
  cmpltsd (%rsp),%xmm1
  movq   %rbx,%xmm2
  andpd  %xmm1,%xmm2
  andnpd %xmm0,%xmm1
  orpd   %xmm2,%xmm1
  movq   %xmm1,%rbx
  jmp    L80
L35:
  movq   %xmm0,%rbx
  jmp    L80
```

tool_calls: name: retrieve_data
arguments: data_tag: D71
type_infered: qword[2]
name: retrieve_data
arguments: data_tag: D57
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D38
type_infered: byte[8]
name: retrieve_data
arguments: data_tag: D52
type_infered: byte[16]
name: retrieve_data
arguments: data_tag: D16
type_infered: byte[8]

tool: {"D71": [0x7fffffffffffffff,0x0000000000000000]}

tool: {"D57": [0x8d,0xed,0xb5,0xa0,0xf7,0xc6,0xb0,0x3e]}

tool: {"D38": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D52": [0x00,0x00,0x00,0x00,0x80,0x84,0x2e,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D16": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

assistant: ```c
double nearLine(double x, double y, double x1, double y1, double x2, double y2) {
  double d1 = pythagoras(x - x1, y - y1), d2 = pythagoras(x - x2, y - y2), d3, distance = d1, slope = (y1 - y2) / (x1 - x2), x3, y3;
  if (d2 < d1)
    distance = d2;
  if (fabs(slope) < 1.0e-6) {
    if (((x > x1) && (x > x2)) || ((x < x1) && (x < x2)))
      return distance;
    else
      return fabs(y - y1 + y - y2) / 2.0;
  } else if (fabs(slope) > (1 / 1.0e-6)) {
    if (((y > y1) && (y > y2)) || ((y < y1) && (y < y2)))
      return distance;
    else
      return fabs(x - x1 + x - x2) / 2.0;
  } else {
    x3 = (slope * slope * x1 - slope * (y1 - y) + x) / (slope * slope + 1);
    y3 = (slope * slope * y - slope * (x1 - x) + y1) / (slope * slope + 1);
    d3 = pythagoras(x - x3, y - y3);
    if (((x3 > x1) && (x3 > x2)) || ((x3 < x1) && (x3 < x2)))
      return distance;
    else
      return d3;
  }
}
```