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

```asm
<plotEllipseRect>:
  endbr64
  push   %r15
  mov    %edx,%r15d
  push   %r14
  push   %r13
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %edi,%ebp
  mov    %edx,%edi
  push   %rbx
  sub    %ebp,%edi
  mov    %ecx,%ebx
  sub    $0x28,%rsp
  call   <abs@plt>
  mov    %ebx,%edi
  sub    %r12d,%edi
  mov    %rax,%r14
  call   <abs@plt>
  pxor   %xmm2,%xmm2
  pxor   %xmm0,%xmm0
  movsd  D19(%rip),%xmm1
  cvtsi2sd %r14,%xmm2
  mov    %rax,%rcx
  mov    %rax,%r13
  cvtsi2sd %rax,%xmm0
  and    $0x1,%ecx
  lea    0x1(%rcx),%rax
  imul   %r14,%rax
  subsd  %xmm2,%xmm1
  mulsd  D9(%rip),%xmm1
  pxor   %xmm2,%xmm2
  mov    %rax,%rsi
  sub    %r14,%rax
  imul   %r14,%rsi
  imul   %r14,%rax
  mulsd  %xmm0,%xmm1
  shl    $0x2,%rsi
  cvtsi2sd %rsi,%xmm2
  mulsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movapd %xmm1,%xmm3
  addsd  %xmm2,%xmm3
  addsd  %xmm3,%xmm0
  cmp    %ebp,%r15d
  jge    L9
  mov    %r15d,%ebp
  add    %r14d,%r15d
L9:
  lea    0x1(%r13),%rsi
  mov    %rsi,%rax
  shr    $0x3f,%rax
  add    %rsi,%rax
  sar    %rax
  cmp    %r12d,%ebx
  cmovg  %r12d,%ebx
  imul   %r14,%r14
  add    %eax,%ebx
  lea    0x0(,%r14,8),%rax
  mov    %ebx,%r12d
  mov    %rax,0x18(%rsp)
  mov    %r13,%rax
  sub    %ecx,%r12d
  imul   %r13,%rax
  lea    0x0(,%rax,8),%r14
  nopl   0x0(%rax)
L40:
  mov    %ebx,%esi
  mov    %r15d,%edi
  movsd  %xmm1,(%rsp)
  movsd  %xmm0,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <setPixel@plt>
  mov    %ebx,%esi
  mov    %ebp,%edi
  call   <setPixel@plt>
  mov    %r12d,%esi
  mov    %ebp,%edi
  call   <setPixel@plt>
  mov    %r12d,%esi
  mov    %r15d,%edi
  call   <setPixel@plt>
  movsd  0x10(%rsp),%xmm0
  movsd  0x8(%rsp),%xmm2
  movsd  (%rsp),%xmm1
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  comisd %xmm3,%xmm2
  jb     L37
  pxor   %xmm4,%xmm4
  add    $0x1,%ebx
  sub    $0x1,%r12d
  cvtsi2sdq 0x18(%rsp),%xmm4
  addsd  %xmm4,%xmm2
  addsd  %xmm2,%xmm0
L37:
  comisd %xmm1,%xmm3
  jae    L19
  movapd %xmm0,%xmm3
  addsd  %xmm0,%xmm3
  comisd %xmm2,%xmm3
  jbe    L51
L19:
  pxor   %xmm3,%xmm3
  add    $0x1,%ebp
  sub    $0x1,%r15d
  cvtsi2sd %r14,%xmm3
  addsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
L51:
  cmp    %r15d,%ebp
  jle    L40
  mov    %ebx,%eax
  sub    %r12d,%eax
  cltq
  cmp    %rax,%r13
  jl     L32
  movslq %r12d,%rax
  lea    0x1(%r15),%r14d
  movslq %ebx,%r15
  sub    $0x1,%ebp
  sub    %rax,%r15
  lea    (%rbx,%r12,1),%eax
  mov    %eax,(%rsp)
  nopw   0x0(%rax,%rax,1)
L0:
  mov    (%rsp),%r12d
  mov    %ebx,%esi
  mov    %ebp,%edi
  add    $0x2,%r15
  call   <setPixel@plt>
  mov    %ebx,%esi
  mov    %r14d,%edi
  call   <setPixel@plt>
  sub    %ebx,%r12d
  mov    %ebp,%edi
  add    $0x1,%ebx
  mov    %r12d,%esi
  call   <setPixel@plt>
  mov    %r12d,%esi
  mov    %r14d,%edi
  call   <setPixel@plt>
  cmp    %r13,%r15
  jle    L0
L32:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D19
type_infered: f64
name: extract_symbolic_data
arguments: label: D9
type_infered: f64

tool: D19: 1

tool: D9: 4

assistant: ```c
void plotEllipseRect(int x0, int y0, int x1, int y1) {
  long a = abs(x1 - x0), b = abs(y1 - y0), b1 = b & 1;
  double dx = 4 * (1.0 - a) * b * b, dy = 4 * (b1 + 1) * a * a;
  double err = dx + dy + b1 * a * a, e2;
  if (x0 > x1) {
    x0 = x1;
    x1 += a;
  }
  if (y0 > y1)
    y0 = y1;
  y0 += (b + 1) / 2;
  y1 = y0 - b1;
  a = 8 * a * a;
  b1 = 8 * b * b;
  do {
    setPixel(x1, y0);
    setPixel(x0, y0);
    setPixel(x0, y1);
    setPixel(x1, y1);
    e2 = 2 * err;
    if (e2 <= dy) {
      y0++;
      y1--;
      err += dy += a;
    }
    if (e2 >= dx || 2 * err > dy) {
      x0++;
      x1--;
      err += dx += b1;
    }
  } while (x0 <= x1);
  while (y0 - y1 <= b) {
    setPixel(x0 - 1, y0);
    setPixel(x1 + 1, y0++);
    setPixel(x0 - 1, y1);
    setPixel(x1 + 1, y1--);
  }
}
```