user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<sample_quad>:
  endbr64
  push   %r15
  addsd  %xmm0,%xmm1
  addsd  %xmm0,%xmm2
  movapd %xmm0,%xmm8
  push   %r14
  addsd  %xmm7,%xmm5
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  comisd %xmm1,%xmm2
  subsd  D40(%rip),%xmm5
  addsd  0x70(%rsp),%xmm6
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm1,0x8(%rsp)
  movq   %xmm5,%r14
  movapd %xmm6,%xmm4
  subsd  D40(%rip),%xmm4
  jb     L57
  divsd  %xmm1,%xmm2
  movq   %xmm2,%rbx
L66:
  movq   %rbx,%xmm0
  subsd  D40(%rip),%xmm0
  movsd  %xmm8,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  call   <is_positive@plt>
  movsd  0x10(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm8
  test   %rax,%rax
  jne    L1
L20:
  movapd %xmm8,%xmm0
L62:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r14
  pop    %r15
  ret
L57:
  movapd %xmm1,%xmm7
  movq   %xmm4,%r14
  movsd  %xmm2,0x8(%rsp)
  movapd %xmm5,%xmm4
  divsd  %xmm2,%xmm7
  movq   %xmm7,%rbx
  jmp    L66
  xchg   %ax,%ax
L1:
  movsd  0x20(%rsp),%xmm0
  movapd %xmm4,%xmm3
  addsd  0x28(%rsp),%xmm0
  movq   %r14,%xmm2
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movapd %xmm0,%xmm1
  subsd  D40(%rip),%xmm1
  movq   %rbx,%xmm0
  movq   %xmm1,%r15
  call   <maximum_point@plt>
  movsd  0x10(%rsp),%xmm4
  movq   %r14,%xmm3
  movq   %r15,%xmm2
  movq   %rbx,%xmm1
  movsd  %xmm0,0x18(%rsp)
  movsd  %xmm4,0x20(%rsp)
  call   <DF@plt>
  movsd  0x30(%rsp),%xmm8
  movsd  0x8(%rsp),%xmm7
  movq   %xmm0,%rbp
  subsd  %xmm8,%xmm7
  movsd  %xmm8,0x10(%rsp)
  movapd %xmm7,%xmm0
  movsd  %xmm7,0x28(%rsp)
  call   <is_positive@plt>
  movsd  0x10(%rsp),%xmm8
  movsd  0x18(%rsp),%xmm6
  test   %rax,%rax
  movsd  0x20(%rsp),%xmm4
  je     L20
  movq   %rbp,%xmm0
  xorpd  D7(%rip),%xmm0
  movsd  %xmm8,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movapd %xmm0,%xmm7
  mulsd  %xmm6,%xmm7
  mulsd  %xmm7,%xmm6
  movsd  %xmm7,0x20(%rsp)
  movapd %xmm6,%xmm0
  movq   %xmm6,%rbp
  call   <is_positive@plt>
  movsd  0x10(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm8
  test   %rax,%rax
  je     L20
  movsd  D40(%rip),%xmm9
  divsd  0x20(%rsp),%xmm9
  movapd %xmm9,%xmm0
  movsd  %xmm8,0x30(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm9,0x10(%rsp)
  call   <is_positive@plt>
  movsd  0x30(%rsp),%xmm8
  test   %rax,%rax
  je     L20
  movq   %rbp,%xmm0
  call   <sgamma@plt>
  movsd  0x10(%rsp),%xmm9
  mulsd  %xmm0,%xmm9
  movapd %xmm9,%xmm0
  movsd  %xmm9,0x10(%rsp)
  call   <is_positive@plt>
  movsd  0x10(%rsp),%xmm9
  movsd  0x18(%rsp),%xmm4
  test   %rax,%rax
  movsd  0x30(%rsp),%xmm8
  je     L20
  movapd %xmm8,%xmm1
  divsd  0x28(%rsp),%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm9,0x38(%rsp)
  movsd  %xmm4,0x30(%rsp)
  movsd  %xmm8,0x18(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <is_positive@plt>
  movsd  0x10(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm8
  test   %rax,%rax
  movsd  0x30(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm9
  je     L29
  movsd  0x20(%rsp),%xmm7
  movapd %xmm4,%xmm5
  movq   %rbx,%xmm2
  movapd %xmm9,%xmm0
  movq   %rbp,%xmm6
  movq   %r14,%xmm4
  movq   %r15,%xmm3
  movsd  %xmm8,0x28(%rsp)
  movsd  %xmm9,0x18(%rsp)
  call   <qacc@plt>
  mov    D40(%rip),%rax
  pxor   %xmm3,%xmm3
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm3,%xmm0
  movq   %rax,%xmm1
  call   <genunf@plt>
  call   <log@plt>
  movsd  0x10(%rsp),%xmm2
  pxor   %xmm3,%xmm3
  movapd %xmm3,%xmm0
  mov    %rax,%rbx
  movapd %xmm2,%xmm1
  call   <my_fmin@plt>
  movsd  0x18(%rsp),%xmm9
  movsd  0x28(%rsp),%xmm8
  cmp    %rax,%rbx
  jge    L20
L29:
  movsd  0x8(%rsp),%xmm0
  movsd  D40(%rip),%xmm1
  mulsd  %xmm9,%xmm0
  addsd  %xmm9,%xmm1
  divsd  %xmm1,%xmm0
  jmp    L62
```

tool_calls: name: parse_data
arguments: data_tag: D40
type_infered: f64
name: parse_data
arguments: data_tag: D7
type_infered: f32[4]

tool: D40: 1

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

assistant: ```c
double sample_quad(double xkl, double xkk, double xll, double ckl, double clk, double ckk, double cll, double bk, double bl) {
  double xlk, skl, slk, s2, s3, s, a1, a2, a3;
  double vbar, alpha, beta, v, w;
  double q, U;
  xlk = xkl;
  skl = xkk + xkl;
  slk = xll + xlk;
  if (skl <= slk) {
    s2 = skl;
    s3 = slk;
    s = s3 / s2;
    a1 = ckl + clk - 1.0;
    a2 = ckk + bk - 1.0;
    a3 = cll + bl - 1.0;
  } else {
    s2 = slk;
    s3 = skl;
    s = s3 / s2;
    a1 = ckl + clk - 1.0;
    a2 = cll + bl - 1.0;
    a3 = ckk + bk - 1.0;
  }
  if (is_positive(s - 1.0)) {
    vbar = maximum_point(s, a1, a2, a3);
    beta = -1.0 * DF(vbar, s, a1, a2, a3) * vbar;
    alpha = beta * vbar;
    if (is_positive(s2 - xkl)) {
      v = xkl / (s2 - xkl);
      if (is_positive(alpha) && is_positive(1.0 / beta)) {
        w = 1.0 / beta * sgamma(alpha);
        if (is_positive(w)) {
          if (!is_positive(v)) {
            return s2 * w / (1.0 + w);
          } else {
            q = qacc(w, v, s, a1, a2, a3, alpha, beta);
            U = genunf(0.0, 1.0);
            if (log(U) < my_fmin(0.0, q)) {
              return s2 * w / (1.0 + w);
            }
          }
        }
      }
    }
  }
  return xkl;
}
```