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

```asm
<calc_L1>:
  endbr64
  sub    $0x18,%rsp
  movsd  D11(%rip),%xmm5
  movapd %xmm0,%xmm1
  addsd  %xmm5,%xmm1
  divsd  %xmm1,%xmm5
  divsd  %xmm1,%xmm0
  movapd %xmm5,%xmm3
  xorpd  D46(%rip),%xmm3
  movapd %xmm5,%xmm8
  mulsd  D72(%rip),%xmm8
  movapd %xmm0,%xmm11
  addsd  %xmm0,%xmm11
  movapd %xmm0,%xmm4
  mov    $0x0,%eax
  pxor   %xmm6,%xmm6
  movsd  %xmm6,0x8(%rsp)
  movsd  D11(%rip),%xmm10
  movapd %xmm6,%xmm9
  movq   D46(%rip),%xmm7
  movq   D60(%rip),%xmm6
  jmp    L22
L7:
  movapd %xmm3,%xmm2
  addsd  %xmm4,%xmm2
  mulsd  D83(%rip),%xmm2
  movapd %xmm2,%xmm1
  subsd  0x8(%rsp),%xmm1
  movsd  %xmm2,0x8(%rsp)
L20:
  add    $0x1,%eax
  andpd  %xmm6,%xmm1
  comisd D29(%rip),%xmm1
  jbe    L25
  cmp    $0x63,%eax
  jg     L25
L22:
  movsd  0x8(%rsp),%xmm15
  movapd %xmm15,%xmm2
  subsd  %xmm0,%xmm2
  movapd %xmm2,%xmm14
  mulsd  %xmm2,%xmm14
  movapd %xmm15,%xmm12
  addsd  %xmm5,%xmm12
  movapd %xmm12,%xmm13
  mulsd  %xmm12,%xmm13
  movapd %xmm5,%xmm1
  divsd  %xmm14,%xmm1
  movapd %xmm0,%xmm15
  divsd  %xmm13,%xmm15
  subsd  %xmm15,%xmm1
  movsd  0x8(%rsp),%xmm15
  addsd  %xmm15,%xmm1
  mulsd  %xmm14,%xmm2
  movapd %xmm8,%xmm14
  divsd  %xmm2,%xmm14
  mulsd  %xmm12,%xmm13
  movapd %xmm11,%xmm2
  divsd  %xmm13,%xmm2
  addsd  %xmm14,%xmm2
  addsd  %xmm10,%xmm2
  movapd %xmm9,%xmm12
  cmpnltsd %xmm1,%xmm12
  andpd  %xmm12,%xmm4
  andnpd %xmm15,%xmm12
  orpd   %xmm12,%xmm4
  movapd %xmm1,%xmm12
  pxor   %xmm13,%xmm13
  cmpnltsd %xmm13,%xmm12
  andpd  %xmm12,%xmm3
  andnpd %xmm15,%xmm12
  orpd   %xmm12,%xmm3
  xorpd  %xmm7,%xmm1
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm15
  comisd %xmm15,%xmm3
  jae    L7
  comisd %xmm4,%xmm15
  jae    L7
  movsd  %xmm15,0x8(%rsp)
  jmp    L20
L25:
  movsd  0x8(%rsp),%xmm1
  addsd  %xmm5,%xmm1
  movapd %xmm5,%xmm0
  lea    D41(%rip),%rdi
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  add    $0x18,%rsp
  ret
```

tool_calls: name: read_data
arguments: data_tag: D11
type: f64
name: read_data
arguments: data_tag: D46
type: f32[4]
name: read_data
arguments: data_tag: D72
type: f32[2]
name: read_data
arguments: data_tag: D60
type: qword
name: read_data
arguments: data_tag: D83
type: f64
name: read_data
arguments: data_tag: D29
type: byte[16]
name: read_data
arguments: data_tag: D41
type: string

tool: D11: 1

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

tool: {"D72": [0.0,-2.0]}

tool: D60: 9223372036854775807

tool: D83: 0.5

tool: {"D29": [0x11,0xea,0x2d,0x81,0x99,0x97,0x71,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: D41: From M2: CM=%.6lf L1=%.6lf


assistant: ```c
double calc_L1(double Q) {
  double x = 0.0;
  double M1 = 1.0 / (1 + Q);
  double M2 = Q / (1 + Q);
  double a1 = Q / (1 + Q);
  double a2 = 1.0 / (1 + Q);
  double xa = -a2;
  double xb = a1;
  double dx = 10.0;
  double f, df;
  int i = 0;
  while (fabs(dx) > 1.0e-12 && i < 100) {
    double d1 = x - a1;
    double d2 = x + a2;
    f = M1 / (d1 * d1) - M2 / (d2 * d2) + x;
    df = -2 * M1 / (d1 * d1 * d1) + 2 * M2 / (d2 * d2 * d2) + 1;
    if (f > 0.0)
      xb = x;
    if (f < 0.0)
      xa = x;
    dx = -f / df;
    if (x + dx <= xa || x + dx >= xb) {
      dx = 0.5 * (xa + xb) - x;
      x = 0.5 * (xa + xb);
    } else
      x += dx;
    i += 1;
  }
  printf("From M2: CM=%.6lf L1=%.6lf\n", a2, a2 + x);
  return x;
}
```