user: 这段汇编代码用C语言表示是什么样的？

```asm
<plotRotatedEllipseRect>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %edi,%ebx
  mov    %esi,%ebp
  mov    %edx,%r12d
  mov    %ecx,%r13d
  mov    %edx,%r15d
  sub    %edi,%r15d
  mov    %ecx,%r14d
  sub    %esi,%r14d
  movslq %r15d,%rax
  movslq %r14d,%rdx
  imul   %rdx,%rax
  pxor   %xmm5,%xmm5
  cvtsi2ss %rax,%xmm5
  movss  %xmm5,(%rsp)
  test   %r8,%r8
  je     L37
  movss  (%rsp),%xmm4
  ucomiss D23(%rip),%xmm4
  jp     L67
  jne    L67
  mov    $0x1,%edi
  movss  D67(%rip),%xmm0
  comiss (%rsp),%xmm0
  jb     L54
  jmp    L77
L37:
  mov    %r12d,%edx
  call   <plotEllipseRect@plt>
  jmp    L36
L67:
  pxor   %xmm0,%xmm0
  cvtsi2ss %r8,%xmm0
  movss  (%rsp),%xmm3
  movaps %xmm3,%xmm1
  subss  %xmm0,%xmm1
  movaps %xmm3,%xmm0
  addss  %xmm3,%xmm0
  divss  %xmm0,%xmm1
  movss  %xmm1,(%rsp)
  movss  D67(%rip),%xmm0
  comiss %xmm1,%xmm0
  jae    L68
L54:
  mov    $0x0,%edi
L77:
  call   <assert@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %r15d,%xmm0
  mulss  (%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D23(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <floor@plt>
  mov    %eax,%r15d
  pxor   %xmm0,%xmm0
  cvtsi2ss %r14d,%xmm0
  mulss  (%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D23(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <floor@plt>
  movss  D67(%rip),%xmm0
  subss  (%rsp),%xmm0
  movss  %xmm0,0x4(%rsp)
  mov    %r15d,0x8(%rsp)
  lea    (%rbx,%r15,1),%r14d
  mov    %eax,0xc(%rsp)
  lea    0x0(%rbp,%rax,1),%r15d
  mov    %ebp,%r9d
  mov    %r14d,%r8d
  mov    %ebp,%ecx
  mov    %ebx,%edx
  mov    %r15d,%esi
  mov    %ebx,%edi
  call   <plotQuadRationalBezierSeg@plt>
  mov    %r12d,%eax
  sub    0x8(%rsp),%eax
  movss  (%rsp),%xmm0
  mov    %r13d,%r9d
  mov    %eax,0x8(%rsp)
  mov    %eax,%r8d
  mov    %r13d,%ecx
  mov    %ebx,%edx
  mov    %r15d,%esi
  mov    %ebx,%edi
  call   <plotQuadRationalBezierSeg@plt>
  mov    %r13d,%ebx
  sub    0xc(%rsp),%ebx
  movss  0x4(%rsp),%xmm0
  mov    %r13d,%r9d
  mov    0x8(%rsp),%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %r12d,%edi
  call   <plotQuadRationalBezierSeg@plt>
  movss  (%rsp),%xmm0
  mov    %ebp,%r9d
  mov    %r14d,%r8d
  mov    %ebp,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %r12d,%edi
  call   <plotQuadRationalBezierSeg@plt>
L36:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L68:
  comiss D23(%rip),%xmm1
  jb     L54
  mov    $0x1,%edi
  jmp    L77
```

tool_calls: name: retrieve_data
arguments: tag: D23
type: f64
name: retrieve_data
arguments: tag: D67
type: f32

tool: D23: 0.5

tool: D67: 1

assistant: ```c
void plotRotatedEllipseRect(int x0, int y0, int x1, int y1, long zd) {
  int xd = x1 - x0, yd = y1 - y0;
  float w = xd * (long)yd;
  if (zd == 0)
    return plotEllipseRect(x0, y0, x1, y1);
  if (w != 0.0)
    w = (w - zd) / (w + w);
  assert(w <= 1.0 && w >= 0.0);
  xd = floor(xd * w + 0.5);
  yd = floor(yd * w + 0.5);
  plotQuadRationalBezierSeg(x0, y0 + yd, x0, y0, x0 + xd, y0, 1.0 - w);
  plotQuadRationalBezierSeg(x0, y0 + yd, x0, y1, x1 - xd, y1, w);
  plotQuadRationalBezierSeg(x1, y1 - yd, x1, y1, x1 - xd, y1, 1.0 - w);
  plotQuadRationalBezierSeg(x1, y1 - yd, x1, y0, x0 + xd, y0, w);
}
```