user: What would the C source look like for the assembly code provided here:

```asm
<nearLine>:
  endbr64
  movapd %xmm1,%xmm9
  movapd %xmm0,%xmm10
  sub    $0x58,%rsp
  subsd  %xmm2,%xmm10
  subsd  %xmm3,%xmm9
  movsd  %xmm4,(%rsp)
  movsd  %xmm1,0x40(%rsp)
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm9,%xmm1
  movapd %xmm10,%xmm0
  movsd  %xmm5,0x8(%rsp)
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm10,0x28(%rsp)
  movsd  %xmm9,0x48(%rsp)
  call   <pythagoras@plt>
  movsd  0x10(%rsp),%xmm6
  movsd  0x40(%rsp),%xmm7
  movsd  %xmm0,0x20(%rsp)
  movapd %xmm7,%xmm1
  movapd %xmm6,%xmm0
  subsd  0x8(%rsp),%xmm1
  movsd  %xmm6,0x18(%rsp)
  subsd  (%rsp),%xmm0
  movsd  %xmm7,0x10(%rsp)
  call   <pythagoras@plt>
  movsd  0x30(%rsp),%xmm2
  movsd  0x38(%rsp),%xmm3
  movsd  (%rsp),%xmm11
  movapd %xmm0,%xmm1
  movsd  0x20(%rsp),%xmm4
  movapd %xmm2,%xmm5
  movapd %xmm3,%xmm0
  subsd  0x8(%rsp),%xmm0
  movsd  D2(%rip),%xmm8
  subsd  %xmm11,%xmm5
  minsd  %xmm4,%xmm1
  movsd  0x10(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm10
  divsd  %xmm5,%xmm0
  movq   D55(%rip),%xmm5
  movapd %xmm1,%xmm4
  movapd %xmm0,%xmm1
  andpd  %xmm5,%xmm1
  comisd %xmm1,%xmm8
  jbe    L57
  comisd %xmm2,%xmm6
  movsd  0x48(%rsp),%xmm9
  ja     L75
  comisd %xmm6,%xmm2
  jbe    L105
L97:
  movsd  (%rsp),%xmm2
  comisd %xmm6,%xmm2
  jbe    L105
L27:
  movapd %xmm4,%xmm0
  add    $0x58,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L75:
  comisd %xmm11,%xmm6
  ja     L27
  comisd %xmm6,%xmm2
  ja     L97
L105:
  movapd %xmm9,%xmm1
  addsd  %xmm7,%xmm1
  subsd  0x8(%rsp),%xmm1
  movapd %xmm1,%xmm4
  andpd  %xmm5,%xmm4
  mulsd  D5(%rip),%xmm4
  add    $0x58,%rsp
  movapd %xmm4,%xmm0
  ret
  nopl   (%rax)
L57:
  comisd D29(%rip),%xmm1
  jbe    L107
  comisd %xmm3,%xmm7
  jbe    L64
  comisd 0x8(%rsp),%xmm7
  ja     L27
L64:
  comisd %xmm7,%xmm3
  jbe    L99
  movsd  0x8(%rsp),%xmm2
  comisd %xmm7,%xmm2
  ja     L27
L99:
  movapd %xmm10,%xmm0
  addsd  %xmm6,%xmm0
  subsd  (%rsp),%xmm0
  movapd %xmm0,%xmm4
  andpd  %xmm5,%xmm4
  mulsd  D5(%rip),%xmm4
  add    $0x58,%rsp
  movapd %xmm4,%xmm0
  ret
  nopl   0x0(%rax)
L107:
  movapd %xmm0,%xmm1
  movapd %xmm3,%xmm9
  movsd  D33(%rip),%xmm8
  movsd  %xmm4,0x18(%rsp)
  mulsd  %xmm0,%xmm1
  subsd  %xmm7,%xmm9
  movsd  %xmm2,0x10(%rsp)
  mulsd  %xmm0,%xmm9
  movapd %xmm1,%xmm5
  addsd  %xmm1,%xmm8
  mulsd  %xmm2,%xmm5
  mulsd  %xmm7,%xmm1
  subsd  %xmm9,%xmm5
  movapd %xmm2,%xmm9
  subsd  %xmm6,%xmm9
  addsd  %xmm6,%xmm5
  mulsd  %xmm9,%xmm0
  divsd  %xmm8,%xmm5
  subsd  %xmm0,%xmm1
  addsd  %xmm3,%xmm1
  divsd  %xmm8,%xmm1
  subsd  %xmm5,%xmm6
  movsd  %xmm5,0x8(%rsp)
  movapd %xmm6,%xmm0
  subsd  %xmm1,%xmm7
  movapd %xmm7,%xmm1
  call   <pythagoras@plt>
  movsd  0x8(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm2
  movsd  0x18(%rsp),%xmm4
  comisd %xmm2,%xmm5
  jbe    L98
  comisd (%rsp),%xmm5
  ja     L27
L98:
  comisd %xmm5,%xmm2
  jbe    L40
  cmpltsd (%rsp),%xmm5
  andpd  %xmm5,%xmm4
  andnpd %xmm0,%xmm5
  orpd   %xmm5,%xmm4
  jmp    L27
  nopw   0x0(%rax,%rax,1)
L40:
  movapd %xmm0,%xmm4
  jmp    L27
```

tool_calls: name: read_data
arguments: data_label: D2
type: byte[8]
name: read_data
arguments: data_label: D55
type: qword
name: read_data
arguments: data_label: D5
type: byte[8]
name: read_data
arguments: data_label: D29
type: byte[16]
name: read_data
arguments: data_label: D33
type: byte[8]

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

tool: D55: 9223372036854775807

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

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

tool: {"D33": [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;
  }
}
```