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

```asm
<calc_arc>:
  endbr64
  movapd %xmm2,%xmm12
  movapd %xmm3,%xmm9
  movapd %xmm4,%xmm10
  sub    $0x88,%rsp
  subsd  %xmm0,%xmm12
  subsd  %xmm1,%xmm9
  movapd %xmm5,%xmm7
  movq   D211(%rip),%xmm14
  subsd  %xmm0,%xmm10
  subsd  %xmm1,%xmm7
  movapd %xmm2,%xmm15
  movsd  D27(%rip),%xmm13
  addsd  %xmm0,%xmm15
  movapd %xmm0,%xmm6
  movapd %xmm3,%xmm11
  movapd %xmm12,%xmm8
  movapd %xmm9,%xmm0
  addsd  %xmm1,%xmm11
  mulsd  %xmm10,%xmm0
  mulsd  %xmm7,%xmm8
  subsd  %xmm0,%xmm8
  mulsd  D291(%rip),%xmm8
  movapd %xmm8,%xmm0
  andpd  %xmm14,%xmm0
  comisd %xmm13,%xmm0
  ja     L152
  andpd  %xmm14,%xmm10
  comisd %xmm10,%xmm13
  ja     L91
L49:
  mov    D42(%rip),%rax
  mov    %rax,(%rdi)
  movsd  %xmm6,(%rsi)
  movsd  %xmm1,(%rdx)
  movsd  %xmm4,(%rcx)
  movsd  %xmm5,(%r8)
L348:
  add    $0x88,%rsp
  ret
  nopl   0x0(%rax)
L91:
  andpd  %xmm14,%xmm7
  comisd %xmm7,%xmm13
  jbe    L49
  mulsd  %xmm12,%xmm12
  pxor   %xmm8,%xmm8
  mulsd  %xmm9,%xmm9
  addsd  %xmm9,%xmm12
  ucomisd %xmm12,%xmm8
  ja     L243
  sqrtsd %xmm12,%xmm12
L307:
  movsd  D64(%rip),%xmm0
  mulsd  %xmm0,%xmm12
  comisd %xmm12,%xmm13
  movsd  %xmm12,(%rdi)
  jbe    L172
  subsd  %xmm13,%xmm6
  subsd  %xmm13,%xmm1
  mov    D42(%rip),%rax
  addsd  %xmm13,%xmm4
  addsd  %xmm13,%xmm5
  mov    %rax,(%rdi)
  movsd  %xmm6,(%rsi)
  movsd  %xmm1,(%rdx)
  movsd  %xmm4,(%rcx)
  movsd  %xmm5,(%r8)
  jmp    L348
  nopl   0x0(%rax)
L152:
  mulsd  %xmm9,%xmm11
  movapd %xmm1,%xmm0
  mulsd  %xmm12,%xmm15
  addsd  %xmm5,%xmm0
  mulsd  %xmm7,%xmm0
  addsd  %xmm11,%xmm15
  movapd %xmm6,%xmm11
  addsd  %xmm4,%xmm11
  mulsd  %xmm10,%xmm11
  addsd  %xmm0,%xmm11
  movapd %xmm7,%xmm0
  mulsd  %xmm15,%xmm0
  mulsd  %xmm7,%xmm7
  movsd  %xmm11,0x8(%rsp)
  movq   %xmm0,%rax
  movapd %xmm9,%xmm0
  mulsd  %xmm11,%xmm0
  movq   %rax,%xmm11
  subsd  %xmm0,%xmm11
  movapd %xmm11,%xmm0
  addsd  %xmm11,%xmm0
  movsd  0x8(%rsp),%xmm11
  mulsd  %xmm12,%xmm11
  divsd  %xmm8,%xmm0
  movsd  %xmm0,(%rsi)
  movapd %xmm15,%xmm0
  mulsd  %xmm10,%xmm0
  mulsd  %xmm10,%xmm10
  subsd  %xmm0,%xmm11
  addsd  %xmm10,%xmm7
  addsd  %xmm11,%xmm11
  divsd  %xmm8,%xmm11
  pxor   %xmm8,%xmm8
  ucomisd %xmm7,%xmm8
  movsd  %xmm11,(%rdx)
  ja     L9
  sqrtsd %xmm7,%xmm7
L161:
  mulsd  %xmm9,%xmm9
  mulsd  %xmm12,%xmm12
  addsd  %xmm12,%xmm9
  ucomisd %xmm9,%xmm8
  ja     L6
  sqrtsd %xmm9,%xmm9
L269:
  subsd  (%rsi),%xmm2
  subsd  %xmm11,%xmm3
  addsd  %xmm9,%xmm7
  movapd %xmm2,%xmm0
  movapd %xmm3,%xmm9
  mulsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm9
  addsd  %xmm9,%xmm0
  ucomisd %xmm0,%xmm8
  ja     L7
  sqrtsd %xmm0,%xmm0
L234:
  comisd D12(%rip),%xmm7
  movsd  %xmm0,(%rdi)
  jbe    L49
  divsd  %xmm7,%xmm0
  movsd  D75(%rip),%xmm7
  comisd %xmm0,%xmm7
  jbe    L49
  movsd  (%rsi),%xmm0
  subsd  %xmm0,%xmm6
  subsd  %xmm0,%xmm4
  movsd  (%rdx),%xmm0
  subsd  %xmm0,%xmm1
  subsd  %xmm0,%xmm5
  movapd %xmm6,%xmm0
  movsd  %xmm4,0x8(%rsp)
  andpd  %xmm14,%xmm0
  comisd %xmm0,%xmm13
  ja     L38
  divsd  %xmm6,%xmm1
  mov    %r8,0x40(%rsp)
  mov    %rcx,0x38(%rsp)
  mov    %rdi,0x30(%rsp)
  movsd  %xmm8,0x48(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movapd %xmm1,%xmm0
  call   <atan@plt>
  movsd  0x10(%rsp),%xmm6
  mov    0x30(%rsp),%rdi
  movsd  0x48(%rsp),%xmm8
  mov    D27(%rip),%rax
  mulsd  D16(%rip),%xmm0
  movsd  0x18(%rsp),%xmm2
  comisd %xmm6,%xmm8
  movsd  0x20(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm5
  movq   %rax,%xmm13
  mov    0x38(%rsp),%rcx
  mov    0x40(%rsp),%r8
  movq   D211(%rip),%xmm14
  jbe    L300
  addsd  D138(%rip),%xmm0
L300:
  movsd  %xmm0,(%rcx)
  movapd %xmm2,%xmm0
  andpd  %xmm14,%xmm0
  comisd %xmm0,%xmm13
  jbe    L39
  comisd %xmm8,%xmm3
  movsd  D33(%rip),%xmm1
  ja     L213
  movsd  D308(%rip),%xmm1
L213:
  movsd  0x8(%rsp),%xmm6
  andpd  %xmm6,%xmm14
  comisd %xmm14,%xmm13
  jbe    L369
  comisd %xmm8,%xmm5
  movsd  D33(%rip),%xmm0
  ja     L359
  movsd  D308(%rip),%xmm0
L359:
  movsd  %xmm0,(%r8)
  movsd  (%rcx),%xmm2
  comisd %xmm0,%xmm2
  jbe    L119
  comisd %xmm1,%xmm2
  jbe    L348
  comisd %xmm0,%xmm1
  jbe    L348
L156:
  movsd  (%rdi),%xmm0
  xorpd  D49(%rip),%xmm0
  movsd  %xmm0,(%rdi)
  jmp    L348
  nopl   0x0(%rax)
L172:
  mulsd  %xmm0,%xmm11
  mulsd  %xmm0,%xmm15
  subsd  %xmm11,%xmm1
  movsd  %xmm15,(%rsi)
  movsd  %xmm11,(%rdx)
  subsd  (%rsi),%xmm6
  andpd  %xmm6,%xmm14
  comisd %xmm14,%xmm13
  ja     L50
  divsd  %xmm6,%xmm1
  mov    %r8,0x18(%rsp)
  mov    %rcx,0x10(%rsp)
  movsd  %xmm8,0x20(%rsp)
  movsd  %xmm6,0x8(%rsp)
  movapd %xmm1,%xmm0
  call   <atan@plt>
  movsd  0x8(%rsp),%xmm6
  mov    0x10(%rsp),%rcx
  movsd  0x20(%rsp),%xmm8
  mulsd  D16(%rip),%xmm0
  mov    0x18(%rsp),%r8
  comisd %xmm6,%xmm8
  jbe    L57
  addsd  D138(%rip),%xmm0
L57:
  movsd  %xmm0,(%rcx)
  addsd  D194(%rip),%xmm0
L317:
  movsd  %xmm0,(%r8)
  jmp    L348
  nopl   (%rax)
L38:
  comisd %xmm8,%xmm1
  movsd  D33(%rip),%xmm0
  ja     L300
  movsd  D308(%rip),%xmm0
  jmp    L300
L50:
  comisd %xmm8,%xmm1
  jbe    L308
  movsd  D66(%rip),%xmm0
  movsd  D33(%rip),%xmm1
L388:
  movsd  %xmm1,(%rcx)
  jmp    L317
  nopl   0x0(%rax)
L369:
  divsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm0
  mov    %r8,0x28(%rsp)
  mov    %rcx,0x20(%rsp)
  mov    %rdi,0x18(%rsp)
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <atan@plt>
  movsd  0x10(%rsp),%xmm1
  mov    0x18(%rsp),%rdi
  movsd  0x30(%rsp),%xmm8
  comisd 0x8(%rsp),%xmm8
  mulsd  D16(%rip),%xmm0
  mov    0x20(%rsp),%rcx
  mov    0x28(%rsp),%r8
  jbe    L359
  addsd  D138(%rip),%xmm0
  jmp    L359
  nopl   0x0(%rax)
L39:
  divsd  %xmm2,%xmm3
  mov    %r8,0x30(%rsp)
  mov    %rcx,0x28(%rsp)
  mov    %rdi,0x20(%rsp)
  movsd  %xmm8,0x38(%rsp)
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movapd %xmm3,%xmm0
  call   <atan@plt>
  movsd  0x10(%rsp),%xmm2
  movsd  0x38(%rsp),%xmm8
  movsd  D16(%rip),%xmm1
  mov    D27(%rip),%rax
  comisd %xmm2,%xmm8
  movsd  0x18(%rsp),%xmm5
  mov    0x20(%rsp),%rdi
  mulsd  %xmm0,%xmm1
  mov    0x28(%rsp),%rcx
  mov    0x30(%rsp),%r8
  movq   %rax,%xmm13
  movq   D211(%rip),%xmm14
  jbe    L213
  addsd  D138(%rip),%xmm1
  jmp    L213
  nopw   0x0(%rax,%rax,1)
L119:
  comisd %xmm0,%xmm1
  ja     L156
  comisd %xmm1,%xmm2
  ja     L156
  jmp    L348
  nopl   0x0(%rax)
L308:
  movsd  D209(%rip),%xmm0
  movsd  D308(%rip),%xmm1
  jmp    L388
L9:
  movapd %xmm7,%xmm0
  mov    %r8,0x70(%rsp)
  mov    %rcx,0x68(%rsp)
  mov    %rdx,0x60(%rsp)
  mov    %rsi,0x58(%rsp)
  mov    %rdi,0x50(%rsp)
  movsd  %xmm8,0x78(%rsp)
  movsd  %xmm5,0x48(%rsp)
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm6,0x20(%rsp)
  movsd  %xmm9,0x18(%rsp)
  movsd  %xmm12,0x10(%rsp)
  movsd  %xmm11,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x70(%rsp),%r8
  mov    0x68(%rsp),%rcx
  mov    D27(%rip),%rax
  movsd  0x78(%rsp),%xmm8
  movapd %xmm0,%xmm7
  movq   D211(%rip),%xmm14
  mov    0x60(%rsp),%rdx
  mov    0x58(%rsp),%rsi
  mov    0x50(%rsp),%rdi
  movq   %rax,%xmm13
  movsd  0x48(%rsp),%xmm5
  movsd  0x40(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm3
  movsd  0x30(%rsp),%xmm2
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm9
  movsd  0x10(%rsp),%xmm12
  movsd  0x8(%rsp),%xmm11
  jmp    L161
L6:
  movapd %xmm9,%xmm0
  mov    %r8,0x68(%rsp)
  mov    %rcx,0x60(%rsp)
  mov    %rdx,0x58(%rsp)
  mov    %rsi,0x50(%rsp)
  mov    %rdi,0x48(%rsp)
  movsd  %xmm8,0x70(%rsp)
  movsd  %xmm5,0x40(%rsp)
  movsd  %xmm4,0x38(%rsp)
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm2,0x28(%rsp)
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm7,0x10(%rsp)
  movsd  %xmm11,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x68(%rsp),%r8
  mov    0x60(%rsp),%rcx
  mov    0x58(%rsp),%rdx
  mov    0x50(%rsp),%rsi
  movapd %xmm0,%xmm9
  mov    D27(%rip),%rax
  movsd  0x70(%rsp),%xmm8
  movq   D211(%rip),%xmm14
  mov    0x48(%rsp),%rdi
  movsd  0x40(%rsp),%xmm5
  movsd  0x38(%rsp),%xmm4
  movq   %rax,%xmm13
  movsd  0x30(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm2
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm7
  movsd  0x8(%rsp),%xmm11
  jmp    L269
L7:
  mov    %r8,0x60(%rsp)
  mov    %rcx,0x58(%rsp)
  mov    %rdx,0x50(%rsp)
  mov    %rsi,0x48(%rsp)
  mov    %rdi,0x40(%rsp)
  movsd  %xmm8,0x68(%rsp)
  movsd  %xmm5,0x38(%rsp)
  movsd  %xmm4,0x30(%rsp)
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm6,0x20(%rsp)
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm7,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x60(%rsp),%r8
  mov    0x58(%rsp),%rcx
  mov    D27(%rip),%rax
  movsd  0x68(%rsp),%xmm8
  movq   D211(%rip),%xmm14
  mov    0x50(%rsp),%rdx
  mov    0x48(%rsp),%rsi
  mov    0x40(%rsp),%rdi
  movq   %rax,%xmm13
  movsd  0x38(%rsp),%xmm5
  movsd  0x30(%rsp),%xmm4
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm3
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm7
  jmp    L234
L243:
  movapd %xmm12,%xmm0
  mov    %r8,0x58(%rsp)
  mov    %rcx,0x50(%rsp)
  mov    %rdx,0x48(%rsp)
  mov    %rsi,0x40(%rsp)
  mov    %rdi,0x38(%rsp)
  movsd  %xmm8,0x60(%rsp)
  movsd  %xmm5,0x30(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm11,0x10(%rsp)
  movsd  %xmm15,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x58(%rsp),%r8
  mov    0x50(%rsp),%rcx
  mov    0x48(%rsp),%rdx
  mov    0x40(%rsp),%rsi
  movapd %xmm0,%xmm12
  mov    D27(%rip),%rax
  movsd  0x60(%rsp),%xmm8
  movq   D211(%rip),%xmm14
  mov    0x38(%rsp),%rdi
  movsd  0x30(%rsp),%xmm5
  movsd  0x28(%rsp),%xmm4
  movq   %rax,%xmm13
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm11
  movsd  0x8(%rsp),%xmm15
  jmp    L307
```

