user: Demonstrate the C code that generates the assembly output below:

```asm
<cdflib_beta_asym>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rcx,%rbp
  push   %rbx
  sub    $0x378,%rsp
  movsd  (%rdi),%xmm1
  movsd  (%rsi),%xmm2
  mov    %rdi,0x78(%rsp)
  mov    %rsi,0x70(%rsp)
  movapd %xmm2,%xmm3
  subsd  %xmm1,%xmm3
  mov    %fs:0x28,%rax
  mov    %rax,0x368(%rsp)
  xor    %eax,%eax
  comisd %xmm2,%xmm1
  jb     L71
  divsd  %xmm1,%xmm3
  movapd %xmm2,%xmm7
  pxor   %xmm4,%xmm4
  movsd  D134(%rip),%xmm10
  divsd  %xmm1,%xmm7
  movq   %xmm3,%rbx
  movsd  %xmm7,0x30(%rsp)
  addsd  %xmm10,%xmm7
  movapd %xmm7,%xmm0
  movapd %xmm10,%xmm7
  divsd  %xmm0,%xmm7
  mulsd  %xmm2,%xmm0
  ucomisd %xmm0,%xmm4
  movq   %xmm7,%r13
  ja     L9
L190:
  sqrtsd %xmm0,%xmm0
L213:
  movapd %xmm10,%xmm7
  movq   %rbx,%xmm6
  xor    %eax,%eax
  movq   D123(%rip),%xmm11
  divsd  %xmm0,%xmm7
  movsd  (%r12),%xmm0
  lea    0xa0(%rsp),%rdi
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm10,0x10(%rsp)
  movapd %xmm0,%xmm3
  movsd  %xmm1,(%rsp)
  divsd  %xmm1,%xmm3
  movsd  %xmm7,0x38(%rsp)
  movq   %r13,%xmm7
  unpcklpd %xmm6,%xmm7
  movaps %xmm7,0x20(%rsp)
  divsd  %xmm2,%xmm0
  xorpd  %xmm11,%xmm3
  movsd  %xmm3,0xa0(%rsp)
  movsd  %xmm0,0xa8(%rsp)
  call   <cdflib_rlog1@plt>
  pxor   %xmm0,%xmm0
  movsd  (%rsp),%xmm1
  lea    0xa8(%rsp),%rdi
  cvtsi2sd %eax,%xmm0
  mov    0x70(%rsp),%rax
  movsd  (%rax),%xmm7
  xor    %eax,%eax
  mulsd  %xmm1,%xmm0
  movsd  %xmm7,0x8(%rsp)
  movsd  %xmm0,(%rsp)
  call   <cdflib_rlog1@plt>
  pxor   %xmm1,%xmm1
  movq   D123(%rip),%xmm11
  cvtsi2sd %eax,%xmm1
  mulsd  0x8(%rsp),%xmm1
  addsd  (%rsp),%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm1,(%rsp)
  xorpd  %xmm11,%xmm0
  call   <exp@plt>
  movsd  0x18(%rsp),%xmm4
  movq   D123(%rip),%xmm11
  movsd  (%rsp),%xmm1
  movsd  0x10(%rsp),%xmm10
  movsd  %xmm0,0x68(%rsp)
  ucomisd %xmm4,%xmm0
  jp     L108
  movapd %xmm4,%xmm0
  jne    L108
L186:
  mov    0x368(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L81
  add    $0x378,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L71:
  divsd  %xmm2,%xmm3
  movapd %xmm1,%xmm7
  pxor   %xmm4,%xmm4
  movsd  D134(%rip),%xmm10
  divsd  %xmm2,%xmm7
  movq   %xmm3,%rbx
  movsd  %xmm7,0x30(%rsp)
  addsd  %xmm10,%xmm7
  movapd %xmm7,%xmm0
  movapd %xmm10,%xmm7
  divsd  %xmm0,%xmm7
  mulsd  %xmm1,%xmm0
  ucomisd %xmm0,%xmm4
  movq   %xmm7,%r13
  jbe    L190
L9:
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm10,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm1,(%rsp)
  call   <sqrt@plt>
  movsd  0x18(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm10
  movsd  (%rsp),%xmm1
  jmp    L213
  nopl   0x0(%rax,%rax,1)
L108:
  ucomisd %xmm1,%xmm4
  ja     L21
  movapd %xmm1,%xmm12
  sqrtsd %xmm12,%xmm12
L226:
  movapd 0x20(%rsp),%xmm7
  movsd  D152(%rip),%xmm0
  addsd  %xmm1,%xmm1
  xor    %eax,%eax
  lea    D164(%rip),%rdi
  movsd  %xmm10,0x18(%rsp)
  lea    0x98(%rsp),%rsi
  addpd  %xmm7,%xmm7
  lea    0x2d0(%rsp),%r14
  movsd  %xmm12,0x98(%rsp)
  divsd  D108(%rip),%xmm12
  mulsd  D152(%rip),%xmm12
  movsd  %xmm1,0x40(%rsp)
  lea    0x160(%rsp),%r15
  movsd  %xmm4,0x88(%rsp)
  movaps %xmm7,0x50(%rsp)
  movq   %rbx,%xmm7
  mov    $0x2,%ebx
  mulsd  D63(%rip),%xmm7
  movsd  %xmm12,0x80(%rsp)
  mulsd  %xmm7,%xmm0
  movsd  %xmm7,0x8(%rsp)
  movsd  %xmm7,0xb0(%rsp)
  movapd %xmm0,%xmm7
  movsd  %xmm0,(%rsp)
  movsd  %xmm0,0x2c0(%rsp)
  xorpd  %xmm11,%xmm7
  movsd  %xmm7,0x210(%rsp)
  call   <cdflib_error_fc@plt>
  movsd  0x30(%rsp),%xmm4
  movsd  (%rsp),%xmm0
  pxor   %xmm8,%xmm8
  movsd  0x38(%rsp),%xmm9
  cvtsi2sd %eax,%xmm8
  mulsd  D204(%rip),%xmm8
  lea    0xb0(%rsp),%rdi
  movapd %xmm4,%xmm7
  mov    D108(%rip),%rax
  movsd  0x18(%rsp),%xmm10
  mulsd  %xmm4,%xmm7
  movsd  0x40(%rsp),%xmm15
  movsd  0x80(%rsp),%xmm12
  mulsd  %xmm9,%xmm0
  movapd %xmm10,%xmm14
  movapd %xmm10,%xmm13
  movsd  0x88(%rsp),%xmm4
  mulsd  D108(%rip),%xmm0
  movq   D123(%rip),%xmm11
  movsd  %xmm7,0x48(%rsp)
  movsd  0x0(%rbp),%xmm7
  movsd  %xmm7,0x60(%rsp)
  movq   %rax,%xmm7
  addsd  %xmm8,%xmm0
  lea    0x170(%rsp),%rax
  mov    %rax,0x18(%rsp)
  lea    0x210(%rsp),%rax
  mov    %rax,0x20(%rsp)
  movsd  %xmm0,0x10(%rsp)
L244:
  mulsd  0x48(%rsp),%xmm13
  pxor   %xmm6,%xmm6
  lea    0x2(%rbx),%rax
  mov    %r14,%r12
  movsd  0x30(%rsp),%xmm0
  cvtsi2sd %ebx,%xmm6
  mov    %rax,(%rsp)
  mulsd  %xmm13,%xmm0
  addsd  %xmm13,%xmm14
  movapd %xmm6,%xmm1
  unpcklpd %xmm1,%xmm1
  addpd  D137(%rip),%xmm1
  addsd  %xmm10,%xmm0
  unpcklpd %xmm14,%xmm0
  mulpd  0x50(%rsp),%xmm0
  divpd  %xmm1,%xmm0
  movups %xmm0,-0x8(%rdi,%rbx,8)
L170:
  pxor   %xmm5,%xmm5
  movsd  0x8(%rsp),%xmm0
  lea    -0x2(%rbx),%ebp
  mov    %ebx,%r13d
  cvtsi2sd %ebx,%xmm5
  mov    0x18(%rsp),%r10
  mov    %ebx,%r9d
  add    $0x3,%rbp
  movsd  D152(%rip),%xmm3
  mov    $0x2,%esi
  addsd  %xmm10,%xmm5
  mulsd  %xmm5,%xmm3
  xorpd  %xmm11,%xmm3
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x160(%rsp)
  nopl   0x0(%rax)
L242:
  mov    %esi,%ecx
  mov    %esi,%r8d
  mov    %r10,%rdx
  mov    $0x1,%eax
  movapd %xmm4,%xmm1
  nopl   0x0(%rax)
L6:
  pxor   %xmm0,%xmm0
  mov    %ecx,%r11d
  pxor   %xmm2,%xmm2
  sub    $0x8,%rdx
  cvtsi2sd %eax,%xmm0
  sub    %eax,%r11d
  cvtsi2sd %r11d,%xmm2
  mulsd  %xmm3,%xmm0
  subsd  %xmm2,%xmm0
  mulsd  -0x8(%rdi,%rax,8),%xmm0
  add    $0x1,%rax
  mulsd  -0x8(%rdx),%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rsi,%rax
  jne    L6
  pxor   %xmm2,%xmm2
  movsd  -0x8(%rdi,%rax,8),%xmm0
  lea    0x1(%rax),%rsi
  add    $0x8,%r10
  cvtsi2sd %r8d,%xmm2
  mulsd  %xmm3,%xmm0
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%r10)
  cmp    %rsi,%rbp
  jne    L242
  movsd  -0x8(%r15,%rbx,8),%xmm2
  mov    0x20(%rsp),%rax
  sub    $0x1,%r13d
  divsd  %xmm5,%xmm2
  movsd  %xmm2,-0x8(%rax,%rbx,8)
  cmp    $0x2,%ebx
  je     L155
  movupd -0x18(%r12),%xmm1
  mov    %r13d,%eax
  shr    %eax
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x210(%rsp),%xmm1
  movapd %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm4,%xmm0
  addsd  %xmm1,%xmm0
  cmp    $0x1,%eax
  je     L87
  movupd -0x28(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x220(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x2,%eax
  je     L87
  movupd -0x38(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x230(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x3,%eax
  je     L87
  movupd -0x48(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x240(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x4,%eax
  je     L87
  movupd -0x58(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x250(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x5,%eax
  je     L87
  movupd -0x68(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x260(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x6,%eax
  je     L87
  movupd -0x78(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x270(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x7,%eax
  je     L87
  movupd -0x88(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x280(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x8,%eax
  je     L87
  movupd -0x98(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x290(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    $0x9,%eax
  je     L87
  movupd -0xa8(%r12),%xmm1
  shufpd $0x1,%xmm1,%xmm1
  mulpd  0x2a0(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  nopl   0x0(%rax)
L87:
  mov    %r13d,%eax
  or     $0x1,%eax
  and    $0x1,%r13d
  je     L228
L47:
  sub    %eax,%r9d
  sub    $0x1,%eax
  sub    $0x1,%r9d
  cltq
  movslq %r9d,%r9
  movsd  0x2c0(%rsp,%r9,8),%xmm1
  mulsd  0x210(%rsp,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L228:
  addsd  %xmm0,%xmm2
  add    $0x1,%rbx
  add    $0x8,%r12
  xorpd  %xmm11,%xmm2
  movsd  %xmm2,-0x10(%r12)
  cmp    (%rsp),%rbx
  jne    L170
  movapd %xmm6,%xmm0
  movsd  (%r14),%xmm1
  movsd  0x40(%rsp),%xmm5
  mulsd  %xmm7,%xmm6
  movsd  D108(%rip),%xmm7
  subsd  %xmm10,%xmm0
  mulsd  %xmm15,%xmm7
  mulsd  %xmm8,%xmm0
  movsd  D108(%rip),%xmm8
  mulsd  %xmm5,%xmm15
  mulsd  %xmm12,%xmm8
  mulsd  %xmm5,%xmm12
  addsd  %xmm6,%xmm7
  movsd  0x38(%rsp),%xmm6
  mulsd  %xmm6,%xmm9
  addsd  %xmm0,%xmm8
  movsd  -0x8(%r14),%xmm0
  mulsd  %xmm9,%xmm0
  mulsd  %xmm6,%xmm9
  movsd  0x10(%rsp),%xmm6
  mulsd  %xmm8,%xmm0
  mulsd  %xmm9,%xmm1
  movapd %xmm0,%xmm2
  andpd  D124(%rip),%xmm0
  mulsd  %xmm7,%xmm1
  addsd  %xmm1,%xmm2
  andpd  D124(%rip),%xmm1
  addsd  %xmm1,%xmm0
  addsd  %xmm2,%xmm6
  movsd  %xmm6,0x10(%rsp)
  mulsd  0x60(%rsp),%xmm6
  comisd %xmm0,%xmm6
  jae    L183
  add    $0x10,%r14
  cmp    $0x16,%rbx
  jne    L244
L183:
  mov    0x70(%rsp),%rsi
  mov    0x78(%rsp),%rdi
  xor    %eax,%eax
  call   <cdflib_bcorr@plt>
  pxor   %xmm0,%xmm0
  neg    %eax
  cvtsi2sd %eax,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm1
  movsd  0x68(%rsp),%xmm0
  mulsd  D109(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  0x10(%rsp),%xmm0
  jmp    L186
L155:
  mov    $0x1,%eax
  movapd %xmm4,%xmm0
  jmp    L47
L21:
  movapd %xmm1,%xmm0
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm10,0x8(%rsp)
  movsd  %xmm1,(%rsp)
  call   <sqrt@plt>
  movsd  0x10(%rsp),%xmm4
  movsd  (%rsp),%xmm1
  movq   D123(%rip),%xmm11
  movsd  0x8(%rsp),%xmm10
  movapd %xmm0,%xmm12
  jmp    L226
L81:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D134
type_infered: f64
name: extract_symbolic_data
arguments: tag: D123
type_infered: f32[2]
name: extract_symbolic_data
arguments: tag: D152
type_infered: f64
name: extract_symbolic_data
arguments: tag: D164
type_infered: string
name: extract_symbolic_data
arguments: tag: D108
type_infered: byte[8]
name: extract_symbolic_data
arguments: tag: D63
type_infered: byte[8]
name: extract_symbolic_data
arguments: tag: D204
type_infered: byte[8]
name: extract_symbolic_data
arguments: tag: D137
type_infered: f64[2]
name: extract_symbolic_data
arguments: tag: D124
type_infered: qword[2]
name: extract_symbolic_data
arguments: tag: D109
type_infered: f64

tool: D134: 1

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

tool: D152: 0.5

tool: D164: 

tool: {"D108": [0xd1,0x3b,0x7f,0x66,0x9e,0xa0,0xd6,0x3f]}

tool: {"D63": [0x55,0x55,0x55,0x55,0x55,0x55,0xe5,0x3f]}

tool: {"D204": [0x7e,0xef,0xb4,0x91,0xf8,0x5b,0xdc,0x3f]}

tool: {"D137": [2.0,3.0]}

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

tool: D109: 1.12837916709551

assistant: ```c
double cdflib_beta_asym(const double *a, const double *b, const double *lambda, const double *eps) {
  static const double e0 = 1.12837916709551e0;
  static const double e1 = .353553390593274e0;
  static const int num = 20;
  static const int K3 = 1;
  double value;
  double bsum, dsum, f, h, h2, hn, j0, j1, r, r0, r1, s, sum, t, t0, t1, u, w, w0, z, z0, z2, zn, znm1;
  int i, im1, imj, j, m, mm1, mmj, n, np1;
  double a0[21], b0[21], c[21], d[21], T1, T2;
  value = 0.0e0;
  if (*a >= *b) {
    goto S10;
  }
  h = *a / *b;
  r0 = 1.0e0 / (1.0e0 + h);
  r1 = (*b - *a) / *b;
  w0 = 1.0e0 / sqrt(*a * (1.0e0 + h));
  goto S20;
S10:
  h = *b / *a;
  r0 = 1.0e0 / (1.0e0 + h);
  r1 = (*b - *a) / *a;
  w0 = 1.0e0 / sqrt(*b * (1.0e0 + h));
S20:
  T1 = -(*lambda / *a);
  T2 = *lambda / *b;
  f = *a * cdflib_rlog1(&T1) + *b * cdflib_rlog1(&T2);
  t = exp(-f);
  if (t == 0.0e0) {
    return value;
  }
  z0 = sqrt(f);
  z = 0.5e0 * (z0 / e1);
  z2 = f + f;
  a0[0] = 2.0e0 / 3.0e0 * r1;
  c[0] = -(0.5e0 * a0[0]);
  d[0] = -c[0];
  j0 = 0.5e0 / e0 * cdflib_error_fc(&K3, &z0);
  j1 = e1;
  sum = j0 + d[0] * w0 * j1;
  s = 1.0e0;
  h2 = h * h;
  hn = 1.0e0;
  w = w0;
  znm1 = z;
  zn = z2;
  for (n = 2; n <= num; n += 2) {
    hn = h2 * hn;
    a0[n - 1] = 2.0e0 * r0 * (1.0e0 + h * hn) / ((double)n + 2.0e0);
    np1 = n + 1;
    s += hn;
    a0[np1 - 1] = 2.0e0 * r1 * s / ((double)n + 3.0e0);
    for (i = n; i <= np1; i++) {
      r = -(0.5e0 * ((double)i + 1.0e0));
      b0[0] = r * a0[0];
      for (m = 2; m <= i; m++) {
        bsum = 0.0e0;
        mm1 = m - 1;
        for (j = 1; j <= mm1; j++) {
          mmj = m - j;
          bsum += (((double)j * r - (double)mmj) * a0[j - 1] * b0[mmj - 1]);
        }
        b0[m - 1] = r * a0[m - 1] + bsum / (double)m;
      }
      c[i - 1] = b0[i - 1] / ((double)i + 1.0e0);
      dsum = 0.0e0;
      im1 = i - 1;
      for (j = 1; j <= im1; j++) {
        imj = i - j;
        dsum += (d[imj - 1] * c[j - 1]);
      }
      d[i - 1] = -(dsum + c[i - 1]);
    }
    j0 = e1 * znm1 + ((double)n - 1.0e0) * j0;
    j1 = e1 * zn + (double)n * j1;
    znm1 = z2 * znm1;
    zn = z2 * zn;
    w = w0 * w;
    t0 = d[n - 1] * w * j0;
    w = w0 * w;
    t1 = d[np1 - 1] * w * j1;
    sum += (t0 + t1);
    if (fabs(t0) + fabs(t1) <= *eps * sum) {
      goto S80;
    }
  }
S80:
  u = exp(-cdflib_bcorr(a, b));
  value = e0 * t * u * sum;
  return value;
}
```