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

```asm
<PopCSn>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %edi,%r15d
  mov    %esi,%ebp
  movq   %xmm3,%r13
  mov    %rdx,%rbx
  mulsd  D36(%rip),%xmm0
  movq   %xmm0,%r12
  divsd  %xmm1,%xmm2
  cvttsd2si %xmm2,%r14d
  mov    %r14d,%edi
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  D370(%rip),%xmm0
  movsd  %xmm0,0x10(%rsp)
  sub    $0x6,%r15d
  pxor   %xmm0,%xmm0
  cvtsi2sd %r15d,%xmm0
  movapd %xmm0,%xmm2
  mulsd  D97(%rip),%xmm2
  movsd  D69(%rip),%xmm1
  subsd  %xmm2,%xmm1
  movapd %xmm0,%xmm2
  mulsd  D32(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  addsd  %xmm1,%xmm2
  movapd %xmm0,%xmm5
  mulsd  D20(%rip),%xmm5
  movapd %xmm5,%xmm1
  mulsd  %xmm0,%xmm1
  mulsd  %xmm1,%xmm0
  subsd  %xmm0,%xmm2
  movsd  %xmm2,0x8(%rsp)
  movsd  D286(%rip),%xmm0
  mov    %ebp,%edi
  call   <pow@plt>
  mov    %eax,%r15d
  movsd  D362(%rip),%xmm0
  mov    %ebp,%edi
  call   <pow@plt>
  movsd  0x10(%rsp),%xmm1
  mulsd  D268(%rip),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %r15d,%xmm0
  mulsd  D169(%rip),%xmm0
  divsd  %xmm0,%xmm1
  movsd  D142(%rip),%xmm0
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,0x20(%rsp)
  mov    %r14d,%edi
  call   <sqrt@plt>
  mov    %eax,%r14d
  movsd  D75(%rip),%xmm0
  mov    %ebp,%edi
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %r14d,%xmm0
  mulsd  D54(%rip),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  divsd  %xmm1,%xmm0
  call   <exp@plt>
  mov    %eax,%ecx
  mov    $0xffffffff,%eax
  cltd
  idiv   %ecx
  add    $0x1,%eax
  imul   %ebp,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  cmp    $0xa,%ebp
  jle    L241
  addsd  D297(%rip),%xmm0
  movsd  %xmm0,0x8(%rsp)
L241:
  movq   %r13,%xmm0
  cmpnltsd D171(%rip),%xmm0
  movq   %r13,%xmm1
  andpd  %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm6
  andnpd %xmm6,%xmm0
  orpd   %xmm1,%xmm0
  movq   %xmm0,%r13
  pxor   %xmm3,%xmm3
  cvtsi2sd %ebp,%xmm3
  movapd %xmm3,%xmm0
  addsd  D105(%rip),%xmm0
  subsd  %xmm6,%xmm0
  cvttsd2si %xmm0,%eax
  movsd  D69(%rip),%xmm2
  test   %eax,%eax
  jle    L40
  cmp    $0x12,%eax
  jle    L173
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  sar    $0x23,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
  lea    0x3(%rdx),%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  jmp    L40
L173:
  cmp    $0xa,%eax
  jle    L151
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  sar    $0x22,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
  lea    0x2(%rdx),%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
L40:
  test   %ebp,%ebp
  jle    L82
  lea    0x1(%rbp),%edx
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
L135:
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  addsd  %xmm1,%xmm0
  add    $0x1,%eax
  cmp    %edx,%eax
  jne    L135
L245:
  mulsd  %xmm2,%xmm2
  mulsd  D58(%rip),%xmm2
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm1,%xmm0
  subsd  %xmm0,%xmm3
  divsd  %xmm3,%xmm2
  movapd %xmm2,%xmm1
  mulsd  D77(%rip),%xmm1
  movsd  0x8(%rsp),%xmm7
  movq   %r13,%xmm3
  subsd  %xmm3,%xmm7
  movsd  %xmm7,0x18(%rsp)
  movq   %r12,%xmm0
  mulsd  D227(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  movsd  D340(%rip),%xmm1
  divsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  xorpd  D289(%rip),%xmm0
  call   <exp@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  movsd  0x8(%rsp),%xmm2
  divsd  %xmm2,%xmm0
  movsd  D69(%rip),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x18(%rsp)
  movsd  D286(%rip),%xmm0
  mov    %ebp,%edi
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  D169(%rip),%xmm0
  comisd 0x10(%rsp),%xmm0
  jb     L150
  test   %ebp,%ebp
  js     L236
  movsd  0x20(%rsp),%xmm7
  movapd %xmm7,%xmm0
  addsd  %xmm7,%xmm0
  mulsd  %xmm7,%xmm0
  movsd  %xmm0,0x20(%rsp)
  mulsd  D164(%rip),%xmm7
  cvttsd2si %xmm7,%r14d
  mov    $0x0,%r12d
  pxor   %xmm7,%xmm7
  movsd  %xmm7,0x8(%rsp)
  mov    $0x1,%r13d
L79:
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  subsd  0x18(%rsp),%xmm0
  mulsd  %xmm0,%xmm0
  divsd  0x20(%rsp),%xmm0
  movapd %xmm0,%xmm4
  movsd  D221(%rip),%xmm0
  cmpnltsd %xmm4,%xmm0
  andpd  %xmm0,%xmm4
  movsd  D221(%rip),%xmm7
  andnpd %xmm7,%xmm0
  orpd   %xmm4,%xmm0
  movsd  %xmm0,0x10(%rsp)
  mov    %r14d,%edi
  call   <sqrt@plt>
  mov    %eax,%r15d
  movsd  0x10(%rsp),%xmm0
  call   <exp@plt>
  mov    %r15d,%ecx
  imul   %eax,%ecx
  mov    %r13d,%eax
  cltd
  idiv   %ecx
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,(%rbx,%r12,8)
  addsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  add    $0x1,%r12
  cmp    %r12d,%ebp
  jge    L79
L27:
  mov    $0x0,%eax
  pxor   %xmm1,%xmm1
  mov    $0x0,%edx
L239:
  movsd  (%rbx,%rax,8),%xmm0
  comisd %xmm1,%xmm0
  movapd %xmm0,%xmm5
  maxsd  %xmm1,%xmm5
  movapd %xmm5,%xmm1
  cmova  %eax,%edx
  divsd  0x8(%rsp),%xmm0
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%ebp
  jge    L239
L104:
  mov    %edx,%eax
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L151:
  cmp    $0x2,%eax
  jle    L194
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  sar    $0x22,%rdx
  sar    $0x1f,%eax
  sub    %eax,%edx
  lea    0x1(%rdx),%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  jmp    L40
L194:
  movsd  D69(%rip),%xmm2
  jmp    L40
L82:
  pxor   %xmm0,%xmm0
  jmp    L245
L150:
  lea    0x2(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  0x18(%rsp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  0x20(%rsp),%xmm3
  divsd  %xmm3,%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  mulsd  D105(%rip),%xmm1
  divsd  %xmm3,%xmm0
  movsd  %xmm0,0x18(%rsp)
  test   %ebp,%ebp
  js     L207
  pxor   %xmm5,%xmm5
  movsd  %xmm5,0x28(%rsp)
L158:
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  maxsd  0x28(%rsp),%xmm0
  movsd  %xmm0,0x28(%rsp)
  sub    $0x1,%eax
  cmp    $0x1,%eax
  jne    L158
  mulsd  D105(%rip),%xmm1
  movsd  %xmm1,0x10(%rsp)
  mov    $0x0,%r12d
  pxor   %xmm6,%xmm6
  movsd  %xmm6,0x8(%rsp)
  jmp    L100
L127:
  cvttsd2si 0x20(%rsp),%edi
  call   <log@plt>
  movapd %xmm0,%xmm1
  movsd  0x10(%rsp),%xmm0
  subsd  D69(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  0x20(%rsp),%xmm1
  mulsd  D105(%rip),%xmm1
  movapd %xmm0,%xmm7
  subsd  %xmm1,%xmm7
  movsd  %xmm7,0x20(%rsp)
  mov    $0x2,%edi
  call   <log@plt>
  movq   %xmm0,%r13
  movsd  0x10(%rsp),%xmm0
  call   <lgamma@plt>
  movapd %xmm0,%xmm2
  movq   %r13,%xmm1
  mulsd  0x10(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  subsd  %xmm2,%xmm0
  call   <exp@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,(%rbx,%r12,8)
L66:
  movsd  0x18(%rsp),%xmm0
  mulsd  (%rbx,%r12,8),%xmm0
  movsd  %xmm0,(%rbx,%r12,8)
  addsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  add    $0x1,%r12
  cmp    %r12d,%ebp
  jl     L27
L100:
  lea    0x2(%rbp),%eax
  sub    %r12d,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  0x18(%rsp),%xmm0
  movsd  %xmm0,0x20(%rsp)
  movsd  D48(%rip),%xmm5
  movsd  0x10(%rsp),%xmm3
  comisd %xmm3,%xmm5
  jb     L127
  comisd D187(%rip),%xmm3
  jb     L127
  cvttsd2si 0x28(%rsp),%edi
  call   <log@plt>
  call   <abs@plt>
  mulsd  0x10(%rsp),%xmm0
  movsd  D227(%rip),%xmm1
  comisd %xmm0,%xmm1
  jb     L127
  movsd  D124(%rip),%xmm0
  comisd 0x28(%rsp),%xmm0
  jb     L127
  cvttsd2si 0x20(%rsp),%edi
  movsd  0x10(%rsp),%xmm0
  subsd  D69(%rip),%xmm0
  call   <pow@plt>
  mov    %eax,%r13d
  movsd  0x20(%rsp),%xmm7
  xorpd  D289(%rip),%xmm7
  movapd %xmm7,%xmm0
  mulsd  D105(%rip),%xmm0
  call   <exp@plt>
  imul   %eax,%r13d
  movsd  0x10(%rsp),%xmm0
  mov    $0x2,%edi
  call   <pow@plt>
  mov    %eax,%r14d
  movsd  0x10(%rsp),%xmm0
  call   <lgamma@plt>
  call   <exp@plt>
  mov    %r14d,%ecx
  imul   %eax,%ecx
  mov    %r13d,%eax
  cltd
  idiv   %ecx
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,(%rbx,%r12,8)
  jmp    L66
L236:
  mov    $0x0,%edx
  jmp    L104
L207:
  mov    $0x0,%edx
  jmp    L104
```