tool_calls: name: unpack_data
arguments: data_label: D211
type: qword
name: unpack_data
arguments: data_label: D27
type: f64
name: unpack_data
arguments: data_label: D291
type: f64
name: unpack_data
arguments: data_label: D42
type: f32[2]
name: unpack_data
arguments: data_label: D64
type: f32[2]
name: unpack_data
arguments: data_label: D12
type: f64[2]
name: unpack_data
arguments: data_label: D75
type: f64
name: unpack_data
arguments: data_label: D16
type: f64
name: unpack_data
arguments: data_label: D138
type: f64
name: unpack_data
arguments: data_label: D33
type: f64
name: unpack_data
arguments: data_label: D308
type: f32[2]
name: unpack_data
arguments: data_label: D49
type: f32[4]
name: unpack_data
arguments: data_label: D194
type: f64
name: unpack_data
arguments: data_label: D66
type: f32[2]
name: unpack_data
arguments: data_label: D209
type: f32[2]

tool: D211: 9223372036854775807

tool: D27: 2

tool: D291: 4

tool: {"D42": [0.0,-7.7630157470703125]}

tool: {"D64": [0.0,1.75]}

tool: {"D12": [0.00001,10.0]}

tool: D75: 10

tool: D16: 57.29577951308232

tool: D138: 180

