user: 下面的汇编指令对应的C源代码是什么：

```asm
<interpret_xsq>:
  endbr64
  push   %r14
  movapd %xmm0,%xmm6
  push   %rbp
  push   %rbx
  sub    $0x40,%rsp
  movsd  %xmm0,0x28(%rsp)
  movsd  D349(%rip),%xmm0
  movsd  %xmm2,0x20(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  comisd %xmm1,%xmm0
  ja     L312
  pxor   %xmm7,%xmm7
  comisd %xmm6,%xmm7
  ja     L312
  movsd  D167(%rip),%xmm6
  comisd %xmm2,%xmm6
  ja     L312
  ucomisd %xmm1,%xmm7
  ja     L120
  movapd %xmm1,%xmm3
  sqrtsd %xmm3,%xmm3
L104:
  mulsd  D152(%rip),%xmm3
  movsd  D33(%rip),%xmm2
  movsd  D385(%rip),%xmm6
  movapd %xmm3,%xmm0
  andpd  %xmm2,%xmm0
  ucomisd %xmm0,%xmm6
  ja     L322
L199:
  movapd %xmm1,%xmm7
  mov    $0x1f4,%ebx
  lea    0x34(%rsp),%rbp
  mulsd  %xmm1,%xmm7
  movq   %xmm7,%r14
  jmp    L257
  nopl   0x0(%rax,%rax,1)
L2:
  mulsd  D220(%rip),%xmm3
  movsd  D33(%rip),%xmm2
  movsd  D385(%rip),%xmm6
  movapd %xmm3,%xmm0
  andpd  %xmm2,%xmm0
  ucomisd %xmm0,%xmm6
  jbe    L233
  cvttsd2si %xmm3,%rax
  pxor   %xmm0,%xmm0
  movapd %xmm3,%xmm4
  movsd  D167(%rip),%xmm6
  andnpd %xmm3,%xmm2
  cvtsi2sd %rax,%xmm0
  cmpnlesd %xmm0,%xmm4
  andpd  %xmm6,%xmm4
  addsd  %xmm4,%xmm0
  movapd %xmm0,%xmm3
  orpd   %xmm2,%xmm3
L233:
  sub    $0x1,%ebx
  je     L241
L257:
  movapd %xmm3,%xmm2
  movq   %r14,%xmm4
  movapd %xmm1,%xmm0
  mov    %rbp,%rdi
  maxsd  %xmm1,%xmm2
  subsd  %xmm3,%xmm0
  mulsd  D165(%rip),%xmm2
  mov    $0x3,%eax
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  divsd  %xmm2,%xmm4
  movapd %xmm3,%xmm2
  maxsd  %xmm4,%xmm0
  call   <xsq_to_stddev@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm3
  cmp    $0xffffffff,%eax
  jge    L2
L241:
  pxor   %xmm7,%xmm7
  ucomisd %xmm1,%xmm7
  ja     L80
  movapd %xmm1,%xmm2
  sqrtsd %xmm2,%xmm2
L108:
  mulsd  D5(%rip),%xmm2
  movsd  D33(%rip),%xmm4
  movsd  D385(%rip),%xmm6
  movapd %xmm2,%xmm0
  andpd  %xmm4,%xmm0
  ucomisd %xmm0,%xmm6
  ja     L110
L53:
  mov    $0x1f4,%ebx
  jmp    L170
  nopl   0x0(%rax)
L15:
  mulsd  D220(%rip),%xmm2
  movsd  D33(%rip),%xmm4
  movsd  D385(%rip),%xmm7
  movapd %xmm2,%xmm0
  andpd  %xmm4,%xmm0
  ucomisd %xmm0,%xmm7
  jbe    L301
  cvttsd2si %xmm2,%rax
  pxor   %xmm0,%xmm0
  movapd %xmm2,%xmm5
  movsd  D167(%rip),%xmm7
  andnpd %xmm2,%xmm4
  cvtsi2sd %rax,%xmm0
  cmpnlesd %xmm0,%xmm5
  andpd  %xmm7,%xmm5
  addsd  %xmm5,%xmm0
  movapd %xmm0,%xmm2
  orpd   %xmm4,%xmm2
L301:
  sub    $0x1,%ebx
  je     L267
L170:
  movapd %xmm2,%xmm4
  movq   %r14,%xmm5
  movapd %xmm1,%xmm0
  mov    %rbp,%rdi
  maxsd  %xmm1,%xmm4
  subsd  %xmm2,%xmm0
  mulsd  D165(%rip),%xmm4
  mov    $0x3,%eax
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  divsd  %xmm4,%xmm5
  maxsd  %xmm5,%xmm0
  call   <xsq_to_stddev@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm2
  cmp    $0xfffffffc,%eax
  movsd  0x18(%rsp),%xmm3
  jge    L15
L267:
  comisd 0x20(%rsp),%xmm3
  ja     L48
  comisd 0x20(%rsp),%xmm2
  ja     L289
L14:
  lea    D119(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm1,0x8(%rsp)
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm0
  mov    $0x1,%eax
  call   <print2digits@plt>
  lea    D408(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm1
  mov    $0x1,%eax
  movapd %xmm1,%xmm0
  call   <print2digits@plt>
  lea    D257(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x34(%rsp),%edx
  lea    D105(%rip),%rax
  lea    D302(%rip),%rdi
  test   %edx,%edx
  cmove  %rax,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm2
  mov    %rbp,%rdi
  mov    $0x3,%eax
  movsd  0x8(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  call   <xsq_to_stddev@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    $0x1,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <print2digits@plt>
  movsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D82(%rip),%rdi
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  andpd  D33(%rip),%xmm0
  comisd D202(%rip),%xmm0
  ja     L63
  comisd D206(%rip),%xmm0
  ja     L339
  comisd D41(%rip),%xmm0
  ja     L106
  xor    %eax,%eax
  lea    D399(%rip),%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  mov    0x34(%rsp),%eax
  movsd  0x8(%rsp),%xmm0
  test   %eax,%eax
  je     L34
L219:
  comisd D225(%rip),%xmm0
  jbe    L82
  lea    D262(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L271
  nopl   (%rax)
L110:
  cvttsd2si %xmm2,%rax
  pxor   %xmm0,%xmm0
  movapd %xmm2,%xmm5
  movsd  D167(%rip),%xmm7
  andnpd %xmm2,%xmm4
  cvtsi2sd %rax,%xmm0
  cmpnlesd %xmm0,%xmm5
  andpd  %xmm7,%xmm5
  addsd  %xmm5,%xmm0
  movapd %xmm0,%xmm2
  orpd   %xmm4,%xmm2
  jmp    L53
  nopl   0x0(%rax,%rax,1)
L322:
  cvttsd2si %xmm3,%rax
  pxor   %xmm0,%xmm0
  movapd %xmm3,%xmm4
  movsd  D167(%rip),%xmm7
  andnpd %xmm3,%xmm2
  cvtsi2sd %rax,%xmm0
  cmpnlesd %xmm0,%xmm4
  andpd  %xmm7,%xmm4
  addsd  %xmm4,%xmm0
  movapd %xmm0,%xmm3
  orpd   %xmm2,%xmm3
  jmp    L199
  nopl   0x0(%rax,%rax,1)
L63:
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D212(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
L271:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L176
  add    $0x40,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r14
  ret
  nopl   (%rax)
L289:
  lea    D37(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  call   <print2digits@plt>
  lea    D271(%rip),%rdi
  call   <puts@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  movsd  0x10(%rsp),%xmm1
  jmp    L14
  nopl   0x0(%rax)
L48:
  lea    D14(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm3,0x8(%rsp)
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm3
  mov    $0x1,%eax
  movapd %xmm3,%xmm0
  call   <print2digits@plt>
  lea    D86(%rip),%rdi
  call   <puts@plt>
  jmp    L271
  nopl   0x0(%rax)
L106:
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L271
  nopl   (%rax)
L339:
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L271
L82:
  lea    D176(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L271
L34:
  lea    D205(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  jmp    L219
L312:
  movsd  0x20(%rsp),%xmm2
  movsd  0x28(%rsp),%xmm0
  mov    $0x3,%eax
  lea    D185(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L176:
  call   <__stack_chk_fail@plt>
L120:
  movapd %xmm1,%xmm0
  movsd  %xmm1,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x8(%rsp),%xmm1
  movapd %xmm0,%xmm3
  jmp    L104
L80:
  movapd %xmm1,%xmm0
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x10(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm1
  movapd %xmm0,%xmm2
  jmp    L108
```