tool_calls: name: unpack_data
arguments: tag: D36
data_type: f32[2]
name: unpack_data
arguments: tag: D370
data_type: f64
name: unpack_data
arguments: tag: D97
data_type: byte[8]
name: unpack_data
arguments: tag: D69
data_type: f64
name: unpack_data
arguments: tag: D32
data_type: byte[8]
name: unpack_data
arguments: tag: D20
data_type: byte[8]
name: unpack_data
arguments: tag: D286
data_type: f64
name: unpack_data
arguments: tag: D362
data_type: f64
name: unpack_data
arguments: tag: D268
data_type: f64
name: unpack_data
arguments: tag: D169
data_type: f64
name: unpack_data
arguments: tag: D142
data_type: f64
name: unpack_data
arguments: tag: D75
data_type: f64
name: unpack_data
arguments: tag: D54
data_type: f64
name: unpack_data
arguments: tag: D297
data_type: f64
name: unpack_data
arguments: tag: D171
data_type: f32[2]
name: unpack_data
arguments: tag: D105
data_type: f64
name: unpack_data
arguments: tag: D58
data_type: f64
name: unpack_data
arguments: tag: D77
data_type: f64
name: unpack_data
arguments: tag: D227
data_type: f32[2]
name: unpack_data
arguments: tag: D340
data_type: f32[2]
name: unpack_data
arguments: tag: D289
data_type: f32[4]
name: unpack_data
arguments: tag: D164
data_type: byte[8]
name: unpack_data
arguments: tag: D221
data_type: f32[2]
name: unpack_data
arguments: tag: D48
data_type: f64
name: unpack_data
arguments: tag: D187
data_type: byte[16]
name: unpack_data
arguments: tag: D124
data_type: f32[2]