tool: D33: 90

tool: {"D308": [0.0,-3.3515625]}

tool: {"D49": [0.0,-0.0,0.0,0.0]}

tool: D194: 360

tool: {"D66": [0.0,3.939453125]}

tool: {"D209": [0.0,3.763671875]}

assistant: ```c
void calc_arc(double Ax, double Ay, double Bx, double By, double Cx, double Cy, double *Rad, double *Ox, double *Oy, double *alpha_start, double *alpha_end) {
  const double d_seps = 0.00001;
  const double d_eps = 2.0;
  const double d_r2d = 57.29577951308232;
  double D, Bx_m_Ax = Bx - Ax, By_m_Ay = By - Ay, Cx_m_Ax = Cx - Ax, Cy_m_Ay = Cy - Ay, Bx_p_Ax = Bx + Ax, By_p_Ay = By + Ay, Cx_p_Ax = Cx + Ax, Cy_p_Ay = Cy + Ay;
  D = 4.0 * (Bx_m_Ax * Cy_m_Ay - By_m_Ay * Cx_m_Ax);
  if (fabs(D) > d_eps) {
    double tmp1 = Bx_m_Ax * Bx_p_Ax + By_m_Ay * By_p_Ay;
    double tmp2 = Cx_m_Ax * Cx_p_Ax + Cy_m_Ay * Cy_p_Ay;
    *Ox = 2.0 * (tmp1 * Cy_m_Ay - tmp2 * By_m_Ay) / D;
    *Oy = 2.0 * (tmp2 * Bx_m_Ax - tmp1 * Cx_m_Ax) / D;
    tmp1 = sqrt(Cy_m_Ay * Cy_m_Ay + Cx_m_Ax * Cx_m_Ax) + sqrt(By_m_Ay * By_m_Ay + Bx_m_Ax * Bx_m_Ax);
    Bx -= *Ox;
    By -= *Oy;
    *Rad = sqrt(Bx * Bx + By * By);
    if ((tmp1 > d_seps) && (*Rad / tmp1 < 10.0)) {
      double alpha_m;
      Ax -= *Ox;
      Cx -= *Ox;
      Ay -= *Oy;
      Cy -= *Oy;
      if (fabs(Ax) < d_eps) {
        *alpha_start = (Ay > 0.0) ? (90.0) : (-90.0);
      } else {
        *alpha_start = atan(Ay / Ax) * d_r2d;
        if (Ax < 0.0)
          *alpha_start += (180.0);
      }
      if (fabs(Bx) < d_eps) {
        alpha_m = (By > 0.0) ? (90.0) : (-90.0);
      } else {
        alpha_m = atan(By / Bx) * d_r2d;
        if (Bx < 0.0)
          alpha_m += (180.0);
      }
      if (fabs(Cx) < d_eps) {
        *alpha_end = (Cy > 0.0) ? (90.0) : (-90.0);
      } else {
        *alpha_end = atan(Cy / Cx) * d_r2d;
        if (Cx < 0.0)
          *alpha_end += (180.0);
      }
      if (*alpha_start > *alpha_end) {
        if ((alpha_m < *alpha_start) && (alpha_m > *alpha_end)) {
          *Rad = -*Rad;
        }
      } else {
        if ((alpha_m > *alpha_end) || (alpha_m < *alpha_start)) {
          *Rad = -*Rad;
        }
      }
      return;
    }
  } else {
    if ((fabs(Cx_m_Ax) < d_eps) && (fabs(Cy_m_Ay) < d_eps)) {
      *Rad = sqrt(Bx_m_Ax * Bx_m_Ax + By_m_Ay * By_m_Ay) / 2.0;
      if (*Rad < d_eps) {
        *Rad = -1E+5 - 10.0;
        *Ox = Ax - d_eps;
        *Oy = Ay - d_eps;
        *alpha_start = Cx + d_eps;
        *alpha_end = Cy + d_eps;
        return;
      }
      *Ox = Bx_p_Ax / 2.0;
      *Oy = By_p_Ay / 2.0;
      Bx_m_Ax = Ax - *Ox;
      By_m_Ay = Ay - *Oy;
      if (fabs(Bx_m_Ax) < d_eps) {
        *alpha_start = (By_m_Ay > 0.0) ? (90.0) : (-90.0);
      } else {
        *alpha_start = atan(By_m_Ay / Bx_m_Ax) * d_r2d;
        if (Bx_m_Ax < 0.0)
          *alpha_start += (180.0);
      }
      *alpha_end = *alpha_start + 360.0;
      return;
    }
  }
  *Rad = -1E+5 - 10.0;
  *Ox = Ax;
  *Oy = Ay;
  *alpha_start = Cx;
  *alpha_end = Cy;
}
```