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

```asm
<plot_arrow>:
  endbr64
  push   %r15
  push   %r14
  push   %rbx
  sub    $0x10,%rsp
  movapd %xmm0,%xmm5
  addsd  %xmm2,%xmm5
  movsd  D47(%rip),%xmm4
  mulsd  %xmm4,%xmm5
  movsd  %xmm5,(%rsp)
  movapd %xmm1,%xmm5
  addsd  %xmm3,%xmm5
  mulsd  %xmm4,%xmm5
  movsd  %xmm5,0x8(%rsp)
  ucomisd %xmm2,%xmm0
  jp     L54
  jne    L54
  movapd %xmm1,%xmm4
  subsd  %xmm3,%xmm4
  andpd  D129(%rip),%xmm4
  comisd D139(%rip),%xmm4
  jbe    L34
  comisd %xmm1,%xmm3
  ja     L40
L29:
  comisd %xmm3,%xmm1
  jbe    L54
  movsd  D139(%rip),%xmm3
  movsd  0x8(%rsp),%xmm4
  addsd  %xmm4,%xmm3
  movq   %xmm3,%rbx
  movsd  (%rsp),%xmm6
  movapd %xmm6,%xmm7
  subsd  D139(%rip),%xmm7
  movq   %xmm7,%r14
  mov    $0x1,%edi
  movapd %xmm7,%xmm2
  movapd %xmm4,%xmm1
  movapd %xmm6,%xmm0
  call   <plot_line@plt>
  movsd  D139(%rip),%xmm7
  movsd  (%rsp),%xmm0
  addsd  %xmm0,%xmm7
  movq   %xmm7,%r15
  mov    $0x1,%edi
  movq   %rbx,%xmm3
  movapd %xmm7,%xmm2
  movsd  0x8(%rsp),%xmm1
  call   <plot_line@plt>
  mov    $0x1,%edi
  movq   %rbx,%xmm3
  movq   %r15,%xmm2
  movq   %rbx,%xmm1
  movq   %r14,%xmm0
  call   <plot_line@plt>
  jmp    L112
L40:
  movapd %xmm5,%xmm3
  subsd  D139(%rip),%xmm3
  movq   %xmm3,%rbx
  movsd  (%rsp),%xmm6
  movapd %xmm6,%xmm7
  subsd  D139(%rip),%xmm7
  movq   %xmm7,%r14
  mov    $0x1,%edi
  movapd %xmm7,%xmm2
  movapd %xmm5,%xmm1
  movapd %xmm6,%xmm0
  call   <plot_line@plt>
  movsd  D139(%rip),%xmm7
  movsd  (%rsp),%xmm0
  addsd  %xmm0,%xmm7
  movq   %xmm7,%r15
  mov    $0x1,%edi
  movq   %rbx,%xmm3
  movapd %xmm7,%xmm2
  movsd  0x8(%rsp),%xmm1
  call   <plot_line@plt>
  mov    $0x1,%edi
  movq   %rbx,%xmm3
  movq   %r15,%xmm2
  movq   %rbx,%xmm1
  movq   %r14,%xmm0
  call   <plot_line@plt>
  jmp    L112
L34:
  comisd D139(%rip),%xmm4
  ja     L29
L54:
  ucomisd %xmm3,%xmm1
  jp     L112
  jne    L112
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  andpd  D129(%rip),%xmm1
  comisd D139(%rip),%xmm1
  jbe    L9
  comisd %xmm0,%xmm2
  ja     L33
L52:
  comisd %xmm2,%xmm0
  jbe    L112
  movsd  0x8(%rsp),%xmm6
  movapd %xmm6,%xmm3
  subsd  D139(%rip),%xmm3
  movq   %xmm3,%r14
  movsd  D139(%rip),%xmm7
  movsd  (%rsp),%xmm4
  addsd  %xmm4,%xmm7
  movq   %xmm7,%rbx
  mov    $0x1,%edi
  movapd %xmm7,%xmm2
  movapd %xmm6,%xmm1
  movapd %xmm4,%xmm0
  call   <plot_line@plt>
  movsd  D139(%rip),%xmm7
  movsd  0x8(%rsp),%xmm1
  addsd  %xmm1,%xmm7
  movq   %xmm7,%r15
  mov    $0x1,%edi
  movapd %xmm7,%xmm3
  movq   %rbx,%xmm2
  movsd  (%rsp),%xmm0
  call   <plot_line@plt>
  mov    $0x1,%edi
  movq   %r15,%xmm3
  movq   %rbx,%xmm2
  movq   %r14,%xmm1
  movq   %rbx,%xmm0
  call   <plot_line@plt>
  jmp    L112
L33:
  movsd  0x8(%rsp),%xmm6
  movapd %xmm6,%xmm3
  subsd  D139(%rip),%xmm3
  movq   %xmm3,%r14
  movsd  (%rsp),%xmm7
  movapd %xmm7,%xmm4
  subsd  D139(%rip),%xmm4
  movq   %xmm4,%rbx
  mov    $0x1,%edi
  movapd %xmm4,%xmm2
  movapd %xmm6,%xmm1
  movapd %xmm7,%xmm0
  call   <plot_line@plt>
  movsd  D139(%rip),%xmm4
  movsd  0x8(%rsp),%xmm1
  addsd  %xmm1,%xmm4
  movq   %xmm4,%r15
  mov    $0x1,%edi
  movapd %xmm4,%xmm3
  movq   %rbx,%xmm2
  movsd  (%rsp),%xmm0
  call   <plot_line@plt>
  mov    $0x1,%edi
  movq   %r15,%xmm3
  movq   %rbx,%xmm2
  movq   %r14,%xmm1
  movq   %rbx,%xmm0
  call   <plot_line@plt>
  jmp    L112
L9:
  comisd D139(%rip),%xmm1
  ja     L52
L112:
  add    $0x10,%rsp
  pop    %rbx
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: tag: D47
type_guessed: byte[8]
name: read_data
arguments: tag: D129
type_guessed: qword[2]
name: read_data
arguments: tag: D139
type_guessed: f64[2]

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

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

tool: {"D139": [0.01,null]}

assistant: ```c
void plot_arrow(double x1, double y1, double x2, double y2) {
  double xm, ym, off;
  off = 0.01;
  xm = (x1 + x2) / 2.0;
  ym = (y1 + y2) / 2.0;
  if (x1 == x2 && fabs(y1 - y2) > off && y2 > y1) {
    plot_line(xm, ym, xm - off, ym - off, 1);
    plot_line(xm, ym, xm + off, ym - off, 1);
    plot_line(xm - off, ym - off, xm + off, ym - off, 1);
  } else if (x1 == x2 && fabs(y1 - y2) > off && y1 > y2) {
    plot_line(xm, ym, xm - off, ym + off, 1);
    plot_line(xm, ym, xm + off, ym + off, 1);
    plot_line(xm - off, ym + off, xm + off, ym + off, 1);
  } else if (y1 == y2 && fabs(x1 - x2) > off && x2 > x1) {
    plot_line(xm, ym, xm - off, ym - off, 1);
    plot_line(xm, ym, xm - off, ym + off, 1);
    plot_line(xm - off, ym - off, xm - off, ym + off, 1);
  } else if (y1 == y2 && fabs(x1 - x2) > off && x1 > x2) {
    plot_line(xm, ym, xm + off, ym - off, 1);
    plot_line(xm, ym, xm + off, ym + off, 1);
    plot_line(xm + off, ym - off, xm + off, ym + off, 1);
  }
}
```