tool: {"D36": [0.0,4.4765625]}

tool: D370: 1389200000

tool: {"D97": [0x49,0x68,0xcb,0xb9,0x14,0x57,0x75,0x3f]}

tool: D69: 1

tool: {"D32": [0xa5,0x27,0x76,0x7e,0x9b,0x0f,0x19,0x3f]}

tool: {"D20": [0xc9,0x35,0x3d,0xdc,0x99,0xff,0xa3,0x3e]}

tool: D286: 0.45

tool: D362: 0.4

tool: D268: 0.0571

tool: D169: 360000000

tool: D142: 0.426

tool: D75: 0.447

tool: D54: 3.8585

tool: D297: 0.2

tool: {"D171": [0.0,0.0]}

tool: D105: 0.5

tool: D58: 0.529

tool: D77: 3.141592654

tool: {"D227": [0.0,3.140625]}

tool: {"D340": [0.0,2.5625]}

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

tool: {"D164": [0x50,0x45,0x52,0x54,0xfb,0x21,0x19,0x40]}

tool: {"D221": [0.0,3.0625]}

tool: D48: 57.5

tool: {"D187": [0xa0,0xc2,0xeb,0xfe,0x4b,0x48,0xb4,0x39,0x00,0x00,0x00,0x00,0x00,0x40,0x55,0x40]}