tool_calls: name: retrieve_data
arguments: data_label: D349
type_infered: f64
name: retrieve_data
arguments: data_label: D167
type_infered: f64
name: retrieve_data
arguments: data_label: D152
type_infered: f64
name: retrieve_data
arguments: data_label: D33
type_infered: qword[2]
name: retrieve_data
arguments: data_label: D385
type_infered: f32[2]
name: retrieve_data
arguments: data_label: D220
type_infered: f64
name: retrieve_data
arguments: data_label: D165
type_infered: f32[2]
name: retrieve_data
arguments: data_label: D5
type_infered: f64
name: retrieve_data
arguments: data_label: D119
type_infered: string
name: retrieve_data
arguments: data_label: D408
type_infered: string
name: retrieve_data
arguments: data_label: D257
type_infered: string
name: retrieve_data
arguments: data_label: D105
type_infered: string
name: retrieve_data
arguments: data_label: D302
type_infered: string
name: retrieve_data
arguments: data_label: D82
type_infered: string
name: retrieve_data
arguments: data_label: D202
type_infered: f64[2]
name: retrieve_data
arguments: data_label: D206
type_infered: f64[2]
name: retrieve_data
arguments: data_label: D41
type_infered: f64[2]
name: retrieve_data
arguments: data_label: D399
type_infered: string
name: retrieve_data
arguments: data_label: D225
type_infered: f64[2]
name: retrieve_data
arguments: data_label: D262
type_infered: string
name: retrieve_data
arguments: data_label: D212
type_infered: string
name: retrieve_data
arguments: data_label: D37
type_infered: string
name: retrieve_data
arguments: data_label: D271
type_infered: string
name: retrieve_data
arguments: data_label: D84
type_infered: string
name: retrieve_data
arguments: data_label: D14
type_infered: string
name: retrieve_data
arguments: data_label: D86
type_infered: string
name: retrieve_data
arguments: data_label: D28
type_infered: string
name: retrieve_data
arguments: data_label: D63
type_infered: string
name: retrieve_data
arguments: data_label: D176
type_infered: string
name: retrieve_data
arguments: data_label: D205
type_infered: string
name: retrieve_data
arguments: data_label: D185
type_infered: string

