user: What is the c source code of the assembly code below:

```asm
<brcomp>:
  endbr64
  push   %r14
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  movsd  %xmm0,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  ucomisd D99(%rip),%xmm2
  setnp  %al
  mov    $0x0,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L76
  movq   %xmm2,%rbx
  movq   %xmm3,%rbp
  ucomisd D99(%rip),%xmm3
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L76
  minsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rsp)
  comisd D174(%rip),%xmm0
  jae    L289
  comisd D324(%rip),%xmm2
  jbe    L75
  comisd D324(%rip),%xmm3
  ja     L139
  movapd %xmm3,%xmm0
  xorpd  D24(%rip),%xmm0
  call   <alnrel@plt>
  movq   %xmm0,%r12
  movq   %rbp,%xmm0
  call   <log@plt>
  jmp    L234
L289:
  movsd  0x10(%rsp),%xmm5
  comisd %xmm1,%xmm5
  ja     L176
  movsd  D138(%rip),%xmm2
  movsd  0x10(%rsp),%xmm7
  movapd %xmm7,%xmm0
  movsd  0x8(%rsp),%xmm3
  divsd  %xmm3,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rsp)
  divsd  %xmm1,%xmm2
  movsd  %xmm2,0x20(%rsp)
  movapd %xmm7,%xmm0
  addsd  %xmm3,%xmm0
  movq   %rbx,%xmm6
  mulsd  %xmm6,%xmm0
  subsd  %xmm0,%xmm7
  movq   %xmm7,%r14
  jmp    L52
L75:
  movapd %xmm2,%xmm0
  call   <log@plt>
  movq   %xmm0,%r12
  movq   %rbx,%xmm0
  xorpd  D24(%rip),%xmm0
  call   <alnrel@plt>
  jmp    L234
L139:
  movapd %xmm2,%xmm0
  call   <log@plt>
  movq   %xmm0,%r12
  movq   %rbp,%xmm0
  call   <log@plt>
L234:
  movq   %r12,%xmm1
  movsd  0x10(%rsp),%xmm7
  mulsd  %xmm7,%xmm1
  movsd  0x8(%rsp),%xmm6
  mulsd  %xmm6,%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rbx
  movsd  D138(%rip),%xmm0
  comisd 0x18(%rsp),%xmm0
  ja     L180
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm0
  call   <betaln@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movq   %rbx,%xmm1
  subsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rbx
  jmp    L294
L180:
  maxsd  %xmm6,%xmm7
  movsd  %xmm7,0x20(%rsp)
  comisd D174(%rip),%xmm7
  jae    L253
  movsd  0x20(%rsp),%xmm7
  comisd D138(%rip),%xmm7
  ja     L229
  movapd %xmm1,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rbx
  ucomisd D99(%rip),%xmm0
  jp     L106
  je     L294
L106:
  movsd  0x10(%rsp),%xmm7
  addsd  0x8(%rsp),%xmm7
  movsd  %xmm7,0x28(%rsp)
  comisd D138(%rip),%xmm7
  jbe    L282
  movapd %xmm7,%xmm0
  subsd  D138(%rip),%xmm0
  call   <gam1@plt>
  addsd  D138(%rip),%xmm0
  movapd %xmm0,%xmm2
  divsd  0x28(%rsp),%xmm2
  movsd  %xmm2,0x28(%rsp)
L174:
  movsd  0x10(%rsp),%xmm0
  call   <gam1@plt>
  movq   %xmm0,%rbp
  movsd  0x8(%rsp),%xmm0
  call   <gam1@plt>
  movapd %xmm0,%xmm1
  movsd  D138(%rip),%xmm2
  movq   %rbp,%xmm0
  addsd  %xmm2,%xmm0
  addsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  divsd  0x28(%rsp),%xmm0
  movsd  0x18(%rsp),%xmm6
  mulsd  %xmm6,%xmm0
  movq   %rbx,%xmm3
  mulsd  %xmm3,%xmm0
  divsd  0x20(%rsp),%xmm6
  movapd %xmm6,%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rbx
  jmp    L294
L253:
  movsd  0x18(%rsp),%xmm0
  call   <gamln1@plt>
  movq   %xmm0,%rbp
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm0
  call   <algdiv@plt>
  movq   %rbp,%xmm5
  addsd  %xmm0,%xmm5
  movq   %rbx,%xmm1
  subsd  %xmm5,%xmm1
  movapd %xmm1,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm7
  mulsd  0x18(%rsp),%xmm7
  movq   %xmm7,%rbx
  jmp    L294
L229:
  movsd  0x18(%rsp),%xmm0
  call   <gamln1@plt>
  movsd  %xmm0,0x8(%rsp)
  movsd  0x20(%rsp),%xmm0
  subsd  D138(%rip),%xmm0
  cvttsd2si %xmm0,%edx
  test   %edx,%edx
  jle    L117
  add    $0x1,%edx
  mov    $0x1,%eax
  movsd  D138(%rip),%xmm0
  movapd %xmm0,%xmm3
L250:
  movsd  0x20(%rsp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x20(%rsp)
  movsd  0x18(%rsp),%xmm2
  addsd  %xmm4,%xmm2
  divsd  %xmm2,%xmm4
  mulsd  %xmm4,%xmm0
  add    $0x1,%eax
  cmp    %eax,%edx
  jne    L250
  call   <log@plt>
  addsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
L117:
  movq   %rbx,%xmm2
  subsd  0x8(%rsp),%xmm2
  movq   %xmm2,%rbx
  movsd  D138(%rip),%xmm0
  movsd  0x20(%rsp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,0x10(%rsp)
  movsd  0x18(%rsp),%xmm5
  addsd  %xmm4,%xmm5
  movsd  %xmm5,0x8(%rsp)
  comisd %xmm0,%xmm5
  jbe    L219
  movapd %xmm5,%xmm0
  subsd  D138(%rip),%xmm0
  call   <gam1@plt>
  addsd  D138(%rip),%xmm0
  movapd %xmm0,%xmm2
  divsd  0x8(%rsp),%xmm2
  movsd  %xmm2,0x20(%rsp)
L226:
  movq   %rbx,%xmm0
  call   <exp@plt>
  mulsd  0x18(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  movsd  0x10(%rsp),%xmm0
  call   <gam1@plt>
  addsd  D138(%rip),%xmm0
  mulsd  0x8(%rsp),%xmm0
  divsd  0x20(%rsp),%xmm0
  movq   %xmm0,%rbx
  jmp    L294
L282:
  movsd  0x28(%rsp),%xmm0
  call   <gam1@plt>
  addsd  D138(%rip),%xmm0
  movsd  %xmm0,0x28(%rsp)
  jmp    L174
L219:
  movsd  0x8(%rsp),%xmm0
  call   <gam1@plt>
  addsd  D138(%rip),%xmm0
  movsd  %xmm0,0x20(%rsp)
  jmp    L226
L176:
  movsd  D138(%rip),%xmm2
  movsd  0x8(%rsp),%xmm7
  movapd %xmm7,%xmm0
  movsd  0x10(%rsp),%xmm6
  divsd  %xmm6,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm2
  movsd  %xmm2,0x18(%rsp)
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x20(%rsp)
  addsd  %xmm7,%xmm6
  movapd %xmm6,%xmm0
  mulsd  %xmm3,%xmm0
  subsd  %xmm7,%xmm0
  movq   %xmm0,%r14
L52:
  movq   %r14,%xmm0
  xorpd  D24(%rip),%xmm0
  divsd  0x10(%rsp),%xmm0
  movq   %xmm0,%r12
  andpd  D118(%rip),%xmm0
  comisd D102(%rip),%xmm0
  jbe    L191
  movq   %rbx,%xmm0
  divsd  0x18(%rsp),%xmm0
  call   <log@plt>
  movq   %r12,%xmm4
  subsd  %xmm0,%xmm4
  movq   %xmm4,%r12
L186:
  movq   %r14,%xmm3
  divsd  0x8(%rsp),%xmm3
  movq   %xmm3,%rbx
  movapd %xmm3,%xmm0
  andpd  D118(%rip),%xmm0
  comisd D102(%rip),%xmm0
  jbe    L44
  movq   %rbp,%xmm0
  divsd  0x20(%rsp),%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm0
  subsd  %xmm1,%xmm0
L77:
  movq   %r12,%xmm1
  mulsd  0x10(%rsp),%xmm1
  mulsd  0x8(%rsp),%xmm0
  addsd  %xmm1,%xmm0
  xorpd  D24(%rip),%xmm0
  call   <exp@plt>
  movq   %xmm0,%rbx
  movsd  0x18(%rsp),%xmm0
  mulsd  0x8(%rsp),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L149
  sqrtsd %xmm0,%xmm0
L212:
  mulsd  D169(%rip),%xmm0
  movq   %rbx,%xmm6
  mulsd  %xmm0,%xmm6
  movsd  %xmm6,0x18(%rsp)
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm0
  call   <bcorr@plt>
  xorpd  D24(%rip),%xmm0
  call   <exp@plt>
  mulsd  0x18(%rsp),%xmm0
  movq   %xmm0,%rbx
  jmp    L294
L191:
  movq   %r12,%xmm0
  call   <rlog1@plt>
  movq   %xmm0,%r12
  jmp    L186
L44:
  movapd %xmm3,%xmm0
  call   <rlog1@plt>
  jmp    L77
L149:
  call   <sqrt@plt>
  jmp    L212
L76:
  mov    D99(%rip),%rbx
L294:
  movq   %rbx,%xmm0
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r14
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D99
datatype: f64
name: unpack_data
arguments: data_tag: D174
datatype: f64[2]
name: unpack_data
arguments: data_tag: D324
datatype: byte[16]
name: unpack_data
arguments: data_tag: D24
datatype: byte[16]
name: unpack_data
arguments: data_tag: D138
datatype: f64[2]
name: unpack_data
arguments: data_tag: D118
datatype: qword[2]
name: unpack_data
arguments: data_tag: D102
datatype: byte[16]
name: unpack_data
arguments: data_tag: D169
datatype: byte[8]

tool: D99: 0

tool: {"D174": [8.0,0.375]}

tool: {"D324": [0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x3f,0x33,0x33,0x33,0x33,0x33,0x33,0xe3,0x3f]}

tool: {"D24": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D138": [1.0,8.0]}

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

tool: {"D102": [0x33,0x33,0x33,0x33,0x33,0x33,0xe3,0x3f,0x56,0x36,0xd4,0x33,0x45,0x88,0xd9,0x3f]}

tool: {"D169": [0x56,0x36,0xd4,0x33,0x45,0x88,0xd9,0x3f]}

assistant: ```c
double brcomp(double a, double b, double x, double y) {
  static double const__ = .398942280401433;
  int i__1;
  double ret_val;
  double c__, e, h__;
  int i__, n;
  double t, u, v, z__, a0, b0, x0, y0, apb, lnx, lny;
  double lambda;
  ret_val = 0.0;
  if (x == 0.0 || y == 0.0) {
    return ret_val;
  }
  a0 = ((a < b) ? a : b);
  if (a0 >= 8.0) {
    goto L100;
  }
  if (x > .375) {
    goto L10;
  }
  lnx = log(x);
  lny = alnrel(-x);
  goto L20;
L10:
  if (y > .375) {
    goto L11;
  }
  lnx = alnrel(-y);
  lny = log(y);
  goto L20;
L11:
  lnx = log(x);
  lny = log(y);
L20:
  z__ = a * lnx + b * lny;
  if (a0 < 1.0) {
    goto L30;
  }
  z__ -= betaln(a, b);
  ret_val = exp(z__);
  return ret_val;
L30:
  b0 = ((a > b) ? a : b);
  if (b0 >= 8.0) {
    goto L80;
  }
  if (b0 > 1.0) {
    goto L60;
  }
  ret_val = exp(z__);
  if (ret_val == 0.0) {
    return ret_val;
  }
  apb = a + b;
  if (apb > 1.0) {
    goto L40;
  }
  z__ = gam1(apb) + 1.0;
  goto L50;
L40:
  u = a + b - 1.;
  z__ = (gam1(u) + 1.0) / apb;
L50:
  c__ = (gam1(a) + 1.0) * (gam1(b) + 1.0) / z__;
  ret_val = ret_val * (a0 * c__) / (a0 / b0 + 1.0);
  return ret_val;
L60:
  u = gamln1(a0);
  n = b0 - 1.0;
  if (n < 1) {
    goto L70;
  }
  c__ = 1.0;
  i__1 = n;
  for (i__ = 1; i__ <= i__1; ++i__) {
    b0 += -1.0;
    c__ *= b0 / (a0 + b0);
  }
  u = log(c__) + u;
L70:
  z__ -= u;
  b0 += -1.0;
  apb = a0 + b0;
  if (apb > 1.0) {
    goto L71;
  }
  t = gam1(apb) + 1.0;
  goto L72;
L71:
  u = a0 + b0 - 1.;
  t = (gam1(u) + 1.0) / apb;
L72:
  ret_val = a0 * exp(z__) * (gam1(b0) + 1.0) / t;
  return ret_val;
L80:
  u = gamln1(a0) + algdiv(a0, b0);
  ret_val = a0 * exp(z__ - u);
  return ret_val;
L100:
  if (a > b) {
    goto L101;
  }
  h__ = a / b;
  x0 = h__ / (h__ + 1.0);
  y0 = 1.0 / (h__ + 1.0);
  lambda = a - (a + b) * x;
  goto L110;
L101:
  h__ = b / a;
  x0 = 1.0 / (h__ + 1.0);
  y0 = h__ / (h__ + 1.0);
  lambda = (a + b) * y - b;
L110:
  e = -lambda / a;
  if (fabs(e) > .6) {
    goto L111;
  }
  u = rlog1(e);
  goto L120;
L111:
  u = e - log(x / x0);
L120:
  e = lambda / b;
  if (fabs(e) > .6) {
    goto L121;
  }
  v = rlog1(e);
  goto L130;
L121:
  v = e - log(y / y0);
L130:
  z__ = exp(-(a * u + b * v));
  ret_val = const__ * sqrt(b * x0) * z__ * exp(-bcorr(a, b));
  return ret_val;
}
```