tool: {"D124": [0.0,3.33203125]}

assistant: ```c
int PopCSn(int ZTarg, double TT, int ZP, double MP, double E, double QI, double CS[]) {
  int Q = 0, ZT = 0, NE = 0;
  double Sum = 0, Q0 = 0, Width = 0, WP = 0, V = 0, E_A = 0, QInf = 0, ZRat = 0, VP = 3.6E8, A = 3.8585, T = 0, TMax = 0, NU = 0, S = 0, C = 0, IBar = 0, ALam = 0, Arg = 0, Core = 0, N = 0, XSect = 0, B = 0.447;
  TT = TT * 1000;
  E_A = E / MP;
  V = 13.892E8 * sqrt(E_A);
  ZT = ZTarg - 6;
  ZRat = 1.0 - (5.21E-3 * ZT) + (9.56E-5 * ZT * ZT) - (5.96E-7 * ZT * ZT * ZT);
  S = (0.426 - 0.0571 * V / (VP * pow(ZP, 0.45))) * pow(ZP, 0.4);
  IBar = ZP * (1 - 1 / exp(A * sqrt(E_A) / pow(ZP, B))) * ZRat;
  if (ZP > 10)
    IBar += 0.2;
  QInf = IBar;
  if (QI < 0.0)
    QI = QInf;
  NE = (int)(0.5 + ZP - IBar);
  if (NE < 1)
    NE = 1;
  if (NE > 18)
    N = 3 + NE / 36;
  else if (NE > 10)
    N = 2 + NE / 18;
  else if (NE > 2)
    N = 1 + NE / 10;
  else
    N = 1;
  Sum = 0;
  for (Q = 1; Q <= ZP; Q++)
    Sum += Q;
  Core = ZP - 2 * Sum * Sum;
  XSect = N * N * 0.529 / Core;
  XSect = 3.141592654 * XSect * XSect;
  ALam = 50 * TT / (10 / XSect);
  IBar = IBar * (1 - (IBar - QI) * exp(-ALam) / IBar);
  Sum = 0;
  if (V <= 3.6E8 * pow(ZP, 0.45))
    for (Q = 0; Q <= ZP; Q++) {
      Arg = (Q - IBar) * (Q - IBar) / (2 * S * S);
      if (Arg > 40)
        Arg = 40;
      Sum += CS[Q] = 1 / (sqrt(2 * 3.141592654 * S) * exp(Arg));
    }
  else {
    C = 2 * (ZP + 2 - IBar) / S;
    NU = C * C / 2;
    C /= S;
    TMax = 0;
    for (Q = 0; Q <= ZP; Q++)
      if ((T = C * (ZP - Q + 2)) > TMax)
        TMax = T;
    for (Q = 0; Q <= ZP; Q++) {
      T = C * (ZP - Q + 2);
      if (((NU / 2 <= 57.5) && (NU / 2 >= 1E-30)) && (0.5 * NU * abs(log(TMax)) <= 50) && (TMax <= 85))
        CS[Q] = pow(T, NU / 2 - 1) * exp(-T / 2) / (pow(2, NU / 2) * exp(lgamma(NU / 2)));
      else
        CS[Q] = exp((NU / 2 - 1) * log(T) - T / 2 - (NU / 2) * log(2) - lgamma(NU / 2));
      CS[Q] *= C;
      Sum += CS[Q];
    }
  }
  ZT = 0;
  A = 0;
  for (Q = 0; Q <= ZP; Q++) {
    if (CS[Q] > A) {
      A = CS[Q];
      ZT = Q;
    }
    CS[Q] = CS[Q] / Sum;
  };
  return ZT;
}
```