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

```asm
<brcomp>:
  endbr64
  pxor   %xmm7,%xmm7
  mov    $0x0,%edx
  ucomisd %xmm7,%xmm2
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L36
  ucomisd %xmm7,%xmm3
  setnp  %dl
  cmove  %edx,%eax
  test   %al,%al
  jne    L36
  movapd %xmm0,%xmm6
  sub    $0x48,%rsp
  movapd %xmm0,%xmm4
  minsd  %xmm1,%xmm6
  comisd D228(%rip),%xmm6
  jae    L58
  movsd  D241(%rip),%xmm0
  comisd %xmm0,%xmm2
  jbe    L143
  comisd %xmm0,%xmm3
  ja     L82
  movapd %xmm3,%xmm0
  xorpd  D230(%rip),%xmm0
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  call   <alnrel@plt>
  movsd  0x10(%rsp),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm3,%xmm0
  call   <log@plt>
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm6
  movsd  0x8(%rsp),%xmm5
L135:
  mulsd  %xmm4,%xmm5
  mulsd  %xmm1,%xmm0
  movapd %xmm5,%xmm2
  movsd  D29(%rip),%xmm5
  addsd  %xmm0,%xmm2
  comisd %xmm6,%xmm5
  ja     L88
  movapd %xmm4,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <betaln@plt>
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm2
  add    $0x48,%rsp
  cvtsi2sd %rax,%xmm0
  subsd  %xmm0,%xmm2
  movapd %xmm2,%xmm0
  jmp    1160 <exp@plt>
  nopw   0x0(%rax,%rax,1)
L58:
  comisd %xmm1,%xmm4
  addsd  %xmm1,%xmm0
  ja     L101
  movsd  D29(%rip),%xmm7
  mulsd  %xmm2,%xmm0
  movapd %xmm4,%xmm5
  divsd  %xmm1,%xmm5
  movapd %xmm5,%xmm6
  addsd  %xmm7,%xmm6
  divsd  %xmm6,%xmm5
  divsd  %xmm6,%xmm7
  movapd %xmm4,%xmm6
  subsd  %xmm0,%xmm6
  movsd  %xmm5,0x8(%rsp)
  movsd  %xmm7,0x10(%rsp)
L157:
  movapd %xmm6,%xmm5
  xorpd  D230(%rip),%xmm5
  movq   D125(%rip),%xmm7
  divsd  %xmm4,%xmm5
  movapd %xmm5,%xmm0
  andpd  %xmm7,%xmm0
  comisd D249(%rip),%xmm0
  jbe    L245
  divsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm1,0x30(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm5,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  call   <log@plt>
  movsd  0x20(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm4
  movsd  0x30(%rsp),%xmm1
  subsd  %xmm0,%xmm5
  movsd  0x38(%rsp),%xmm3
  movq   D125(%rip),%xmm7
L55:
  divsd  %xmm1,%xmm6
  andpd  %xmm6,%xmm7
  comisd D249(%rip),%xmm7
  jbe    L185
  divsd  0x10(%rsp),%xmm3
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x30(%rsp)
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x20(%rsp)
  movsd  %xmm5,0x18(%rsp)
  call   <log@plt>
  movsd  0x20(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm5
  movsd  0x28(%rsp),%xmm4
  movsd  0x30(%rsp),%xmm1
  subsd  %xmm0,%xmm6
L56:
  mulsd  %xmm4,%xmm5
  movsd  %xmm4,0x18(%rsp)
  mulsd  %xmm1,%xmm6
  movsd  %xmm1,0x10(%rsp)
  addsd  %xmm6,%xmm5
  xorpd  D230(%rip),%xmm5
  movapd %xmm5,%xmm0
  call   <exp@plt>
  movsd  0x10(%rsp),%xmm1
  pxor   %xmm4,%xmm4
  movapd %xmm0,%xmm2
  movsd  0x8(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  ucomisd %xmm0,%xmm4
  movsd  0x18(%rsp),%xmm4
  ja     L66
  sqrtsd %xmm0,%xmm0
L97:
  mulsd  D107(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <bcorr@plt>
  xorpd  D230(%rip),%xmm0
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm0,%xmm7
L275:
  movapd %xmm7,%xmm0
  add    $0x48,%rsp
  ret
  nopl   0x0(%rax)
L36:
  pxor   %xmm7,%xmm7
  movapd %xmm7,%xmm0
  ret
  nopl   0x0(%rax)
L82:
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm3,0x28(%rsp)
  call   <log@plt>
  movsd  0x28(%rsp),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm3,%xmm0
  call   <log@plt>
  movsd  0x8(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm4
  movsd  0x20(%rsp),%xmm1
  jmp    L135
  nopl   0x0(%rax,%rax,1)
L101:
  movsd  D29(%rip),%xmm7
  mulsd  %xmm3,%xmm0
  movapd %xmm1,%xmm5
  divsd  %xmm4,%xmm5
  movapd %xmm5,%xmm6
  addsd  %xmm7,%xmm6
  divsd  %xmm6,%xmm7
  divsd  %xmm6,%xmm5
  movapd %xmm0,%xmm6
  subsd  %xmm1,%xmm6
  movsd  %xmm7,0x8(%rsp)
  movsd  %xmm5,0x10(%rsp)
  jmp    L157
  nopl   (%rax)
L88:
  movapd %xmm4,%xmm3
  maxsd  %xmm1,%xmm3
  comisd D228(%rip),%xmm3
  jae    L79
  comisd %xmm5,%xmm3
  ja     L258
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <exp@plt>
  pxor   %xmm4,%xmm4
  mov    D29(%rip),%rax
  movsd  0x8(%rsp),%xmm6
  ucomisd %xmm4,%xmm0
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm4
  movapd %xmm0,%xmm7
  movsd  0x20(%rsp),%xmm1
  movq   %rax,%xmm5
  jp     L261
  je     L275
L261:
  movapd %xmm4,%xmm2
  addsd  %xmm1,%xmm2
  comisd %xmm5,%xmm2
  jbe    L219
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x38(%rsp)
  subsd  %xmm5,%xmm0
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movsd  0x8(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm3
  movq   %rax,%xmm5
  movsd  0x20(%rsp),%xmm7
  movsd  0x28(%rsp),%xmm4
  addsd  %xmm5,%xmm0
  movsd  0x38(%rsp),%xmm1
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0x30(%rsp)
L160:
  movapd %xmm4,%xmm0
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm1,0x28(%rsp)
  call   <gam1@plt>
  movsd  0x28(%rsp),%xmm1
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm1,%xmm0
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movsd  0x8(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm6
  movsd  0x18(%rsp),%xmm3
  movq   %rax,%xmm5
  movsd  0x20(%rsp),%xmm7
  addsd  %xmm5,%xmm2
  addsd  %xmm5,%xmm0
  movapd %xmm2,%xmm1
  mulsd  %xmm0,%xmm1
  divsd  0x30(%rsp),%xmm1
  mulsd  %xmm6,%xmm1
  divsd  %xmm3,%xmm6
  mulsd  %xmm1,%xmm7
  addsd  %xmm5,%xmm6
  divsd  %xmm6,%xmm7
  jmp    L275
  nopl   0x0(%rax,%rax,1)
L143:
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  call   <log@plt>
  movsd  0x10(%rsp),%xmm2
  xorpd  D230(%rip),%xmm2
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm2,%xmm0
  call   <alnrel@plt>
  movsd  0x8(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm4
  movsd  0x28(%rsp),%xmm1
  jmp    L135
  nopl   0x0(%rax,%rax,1)
L185:
  movapd %xmm6,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm4,0x18(%rsp)
  movsd  %xmm5,0x10(%rsp)
  call   <rlog1@plt>
  movsd  0x20(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm4
  movsd  0x10(%rsp),%xmm5
  movapd %xmm0,%xmm6
  jmp    L56
  cs nopw 0x0(%rax,%rax,1)
L245:
  movapd %xmm5,%xmm0
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  call   <rlog1@plt>
  movq   D125(%rip),%xmm7
  movsd  0x30(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm4
  movapd %xmm0,%xmm5
  movsd  0x18(%rsp),%xmm6
  jmp    L55
  nopw   0x0(%rax,%rax,1)
L258:
  movapd %xmm6,%xmm0
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <gamln1@plt>
  movsd  0x18(%rsp),%xmm3
  mov    D29(%rip),%rax
  movsd  0x8(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm2
  movapd %xmm0,%xmm7
  movapd %xmm3,%xmm1
  movq   %rax,%xmm5
  subsd  %xmm5,%xmm1
  cvttsd2si %xmm1,%edx
  test   %edx,%edx
  jle    L49
  add    $0x1,%edx
  mov    $0x1,%eax
  movapd %xmm5,%xmm0
  nopl   0x0(%rax)
L68:
  subsd  %xmm5,%xmm3
  movapd %xmm6,%xmm4
  add    $0x1,%eax
  addsd  %xmm3,%xmm4
  movapd %xmm3,%xmm1
  divsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm0
  cmp    %edx,%eax
  jne    L68
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm7,0x8(%rsp)
  call   <log@plt>
  mov    D29(%rip),%rax
  movsd  0x20(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm2
  movq   %rax,%xmm5
  movsd  0x10(%rsp),%xmm6
  subsd  %xmm5,%xmm3
  addsd  %xmm0,%xmm7
  movapd %xmm3,%xmm1
L49:
  movapd %xmm6,%xmm3
  subsd  %xmm7,%xmm2
  addsd  %xmm1,%xmm3
  comisd %xmm5,%xmm3
  jbe    L102
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x28(%rsp)
  subsd  %xmm5,%xmm0
  movsd  %xmm2,0x20(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm3,0x8(%rsp)
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movsd  0x8(%rsp),%xmm3
  movsd  0x10(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm2
  movq   %rax,%xmm5
  movsd  0x28(%rsp),%xmm1
  addsd  %xmm5,%xmm0
  divsd  %xmm3,%xmm0
  movsd  %xmm0,0x18(%rsp)
L19:
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm6
  movsd  0x10(%rsp),%xmm1
  mulsd  %xmm6,%xmm0
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm1,%xmm0
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movapd %xmm0,%xmm7
  movq   %rax,%xmm5
  addsd  %xmm5,%xmm7
  mulsd  0x8(%rsp),%xmm7
  divsd  0x18(%rsp),%xmm7
  jmp    L275
  nopw   0x0(%rax,%rax,1)
L102:
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movsd  0x20(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm6
  movq   %rax,%xmm5
  addsd  %xmm5,%xmm0
  movsd  %xmm0,0x18(%rsp)
  jmp    L19
L219:
  movapd %xmm2,%xmm0
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <gam1@plt>
  mov    D29(%rip),%rax
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm7
  movq   %rax,%xmm5
  movsd  0x10(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm6
  addsd  %xmm5,%xmm0
  movsd  %xmm0,0x30(%rsp)
  jmp    L160
L79:
  movapd %xmm6,%xmm0
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm6,0x10(%rsp)
  call   <gamln1@plt>
  movsd  0x10(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm3
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm3,%xmm1
  movapd %xmm6,%xmm0
  call   <algdiv@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm2
  addsd  %xmm0,%xmm1
  subsd  %xmm1,%xmm2
  movapd %xmm2,%xmm0
  call   <exp@plt>
  movsd  0x10(%rsp),%xmm6
  movapd %xmm0,%xmm7
  mulsd  %xmm6,%xmm7
  jmp    L275
L66:
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x18(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  movsd  0x8(%rsp),%xmm2
  jmp    L97
```

tool_calls: name: unpack_data
arguments: data_label: D228
type_guessed: f64[2]
name: unpack_data
arguments: data_label: D241
type_guessed: f32[2]
name: unpack_data
arguments: data_label: D230
type_guessed: f32[4]
name: unpack_data
arguments: data_label: D29
type_guessed: f64
name: unpack_data
arguments: data_label: D125
type_guessed: qword
name: unpack_data
arguments: data_label: D249
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D107
type_guessed: byte[8]

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

tool: {"D241": [0.0,1.6875]}

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

tool: D29: 1

tool: D125: 9223372036854775807

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

tool: {"D107": [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;
}
```