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

```asm
<brcomp>:
  endbr64
  pxor   %xmm7,%xmm7
  mov    $0x0,%edx
  ucomisd %xmm7,%xmm2
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L62
  ucomisd %xmm7,%xmm3
  setnp  %dl
  cmove  %edx,%eax
  test   %al,%al
  jne    L62
  movapd %xmm0,%xmm6
  sub    $0x48,%rsp
  movapd %xmm0,%xmm4
  minsd  %xmm1,%xmm6
  comisd D7(%rip),%xmm6
  jae    L108
  movsd  D100(%rip),%xmm0
  comisd %xmm0,%xmm2
  jbe    L92
  comisd %xmm0,%xmm3
  ja     L116
  movapd %xmm3,%xmm0
  xorpd  D218(%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
L54:
  mulsd  %xmm4,%xmm5
  mulsd  %xmm1,%xmm0
  movapd %xmm5,%xmm2
  movsd  D119(%rip),%xmm5
  addsd  %xmm0,%xmm2
  comisd %xmm6,%xmm5
  ja     L226
  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)
L108:
  comisd %xmm1,%xmm4
  addsd  %xmm1,%xmm0
  ja     L122
  movsd  D119(%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)
L138:
  movapd %xmm6,%xmm5
  xorpd  D218(%rip),%xmm5
  movq   D111(%rip),%xmm7
  divsd  %xmm4,%xmm5
  movapd %xmm5,%xmm0
  andpd  %xmm7,%xmm0
  comisd D117(%rip),%xmm0
  jbe    L77
  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   D111(%rip),%xmm7
L104:
  divsd  %xmm1,%xmm6
  andpd  %xmm6,%xmm7
  comisd D117(%rip),%xmm7
  jbe    L146
  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
L217:
  mulsd  %xmm4,%xmm5
  movsd  %xmm4,0x18(%rsp)
  mulsd  %xmm1,%xmm6
  movsd  %xmm1,0x10(%rsp)
  addsd  %xmm6,%xmm5
  xorpd  D218(%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     L244
  sqrtsd %xmm0,%xmm0
L101:
  mulsd  D49(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <bcorr@plt>
  xorpd  D218(%rip),%xmm0
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm0,%xmm7
L181:
  movapd %xmm7,%xmm0
  add    $0x48,%rsp
  ret
  nopl   0x0(%rax)
L62:
  pxor   %xmm7,%xmm7
  movapd %xmm7,%xmm0
  ret
  nopl   0x0(%rax)
L116:
  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    L54
  nopl   0x0(%rax,%rax,1)
L122:
  movsd  D119(%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    L138
  nopl   (%rax)
L226:
  movapd %xmm4,%xmm3
  maxsd  %xmm1,%xmm3
  comisd D7(%rip),%xmm3
  jae    L231
  comisd %xmm5,%xmm3
  ja     L253
  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    D119(%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     L68
  je     L181
L68:
  movapd %xmm4,%xmm2
  addsd  %xmm1,%xmm2
  comisd %xmm5,%xmm2
  jbe    L127
  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    D119(%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)
L225:
  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    D119(%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    L181
  nopl   0x0(%rax,%rax,1)
L92:
  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  D218(%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    L54
  nopl   0x0(%rax,%rax,1)
L146:
  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    L217
  cs nopw 0x0(%rax,%rax,1)
L77:
  movapd %xmm5,%xmm0
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm1,0x28(%rsp)
  movsd  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  call   <rlog1@plt>
  movq   D111(%rip),%xmm7
  movsd  0x30(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm4
  movapd %xmm0,%xmm5
  movsd  0x18(%rsp),%xmm6
  jmp    L104
  nopw   0x0(%rax,%rax,1)
L253:
  movapd %xmm6,%xmm0
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <gamln1@plt>
  movsd  0x18(%rsp),%xmm3
  mov    D119(%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    L113
  add    $0x1,%edx
  mov    $0x1,%eax
  movapd %xmm5,%xmm0
  nopl   0x0(%rax)
L69:
  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    L69
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm7,0x8(%rsp)
  call   <log@plt>
  mov    D119(%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
L113:
  movapd %xmm6,%xmm3
  subsd  %xmm7,%xmm2
  addsd  %xmm1,%xmm3
  comisd %xmm5,%xmm3
  jbe    L28
  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    D119(%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)
L279:
  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    D119(%rip),%rax
  movapd %xmm0,%xmm7
  movq   %rax,%xmm5
  addsd  %xmm5,%xmm7
  mulsd  0x8(%rsp),%xmm7
  divsd  0x18(%rsp),%xmm7
  jmp    L181
  nopw   0x0(%rax,%rax,1)
L28:
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <gam1@plt>
  mov    D119(%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    L279
L127:
  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    D119(%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    L225
L231:
  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    L181
L244:
  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    L101
```

tool_calls: name: read_data
arguments: data_label: D7
datatype: f64[2]
name: read_data
arguments: data_label: D100
datatype: f32[2]
name: read_data
arguments: data_label: D218
datatype: f32[4]
name: read_data
arguments: data_label: D119
datatype: f64
name: read_data
arguments: data_label: D111
datatype: qword
name: read_data
arguments: data_label: D117
datatype: byte[16]
name: read_data
arguments: data_label: D49
datatype: byte[8]

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

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

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

tool: D119: 1

tool: D111: 9223372036854775807

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

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