user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<spgam>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x6d8,%rsp
  mov    %rdi,-0x648(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  mov    %rsp,%rax
  cmp    %rax,%rsp
  je     L343
L473:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L473
L343:
  sub    $0xe60,%rsp
  orq    $0x0,0xe58(%rsp)
  lea    0x7(%rsp),%rax
  mov    %rax,%rcx
  and    $0xfffffffffffffff8,%rax
  mov    %rax,-0x698(%rbp)
  shr    $0x3,%rcx
  mov    %rsp,%rax
  mov    %rcx,-0x568(%rbp)
  cmp    %rax,%rsp
  je     L549
L274:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L274
L549:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  mov    %rsp,%rax
  mov    %rsp,-0x5e0(%rbp)
  cmp    %rax,%rsp
  je     L296
L734:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L734
L296:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  mov    %rsp,%rax
  mov    %rsp,%rbx
  cmp    %rax,%rsp
  je     L585
L180:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L180
L585:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  mov    %rsp,%rax
  mov    %rsp,-0x5e8(%rbp)
  cmp    %rax,%rsp
  je     L741
L376:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L376
L741:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  mov    %rsp,%rax
  mov    %rsp,-0x560(%rbp)
  cmp    %rax,%rsp
  je     L69
L228:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rax,%rsp
  jne    L228
L69:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  mov    %rsp,%r13
  mov    %rsp,%rax
L680:
  cmp    %rax,%rsp
  je     L291
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L680
L291:
  sub    $0xc80,%rsp
  orq    $0x0,0xc78(%rsp)
  lea    D201(%rip),%r12
  lea    D252(%rip),%rdi
  mov    %r12,%rsi
  mov    %rsp,-0x5f8(%rbp)
  call   <fopen@plt>
  mov    %rax,%r15
  test   %rax,%rax
  jne    L207
  lea    D597(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L207:
  lea    -0x540(%rbp),%rdx
  lea    -0x4f0(%rbp),%rax
  mov    %r13,-0x570(%rbp)
  mov    %rbx,%r13
  mov    %rdx,-0x650(%rbp)
  mov    %rdx,%r14
  mov    %rdx,%rbx
  mov    %rax,-0x558(%rbp)
L64:
  mov    %rbx,%rdx
  lea    D440(%rip),%rsi
  mov    %r15,%rdi
  add    $0x4,%rbx
  call   <fscanf@plt>
  cmp    -0x558(%rbp),%rbx
  jne    L64
  mov    %r15,%rdi
  mov    %r13,%rbx
  mov    -0x570(%rbp),%r13
  call   <fclose@plt>
  mov    %r12,%rsi
  lea    D690(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%r12
  test   %rax,%rax
  je     L354
L135:
  lea    -0x4a0(%rbp),%rax
  mov    -0x558(%rbp),%r15
  mov    %rax,-0x610(%rbp)
L307:
  mov    %r15,%rdx
  lea    D440(%rip),%rsi
  mov    %r12,%rdi
  add    $0x4,%r15
  call   <fscanf@plt>
  cmp    -0x610(%rbp),%r15
  jne    L307
  mov    %r12,%rdi
  lea    -0x400(%rbp),%r12
  call   <fclose@plt>
  xor    %eax,%eax
  mov    $0x15,%ecx
  pxor   %xmm3,%xmm3
  movss  D161(%rip),%xmm0
  mulss  -0x540(%rbp),%xmm0
  lea    -0x218(%rbp),%rdx
  mov    $0x1,%r11d
  movss  D156(%rip),%xmm2
  mov    -0x698(%rbp),%rdi
  xor    %r10d,%r10d
  pxor   %xmm5,%xmm5
  mov    -0x650(%rbp),%r15
  rep stos %rax,%es:(%rdi)
  movaps %xmm2,%xmm4
  mov    -0x5e0(%rbp),%rdi
  movaps %xmm2,%xmm1
  mov    $0x15,%ecx
  rep stos %rax,%es:(%rdi)
  addss  %xmm2,%xmm0
  mov    -0x5e8(%rbp),%rdi
  mov    $0x15,%ecx
  rep stos %rax,%es:(%rdi)
  mov    -0x568(%rbp),%rax
  mov    -0x5e0(%rbp),%rdi
  divss  %xmm0,%xmm4
  pxor   %xmm0,%xmm0
  lea    0xa0(%rdi),%r8
  mov    -0x5e8(%rbp),%rdi
  lea    0xa0(%rdi),%r9
  cvtss2sd %xmm4,%xmm0
  movsd  %xmm0,-0x400(%rbp)
  pxor   %xmm0,%xmm0
  movups %xmm0,0xa8(,%rax,8)
  movss  -0x4f0(%rbp),%xmm0
  mov    -0x698(%rbp),%rax
  movss  %xmm4,-0x640(%rbp)
  divss  %xmm0,%xmm1
  lea    0xb8(%rax),%rsi
  cvtss2sd %xmm0,%xmm3
  lea    -0x360(%rbp),%rax
  mov    %rax,-0x658(%rbp)
  lea    -0x220(%rbp),%rax
  mov    %rax,-0x578(%rbp)
  lea    -0xe0(%rbp),%rax
  mov    %rax,-0x660(%rbp)
  cvtss2sd %xmm1,%xmm1
  movsd  %xmm1,-0x220(%rbp)
L458:
  movss  (%r15,%r11,4),%xmm0
  movss  D161(%rip),%xmm1
  lea    0x8(%rsi),%rdi
  mov    %rsi,%rcx
  and    $0xfffffffffffffff8,%rdi
  mov    -0x658(%rbp),%rax
  mulss  %xmm0,%xmm1
  sub    %rdi,%rcx
  cvtss2sd %xmm0,%xmm0
  add    $0xa8,%ecx
  movsd  %xmm0,(%rax,%r11,8)
  mov    %r10,%rax
  shr    $0x3,%ecx
  addss  %xmm2,%xmm1
  divss  %xmm1,%xmm4
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm4,%xmm1
  movsd  %xmm1,(%r12,%r11,8)
  pxor   %xmm1,%xmm1
  movq   $0x0,(%rsi)
  movq   $0x0,0xa0(%rsi)
  rep stos %rax,%es:(%rdi)
  lea    0x8(%r8),%rdi
  mov    %r8,%rcx
  movq   $0x0,(%r8)
  movq   $0x0,0xa0(%r8)
  and    $0xfffffffffffffff8,%rdi
  sub    %rdi,%rcx
  add    $0xa8,%ecx
  shr    $0x3,%ecx
  rep stos %rax,%es:(%rdi)
  lea    0x8(%r9),%rdi
  mov    %r9,%rcx
  movq   $0x0,(%r9)
  movq   $0x0,0xa0(%r9)
  and    $0xfffffffffffffff8,%rdi
  sub    %rdi,%rcx
  add    $0xa8,%ecx
  shr    $0x3,%ecx
  rep stos %rax,%es:(%rdi)
  movups %xmm5,0xa8(%rsi)
  mov    -0x558(%rbp),%rax
  lea    (%rax,%r11,4),%rcx
  mov    -0x578(%rbp),%rax
  nopw   0x0(%rax,%rax,1)
L747:
  pxor   %xmm0,%xmm0
  add    $0x8,%rax
  sub    $0x4,%rcx
  cvtss2sd 0x4(%rcx),%xmm0
  mulsd  -0x8(%rax),%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rdx,%rax
  jne    L747
  xorpd  D490(%rip),%xmm1
  mov    -0x660(%rbp),%rcx
  add    $0xb8,%rsi
  add    $0xa0,%r8
  add    $0xa0,%r9
  lea    0x8(%rax),%rdx
  divsd  %xmm3,%xmm1
  movq   $0x0,(%rcx,%r11,8)
  add    $0x1,%r11
  movsd  %xmm1,(%rax)
  cmp    $0x14,%r11
  jne    L458
  mov    -0x560(%rbp),%rdx
  movapd D496(%rip),%xmm0
  mov    %r11,-0x590(%rbp)
  lea    -0x408(%rbp),%rsi
  movsd  D73(%rip),%xmm3
  xor    %eax,%eax
  movaps %xmm0,-0xe0(%rbp)
  lea    -0x8(%rdx),%r8
L153:
  lea    0x8(%rdx),%rdi
  mov    %rdx,%rcx
  pxor   %xmm5,%xmm5
  add    $0x4,%r14
  and    $0xfffffffffffffff8,%rdi
  movq   $0x0,(%rdx)
  add    $0x8,%rsi
  add    $0xa0,%rdx
  sub    %rdi,%rcx
  movq   $0x0,-0x8(%rdx)
  add    $0xa8,%r8
  add    $0xa0,%ecx
  shr    $0x3,%ecx
  rep stos %rax,%es:(%rdi)
  movsd  -0x8(%rsi),%xmm0
  xorpd  D490(%rip),%xmm0
  movsd  (%rsi),%xmm1
  movupd -0x8(%rsi),%xmm4
  mulsd  %xmm3,%xmm0
  unpckhpd %xmm4,%xmm4
  cvtss2sd -0x4(%r14),%xmm5
  divsd  %xmm1,%xmm0
  movapd %xmm3,%xmm1
  unpcklpd %xmm0,%xmm1
  divpd  %xmm4,%xmm1
  movapd %xmm1,%xmm0
  movapd %xmm5,%xmm1
  unpcklpd %xmm1,%xmm1
  divpd  %xmm1,%xmm0
  movups %xmm0,-0xa8(%r8)
  cmp    -0x558(%rbp),%r14
  jne    L153
  mov    -0x578(%rbp),%rax
  mov    %rbx,-0x5a0(%rbp)
  mov    $0x1,%r15d
  mov    $0x1,%r10d
  mov    %r13,-0x5a8(%rbp)
  movss  D447(%rip),%xmm5
  lea    0x8(%rax),%r14
  mov    -0x5f8(%rbp),%rax
  movq   $0x14,-0x570(%rbp)
  movq   $0x2,-0x568(%rbp)
  mov    -0x650(%rbp),%rdx
  add    $0xa0,%rax
  mov    %rax,-0x678(%rbp)
  mov    %rax,-0x598(%rbp)
L412:
  mov    -0x560(%rbp),%rcx
  lea    (%r15,%r15,4),%rax
  mov    -0x570(%rbp),%r13
  mov    %r14,-0x5b0(%rbp)
  lea    (%r15,%rax,4),%rax
  lea    (%rcx,%rax,8),%r11
  mov    -0x558(%rbp),%rcx
  mov    %r15,%rax
  neg    %rax
  lea    (%rcx,%rax,4),%rbx
  mov    $0xfffffffe,%eax
  mov    %r15,%rcx
  sub    %r10d,%eax
  mov    %rbx,%r14
  mov    %eax,-0x580(%rbp)
  lea    0x4(%r15),%rax
  mov    %rax,-0x588(%rbp)
  nopl   0x0(%rax)
L701:
  mov    %ecx,%eax
  cmp    %ecx,%r10d
  jg     L478
  movss  (%r14,%rcx,4),%xmm4
  mulss  %xmm5,%xmm4
  cmp    -0x568(%rbp),%ecx
  jle    L201
  mov    -0x580(%rbp),%ebx
  movsd  -0x8(%r11),%xmm0
  lea    0x2(%r15),%rsi
  mov    %r11,%rdi
  movsd  -0x8(%r12,%r15,8),%xmm6
  mov    -0x558(%rbp),%r9
  lea    (%rcx,%rbx,1),%r8
  and    $0xfffffffe,%r8d
  add    -0x588(%rbp),%r8
L88:
  movss  (%r9),%xmm7
  mov    %esi,%ebx
  add    $0x8,%r9
  add    $0x10,%rdi
  movss  D161(%rip),%xmm1
  mulss  -0x8(%rdx,%rsi,4),%xmm1
  mulss  %xmm4,%xmm7
  movsd  -0x10(%r12,%rsi,8),%xmm8
  addss  %xmm2,%xmm1
  divss  %xmm1,%xmm7
  divss  %xmm1,%xmm7
  cvtss2sd %xmm7,%xmm7
  movapd %xmm7,%xmm1
  xorpd  D490(%rip),%xmm7
  mulsd  %xmm3,%xmm1
  mulsd  %xmm6,%xmm7
  movss  D161(%rip),%xmm6
  mulss  -0x4(%rdx,%rsi,4),%xmm6
  divsd  %xmm8,%xmm1
  addss  %xmm2,%xmm6
  addsd  %xmm1,%xmm0
  movapd %xmm7,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm0,-0x18(%rdi)
  movss  -0x4(%r9),%xmm0
  mulss  %xmm4,%xmm0
  divsd  %xmm8,%xmm1
  divss  %xmm6,%xmm0
  divsd  %xmm8,%xmm1
  divss  %xmm6,%xmm0
  movsd  -0x8(%r12,%rsi,8),%xmm6
  add    $0x2,%rsi
  addsd  -0x10(%rdi),%xmm1
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm7
  xorpd  D490(%rip),%xmm0
  mulsd  %xmm3,%xmm7
  mulsd  %xmm8,%xmm0
  divsd  %xmm6,%xmm7
  mulsd  %xmm3,%xmm0
  divsd  %xmm6,%xmm0
  addsd  %xmm7,%xmm1
  movsd  %xmm1,-0x10(%rdi)
  divsd  %xmm6,%xmm0
  addsd  -0x8(%rdi),%xmm0
  movsd  %xmm0,-0x8(%rdi)
  cmp    %r8,%rsi
  jne    L88
L624:
  movslq %ebx,%rsi
  mov    -0x560(%rbp),%r8
  sub    %r10d,%ebx
  lea    (%rsi,%r13,1),%rdi
  lea    (%r8,%rdi,8),%rdi
  movslq %ebx,%r8
  mov    -0x558(%rbp),%rbx
  sub    %rsi,%r8
  lea    (%rbx,%r8,4),%r8
  nopl   0x0(%rax)
L697:
  movss  (%r8,%rsi,4),%xmm0
  movss  D161(%rip),%xmm1
  add    $0x8,%rdi
  mulss  (%rdx,%rsi,4),%xmm1
  movsd  (%r12,%rsi,8),%xmm6
  mulss  %xmm4,%xmm0
  addss  %xmm2,%xmm1
  divss  %xmm1,%xmm0
  divss  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm1
  xorpd  D490(%rip),%xmm0
  mulsd  -0x8(%r12,%rsi,8),%xmm0
  add    $0x1,%rsi
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  divsd  %xmm6,%xmm1
  divsd  %xmm6,%xmm0
  addsd  -0x10(%rdi),%xmm1
  movsd  %xmm1,-0x10(%rdi)
  divsd  %xmm6,%xmm0
  addsd  -0x8(%rdi),%xmm0
  movsd  %xmm0,-0x8(%rdi)
  cmp    %esi,%eax
  jge    L697
L478:
  add    $0x1,%rcx
  add    $0x14,%r13
  add    $0xa0,%r11
  cmp    $0x14,%ecx
  jne    L701
  mov    -0x568(%rbp),%rax
  mov    -0x598(%rbp),%rbx
  lea    0x1(%r10),%r9d
  mov    -0x5b0(%rbp),%r14
  shl    $0x3,%rax
  lea    0x8(%rbx),%rdi
  movq   $0x0,(%rbx)
  mov    %rbx,%rsi
  mov    %eax,%ecx
  and    $0xfffffffffffffff8,%rdi
  movq   $0x0,-0x8(%rbx,%rcx,1)
  mov    %rbx,%rcx
  sub    %rdi,%rcx
  add    %eax,%ecx
  xor    %eax,%eax
  shr    $0x3,%ecx
  rep stos %rax,%es:(%rdi)
  mov    -0x560(%rbp),%rax
  mov    -0x570(%rbp),%rcx
  mov    -0x578(%rbp),%r11
  lea    (%rax,%rcx,8),%rdi
  mov    %r9d,%eax
  shr    %eax
  sub    $0x1,%eax
  shl    $0x4,%rax
  lea    0x10(%rbx,%rax,1),%r8
L254:
  mov    %rdi,%rcx
  mov    %r11,%rax
  pxor   %xmm1,%xmm1
  nopw   0x0(%rax,%rax,1)
L313:
  movsd  (%rax),%xmm0
  movupd (%rcx),%xmm7
  add    $0x8,%rax
  sub    $0xa0,%rcx
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm7,%xmm0
  addpd  %xmm0,%xmm1
  cmp    %r14,%rax
  jne    L313
  movups %xmm1,(%rsi)
  add    $0x10,%rsi
  add    $0x10,%rdi
  cmp    %r8,%rsi
  jne    L254
  mov    %r9d,%esi
  and    $0xfffffffe,%esi
  test   $0x1,%r9b
  je     L577
  mov    -0x560(%rbp),%rcx
  mov    %esi,%eax
  add    -0x570(%rbp),%rax
  pxor   %xmm1,%xmm1
  lea    (%rcx,%rax,8),%rcx
  mov    -0x578(%rbp),%rax
  nop
L721:
  movsd  (%rcx),%xmm0
  mulsd  (%rax),%xmm0
  add    $0x8,%rax
  sub    $0xa0,%rcx
  addsd  %xmm0,%xmm1
  cmp    %r14,%rax
  jne    L721
  mov    -0x5f8(%rbp),%rcx
  movslq %esi,%rsi
  lea    (%r10,%r10,4),%rax
  lea    (%rsi,%rax,4),%rax
  movsd  %xmm1,(%rcx,%rax,8)
L577:
  addq   $0x1,-0x568(%rbp)
  add    $0x1,%r15
  add    $0x8,%r14
  addq   $0xa0,-0x598(%rbp)
  addq   $0x14,-0x570(%rbp)
  cmp    $0x14,%r9d
  je     L383
  movslq %r9d,%r10
  jmp    L412
L201:
  mov    %r10d,%ebx
  jmp    L624
L383:
  mov    -0x5e0(%rbp),%rax
  mov    -0x5a8(%rbp),%r13
  movq   $0x2,-0x560(%rbp)
  mov    $0x1,%r14d
  mov    -0x5a0(%rbp),%rbx
  movsd  D105(%rip),%xmm6
  add    $0xa8,%rax
  mov    %r13,-0x5b0(%rbp)
  mov    %rax,-0x588(%rbp)
  mov    -0x5e8(%rbp),%rax
  mov    %rbx,-0x5a8(%rbp)
  add    $0xa8,%rax
  mov    %rax,-0x598(%rbp)
  lea    -0x4f4(%rbp),%rax
  mov    %rax,-0x6a8(%rbp)
  mov    %rax,-0x568(%rbp)
  mov    -0x650(%rbp),%rax
L703:
  mov    $0xfffffffe,%edi
  mov    %r14d,-0x5a0(%rbp)
  mov    -0x598(%rbp),%rbx
  mov    %r14,%rcx
  sub    %r14d,%edi
  mov    %r14d,-0x580(%rbp)
  mov    -0x588(%rbp),%r11
  mov    %edi,-0x570(%rbp)
  lea    0x4(%r14),%rdi
  mov    -0x590(%rbp),%r15
  mov    %rdi,-0x578(%rbp)
  nopl   0x0(%rax)
L434:
  mov    %ecx,%edx
  cmp    %r14d,%ecx
  jl     L527
  mov    -0x568(%rbp),%rdi
  movss  D161(%rip),%xmm4
  mulss  (%rdi,%rcx,4),%xmm4
  cmp    -0x560(%rbp),%ecx
  jle    L372
  mov    -0x570(%rbp),%edi
  movsd  -0x8(%rbx),%xmm1
  mov    %rbx,%r8
  lea    0x2(%r14),%rsi
  movsd  -0x8(%r12,%r14,8),%xmm0
  movsd  -0x8(%r11),%xmm8
  movapd %xmm6,%xmm5
  lea    (%rcx,%rdi,1),%r9
  mov    -0x558(%rbp),%r10
  mov    %r11,%rdi
  and    $0xfffffffe,%r9d
  add    -0x578(%rbp),%r9
L508:
  movss  (%r10),%xmm10
  mov    %esi,%r13d
  add    $0x8,%r10
  add    $0x10,%rdi
  movss  D161(%rip),%xmm12
  mulss  -0x8(%rax,%rsi,4),%xmm12
  add    $0x10,%r8
  mulss  %xmm4,%xmm10
  movsd  -0x10(%r12,%rsi,8),%xmm7
  addss  %xmm2,%xmm12
  divss  %xmm12,%xmm10
  divss  %xmm12,%xmm10
  cvtss2sd %xmm12,%xmm12
  cvtss2sd %xmm10,%xmm10
  movapd %xmm10,%xmm9
  mulsd  %xmm3,%xmm9
  movapd %xmm9,%xmm11
  divsd  %xmm7,%xmm11
  addsd  %xmm8,%xmm11
  movapd %xmm10,%xmm8
  mulsd  %xmm6,%xmm8
  mulsd  %xmm0,%xmm10
  movsd  %xmm11,-0x18(%rdi)
  movapd %xmm9,%xmm11
  xorpd  D490(%rip),%xmm11
  mulsd  %xmm0,%xmm11
  divsd  %xmm12,%xmm8
  movss  D161(%rip),%xmm12
  addsd  %xmm10,%xmm10
  mulss  -0x4(%rax,%rsi,4),%xmm12
  addss  %xmm2,%xmm12
  divsd  %xmm7,%xmm11
  movapd %xmm8,%xmm9
  mulsd  %xmm3,%xmm9
  mulsd  %xmm0,%xmm8
  divsd  %xmm7,%xmm9
  divsd  %xmm7,%xmm11
  mulsd  %xmm3,%xmm9
  divsd  %xmm7,%xmm9
  addsd  -0x10(%rdi),%xmm11
  addsd  %xmm1,%xmm9
  movsd  %xmm9,-0x18(%r8)
  movapd %xmm8,%xmm9
  mulsd  %xmm3,%xmm9
  divsd  %xmm7,%xmm9
  divsd  %xmm7,%xmm9
  mulsd  %xmm0,%xmm9
  movapd %xmm10,%xmm0
  movss  -0x4(%r10),%xmm10
  mulsd  %xmm3,%xmm0
  mulss  %xmm4,%xmm10
  mulsd  %xmm3,%xmm9
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm9
  divsd  %xmm7,%xmm0
  divss  %xmm12,%xmm10
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm9
  divss  %xmm12,%xmm10
  cvtss2sd %xmm12,%xmm12
  addsd  %xmm0,%xmm9
  movsd  -0x8(%r12,%rsi,8),%xmm0
  add    $0x2,%rsi
  addsd  -0x10(%r8),%xmm9
  cvtss2sd %xmm10,%xmm10
  movapd %xmm10,%xmm1
  mulsd  %xmm3,%xmm1
  movapd %xmm1,%xmm8
  xorpd  D490(%rip),%xmm1
  divsd  %xmm0,%xmm8
  addsd  %xmm11,%xmm8
  movsd  %xmm8,-0x10(%rdi)
  movapd %xmm1,%xmm8
  movapd %xmm10,%xmm1
  mulsd  %xmm6,%xmm1
  mulsd  %xmm7,%xmm8
  divsd  %xmm12,%xmm1
  divsd  %xmm0,%xmm8
  movapd %xmm1,%xmm11
  mulsd  %xmm3,%xmm11
  mulsd  %xmm7,%xmm1
  divsd  %xmm0,%xmm11
  divsd  %xmm0,%xmm8
  mulsd  %xmm3,%xmm11
  divsd  %xmm0,%xmm11
  addsd  -0x8(%rdi),%xmm8
  movsd  %xmm8,-0x8(%rdi)
  addsd  %xmm9,%xmm11
  movapd %xmm1,%xmm9
  mulsd  %xmm3,%xmm9
  movsd  %xmm11,-0x10(%r8)
  divsd  %xmm0,%xmm9
  divsd  %xmm0,%xmm9
  mulsd  %xmm7,%xmm9
  mulsd  %xmm10,%xmm7
  mulsd  %xmm3,%xmm9
  addsd  %xmm7,%xmm7
  mulsd  %xmm3,%xmm7
  divsd  %xmm0,%xmm9
  movapd %xmm7,%xmm1
  divsd  %xmm0,%xmm1
  divsd  %xmm0,%xmm9
  divsd  %xmm0,%xmm1
  divsd  %xmm0,%xmm1
  addsd  %xmm9,%xmm1
  addsd  -0x8(%r8),%xmm1
  movsd  %xmm1,-0x8(%r8)
  cmp    %r9,%rsi
  jne    L508
L137:
  movslq %r13d,%rsi
  mov    -0x5e0(%rbp),%r10
  sub    -0x580(%rbp),%r13d
  lea    (%rsi,%r15,1),%rdi
  movslq %r13d,%r9
  shl    $0x3,%rdi
  sub    %rsi,%r9
  lea    (%r10,%rdi,1),%r8
  mov    -0x558(%rbp),%r10
  add    -0x5e8(%rbp),%rdi
  lea    (%r10,%r9,4),%r9
  nopl   0x0(%rax,%rax,1)
L388:
  movss  (%r9,%rsi,4),%xmm1
  movsd  (%r12,%rsi,8),%xmm7
  add    $0x8,%r8
  add    $0x8,%rdi
  movss  D161(%rip),%xmm9
  mulss  (%rax,%rsi,4),%xmm9
  mulss  %xmm4,%xmm1
  addss  %xmm2,%xmm9
  divss  %xmm9,%xmm1
  divss  %xmm9,%xmm1
  cvtss2sd %xmm9,%xmm9
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm0,%xmm8
  xorpd  D490(%rip),%xmm0
  divsd  %xmm7,%xmm8
  addsd  -0x10(%r8),%xmm8
  movsd  %xmm8,-0x10(%r8)
  movsd  -0x8(%r12,%rsi,8),%xmm8
  add    $0x1,%rsi
  mulsd  %xmm8,%xmm0
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm0
  addsd  -0x8(%r8),%xmm0
  movsd  %xmm0,-0x8(%r8)
  movapd %xmm1,%xmm0
  mulsd  %xmm5,%xmm0
  mulsd  %xmm8,%xmm1
  divsd  %xmm9,%xmm0
  addsd  %xmm1,%xmm1
  mulsd  %xmm3,%xmm1
  divsd  %xmm7,%xmm1
  movapd %xmm0,%xmm9
  mulsd  %xmm8,%xmm0
  mulsd  %xmm3,%xmm9
  mulsd  %xmm3,%xmm0
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm9
  divsd  %xmm7,%xmm0
  mulsd  %xmm3,%xmm9
  divsd  %xmm7,%xmm1
  mulsd  %xmm8,%xmm0
  mulsd  %xmm3,%xmm0
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm1
  divsd  %xmm7,%xmm0
  divsd  %xmm7,%xmm9
  addsd  %xmm1,%xmm0
  addsd  -0x8(%rdi),%xmm0
  movsd  %xmm0,-0x8(%rdi)
  addsd  -0x10(%rdi),%xmm9
  movsd  %xmm9,-0x10(%rdi)
  cmp    %esi,%edx
  jge    L388
L527:
  add    $0x1,%rcx
  add    $0x14,%r15
  add    $0xa0,%r11
  add    $0xa0,%rbx
  cmp    $0x14,%ecx
  jne    L434
  addq   $0x1,-0x560(%rbp)
  add    $0x1,%r14
  mov    -0x560(%rbp),%rcx
  addq   $0x14,-0x590(%rbp)
  addq   $0xa8,-0x588(%rbp)
  addq   $0xa8,-0x598(%rbp)
  subq   $0x4,-0x568(%rbp)
  cmp    $0x15,%rcx
  jne    L703
  cmpq   $0x0,-0x648(%rbp)
  mov    -0x5a8(%rbp),%rbx
  mov    -0x5b0(%rbp),%r13
  jle    L616
  lea    -0x2c0(%rbp),%rax
  movsd  D519(%rip),%xmm7
  mov    %rbx,%r14
  movq   $0x0,-0x6a0(%rbp)
  mov    %rax,-0x5f0(%rbp)
  lea    -0x2b8(%rbp),%rax
  mov    %rax,-0x6f8(%rbp)
  mov    -0x698(%rbp),%rax
  mov    %r12,-0x690(%rbp)
  mov    %r13,%r12
  add    $0x18,%rax
  mov    %rax,-0x6b0(%rbp)
  lea    -0x548(%rbp),%rax
  mov    %rax,-0x680(%rbp)
  lea    -0x180(%rbp),%rax
  mov    %rax,-0x5c0(%rbp)
  lea    0xa8(%rbx),%rax
  mov    %rax,-0x668(%rbp)
  lea    -0x498(%rbp),%rax
  mov    %rax,-0x688(%rbp)
  lea    0xa8(%r13),%rax
  mov    %rax,-0x670(%rbp)
  lea    -0x38(%rbp),%rax
  mov    %rax,-0x5d0(%rbp)
L362:
  movups -0x53c(%rbp),%xmm2
  cvtps2pd -0x53c(%rbp),%xmm0
  movhps %xmm2,-0x6c0(%rbp)
  movups %xmm0,-0x498(%rbp)
  movups -0x52c(%rbp),%xmm2
  cvtps2pd -0x6c0(%rbp),%xmm0
  movhps %xmm2,-0x6d0(%rbp)
  movups %xmm0,-0x488(%rbp)
  movups -0x51c(%rbp),%xmm2
  cvtps2pd -0x52c(%rbp),%xmm0
  movhps %xmm2,-0x6e0(%rbp)
  movups %xmm0,-0x478(%rbp)
  movups -0x50c(%rbp),%xmm2
  cvtps2pd -0x6d0(%rbp),%xmm0
  movhps %xmm2,-0x6f0(%rbp)
  movups %xmm0,-0x468(%rbp)
  cvtps2pd -0x51c(%rbp),%xmm0
  movups %xmm0,-0x458(%rbp)
  mov    %r12,%r15
  cvtps2pd -0x6e0(%rbp),%xmm0
  movups %xmm0,-0x448(%rbp)
  cvtps2pd -0x50c(%rbp),%xmm0
  movups %xmm0,-0x438(%rbp)
  cvtps2pd -0x6f0(%rbp),%xmm0
  movups %xmm0,-0x428(%rbp)
  movq   -0x4fc(%rbp),%xmm0
  cvtps2pd %xmm0,%xmm0
  movups %xmm0,-0x418(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4f4(%rbp),%xmm0
  movsd  %xmm0,-0x408(%rbp)
  mov    -0x698(%rbp),%rax
  mov    -0x6b0(%rbp),%rcx
  movq   $0xa0,-0x608(%rbp)
  mov    -0x6f8(%rbp),%rbx
  mov    %rcx,-0x5b8(%rbp)
  mov    -0x6a8(%rbp),%rcx
  mov    %rax,-0x630(%rbp)
  mov    %rcx,-0x628(%rbp)
  mov    %rax,-0x620(%rbp)
  movq   $0x0,-0x5a8(%rbp)
  movq   $0xa8,-0x618(%rbp)
  movq   $0x1,-0x5d8(%rbp)
  movq   $0x2,-0x5b0(%rbp)
  movl   $0x0,-0x63c(%rbp)
  movsd  %xmm7,-0x600(%rbp)
  nopl   0x0(%rax,%rax,1)
L251:
  mov    -0x5d8(%rbp),%rax
  mov    -0x680(%rbp),%rsi
  mov    $0x1,%edi
  mov    %eax,-0x570(%rbp)
  mov    %eax,-0x5a0(%rbp)
  call   <nrandv@plt>
  mov    D499(%rip),%rax
  mov    -0x63c(%rbp),%ecx
  movq   %rax,%xmm5
  mov    D519(%rip),%rax
  cmp    $0x13,%ecx
  movq   %rax,%xmm7
  jg     L541
  movslq %ecx,%rax
  add    $0x1,%ecx
  movsd  -0x548(%rbp),%xmm0
  mov    %ecx,-0x63c(%rbp)
  movsd  %xmm0,-0x2c0(%rbp,%rax,8)
L541:
  mov    -0x5d8(%rbp),%r12
  mov    %rbx,-0x578(%rbp)
  movq   $0x0,-0x558(%rbp)
  mov    -0x610(%rbp),%r13
  mov    %r12,%rbx
  mov    -0x628(%rbp),%r12
  cs nopw 0x0(%rax,%rax,1)
L610:
  movsd  0x0(%r13,%rbx,8),%xmm2
  pxor   %xmm4,%xmm4
  cvtss2sd (%r12,%rbx,4),%xmm4
  movsd  %xmm4,-0x560(%rbp)
  movapd %xmm2,%xmm0
  movsd  %xmm2,-0x568(%rbp)
  mulsd  %xmm5,%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm7,%xmm0
  mulsd  %xmm4,%xmm1
  divsd  %xmm0,%xmm1
  movapd %xmm5,%xmm0
  addsd  -0x558(%rbp),%xmm1
  movsd  %xmm1,-0x558(%rbp)
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  mov    D499(%rip),%rcx
  movsd  -0x560(%rbp),%xmm4
  movsd  D251(%rip),%xmm3
  movsd  -0x558(%rbp),%xmm0
  cvtsi2sd %rax,%xmm1
  movq   %rcx,%xmm5
  mulsd  %xmm4,%xmm3
  mulsd  %xmm4,%xmm1
  mulsd  -0x548(%rbp),%xmm1
  subsd  %xmm3,%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  call   <exp@plt>
  movsd  -0x568(%rbp),%xmm2
  mov    D499(%rip),%rax
  movapd D499(%rip),%xmm6
  mulsd  %xmm0,%xmm2
  movq   %rax,%xmm5
  mov    D519(%rip),%rax
  movq   %rax,%xmm7
  mov    D73(%rip),%rax
  movq   %rax,%xmm3
  movsd  %xmm2,0x0(%r13,%rbx,8)
  add    $0x1,%rbx
  cmp    $0x14,%ebx
  jne    L610
  mov    -0x610(%rbp),%rax
  mov    -0x5d8(%rbp),%rcx
  xor    %esi,%esi
  mov    -0x5e0(%rbp),%r11
  mov    -0x5e8(%rbp),%r9
  movsd  (%rax,%rcx,8),%xmm8
  mov    -0x5b0(%rbp),%rax
  mov    -0x578(%rbp),%rbx
  mov    -0x678(%rbp),%rcx
  movapd %xmm8,%xmm2
  mov    %eax,%r12d
  mov    %eax,%r13d
  mov    -0x608(%rbp),%rax
  mulsd  %xmm5,%xmm2
  shr    %r12d
  mov    %r13d,-0x560(%rbp)
  mov    -0x5f0(%rbp),%r13
  mov    %r12d,%edi
  mov    %r12d,-0x558(%rbp)
  add    %rax,%r11
  add    %rax,%r9
  mov    -0x5c0(%rbp),%r12
  lea    (%r14,%rax,1),%r10
  lea    (%r15,%rax,1),%r8
  shl    $0x4,%rdi
  movapd %xmm2,%xmm0
  movapd %xmm2,%xmm4
  addsd  %xmm7,%xmm0
  mulsd  -0x600(%rbp),%xmm0
  unpcklpd %xmm4,%xmm4
  movsd  %xmm0,-0x600(%rbp)
  nopl   0x0(%rax,%rax,1)
L435:
  movupd (%r11,%rsi,1),%xmm0
  lea    (%rcx,%rsi,1),%rdx
  mov    %r13,%rax
  pxor   %xmm1,%xmm1
  mulpd  %xmm4,%xmm0
  movups %xmm0,(%r10,%rsi,1)
  movupd (%r9,%rsi,1),%xmm0
  mulpd  %xmm4,%xmm0
  movups %xmm0,(%r8,%rsi,1)
  nopl   0x0(%rax)
L760:
  movsd  (%rax),%xmm0
  movupd (%rdx),%xmm13
  add    $0x8,%rax
  add    $0xa0,%rdx
  unpcklpd %xmm0,%xmm0
  mulpd  %xmm13,%xmm0
  addpd  %xmm0,%xmm1
  cmp    %rax,%rbx
  jne    L760
  movaps %xmm1,(%r12,%rsi,1)
  add    $0x10,%rsi
  cmp    %rdi,%rsi
  jne    L435
  mov    -0x560(%rbp),%r13d
  mov    -0x558(%rbp),%r12d
  mov    %r13d,%esi
  and    $0xfffffffe,%esi
  test   $0x1,%r13b
  je     L195
  movslq -0x5a0(%rbp),%rax
  mov    -0x5e0(%rbp),%rcx
  movslq %esi,%rdi
  pxor   %xmm1,%xmm1
  lea    (%rax,%rax,4),%rax
  lea    (%rdi,%rax,4),%rax
  movsd  (%rcx,%rax,8),%xmm0
  mov    -0x5e8(%rbp),%rcx
  mulsd  %xmm2,%xmm0
  mulsd  (%rcx,%rax,8),%xmm2
  mov    -0x5f8(%rbp),%rcx
  movsd  %xmm0,(%r14,%rax,8)
  movsd  %xmm2,(%r15,%rax,8)
  lea    0x14(%rsi),%eax
  lea    (%rcx,%rax,8),%rdx
  mov    -0x5f0(%rbp),%rax
  nopl   0x0(%rax)
L420:
  movsd  (%rdx),%xmm0
  mulsd  (%rax),%xmm0
  add    $0x8,%rax
  add    $0xa0,%rdx
  addsd  %xmm0,%xmm1
  cmp    %rbx,%rax
  jne    L420
  movsd  %xmm1,-0x180(%rbp,%rdi,8)
L195:
  mov    -0x5d8(%rbp),%rcx
  mov    -0x650(%rbp),%rax
  pxor   %xmm4,%xmm4
  movapd %xmm8,%xmm1
  mov    -0x690(%rbp),%rdi
  cvtss2sd (%rax,%rcx,4),%xmm4
  divsd  %xmm4,%xmm1
  mov    -0x5a8(%rbp),%rax
  movsd  (%rdi,%rcx,8),%xmm2
  movapd %xmm1,%xmm0
  xorpd  D490(%rip),%xmm1
  mulsd  %xmm3,%xmm0
  divsd  %xmm2,%xmm0
  addsd  0xa0(%r14,%rax,1),%xmm0
  movsd  %xmm0,0xa0(%r14,%rax,1)
  movsd  -0x8(%rdi,%rcx,8),%xmm0
  mulsd  %xmm0,%xmm1
  mulsd  %xmm3,%xmm1
  divsd  %xmm2,%xmm1
  divsd  %xmm2,%xmm1
  addsd  0xa8(%r14,%rax,1),%xmm1
  movsd  %xmm1,0xa8(%r14,%rax,1)
  movapd %xmm8,%xmm1
  xorpd  D490(%rip),%xmm1
  mulsd  %xmm3,%xmm1
  divsd  %xmm2,%xmm1
  divsd  %xmm4,%xmm1
  mulsd  %xmm3,%xmm1
  divsd  %xmm4,%xmm1
  divsd  %xmm2,%xmm1
  addsd  0xa0(%r15,%rax,1),%xmm1
  movsd  %xmm1,0xa0(%r15,%rax,1)
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm0,%xmm0
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  divsd  %xmm2,%xmm1
  mulsd  %xmm3,%xmm0
  divsd  %xmm4,%xmm0
  divsd  %xmm2,%xmm1
  divsd  %xmm4,%xmm0
  divsd  %xmm4,%xmm1
  pxor   %xmm4,%xmm4
  divsd  %xmm2,%xmm0
  divsd  %xmm2,%xmm1
  divsd  %xmm2,%xmm0
  divsd  %xmm2,%xmm0
  divsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  movsd  0xa8(%r15,%rax,1),%xmm0
  mulsd  %xmm8,%xmm1
  addsd  %xmm1,%xmm0
  movapd -0x4a0(%rbp),%xmm1
  mulpd  %xmm6,%xmm1
  movsd  %xmm0,0xa8(%r15,%rax,1)
  movsd  (%r14),%xmm0
  addpd  D576(%rip),%xmm1
  movhpd 0xa0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm1,%xmm0
  movapd %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm4,%xmm2
  addsd  %xmm0,%xmm2
  movsd  (%r15),%xmm0
  movhpd 0xa0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm4,%xmm1
  addsd  %xmm0,%xmm1
  cmp    $0x1,%r12d
  je     L407
  movsd  0x140(%r14),%xmm0
  movapd -0x490(%rbp),%xmm4
  movhpd 0x1e0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x140(%r15),%xmm0
  movhpd 0x1e0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x2,%r12d
  je     L407
  movsd  0x280(%r14),%xmm0
  movapd -0x480(%rbp),%xmm4
  movhpd 0x320(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x280(%r15),%xmm0
  movhpd 0x320(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x3,%r12d
  je     L407
  movsd  0x3c0(%r14),%xmm0
  movapd -0x470(%rbp),%xmm4
  movhpd 0x460(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x3c0(%r15),%xmm0
  movhpd 0x460(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x4,%r12d
  je     L407
  movsd  0x500(%r14),%xmm0
  movapd -0x460(%rbp),%xmm4
  movhpd 0x5a0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x500(%r15),%xmm0
  movhpd 0x5a0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x5,%r12d
  je     L407
  movsd  0x640(%r14),%xmm0
  movapd -0x450(%rbp),%xmm4
  movhpd 0x6e0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x640(%r15),%xmm0
  movhpd 0x6e0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x6,%r12d
  je     L407
  movsd  0x780(%r14),%xmm0
  movapd -0x440(%rbp),%xmm4
  movhpd 0x820(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x780(%r15),%xmm0
  movhpd 0x820(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x7,%r12d
  je     L407
  movsd  0x8c0(%r14),%xmm0
  movapd -0x430(%rbp),%xmm4
  movhpd 0x960(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x8c0(%r15),%xmm0
  movhpd 0x960(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x8,%r12d
  je     L407
  movsd  0xa00(%r14),%xmm0
  movapd -0x420(%rbp),%xmm4
  movhpd 0xaa0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0xa00(%r15),%xmm0
  movhpd 0xaa0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0xa,%r12d
  jne    L407
  movsd  0xb40(%r14),%xmm0
  movapd -0x410(%rbp),%xmm4
  movhpd 0xbe0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0xb40(%r15),%xmm0
  movhpd 0xbe0(%r15),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  xchg   %ax,%ax
L407:
  cmp    %r13d,%esi
  je     L12
  movslq %esi,%rax
  movsd  -0x4a0(%rbp,%rax,8),%xmm0
  lea    (%rax,%rax,4),%rax
  shl    $0x5,%rax
  mulsd  %xmm5,%xmm0
  movsd  (%r14,%rax,1),%xmm4
  mulsd  %xmm5,%xmm4
  addsd  %xmm7,%xmm0
  divsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm2
  movsd  (%r15,%rax,1),%xmm4
  mulsd  %xmm5,%xmm4
  divsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm1
L12:
  movss  D161(%rip),%xmm0
  mulss  -0x640(%rbp),%xmm0
  movsd  %xmm1,-0x588(%rbp)
  mov    -0x5d8(%rbp),%r13
  mov    -0x658(%rbp),%rax
  movsd  -0x600(%rbp),%xmm6
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm3
  movsd  (%rax,%r13,8),%xmm0
  mov    -0x608(%rbp),%rax
  divsd  %xmm6,%xmm3
  movapd %xmm0,%xmm9
  cmpltsd %xmm8,%xmm9
  subsd  %xmm0,%xmm8
  movapd %xmm5,%xmm0
  andpd  %xmm7,%xmm9
  pxor   %xmm7,%xmm7
  maxsd  %xmm7,%xmm8
  movapd %xmm9,%xmm4
  movsd  %xmm9,-0x580(%rbp)
  mulsd  (%r14,%rax,1),%xmm4
  movsd  %xmm8,-0x578(%rbp)
  mulsd  %xmm8,%xmm2
  subsd  %xmm2,%xmm4
  movsd  -0x180(%rbp),%xmm2
  movsd  %xmm2,-0x560(%rbp)
  movsd  %xmm4,-0x568(%rbp)
  divsd  %xmm6,%xmm0
  movapd %xmm3,%xmm10
  movsd  %xmm3,-0x558(%rbp)
  mulsd  %xmm4,%xmm10
  mulsd  %xmm8,%xmm0
  addsd  %xmm10,%xmm0
  mulsd  %xmm2,%xmm0
  movq   %xmm0,%r12
  movapd %xmm5,%xmm0
  call   <sqrt@plt>
  pxor   %xmm10,%xmm10
  mov    -0x608(%rbp),%rcx
  movsd  -0x578(%rbp),%xmm8
  movsd  -0x580(%rbp),%xmm9
  movsd  -0x588(%rbp),%xmm1
  cvtsi2sd %rax,%xmm10
  mov    $0x1,%esi
  movsd  (%r15,%rcx,1),%xmm0
  movsd  -0x568(%rbp),%xmm4
  mov    %r13d,-0x5c4(%rbp)
  mov    %r14,%rcx
  mulsd  %xmm8,%xmm1
  mov    -0x660(%rbp),%rax
  movsd  -0x560(%rbp),%xmm2
  mov    %rbx,-0x638(%rbp)
  mulsd  %xmm9,%xmm0
  mov    -0x688(%rbp),%r8
  mov    -0x618(%rbp),%rdi
  movsd  %xmm8,-0x560(%rbp)
  mulsd  (%rax,%r13,8),%xmm2
  mov    -0x630(%rbp),%rax
  mov    -0x670(%rbp),%r13
  movapd D499(%rip),%xmm6
  mov    %r8,%rbx
  mov    %r13,%r14
  subsd  %xmm1,%xmm0
  movq   %r12,%xmm1
  mov    -0x668(%rbp),%r12
  divsd  %xmm10,%xmm1
  mulsd  -0x558(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D251(%rip),%xmm1
  divsd  -0x600(%rbp),%xmm1
  mulsd  %xmm4,%xmm1
  addsd  %xmm1,%xmm0
  movsd  0xb8(%rax),%xmm1
  subsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mulsd  %xmm0,%xmm0
  movsd  %xmm1,0xb8(%rax)
  mov    -0x620(%rbp),%rax
  addsd  0xe58(%rax),%xmm0
  lea    0xe50(%rax),%r10
  mov    %r10,%r13
  movsd  %xmm0,0xe58(%rax)
  mov    -0x570(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x5c8(%rbp)
  mov    %r15,%rax
  mov    %rsi,%r15
  mov    %rax,%rsi
  mov    D499(%rip),%rax
  movq   %rax,%xmm5
  mov    D519(%rip),%rax
  movq   %rax,%xmm7
  nopl   (%rax)
L706:
  mov    -0x5c8(%rbp),%r9d
  mov    $0x1,%eax
  movslq %r15d,%rdx
  sub    %r15d,%r9d
  cmp    -0x5a0(%rbp),%r15d
  cmovg  %eax,%r9d
  cmp    %r15d,-0x5c4(%rbp)
  jle    L144
  movsd  (%r12),%xmm0
  movupd (%rbx),%xmm1
  pxor   %xmm4,%xmm4
  mov    %r9d,%eax
  shr    %eax
  movhpd 0xa0(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm1
  addpd  D576(%rip),%xmm1
  divpd  %xmm1,%xmm0
  movapd %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm4,%xmm2
  addsd  %xmm0,%xmm2
  movsd  (%r14),%xmm0
  movhpd 0xa0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm4,%xmm1
  addsd  %xmm0,%xmm1
  cmp    $0x1,%eax
  je     L709
  movsd  0x140(%r12),%xmm0
  movupd 0x10(%rbx),%xmm4
  movhpd 0x1e0(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x140(%r14),%xmm0
  movhpd 0x1e0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x2,%eax
  je     L709
  movsd  0x280(%r12),%xmm0
  movupd 0x20(%rbx),%xmm4
  movhpd 0x320(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x280(%r14),%xmm0
  movhpd 0x320(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x3,%eax
  je     L709
  movsd  0x3c0(%r12),%xmm0
  movupd 0x30(%rbx),%xmm4
  movhpd 0x460(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x3c0(%r14),%xmm0
  movhpd 0x460(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x4,%eax
  je     L709
  movsd  0x500(%r12),%xmm0
  movupd 0x40(%rbx),%xmm4
  movhpd 0x5a0(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x500(%r14),%xmm0
  movhpd 0x5a0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x5,%eax
  je     L709
  movsd  0x640(%r12),%xmm0
  movupd 0x50(%rbx),%xmm4
  movhpd 0x6e0(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x640(%r14),%xmm0
  movhpd 0x6e0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x6,%eax
  je     L709
  movsd  0x780(%r12),%xmm0
  movupd 0x60(%rbx),%xmm4
  movhpd 0x820(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x780(%r14),%xmm0
  movhpd 0x820(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x7,%eax
  je     L709
  movsd  0x8c0(%r12),%xmm0
  movupd 0x70(%rbx),%xmm4
  movhpd 0x960(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0x8c0(%r14),%xmm0
  movhpd 0x960(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x8,%eax
  je     L709
  movsd  0xa00(%r12),%xmm0
  movupd 0x80(%rbx),%xmm4
  movhpd 0xaa0(%r12),%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm6,%xmm4
  addpd  D576(%rip),%xmm4
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  movsd  0xa00(%r14),%xmm0
  movhpd 0xaa0(%r14),%xmm0
  mulpd  %xmm6,%xmm0
  divpd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
L709:
  mov    %r9d,%r11d
  and    $0xfffffffe,%r11d
  lea    (%r11,%rdx,1),%eax
  cmp    %r9d,%r11d
  je     L21
L248:
  cltq
  movsd  -0x4a0(%rbp,%rax,8),%xmm0
  lea    (%rax,%rax,4),%rax
  lea    (%rdx,%rax,4),%rax
  mulsd  %xmm5,%xmm0
  movsd  (%rcx,%rax,8),%xmm4
  mulsd  %xmm5,%xmm4
  addsd  %xmm7,%xmm0
  divsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm2
  movsd  (%rsi,%rax,8),%xmm4
  mulsd  %xmm5,%xmm4
  divsd  %xmm0,%xmm4
  addsd  %xmm4,%xmm1
L21:
  movapd %xmm9,%xmm0
  mov    -0x5c0(%rbp),%rax
  mov    %rsi,-0x598(%rbp)
  sub    $0x8,%r13
  mulsd  (%rcx,%rdi,1),%xmm0
  mov    %rdi,-0x580(%rbp)
  add    $0xa8,%r12
  add    $0x8,%rbx
  mulsd  -0x560(%rbp),%xmm2
  movsd  (%rax,%r15,8),%xmm4
  mov    %rcx,-0x578(%rbp)
  add    $0x1,%r15
  movsd  %xmm1,-0x590(%rbp)
  add    $0xa8,%r14
  movsd  %xmm9,-0x588(%rbp)
  movsd  %xmm4,-0x570(%rbp)
  subsd  %xmm2,%xmm0
  movsd  -0x558(%rbp),%xmm2
  mulsd  %xmm0,%xmm2
  movapd %xmm5,%xmm0
  mulsd  %xmm4,%xmm2
  movsd  %xmm2,-0x568(%rbp)
  call   <sqrt@plt>
  pxor   %xmm8,%xmm8
  movsd  -0x568(%rbp),%xmm2
  mov    -0x580(%rbp),%rdi
  cvtsi2sd %rax,%xmm8
  mov    -0x598(%rbp),%rsi
  movsd  -0x588(%rbp),%xmm9
  movsd  -0x590(%rbp),%xmm1
  mulsd  -0x560(%rbp),%xmm1
  mov    %rdi,%rax
  movapd %xmm9,%xmm0
  neg    %rax
  mov    -0x5d0(%rbp),%rdx
  add    -0x5a8(%rbp),%rdx
  mulsd  (%rsi,%rdi,1),%xmm0
  movsd  -0x570(%rbp),%xmm4
  divsd  %xmm8,%xmm2
  mov    -0x578(%rbp),%rcx
  movapd D499(%rip),%xmm6
  mulsd  (%rdx,%rax,1),%xmm4
  mov    -0x5b8(%rbp),%rax
  subsd  %xmm1,%xmm0
  mulsd  -0x558(%rbp),%xmm0
  movsd  (%rax,%rdi,1),%xmm1
  addsd  %xmm2,%xmm0
  subsd  %xmm4,%xmm0
  addsd  %xmm0,%xmm1
  mulsd  %xmm0,%xmm0
  movsd  %xmm1,(%rax,%rdi,1)
  mov    D499(%rip),%rax
  addsd  0x8(%r13),%xmm0
  add    $0x8,%rdi
  movq   %rax,%xmm5
  mov    D519(%rip),%rax
  movsd  %xmm0,0x8(%r13)
  cmp    %r15,-0x5b0(%rbp)
  movq   %rax,%xmm7
  jne    L706
  addq   $0x1,-0x5d8(%rbp)
  mov    %rcx,%r14
  mov    -0x638(%rbp),%rbx
  mov    %rsi,%r15
  mov    -0x5d8(%rbp),%rax
  addq   $0x1,-0x5b0(%rbp)
  addq   $0xb8,-0x630(%rbp)
  add    $0x8,%rbx
  subq   $0xb8,-0x620(%rbp)
  subq   $0x4,-0x628(%rbp)
  addq   $0x18,-0x5b8(%rbp)
  addq   $0xa0,-0x618(%rbp)
  addq   $0xa8,-0x5a8(%rbp)
  addq   $0xa0,-0x608(%rbp)
  cmp    $0x14,%rax
  jne    L251
  mov    -0x6a0(%rbp),%rax
  mov    %rsi,%r12
  lea    0x1(%rax),%rdx
  add    $0x2,%rax
  cmp    %rax,-0x648(%rbp)
  jl     L616
  mov    %rdx,-0x6a0(%rbp)
  jmp    L362
  nopl   0x0(%rax,%rax,1)
L144:
  pxor   %xmm1,%xmm1
  mov    %r15d,%eax
  movapd %xmm1,%xmm2
  jmp    L248
L372:
  mov    -0x5a0(%rbp),%r13d
  movapd %xmm6,%xmm5
  jmp    L137
L616:
  mov    -0x698(%rbp),%rax
  pxor   %xmm3,%xmm3
  movl   $0x1,-0x570(%rbp)
  lea    D399(%rip),%r14
  cvtsi2sdq -0x648(%rbp),%xmm3
  lea    D342(%rip),%r13
  lea    0xe58(%rax),%rcx
  lea    0xe48(%rax),%r12
  mov    %rcx,-0x578(%rbp)
  lea    0xc8(%rax),%rcx
  lea    0xf10(%rax,%rax,1),%rax
  mov    %rcx,-0x560(%rbp)
  mov    %rax,-0x580(%rbp)
  movsd  %xmm3,-0x568(%rbp)
L281:
  mov    -0x570(%rbp),%esi
  lea    D462(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    -0x580(%rbp),%r15
  mov    -0x578(%rbp),%rbx
  sub    %rbx,%r15
  nopl   0x0(%rax,%rax,1)
L188:
  movsd  -0x568(%rbp),%xmm3
  movsd  (%rbx),%xmm0
  add    $0x8,%r15
  sub    $0x8,%rbx
  movsd  -0x8(%r15),%xmm1
  divsd  %xmm3,%xmm1
  movapd %xmm1,%xmm2
  movsd  %xmm1,-0x558(%rbp)
  mulsd  %xmm1,%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm0
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  movsd  -0x558(%rbp),%xmm1
  mov    %r14,%rdi
  cqto
  idivq  -0x648(%rbp)
  cvtsi2sd %rax,%xmm0
  mov    $0x1,%eax
  movsd  %xmm0,0x8(%rbx)
  movapd %xmm1,%xmm0
  call   <printf@plt>
  cmp    %r15,-0x560(%rbp)
  jne    L188
  lea    D457(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    -0x578(%rbp),%rbx
  nopl   0x0(%rax)
L158:
  movsd  (%rbx),%xmm0
  mov    %r13,%rdi
  mov    $0x1,%eax
  sub    $0x8,%rbx
  call   <printf@plt>
  cmp    %rbx,%r12
  jne    L158
  lea    D630(%rip),%rdi
  sub    $0xc0,%r12
  call   <puts@plt>
  addl   $0x1,-0x570(%rbp)
  mov    -0x570(%rbp),%eax
  subq   $0xb8,-0x578(%rbp)
  addq   $0xc0,-0x560(%rbp)
  cmp    $0x14,%eax
  jne    L281
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L765
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
L354:
  lea    D597(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L135
L765:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D201
type: string
name: disassemble_data
arguments: data_label: D252
type: string
name: disassemble_data
arguments: data_label: D597
type: string
name: disassemble_data
arguments: data_label: D440
type: string
name: disassemble_data
arguments: data_label: D690
type: string
name: disassemble_data
arguments: data_label: D161
type: byte[4]
name: disassemble_data
arguments: data_label: D156
type: f32
name: disassemble_data
arguments: data_label: D490
type: byte[16]
name: disassemble_data
arguments: data_label: D496
type: byte[16]
name: disassemble_data
arguments: data_label: D73
type: byte[8]
name: disassemble_data
arguments: data_label: D447
type: byte[4]
name: disassemble_data
arguments: data_label: D105
type: byte[8]
name: disassemble_data
arguments: data_label: D519
type: byte[8]
name: disassemble_data
arguments: data_label: D499
type: byte[16]
name: disassemble_data
arguments: data_label: D251
type: byte[8]
name: disassemble_data
arguments: data_label: D576
type: byte[16]
name: disassemble_data
arguments: data_label: D399
type: string
name: disassemble_data
arguments: data_label: D342
type: string
name: disassemble_data
arguments: data_label: D462
type: string
name: disassemble_data
arguments: data_label: D457
type: string
name: disassemble_data
arguments: data_label: D630
type: string

tool: D201: rt

tool: D252: L0

tool: D597: File not found

tool: D440: %f

tool: D690: lambda

tool: {"D161": [0x00,0x00,0x80,0x3e]}

tool: D156: 1

tool: {"D490": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D496": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D73": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

tool: {"D447": [0x00,0x00,0x80,0x3d]}

tool: {"D105": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xbf]}

tool: {"D519": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D499": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

tool: {"D251": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D576": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D399: %f  

tool: D342: %f   

tool: D462: %d        

tool: D457: 
         

tool: D630: 
 

assistant: ```c
void spgam(long M1) {
  long M = (long)M1;
  float nyear = 5, delta = .25, epsilon = .25, B = 1;
  int m = 1, N = 20;
  float L0[N], lambda[N];
  FILE *file_ptr;
  int i, j, k, run, n, t, ind;
  double L[N], res[N][N + 3], z[m], B0[N], K[N], Del1[N][N], Del[N][N], Dd[N][N];
  double v, w, discount, lam, sen, Dell[N][N], zz[N], b[N], v2, Ddd[N][N], p;
  double am[N][N], vz[N];
  double con[N];
  file_ptr = fopen("L0", "rt");
  if (file_ptr == NULL) {
    printf("File not found");
  }
  for (i = 0; i < N; i++) {
    fscanf(file_ptr, "%f", &(L0[i]));
  }
  fclose(file_ptr);
  file_ptr = fopen("lambda", "rt");
  if (file_ptr == NULL) {
    printf("File not found");
  }
  for (i = 0; i < (N * m); i++) {
    fscanf(file_ptr, "%f", &(lambda[i]));
  }
  fclose(file_ptr);
  j = 0;
  B0[j] = B / (1 + delta * L0[j]);
  B = B0[j];
  K[j] = L0[j];
  for (k = 0; k < N + 1; k++) {
    res[j][k] = 0;
    Del1[j][k] = 0;
    Dd[j][k] = 0;
  }
  res[j][N + 1] = 0;
  res[j][N + 2] = 0;
  b[0] = 1 / lambda[0];
  for (j = 1; j < N; j++) {
    B0[j] = B / (1 + delta * L0[j]);
    B = B0[j];
    K[j] = L0[j];
    for (k = 0; k < N + 1; k++) {
      res[j][k] = 0;
      Del1[j][k] = 0;
      Dd[j][k] = 0;
    }
    res[j][N + 1] = 0;
    res[j][N + 2] = 0;
    v = 0;
    for (k = 0; k < j; k++) {
      v += b[k] * lambda[j - k];
    }
    b[k] = -v / lambda[0];
    con[j] = 0;
  }
  B = 1 / (1 + delta * L0[0]);
  con[0] = -1;
  con[1] = +1;
  for (i = 0; i < N; i++) {
    for (j = 0; j < N; j++) {
      Dell[i][j] = 0;
    }
    Dell[i][i - 1] = 1 / delta / B0[i] / L0[i];
    Dell[i][i] = -B0[i - 1] / delta / B0[i] / B0[i] / L0[i];
  }
  for (t = 1; t < N; t++) {
    for (i = t; i < N; i++) {
      for (j = t; j < i + 1; j++) {
        sen = epsilon * delta * lambda[(i - t)] * lambda[(j - t)] / (1 + delta * L0[j]) / (1 + delta * L0[j]);
        Dell[i][j - 1] += sen / delta / B0[j];
        Dell[i][j] += -sen * B0[j - 1] / delta / B0[j] / B0[j];
      }
    }
    for (k = 0; k < t + 1; k++) {
      am[t][k] = 0;
      for (j = 1; j < t + 1; j++) {
        am[t][k] += b[j - 1] * Dell[t + 1 - j][k];
      }
    }
  }
  for (t = 1; t < N; t++) {
    for (i = 1; i <= m; i++) {
      for (n = t; n < N; n++) {
        for (j = t; j <= n; j++) {
          v = delta * lambda[(n - t) * m + i - 1] * lambda[(j - t) * m + i - 1] / (1 + delta * L0[j]) / (1 + delta * L0[j]);
          Del1[n][j - 1] += v / delta / B0[j];
          Del1[n][j] += -v / delta * B0[j - 1] / B0[j] / B0[j];
          sen = -2 * delta * v / (1 + delta * L0[j]);
          Dd[n][j - 1] += sen / delta / B0[j] / delta / B0[j];
          Dd[n][j] += sen * B0[j - 1] / delta / B0[j] / B0[j] * B0[j - 1] / delta / B0[j] / B0[j] + v * B0[j - 1] * 2 / delta / B0[j] / B0[j] / B0[j];
        }
      }
    }
  }
  for (run = 1; run <= M; run++) {
    ind = 0;
    for (j = 1; j < N; j++) {
      L[j] = L0[j];
    }
    discount = 1.;
    for (t = 1; t < N; t++) {
      nrandv(m, z);
      for (i = 1; i <= m; i++) {
        if (ind < N) {
          zz[ind] = z[i - 1];
          ind += 1;
        }
        v = 0;
        for (n = t; n < N; n++) {
          lam = lambda[(n - t) * m + i - 1];
          v = v + (delta * L[n] * lam) / (1 + delta * L[n]);
          L[n] = L[n] * exp((-lam / 2 + v) * lam * epsilon + lam * sqrt(epsilon) * z[i - 1]);
        }
      }
      discount = discount * (1 + delta * L[t]);
      for (k = 0; k < t + 1; k++) {
        Del[t][k] = L[t] * epsilon * Del1[t][k];
        Ddd[t][k] = L[t] * epsilon * Dd[t][k];
        vz[k] = 0;
        for (j = 1; j < t + 1; j++) {
          vz[k] += zz[j - 1] * am[j][k];
        }
      }
      Del[t][t - 1] += L[t] / L0[t] / delta / B0[t];
      Del[t][t] += -L[t] / L0[t] * B0[t - 1] / delta / B0[t] / B0[t];
      Ddd[t][t - 1] += -L[t] / delta / B0[t] / L0[t] / delta / L0[t] / B0[t];
      Ddd[t][t] += L[t] * (2 * B0[t - 1] / delta / B0[t] / B0[t] / L0[t] / B0[t] - B0[t - 1] * B0[t - 1] / delta / delta / L0[t] / L0[t] / B0[t] / B0[t] / B0[t] / B0[t]);
      k = 0;
      v = 0;
      w = 0;
      for (n = k; n < t + 1; n++) {
        v += delta * Del[n][k] / (1 + delta * L[n]);
        w += delta * Ddd[n][k] / (1 + delta * L[n]);
      }
      sen = B * delta / discount * ((((L[t]) > (K[t])) ? (1) : (0)) * Del[t][k] - (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0)) * v) + delta / discount * (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0));
      p = v;
      sen = sen * vz[k] / sqrt(epsilon) + B * delta / discount * ((((L[t]) > (K[t])) ? (1) : (0)) * Ddd[t][k] - (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0)) * w) + 2 * delta / discount * ((((L[t]) > (K[t])) ? (1) : (0)) * Del[t][k] - (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0)) * p) - con[t - k] * vz[k];
      res[t][k] += sen;
      res[N - t][N + 2 - k] += sen * sen;
      for (k = 1; k < t + 1; k++) {
        v = 0;
        w = 0;
        v2 = 0;
        for (n = k; n < t + 1; n++) {
          v += delta * Del[n][k] / (1 + delta * L[n]);
          w += delta * Ddd[n][k] / (1 + delta * L[n]);
        }
        sen = B * delta / discount * ((((L[t]) > (K[t])) ? (1) : (0)) * Del[t][k] - (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0)) * v);
        sen = sen * vz[k] / sqrt(epsilon) + B * delta / discount * ((((L[t]) > (K[t])) ? (1) : (0)) * Ddd[t][k] - (((L[t] - K[t]) > (0)) ? (L[t] - K[t]) : (0)) * w) - con[t - k] * vz[k];
        res[t][k] += sen;
        res[N - t][N + 2 - k] += sen * sen;
      }
    }
  }
  for (i = 1; i < N; i++) {
    printf("%d        ", i);
    for (j = 0; j < i + 1; j++) {
      sen = res[i][j] / M;
      res[N - i][N + 2 - j] = sqrt(res[N - i][N + 2 - j] - sen * sen * M) / M;
      printf("%f  ", sen);
    }
    printf("\n         ");
    for (j = 0; j < i + 1; j++) {
      printf("%f   ", res[N - i][N + 2 - j]);
    }
    printf("\n \n");
  }
}
```