tool: D349: 2

tool: D167: 1

tool: D152: 3

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

tool: {"D385": [0.0,176.0]}

tool: D220: 1.1

tool: {"D165": [0.0,2.25]}

tool: D5: 7

tool: D119:   X^2 = 

tool: D408: , k = 

tool: D257: , equivalent normal standard deviation 

tool: D105: ~ 

tool: D302: = 

tool: D82: 


tool: {"D202": [6.1,4.9]}

tool: {"D206": [4.9,2.6]}

tool: {"D41": [2.6,1.645]}

tool: D399:   This message should appear 

tool: {"D225": [1.645,0.0]}

tool: D262: 10%% of the time.


tool: D212:   THIS RNG IS FAULTY!  Confidence level p > 1-1.0e-9

tool: D37:   Note: at least 

tool: D271:  random generates are needed

tool: D84:     for a two-tailed test with confidence p > 1-1.0e-6

tool: D14:   This test requires 

tool: D86:  or more random generates.

tool: D28:   This rng may be faulty.  Confidence level p > 1-1.0e-3

tool: D63:   This rng is faulty!  Confidence level p > 1-1.0e-6

tool: D176: 90%% of the time.


tool: D205: about 

tool: D185: Argument error in interpret_xsq(%f,%f,%f)!


assistant: ```c
extern void interpret_xsq(xsq, k, n) double xsq, k, n;
{
  double stddev;
  int i;
  int robust;
  int accurate;
  double nrobust, ngiveup;
  double smallxsq;
  if (k < 2.0 || xsq < 0.0 || n < 1.0) {
    printf("Argument error in interpret_xsq(%f,%f,%f)!\n", xsq, k, n);
    exit(1);
  }
  ngiveup = ceil(3.0 * sqrt(k));
  for (i = 0; i < 500; i++) {
    smallxsq = (((k - ngiveup) > (k * k / (4 * (((ngiveup) > (k)) ? (ngiveup) : (k))))) ? (k - ngiveup) : (k * k / (4 * (((ngiveup) > (k)) ? (ngiveup) : (k)))));
    if (xsq_to_stddev(smallxsq, k, ngiveup, &accurate) < -1.645)
      break;
    ngiveup = ceil(ngiveup * 1.1);
  }
  nrobust = ceil(7.0 * sqrt(k));
  for (i = 0; i < 500; i++) {
    smallxsq = (((k - nrobust) > (k * k / (4 * (((nrobust) > (k)) ? (nrobust) : (k))))) ? (k - nrobust) : (k * k / (4 * (((nrobust) > (k)) ? (nrobust) : (k)))));
    if (xsq_to_stddev(smallxsq, k, nrobust, &accurate) < -4.892)
      break;
    nrobust = ceil(nrobust * 1.1);
  }
  if (n < ngiveup) {
    printf("  This test requires ");
    print2digits(ngiveup);
    printf(" or more random generates.\n");
    return;
  }
  if (n < nrobust) {
    printf("  Note: at least ");
    print2digits(nrobust);
    printf(" random generates are needed\n");
    printf("    for a two-tailed test with confidence p > 1-1.0e-6\n");
  };
  printf("  X^2 = ");
  print2digits(xsq);
  printf(", k = ");
  print2digits(k);
  printf(", equivalent normal standard deviation ");
  printf(accurate ? "= " : "~ ");
  stddev = xsq_to_stddev(xsq, k, n, &accurate);
  print2digits(stddev);
  printf("\n", stddev);
  if (fabs(stddev) > 6.1) {
    printf("\n");
    printf("  THIS RNG IS FAULTY!  Confidence level p > 1-1.0e-9\n");
    printf("\n");
  } else if (fabs(stddev) > 4.9) {
    printf("\n");
    printf("  This rng is faulty!  Confidence level p > 1-1.0e-6\n");
    printf("\n");
  } else if (fabs(stddev) > 2.6) {
    printf("\n");
    printf("  This rng may be faulty.  Confidence level p > 1-1.0e-3\n");
    printf("\n");
  } else {
    printf("  This message should appear ");
    if (!accurate) {
      printf("about ");
    }
    if (fabs(stddev) > 1.645) {
      printf("10%% of the time.\n");
    } else {
      printf("90%% of the time.\n");
    }
  }
}
```