user: 请将以下的汇编代码转换成C语言代码：

```asm
<PopCSn>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r12
  push   %rbx
  sub    $0x100,%rsp
  mov    %edi,-0xd4(%rbp)
  movsd  %xmm0,-0xe0(%rbp)
  mov    %esi,-0xd8(%rbp)
  movsd  %xmm1,-0xe8(%rbp)
  movsd  %xmm2,-0xf0(%rbp)
  movsd  %xmm3,-0xf8(%rbp)
  mov    %rdx,-0x100(%rbp)
  movl   $0x0,-0xcc(%rbp)
  movl   $0x0,-0xc8(%rbp)
  movl   $0x0,-0xc4(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x80(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D405(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D134(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D77(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0xe0(%rbp),%xmm1
  movsd  D51(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  -0xf0(%rbp),%xmm0
  divsd  -0xe8(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x70(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D142(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  mov    -0xd4(%rbp),%eax
  sub    $0x6,%eax
  mov    %eax,-0xc8(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc8(%rbp),%xmm1
  movsd  D323(%rip),%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  D59(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc8(%rbp),%xmm2
  movsd  D359(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0xc8(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xc8(%rbp),%xmm2
  movsd  D433(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc8(%rbp),%xmm1
  mulsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc8(%rbp),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  D35(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x108(%rbp)
  mov    D129(%rip),%rdx
  mov    -0xd8(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movsd  -0x108(%rbp),%xmm1
  divsd  %xmm0,%xmm1
  movsd  D50(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x108(%rbp)
  mov    D245(%rip),%rdx
  mov    -0xd8(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x108(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x70(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  mov    -0x18(%rbp),%rdx
  mov    -0xd8(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <pow@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x108(%rbp),%xmm5
  divsd  %xmm0,%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  mov    %eax,%esi
  mov    $0xffffffff,%eax
  cltd
  idiv   %esi
  add    $0x1,%eax
  imul   -0xd8(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x60(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  cmpl   $0xa,-0xd8(%rbp)
  jle    L92
  movsd  -0xa8(%rbp),%xmm1
  movsd  D121(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
L92:
  movsd  -0xa8(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0xf8(%rbp),%xmm0
  jbe    L35
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0xf8(%rbp)
L35:
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xd8(%rbp),%xmm1
  movsd  D266(%rip),%xmm0
  addsd  %xmm1,%xmm0
  subsd  -0xa8(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0xc4(%rbp)
  cmpl   $0x0,-0xc4(%rbp)
  jg     L62
  movl   $0x1,-0xc4(%rbp)
L62:
  cmpl   $0x12,-0xc4(%rbp)
  jle    L56
  mov    -0xc4(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x3,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x3,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  jmp    L88
L56:
  cmpl   $0xa,-0xc4(%rbp)
  jle    L49
  mov    -0xc4(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x38e38e39,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  jmp    L88
L49:
  cmpl   $0x2,-0xc4(%rbp)
  jle    L47
  mov    -0xc4(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  jmp    L88
L47:
  movsd  D59(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
L88:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movl   $0x1,-0xcc(%rbp)
  jmp    L85
L143:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0xcc(%rbp),%xmm0
  movsd  -0xc0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  addl   $0x1,-0xcc(%rbp)
L85:
  mov    -0xcc(%rbp),%eax
  cmp    -0xd8(%rbp),%eax
  jle    L143
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xd8(%rbp),%xmm1
  movsd  -0xc0(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0xc0(%rbp),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x98(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D55(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  divsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D72(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0xe0(%rbp),%xmm1
  movsd  D328(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D239(%rip),%xmm1
  divsd  -0x20(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  subsd  -0xf8(%rbp),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movq   D423(%rip),%xmm1
  movapd %xmm0,%xmm3
  xorpd  %xmm1,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0x108(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0xa8(%rbp),%xmm1
  movsd  D59(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  -0xa8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  mov    D129(%rip),%rdx
  mov    -0xd8(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <pow@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D405(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  comisd -0x78(%rbp),%xmm0
  jb     L78
  movl   $0x0,-0xcc(%rbp)
  jmp    L4
L198:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0xcc(%rbp),%xmm0
  movapd %xmm0,%xmm1
  subsd  -0xa8(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0xcc(%rbp),%xmm0
  subsd  -0xa8(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x40(%rbp),%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  comisd D189(%rip),%xmm0
  jbe    L118
  movsd  D189(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
L118:
  movsd  -0x40(%rbp),%xmm1
  movsd  D358(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <sqrt@plt>
  mov    %eax,%ebx
  mov    -0xa0(%rbp),%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  imul   %eax,%ebx
  mov    %ebx,%esi
  mov    $0x1,%eax
  cltd
  idiv   %esi
  mov    %eax,%ecx
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %ecx,%xmm0
  movsd  %xmm0,(%rax)
  movsd  (%rax),%xmm0
  movsd  -0xc0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  addl   $0x1,-0xcc(%rbp)
L4:
  mov    -0xcc(%rbp),%eax
  cmp    -0xd8(%rbp),%eax
  jle    L198
  jmp    L279
L78:
  mov    -0xd8(%rbp),%eax
  add    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  -0xa8(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  divsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movl   $0x0,-0xcc(%rbp)
  jmp    L124
L287:
  mov    -0xd8(%rbp),%eax
  sub    -0xcc(%rbp),%eax
  add    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x38(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x50(%rbp),%xmm0
  comisd -0xb0(%rbp),%xmm0
  jbe    L151
  movsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
L151:
  addl   $0x1,-0xcc(%rbp)
L124:
  mov    -0xcc(%rbp),%eax
  cmp    -0xd8(%rbp),%eax
  jle    L287
  movl   $0x0,-0xcc(%rbp)
  jmp    L53
L32:
  mov    -0xd8(%rbp),%eax
  sub    -0xcc(%rbp),%eax
  add    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x38(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D87(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L195
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  comisd D252(%rip),%xmm0
  jb     L195
  movsd  -0x48(%rbp),%xmm1
  movsd  D266(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x108(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <log@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <abs@plt>
  movsd  -0x108(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D328(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L195
  movsd  D255(%rip),%xmm0
  comisd -0xb0(%rbp),%xmm0
  jb     L195
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D59(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rdx
  movsd  -0x50(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  movq   %rdx,%xmm0
  mov    %eax,%edi
  call   <pow@plt>
  mov    %eax,%ebx
  movsd  -0x50(%rbp),%xmm0
  movq   D423(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  imul   %eax,%ebx
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    $0x2,%edi
  call   <pow@plt>
  mov    %eax,%r12d
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <lgamma@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  mov    %r12d,%edx
  imul   %eax,%edx
  mov    %edx,%esi
  mov    %ebx,%eax
  cltd
  idiv   %esi
  mov    %eax,%ecx
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %ecx,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L251
L195:
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D59(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x50(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%edi
  call   <log@plt>
  mulsd  -0x108(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  movsd  D406(%rip),%xmm2
  divsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  movapd %xmm0,%xmm7
  divsd  %xmm1,%xmm7
  movsd  %xmm7,-0x110(%rbp)
  mov    $0x2,%edi
  call   <log@plt>
  mulsd  -0x110(%rbp),%xmm0
  movsd  -0x108(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x108(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movsd  D406(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <lgamma@plt>
  movsd  -0x108(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  mov    %eax,%edx
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x100(%rbp),%rax
  add    %rcx,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  movsd  %xmm0,(%rax)
L251:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0xc0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  addl   $0x1,-0xcc(%rbp)
L53:
  mov    -0xcc(%rbp),%eax
  cmp    -0xd8(%rbp),%eax
  jle    L32
L279:
  movl   $0x0,-0xc8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movl   $0x0,-0xcc(%rbp)
  jmp    L285
L218:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0xb8(%rbp),%xmm0
  jbe    L25
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0xcc(%rbp),%eax
  mov    %eax,-0xc8(%rbp)
L25:
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0xcc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x100(%rbp),%rax
  add    %rdx,%rax
  divsd  -0xc0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xcc(%rbp)
L285:
  mov    -0xcc(%rbp),%eax
  cmp    -0xd8(%rbp),%eax
  jle    L218
  mov    -0xc8(%rbp),%eax
  add    $0x100,%rsp
  pop    %rbx
  pop    %r12
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D405
data_type: f64
name: retrieve_data
arguments: label: D134
data_type: f64
name: retrieve_data
arguments: label: D77
data_type: f64
name: retrieve_data
arguments: label: D51
data_type: f32[2]
name: retrieve_data
arguments: label: D142
data_type: f64
name: retrieve_data
arguments: label: D323
data_type: byte[8]
name: retrieve_data
arguments: label: D59
data_type: f64
name: retrieve_data
arguments: label: D359
data_type: byte[8]
name: retrieve_data
arguments: label: D433
data_type: byte[8]
name: retrieve_data
arguments: label: D35
data_type: f64
name: retrieve_data
arguments: label: D129
data_type: f64
name: retrieve_data
arguments: label: D50
data_type: f64
name: retrieve_data
arguments: label: D245
data_type: f64
name: retrieve_data
arguments: label: D121
data_type: f64
name: retrieve_data
arguments: label: D266
data_type: f64
name: retrieve_data
arguments: label: D55
data_type: f64
name: retrieve_data
arguments: label: D72
data_type: f64
name: retrieve_data
arguments: label: D328
data_type: f32[2]
name: retrieve_data
arguments: label: D239
data_type: f32[2]
name: retrieve_data
arguments: label: D423
data_type: f32[2]
name: retrieve_data
arguments: label: D189
data_type: f32[4]
name: retrieve_data
arguments: label: D358
data_type: byte[8]
name: retrieve_data
arguments: label: D406
data_type: f32[2]
name: retrieve_data
arguments: label: D87
data_type: f64
name: retrieve_data
arguments: label: D252
data_type: byte[16]
name: retrieve_data
arguments: label: D255
data_type: f32[2]

tool: D405: 360000000

tool: D134: 3.8585

tool: D77: 0.447

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

tool: D142: 1389200000

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

tool: D59: 1

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

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

tool: D35: 0.0571

tool: D129: 0.45

tool: D50: 0.426

tool: D245: 0.4

tool: D121: 0.2

tool: D266: 0.5

tool: D55: 0.529

tool: D72: 3.141592654

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

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

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

tool: {"D189": [0.0,3.0625,3612424011776.0,2.3926990032196045]}

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

tool: {"D406": [0.0,2.0]}

tool: D87: 57.5

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

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