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

```asm
<bobyqb_>:
  endbr64
  push   %r15
  mov    %esi,%r15d
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x4b8,%rsp
  mov    0x510(%rsp),%rax
  mov    0x528(%rsp),%r10
  mov    %r9,0x348(%rsp)
  mov    0x508(%rsp),%r11
  mov    0x4f0(%rsp),%rbx
  mov    %edi,0x58(%rsp)
  mov    %rax,0xa0(%rsp)
  mov    %rax,%rsi
  mov    %r10,%r9
  mov    0x518(%rsp),%rax
  mov    0x538(%rsp),%r14
  mov    0x540(%rsp),%rbp
  mov    %r10,0x138(%rsp)
  mov    0x548(%rsp),%r13
  mov    0x530(%rsp),%r10
  mov    %rdx,0x220(%rsp)
  mov    %rax,%rdi
  mov    %rcx,0x268(%rsp)
  mov    %r8,0x240(%rsp)
  mov    %rbx,%r8
  mov    %rbx,0x398(%rsp)
  mov    0x520(%rsp),%rbx
  mov    %r11,0x210(%rsp)
  mov    %r10,0x120(%rsp)
  mov    %r14,0x188(%rsp)
  mov    %rbp,0x20(%rsp)
  mov    %r13,0x110(%rsp)
  movsd  %xmm1,0x2a0(%rsp)
  mov    %rax,0x308(%rsp)
  mov    0x558(%rsp),%rax
  mov    0x568(%rsp),%r12
  mov    0x578(%rsp),%rbp
  mov    %rax,0x190(%rsp)
  mov    %rax,%rcx
  mov    0x560(%rsp),%rax
  mov    %r12,0x100(%rsp)
  mov    0x570(%rsp),%r12
  mov    %rax,0x178(%rsp)
  mov    %rax,%rdx
  mov    0x580(%rsp),%r14
  mov    %r12,0x1d8(%rsp)
  mov    0x588(%rsp),%r12
  mov    %fs:0x28,%rax
  mov    %rax,0x4a8(%rsp)
  xor    %eax,%eax
  lea    0x1(%r15),%eax
  mov    %eax,0x374(%rsp)
  cltq
  lea    0x0(,%rax,8),%r10
  mov    %rsi,%rax
  sub    %r10,%rsi
  mov    %r10,0x38(%rsp)
  mov    %r10,%r13
  mov    %rcx,%r10
  mov    %rsi,0x90(%rsp)
  lea    -0x8(%r11),%rsi
  neg    %r13
  mov    %rsi,0x50(%rsp)
  mov    %rdi,%rsi
  sub    $0x8,%rdi
  mov    %rdi,0x1b0(%rsp)
  lea    -0x8(%rbx),%rdi
  mov    %rdi,0xc0(%rsp)
  lea    -0x8(%rcx),%rdi
  lea    -0x8(%rdx),%rcx
  mov    %rcx,0x80(%rsp)
  lea    0x484(%rsp),%rcx
  mov    %rcx,0x478(%rsp)
  mov    %rdi,0x68(%rsp)
  push   %rcx
  lea    0x488(%rsp),%rcx
  mov    %rcx,0x478(%rsp)
  push   %rcx
  push   %rdx
  push   %r10
  mov    0x570(%rsp),%edi
  push   %rdi
  push   0x138(%rsp)
  push   0x50(%rsp)
  push   0x1c0(%rsp)
  push   0x160(%rsp)
  push   %r9
  push   %rsi
  push   %rax
  push   %r11
  mov    0x568(%rsp),%esi
  push   %rsi
  mov    0x568(%rsp),%esi
  push   %rsi
  mov    %r15d,%esi
  push   %r8
  mov    0x3c8(%rsp),%r9
  mov    0x2c0(%rsp),%r8
  mov    0x2e8(%rsp),%rcx
  mov    0x2a0(%rsp),%rdx
  mov    0xd8(%rsp),%edi
  movsd  %xmm0,0x88(%rsp)
  call   <prelim_@plt>
  mov    0xd8(%rsp),%eax
  sub    $0xffffffffffffff80,%rsp
  movsd  0x8(%rsp),%xmm14
  test   %eax,%eax
  jle    L2855
  movslq 0x484(%rsp),%rax
  cmp    $0x1,%r15d
  jne    L1244
  movslq %eax,%rdx
  mov    0xa0(%rsp),%r8
  shl    $0x3,%rdx
  mov    %rdx,%rcx
  sub    0x38(%rsp),%rcx
  lea    0x10(%r8,%rcx,1),%rsi
  cmp    %rsi,%rbx
  je     L3736
  mov    0x58(%rsp),%edi
  lea    -0x1(%rdi),%esi
  cmp    $0x1,%esi
  jbe    L3736
  lea    0x8(%r8,%rcx,1),%rsi
  mov    %edi,%ecx
  pxor   %xmm2,%xmm2
  xor    %edx,%edx
  shr    %ecx
  movapd %xmm2,%xmm15
  shl    $0x4,%rcx
L771:
  movupd (%rsi,%rdx,1),%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  mulpd  %xmm0,%xmm0
  add    $0x10,%rdx
  addsd  %xmm0,%xmm15
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  cmp    %rcx,%rdx
  jne    L771
  mov    0x58(%rsp),%ecx
  mov    %ecx,%edx
  or     $0x1,%edx
  and    $0x1,%ecx
  je     L1712
  add    %edx,%eax
  mov    0x90(%rsp),%rcx
  movslq %edx,%rdx
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mov    0xc0(%rsp),%rax
  movsd  %xmm0,(%rax,%rdx,8)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm15
L1712:
  mov    0x308(%rsp),%rax
  movsd  (%rax),%xmm3
  mov    0x480(%rsp),%eax
  movsd  %xmm3,0x2c8(%rsp)
  mov    %eax,0x260(%rsp)
  cmp    %r15d,%eax
  jl     L4543
  mov    0x550(%rsp),%esi
  mov    0x138(%rsp),%rdi
  lea    -0x8(%rbp),%r10
  lea    -0x8(%r12),%r11
  mov    0x100(%rsp),%r9
  mov    %r10,0x1b8(%rsp)
  lea    -0x8(%rdi),%rax
  mov    %r15d,%edi
  mov    0x120(%rsp),%rcx
  add    0x110(%rsp),%r13
  mov    %rax,0x2d0(%rsp)
  lea    0x1(%rsi),%eax
  lea    -0x8(%r9),%rsi
  mov    0x58(%rsp),%r9d
  mov    %rsi,0x380(%rsp)
  cltq
  sub    $0x8,%rcx
  lea    0x1(%r9),%esi
  mov    %r9d,%edx
  lea    0x0(,%rax,8),%r8
  mov    0x20(%rsp),%rax
  imul   %esi,%edx
  sub    %esi,%edi
  mov    %esi,0x3ac(%rsp)
  sub    %r8,%rax
  mov    %edi,0xcc(%rsp)
  mov    %esi,%edi
  mov    %rax,0x78(%rsp)
  mov    %edx,%r10d
  mov    %rcx,0x1f0(%rsp)
  mov    0x188(%rsp),%rcx
  shr    $0x1f,%r10d
  mov    %r8,0x180(%rsp)
  mov    %r10d,%eax
  sub    $0x8,%rcx
  mov    %r13,0xb0(%rsp)
  movslq %r15d,%r13
  add    %edx,%eax
  mov    %rcx,0x208(%rsp)
  lea    -0x8(%r14),%rcx
  mov    %eax,%r10d
  lea    (%r9,%r9,1),%eax
  mov    %rcx,0x258(%rsp)
  mov    0x484(%rsp),%ecx
  lea    (%rax,%r9,1),%edx
  sar    %r10d
  add    %esi,%eax
  add    %esi,%edx
  mov    %r10d,0x354(%rsp)
  cltq
  movslq %edx,%rdx
  mov    %ecx,0x30(%rsp)
  mov    %r9d,%ecx
  lea    (%r11,%rdx,8),%r10
  lea    -0x8(,%rcx,8),%rcx
  mov    %r10,0x2a8(%rsp)
  lea    (%r11,%rax,8),%r10
  mov    %r9d,%eax
  add    %esi,%eax
  mov    %r10,0x2b0(%rsp)
  cltq
  lea    (%r11,%rax,8),%r10
  movslq %esi,%rax
  lea    (%r11,%rax,8),%rsi
  mov    0x550(%rsp),%eax
  mov    %r10,0x278(%rsp)
  mov    %rsi,0x248(%rsp)
  movslq 0x550(%rsp),%rsi
  add    %edi,%eax
  mov    %rsi,0x360(%rsp)
  cltq
  mov    %r11,%rsi
  add    %r8,%r11
  lea    (%rsi,%rax,8),%r10
  mov    %r11,0x368(%rsp)
  mov    %rsi,%r11
  mov    %r10,0x3b0(%rsp)
  mov    0x38(%rsp),%r10
  sub    $0x8,%r10
  mov    %r10,%r8
  lea    -0x1(%r9),%r10d
  lea    0x0(,%r10,8),%rdi
  mov    %r10d,0x29c(%rsp)
  mov    0x138(%rsp),%rdx
  lea    0x8(%rdi),%rax
  mov    %r10,0x158(%rsp)
  lea    (%rax,%rbx,1),%r10
  mov    %rcx,0x28(%rsp)
  mov    %r10,0x118(%rsp)
  mov    %r13,%r10
  imul   %rcx,%r13
  xor    %ecx,%ecx
  test   %r15d,%r15d
  mov    %r8,0xd0(%rsp)
  mov    %r13,%rsi
  mov    %rcx,%r13
  cmovns %rsi,%r13
  mov    %r13,0x2e0(%rsp)
  mov    0x28(%rsp),%r13
  add    %rdx,%r13
  test   %r15d,%r15d
  mov    %r13,0x340(%rsp)
  mov    %rcx,%r13
  mov    %r10,%rcx
  cmovs  %rsi,%r13
  shl    $0x4,%rcx
  add    0x138(%rsp),%rax
  mov    %rcx,0x170(%rsp)
  mov    %r9d,%ecx
  shr    %ecx
  mov    %r13,0x2e8(%rsp)
  mov    %r10,%r13
  lea    -0x1(%rcx),%r10d
  mov    %rax,0x390(%rsp)
  mov    %r15d,%eax
  mov    %r10,0x70(%rsp)
  shl    $0x4,%r10
  shr    %eax
  lea    0x10(%r10),%rsi
  mov    %r10,0xa8(%rsp)
  mov    %r9d,%r10d
  and    $0xfffffffe,%r9d
  mov    %r9d,0x5c(%rsp)
  mov    %r10d,%r9d
  or     $0x1,%r10d
  sub    $0x1,%eax
  mov    %r10d,0xc8(%rsp)
  movslq %r10d,%rcx
  imul   %r15d,%r10d
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %r13,0x238(%rsp)
  lea    (%rsi,%rdx,1),%rdx
  shl    $0x3,%rcx
  mov    %rdx,0x300(%rsp)
  mov    0x2d0(%rsp),%rdx
  mov    %r10d,0x298(%rsp)
  mov    %rax,%r10
  mov    %r15d,%eax
  and    $0xfffffffe,%eax
  add    %rcx,%rdx
  mov    %eax,0x8(%rsp)
  mov    %r15d,%eax
  or     $0x1,%eax
  mov    %rdx,0x2f0(%rsp)
  mov    %eax,0xb8(%rsp)
  lea    (%rsi,%rbx,1),%rax
  mov    0x360(%rsp),%rsi
  mov    %rax,0x420(%rsp)
  mov    %r13,%rax
  mov    0x188(%rsp),%r13
  neg    %rax
  lea    0x0(%r13,%rax,8),%r13
  mov    0x78(%rsp),%rax
  mov    %r13,0x328(%rsp)
  mov    0x180(%rsp),%r13
  sub    $0x8,%r13
  add    %r13,%rax
  mov    %rax,%rdx
  mov    0x238(%rsp),%rax
  sub    %r8,%rdx
  mov    0x78(%rsp),%r8
  lea    0x1(%rsi,%rax,1),%rax
  mov    %rdx,0x388(%rsp)
  lea    (%r8,%rax,8),%rdx
  mov    %rsi,%rax
  neg    %rax
  mov    %rdx,0x1a0(%rsp)
  mov    0xd0(%rsp),%r8
  lea    0x0(,%rax,8),%rdx
  mov    0x238(%rsp),%rax
  mov    %r11,0x88(%rsp)
  mov    %rdx,0x3a0(%rsp)
  lea    0x1(%rax,%rsi,2),%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  sub    0x180(%rsp),%rdx
  mov    %rsi,%rax
  mov    %rdx,0x378(%rsp)
  mov    0x550(%rsp),%edx
  shl    $0x4,%rax
  mov    %rax,0x98(%rsp)
  lea    (%rdx,%rdx,1),%eax
  cltq
  sub    %rsi,%rax
  lea    0x0(,%rax,8),%rdx
  mov    %rdx,0x2f8(%rsp)
  mov    0x38(%rsp),%rdx
  lea    (%r12,%rdx,1),%rax
  lea    (%r12,%r8,1),%rdx
  mov    0xb8(%rsp),%r8d
  cmp    %rax,%r14
  mov    %rdx,0x60(%rsp)
  mov    0x190(%rsp),%rdx
  lea    (%r8,%r15,1),%eax
  setne  0x3ab(%rsp)
  cltq
  lea    (%r11,%rax,8),%r11
  movslq %r8d,%rax
  mov    0x258(%rsp),%r8
  mov    %r11,0x1c8(%rsp)
  lea    0x0(,%rax,8),%r11
  mov    0x238(%rsp),%rax
  add    %r11,%r8
  mov    %r11,0x10(%rsp)
  lea    0xf(%rbx),%r11
  add    %rsi,%rax
  mov    0x78(%rsp),%rsi
  cmp    $0x1,%r9d
  mov    0x100(%rsp),%r9
  setne  0x40(%rsp)
  lea    (%rsi,%rax,8),%rax
  mov    %r8,0x140(%rsp)
  mov    %rax,0x428(%rsp)
  mov    0x210(%rsp),%rax
  lea    0xf(%rax),%rsi
  mov    %r11,%rax
  sub    %r9,%rax
  cmp    $0x1e,%rax
  mov    %rdx,%rax
  seta   0x48(%rsp)
  add    $0xf,%rax
  mov    %rax,%r8
  mov    0x178(%rsp),%rax
  add    $0xf,%rax
  sub    %r9,%rax
  mov    %r8,%r9
  cmp    $0x1e,%rax
  seta   %al
  sub    0x178(%rsp),%r9
  and    0x40(%rsp),%al
  cmp    $0x1e,%r9
  seta   %r9b
  sub    0x100(%rsp),%r8
  and    %r9d,%eax
  cmp    $0x1e,%r8
  mov    %r11,%r8
  seta   %r9b
  sub    %rdx,%r8
  and    %r9d,%eax
  cmp    $0x1e,%r8
  mov    %r11,%r8
  mov    0x178(%rsp),%r11
  seta   %r9b
  sub    %r11,%r8
  and    %r9d,%eax
  cmp    $0x1e,%r8
  mov    %rsi,%r8
  seta   %r9b
  sub    %rbx,%r8
  and    %r9d,%eax
  and    0x48(%rsp),%al
  cmp    $0x1e,%r8
  mov    %rsi,%r8
  seta   %r9b
  sub    %rdx,%r8
  mov    %rsi,%rdx
  and    %r9d,%eax
  cmp    $0x1e,%r8
  seta   %r9b
  sub    %r11,%rdx
  and    %r9d,%eax
  cmp    $0x1e,%rdx
  seta   %r9b
  sub    0x100(%rsp),%rsi
  and    %eax,%r9d
  cmp    $0x1e,%rsi
  seta   %al
  mov    %r9d,%r11d
  and    %eax,%r11d
  mov    %r11b,0x447(%rsp)
  mov    0x50(%rsp),%r11
  mov    0x70(%rsp),%rax
  mov    0x380(%rsp),%rdx
  add    %rcx,%r11
  mov    0x58(%rsp),%esi
  mov    %r11,0x448(%rsp)
  add    $0x1,%rax
  mov    0xc0(%rsp),%r11
  shl    $0x4,%rax
  mov    %rax,%r8
  mov    %rax,0x70(%rsp)
  lea    (%r11,%rcx,1),%rax
  mov    %rax,0xd8(%rsp)
  lea    (%rdx,%rcx,1),%rax
  mov    %rax,0xe0(%rsp)
  mov    0x68(%rsp),%rax
  add    %rcx,%rax
  mov    %rax,0x450(%rsp)
  mov    0x80(%rsp),%rax
  add    %rcx,%rax
  cmp    $0x2,%esi
  mov    %rax,0x458(%rsp)
  lea    0x8(%rbx),%rax
  setg   0x353(%rsp)
  cmp    %rax,%rbp
  mov    0x100(%rsp),%rax
  movzbl 0x353(%rsp),%r9d
  setne  %r11b
  add    $0x8,%rax
  cmp    %rax,%rbp
  mov    %rax,0x430(%rsp)
  setne  0x80(%rsp)
  movzbl 0x80(%rsp),%eax
  and    %r9d,%eax
  mov    $0x1,%r9d
  and    %r11d,%eax
  test   %esi,%esi
  mov    %al,0x446(%rsp)
  mov    %esi,%eax
  cmovle %r9d,%eax
  mov    %eax,%esi
  mov    %eax,0x320(%rsp)
  shr    %eax
  sub    $0x1,%eax
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,0x338(%rsp)
  mov    %esi,%eax
  and    $0xfffffffe,%esi
  or     $0x1,%eax
  mov    %esi,0x324(%rsp)
  mov    0xd0(%rsp),%rsi
  mov    %eax,0x2c4(%rsp)
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    %rdx,0x280(%rsp)
  mov    0xc0(%rsp),%rdx
  add    %rax,%rdx
  mov    %rdx,0x438(%rsp)
  mov    0x1b8(%rsp),%rdx
  add    %rax,%rdx
  mov    %rdx,0x3c0(%rsp)
  lea    0x0(%rbp,%rdi,1),%rdx
  mov    %rdx,0x1d0(%rsp)
  lea    (%r14,%rsi,1),%rdx
  mov    %rdx,0x68(%rsp)
  lea    (%r8,%rbx,1),%rdx
  mov    %rdx,0x460(%rsp)
  add    0x100(%rsp),%r8
  mov    %r8,0x468(%rsp)
  mov    0x110(%rsp),%r8
  mov    0x208(%rsp),%rdx
  add    0x10(%rsp),%rdx
  sub    $0x8,%r8
  cmp    $0x1,%r15d
  mov    %rdx,0x3d0(%rsp)
  setne  0x50(%rsp)
  cmpl   $0x1,0x550(%rsp)
  movzbl 0x50(%rsp),%edx
  setne  %sil
  mov    %r8,0x3c8(%rsp)
  mov    %esi,%r8d
  mov    0x88(%rsp),%rsi
  or     %edx,%r8d
  mov    %r8b,0x445(%rsp)
  lea    (%rsi,%rax,1),%r8
  lea    (%rsi,%rcx,1),%rdx
  mov    %r8,0x218(%rsp)
  mov    0x28(%rsp),%r8
  mov    %rdx,0xf8(%rsp)
  lea    0x8(%r12),%rdx
  add    %r12,%r8
  add    %rdx,%rdi
  mov    %rdx,0x160(%rsp)
  mov    %r8,0x3d8(%rsp)
  mov    0xa8(%rsp),%r8
  mov    %rdi,0x330(%rsp)
  mov    0xcc(%rsp),%edi
  lea    0x10(%r12,%r8,1),%r8
  mov    %r8,0x3e0(%rsp)
  mov    %rsi,%r8
  mov    %edi,%esi
  shr    %esi
  sub    $0x1,%esi
  add    $0x1,%rsi
  shl    $0x4,%rsi
  mov    %rsi,0x250(%rsp)
  mov    %edi,%esi
  or     $0x1,%edi
  and    $0xfffffffe,%esi
  mov    %edi,0x2dc(%rsp)
  mov    0xa0(%rsp),%rdi
  sub    0x38(%rsp),%rdi
  mov    %esi,0x264(%rsp)
  mov    %rdi,%rsi
  movzbl 0x40(%rsp),%edi
  add    $0x18,%rsi
  cmp    %rsi,%r12
  setne  %sil
  and    %esi,%edi
  cmp    %rdx,0x138(%rsp)
  mov    %dil,0x351(%rsp)
  mov    0x5c(%rsp),%edi
  lea    0x2(%rdi),%esi
  mov    0x90(%rsp),%rdi
  movslq %esi,%rsi
  lea    (%rdi,%rsi,8),%rdi
  mov    %rdi,0x108(%rsp)
  setne  %dil
  cmpl   $0x1,0x58(%rsp)
  movl   $0x0,0x1a8(%rsp)
  setg   %sil
  movl   $0x0,0x2c0(%rsp)
  and    %esi,%edi
  mov    $0x8,%esi
  mov    %dil,0x3eb(%rsp)
  mov    0x2d0(%rsp),%rdi
  movl   $0x1,0x370(%rsp)
  movsd  %xmm14,0x128(%rsp)
  add    %rax,%rdi
  mov    %r15d,%eax
  shl    $0x3,%rax
  test   %r15d,%r15d
  mov    %rdi,0x290(%rsp)
  movsd  %xmm2,0x200(%rsp)
  cmovle %rsi,%rax
  mov    %r9d,%esi
  cmovg  %r15d,%esi
  lea    (%r14,%rax,1),%rdi
  mov    %rdi,0x410(%rsp)
  lea    (%r12,%rax,1),%rdi
  mov    %esi,%eax
  shr    %eax
  mov    %rdi,0x408(%rsp)
  sub    $0x1,%eax
  mov    %esi,0x440(%rsp)
  add    $0x1,%rax
  mov    %rax,%rdi
  shl    $0x4,%rdi
  mov    %rdi,0x3b8(%rsp)
  mov    %esi,%edi
  or     $0x1,%esi
  and    $0xfffffffe,%edi
  movslq %esi,%rax
  mov    0x258(%rsp),%rsi
  mov    %edi,0x3ec(%rsp)
  mov    0x1b0(%rsp),%rdi
  shl    $0x3,%rax
  add    %rax,%rdi
  mov    %rdi,0x400(%rsp)
  lea    (%rsi,%rax,1),%rdi
  mov    0x10(%rsp),%rsi
  mov    %rdi,0x3f8(%rsp)
  mov    %rax,%rdi
  add    %r8,%rdi
  add    %r8,%rsi
  mov    0x1d8(%rsp),%r8
  cmpl   $0x1,0x29c(%rsp)
  mov    %rsi,0x418(%rsp)
  lea    0x8(%r8),%rsi
  seta   0x352(%rsp)
  cmp    %rsi,%rbp
  mov    %rdi,0x3f0(%rsp)
  movzbl 0x352(%rsp),%edi
  setne  %al
  cmp    %rsi,0x100(%rsp)
  setne  %sil
  and    %esi,%eax
  and    %edi,%eax
  and    0x80(%rsp),%al
  and    %r11d,%eax
  and    0x48(%rsp),%al
  mov    %al,0x350(%rsp)
  lea    -0x8(%r8,%rcx,1),%rax
  add    0x1b8(%rsp),%rcx
  mov    %rax,0xf0(%rsp)
  lea    0x4a0(%rsp),%rax
  mov    %rcx,0xe8(%rsp)
  movsd  %xmm2,0x1f8(%rsp)
  mov    %rax,0x318(%rsp)
  lea    0x488(%rsp),%rax
  mov    %rax,0x310(%rsp)
L3293:
  mov    0x30(%rsp),%ecx
  cmp    %ecx,0x370(%rsp)
  jne    L4438
L4689:
  mov    0x260(%rsp),%eax
  mov    %eax,0x1ac(%rsp)
  mov    %r12,%rax
  mov    %r14,%r12
  mov    %rbp,%r14
  mov    %r13,%rbp
  mov    %rbx,%r13
  mov    %r10,%rbx
  mov    %rax,%r10
L893:
  movsd  %xmm2,0x40(%rsp)
  mov    %r13,%rcx
  mov    %r15d,%esi
  movsd  %xmm14,0x30(%rsp)
  movsd  %xmm15,0x28(%rsp)
  push   0x318(%rsp)
  push   0x318(%rsp)
  push   0x2b8(%rsp)
  push   0x2c8(%rsp)
  push   0x298(%rsp)
  push   0x270(%rsp)
  push   %r10
  mov    %r10,0x48(%rsp)
  push   %r14
  push   0x140(%rsp)
  push   0x1c0(%rsp)
  push   0x1e0(%rsp)
  push   0x1e0(%rsp)
  movsd  0x188(%rsp),%xmm0
  mov    0x180(%rsp),%r9
  mov    0x198(%rsp),%r8
  mov    0x100(%rsp),%rdx
  mov    0xb8(%rsp),%edi
  call   <trsbox_@plt>
  mov    D275(%rip),%rax
  movsd  0x4e8(%rsp),%xmm1
  add    $0x60,%rsp
  movsd  0x40(%rsp),%xmm2
  mov    0x10(%rsp),%r10
  movq   %rax,%xmm13
  movsd  0x28(%rsp),%xmm15
  movsd  0x30(%rsp),%xmm14
  ucomisd %xmm1,%xmm2
  ja     L2288
  movapd %xmm1,%xmm7
  sqrtsd %xmm7,%xmm7
L1428:
  movsd  0x128(%rsp),%xmm3
  movapd %xmm14,%xmm4
  mulsd  %xmm13,%xmm4
  minsd  %xmm7,%xmm3
  movapd %xmm3,%xmm7
  movsd  %xmm4,0x2b8(%rsp)
  comisd %xmm3,%xmm4
  jbe    L1160
  movsd  D240(%rip),%xmm4
  mov    0x1ac(%rsp),%eax
  mov    0x480(%rsp),%r8d
  mulsd  %xmm14,%xmm4
  add    $0x2,%eax
  mulsd  %xmm4,%xmm4
  cmp    %r8d,%eax
  jge    L1156
  movsd  D1(%rip),%xmm1
  movsd  0x200(%rsp),%xmm6
  maxsd  0x1f8(%rsp),%xmm6
  movsd  0x288(%rsp),%xmm3
  movsd  0x4a0(%rsp),%xmm0
  mulsd  %xmm14,%xmm1
  maxsd  %xmm6,%xmm3
  comisd %xmm2,%xmm0
  mulsd  %xmm14,%xmm1
  movapd %xmm3,%xmm6
  jbe    L966
  mulsd  %xmm1,%xmm0
  comisd %xmm0,%xmm3
  ja     L1156
L966:
  mov    0x58(%rsp),%esi
  divsd  %xmm14,%xmm6
  test   %esi,%esi
  jle    L975
  mov    %r8d,0x48(%rsp)
  mov    $0x8,%ecx
  mov    %r15d,%edx
  mov    0x90(%rsp),%rdi
  mov    %rbp,0x10(%rsp)
  mov    $0x1,%eax
  sub    0x38(%rsp),%rcx
  mov    %r13,0x28(%rsp)
  mov    0x208(%rsp),%r8
  mov    %esi,%r13d
  mov    %r12,0x40(%rsp)
  mov    0x188(%rsp),%r9
  mov    %r14,0x30(%rsp)
  mov    0x190(%rsp),%r11
  mov    0x178(%rsp),%rbp
  mov    0x100(%rsp),%r12
  jmp    L2070
  nop
L1795:
  ucomisd %xmm1,%xmm0
  movsd  -0x8(%r10,%rax,8),%xmm3
  jp     L4318
  jne    L4318
L2220:
  xorpd  D351(%rip),%xmm3
L4318:
  comisd %xmm3,%xmm6
  ja     L1052
L3066:
  add    $0x1,%rax
  add    %r15d,%edx
  cmp    %eax,%r13d
  jl     L3153
L2070:
  movsd  -0x8(%r12,%rax,8),%xmm0
  movsd  -0x8(%rbp,%rax,8),%xmm1
  mov    %eax,%esi
  lea    0x1(%rax),%r14d
  ucomisd -0x8(%r11,%rax,8),%xmm0
  jp     L44
  je     L1795
L44:
  ucomisd %xmm1,%xmm0
  jp     L3066
  jne    L3066
  movsd  -0x8(%r10,%rax,8),%xmm3
  jmp    L2220
L1052:
  imul   %r14d,%esi
  mov    0x1f0(%rsp),%r14
  sar    %esi
  movslq %esi,%rsi
  movsd  (%r14,%rsi,8),%xmm0
  test   %r15d,%r15d
  jle    L3661
  cmp    $0x1,%r15d
  je     L231
  movslq %edx,%rsi
  lea    (%rcx,%rsi,8),%r14
  xor    %esi,%esi
  add    0xa0(%rsp),%r14
  nopl   0x0(%rax,%rax,1)
L3719:
  movupd (%r14,%rsi,1),%xmm1
  movupd (%r9,%rsi,1),%xmm5
  add    $0x10,%rsi
  mulpd  %xmm1,%xmm1
  mulpd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rsi,%rbx
  jne    L3719
  cmp    0x8(%rsp),%r15d
  je     L3661
  movslq 0xb8(%rsp),%rsi
L1138:
  lea    (%rdx,%rsi,1),%r14d
  movslq %r14d,%r14
  movsd  (%rdi,%r14,8),%xmm1
  mulsd  %xmm1,%xmm1
  mulsd  (%r8,%rsi,8),%xmm1
  addsd  %xmm1,%xmm0
L3661:
  mulsd  %xmm13,%xmm0
  mulsd  %xmm14,%xmm0
  addsd  %xmm3,%xmm0
  comisd %xmm0,%xmm6
  jbe    L3066
  mov    0x10(%rsp),%rbp
  mov    0x28(%rsp),%r13
  mov    0x30(%rsp),%r14
  mov    0x40(%rsp),%r12
L1156:
  movl   $0xffffffff,0x1a8(%rsp)
L1619:
  movl   $0x0,0xbc(%rsp)
  mov    0xa0(%rsp),%rsi
  mov    $0x1,%ecx
  test   %r15d,%r15d
  jle    L2801
  mov    %rbp,0x10(%rsp)
  mov    0x90(%rsp),%rdi
  mov    %rbx,0x28(%rsp)
  mov    0xc0(%rsp),%r8
  mov    %r14,0x30(%rsp)
  mov    0x420(%rsp),%r9
  mov    0x58(%rsp),%ebp
  mov    0x5c(%rsp),%r14d
  mov    %r10,0x48(%rsp)
  mov    0x170(%rsp),%r11
  mov    0xd0(%rsp),%rbx
  mov    %r12,0x40(%rsp)
  xor    %r12d,%r12d
  mov    0xc8(%rsp),%r10d
  nopl   0x0(%rax,%rax,1)
L4767:
  movapd %xmm2,%xmm1
  test   %ebp,%ebp
  jle    L200
  cmp    $0x1,%ebp
  je     L2510
  mov    %r13,%rdx
  mov    %rsi,%rax
  movapd %xmm2,%xmm1
  nopl   0x0(%rax,%rax,1)
L4010:
  movsd  (%rax),%xmm0
  movupd (%rdx),%xmm3
  add    $0x10,%rdx
  movhpd (%rax,%rbx,1),%xmm0
  add    %r11,%rax
  subpd  %xmm3,%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %r9,%rdx
  jne    L4010
  movslq %r10d,%rdx
  cmp    %r14d,%ebp
  je     L200
L690:
  mov    %r15d,%eax
  imul   %edx,%eax
  add    %ecx,%eax
  cltq
  movsd  (%rdi,%rax,8),%xmm0
  subsd  (%r8,%rdx,8),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
L200:
  comisd %xmm4,%xmm1
  maxsd  %xmm4,%xmm1
  lea    0x1(%rcx),%eax
  cmova  %ecx,%r12d
  movapd %xmm1,%xmm4
  add    $0x8,%rsi
  cmp    %ecx,%r15d
  je     L1045
  mov    %eax,%ecx
  jmp    L4767
L3153:
  mov    0x48(%rsp),%r8d
  mov    0x10(%rsp),%rbp
  mov    0x28(%rsp),%r13
  mov    0x30(%rsp),%r14
  mov    0x40(%rsp),%r12
L975:
  comisd 0x2a0(%rsp),%xmm14
  ja     L3348
  movl   $0xffffffff,0x1a8(%rsp)
L1650:
  mov    0x58(%rsp),%r9d
  xor    %eax,%eax
  test   %r9d,%r9d
  jle    L4469
  mov    %r8d,0x10(%rsp)
  mov    0x158(%rsp),%r9
  mov    %rbp,0x28(%rsp)
  mov    0x220(%rsp),%rdx
  mov    %rbx,0x30(%rsp)
  mov    0x268(%rsp),%rdi
  mov    0x240(%rsp),%r8
  mov    0x210(%rsp),%r11
  mov    0x190(%rsp),%rbx
  mov    0x178(%rsp),%rbp
  mov    0x100(%rsp),%rcx
  jmp    L3809
L1438:
  mov    %rsi,%rax
L3809:
  movsd  (%r11,%rax,8),%xmm1
  addsd  (%rcx,%rax,8),%xmm1
  movsd  %xmm1,(%rdx,%rax,8)
  movsd  (%rdi,%rax,8),%xmm0
  maxsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  movsd  (%r8,%rax,8),%xmm1
  minsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdx,%rax,8)
  movsd  (%rcx,%rax,8),%xmm0
  ucomisd (%rbx,%rax,8),%xmm0
  jp     L1852
  jne    L1852
  movsd  (%rdi,%rax,8),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  movsd  (%rcx,%rax,8),%xmm0
L1852:
  ucomisd 0x0(%rbp,%rax,8),%xmm0
  jp     L2294
  jne    L2294
  movsd  (%r8,%rax,8),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
L2294:
  lea    0x1(%rax),%rsi
  cmp    %r9,%rax
  jne    L1438
  mov    0x10(%rsp),%r8d
  mov    0x28(%rsp),%rbp
  mov    0x30(%rsp),%rbx
L4469:
  cmp    %r8d,0x500(%rsp)
  jle    L2063
  lea    0x1(%r8),%eax
  mov    %r10,0x40(%rsp)
  mov    0x220(%rsp),%rdx
  mov    %eax,0x480(%rsp)
  mov    0x58(%rsp),%esi
  mov    0x348(%rsp),%rax
  movsd  %xmm2,0x48(%rsp)
  mov    0x398(%rsp),%rdi
  movsd  %xmm14,0x30(%rsp)
  movsd  %xmm15,0x28(%rsp)
  movsd  %xmm7,0x10(%rsp)
  call   *%rax
  mov    D275(%rip),%rax
  movsd  0x10(%rsp),%xmm7
  cmpl   $0x3,0x4f8(%rsp)
  movsd  0x28(%rsp),%xmm15
  movsd  %xmm0,0x198(%rsp)
  mov    0x40(%rsp),%r10
  movsd  0x48(%rsp),%xmm2
  movq   %rax,%xmm13
  movsd  0x30(%rsp),%xmm14
  je     L560
  movslq 0x484(%rsp),%rax
  cmpl   $0xffffffff,0x1a8(%rsp)
  lea    0x0(,%rax,8),%rcx
  mov    %eax,0x1e0(%rsp)
  mov    %rcx,0x228(%rsp)
  mov    0x1b0(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm10
  je     L474
  mov    0x58(%rsp),%ecx
  test   %ecx,%ecx
  jle    L3090
L294:
  mov    0x58(%rsp),%r8d
  mov    $0x2,%ecx
  movapd %xmm2,%xmm3
  xor    %edi,%edi
  mov    0x138(%rsp),%r9
  mov    0x120(%rsp),%r11
  mov    $0x1,%edx
  nopl   0x0(%rax)
L3791:
  movsd  -0x10(%r14,%rcx,8),%xmm1
  movsd  -0x10(%r9,%rcx,8),%xmm0
  movslq %edi,%rax
  lea    (%r11,%rax,8),%rsi
  mov    $0x1,%eax
  mulsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm3
  jmp    L4147
  nopl   0x0(%rax)
L2845:
  mulsd  -0x8(%rsi,%rax,8),%xmm0
  add    $0x1,%rax
  addsd  %xmm0,%xmm3
  cmp    %rax,%rcx
  je     L832
L4147:
  movsd  -0x8(%r14,%rax,8),%xmm0
  mulsd  %xmm1,%xmm0
  cmp    %eax,%edx
  jne    L2845
  mulsd  %xmm13,%xmm0
  jmp    L2845
  nopl   0x0(%rax)
L832:
  add    %edx,%edi
  add    $0x1,%edx
  add    $0x1,%rcx
  cmp    %edx,%r8d
  jge    L3791
L4477:
  test   %r15d,%r15d
  jle    L2779
  cmp    $0x1,%r15d
  je     L2926
  mov    0x60(%rsp),%rdx
  mov    0x188(%rsp),%rcx
  xor    %eax,%eax
L2129:
  movupd (%rdx,%rax,1),%xmm1
  movupd (%rcx,%rax,1),%xmm0
  add    $0x10,%rax
  mulpd  D275(%rip),%xmm0
  mulpd  %xmm1,%xmm1
  mulpd  %xmm1,%xmm0
  addsd  %xmm0,%xmm3
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm3
  cmp    %rax,%rbx
  jne    L2129
  cmp    0x8(%rsp),%r15d
  je     L2779
  movslq 0xb8(%rsp),%rax
L50:
  mov    0x88(%rsp),%rcx
  lea    (%r15,%rax,1),%edx
  movslq %edx,%rdx
  movsd  (%rcx,%rdx,8),%xmm0
  mov    0x208(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm1
  mulsd  %xmm0,%xmm0
  mulsd  %xmm13,%xmm1
  mulsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm3
L2779:
  movsd  0x198(%rsp),%xmm0
  mov    0x1ac(%rsp),%eax
  comisd %xmm14,%xmm7
  mov    0x1a8(%rsp),%edx
  cmova  0x480(%rsp),%eax
  subsd  %xmm10,%xmm0
  mov    %eax,0x1ac(%rsp)
  movapd %xmm0,%xmm6
  subsd  %xmm3,%xmm6
  movapd %xmm6,%xmm4
  andpd  D390(%rip),%xmm4
  movsd  %xmm4,0x48(%rsp)
  test   %edx,%edx
  je     L3084
  comisd %xmm2,%xmm3
  jae    L2381
  movsd  0x128(%rsp),%xmm5
  movapd %xmm0,%xmm4
  movsd  D357(%rip),%xmm0
  divsd  %xmm3,%xmm4
  mulsd  %xmm13,%xmm5
  movsd  %xmm5,0x128(%rsp)
  movsd  %xmm4,0x270(%rsp)
  comisd %xmm4,%xmm0
  jb     L914
  movapd %xmm7,%xmm4
  minsd  %xmm5,%xmm4
  movsd  %xmm4,0x128(%rsp)
L581:
  movsd  D39(%rip),%xmm1
  movapd %xmm4,%xmm0
  comisd 0x198(%rsp),%xmm10
  mulsd  %xmm14,%xmm1
  cmpnlesd %xmm1,%xmm0
  andpd  %xmm0,%xmm4
  andnpd %xmm14,%xmm0
  orpd   %xmm4,%xmm0
  movsd  %xmm0,0x128(%rsp)
  jbe    L3084
  movapd %xmm0,%xmm4
  mulsd  %xmm0,%xmm4
  movsd  %xmm4,0x28(%rsp)
  test   %r15d,%r15d
  jle    L3084
  lea    -0x1(%r15),%eax
  mov    %r14,0x130(%rsp)
  xor    %r11d,%r11d
  movsd  0x1e8(%rsp),%xmm4
  add    $0x2,%rax
  mov    %rbp,0x40(%rsp)
  mov    0xa0(%rsp),%r8
  mov    $0x1,%esi
  mov    %rax,0x30(%rsp)
  mov    0xcc(%rsp),%eax
  movapd %xmm2,%xmm11
  movapd %xmm2,%xmm12
  mov    %rbx,0x80(%rsp)
  mov    0x110(%rsp),%rdi
  mov    %r13,0xa8(%rsp)
  mov    0x380(%rsp),%rbx
  lea    0x1(%rax),%edx
  mov    %r10,0x148(%rsp)
  mov    0x468(%rsp),%rbp
  movsd  D337(%rip),%xmm8
  mov    0xd0(%rsp),%rcx
  movsd  %xmm4,0x10(%rsp)
  mov    0x170(%rsp),%r13
  mov    0x90(%rsp),%r10
L3720:
  mov    %esi,%r9d
  mov    %rdi,%r14
  movapd %xmm2,%xmm4
  mov    $0x1,%eax
  cmpl   $0x0,0xcc(%rsp)
  jle    L3289
  nopl   0x0(%rax)
L2686:
  movsd  (%r14),%xmm0
  add    $0x1,%eax
  add    %rcx,%r14
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm4
  cmp    %edx,%eax
  jne    L2686
L3289:
  movsd  -0x8(%r12,%rsi,8),%xmm5
  mulsd  0x18(%rsp),%xmm4
  mov    0x58(%rsp),%eax
  mulsd  %xmm5,%xmm5
  addsd  %xmm5,%xmm4
  test   %eax,%eax
  jle    L152
  cmp    $0x1,%eax
  je     L111
  mov    0x100(%rsp),%rax
  mov    %r8,%r14
  movapd %xmm2,%xmm1
L3205:
  movsd  (%r14),%xmm0
  movupd (%rax),%xmm9
  add    $0x10,%rax
  movhpd (%r14,%rcx,1),%xmm0
  add    %r13,%r14
  subpd  %xmm9,%xmm0
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rbp,%rax
  jne    L3205
  mov    0x5c(%rsp),%r14d
  cmp    %r14d,0x58(%rsp)
  je     L2662
  movslq 0xc8(%rsp),%r14
L3271:
  mov    %r15d,%eax
  imul   %r14d,%eax
  add    %r9d,%eax
  cltq
  movsd  (%r10,%rax,8),%xmm0
  subsd  (%rbx,%r14,8),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
L2662:
  divsd  0x28(%rsp),%xmm1
  mulsd  %xmm1,%xmm1
  movapd %xmm4,%xmm0
  comisd %xmm1,%xmm8
  ja     L2202
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm5
L2202:
  comisd %xmm12,%xmm0
  jbe    L71
  movapd %xmm0,%xmm12
  movsd  %xmm4,0x10(%rsp)
  mov    %r9d,%r11d
L71:
  maxsd  %xmm11,%xmm5
  add    $0x1,%rsi
  add    $0x8,%rdi
  add    $0x8,%r8
  movapd %xmm5,%xmm11
  cmp    %rsi,0x30(%rsp)
  jne    L3720
  mulsd  %xmm13,%xmm11
  movapd %xmm12,%xmm0
  movsd  0x1e8(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm4
  mov    0x40(%rsp),%rbp
  mov    0x80(%rsp),%rbx
  mov    0xa8(%rsp),%r13
  mov    0x130(%rsp),%r14
  mov    0x148(%rsp),%r10
  cmplesd %xmm11,%xmm0
  comisd %xmm12,%xmm11
  cmovae 0xbc(%rsp),%r11d
  mov    %r11d,0xbc(%rsp)
  andpd  %xmm0,%xmm1
  andnpd %xmm4,%xmm0
  orpd   %xmm1,%xmm0
  movsd  %xmm0,0x1e8(%rsp)
L3084:
  movsd  %xmm10,0x30(%rsp)
  mov    %r15d,%esi
  mov    %r12,%r9
  movsd  %xmm2,0x150(%rsp)
  movsd  %xmm14,0x148(%rsp)
  movsd  %xmm15,0x130(%rsp)
  movsd  %xmm3,0xa8(%rsp)
  movsd  %xmm6,0x80(%rsp)
  movsd  %xmm7,0x40(%rsp)
  push   %r10
  mov    0xc4(%rsp),%eax
  sub    $0x1,%eax
  mov    %r10,0x30(%rsp)
  push   %rax
  mov    0x120(%rsp),%rcx
  mov    0x68(%rsp),%edi
  movsd  0x28(%rsp),%xmm0
  movsd  0x1f8(%rsp),%xmm1
  mov    0x560(%rsp),%r8d
  mov    0x30(%rsp),%rdx
  call   <update_@plt>
  movslq 0xcc(%rsp),%r11
  mov    0x218(%rsp),%rcx
  lea    0x0(,%r11,8),%rax
  add    %rax,%rcx
  mov    %rax,0x20(%rsp)
  mov    D275(%rip),%rax
  movsd  (%rcx),%xmm4
  movq   $0x0,(%rcx)
  pop    %rcx
  pop    %rsi
  movq   %rax,%xmm13
  mov    0x58(%rsp),%edi
  mov    0x28(%rsp),%r10
  movsd  0x30(%rsp),%xmm10
  movsd  0x40(%rsp),%xmm7
  movsd  0x80(%rsp),%xmm6
  test   %edi,%edi
  movsd  0xa8(%rsp),%xmm3
  movsd  0x130(%rsp),%xmm15
  movsd  0x148(%rsp),%xmm14
  movsd  0x150(%rsp),%xmm2
  jle    L3035
  mov    0x158(%rsp),%rax
  add    $0x2,%rax
  cmp    $0x1,%r15d
  jne    L2401
  mov    0x90(%rsp),%rdi
  mov    %rax,0x28(%rsp)
  mov    $0x1,%edx
  xor    %r9d,%r9d
  mov    0x10(%rsp),%rax
  mov    0xa0(%rsp),%rsi
  mov    %rbp,0x80(%rsp)
  mov    %rdi,%rcx
  mov    %r15d,0x130(%rsp)
  add    %rax,%rcx
  sub    0x38(%rsp),%rax
  mov    %r13,0x148(%rsp)
  lea    0x10(%rsi,%rax,1),%r8
  mov    %r11,0x40(%rsp)
  mov    0x1f0(%rsp),%r11
  lea    0x8(%rsi,%rax,1),%rsi
  mov    %r8,0x30(%rsp)
  mov    0xbc(%rsp),%r8d
  mov    %rbx,0xa8(%rsp)
  mov    0x120(%rsp),%rbx
  mov    %r14,0x150(%rsp)
  mov    0x30(%rsp),%r14
  mov    %r10,0x1c0(%rsp)
  mov    0x28(%rsp),%r10
  mov    %r12,0x168(%rsp)
  mov    %rcx,%r12
L3468:
  movslq %r9d,%rax
  movsd  (%r12,%rdx,8),%xmm1
  lea    0x0(,%rax,8),%rbp
  lea    (%rbx,%rbp,1),%rcx
  mulsd  %xmm4,%xmm1
  cmp    %r14,%rcx
  je     L3734
  cmp    $0x1,%edx
  je     L3734
  mov    %edx,%r13d
  movapd %xmm1,%xmm5
  mov    %edx,%ebp
  xor    %eax,%eax
  shr    %r13d
  unpcklpd %xmm5,%xmm5
  shl    $0x4,%r13
  nopl   0x0(%rax,%rax,1)
L4577:
  movupd (%rsi,%rax,1),%xmm0
  movupd (%rcx,%rax,1),%xmm11
  mulpd  %xmm5,%xmm0
  addpd  %xmm11,%xmm0
  movups %xmm0,(%rcx,%rax,1)
  add    $0x10,%rax
  cmp    %r13,%rax
  jne    L4577
  mov    %ebp,%r13d
  mov    %ebp,%eax
  and    $0xfffffffe,%r13d
  or     $0x1,%eax
  lea    0x0(%r13,%r9,1),%ecx
  cmp    %r13d,%ebp
  je     L1064
  add    %r8d,%eax
  add    $0x1,%ecx
  cltq
  movslq %ecx,%rcx
  movsd  (%rdi,%rax,8),%xmm0
  lea    (%r11,%rcx,8),%rcx
  mulsd  %xmm1,%xmm0
  addsd  (%rcx),%xmm0
  movsd  %xmm0,(%rcx)
L1064:
  add    %edx,%r9d
  add    $0x1,%rdx
  cmp    %rdx,%r10
  jne    L3468
  mov    0xcc(%rsp),%eax
  mov    0x40(%rsp),%r11
  mov    $0x1,%ecx
  mov    0x80(%rsp),%rbp
  mov    0xa8(%rsp),%rbx
  mov    0x130(%rsp),%r15d
  mov    0x148(%rsp),%r13
  mov    0x150(%rsp),%r14
  mov    0x168(%rsp),%r12
  mov    0x1c0(%rsp),%r10
  test   %eax,%eax
  jle    L2591
L45:
  mov    %r13,0x30(%rsp)
  mov    0x110(%rsp),%rdx
  mov    $0x1,%r8d
  lea    -0x1(%r15),%r9d
  mov    %rbp,0x28(%rsp)
  mov    0x3c8(%rsp),%rsi
  mov    %r14,0x40(%rsp)
  mov    0xb8(%rsp),%ebp
  mov    %r12,0x80(%rsp)
  mov    0x188(%rsp),%rax
  mov    %r10,0xa8(%rsp)
  mov    0xd0(%rsp),%r14
  mov    0xb0(%rsp),%r12
  mov    0x3d0(%rsp),%r10
L4402:
  movsd  (%rsi,%r11,8),%xmm1
  lea    0x8(%rdx),%rdi
  mulsd  %xmm6,%xmm1
  cmp    %rdi,%rax
  je     L3427
  movapd %xmm1,%xmm4
  xor    %edi,%edi
  cmpb   $0x0,0x50(%rsp)
  unpcklpd %xmm4,%xmm4
  je     L3427
  nopl   0x0(%rax)
L2915:
  movupd (%rdx,%rdi,1),%xmm0
  movupd (%rax,%rdi,1),%xmm5
  mulpd  %xmm4,%xmm0
  addpd  %xmm5,%xmm0
  movups %xmm0,(%rax,%rdi,1)
  add    $0x10,%rdi
  cmp    %rdi,%rbx
  jne    L2915
  cmp    0x8(%rsp),%r15d
  je     L4202
  lea    (%rcx,%rbp,1),%edi
  movslq %edi,%rdi
  movsd  (%r12,%rdi,8),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r10)
L4202:
  add    $0x1,%r8d
  add    %r15d,%ecx
  add    %r14,%rsi
  add    %r14,%rdx
  cmp    %r8d,0xcc(%rsp)
  jge    L4402
  mov    0x1b0(%rsp),%rax
  mov    0x58(%rsp),%edx
  movsd  0x198(%rsp),%xmm4
  mov    0x28(%rsp),%rbp
  mov    0x30(%rsp),%r13
  mov    0x40(%rsp),%r14
  mov    0x80(%rsp),%r12
  mov    0xa8(%rsp),%r10
  movsd  %xmm4,(%rax,%r11,8)
  test   %edx,%edx
  jle    L102
L3082:
  cmpb   $0x0,0x445(%rsp)
  jne    L40
  mov    0x10(%rsp),%rax
  mov    0x430(%rsp),%r8
  mov    0xa0(%rsp),%r11
  mov    0x20(%rsp),%r9
  mov    %rax,%rsi
  sub    0x38(%rsp),%rsi
  sub    0x180(%rsp),%rax
  cmp    %r8,%r10
  lea    0x8(%r11,%rsi,1),%rdx
  mov    %rax,%rdi
  lea    0x8(%r9,%rax,1),%rcx
  setne  %al
  and    0x353(%rsp),%al
  cmp    %r8,%rdx
  setne  %r8b
  and    %r8d,%eax
  lea    0x10(%r11,%rsi,1),%r8
  cmp    %r8,%r10
  setne  %r8b
  and    %r8d,%eax
  lea    0x10(%r9,%rdi,1),%r8
  cmp    %r8,%r10
  setne  %r8b
  test   %r8b,%al
  je     L3327
  lea    0x18(%r9,%rdi,1),%rax
  lea    0x18(%r11,%rsi,1),%rsi
  cmp    %rax,%rdx
  setae  %al
  cmp    %rsi,%rcx
  setae  %sil
  or     %al,%sil
  je     L3327
  mov    0x338(%rsp),%rsi
  mov    0x100(%rsp),%rdi
  xor    %eax,%eax
L3835:
  movupd (%rdi,%rax,1),%xmm4
  movups %xmm4,(%rdx,%rax,1)
  movupd (%rcx,%rax,1),%xmm4
  movups %xmm4,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %rsi,%rax
  jne    L3835
  mov    0x324(%rsp),%ecx
  cmp    %ecx,0x320(%rsp)
  je     L4666
  mov    0x280(%rsp),%rcx
  mov    0x2c4(%rsp),%eax
  add    0xbc(%rsp),%eax
  movsd  (%rcx),%xmm0
  mov    0x90(%rsp),%rcx
  cltq
  movsd  %xmm0,(%rcx,%rax,8)
  mov    0x78(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm0
  mov    0x218(%rsp),%rax
  movsd  %xmm0,(%rax)
L4666:
  mov    0xcc(%rsp),%eax
  test   %eax,%eax
  jle    L1221
  cmp    $0x1,%eax
  je     L1286
  mov    0x38(%rsp),%rdi
  mov    0x10(%rsp),%rax
  movapd %xmm2,%xmm4
  mov    0x110(%rsp),%rsi
  sub    %rdi,%rax
  lea    0x8(%rsi,%rax,1),%rcx
  mov    %rsi,%rax
  mov    0x250(%rsp),%rsi
  sub    %rdi,%rax
  lea    0x10(%rax),%rdx
  xor    %eax,%eax
  nopl   0x0(%rax)
L1757:
  movupd (%rdx,%rax,1),%xmm0
  movupd (%rcx,%rax,1),%xmm5
  add    $0x10,%rax
  mulpd  %xmm5,%xmm0
  addsd  %xmm0,%xmm4
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm4
  cmp    %rax,%rsi
  jne    L1757
  mov    0xcc(%rsp),%ecx
  cmp    %ecx,0x264(%rsp)
  je     L597
  mov    0x2dc(%rsp),%eax
L2673:
  mov    0xb0(%rsp),%rsi
  lea    0x1(%rax),%edx
  add    0xbc(%rsp),%eax
  movslq %edx,%rdx
  cltq
  movsd  (%rsi,%rdx,8),%xmm0
  mulsd  (%rsi,%rax,8),%xmm0
  addsd  %xmm0,%xmm4
L597:
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L92
  cmp    $0x1,%eax
  je     L4053
  mov    0xa0(%rsp),%rax
  mov    0x70(%rsp),%rcx
  movapd %xmm2,%xmm0
  sub    0x38(%rsp),%rax
  lea    0x10(%rax),%rdx
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L1707:
  movupd 0x0(%r13,%rax,1),%xmm1
  movupd (%rdx,%rax,1),%xmm5
  add    $0x10,%rax
  mulpd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rax,%rcx
  jne    L1707
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L3115
  mov    0xc8(%rsp),%eax
L1854:
  mov    0xc0(%rsp),%rcx
  add    $0x1,%eax
  cltq
  movsd  -0x8(%rcx,%rax,8),%xmm1
  mov    0x90(%rsp),%rcx
  mulsd  (%rcx,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L3115:
  mulsd  %xmm4,%xmm0
  cmpb   $0x0,0x351(%rsp)
  je     L1805
  mov    0xa0(%rsp),%rax
  movapd %xmm0,%xmm4
  sub    0x38(%rsp),%rax
  mov    0x70(%rsp),%rcx
  lea    0x10(%rax),%rdx
  unpcklpd %xmm4,%xmm4
  xor    %eax,%eax
  nopl   0x0(%rax)
L2456:
  movupd (%rdx,%rax,1),%xmm1
  movupd (%r10,%rax,1),%xmm5
  mulpd  %xmm4,%xmm1
  addpd  %xmm5,%xmm1
  movups %xmm1,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rcx
  jne    L2456
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L31
  mov    0x108(%rsp),%rax
  mulsd  (%rax),%xmm0
  mov    0xf8(%rsp),%rax
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
L31:
  cmpb   $0x0,0x3eb(%rsp)
  je     L1566
L4051:
  movapd %xmm6,%xmm1
  mov    0x338(%rsp),%rcx
  mov    0x138(%rsp),%rdx
  xor    %eax,%eax
  unpcklpd %xmm1,%xmm1
L705:
  movupd (%r10,%rax,1),%xmm0
  movupd (%rdx,%rax,1),%xmm4
  mulpd  %xmm1,%xmm0
  addpd  %xmm4,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rcx
  jne    L705
  mov    0x324(%rsp),%ecx
  cmp    %ecx,0x320(%rsp)
  je     L3095
  mov    0x218(%rsp),%rax
  mulsd  (%rax),%xmm6
  mov    0x290(%rsp),%rax
  addsd  (%rax),%xmm6
  movsd  %xmm6,(%rax)
L3095:
  comisd 0x198(%rsp),%xmm10
  ja     L2762
L1405:
  mov    0x1a8(%rsp),%eax
  test   %eax,%eax
  jne    L3316
L1369:
  movsd  0x200(%rsp),%xmm3
  movl   $0x0,0x1a8(%rsp)
  movsd  %xmm3,0x288(%rsp)
  movsd  0x1f8(%rsp),%xmm3
  movsd  %xmm3,0x200(%rsp)
  movsd  0x48(%rsp),%xmm3
  movsd  %xmm3,0x1f8(%rsp)
  jmp    L893
L1045:
  mov    %r12d,%eax
  mov    0x10(%rsp),%rbp
  mov    0x28(%rsp),%rbx
  mov    %r12d,0xbc(%rsp)
  mov    0x30(%rsp),%r14
  mov    0x40(%rsp),%r12
  mov    0x48(%rsp),%r10
  test   %eax,%eax
  jne    L316
L2801:
  cmpl   $0xffffffff,0x1a8(%rsp)
  je     L3145
  movsd  0x270(%rsp),%xmm3
  comisd %xmm2,%xmm3
  ja     L2580
  movsd  0x128(%rsp),%xmm3
  maxsd  %xmm7,%xmm3
  comisd %xmm14,%xmm3
  ja     L2580
  comisd 0x2a0(%rsp),%xmm14
  jbe    L4317
  movl   $0x0,0xbc(%rsp)
  mov    0x480(%rsp),%r8d
L3348:
  movsd  D210(%rip),%xmm4
  movapd %xmm14,%xmm3
  divsd  0x2a0(%rsp),%xmm3
  movsd  %xmm3,0x270(%rsp)
  comisd %xmm3,%xmm4
  jae    L2642
  movsd  D61(%rip),%xmm0
  comisd %xmm3,%xmm0
  jae    L2908
  movsd  D357(%rip),%xmm0
  mulsd  %xmm0,%xmm14
  jmp    L4066
L2580:
  movl   $0x0,0xbc(%rsp)
  jmp    L893
L3427:
  xor    %edi,%edi
L3620:
  movsd  0x8(%rsi,%rdi,8),%xmm0
  mov    %rdi,%r13
  mulsd  %xmm1,%xmm0
  addsd  (%rax,%rdi,8),%xmm0
  movsd  %xmm0,(%rax,%rdi,8)
  add    $0x1,%rdi
  cmp    %r9,%r13
  jne    L3620
  jmp    L4202
L3734:
  mov    0x10(%rsp),%r13
  lea    0x1(%rax),%rcx
  lea    (%rax,%rdx,1),%r15
  sub    %rbp,%r13
  add    %rdi,%r13
  jmp    L3722
  nopw   0x0(%rax,%rax,1)
L2705:
  add    $0x1,%rcx
L3722:
  movsd  0x8(%r13,%rax,8),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  (%rbx,%rax,8),%xmm0
  movsd  %xmm0,(%rbx,%rax,8)
  mov    %rcx,%rax
  cmp    %r15,%rcx
  jne    L2705
  jmp    L1064
L1805:
  mov    0x90(%rsp),%rcx
  mov    0x158(%rsp),%rsi
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L3345:
  movsd  0x10(%rcx,%rax,8),%xmm1
  mov    %rax,%rdx
  mulsd  %xmm0,%xmm1
  addsd  (%r10,%rax,8),%xmm1
  movsd  %xmm1,(%r10,%rax,8)
  add    $0x1,%rax
  cmp    %rsi,%rdx
  jne    L3345
  cmpb   $0x0,0x3eb(%rsp)
  jne    L4051
L1566:
  mov    0x138(%rsp),%rdx
  mov    $0x1,%eax
L4695:
  movsd  -0x8(%r10,%rax,8),%xmm0
  mulsd  %xmm6,%xmm0
  addsd  -0x8(%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,0x58(%rsp)
  jge    L4695
  comisd 0x198(%rsp),%xmm10
  jbe    L1405
L2762:
  movl   $0x0,0x30(%rsp)
  mov    %r14,%r11
  mov    0xbc(%rsp),%eax
  mov    $0x1,%r8d
  mov    0x138(%rsp),%rcx
  mov    %r15d,0x1c0(%rsp)
  movapd %xmm2,%xmm15
  mov    %eax,0x484(%rsp)
  mov    %r13,0x148(%rsp)
  mov    %rcx,%r9
  mov    %r12,0x1e0(%rsp)
  mov    %r10,0x228(%rsp)
  mov    %rbp,0x150(%rsp)
  mov    0x1f0(%rsp),%rbp
  mov    %rbx,0x168(%rsp)
  mov    0x2d0(%rsp),%rbx
L3032:
  mov    0x100(%rsp),%rax
  mov    %r8d,0x40(%rsp)
  mov    %r8d,%r12d
  mov    %r8d,0x28(%rsp)
  movsd  -0x8(%rax,%r8,8),%xmm0
  mov    0x148(%rsp),%rax
  movsd  %xmm0,-0x8(%rax,%r8,8)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  cmp    $0x1,%r8
  jne    L4055
  movslq 0x30(%rsp),%rax
  mov    $0x1,%edi
  lea    0x8(%r11),%r15
  movq   $0x8,0xa8(%rsp)
  lea    0x8(,%rax,8),%r10
L844:
  lea    -0x8(%r10),%rax
  sub    0xa8(%rsp),%rax
  add    0x120(%rsp),%rax
L3968:
  movsd  (%r11),%xmm0
  mulsd  (%rax,%rdi,8),%xmm0
  addsd  -0x8(%rcx,%rdi,8),%xmm0
  movsd  %xmm0,-0x8(%rcx,%rdi,8)
  add    $0x1,%rdi
  cmp    %edi,%r12d
  jge    L3968
L4270:
  mov    0x40(%rsp),%esi
  add    $0x1,%r8
  add    %esi,0x30(%rsp)
  mov    %r15,%r11
  add    $0x8,%r9
  cmp    %r8d,0x58(%rsp)
  jge    L3032
  mov    0x150(%rsp),%rbp
  mov    0x168(%rsp),%rbx
  mov    0x1c0(%rsp),%r15d
  mov    0x148(%rsp),%r13
  mov    0x1e0(%rsp),%r12
  mov    0x228(%rsp),%r10
L869:
  test   %r15d,%r15d
  jle    L4271
  lea    -0x1(%r15),%eax
  mov    %r15d,0x40(%rsp)
  xor    %edi,%edi
  mov    $0x1,%esi
  lea    0x2(%rax),%r11
  mov    %rbp,0x28(%rsp)
  mov    0xa0(%rsp),%r8
  mov    %rbx,0x30(%rsp)
  mov    0x298(%rsp),%ebp
  mov    %r11,0x10(%rsp)
  mov    0x90(%rsp),%rbx
  mov    %r13,0x80(%rsp)
  mov    0x1d0(%rsp),%r11
  mov    %r12,0xa8(%rsp)
  mov    0xd0(%rsp),%r9
  mov    %r10,0x130(%rsp)
  mov    0x300(%rsp),%r13
  mov    0x170(%rsp),%r12
  mov    0x2f0(%rsp),%r10
L2234:
  mov    0x58(%rsp),%r15d
  mov    %esi,%ecx
  mov    %r14,%rax
  mov    %r8,%rdx
  movapd %xmm2,%xmm0
  test   %r15d,%r15d
  jle    L2038
  nopl   0x0(%rax,%rax,1)
L227:
  movsd  (%rdx),%xmm1
  mulsd  (%rax),%xmm1
  mov    %rax,%r15
  add    %r9,%rdx
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  cmp    %r11,%r15
  jne    L227
  mov    0x188(%rsp),%rax
  mov    0xa0(%rsp),%r15
  mulsd  -0x8(%rax,%rsi,8),%xmm0
  mov    0x2e8(%rsp),%rax
  add    %rdi,%rax
  add    %r15,%rax
  cmp    %rax,0x340(%rsp)
  mov    0x2e0(%rsp),%rax
  setb   %dl
  add    %rdi,%rax
  add    %r15,%rax
  cmp    %rax,0x138(%rsp)
  seta   %al
  or     %dl,%al
  je     L4263
  cmpl   $0x2,0x29c(%rsp)
  mov    %r15,%rdx
  movapd %xmm0,%xmm4
  mov    0x138(%rsp),%rax
  seta   %r15b
  unpcklpd %xmm4,%xmm4
  add    %rdi,%rdx
  test   %r15b,%r15b
  je     L4263
  cs nopw 0x0(%rax,%rax,1)
L1645:
  movsd  (%rdx),%xmm1
  movupd (%rax),%xmm5
  add    $0x10,%rax
  movhpd (%rdx,%r9,1),%xmm1
  add    %r12,%rdx
  mulpd  %xmm4,%xmm1
  addpd  %xmm5,%xmm1
  movups %xmm1,-0x10(%rax)
  cmp    %r13,%rax
  jne    L1645
  mov    0x5c(%rsp),%edx
  cmp    %edx,0x58(%rsp)
  je     L2038
  lea    (%rcx,%rbp,1),%eax
  cltq
  mulsd  (%rbx,%rax,8),%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r10)
L2038:
  add    $0x1,%rsi
  add    $0x8,%r8
  add    $0x8,%rdi
  cmp    0x10(%rsp),%rsi
  jne    L2234
  mov    0x1a8(%rsp),%r8d
  mov    0x28(%rsp),%rbp
  mov    0x30(%rsp),%rbx
  mov    0x40(%rsp),%r15d
  mov    0x80(%rsp),%r13
  mov    0xa8(%rsp),%r12
  mov    0x130(%rsp),%r10
  test   %r8d,%r8d
  je     L1369
  jmp    L509
  nopl   0x0(%rax,%rax,1)
L2510:
  mov    $0x1,%edx
  movapd %xmm2,%xmm1
  jmp    L690
L1160:
  mov    0x1ac(%rsp),%eax
  addl   $0x1,0x1a8(%rsp)
  mov    %eax,0x2d8(%rsp)
L3017:
  movsd  D269(%rip),%xmm0
  mulsd  %xmm15,%xmm0
  comisd %xmm1,%xmm0
  jae    L141
L3182:
  movslq 0x484(%rsp),%rax
  mov    0x1a8(%rsp),%r8d
  movsd  D337(%rip),%xmm8
  mov    %eax,0x1e0(%rsp)
  mov    %eax,%edx
  test   %r8d,%r8d
  je     L3110
L525:
  mov    0x258(%rsp),%rcx
  lea    -0x1(%r15),%r11d
  mov    %eax,0x370(%rsp)
  shl    $0x3,%rax
  mov    %rax,%rsi
  mov    %rax,0x228(%rsp)
  movsd  0x1e8(%rsp),%xmm12
  mov    %rcx,%rax
  movb   $0x0,0x150(%rsp)
  movsd  0x490(%rsp),%xmm4
  add    %rsi,%rax
  mov    %r12,0x48(%rsp)
  movsd  0x498(%rsp),%xmm3
  mov    %rax,0x168(%rsp)
  movslq 0xbc(%rsp),%rax
  mov    %r11,0x1e8(%rsp)
  mov    0x78(%rsp),%rsi
  lea    (%rcx,%rax,8),%rax
  mov    0x88(%rsp),%rdi
  movsd  %xmm7,0x358(%rsp)
  mov    %rax,0x1c0(%rsp)
  lea    0x2(%r11),%rax
  mov    %rax,0x80(%rsp)
  mov    $0x8,%eax
  sub    0x38(%rsp),%rax
  mov    %rax,0xa8(%rsp)
  nop
L2937:
  test   %r15d,%r15d
  jle    L4706
  mov    0x20(%rsp),%rax
  mov    %r10,0x40(%rsp)
  mov    $0x1,%r9d
  mov    %rdi,0x130(%rsp)
  mov    0x90(%rsp),%r8
  mov    %rax,0x18(%rsp)
  mov    0xa0(%rsp),%rax
  mov    %rbx,0x148(%rsp)
  mov    0x1b8(%rsp),%r11
  mov    %rax,0x10(%rsp)
  mov    0x170(%rsp),%rbx
  mov    0xd0(%rsp),%r12
  mov    0xc0(%rsp),%r10
  nopl   0x0(%rax,%rax,1)
L471:
  mov    0x58(%rsp),%eax
  mov    %r9d,%edi
  movapd %xmm2,%xmm1
  movapd %xmm2,%xmm0
  movapd %xmm2,%xmm5
  test   %eax,%eax
  jle    L1021
  cmpl   $0x1,0x58(%rsp)
  je     L1985
  mov    %rsi,0x28(%rsp)
  mov    0x10(%rsp),%rcx
  xor    %eax,%eax
  movapd %xmm2,%xmm6
  mov    %edi,0x30(%rsp)
  mov    0x18(%rsp),%rdx
  movapd %xmm2,%xmm0
  movapd %xmm2,%xmm5
  mov    0x70(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  nopl   0x0(%rax)
L874:
  movsd  (%rcx),%xmm1
  movupd (%r14,%rax,1),%xmm7
  movhpd (%rcx,%r12,1),%xmm1
  add    %rbx,%rcx
  mulpd  %xmm1,%xmm7
  addsd  %xmm7,%xmm0
  unpckhpd %xmm7,%xmm7
  addsd  %xmm7,%xmm0
  movupd 0x0(%r13,%rax,1),%xmm7
  mulpd  %xmm7,%xmm1
  movupd (%r14,%rax,1),%xmm7
  add    $0x10,%rax
  addsd  %xmm1,%xmm6
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm6
  movsd  (%rdx),%xmm1
  movhpd (%rdx,%rbp,1),%xmm1
  add    %rdi,%rdx
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm5
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm5
  cmp    %rax,%rsi
  jne    L874
  mov    0x28(%rsp),%rsi
  mov    0x30(%rsp),%edi
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L276
  mov    0xc8(%rsp),%eax
L3867:
  mov    %eax,%edx
  imul   %r15d,%edx
  add    %edi,%edx
  movslq %edx,%rdx
  movsd  (%r8,%rdx,8),%xmm7
  movslq %eax,%rdx
  imul   0x550(%rsp),%eax
  movsd  (%r11,%rdx,8),%xmm1
  add    %edi,%eax
  movapd %xmm1,%xmm9
  mulsd  %xmm7,%xmm9
  cltq
  mulsd  (%r10,%rdx,8),%xmm7
  mulsd  (%rsi,%rax,8),%xmm1
  addsd  %xmm9,%xmm0
  addsd  %xmm7,%xmm6
  addsd  %xmm1,%xmm5
L276:
  movapd %xmm0,%xmm1
  mulsd  %xmm13,%xmm1
  addsd  %xmm6,%xmm1
  mulsd  %xmm0,%xmm1
L1021:
  mov    0x40(%rsp),%rax
  addq   $0x8,0x10(%rsp)
  addq   $0x8,0x18(%rsp)
  movsd  %xmm1,-0x8(%rax,%r9,8)
  mov    0x48(%rsp),%rax
  movsd  %xmm5,-0x8(%rax,%r9,8)
  mov    0x60(%rsp),%rax
  movsd  %xmm0,-0x8(%rax,%r9,8)
  add    $0x1,%r9
  cmp    %r9,0x80(%rsp)
  jne    L471
  mov    0x130(%rsp),%rdi
  mov    0x148(%rsp),%rbx
  mov    0x40(%rsp),%r10
L4706:
  mov    0xcc(%rsp),%eax
  test   %eax,%eax
  jle    L2958
  add    $0x1,%eax
  mov    %rsi,0x28(%rsp)
  mov    0x48(%rsp),%r12
  mov    %r15d,%edx
  mov    %eax,0x10(%rsp)
  movapd %xmm2,%xmm11
  mov    $0x1,%r8d
  mov    0xb8(%rsp),%r9d
  mov    %r14,0x40(%rsp)
  mov    0xb0(%rsp),%r11
  mov    %rbp,0x18(%rsp)
  mov    0x140(%rsp),%rcx
  mov    %r13,0x30(%rsp)
  mov    0x110(%rsp),%rbp
  mov    0x1e8(%rsp),%r13
  nopl   0x0(%rax)
L1326:
  test   %r15d,%r15d
  jle    L1521
  cmp    $0x1,%r15d
  je     L1434
  mov    0xa8(%rsp),%rax
  movslq %edx,%rsi
  movapd %xmm2,%xmm0
  lea    (%rax,%rsi,8),%r14
  xor    %eax,%eax
  add    %rbp,%r14
  nopl   0x0(%rax,%rax,1)
L568:
  movupd (%r14,%rax,1),%xmm1
  movupd (%r10,%rax,1),%xmm6
  add    $0x10,%rax
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rbx,%rax
  jne    L568
  movslq %r9d,%rax
  cmp    0x8(%rsp),%r15d
  je     L1339
L642:
  lea    (%rdx,%rax,1),%r14d
  movslq %r14d,%r14
  movsd  (%r11,%r14,8),%xmm1
  mulsd  (%rdi,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L1339:
  movapd %xmm0,%xmm1
  shl    $0x3,%rsi
  mulsd  %xmm0,%xmm1
  mov    %rsi,%rax
  sub    0x38(%rsp),%rax
  lea    0x10(%rbp,%rax,1),%r14
  subsd  %xmm1,%xmm11
  cmp    %r14,%r12
  je     L3322
  cmpb   $0x0,0x50(%rsp)
  je     L3322
  movapd %xmm0,%xmm5
  lea    0x8(%rbp,%rax,1),%rsi
  xor    %eax,%eax
  unpcklpd %xmm5,%xmm5
  xchg   %ax,%ax
L1246:
  movupd (%rsi,%rax,1),%xmm1
  movupd (%r12,%rax,1),%xmm6
  mulpd  %xmm5,%xmm1
  addpd  %xmm6,%xmm1
  movups %xmm1,(%r12,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rbx
  jne    L1246
  cmp    0x8(%rsp),%r15d
  je     L1521
  lea    (%rdx,%r9,1),%eax
  cltq
  mulsd  (%r11,%rax,8),%xmm0
  addsd  (%rcx),%xmm0
  movsd  %xmm0,(%rcx)
L1521:
  add    $0x1,%r8d
  add    %r15d,%edx
  cmp    0x10(%rsp),%r8d
  jne    L1326
  mov    0x18(%rsp),%rbp
  mov    0x28(%rsp),%rsi
  mov    0x30(%rsp),%r13
  mov    0x40(%rsp),%r14
L2637:
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L212
  mov    0x158(%rsp),%rax
  mov    0x550(%rsp),%r8d
  mov    $0x1,%r9d
  movapd %xmm2,%xmm9
  mov    0x1a0(%rsp),%r12
  movapd %xmm2,%xmm7
  movapd %xmm2,%xmm10
  mov    0x1d0(%rsp),%r11
  add    $0x2,%rax
  mov    %rax,0x10(%rsp)
  mov    $0x8,%eax
  sub    0x180(%rsp),%rax
  mov    %rax,0x18(%rsp)
  nopl   (%rax)
L2346:
  movsd  -0x8(%r14,%r9,8),%xmm5
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  addsd  %xmm0,%xmm9
  test   %r15d,%r15d
  jle    L1277
  cmp    $0x1,%r15d
  je     L4013
  mov    0x18(%rsp),%rcx
  movslq %r8d,%rax
  movapd %xmm2,%xmm0
  lea    (%rcx,%rax,8),%rdx
  xor    %eax,%eax
  add    0x20(%rsp),%rdx
  xchg   %ax,%ax
L551:
  movupd (%rdx,%rax,1),%xmm1
  movupd (%r10,%rax,1),%xmm6
  add    $0x10,%rax
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rax,%rbx
  jne    L551
  cmp    0x8(%rsp),%r15d
  je     L3268
  movslq 0xb8(%rsp),%rax
L2954:
  lea    (%rax,%r8,1),%edx
  movslq %edx,%rdx
  movsd  (%rsi,%rdx,8),%xmm1
  mulsd  (%rdi,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L3268:
  mulsd  %xmm0,%xmm5
  mov    %r14,%rax
  mov    %r12,%rdx
  addsd  %xmm7,%xmm5
  cs nopw 0x0(%rax,%rax,1)
L3872:
  movsd  (%rdx),%xmm1
  mulsd  (%rax),%xmm1
  mov    %rax,%rcx
  add    %rbp,%rdx
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  cmp    %rcx,%r11
  jne    L3872
  mov    0x68(%rsp),%rax
  add    $0x8,%r12
  add    0x550(%rsp),%r8d
  movsd  %xmm0,-0x8(%rax,%r9,8)
  movsd  -0x8(%r14,%r9,8),%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  -0x8(%r13,%r9,8),%xmm1
  add    $0x1,%r9
  movapd %xmm0,%xmm7
  addsd  %xmm5,%xmm7
  addsd  %xmm1,%xmm10
  cmp    %r9,0x10(%rsp)
  jne    L2346
  movapd %xmm10,%xmm0
  movapd %xmm9,%xmm5
  mulsd  %xmm10,%xmm0
  mulsd  %xmm13,%xmm5
L4365:
  movapd %xmm15,%xmm1
  mov    0x168(%rsp),%rax
  addsd  %xmm10,%xmm1
  addsd  %xmm10,%xmm1
  addsd  %xmm5,%xmm1
  mulsd  %xmm9,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rax),%xmm0
  addsd  %xmm8,%xmm0
  addsd  %xmm11,%xmm1
  movsd  %xmm0,(%rax)
  mov    0x1a8(%rsp),%eax
  subsd  %xmm7,%xmm1
  test   %eax,%eax
  jne    L1439
  mov    0x1c0(%rsp),%rax
  movapd %xmm4,%xmm12
  mulsd  %xmm1,%xmm12
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm12
  comisd %xmm12,%xmm3
  jbe    L3097
  comisd %xmm2,%xmm3
  jbe    L3097
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L2895
  xor    %eax,%eax
  cmpb   $0x0,0x350(%rsp)
  je     L2350
  mov    0x70(%rsp),%rdx
  mov    0x100(%rsp),%rcx
  mov    0x1d8(%rsp),%r8
  nopl   0x0(%rax,%rax,1)
L3974:
  movupd (%r8,%rax,1),%xmm0
  movups %xmm0,(%rcx,%rax,1)
  movupd 0x0(%r13,%rax,1),%xmm3
  subpd  %xmm3,%xmm0
  movups %xmm0,(%r14,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rdx
  jne    L3974
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L2895
  mov    0xf0(%rsp),%rax
  movsd  (%rax),%xmm0
  mov    0xe0(%rsp),%rax
  movsd  %xmm0,(%rax)
  mov    0xd8(%rsp),%rax
  subsd  (%rax),%xmm0
  mov    0xe8(%rsp),%rax
  movsd  %xmm0,(%rax)
L2895:
  movb   $0x1,0x150(%rsp)
  movapd %xmm2,%xmm3
  jmp    L2937
  cs nopw 0x0(%rax,%rax,1)
L3322:
  add    %r11,%rsi
  xor    %eax,%eax
  nopl   (%rax)
L1872:
  movsd  0x8(%rsi,%rax,8),%xmm1
  mov    %rax,%r14
  mulsd  %xmm0,%xmm1
  addsd  (%r12,%rax,8),%xmm1
  movsd  %xmm1,(%r12,%rax,8)
  add    $0x1,%rax
  cmp    %r13,%r14
  jne    L1872
  jmp    L1521
  nop
L1277:
  movapd %xmm2,%xmm0
  jmp    L3268
L1434:
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  movslq %edx,%rsi
  jmp    L642
L4013:
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  jmp    L2954
L1985:
  mov    $0x1,%eax
  movapd %xmm2,%xmm6
  movapd %xmm2,%xmm0
  movapd %xmm2,%xmm5
  jmp    L3867
L2350:
  mov    0x158(%rsp),%rdx
  mov    0x100(%rsp),%rcx
  mov    0x1d8(%rsp),%r8
  cs nopw 0x0(%rax,%rax,1)
L399:
  movsd  (%r8,%rax,8),%xmm0
  mov    %rax,%r9
  movsd  %xmm0,(%rcx,%rax,8)
  subsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%r14,%rax,8)
  add    $0x1,%rax
  cmp    %rdx,%r9
  jne    L399
  jmp    L2895
L212:
  movapd %xmm2,%xmm5
  movapd %xmm2,%xmm0
  movapd %xmm2,%xmm9
  movapd %xmm2,%xmm7
  movapd %xmm2,%xmm10
  jmp    L4365
L2958:
  movapd %xmm2,%xmm11
  jmp    L2637
L3097:
  cmpb   $0x0,0x150(%rsp)
  mov    0x48(%rsp),%r12
  movsd  %xmm12,0x1e8(%rsp)
  movsd  0x358(%rsp),%xmm7
  movsd  %xmm1,0x18(%rsp)
  je     L197
  movsd  %xmm3,0x498(%rsp)
L197:
  mulsd  %xmm13,%xmm0
  mov    0x480(%rsp),%eax
  movsd  %xmm9,0x488(%rsp)
  comisd 0x1e8(%rsp),%xmm0
  mov    %eax,0x1ac(%rsp)
  jb     L759
  cmp    %eax,0x260(%rsp)
  jge    L2013
L450:
  movsd  %xmm7,0x28(%rsp)
  mov    %r15d,%esi
  movsd  %xmm2,0x48(%rsp)
  movsd  %xmm14,0x40(%rsp)
  movsd  %xmm8,0x30(%rsp)
  push   0x3b0(%rsp)
  push   0x280(%rsp)
  push   %r10
  mov    %r10,0x28(%rsp)
  push   %r12
  push   0x498(%rsp)
  push   0x498(%rsp)
  push   0x1a8(%rsp)
  push   0x1c8(%rsp)
  mov    0x590(%rsp),%eax
  push   %rax
  push   0x158(%rsp)
  push   0x70(%rsp)
  push   0x1e0(%rsp)
  push   0x180(%rsp)
  push   0x1a0(%rsp)
  push   %r13
  push   0x380(%rsp)
  push   0x120(%rsp)
  push   0x298(%rsp)
  mov    0x590(%rsp),%eax
  push   %rax
  mov    0x590(%rsp),%eax
  push   %rax
  mov    0x308(%rsp),%rdx
  movsd  0x1c8(%rsp),%xmm0
  mov    0x438(%rsp),%r9
  mov    0x3e8(%rsp),%r8
  mov    0x2e0(%rsp),%rcx
  mov    0xf8(%rsp),%edi
  call   <rescue_@plt>
  movslq 0x524(%rsp),%rdx
  add    $0xa0,%rsp
  movsd  0x48(%rsp),%xmm2
  cmp    0x1e0(%rsp),%edx
  mov    0x10(%rsp),%r10
  movapd %xmm2,%xmm15
  movsd  0x28(%rsp),%xmm7
  movsd  0x30(%rsp),%xmm8
  movsd  0x40(%rsp),%xmm14
  jne    L3760
L122:
  mov    0x480(%rsp),%eax
  mov    %eax,0x260(%rsp)
  test   %eax,%eax
  js     L3966
  mov    0x1ac(%rsp),%ecx
  cmp    %ecx,0x260(%rsp)
  jg     L106
  mov    0x1a8(%rsp),%ecx
  test   %ecx,%ecx
  jne    L893
L3110:
  movsd  %xmm8,0x28(%rsp)
  mov    %r13,%rcx
  mov    %r15d,%esi
  movsd  %xmm2,0x48(%rsp)
  movsd  %xmm14,0x40(%rsp)
  movsd  %xmm15,0x30(%rsp)
  movsd  %xmm7,0x18(%rsp)
  push   0x368(%rsp)
  push   0x250(%rsp)
  push   %r10
  lea    0x4b0(%rsp),%rax
  mov    %r10,0x28(%rsp)
  push   %rax
  lea    0x4b0(%rsp),%rax
  push   %rax
  push   0x200(%rsp)
  push   0x130(%rsp)
  mov    0xf4(%rsp),%eax
  push   %rax
  push   %rdx
  push   0x1c0(%rsp)
  push   0x1e0(%rsp)
  mov    0x5a8(%rsp),%eax
  push   %rax
  mov    0x170(%rsp),%r9
  movsd  0x290(%rsp),%xmm0
  mov    0x80(%rsp),%r8
  mov    0x100(%rsp),%rdx
  mov    0xb8(%rsp),%edi
  call   <altmov_@plt>
  mov    0xb8(%rsp),%eax
  add    $0x60,%rsp
  mov    0x10(%rsp),%r10
  movsd  0x18(%rsp),%xmm7
  movsd  0x28(%rsp),%xmm8
  test   %eax,%eax
  mov    D275(%rip),%rax
  movsd  0x30(%rsp),%xmm15
  movsd  0x40(%rsp),%xmm14
  movsd  0x48(%rsp),%xmm2
  movq   %rax,%xmm13
  jle    L4165
L4544:
  cmpb   $0x0,0x446(%rsp)
  je     L124
  mov    0x100(%rsp),%rdx
  xor    %eax,%eax
L3595:
  movupd (%rdx,%rax,1),%xmm0
  movupd 0x0(%r13,%rax,1),%xmm3
  subpd  %xmm3,%xmm0
  movups %xmm0,(%r14,%rax,1)
  add    $0x10,%rax
  cmp    %rax,0x338(%rsp)
  jne    L3595
  mov    0x324(%rsp),%ecx
  cmp    %ecx,0x320(%rsp)
  je     L4165
  mov    0x280(%rsp),%rax
  movsd  (%rax),%xmm0
  mov    0x438(%rsp),%rax
  subsd  (%rax),%xmm0
  mov    0x3c0(%rsp),%rax
  movsd  %xmm0,(%rax)
L4165:
  mov    0x1ac(%rsp),%eax
  mov    %eax,0x2d8(%rsp)
  movslq 0x484(%rsp),%rax
  mov    %eax,0x1e0(%rsp)
  jmp    L525
L1221:
  movapd %xmm2,%xmm4
  jmp    L597
L2642:
  movsd  0x2a0(%rsp),%xmm14
L4066:
  movsd  0x2b8(%rsp),%xmm3
  cmpl   $0x1,0x4f8(%rsp)
  maxsd  %xmm14,%xmm3
  movsd  %xmm3,0x128(%rsp)
  jg     L353
L1153:
  mov    %r8d,0x1ac(%rsp)
  movl   $0x0,0x1a8(%rsp)
  jmp    L893
L1286:
  mov    $0x1,%eax
  movapd %xmm2,%xmm4
  jmp    L2673
L4053:
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  jmp    L1854
L231:
  mov    $0x1,%esi
  jmp    L1138
L914:
  movsd  D234(%rip),%xmm0
  comisd 0x270(%rsp),%xmm0
  jb     L2370
  movapd %xmm7,%xmm4
  maxsd  0x128(%rsp),%xmm4
  movsd  %xmm4,0x128(%rsp)
  jmp    L581
L4438:
  mov    0x58(%rsp),%r11d
  test   %r11d,%r11d
  jle    L2743
  mov    0x138(%rsp),%rcx
  mov    $0x1,%eax
  mov    %r10,0x80(%rsp)
  mov    %rbx,%r9
  mov    %eax,%r10d
  mov    %rbp,0x130(%rsp)
  mov    0x2d0(%rsp),%r11
  mov    %r13,0x48(%rsp)
  mov    0x1f0(%rsp),%rbp
  mov    %rcx,%r8
  movl   $0x0,0x28(%rsp)
  mov    %r15d,0xa8(%rsp)
  mov    %r14,0x148(%rsp)
  mov    %r12,0x150(%rsp)
  cmp    $0x1,%r10d
  jne    L4329
L4059:
  movslq 0x28(%rsp),%rax
  mov    $0x1,%edi
  movq   $0x8,0x40(%rsp)
  mov    $0x2,%r13d
  lea    0x8(,%rax,8),%rax
  mov    %rax,0x10(%rsp)
  lea    0x8(%r9),%rax
  mov    %rax,0x30(%rsp)
L164:
  mov    0x10(%rsp),%rax
  sub    $0x8,%rax
  sub    0x40(%rsp),%rax
  add    0x120(%rsp),%rax
L1305:
  movsd  (%rax,%rdi,8),%xmm0
  mulsd  (%r9),%xmm0
  addsd  -0x8(%rcx,%rdi,8),%xmm0
  movsd  %xmm0,-0x8(%rcx,%rdi,8)
  add    $0x1,%rdi
  cmp    %edi,%r10d
  jge    L1305
  xchg   %ax,%ax
L2373:
  add    %r10d,0x28(%rsp)
  mov    0x30(%rsp),%r9
  add    $0x8,%r8
  cmp    %r10d,0x58(%rsp)
  je     L1953
  mov    %r13d,%r10d
  cmp    $0x1,%r10d
  je     L4059
L4329:
  movslq 0x28(%rsp),%rax
  mov    0x120(%rsp),%rsi
  lea    0x1(%r10),%r14d
  mov    %r14,%r13
  lea    (%rsi,%rax,8),%rdi
  lea    -0x1(%rax),%r12d
  mov    $0x2,%esi
  nopw   0x0(%rax,%rax,1)
L2947:
  movsd  -0x10(%rbx,%rsi,8),%xmm0
  lea    (%r12,%rsi,1),%eax
  mov    %esi,%edx
  mov    %rsi,%r15
  mulsd  -0x10(%rdi,%rsi,8),%xmm0
  addsd  (%r8),%xmm0
  movsd  %xmm0,(%r8)
  movsd  -0x10(%rdi,%rsi,8),%xmm0
  mulsd  (%r9),%xmm0
  addsd  -0x10(%rcx,%rsi,8),%xmm0
  movsd  %xmm0,-0x10(%rcx,%rsi,8)
  add    $0x1,%rsi
  cmp    %r14,%rsi
  jne    L2947
  cmp    %r10d,%edx
  jg     L3472
  mov    %r13d,%r12d
  movslq %edx,%rdi
  sub    %r15d,%r12d
  movslq %eax,%r15
  lea    0x0(,%rdi,8),%rsi
  lea    0x8(,%r15,8),%r15
  lea    -0x8(%rsi),%r14
  mov    %rsi,0x40(%rsp)
  mov    %r15,0x10(%rsp)
  mov    %r12d,%r15d
  lea    (%rcx,%r14,1),%rsi
  lea    (%r14,%r15,8),%r14
  add    %rcx,%r14
  cmp    %r14,%r9
  lea    0x8(%r9),%r14
  setae  %r15b
  cmp    %r14,%rsi
  mov    %r14,0x30(%rsp)
  setae  %r14b
  or     %r15b,%r14b
  je     L164
  mov    0x120(%rsp),%r14
  add    0x10(%rsp),%r14
  cmp    %r14,%rsi
  setne  %r15b
  cmp    %r10d,%edx
  setl   %r14b
  test   %r14b,%r15b
  je     L164
  mov    0x120(%rsp),%r14
  mov    0x10(%rsp),%r15
  xor    %edi,%edi
  movsd  (%r9),%xmm1
  lea    -0x8(%r14,%r15,1),%r15
  mov    %r12d,%r14d
  shr    %r14d
  unpcklpd %xmm1,%xmm1
  shl    $0x4,%r14
  nopl   0x0(%rax,%rax,1)
L4778:
  movupd (%r15,%rdi,1),%xmm0
  movupd (%rsi,%rdi,1),%xmm4
  mulpd  %xmm1,%xmm0
  addpd  %xmm4,%xmm0
  movups %xmm0,(%rsi,%rdi,1)
  add    $0x10,%rdi
  cmp    %r14,%rdi
  jne    L4778
  mov    %r12d,%esi
  and    $0xfffffffe,%esi
  add    %esi,%edx
  add    %esi,%eax
  cmp    %esi,%r12d
  je     L2373
  add    $0x1,%eax
  movslq %edx,%rdx
  cltq
  lea    (%r11,%rdx,8),%rdx
  movsd  0x0(%rbp,%rax,8),%xmm0
  mulsd  (%r9),%xmm0
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  jmp    L2373
L3760:
  mov    0x58(%rsp),%edi
  test   %edi,%edi
  jle    L122
  movslq %edx,%rax
  cmp    $0x1,%r15d
  jne    L2566
  mov    0xa0(%rsp),%rdi
  shl    $0x3,%rax
  mov    %rax,%rcx
  sub    0x38(%rsp),%rcx
  lea    0x10(%rdi,%rcx,1),%rsi
  cmp    %rsi,%r13
  je     L739
  cmpb   $0x0,0x352(%rsp)
  je     L739
  lea    0x8(%rdi,%rcx,1),%rcx
  xor    %eax,%eax
L2061:
  movupd (%rcx,%rax,1),%xmm0
  movups %xmm0,0x0(%r13,%rax,1)
  mulpd  %xmm0,%xmm0
  add    $0x10,%rax
  addsd  %xmm0,%xmm15
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  cmp    %rax,0x70(%rsp)
  jne    L2061
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L122
  mov    0xc8(%rsp),%eax
  mov    0x90(%rsp),%rcx
  add    %edx,%eax
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mov    0xd8(%rsp),%rax
  movsd  %xmm0,(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  jmp    L122
L3316:
  test   %r15d,%r15d
  jle    L3262
L509:
  mov    0x308(%rsp),%r9
  movslq 0x484(%rsp),%rax
  mov    0x1b0(%rsp),%rcx
  lea    0x8(%r9),%rdi
  shl    $0x3,%rax
  cmp    %rdi,%r10
  lea    (%rcx,%rax,1),%rdx
  lea    -0x8(%r9,%rax,1),%rsi
  lea    (%r9,%rax,1),%rcx
  setne  %al
  cmp    %rdi,%r12
  setne  %dil
  and    %edi,%eax
  lea    0x8(%r12),%rdi
  cmp    %rdi,%r10
  setne  %dil
  and    %edi,%eax
  cmp    $0x2,%r15d
  setg   %dil
  and    %edi,%eax
  cmp    0x410(%rsp),%rsi
  setae  %dil
  cmp    %rcx,%r12
  setae  %r8b
  or     %r8d,%edi
  test   %dil,%al
  je     L1322
  cmp    %rsi,0x408(%rsp)
  setbe  %al
  cmp    %rcx,%r10
  setae  %cl
  or     %cl,%al
  je     L1322
  movsd  (%rdx),%xmm4
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  mov    %r9,%rcx
  unpcklpd %xmm4,%xmm4
L2081:
  movupd (%rcx,%rax,1),%xmm0
  subpd  %xmm4,%xmm0
  movups %xmm0,(%r12,%rax,1)
  movups %xmm1,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %rax,0x3b8(%rsp)
  jne    L2081
  mov    0x440(%rsp),%ecx
  cmp    %ecx,0x3ec(%rsp)
  je     L2670
  mov    0x400(%rsp),%rax
  movsd  (%rax),%xmm0
  subsd  (%rdx),%xmm0
  mov    0x3f8(%rsp),%rax
  movsd  %xmm0,(%rax)
  mov    0x3f0(%rsp),%rax
  movq   $0x0,(%rax)
L2670:
  mov    0xcc(%rsp),%eax
  test   %eax,%eax
  jle    L3493
L4038:
  mov    $0x8,%r8d
  mov    %r14,0x40(%rsp)
  sub    0x38(%rsp),%r8
  mov    %r15d,%edx
  mov    %rbp,0x28(%rsp)
  mov    0xb0(%rsp),%rcx
  mov    $0x1,%esi
  lea    -0x1(%r15),%edi
  mov    %r13,0x30(%rsp)
  mov    0x258(%rsp),%rbp
  mov    %r8,0x10(%rsp)
  mov    0x418(%rsp),%r9
  mov    0xb8(%rsp),%r13d
  mov    0x110(%rsp),%r8
L334:
  test   %r15d,%r15d
  jle    L139
  cmp    $0x1,%r15d
  je     L204
  mov    0x10(%rsp),%rax
  movslq %edx,%r11
  movapd %xmm2,%xmm0
  lea    (%rax,%r11,8),%r14
  xor    %eax,%eax
  add    %r8,%r14
  nopl   0x0(%rax,%rax,1)
L3642:
  movupd (%r12,%rax,1),%xmm1
  movupd (%r14,%rax,1),%xmm4
  add    $0x10,%rax
  mulpd  %xmm4,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rbx,%rax
  jne    L3642
  movslq %r13d,%rax
  cmp    0x8(%rsp),%r15d
  je     L57
L221:
  lea    (%rdx,%rax,1),%r14d
  movslq %r14d,%r14
  movsd  (%rcx,%r14,8),%xmm1
  mulsd  0x0(%rbp,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L57:
  shl    $0x3,%r11
  mov    %r11,%rax
  sub    0x38(%rsp),%rax
  lea    0x10(%r8,%rax,1),%r14
  cmp    %r14,%r10
  je     L4471
  cmpb   $0x0,0x50(%rsp)
  je     L4471
  movapd %xmm0,%xmm4
  lea    0x8(%r8,%rax,1),%r11
  xor    %eax,%eax
  unpcklpd %xmm4,%xmm4
  nopw   0x0(%rax,%rax,1)
L1201:
  movupd (%r11,%rax,1),%xmm1
  movupd (%r10,%rax,1),%xmm5
  mulpd  %xmm4,%xmm1
  addpd  %xmm5,%xmm1
  movups %xmm1,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %rbx,%rax
  jne    L1201
  cmp    0x8(%rsp),%r15d
  je     L139
  lea    (%rdx,%r13,1),%eax
  cltq
  mulsd  (%rcx,%rax,8),%xmm0
  addsd  (%r9),%xmm0
  movsd  %xmm0,(%r9)
L139:
  add    $0x1,%esi
  add    %r15d,%edx
  cmp    %esi,0xcc(%rsp)
  jge    L334
  mov    0x28(%rsp),%rbp
  mov    0x30(%rsp),%r13
  mov    0x40(%rsp),%r14
L3493:
  test   %r15d,%r15d
  jle    L842
  lea    -0x1(%r15),%edi
  mov    0xa0(%rsp),%rsi
  mov    0xd0(%rsp),%r8
  mov    $0x1,%ecx
  mov    0x118(%rsp),%r9
  mov    0x58(%rsp),%r11d
  add    $0x2,%rdi
L1344:
  mov    %r13,%rax
  mov    %rsi,%rdx
  movapd %xmm2,%xmm1
  test   %r11d,%r11d
  jle    L2415
  xchg   %ax,%ax
L3729:
  movsd  (%rdx),%xmm0
  mulsd  (%rax),%xmm0
  add    $0x8,%rax
  add    %r8,%rdx
  addsd  %xmm0,%xmm1
  cmp    %r9,%rax
  jne    L3729
L2415:
  movsd  -0x8(%r10,%rcx,8),%xmm0
  mov    0x60(%rsp),%rax
  add    $0x8,%rsi
  movsd  %xmm0,-0x8(%rax,%rcx,8)
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%r10,%rcx,8)
  add    $0x1,%rcx
  cmp    %rcx,%rdi
  jne    L1344
L842:
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L237
  lea    -0x1(%r15),%edx
  mov    %r15d,%r9d
  movapd %xmm2,%xmm5
  xor    %edi,%edi
  mov    0x550(%rsp),%r8d
  mov    0x190(%rsp),%r11
  movapd %xmm2,%xmm4
  add    $0x2,%rdx
L3802:
  movapd %xmm2,%xmm6
  movapd %xmm2,%xmm0
  test   %r15d,%r15d
  jle    L4478
  mov    0x78(%rsp),%rcx
  movslq %r8d,%rax
  movapd %xmm2,%xmm0
  lea    (%rcx,%rax,8),%rsi
  mov    0x90(%rsp),%rcx
  movslq %r9d,%rax
  lea    (%rcx,%rax,8),%rcx
  mov    $0x1,%eax
  nopl   0x0(%rax)
L47:
  movsd  (%rsi,%rax,8),%xmm1
  mulsd  -0x8(%r12,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
  movsd  (%rcx,%rax,8),%xmm1
  mulsd  -0x8(%r10,%rax,8),%xmm1
  add    $0x1,%rax
  addsd  %xmm1,%xmm0
  cmp    %rax,%rdx
  jne    L47
  movapd %xmm0,%xmm6
  mulsd  %xmm0,%xmm6
L4478:
  movsd  0x0(%r13,%rdi,8),%xmm8
  ucomisd (%r11,%rdi,8),%xmm8
  addsd  %xmm6,%xmm4
  mov    0x138(%rsp),%rax
  movsd  (%rax,%rdi,8),%xmm1
  jp     L1406
  jne    L1406
  comisd %xmm2,%xmm1
  movapd %xmm2,%xmm6
  ja     L2362
  movapd %xmm1,%xmm6
  mulsd  %xmm1,%xmm6
L2362:
  addsd  %xmm6,%xmm5
  movapd %xmm2,%xmm6
  minsd  %xmm0,%xmm6
  movapd %xmm6,%xmm0
L3631:
  mov    0x68(%rsp),%rax
  add    0x550(%rsp),%r8d
  add    %r15d,%r9d
  movsd  %xmm0,(%rax,%rdi,8)
  lea    0x1(%rdi),%rax
  cmp    0x158(%rsp),%rdi
  je     L1488
  mov    %rax,%rdi
  jmp    L3802
L1406:
  mov    0x178(%rsp),%rax
  ucomisd (%rax,%rdi,8),%xmm8
  jp     L4108
  jne    L4108
  comisd %xmm1,%xmm2
  movapd %xmm2,%xmm6
  ja     L3466
  movapd %xmm1,%xmm6
  mulsd  %xmm1,%xmm6
L3466:
  addsd  %xmm6,%xmm5
  movapd %xmm2,%xmm6
  maxsd  %xmm0,%xmm6
  movapd %xmm6,%xmm0
  jmp    L3631
L4108:
  mulsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm5
  jmp    L3631
L3472:
  lea    0x8(%r9),%rax
  mov    %rax,0x30(%rsp)
  jmp    L2373
L4471:
  add    %rcx,%r11
  xor    %eax,%eax
L872:
  movsd  0x8(%r11,%rax,8),%xmm1
  mov    %rax,%r14
  mulsd  %xmm0,%xmm1
  addsd  (%r10,%rax,8),%xmm1
  movsd  %xmm1,(%r10,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rdi
  jne    L872
  jmp    L139
L2063:
  mov    %r13,%rbx
L4543:
  mov    0x4f8(%rsp),%edi
  test   %edi,%edi
  jg     L2284
  movslq 0x484(%rsp),%rax
  shl    $0x3,%rax
  mov    %rax,0x228(%rsp)
L4690:
  mov    0x1b0(%rsp),%rdx
  add    0x228(%rsp),%rdx
  movsd  0x2c8(%rsp),%xmm3
  movsd  (%rdx),%xmm0
  comisd %xmm0,%xmm3
  jae    L4222
L4465:
  mov    0x4a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L3094
  add    $0x4b8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L4222:
  mov    0x58(%rsp),%ebp
  test   %ebp,%ebp
  jle    L2060
L4337:
  mov    0x210(%rsp),%r9
  mov    0x220(%rsp),%r15
  mov    0x58(%rsp),%r11d
  mov    0x268(%rsp),%rdi
  lea    0x8(%r9),%rax
  lea    0xf(%r15),%rcx
  mov    0x240(%rsp),%r8
  cmp    %rax,%r15
  setne  %al
  cmp    $0x1,%r11d
  setne  %sil
  and    %esi,%eax
  mov    %rcx,%rsi
  sub    %rdi,%rsi
  cmp    $0x1e,%rsi
  seta   %sil
  and    %esi,%eax
  mov    %rcx,%rsi
  sub    %r8,%rsi
  cmp    $0x1e,%rsi
  seta   %sil
  and    %esi,%eax
  mov    %rcx,%rsi
  sub    %rbx,%rsi
  cmp    $0x1e,%rsi
  seta   %sil
  and    %esi,%eax
  mov    %rcx,%rsi
  sub    0x190(%rsp),%rsi
  cmp    $0x1e,%rsi
  seta   %sil
  test   %sil,%al
  je     L2975
  mov    0x178(%rsp),%r10
  sub    %r10,%rcx
  cmp    $0x1e,%rcx
  jbe    L2975
  mov    %r11d,%ecx
  xor    %eax,%eax
  mov    %r15,%rsi
  shr    %ecx
  shl    $0x4,%rcx
L792:
  movupd (%r9,%rax,1),%xmm3
  movupd (%rbx,%rax,1),%xmm1
  mov    0x190(%rsp),%r15
  addpd  %xmm3,%xmm1
  movups %xmm1,(%rsi,%rax,1)
  movupd (%rdi,%rax,1),%xmm0
  maxpd  %xmm1,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  movupd (%r8,%rax,1),%xmm3
  minpd  %xmm0,%xmm3
  movups %xmm3,(%rsi,%rax,1)
  movupd (%r15,%rax,1),%xmm0
  movupd (%rbx,%rax,1),%xmm2
  movupd (%rdi,%rax,1),%xmm4
  movapd %xmm0,%xmm1
  cmpneqpd %xmm2,%xmm0
  cmpeqpd %xmm2,%xmm1
  andpd  %xmm0,%xmm2
  andpd  %xmm1,%xmm4
  andnpd %xmm3,%xmm1
  orpd   %xmm4,%xmm1
  movups %xmm1,(%rsi,%rax,1)
  movupd (%rbx,%rax,1),%xmm3
  andnpd %xmm3,%xmm0
  movupd (%r10,%rax,1),%xmm3
  orpd   %xmm2,%xmm0
  movupd (%r8,%rax,1),%xmm2
  cmpeqpd %xmm3,%xmm0
  andpd  %xmm0,%xmm2
  andnpd %xmm1,%xmm0
  orpd   %xmm2,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L792
  mov    0x58(%rsp),%ebx
  mov    %ebx,%eax
  or     $0x1,%eax
  and    $0x1,%ebx
  je     L4724
  cltq
  mov    0x220(%rsp),%rbx
  mov    0xc0(%rsp),%rdi
  shl    $0x3,%rax
  mov    0x268(%rsp),%r8
  lea    -0x8(%rax),%rcx
  add    %rax,%rdi
  lea    (%rbx,%rcx,1),%rsi
  mov    0x210(%rsp),%rbx
  add    %rcx,%r8
  add    0x240(%rsp),%rcx
  movsd  -0x8(%rbx,%rax,1),%xmm1
  addsd  (%rdi),%xmm1
  movsd  %xmm1,(%rsi)
  movsd  (%r8),%xmm0
  maxsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
  movsd  (%rcx),%xmm1
  minsd  %xmm0,%xmm1
  movsd  %xmm1,(%rsi)
  movsd  (%rdi),%xmm0
  ucomisd -0x8(%r15,%rax,1),%xmm0
  jp     L2896
  jne    L2896
  movsd  (%r8),%xmm0
  movsd  %xmm0,(%rsi)
  movsd  (%rdi),%xmm0
L2896:
  mov    0x178(%rsp),%rbx
  ucomisd -0x8(%rbx,%rax,1),%xmm0
  jp     L4724
  jne    L4724
  movsd  (%rcx),%xmm0
  movsd  %xmm0,(%rsi)
L4724:
  movsd  (%rdx),%xmm0
L2060:
  mov    0x4f8(%rsp),%r11d
  test   %r11d,%r11d
  jle    L4465
L1461:
  mov    0x480(%rsp),%esi
  lea    D394(%rip),%rdi
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D181(%rip),%rdi
  call   <printf@plt>
  mov    0x58(%rsp),%r10d
  test   %r10d,%r10d
  jle    L4465
  mov    0x220(%rsp),%r12
  mov    $0x1,%ebx
  lea    D372(%rip),%rbp
L2318:
  movsd  -0x8(%r12,%rbx,8),%xmm0
  mov    %rbp,%rdi
  mov    $0x1,%eax
  add    $0x1,%rbx
  call   <printf@plt>
  cmp    %ebx,0x58(%rsp)
  jge    L2318
  jmp    L4465
L1439:
  cmpb   $0x0,0x150(%rsp)
  mov    0x48(%rsp),%r12
  movsd  %xmm12,0x1e8(%rsp)
  movsd  0x358(%rsp),%xmm7
  movsd  %xmm1,0x18(%rsp)
  je     L4819
  movsd  %xmm3,0x498(%rsp)
L4819:
  movsd  0x128(%rsp),%xmm3
  movsd  %xmm9,0x488(%rsp)
  movapd %xmm3,%xmm6
  mulsd  %xmm3,%xmm6
  test   %r15d,%r15d
  jle    L1394
  lea    -0x1(%r15),%eax
  mov    %r14,0x40(%rsp)
  mov    $0x1,%ecx
  mov    0xa0(%rsp),%rdi
  lea    0x2(%rax),%r11
  mov    0xcc(%rsp),%eax
  mov    %rbp,0x28(%rsp)
  movapd %xmm2,%xmm4
  movl   $0x0,0xbc(%rsp)
  mov    0x110(%rsp),%r9
  movapd %xmm2,%xmm5
  mov    %rbx,0x30(%rsp)
  mov    0x460(%rsp),%rbp
  lea    0x1(%rax),%edx
  mov    %r13,0x10(%rsp)
  mov    0xc0(%rsp),%rbx
  mov    %r10,0x48(%rsp)
  mov    0xd0(%rsp),%rsi
  mov    0x170(%rsp),%r13
  mov    0x90(%rsp),%r10
L890:
  mov    %ecx,%r8d
  cmp    %ecx,0x1e0(%rsp)
  je     L1346
  mov    0xcc(%rsp),%r14d
  test   %r14d,%r14d
  jle    L2676
  mov    %r9,%r14
  movapd %xmm2,%xmm1
  mov    $0x1,%eax
  nopl   0x0(%rax,%rax,1)
L305:
  movsd  (%r14),%xmm0
  add    $0x1,%eax
  add    %rsi,%r14
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %edx,%eax
  jne    L305
L3197:
  movsd  -0x8(%r12,%rcx,8),%xmm3
  mulsd  0x18(%rsp),%xmm1
  mov    0x58(%rsp),%eax
  mulsd  %xmm3,%xmm3
  addsd  %xmm3,%xmm1
  test   %eax,%eax
  jle    L1628
  cmp    $0x1,%eax
  je     L37
  mov    0x10(%rsp),%rax
  mov    %rdi,%r14
  movapd %xmm2,%xmm10
  xchg   %ax,%ax
L1295:
  movsd  (%r14),%xmm0
  movupd (%rax),%xmm11
  add    $0x10,%rax
  movhpd (%r14,%rsi,1),%xmm0
  add    %r13,%r14
  subpd  %xmm11,%xmm0
  mulpd  %xmm0,%xmm0
  movapd %xmm0,%xmm9
  unpckhpd %xmm0,%xmm0
  addsd  %xmm10,%xmm9
  addsd  %xmm9,%xmm0
  movapd %xmm0,%xmm10
  cmp    %rax,%rbp
  jne    L1295
  mov    0x5c(%rsp),%r14d
  movapd %xmm0,%xmm9
  cmp    %r14d,0x58(%rsp)
  je     L498
  movslq 0xc8(%rsp),%r14
L664:
  mov    %r15d,%eax
  imul   %r14d,%eax
  add    %r8d,%eax
  cltq
  movsd  (%r10,%rax,8),%xmm0
  subsd  (%rbx,%r14,8),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm9
L498:
  divsd  %xmm6,%xmm9
  movapd %xmm1,%xmm0
  mulsd  %xmm9,%xmm9
  comisd %xmm9,%xmm8
  ja     L3840
  mulsd  %xmm9,%xmm0
  mulsd  %xmm9,%xmm3
L3840:
  comisd %xmm5,%xmm0
  jbe    L3366
  mov    %r8d,0xbc(%rsp)
  movapd %xmm0,%xmm5
  movsd  %xmm1,0x1e8(%rsp)
L3366:
  maxsd  %xmm4,%xmm3
  movapd %xmm3,%xmm4
L1346:
  add    $0x1,%rcx
  add    $0x8,%r9
  add    $0x8,%rdi
  cmp    %rcx,%r11
  jne    L890
  mulsd  %xmm13,%xmm4
  mov    0x28(%rsp),%rbp
  mov    0x30(%rsp),%rbx
  mov    0x10(%rsp),%r13
  mov    0x40(%rsp),%r14
  mov    0x48(%rsp),%r10
  mov    0x480(%rsp),%r8d
  comisd %xmm5,%xmm4
  jb     L1650
L2003:
  mov    0x480(%rsp),%eax
  mov    %eax,0x1ac(%rsp)
  cmp    0x260(%rsp),%eax
  jg     L450
L2013:
  mov    0x4f8(%rsp),%r10d
  mov    %r13,%rbx
  test   %r10d,%r10d
  jle    L4690
  lea    D109(%rip),%rdi
  call   <puts@plt>
  jmp    L2334
  xchg   %ax,%ax
L1953:
  mov    0x48(%rsp),%r13
  mov    0x80(%rsp),%r10
  mov    0xa8(%rsp),%r15d
  mov    0x130(%rsp),%rbp
  mov    0x148(%rsp),%r14
  mov    0x150(%rsp),%r12
L2743:
  cmp    %r15d,0x260(%rsp)
  jle    L4689
  test   %r15d,%r15d
  jle    L4689
  lea    -0x1(%r15),%eax
  mov    0xa0(%rsp),%r8
  xor    %edi,%edi
  mov    $0x1,%esi
  lea    0x2(%rax),%r11
L3954:
  mov    0x58(%rsp),%r9d
  mov    %esi,%edx
  mov    %rbx,%rax
  mov    %r8,%rcx
  movapd %xmm2,%xmm0
  test   %r9d,%r9d
  jle    L3923
  mov    %edx,0x10(%rsp)
  mov    0xd0(%rsp),%r9
  mov    0x118(%rsp),%rdx
L2878:
  movsd  (%rcx),%xmm1
  mulsd  (%rax),%xmm1
  add    $0x8,%rax
  add    %r9,%rcx
  addsd  %xmm1,%xmm0
  cmp    %rdx,%rax
  jne    L2878
  mov    0x188(%rsp),%rax
  mov    0xa0(%rsp),%r9
  mov    0x10(%rsp),%edx
  mulsd  -0x8(%rax,%rsi,8),%xmm0
  mov    0x2e0(%rsp),%rax
  add    %rdi,%rax
  add    %r9,%rax
  cmp    %rax,0x138(%rsp)
  mov    0x2e8(%rsp),%rax
  seta   %cl
  add    %rdi,%rax
  add    %r9,%rax
  cmp    %rax,0x340(%rsp)
  setb   %al
  or     %cl,%al
  je     L202
  cmpl   $0x2,0x29c(%rsp)
  mov    %r9,%rcx
  movapd %xmm0,%xmm3
  mov    0x138(%rsp),%rax
  seta   %r9b
  unpcklpd %xmm3,%xmm3
  add    %rdi,%rcx
  test   %r9b,%r9b
  je     L202
  mov    0xd0(%rsp),%r9
L2751:
  movsd  (%rcx),%xmm1
  movupd (%rax),%xmm4
  add    $0x10,%rax
  movhpd (%rcx,%r9,1),%xmm1
  add    0x170(%rsp),%rcx
  mulpd  %xmm3,%xmm1
  addpd  %xmm4,%xmm1
  movups %xmm1,-0x10(%rax)
  cmp    0x300(%rsp),%rax
  jne    L2751
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L3923
  mov    0x298(%rsp),%eax
  mov    0x90(%rsp),%rcx
  add    %edx,%eax
  cltq
  mulsd  (%rcx,%rax,8),%xmm0
  mov    0x2f0(%rsp),%rax
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
L3923:
  add    $0x1,%rsi
  add    $0x8,%r8
  add    $0x8,%rdi
  cmp    %r11,%rsi
  jne    L3954
  jmp    L4689
L141:
  movsd  D161(%rip),%xmm3
  mulsd  %xmm15,%xmm3
  test   %r15d,%r15d
  jle    L1801
  mov    0x38(%rsp),%rax
  mov    %r15d,0xa8(%rsp)
  movapd %xmm2,%xmm4
  mov    %r14,0x358(%rsp)
  mov    0x258(%rsp),%r9
  mov    %rax,0x1c0(%rsp)
  mov    0x158(%rsp),%rax
  mulsd  D304(%rip),%xmm15
  mov    %rbx,0x228(%rsp)
  add    $0x2,%rax
  mov    %r13,0x130(%rsp)
  mov    0x98(%rsp),%rbx
  mov    %rax,0x150(%rsp)
  lea    0x8(%r12),%rax
  mov    0x550(%rsp),%r13d
  movl   $0x1,0x1e0(%rsp)
  mov    %rax,0x168(%rsp)
L4704:
  mov    0x328(%rsp),%rcx
  mov    0x1c0(%rsp),%rax
  mov    0x58(%rsp),%r14d
  addsd  -0x8(%rcx,%rax,1),%xmm4
  test   %r14d,%r14d
  jle    L1328
  mov    0x90(%rsp),%rcx
  mov    0x118(%rsp),%rsi
  movapd %xmm15,%xmm1
  add    %rax,%rcx
  mov    0x130(%rsp),%rax
  mov    %rcx,0x28(%rsp)
  mov    %rcx,%rdx
  mov    0xd0(%rsp),%rcx
  nopl   0x0(%rax)
L4089:
  movsd  (%rdx),%xmm0
  mulsd  (%rax),%xmm0
  add    $0x8,%rax
  add    %rcx,%rdx
  addsd  %xmm0,%xmm1
  cmp    %rsi,%rax
  jne    L4089
  movapd %xmm1,%xmm0
  movapd %xmm3,%xmm5
  mov    %rbx,0x48(%rsp)
  mov    %r12,%rdx
  mov    0x1c0(%rsp),%rax
  mulsd  %xmm13,%xmm0
  mov    $0x1,%ecx
  mov    0x378(%rsp),%r14
  movsd  %xmm1,-0x8(%r10,%rax,1)
  add    0x388(%rsp),%rax
  mov    %rax,0x30(%rsp)
  mov    0x3a0(%rsp),%rax
  mov    %r14,0x10(%rsp)
  mov    %rax,0x40(%rsp)
  subsd  %xmm0,%xmm5
  mov    0x1a0(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    %r10,%rax
  nopl   0x0(%rax)
L2536:
  mov    0x30(%rsp),%rbx
  movsd  (%rbx),%xmm0
  mov    0x28(%rsp),%rbx
  movsd  %xmm0,(%rax)
  movsd  (%rbx),%xmm6
  mov    0x130(%rsp),%rbx
  movsd  -0x8(%rbx,%rcx,8),%xmm0
  mulsd  %xmm1,%xmm6
  mov    0xa8(%rsp),%ebx
  mulsd  %xmm5,%xmm0
  lea    (%rbx,%rcx,1),%r8d
  mov    0x18(%rsp),%rbx
  addsd  %xmm0,%xmm6
  movsd  %xmm6,(%rdx)
  mulsd  (%r10),%xmm6
  movsd  (%r12),%xmm0
  mulsd  (%rax),%xmm0
  addsd  (%rbx),%xmm0
  addsd  %xmm6,%xmm0
  movsd  %xmm0,(%rbx)
  cmp    $0x1,%rcx
  je     L2624
  mov    0x40(%rsp),%rsi
  xor    %edi,%edi
  test   %r13d,%r13d
  lea    -0x2(%rcx),%r15d
  mov    %r15d,0x148(%rsp)
  lea    -0x1(%rcx),%r11d
  cmovs  %rsi,%rdi
  add    0x10(%rsp),%rdi
  add    0x20(%rsp),%rdi
  cmp    %rdi,%rdx
  setb   %bl
  xor    %r14d,%r14d
  test   %r13d,%r13d
  cmovns %rsi,%r14
  mov    0x10(%rsp),%rsi
  add    %r14,%rsi
  add    0x20(%rsp),%rsi
  cmp    %rdi,%rax
  setb   0x80(%rsp)
  cmp    $0x1,%r15d
  movzbl 0x80(%rsp),%r14d
  seta   %r15b
  test   %r13d,%r13d
  setne  %dil
  and    %edi,%r15d
  cmp    %rsi,%rdx
  seta   %dil
  or     %ebx,%edi
  and    %edi,%r15d
  cmp    %rsi,%rax
  seta   %dil
  or     %r14d,%edi
  and    %r15d,%edi
  cmp    0x168(%rsp),%rsi
  setb   %r15b
  or     %ebx,%r15d
  test   %r15b,%dil
  je     L2742
  cmp    %rsi,0x160(%rsp)
  seta   %sil
  or     %r14b,%sil
  je     L2742
  mov    %r11d,%edi
  movsd  (%rdx),%xmm9
  movsd  (%rax),%xmm8
  shr    %edi
  mov    0x48(%rsp),%r14
  mov    0x20(%rsp),%rsi
  lea    -0x1(%rdi),%ebx
  unpcklpd %xmm9,%xmm9
  add    0x10(%rsp),%rsi
  mov    $0x8,%edi
  shl    $0x4,%rbx
  unpcklpd %xmm8,%xmm8
  add    $0x18,%rbx
  nopw   0x0(%rax,%rax,1)
L1158:
  movupd (%r12,%rdi,1),%xmm6
  movsd  (%rsi),%xmm0
  mulpd  %xmm8,%xmm6
  movhpd (%rsi,%rbp,1),%xmm0
  addpd  %xmm6,%xmm0
  movupd (%r10,%rdi,1),%xmm6
  add    $0x10,%rdi
  mulpd  %xmm9,%xmm6
  addpd  %xmm6,%xmm0
  movlpd %xmm0,(%rsi)
  movhpd %xmm0,(%rsi,%rbp,1)
  add    %r14,%rsi
  cmp    %rbx,%rdi
  jne    L1158
  mov    %r11d,%edi
  mov    %r14,0x48(%rsp)
  and    $0xfffffffe,%edi
  lea    0x2(%rdi),%esi
  cmp    %edi,%r11d
  je     L2624
  mov    %r13d,%edi
  mov    0x78(%rsp),%rbx
  imul   %esi,%edi
  movslq %esi,%rsi
  movsd  (%r9,%rsi,8),%xmm0
  mulsd  (%rax),%xmm0
  add    %r8d,%edi
  movslq %edi,%rdi
  lea    (%rbx,%rdi,8),%rdi
  mov    0x88(%rsp),%rbx
  addsd  (%rdi),%xmm0
  movsd  (%rbx,%rsi,8),%xmm6
  mulsd  (%rdx),%xmm6
  addsd  %xmm6,%xmm0
  movsd  %xmm0,(%rdi)
L2624:
  add    %rbp,0x30(%rsp)
  add    $0x1,%rcx
  add    $0x8,%rax
  mov    0xd0(%rsp),%rsi
  addq   $0x8,0x18(%rsp)
  add    $0x8,%rdx
  add    %rsi,0x28(%rsp)
  add    %rbp,0x40(%rsp)
  addq   $0x8,0x10(%rsp)
  cmp    0x150(%rsp),%rcx
  jne    L2536
  mov    0x48(%rsp),%rbx
L571:
  addq   $0x8,0x1c0(%rsp)
  mov    0x1e0(%rsp),%ecx
  lea    0x1(%rcx),%eax
  cmp    %ecx,0xa8(%rsp)
  je     L924
  mov    %eax,0x1e0(%rsp)
  jmp    L4704
L2742:
  mov    0x148(%rsp),%r8d
  mov    0x48(%rsp),%r14
  xor    %esi,%esi
  mov    0x18(%rsp),%rdi
  add    0x2f8(%rsp),%rdi
L3278:
  movsd  (%rdx),%xmm6
  mulsd  0x8(%r10,%rsi,8),%xmm6
  mov    %rsi,%r11
  movsd  (%rax),%xmm0
  mulsd  0x8(%r12,%rsi,8),%xmm0
  add    $0x1,%rsi
  addsd  (%rdi),%xmm0
  addsd  %xmm6,%xmm0
  movsd  %xmm0,(%rdi)
  add    %rbp,%rdi
  cmp    %r11,%r8
  jne    L3278
  mov    %r14,0x48(%rsp)
  jmp    L2624
L1488:
  mulsd  D240(%rip),%xmm4
  comisd %xmm5,%xmm4
  jbe    L237
L3925:
  movl   $0x0,0x2c0(%rsp)
L2868:
  movsd  D357(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm10,%xmm0
  comisd 0x198(%rsp),%xmm0
  jb     L3091
  movsd  0x200(%rsp),%xmm3
  movsd  %xmm3,0x288(%rsp)
  movsd  0x1f8(%rsp),%xmm3
  movsd  %xmm3,0x200(%rsp)
  movsd  0x48(%rsp),%xmm3
  movsd  %xmm3,0x1f8(%rsp)
  jmp    L893
L3091:
  movsd  D240(%rip),%xmm0
  movsd  0x128(%rsp),%xmm3
  mulsd  %xmm14,%xmm0
  movapd %xmm3,%xmm4
  addsd  %xmm3,%xmm4
  mulsd  %xmm4,%xmm4
  mulsd  %xmm0,%xmm0
  comisd %xmm0,%xmm4
  jbe    L1436
L4820:
  movsd  0x200(%rsp),%xmm3
  movsd  %xmm3,0x288(%rsp)
  movsd  0x1f8(%rsp),%xmm3
  movsd  %xmm3,0x200(%rsp)
  movsd  0x48(%rsp),%xmm3
  movsd  %xmm3,0x1f8(%rsp)
  jmp    L1619
L204:
  mov    $0x1,%eax
  movapd %xmm2,%xmm0
  movslq %edx,%r11
  jmp    L221
L1328:
  movsd  %xmm15,-0x8(%r10,%rax,1)
  jmp    L571
L924:
  mov    0x228(%rsp),%rbx
  mov    0xa8(%rsp),%r15d
  mov    0x130(%rsp),%r13
  mov    0x358(%rsp),%r14
L4011:
  mov    0xcc(%rsp),%eax
  mov    %r15d,0x30(%rsp)
  movl   $0x1,0x48(%rsp)
  lea    0x1(%rax),%ecx
  mov    %ecx,0x150(%rsp)
  test   %eax,%eax
  jle    L1260
  lea    -0x1(%r15),%ecx
  mov    $0x8,%eax
  mov    %r13,0x168(%rsp)
  mov    0x90(%rsp),%r8
  mov    %rax,%rsi
  mov    %ecx,0x1e0(%rsp)
  sub    0x180(%rsp),%rsi
  mov    %rcx,0x228(%rsp)
  sub    0x38(%rsp),%rax
  add    $0x2,%rcx
  mov    %rsi,0x28(%rsp)
  mov    0x258(%rsp),%r9
  mov    %rcx,0x148(%rsp)
  mov    %rax,0x40(%rsp)
  mov    %r14,0x358(%rsp)
  mov    0x78(%rsp),%r14
  mov    %r10,0x130(%rsp)
  mov    0xb8(%rsp),%r10d
L2403:
  movapd %xmm2,%xmm6
  movapd %xmm2,%xmm0
  test   %r15d,%r15d
  jle    L2648
  movslq 0x30(%rsp),%rdx
  mov    0x110(%rsp),%rsi
  shl    $0x3,%rdx
  mov    %rdx,%rax
  sub    0x38(%rsp),%rax
  lea    0x10(%rsi,%rax,1),%rcx
  cmp    %rcx,%r12
  je     L3997
  cmpl   $0x1,0x1e0(%rsp)
  seta   %cl
  test   %cl,0x3ab(%rsp)
  je     L3997
  mov    0x60(%rsp),%rcx
  lea    0x8(%rsi,%rax,1),%rdx
  movapd %xmm2,%xmm6
  xor    %eax,%eax
  movapd %xmm2,%xmm0
  xchg   %ax,%ax
L3170:
  movsd  (%rdx,%rax,1),%xmm1
  movupd (%rdx,%rax,1),%xmm5
  addsd  %xmm1,%xmm6
  movsd  0x8(%rdx,%rax,1),%xmm1
  addsd  %xmm1,%xmm6
  movupd (%rcx,%rax,1),%xmm1
  mulpd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  movups %xmm1,(%r12,%rax,1)
  unpckhpd %xmm1,%xmm1
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  cmp    %rax,%rbx
  jne    L3170
  cmp    0x8(%rsp),%r15d
  je     L2648
  mov    0x30(%rsp),%eax
  mov    0xb0(%rsp),%rcx
  add    %r10d,%eax
  cltq
  movsd  (%rcx,%rax,8),%xmm1
  mov    0x1c8(%rsp),%rax
  addsd  %xmm1,%xmm6
  mulsd  (%rax),%xmm1
  mov    0x140(%rsp),%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm1,(%rax)
L2648:
  mov    0x58(%rsp),%r11d
  test   %r11d,%r11d
  jle    L312
  movslq 0x30(%rsp),%rax
  mov    0x110(%rsp),%rsi
  mulsd  %xmm3,%xmm6
  mov    %rbp,0x1c0(%rsp)
  mulsd  %xmm13,%xmm0
  mov    %rax,%rcx
  shl    $0x3,%rax
  mov    %rax,%rdx
  sub    0x38(%rsp),%rdx
  lea    0x10(%rsi,%rdx,1),%rdi
  lea    0x8(%rsi,%rdx,1),%r13
  mov    0x550(%rsp),%esi
  lea    (%r10,%rcx,1),%edx
  mov    0xb0(%rsp),%rcx
  mov    %rdi,0x18(%rsp)
  subsd  %xmm0,%xmm6
  movslq %edx,%rdx
  add    %rcx,%rax
  lea    (%rcx,%rdx,8),%r11
  mov    %r15d,%ecx
  mov    %rax,0xa8(%rsp)
  mov    0x130(%rsp),%rax
  mov    %rax,0x10(%rsp)
  mov    0x168(%rsp),%rax
  mov    %rax,%rbp
  cs nopw 0x0(%rax,%rax,1)
L1823:
  movsd  0x0(%rbp),%xmm0
  mulsd  %xmm6,%xmm0
  test   %r15d,%r15d
  jle    L3242
  cmp    $0x1,%r15d
  je     L4008
  mov    0x40(%rsp),%rdi
  movslq %ecx,%rax
  lea    (%rdi,%rax,8),%rdx
  xor    %eax,%eax
  add    0xa0(%rsp),%rdx
  nopw   0x0(%rax,%rax,1)
L94:
  movupd (%r12,%rax,1),%xmm1
  movupd (%rdx,%rax,1),%xmm5
  add    $0x10,%rax
  mulpd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rbx,%rax
  jne    L94
  movslq %r10d,%rax
  cmp    0x8(%rsp),%r15d
  je     L2307
L2668:
  lea    (%rcx,%rax,1),%edx
  movslq %edx,%rdx
  movsd  (%r8,%rdx,8),%xmm1
  mulsd  (%r9,%rax,8),%xmm1
  addsd  %xmm1,%xmm0
L2307:
  mov    0x10(%rsp),%rax
  movslq %esi,%rdi
  shl    $0x3,%rdi
  movsd  %xmm0,(%rax)
  mov    0x28(%rsp),%rax
  lea    (%rax,%rdi,1),%rdx
  add    0x20(%rsp),%rdx
  cmp    0x18(%rsp),%rdx
  je     L596
  movapd %xmm0,%xmm5
  xor    %eax,%eax
  cmpb   $0x0,0x50(%rsp)
  unpcklpd %xmm5,%xmm5
  je     L596
  nopw   0x0(%rax,%rax,1)
L99:
  movupd 0x0(%r13,%rax,1),%xmm1
  movupd (%rdx,%rax,1),%xmm10
  mulpd  %xmm5,%xmm1
  addpd  %xmm10,%xmm1
  movups %xmm1,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rbx
  jne    L99
  cmp    0x8(%rsp),%r15d
  je     L3280
  lea    (%rsi,%r10,1),%eax
  mulsd  (%r11),%xmm0
  cltq
  lea    (%r14,%rax,8),%rax
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
L3280:
  addq   $0x8,0x10(%rsp)
  add    $0x8,%rbp
  add    0x550(%rsp),%esi
  add    %r15d,%ecx
  cmp    0x118(%rsp),%rbp
  jne    L1823
  mov    0x3ac(%rsp),%eax
  mov    0x1c0(%rsp),%rbp
  mov    0x374(%rsp),%edi
  mov    0x160(%rsp),%rcx
  mov    0x1a0(%rsp),%rsi
  mov    0x130(%rsp),%r13
  lea    (%rax,%r15,1),%r11d
  nopl   (%rax)
L288:
  movsd  -0x8(%rcx),%xmm1
  mov    %r13,%rdx
  mov    %rsi,%rax
  nopl   0x0(%rax,%rax,1)
L3179:
  movsd  (%rdx),%xmm0
  add    $0x8,%rdx
  mulsd  %xmm1,%xmm0
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
  add    %rbp,%rax
  cmp    %rcx,%rdx
  jne    L3179
  add    $0x1,%edi
  add    $0x8,%rsi
  add    $0x8,%rcx
  cmp    %r11d,%edi
  jne    L288
L312:
  addl   $0x1,0x48(%rsp)
  mov    0x48(%rsp),%eax
  add    %r15d,0x30(%rsp)
  cmp    0x150(%rsp),%eax
  jne    L2403
  mov    0x168(%rsp),%r13
  mov    0x358(%rsp),%r14
  mov    0x130(%rsp),%r10
L1260:
  mov    0x58(%rsp),%r9d
  test   %r9d,%r9d
  jle    L4307
  mov    0x428(%rsp),%rax
  xor    %ecx,%ecx
  mov    %r15d,%r9d
  mov    %r10,%rdx
  mov    %rbx,0x40(%rsp)
  mov    %r13,%rsi
  xor    %edi,%edi
  mov    $0x1,%r11d
  mulsd  D304(%rip),%xmm4
  mov    %rax,%r8
  add    $0x8,%rax
  mov    %r14,0x48(%rsp)
  mov    %rax,0x18(%rsp)
  lea    -0x2(%r15),%eax
  mov    0x188(%rsp),%r14
  mov    %rax,0x28(%rsp)
  mov    0x90(%rsp),%rax
  mov    %r12,0x80(%rsp)
  mov    %ecx,%r12d
  add    $0x8,%rax
  mov    %rax,0x30(%rsp)
L3728:
  movsd  (%rsi),%xmm1
  mulsd  %xmm4,%xmm1
  movsd  %xmm1,(%rdx)
  test   %r15d,%r15d
  jle    L1724
  mov    0x90(%rsp),%rbx
  lea    0x1(%r9),%eax
  movsd  (%r14),%xmm0
  cltq
  lea    (%rbx,%rax,8),%rax
  mulsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  movsd  (%rax),%xmm0
  subsd  (%rsi),%xmm0
  movsd  %xmm0,(%rax)
  cmp    $0x1,%r15d
  je     L647
  mov    %rbx,%rax
  movslq %r9d,%rbx
  lea    0x8(%r14),%rcx
  lea    (%rax,%rbx,8),%rax
  add    0x28(%rsp),%rbx
  mov    %rax,0x10(%rsp)
  mov    0x30(%rsp),%rax
  lea    (%rax,%rbx,8),%rbx
  mov    0x10(%rsp),%rax
  nopl   0x0(%rax,%rax,1)
L3678:
  movsd  (%rcx),%xmm0
  mulsd  0x10(%rax),%xmm0
  add    $0x8,%rax
  add    $0x8,%rcx
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  0x8(%rax),%xmm0
  subsd  (%rsi),%xmm0
  movsd  %xmm0,0x8(%rax)
  cmp    %rbx,%rax
  jne    L3678
L647:
  movsd  (%rdx),%xmm1
L1724:
  mov    0x18(%rsp),%rax
  mov    0x120(%rsp),%rbx
  lea    (%rax,%rdi,1),%rcx
  movslq %r12d,%rax
  lea    (%rbx,%rax,8),%rbx
  xor    %eax,%eax
  jmp    L2654
  nopl   0x0(%rax)
L3806:
  movsd  (%rdx),%xmm1
  add    $0x8,%rax
L2654:
  mulsd  0x0(%r13,%rax,1),%xmm1
  movsd  (%r10,%rax,1),%xmm0
  mulsd  (%rsi),%xmm0
  addsd  (%rbx,%rax,1),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rbx,%rax,1)
  movsd  (%rcx),%xmm0
  add    %rbp,%rcx
  movsd  %xmm0,0x8(%r8,%rax,1)
  cmp    %rdi,%rax
  jne    L3806
  add    %r11d,%r12d
  lea    0x1(%r11),%ecx
  add    $0x8,%rsi
  add    $0x8,%rdx
  add    %rbp,%r8
  lea    0x8(%rax),%rdi
  add    %r15d,%r9d
  cmp    %r11d,0x58(%rsp)
  je     L129
  mov    %ecx,%r11d
  jmp    L3728
L596:
  mov    %r10d,0x80(%rsp)
  mov    0xa8(%rsp),%rdx
  add    %r14,%rdi
  mov    $0x1,%eax
  mov    0x148(%rsp),%r10
  cs nopw 0x0(%rax,%rax,1)
L2966:
  movsd  (%rdx,%rax,8),%xmm1
  mulsd  %xmm0,%xmm1
  addsd  (%rdi,%rax,8),%xmm1
  movsd  %xmm1,(%rdi,%rax,8)
  add    $0x1,%rax
  cmp    %rax,%r10
  jne    L2966
  mov    0x80(%rsp),%r10d
  jmp    L3280
L3242:
  mov    0x10(%rsp),%rax
  movsd  %xmm0,(%rax)
  jmp    L3280
L4008:
  mov    $0x1,%eax
  jmp    L2668
L3997:
  mov    0x60(%rsp),%rsi
  xor    %eax,%eax
  movapd %xmm2,%xmm6
  movapd %xmm2,%xmm0
  mov    0x228(%rsp),%rdi
  add    0xb0(%rsp),%rdx
L3365:
  movsd  0x8(%rdx,%rax,8),%xmm1
  mov    %rax,%rcx
  addsd  %xmm1,%xmm6
  mulsd  (%rsi,%rax,8),%xmm1
  movsd  %xmm1,(%r12,%rax,8)
  addsd  %xmm1,%xmm0
  add    $0x1,%rax
  cmp    %rdi,%rcx
  jne    L3365
  jmp    L2648
L129:
  xor    %eax,%eax
  cmpb   $0x0,0x447(%rsp)
  mov    0x40(%rsp),%rbx
  mov    0x48(%rsp),%r14
  mov    0x80(%rsp),%r12
  je     L612
  mov    0x210(%rsp),%rdx
  mov    0x190(%rsp),%rcx
  pxor   %xmm1,%xmm1
  mov    0x178(%rsp),%rsi
  mov    0x100(%rsp),%rdi
L4534:
  movupd 0x0(%r13,%rax,1),%xmm3
  movupd (%rdx,%rax,1),%xmm0
  addpd  %xmm3,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  movupd 0x0(%r13,%rax,1),%xmm3
  movupd (%rdi,%rax,1),%xmm0
  subpd  %xmm3,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  movupd 0x0(%r13,%rax,1),%xmm3
  movupd (%rcx,%rax,1),%xmm0
  subpd  %xmm3,%xmm0
  movups %xmm0,(%rcx,%rax,1)
  movupd (%rsi,%rax,1),%xmm0
  movupd 0x0(%r13,%rax,1),%xmm3
  subpd  %xmm3,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  movups %xmm1,0x0(%r13,%rax,1)
  add    $0x10,%rax
  cmp    0x70(%rsp),%rax
  jne    L4534
  mov    0x5c(%rsp),%ecx
  cmp    %ecx,0x58(%rsp)
  je     L1441
  mov    0xd8(%rsp),%rax
  mov    0x448(%rsp),%rcx
  movsd  (%rcx),%xmm0
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rcx)
  mov    0xe0(%rsp),%rcx
  movsd  (%rcx),%xmm0
  subsd  (%rax),%xmm0
  movsd  %xmm0,(%rcx)
  mov    0x450(%rsp),%rcx
  movsd  (%rcx),%xmm0
  subsd  (%rax),%xmm0
  movsd  %xmm0,(%rcx)
  mov    0x458(%rsp),%rcx
  movsd  (%rcx),%xmm0
  subsd  (%rax),%xmm0
  movsd  %xmm0,(%rcx)
  movq   $0x0,(%rax)
L1441:
  movslq 0x484(%rsp),%rax
  mov    0x1a8(%rsp),%esi
  mov    %eax,0x1e0(%rsp)
  test   %esi,%esi
  je     L652
  movsd  D337(%rip),%xmm8
  movapd %xmm2,%xmm15
  jmp    L525
L612:
  mov    0x210(%rsp),%rcx
  mov    %rax,%rdx
  movsd  (%rcx,%rax,8),%xmm0
  addsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  mov    0x100(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm0
  subsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  mov    0x190(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm0
  subsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  mov    0x178(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm0
  subsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  movq   $0x0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    0x158(%rsp),%rdx
  jne    L612
  jmp    L1441
  xchg   %ax,%ax
L4055:
  movslq 0x30(%rsp),%rax
  mov    0x120(%rsp),%rsi
  lea    -0x2(%r8),%r13d
  add    $0x3,%r13
  lea    (%rsi,%rax,8),%rdi
  lea    -0x1(%rax),%r15d
  mov    $0x2,%esi
  nopw   0x0(%rax,%rax,1)
L4033:
  movsd  -0x10(%r14,%rsi,8),%xmm0
  lea    (%r15,%rsi,1),%eax
  mov    %esi,%edx
  mov    %rsi,%r10
  mulsd  -0x10(%rdi,%rsi,8),%xmm0
  addsd  (%r9),%xmm0
  movsd  %xmm0,(%r9)
  movsd  -0x10(%rdi,%rsi,8),%xmm0
  mulsd  (%r11),%xmm0
  addsd  -0x10(%rcx,%rsi,8),%xmm0
  movsd  %xmm0,-0x10(%rcx,%rsi,8)
  add    $0x1,%rsi
  cmp    %r13,%rsi
  jne    L4033
  cmp    %r12d,%edx
  jg     L226
  mov    0x40(%rsp),%r15d
  movslq %edx,%rdi
  lea    0x0(,%rdi,8),%rsi
  lea    -0x8(%rsi),%r13
  add    $0x1,%r15d
  mov    %rsi,0xa8(%rsp)
  sub    %r10d,%r15d
  lea    (%rcx,%r13,1),%rsi
  movslq %eax,%r10
  mov    %rsi,0x10(%rsp)
  mov    $0x8,%esi
  lea    0x8(,%r10,8),%r10
  mov    %r15d,0x80(%rsp)
  shl    $0x3,%r15
  cmp    0x28(%rsp),%edx
  cmovg  %rsi,%r15
  add    %r15,%r13
  lea    0x8(%r11),%r15
  add    %rcx,%r13
  cmp    %r13,%r11
  setae  0x130(%rsp)
  cmp    %r15,0x10(%rsp)
  movzbl 0x130(%rsp),%esi
  setae  %r13b
  or     %sil,%r13b
  je     L844
  mov    0x120(%rsp),%r13
  add    %r10,%r13
  cmp    %r13,0x10(%rsp)
  setne  0x130(%rsp)
  cmp    %r12d,%edx
  movzbl 0x130(%rsp),%esi
  setl   %r13b
  test   %r13b,%sil
  je     L844
  cmp    0x28(%rsp),%edx
  mov    $0x1,%r12d
  movsd  (%r11),%xmm1
  cmovle 0x80(%rsp),%r12d
  mov    0x120(%rsp),%r13
  xor    %edi,%edi
  mov    0x10(%rsp),%rsi
  unpcklpd %xmm1,%xmm1
  lea    -0x8(%r13,%r10,1),%r13
  mov    %r12d,%r10d
  shr    %r10d
  shl    $0x4,%r10
  nopw   0x0(%rax,%rax,1)
L3725:
  movupd 0x0(%r13,%rdi,1),%xmm0
  movupd (%rsi,%rdi,1),%xmm4
  mulpd  %xmm1,%xmm0
  addpd  %xmm4,%xmm0
  movups %xmm0,(%rsi,%rdi,1)
  add    $0x10,%rdi
  cmp    %rdi,%r10
  jne    L3725
  mov    %r12d,%esi
  and    $0xfffffffe,%esi
  add    %esi,%edx
  add    %esi,%eax
  cmp    %r12d,%esi
  je     L4270
  add    $0x1,%eax
  movslq %edx,%rdx
  cltq
  lea    (%rbx,%rdx,8),%rdx
  movsd  0x0(%rbp,%rax,8),%xmm0
  mulsd  (%r11),%xmm0
  addsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  jmp    L4270
L226:
  lea    0x8(%r11),%r15
  jmp    L4270
L4263:
  mov    0x138(%rsp),%rax
  mov    0x390(%rsp),%rcx
  mov    %r8,%rdx
L717:
  movsd  (%rdx),%xmm1
  add    $0x8,%rax
  add    %r9,%rdx
  mulsd  %xmm0,%xmm1
  addsd  -0x8(%rax),%xmm1
  movsd  %xmm1,-0x8(%rax)
  cmp    %rcx,%rax
  jne    L717
  jmp    L2038
L3145:
  movl   $0x0,0xbc(%rsp)
  mov    0x480(%rsp),%r8d
  jmp    L975
L353:
  movapd %xmm14,%xmm0
  mov    %r8d,%esi
  mov    $0x1,%eax
  mov    %r10,0x30(%rsp)
  lea    D258(%rip),%rdi
  movsd  %xmm2,0x40(%rsp)
  movsd  %xmm15,0x28(%rsp)
  movsd  %xmm14,0x10(%rsp)
  call   <printf@plt>
  movslq 0x484(%rsp),%rax
  mov    0x1b0(%rsp),%rcx
  lea    D181(%rip),%rdi
  movsd  (%rcx,%rax,8),%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  mov    0x58(%rsp),%eax
  mov    0x30(%rsp),%r10
  mov    $0x1,%ecx
  movsd  0x10(%rsp),%xmm14
  movsd  0x28(%rsp),%xmm15
  lea    D372(%rip),%rdx
  test   %eax,%eax
  movsd  0x40(%rsp),%xmm2
  jle    L3007
  mov    %r10,0x48(%rsp)
  mov    %rbp,0x28(%rsp)
  mov    %r13,%rbp
  mov    %r12,%r13
  mov    %rdx,%r12
  mov    %rbx,0x30(%rsp)
  mov    %rcx,%rbx
  movsd  %xmm15,0x10(%rsp)
  movsd  %xmm14,0x40(%rsp)
  movsd  %xmm2,0x80(%rsp)
L1687:
  mov    0x210(%rsp),%rax
  mov    %r12,%rdi
  movsd  -0x8(%rax,%rbx,8),%xmm0
  addsd  -0x8(%rbp,%rbx,8),%xmm0
  mov    $0x1,%eax
  add    $0x1,%rbx
  call   <printf@plt>
  cmp    %ebx,0x58(%rsp)
  jge    L1687
  mov    %r13,%r12
  mov    0x30(%rsp),%rbx
  mov    %rbp,%r13
  movsd  0x10(%rsp),%xmm15
  movsd  0x40(%rsp),%xmm14
  mov    0x28(%rsp),%rbp
  movsd  0x80(%rsp),%xmm2
  mov    0x48(%rsp),%r10
L3007:
  mov    0x480(%rsp),%r8d
  jmp    L1153
L37:
  mov    $0x1,%r14d
  movapd %xmm2,%xmm9
  jmp    L664
L1628:
  movapd %xmm2,%xmm9
  jmp    L498
L2676:
  movapd %xmm2,%xmm1
  jmp    L3197
L759:
  mov    %eax,%r8d
  mov    0x2d8(%rsp),%eax
  mov    %eax,0x1ac(%rsp)
  jmp    L1650
L1436:
  movapd %xmm0,%xmm4
  jmp    L4820
L316:
  ucomisd %xmm1,%xmm2
  ja     L757
  sqrtsd %xmm4,%xmm4
L799:
  cmpl   $0xffffffff,0x1a8(%rsp)
  movsd  D357(%rip),%xmm0
  je     L459
L3086:
  movsd  0x128(%rsp),%xmm3
  mulsd  %xmm0,%xmm4
  minsd  %xmm4,%xmm3
  movsd  %xmm3,0x230(%rsp)
L346:
  movapd %xmm14,%xmm3
  maxsd  0x230(%rsp),%xmm3
  movsd  %xmm3,0x230(%rsp)
L598:
  movapd %xmm3,%xmm1
  mov    0x1ac(%rsp),%eax
  movl   $0x0,0x1a8(%rsp)
  mulsd  %xmm3,%xmm1
  mov    %eax,0x2d8(%rsp)
  movsd  %xmm1,0x488(%rsp)
  jmp    L3017
L2908:
  ucomisd %xmm3,%xmm2
  ja     L711
  sqrtsd %xmm3,%xmm3
  movapd %xmm3,%xmm14
L4101:
  mulsd  0x2a0(%rsp),%xmm14
  jmp    L4066
L237:
  addl   $0x1,0x2c0(%rsp)
  mov    0x2c0(%rsp),%eax
  cmp    $0x2,%eax
  jle    L2868
  mov    0x354(%rsp),%esi
  xor    %eax,%eax
  mov    %r15d,%edi
  mov    %r10,0xa8(%rsp)
  movsd  %xmm2,0x130(%rsp)
  movsd  %xmm14,0x80(%rsp)
  movsd  %xmm15,0x40(%rsp)
  movsd  %xmm3,0x30(%rsp)
  movsd  %xmm7,0x28(%rsp)
  movsd  %xmm10,0x10(%rsp)
  call   <imax@plt>
  movsd  0x10(%rsp),%xmm10
  movsd  0x28(%rsp),%xmm7
  mov    %eax,%ecx
  test   %eax,%eax
  mov    D275(%rip),%rax
  movsd  0x30(%rsp),%xmm3
  movsd  0x40(%rsp),%xmm15
  movsd  0x80(%rsp),%xmm14
  mov    0xa8(%rsp),%r10
  movq   %rax,%xmm13
  movsd  0x130(%rsp),%xmm2
  jle    L2868
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L4391
  cmp    %ecx,%eax
  mov    $0x1,%edx
  cmovg  %ecx,%eax
  mov    %eax,%esi
L3746:
  mov    0x68(%rsp),%rax
  movsd  -0x8(%rax,%rdx,8),%xmm0
  mov    0x138(%rsp),%rax
  movsd  %xmm0,-0x8(%rax,%rdx,8)
  mov    %edx,%eax
  cmp    %edx,%r15d
  jl     L639
  mov    0x60(%rsp),%rdi
  movsd  -0x8(%rdi,%rdx,8),%xmm0
  mov    0x188(%rsp),%rdi
  movsd  %xmm0,-0x8(%rdi,%rdx,8)
L639:
  cmp    %eax,0x354(%rsp)
  jl     L3423
  mov    0x120(%rsp),%rax
  movq   $0x0,-0x8(%rax,%rdx,8)
L3423:
  lea    0x1(%rdx),%eax
  add    $0x1,%rdx
  cmp    %edx,%esi
  jge    L3746
  cmp    %eax,%ecx
  jl     L3925
L3161:
  cltq
L1657:
  mov    %eax,%esi
  cmp    %eax,%r15d
  jl     L2808
  mov    0x88(%rsp),%rdi
  lea    (%r15,%rax,1),%edx
  movslq %edx,%rdx
  movsd  (%rdi,%rdx,8),%xmm0
  mov    0x188(%rsp),%rdi
  movsd  %xmm0,-0x8(%rdi,%rax,8)
L2808:
  cmp    %esi,0x354(%rsp)
  jl     L2384
  mov    0x120(%rsp),%rsi
  movq   $0x0,-0x8(%rsi,%rax,8)
L2384:
  add    $0x1,%rax
  cmp    %eax,%ecx
  jge    L1657
  jmp    L3925
L2370:
  movapd %xmm7,%xmm0
  addsd  %xmm7,%xmm0
  maxsd  0x128(%rsp),%xmm0
  movsd  %xmm0,0x128(%rsp)
  movapd %xmm0,%xmm4
  jmp    L581
L1244:
  mov    0x90(%rsp),%rsi
  movslq %r15d,%rdx
  mov    0x38(%rsp),%rcx
  pxor   %xmm2,%xmm2
  add    %rdx,%rax
  movapd %xmm2,%xmm15
  lea    (%rsi,%rax,8),%rdx
  mov    0x58(%rsp),%esi
  sub    $0x8,%rcx
  mov    %rbx,%rax
  lea    (%rbx,%rsi,8),%rsi
L1768:
  movsd  (%rdx),%xmm0
  add    $0x8,%rax
  add    %rcx,%rdx
  movsd  %xmm0,-0x8(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  cmp    %rsi,%rax
  jne    L1768
  jmp    L1712
L3736:
  mov    0x58(%rsp),%eax
  pxor   %xmm2,%xmm2
  add    0x90(%rsp),%rdx
  movapd %xmm2,%xmm15
  lea    0x1(%rax),%ecx
  mov    $0x1,%eax
L1568:
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbx,%rax,8)
  mulsd  %xmm0,%xmm0
  add    $0x1,%rax
  addsd  %xmm0,%xmm15
  cmp    %rcx,%rax
  jne    L1568
  jmp    L1712
L2401:
  mov    %rax,0x80(%rsp)
  mov    0x238(%rsp),%rax
  xor    %r9d,%r9d
  mov    $0x1,%r8d
  mov    0x90(%rsp),%rcx
  mov    %rbp,0x150(%rsp)
  add    %r11,%rax
  mov    %r13,0x1c0(%rsp)
  mov    0xbc(%rsp),%edi
  shl    $0x3,%rax
  mov    %r14,0x1e0(%rsp)
  mov    0xd0(%rsp),%rdx
  lea    (%rcx,%rax,1),%rsi
  sub    0x38(%rsp),%rax
  mov    %rbx,0x168(%rsp)
  mov    %rsi,0xa8(%rsp)
  mov    0xa0(%rsp),%rsi
  mov    %rax,0x28(%rsp)
  mov    0x1f0(%rsp),%rbx
  add    %rax,%rsi
  mov    0x120(%rsp),%rax
  mov    %r11,0x148(%rsp)
  mov    %rcx,%r11
  mov    %rsi,0x40(%rsp)
  mov    0x170(%rsp),%rsi
  add    $0x8,%rax
  mov    %r10,0x228(%rsp)
  xor    %r10d,%r10d
  mov    %rax,0x130(%rsp)
L3311:
  mov    0xa8(%rsp),%rax
  movslq %r10d,%r13
  mov    %r8d,%ebp
  lea    -0x1(%r13,%r8,1),%r14
  movsd  (%rax,%r9,1),%xmm1
  mov    0x120(%rsp),%rax
  lea    (%rax,%r13,8),%rcx
  lea    (%rax,%r14,8),%r14
  mulsd  %xmm4,%xmm1
  mov    %rcx,0x30(%rsp)
  xor    %ecx,%ecx
  test   %r15d,%r15d
  mov    0x30(%rsp),%rax
  cmovs  %r9,%rcx
  add    0x28(%rsp),%rcx
  add    0xa0(%rsp),%rcx
  cmp    %r14,%rcx
  seta   %r14b
  xor    %ecx,%ecx
  test   %r15d,%r15d
  cmovns %r9,%rcx
  add    0x28(%rsp),%rcx
  add    0xa0(%rsp),%rcx
  cmp    %rcx,%rax
  seta   %cl
  or     %r14b,%cl
  je     L1334
  lea    -0x1(%r8),%ecx
  cmp    $0x2,%ecx
  jbe    L1334
  mov    %r8d,%ecx
  movapd %xmm1,%xmm5
  shr    %ecx
  unpcklpd %xmm5,%xmm5
  sub    $0x1,%ecx
  shl    $0x4,%rcx
  lea    0x10(%rax,%rcx,1),%r13
  mov    0x40(%rsp),%rcx
  xchg   %ax,%ax
L4530:
  movsd  (%rcx),%xmm0
  movupd (%rax),%xmm11
  add    $0x10,%rax
  movhpd (%rcx,%rdx,1),%xmm0
  add    %rsi,%rcx
  mulpd  %xmm5,%xmm0
  addpd  %xmm11,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %r13,%rax
  jne    L4530
  mov    %ebp,%r13d
  mov    %ebp,%eax
  and    $0xfffffffe,%r13d
  or     $0x1,%eax
  lea    (%r10,%r13,1),%ecx
  cmp    %ebp,%r13d
  je     L4757
  imul   %r15d,%eax
  add    $0x1,%ecx
  movslq %ecx,%rcx
  lea    (%rbx,%rcx,8),%rcx
  add    %edi,%eax
  cltq
  movsd  (%r11,%rax,8),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  (%rcx),%xmm0
  movsd  %xmm0,(%rcx)
L4757:
  add    %ebp,%r10d
  add    $0x1,%r8
  add    %rdx,%r9
  cmp    0x80(%rsp),%r8
  jne    L3311
  mov    0xcc(%rsp),%edi
  mov    0x148(%rsp),%r11
  mov    0x150(%rsp),%rbp
  mov    0x168(%rsp),%rbx
  mov    0x1c0(%rsp),%r13
  mov    0x1e0(%rsp),%r14
  mov    0x228(%rsp),%r10
  test   %edi,%edi
  jle    L2591
L3931:
  test   %r15d,%r15d
  jle    L2558
  mov    %r15d,%ecx
  jmp    L45
L1334:
  mov    0x130(%rsp),%r14
  lea    -0x1(%r13,%r8,1),%rcx
  mov    0x30(%rsp),%rax
  lea    (%r14,%rcx,8),%r13
  mov    0x40(%rsp),%rcx
L2451:
  movsd  (%rcx),%xmm0
  add    $0x8,%rax
  add    %rdx,%rcx
  mulsd  %xmm1,%xmm0
  addsd  -0x8(%rax),%xmm0
  movsd  %xmm0,-0x8(%rax)
  cmp    %rax,%r13
  jne    L2451
  jmp    L4757
L2975:
  mov    0x58(%rsp),%ecx
  xor    %eax,%eax
L3119:
  mov    0x210(%rsp),%rsi
  mov    0x220(%rsp),%rdi
  mov    0x240(%rsp),%r8
  movsd  (%rsi,%rax,8),%xmm1
  addsd  (%rbx,%rax,8),%xmm1
  mov    0x268(%rsp),%rsi
  movsd  %xmm1,(%rdi,%rax,8)
  movsd  (%rsi,%rax,8),%xmm0
  maxsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movsd  (%r8,%rax,8),%xmm1
  mov    0x190(%rsp),%r8
  minsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdi,%rax,8)
  movsd  (%rbx,%rax,8),%xmm0
  ucomisd (%r8,%rax,8),%xmm0
  jp     L4214
  jne    L4214
  movsd  (%rsi,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  movsd  (%rbx,%rax,8),%xmm0
L4214:
  mov    0x178(%rsp),%rsi
  ucomisd (%rsi,%rax,8),%xmm0
  jp     L3783
  jne    L3783
  mov    0x240(%rsp),%rsi
  movsd  (%rsi,%rax,8),%xmm0
  mov    0x220(%rsp),%rsi
  movsd  %xmm0,(%rsi,%rax,8)
L3783:
  add    $0x1,%rax
  cmp    %rax,%rcx
  jne    L3119
  jmp    L4724
L2558:
  mov    0x1b0(%rsp),%rax
  movsd  0x198(%rsp),%xmm4
  movsd  %xmm4,(%rax,%r11,8)
  mov    0x58(%rsp),%eax
  test   %eax,%eax
  jle    L4533
L40:
  mov    0x238(%rsp),%rax
  mov    0x90(%rsp),%rcx
  mov    0x78(%rsp),%rsi
  mov    0x100(%rsp),%rdi
  add    %r11,%rax
  lea    (%rcx,%rax,8),%rcx
  mov    0x360(%rsp),%rax
  add    %r11,%rax
  lea    (%rsi,%rax,8),%rdx
  mov    0xd0(%rsp),%rsi
  mov    $0x1,%eax
L4320:
  movsd  -0x8(%rdi,%rax,8),%xmm0
  movsd  %xmm0,(%rcx)
  movsd  (%rdx),%xmm0
  add    %rsi,%rcx
  add    %rbp,%rdx
  movsd  %xmm0,-0x8(%r10,%rax,8)
  add    $0x1,%rax
  cmp    %eax,0x58(%rsp)
  jge    L4320
  test   %r15d,%r15d
  jle    L31
L102:
  cmp    $0x1,%r15d
  je     L4666
  mov    0x238(%rsp),%rax
  mov    $0x1,%ecx
  mov    0xb0(%rsp),%rsi
  mov    %rbx,0xa8(%rsp)
  sub    %r11,%rcx
  mov    %r15d,0x10(%rsp)
  xor    %r8d,%r8d
  mov    $0x1,%edi
  add    %r11,%rax
  mov    %rbp,0x80(%rsp)
  mov    0xa0(%rsp),%r9
  lea    (%rsi,%rax,8),%r11
  mov    0xcc(%rsp),%eax
  mov    %r13,0x28(%rsp)
  mov    %r11,0x30(%rsp)
  mov    0xf8(%rsp),%rbp
  mov    %r14,0x130(%rsp)
  lea    0x1(%rax),%esi
  mov    0x3e0(%rsp),%r11
  mov    %r12,0x148(%rsp)
  mov    0xd0(%rsp),%rax
  mov    0x170(%rsp),%r15
  mov    0x298(%rsp),%r13d
  mov    0x90(%rsp),%r14
  mov    0x118(%rsp),%r12
L1207:
  mov    0x30(%rsp),%rdx
  movapd %xmm2,%xmm4
  mov    $0x1,%ebx
  cmpl   $0x0,0xcc(%rsp)
  jle    L806
  xchg   %ax,%ax
L219:
  movsd  (%rdx),%xmm0
  mulsd  (%rdx,%rcx,8),%xmm0
  add    $0x1,%ebx
  add    %rax,%rdx
  addsd  %xmm0,%xmm4
  cmp    %esi,%ebx
  jne    L219
L806:
  cmpl   $0x0,0x58(%rsp)
  mov    0x28(%rsp),%rdx
  mov    %r9,%rbx
  movapd %xmm2,%xmm0
  jle    L1455
  xchg   %ax,%ax
L2551:
  movsd  (%rbx),%xmm1
  mulsd  (%rdx),%xmm1
  add    $0x8,%rdx
  add    %rax,%rbx
  addsd  %xmm1,%xmm0
  cmp    %r12,%rdx
  jne    L2551
  mov    0x2e8(%rsp),%rbx
  mulsd  %xmm4,%xmm0
  lea    (%r8,%rbx,1),%rdx
  add    0xa0(%rsp),%rdx
  cmp    %rdx,0x3d8(%rsp)
  mov    0x2e0(%rsp),%rdx
  setb   %bl
  add    %r8,%rdx
  add    0xa0(%rsp),%rdx
  cmp    %rdx,%r10
  seta   %dl
  or     %bl,%dl
  je     L2041
  mov    0xa0(%rsp),%rbx
  cmpl   $0x2,0x29c(%rsp)
  movapd %xmm0,%xmm4
  mov    %r10,%rdx
  seta   0x40(%rsp)
  unpcklpd %xmm4,%xmm4
  add    %r8,%rbx
  cmpb   $0x0,0x40(%rsp)
  je     L2041
L1284:
  movsd  (%rbx),%xmm1
  movupd (%rdx),%xmm5
  add    $0x10,%rdx
  movhpd (%rbx,%rax,1),%xmm1
  add    %r15,%rbx
  mulpd  %xmm4,%xmm1
  addpd  %xmm5,%xmm1
  movups %xmm1,-0x10(%rdx)
  cmp    %rdx,%r11
  jne    L1284
  mov    0x5c(%rsp),%edx
  cmp    %edx,0x58(%rsp)
  je     L1455
  lea    (%rdi,%r13,1),%edx
  movslq %edx,%rdx
  mulsd  (%r14,%rdx,8),%xmm0
  addsd  0x0(%rbp),%xmm0
  movsd  %xmm0,0x0(%rbp)
L1455:
  add    $0x1,%edi
  add    $0x8,%r9
  add    $0x8,%r8
  add    $0x1,%rcx
  cmp    %edi,0x10(%rsp)
  jge    L1207
  mov    0x58(%rsp),%eax
  mov    0x80(%rsp),%rbp
  mov    0xa8(%rsp),%rbx
  mov    0x10(%rsp),%r15d
  mov    0x28(%rsp),%r13
  mov    0x130(%rsp),%r14
  mov    0x148(%rsp),%r12
  test   %eax,%eax
  jg     L31
L92:
  comisd 0x198(%rsp),%xmm10
  jbe    L1405
  mov    0xbc(%rsp),%eax
  movapd %xmm2,%xmm15
  mov    %eax,0x484(%rsp)
  jmp    L869
L2041:
  mov    %r9,%rbx
  mov    %r10,%rdx
L4116:
  movsd  (%rbx),%xmm1
  add    $0x8,%rdx
  add    %rax,%rbx
  mulsd  %xmm0,%xmm1
  addsd  -0x8(%rdx),%xmm1
  movsd  %xmm1,-0x8(%rdx)
  cmp    0x330(%rsp),%rdx
  jne    L4116
  jmp    L1455
L3327:
  mov    0x10(%rsp),%rax
  mov    0x90(%rsp),%rcx
  mov    0x78(%rsp),%rdx
  mov    0x100(%rsp),%rsi
  add    %rax,%rcx
  add    %rax,%rdx
  mov    $0x1,%eax
L2123:
  movsd  -0x8(%rsi,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%r10,%rax,8)
  add    $0x1,%rax
  cmp    %eax,0x58(%rsp)
  jge    L2123
  jmp    L4666
L111:
  mov    $0x1,%r14d
  movapd %xmm2,%xmm1
  jmp    L3271
L152:
  movapd %xmm2,%xmm1
  jmp    L2662
L2284:
  lea    D229(%rip),%rdi
  call   <puts@plt>
L2334:
  movslq 0x484(%rsp),%rax
  mov    0x1b0(%rsp),%rcx
  movsd  0x2c8(%rsp),%xmm3
  lea    (%rcx,%rax,8),%rdx
  movsd  (%rdx),%xmm0
  comisd %xmm0,%xmm3
  jae    L4222
L1965:
  movsd  0x198(%rsp),%xmm0
  jmp    L1461
L3035:
  mov    0xcc(%rsp),%edx
  test   %edx,%edx
  jg     L3931
  mov    0x1b0(%rsp),%rax
  movsd  0x198(%rsp),%xmm4
  movsd  %xmm4,(%rax,%r11,8)
L4533:
  test   %r15d,%r15d
  jle    L92
  jmp    L102
L2855:
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm15
  jmp    L1712
L560:
  mov    0x480(%rsp),%esi
  lea    D68(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    0x58(%rsp),%esi
  mov    D275(%rip),%rax
  movsd  0x10(%rsp),%xmm7
  movsd  0x28(%rsp),%xmm15
  test   %esi,%esi
  mov    0x40(%rsp),%r10
  movq   %rax,%xmm13
  movsd  0x30(%rsp),%xmm14
  movsd  0x48(%rsp),%xmm2
  jle    L2184
  mov    $0x1,%ecx
  lea    D372(%rip),%rdx
L2621:
  mov    0x220(%rsp),%rax
  mov    %rdx,%rdi
  mov    %rcx,0x28(%rsp)
  mov    %r10,0x80(%rsp)
  movsd  -0x8(%rax,%rcx,8),%xmm0
  mov    $0x1,%eax
  mov    %rdx,0x10(%rsp)
  movsd  %xmm2,0xa8(%rsp)
  movsd  %xmm14,0x48(%rsp)
  movsd  %xmm15,0x40(%rsp)
  movsd  %xmm7,0x30(%rsp)
  call   <printf@plt>
  mov    0x28(%rsp),%rcx
  mov    0x10(%rsp),%rdx
  mov    D275(%rip),%rax
  movsd  0x30(%rsp),%xmm7
  add    $0x1,%rcx
  cmp    %ecx,0x58(%rsp)
  movsd  0x40(%rsp),%xmm15
  movsd  0x48(%rsp),%xmm14
  mov    0x80(%rsp),%r10
  movq   %rax,%xmm13
  movsd  0xa8(%rsp),%xmm2
  jge    L2621
  movslq 0x484(%rsp),%rax
  cmpl   $0xffffffff,0x1a8(%rsp)
  lea    0x0(,%rax,8),%rcx
  mov    %rcx,0x228(%rsp)
  mov    0x1b0(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm10
  jne    L294
  movsd  0x198(%rsp),%xmm3
  mov    %rcx,%rdx
  mov    %r13,%rbx
  add    0x228(%rsp),%rdx
  comisd (%rdx),%xmm3
  jae    L4337
  jmp    L1965
  nopw   0x0(%rax,%rax,1)
L3090:
  movapd %xmm2,%xmm3
  jmp    L4477
L652:
  movsd  %xmm14,0x28(%rsp)
  mov    %r13,%rcx
  mov    %r15d,%esi
  movsd  %xmm2,0x30(%rsp)
  movsd  %xmm7,0x18(%rsp)
  push   0x368(%rsp)
  push   0x250(%rsp)
  push   %r10
  lea    0x4b0(%rsp),%rax
  mov    %r10,0x28(%rsp)
  push   %rax
  lea    0x4b0(%rsp),%rax
  push   %rax
  push   0x200(%rsp)
  push   0x130(%rsp)
  mov    0xf4(%rsp),%eax
  push   %rax
  mov    0x220(%rsp),%eax
  push   %rax
  push   0x1c0(%rsp)
  push   0x1e0(%rsp)
  mov    0x5a8(%rsp),%eax
  push   %rax
  mov    0x170(%rsp),%r9
  movsd  0x290(%rsp),%xmm0
  mov    0x80(%rsp),%r8
  mov    0x100(%rsp),%rdx
  mov    0xb8(%rsp),%edi
  call   <altmov_@plt>
  mov    D275(%rip),%rax
  add    $0x60,%rsp
  movsd  0x30(%rsp),%xmm2
  movsd  D337(%rip),%xmm8
  mov    0x10(%rsp),%r10
  movapd %xmm2,%xmm15
  movq   %rax,%xmm13
  movsd  0x18(%rsp),%xmm7
  movsd  0x28(%rsp),%xmm14
  jmp    L4544
L202:
  mov    0x138(%rsp),%rax
  mov    %r8,%rdx
L4231:
  movsd  (%rdx),%xmm1
  add    $0x8,%rax
  add    0xd0(%rsp),%rdx
  mulsd  %xmm0,%xmm1
  addsd  -0x8(%rax),%xmm1
  movsd  %xmm1,-0x8(%rax)
  cmp    0x390(%rsp),%rax
  jne    L4231
  jmp    L3923
L459:
  movsd  0x128(%rsp),%xmm3
  movapd %xmm4,%xmm1
  mulsd  %xmm13,%xmm1
  mulsd  %xmm0,%xmm3
  minsd  %xmm3,%xmm1
  movsd  %xmm1,0x128(%rsp)
  movapd %xmm1,%xmm3
  movsd  D39(%rip),%xmm1
  mulsd  %xmm14,%xmm1
  comisd %xmm3,%xmm1
  jb     L3086
  movsd  %xmm14,0x128(%rsp)
  mulsd  %xmm0,%xmm4
  movsd  %xmm4,0x230(%rsp)
  comisd %xmm14,%xmm4
  jbe    L346
  movsd  %xmm14,0x230(%rsp)
  movapd %xmm14,%xmm3
  jmp    L598
L124:
  mov    $0x1,%eax
L704:
  mov    0x100(%rsp),%rcx
  movsd  -0x8(%rcx,%rax,8),%xmm0
  subsd  -0x8(%r13,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%r14,%rax,8)
  add    $0x1,%rax
  cmp    %eax,0x58(%rsp)
  jge    L704
  jmp    L4165
L1322:
  mov    $0x1,%eax
L1081:
  mov    0x308(%rsp),%rcx
  movsd  -0x8(%rcx,%rax,8),%xmm0
  subsd  (%rdx),%xmm0
  movsd  %xmm0,-0x8(%r12,%rax,8)
  movq   $0x0,-0x8(%r10,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r15d
  jge    L1081
  jmp    L2670
L2566:
  mov    0x90(%rsp),%rcx
  add    0x238(%rsp),%rax
  lea    (%rcx,%rax,8),%rcx
  mov    %r13,%rax
L4176:
  movsd  (%rcx),%xmm0
  add    $0x8,%rax
  add    0xd0(%rsp),%rcx
  movsd  %xmm0,-0x8(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm15
  cmp    0x118(%rsp),%rax
  jne    L4176
  jmp    L122
L2926:
  mov    $0x1,%eax
  jmp    L50
L2591:
  mov    0x1b0(%rsp),%rax
  movsd  0x198(%rsp),%xmm4
  movsd  %xmm4,(%rax,%r11,8)
  jmp    L3082
L1394:
  movl   $0x0,0xbc(%rsp)
  jmp    L2003
L739:
  mov    0x158(%rsp),%rcx
  add    0x90(%rsp),%rax
  movapd %xmm2,%xmm15
  lea    0x2(%rcx),%rsi
  mov    $0x1,%ecx
L2449:
  movsd  (%rax,%rcx,8),%xmm0
  movsd  %xmm0,-0x8(%r13,%rcx,8)
  mulsd  %xmm0,%xmm0
  add    $0x1,%rcx
  addsd  %xmm0,%xmm15
  cmp    %rcx,%rsi
  jne    L2449
  jmp    L122
L2184:
  movslq 0x484(%rsp),%rax
  cmpl   $0xffffffff,0x1a8(%rsp)
  lea    0x0(,%rax,8),%rcx
  mov    %rcx,0x228(%rsp)
  mov    0x1b0(%rsp),%rcx
  movsd  (%rcx,%rax,8),%xmm10
  jne    L3090
  mov    0x1b0(%rsp),%rbx
  movsd  0x198(%rsp),%xmm3
  movsd  (%rbx,%rax,8),%xmm0
  comisd %xmm0,%xmm3
  jae    L1461
  jmp    L1965
  nopw   0x0(%rax,%rax,1)
L4391:
  mov    $0x1,%eax
  jmp    L3161
L3094:
  call   <__stack_chk_fail@plt>
  nop
L1801:
  movapd %xmm2,%xmm4
  jmp    L4011
L4271:
  mov    0x1a8(%rsp),%ecx
  test   %ecx,%ecx
  je     L1369
L3262:
  mov    0xcc(%rsp),%r9d
  test   %r9d,%r9d
  jg     L4038
  jmp    L842
L4307:
  movapd %xmm2,%xmm15
  jmp    L3182
L3966:
  mov    0x500(%rsp),%eax
  mov    0x4f8(%rsp),%esi
  mov    %r13,%rbx
  mov    %eax,0x480(%rsp)
  test   %esi,%esi
  jg     L2284
  lea    0x0(,%rdx,8),%rax
  mov    %rax,0x228(%rsp)
  jmp    L4690
L4317:
  mov    0x484(%rsp),%eax
  mov    %r13,%rbx
  mov    %eax,0x1e0(%rsp)
L1425:
  movslq 0x1e0(%rsp),%rax
  mov    0x1b0(%rsp),%rcx
  movsd  0x2c8(%rsp),%xmm3
  lea    (%rcx,%rax,8),%rdx
  movsd  (%rdx),%xmm0
  comisd %xmm0,%xmm3
  jae    L4222
  movsd  0x198(%rsp),%xmm0
  jmp    L2060
L711:
  movsd  0x270(%rsp),%xmm0
  mov    %r10,0x30(%rsp)
  mov    %r8d,0x10(%rsp)
  movsd  %xmm2,0x40(%rsp)
  movsd  %xmm15,0x28(%rsp)
  call   <sqrt@plt>
  movsd  0x40(%rsp),%xmm2
  mov    0x30(%rsp),%r10
  movsd  0x28(%rsp),%xmm15
  mov    0x10(%rsp),%r8d
  movapd %xmm0,%xmm14
  jmp    L4101
L757:
  movapd %xmm1,%xmm0
  mov    %r10,0x30(%rsp)
  movsd  %xmm2,0x40(%rsp)
  movsd  %xmm14,0x28(%rsp)
  movsd  %xmm15,0x18(%rsp)
  movsd  %xmm7,0x10(%rsp)
  call   <sqrt@plt>
  movsd  0x40(%rsp),%xmm2
  mov    D275(%rip),%rax
  mov    0x30(%rsp),%r10
  movsd  0x10(%rsp),%xmm7
  movapd %xmm0,%xmm4
  movsd  0x28(%rsp),%xmm14
  movsd  0x18(%rsp),%xmm15
  movq   %rax,%xmm13
  jmp    L799
  nopl   0x0(%rax)
L474:
  movsd  %xmm0,0x2c8(%rsp)
  mov    %r13,%rbx
  jmp    L1425
L2288:
  movapd %xmm1,%xmm0
  mov    %r10,0x40(%rsp)
  movsd  %xmm2,0x48(%rsp)
  movsd  %xmm14,0x30(%rsp)
  movsd  %xmm15,0x28(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <sqrt@plt>
  movsd  0x48(%rsp),%xmm2
  mov    D275(%rip),%rax
  mov    0x40(%rsp),%r10
  movsd  0x10(%rsp),%xmm1
  movapd %xmm0,%xmm7
  movsd  0x30(%rsp),%xmm14
  movsd  0x28(%rsp),%xmm15
  movq   %rax,%xmm13
  jmp    L1428
L106:
  mov    %r10,%rax
  mov    %edx,0x30(%rsp)
  mov    %rbx,%r10
  mov    %r13,%rbx
  mov    %rbp,%r13
  mov    %r14,%rbp
  mov    %r12,%r14
  mov    %rax,%r12
  jmp    L3293
L2381:
  mov    0x4f8(%rsp),%eax
  mov    %r13,%rbx
  test   %eax,%eax
  jle    L4690
  lea    D361(%rip),%rdi
  call   <puts@plt>
  jmp    L2334
```

tool_calls: name: retrieve_data
arguments: data_tag: D275
data_type: f32[4]
name: retrieve_data
arguments: data_tag: D240
data_type: f64
name: retrieve_data
arguments: data_tag: D1
data_type: f32[2]
name: retrieve_data
arguments: data_tag: D351
data_type: f32[4]
name: retrieve_data
arguments: data_tag: D390
data_type: qword[2]
name: retrieve_data
arguments: data_tag: D357
data_type: byte[8]
name: retrieve_data
arguments: data_tag: D39
data_type: f64
name: retrieve_data
arguments: data_tag: D337
data_type: f64
name: retrieve_data
arguments: data_tag: D210
data_type: f64
name: retrieve_data
arguments: data_tag: D61
data_type: f64
name: retrieve_data
arguments: data_tag: D269
data_type: byte[8]
name: retrieve_data
arguments: data_tag: D234
data_type: byte[8]
name: retrieve_data
arguments: data_tag: D394
data_type: string
name: retrieve_data
arguments: data_tag: D181
data_type: string
name: retrieve_data
arguments: data_tag: D372
data_type: string
name: retrieve_data
arguments: data_tag: D109
data_type: string
name: retrieve_data
arguments: data_tag: D161
data_type: f32[2]
name: retrieve_data
arguments: data_tag: D304
data_type: f32[2]
name: retrieve_data
arguments: data_tag: D258
data_type: string
name: retrieve_data
arguments: data_tag: D229
data_type: string
name: retrieve_data
arguments: data_tag: D68
data_type: string
name: retrieve_data
arguments: data_tag: D361
data_type: string

tool: {"D275": [0.0,1.75,0.0,1.75]}

tool: D240: 10

tool: {"D1": [0.0,1.5]}

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

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

tool: {"D357": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0x3f]}

tool: D39: 1.5

tool: D337: 1

tool: D210: 16

tool: D61: 250

tool: {"D269": [0xfc,0xa9,0xf1,0xd2,0x4d,0x62,0x50,0x3f]}

tool: {"D234": [0x66,0x66,0x66,0x66,0x66,0x66,0xe6,0x3f]}

tool: D394: At the return from BOBYQA
Number of function values = %d


tool: D181: Least value of F = %g
    The corresponding X is:


tool: D372: 	%g


tool: D109: Return from BOBYQA because of much cancellation in a denominator.

tool: {"D161": [0.0,1.625]}

tool: {"D304": [0.0,-1.75]}

tool: D258: New RHO = %g, Number of function values = %d

tool: D229: Return from BOBYQA because CALFUN has been called MAXFUN times.

tool: D68: Function number %d    F = %g
    The corresponding X is:


tool: D361: Return from BOBYQA because a trust region step has failed to reduce Q.

assistant: ```c
void bobyqb_(int n, int npt, double *x, double *xl, double *xu, double (*func)(void *data, int n, const double *x), void *data, double rhobeg, double rhoend, int iprint, int maxfun, double *xbase, double *xpt, double *fval, double *xopt, double *gopt, double *hq, double *pq, double *bmat, double *zmat, int ndim, double *sl, double *su, double *xnew, double *xalt, double *d__, double *vlag, double *w) {
  int xpt_dim1, xpt_offset, bmat_dim1, bmat_offset, zmat_dim1, zmat_offset, i__1, i__2, i__3;
  double d__1, d__2, d__3, d__4;
  double sqrt(double);
  double f;
  int i__, j, k, ih, nf, jj, nh, ip, jp;
  double dx;
  int np;
  double den, one, ten, dsq, rho, sum, two, diff, half, beta, gisq;
  int knew;
  double temp, suma, sumb, bsum, fopt;
  int kopt, nptm;
  double zero, curv;
  int ksav;
  double gqsq, dist, sumw, sumz, diffa, diffb, diffc, hdiag;
  int kbase;
  double alpha, delta, adelt, denom, fsave, bdtol, delsq;
  int nresc, nfsav;
  double ratio, dnorm, vquad, pqold, tenth;
  int itest;
  double sumpq, scaden;
  double errbig, cauchy, fracsq, biglsq, densav;
  extern void update_(int, int, double *, double *, int, double *, double, double, int, double *);
  double bdtest;
  extern void rescue_(int n, int npt, double *xl, double *xu, double (*func)(void *data, int n, const double *x), void *data, int iprint, int maxfun, double *xbase, double *xpt, double *fval, double *xopt, double *gopt, double *hq, double *pq, double *bmat, double *zmat, int ndim, double *sl, double *su, int *nf, double delta, int *kopt, double *vlag, double *ptsaux, double *ptsid, double *w);
  extern void prelim_(int n, int npt, double *x, double *xl, double *xu, double (*func)(void *data, int n, const double *x), void *data, double rhobeg, int iprint, int maxfun, double *xbase, double *xpt, double *fval, double *gopt, double *hq, double *pq, double *bmat, double *zmat, int ndim, double *sl, double *su, int *nf, int *kopt);
  double crvmin, frhosq;
  extern void altmov_(int, int, double *, double *, double *, double *, int, double *, double *, int, int, double, double *, double *, double *, double *, double *, double *, double *);
  double distsq;
  extern void trsbox_(int, int, double *, double *, double *, double *, double *, double *, double *, double, double *, double *, double *, double *, double *, double *, double *, double *, double *);
  int ntrits;
  double xoptsq;
  zmat_dim1 = npt;
  zmat_offset = 1 + zmat_dim1;
  zmat -= zmat_offset;
  xpt_dim1 = npt;
  xpt_offset = 1 + xpt_dim1;
  xpt -= xpt_offset;
  --x;
  --xl;
  --xu;
  --xbase;
  --fval;
  --xopt;
  --gopt;
  --hq;
  --pq;
  bmat_dim1 = ndim;
  bmat_offset = 1 + bmat_dim1;
  bmat -= bmat_offset;
  --sl;
  --su;
  --xnew;
  --xalt;
  --d__;
  --vlag;
  --w;
  half = .5;
  one = 1.;
  ten = 10.;
  tenth = .1;
  two = 2.;
  zero = 0.;
  np = n + 1;
  nptm = npt - np;
  nh = n * np / 2;
  prelim_(n, npt, &x[1], &xl[1], &xu[1], func, data, rhobeg, iprint, maxfun, &xbase[1], &xpt[xpt_offset], &fval[1], &gopt[1], &hq[1], &pq[1], &bmat[bmat_offset], &zmat[zmat_offset], ndim, &sl[1], &su[1], &nf, &kopt);
  xoptsq = zero;
  for (i__ = 1; i__ <= n; ++i__) {
    xopt[i__] = xpt[kopt + i__ * xpt_dim1];
    d__1 = xopt[i__];
    xoptsq += d__1 * d__1;
  }
  fsave = fval[1];
  if (nf < npt) {
    if (iprint > 0) {
      printf("Return from BOBYQA because CALFUN has been called MAXFUN times.\n");
    }
    goto L720;
  }
  kbase = 1;
  rho = rhobeg;
  delta = rho;
  nresc = nf;
  ntrits = 0;
  diffa = zero;
  diffb = zero;
  itest = 0;
  nfsav = nf;
L20:
  if (kopt != kbase) {
    ih = 0;
    i__1 = n;
    for (j = 1; j <= i__1; ++j) {
      i__2 = j;
      for (i__ = 1; i__ <= i__2; ++i__) {
        ++ih;
        if (i__ < j) {
          gopt[j] += hq[ih] * xopt[i__];
        }
        gopt[i__] += hq[ih] * xopt[j];
      }
    }
    if (nf > npt) {
      i__2 = npt;
      for (k = 1; k <= i__2; ++k) {
        temp = zero;
        i__1 = n;
        for (j = 1; j <= i__1; ++j) {
          temp += xpt[k + j * xpt_dim1] * xopt[j];
        }
        temp = pq[k] * temp;
        i__1 = n;
        for (i__ = 1; i__ <= i__1; ++i__) {
          gopt[i__] += temp * xpt[k + i__ * xpt_dim1];
        }
      }
    }
  }
L60:
  trsbox_(n, npt, &xpt[xpt_offset], &xopt[1], &gopt[1], &hq[1], &pq[1], &sl[1], &su[1], delta, &xnew[1], &d__[1], &w[1], &w[np], &w[np + n], &w[np + (n << 1)], &w[np + n * 3], &dsq, &crvmin);
  dnorm = sqrt(dsq);
  if (delta < dnorm) {
    dnorm = delta;
  }
  if (dnorm < half * rho) {
    ntrits = -1;
    distsq = (ten * rho) * (ten * rho);
    if (nf <= nfsav + 2) {
      goto L650;
    }
    errbig = diffa;
    if (diffb > errbig) {
      errbig = diffb;
    }
    if (diffc > errbig) {
      errbig = diffc;
    }
    frhosq = rho * .125 * rho;
    if (crvmin > zero && errbig > frhosq * crvmin) {
      goto L650;
    }
    bdtol = errbig / rho;
    i__1 = n;
    for (j = 1; j <= i__1; ++j) {
      bdtest = bdtol;
      if (xnew[j] == sl[j]) {
        bdtest = w[j];
      }
      if (xnew[j] == su[j]) {
        bdtest = -w[j];
      }
      if (bdtest < bdtol) {
        curv = hq[(j + j * j) / 2];
        i__2 = npt;
        for (k = 1; k <= i__2; ++k) {
          curv += pq[k] * (xpt[k + j * xpt_dim1] * xpt[k + j * xpt_dim1]);
        }
        bdtest += half * curv * rho;
        if (bdtest < bdtol) {
          goto L650;
        }
      }
    }
    goto L680;
  }
  ++ntrits;
L90:
  if (dsq <= xoptsq * .001) {
    fracsq = xoptsq * .25;
    sumpq = zero;
    for (k = 1; k <= npt; ++k) {
      sumpq += pq[k];
      sum = -half * xoptsq;
      for (i__ = 1; i__ <= n; ++i__) {
        sum += xpt[k + i__ * xpt_dim1] * xopt[i__];
      }
      w[npt + k] = sum;
      temp = fracsq - half * sum;
      for (i__ = 1; i__ <= n; ++i__) {
        w[i__] = bmat[k + i__ * bmat_dim1];
        vlag[i__] = sum * xpt[k + i__ * xpt_dim1] + temp * xopt[i__];
        ip = npt + i__;
        for (j = 1; j <= i__; ++j) {
          bmat[ip + j * bmat_dim1] = bmat[ip + j * bmat_dim1] + w[i__] * vlag[j] + vlag[i__] * w[j];
        }
      }
    }
    for (jj = 1; jj <= nptm; ++jj) {
      sumz = zero;
      sumw = zero;
      i__2 = npt;
      for (k = 1; k <= i__2; ++k) {
        sumz += zmat[k + jj * zmat_dim1];
        vlag[k] = w[npt + k] * zmat[k + jj * zmat_dim1];
        sumw += vlag[k];
      }
      for (j = 1; j <= n; ++j) {
        sum = (fracsq * sumz - half * sumw) * xopt[j];
        for (k = 1; k <= npt; ++k) {
          sum += vlag[k] * xpt[k + j * xpt_dim1];
        }
        w[j] = sum;
        for (k = 1; k <= npt; ++k) {
          bmat[k + j * bmat_dim1] += sum * zmat[k + jj * zmat_dim1];
        }
      }
      for (i__ = 1; i__ <= n; ++i__) {
        ip = i__ + npt;
        temp = w[i__];
        for (j = 1; j <= i__; ++j) {
          bmat[ip + j * bmat_dim1] += temp * w[j];
        }
      }
    }
    ih = 0;
    for (j = 1; j <= n; ++j) {
      w[j] = -half * sumpq * xopt[j];
      i__1 = npt;
      for (k = 1; k <= i__1; ++k) {
        w[j] += pq[k] * xpt[k + j * xpt_dim1];
        xpt[k + j * xpt_dim1] -= xopt[j];
      }
      for (i__ = 1; i__ <= j; ++i__) {
        ++ih;
        hq[ih] = hq[ih] + w[i__] * xopt[j] + xopt[i__] * w[j];
        bmat[npt + i__ + j * bmat_dim1] = bmat[npt + j + i__ * bmat_dim1];
      }
    }
    for (i__ = 1; i__ <= n; ++i__) {
      xbase[i__] += xopt[i__];
      xnew[i__] -= xopt[i__];
      sl[i__] -= xopt[i__];
      su[i__] -= xopt[i__];
      xopt[i__] = zero;
    }
    xoptsq = zero;
  }
  if (ntrits == 0) {
    goto L210;
  }
  goto L230;
L190:
  nfsav = nf;
  kbase = kopt;
  rescue_(n, npt, &xl[1], &xu[1], func, data, iprint, maxfun, &xbase[1], &xpt[xpt_offset], &fval[1], &xopt[1], &gopt[1], &hq[1], &pq[1], &bmat[bmat_offset], &zmat[zmat_offset], ndim, &sl[1], &su[1], &nf, delta, &kopt, &vlag[1], &w[1], &w[n + np], &w[ndim + np]);
  xoptsq = zero;
  if (kopt != kbase) {
    for (i__ = 1; i__ <= n; ++i__) {
      xopt[i__] = xpt[kopt + i__ * xpt_dim1];
      xoptsq += xopt[i__] * xopt[i__];
    }
  }
  if (nf < 0) {
    nf = maxfun;
    if (iprint > 0) {
      printf("Return from BOBYQA because CALFUN has been called MAXFUN times.\n");
    }
    goto L720;
  }
  nresc = nf;
  if (nfsav < nf) {
    nfsav = nf;
    goto L20;
  }
  if (ntrits > 0) {
    goto L60;
  }
L210:
  altmov_(n, npt, &xpt[xpt_offset], &xopt[1], &bmat[bmat_offset], &zmat[zmat_offset], ndim, &sl[1], &su[1], kopt, knew, adelt, &xnew[1], &xalt[1], &alpha, &cauchy, &w[1], &w[np], &w[ndim + 1]);
  for (i__ = 1; i__ <= n; ++i__) {
    d__[i__] = xnew[i__] - xopt[i__];
  }
L230:
  for (k = 1; k <= npt; ++k) {
    suma = zero;
    sumb = zero;
    sum = zero;
    i__2 = n;
    for (j = 1; j <= i__2; ++j) {
      suma += xpt[k + j * xpt_dim1] * d__[j];
      sumb += xpt[k + j * xpt_dim1] * xopt[j];
      sum += bmat[k + j * bmat_dim1] * d__[j];
    }
    w[k] = suma * (half * suma + sumb);
    vlag[k] = sum;
    w[npt + k] = suma;
  }
  beta = zero;
  for (jj = 1; jj <= nptm; ++jj) {
    sum = zero;
    for (k = 1; k <= npt; ++k) {
      sum += zmat[k + jj * zmat_dim1] * w[k];
    }
    beta -= sum * sum;
    for (k = 1; k <= npt; ++k) {
      vlag[k] += sum * zmat[k + jj * zmat_dim1];
    }
  }
  dsq = zero;
  bsum = zero;
  dx = zero;
  for (j = 1; j <= n; ++j) {
    d__1 = d__[j];
    dsq += d__1 * d__1;
    sum = zero;
    for (k = 1; k <= npt; ++k) {
      sum += w[k] * bmat[k + j * bmat_dim1];
    }
    bsum += sum * d__[j];
    jp = npt + j;
    for (i__ = 1; i__ <= n; ++i__) {
      sum += bmat[jp + i__ * bmat_dim1] * d__[i__];
    }
    vlag[jp] = sum;
    bsum += sum * d__[j];
    dx += d__[j] * xopt[j];
  }
  beta = dx * dx + dsq * (xoptsq + dx + dx + half * dsq) + beta - bsum;
  vlag[kopt] += one;
  if (ntrits == 0) {
    denom = vlag[knew] * vlag[knew] + alpha * beta;
    if (denom < cauchy && cauchy > zero) {
      i__2 = n;
      for (i__ = 1; i__ <= i__2; ++i__) {
        xnew[i__] = xalt[i__];
        d__[i__] = xnew[i__] - xopt[i__];
      }
      cauchy = zero;
      goto L230;
    }
    if (denom <= half * (vlag[knew] * vlag[knew])) {
      if (nf > nresc) {
        goto L190;
      }
      if (iprint > 0) {
        printf("Return from BOBYQA because of much cancellation in a denominator.\n");
      }
      goto L720;
    }
  } else {
    delsq = delta * delta;
    scaden = zero;
    biglsq = zero;
    knew = 0;
    for (k = 1; k <= npt; ++k) {
      if (k == kopt) {
        goto L350;
      }
      hdiag = zero;
      for (jj = 1; jj <= nptm; ++jj) {
        hdiag += zmat[k + jj * zmat_dim1] * zmat[k + jj * zmat_dim1];
      }
      den = beta * hdiag + vlag[k] * vlag[k];
      distsq = zero;
      for (j = 1; j <= n; ++j) {
        distsq += (xpt[k + j * xpt_dim1] - xopt[j]) * (xpt[k + j * xpt_dim1] - xopt[j]);
      }
      {
        double d3 = distsq / delsq;
        temp = d3 * d3;
        if (one > temp) {
          temp = one;
        }
      }
      if (temp * den > scaden) {
        scaden = temp * den;
        knew = k;
        denom = den;
      }
      {
        double d2 = temp * (vlag[k] * vlag[k]);
        if (d2 > biglsq) {
          biglsq = d2;
        }
      }
    L350:;
    }
    if (scaden <= half * biglsq) {
      if (nf > nresc) {
        goto L190;
      }
      if (iprint > 0) {
        printf("Return from BOBYQA because of much cancellation in a denominator.\n");
      }
      goto L720;
    }
  }
L360:
  for (i__ = 1; i__ <= n; ++i__) {
    x[i__] = xbase[i__] + xnew[i__];
    if (xl[i__] > x[i__]) {
      x[i__] = xl[i__];
    }
    if (xu[i__] < x[i__]) {
      x[i__] = xu[i__];
    }
    if (xnew[i__] == sl[i__]) {
      x[i__] = xl[i__];
    }
    if (xnew[i__] == su[i__]) {
      x[i__] = xu[i__];
    }
  }
  if (nf >= maxfun) {
    if (iprint > 0) {
      printf("Return from BOBYQA because CALFUN has been called MAXFUN times.\n");
    }
    goto L720;
  }
  ++nf;
  f = func(data, n, &x[1]);
  if (iprint == 3) {
    printf("Function number %d    F = %g\n    The corresponding X is:\n", nf, f);
    for (i__ = 1; i__ <= n; ++i__) {
      printf("\t%g\n", x[i__]);
    }
  }
  if (ntrits == -1) {
    fsave = f;
    goto L720;
  }
  fopt = fval[kopt];
  vquad = zero;
  ih = 0;
  for (j = 1; j <= n; ++j) {
    vquad += d__[j] * gopt[j];
    for (i__ = 1; i__ <= j; ++i__) {
      ++ih;
      temp = d__[i__] * d__[j];
      if (i__ == j) {
        temp = half * temp;
      }
      vquad += hq[ih] * temp;
    }
  }
  for (k = 1; k <= npt; ++k) {
    vquad += half * pq[k] * (w[npt + k] * w[npt + k]);
  }
  diff = f - fopt - vquad;
  diffc = diffb;
  diffb = diffa;
  diffa = fabs(diff);
  if (dnorm > rho) {
    nfsav = nf;
  }
  if (ntrits > 0) {
    if (vquad >= zero) {
      if (iprint > 0) {
        printf("Return from BOBYQA because a trust region step has failed to reduce Q.\n");
      }
      goto L720;
    }
    ratio = (f - fopt) / vquad;
    if (ratio <= tenth) {
      delta = half * delta;
      if (dnorm < delta) {
        delta = dnorm;
      }
    } else if (ratio <= .7) {
      delta = half * delta;
      if (dnorm > delta) {
        delta = dnorm;
      }
    } else {
      delta = half * delta;
      if (2 * dnorm > delta) {
        delta = 2 * dnorm;
      }
    }
    if (delta <= rho * 1.5) {
      delta = rho;
    }
    if (f < fopt) {
      ksav = knew;
      densav = denom;
      delsq = delta * delta;
      scaden = zero;
      biglsq = zero;
      knew = 0;
      i__1 = npt;
      for (k = 1; k <= i__1; ++k) {
        hdiag = zero;
        i__2 = nptm;
        for (jj = 1; jj <= i__2; ++jj) {
          hdiag += zmat[k + jj * zmat_dim1] * zmat[k + jj * zmat_dim1];
        }
        den = beta * hdiag + vlag[k] * vlag[k];
        distsq = zero;
        for (j = 1; j <= n; ++j) {
          distsq += (xpt[k + j * xpt_dim1] - xnew[j]) * (xpt[k + j * xpt_dim1] - xnew[j]);
        }
        {
          double d3 = distsq / delsq;
          temp = d3 * d3;
          if (one > temp) {
            temp = one;
          }
        }
        if (temp * den > scaden) {
          scaden = temp * den;
          knew = k;
          denom = den;
        }
        {
          double d2 = temp * (vlag[k] * vlag[k]);
          if (d2 > biglsq) {
            biglsq = d2;
          }
        }
      }
      if (scaden <= half * biglsq) {
        knew = ksav;
        denom = densav;
      }
    }
  }
  update_(n, npt, &bmat[bmat_offset], &zmat[zmat_offset], ndim, &vlag[1], beta, denom, knew - 1, &w[1]);
  ih = 0;
  pqold = pq[knew];
  pq[knew] = zero;
  for (i__ = 1; i__ <= n; ++i__) {
    temp = pqold * xpt[knew + i__ * xpt_dim1];
    i__2 = i__;
    for (j = 1; j <= i__2; ++j) {
      ++ih;
      hq[ih] += temp * xpt[knew + j * xpt_dim1];
    }
  }
  for (jj = 1; jj <= nptm; ++jj) {
    temp = diff * zmat[knew + jj * zmat_dim1];
    for (k = 1; k <= npt; ++k) {
      pq[k] += temp * zmat[k + jj * zmat_dim1];
    }
  }
  fval[knew] = f;
  for (i__ = 1; i__ <= n; ++i__) {
    xpt[knew + i__ * xpt_dim1] = xnew[i__];
    w[i__] = bmat[knew + i__ * bmat_dim1];
  }
  for (k = 1; k <= npt; ++k) {
    suma = zero;
    for (jj = 1; jj <= nptm; ++jj) {
      suma += zmat[knew + jj * zmat_dim1] * zmat[k + jj * zmat_dim1];
    }
    sumb = zero;
    for (j = 1; j <= n; ++j) {
      sumb += xpt[k + j * xpt_dim1] * xopt[j];
    }
    temp = suma * sumb;
    for (i__ = 1; i__ <= n; ++i__) {
      w[i__] += temp * xpt[k + i__ * xpt_dim1];
    }
  }
  for (i__ = 1; i__ <= n; ++i__) {
    gopt[i__] += diff * w[i__];
  }
  if (f < fopt) {
    kopt = knew;
    xoptsq = zero;
    ih = 0;
    for (j = 1; j <= n; ++j) {
      xopt[j] = xnew[j];
      xoptsq += xopt[j] * xopt[j];
      for (i__ = 1; i__ <= j; ++i__) {
        ++ih;
        if (i__ < j) {
          gopt[j] += hq[ih] * d__[i__];
        }
        gopt[i__] += hq[ih] * d__[j];
      }
    }
    for (k = 1; k <= npt; ++k) {
      temp = zero;
      for (j = 1; j <= n; ++j) {
        temp += xpt[k + j * xpt_dim1] * d__[j];
      }
      temp = pq[k] * temp;
      for (i__ = 1; i__ <= n; ++i__) {
        gopt[i__] += temp * xpt[k + i__ * xpt_dim1];
      }
    }
  }
  if (ntrits > 0) {
    for (k = 1; k <= npt; ++k) {
      vlag[k] = fval[k] - fval[kopt];
      w[k] = zero;
    }
    for (j = 1; j <= nptm; ++j) {
      sum = zero;
      for (k = 1; k <= npt; ++k) {
        sum += zmat[k + j * zmat_dim1] * vlag[k];
      }
      for (k = 1; k <= npt; ++k) {
        w[k] += sum * zmat[k + j * zmat_dim1];
      }
    }
    for (k = 1; k <= npt; ++k) {
      sum = zero;
      for (j = 1; j <= n; ++j) {
        sum += xpt[k + j * xpt_dim1] * xopt[j];
      }
      w[k + npt] = w[k];
      w[k] = sum * w[k];
    }
    gqsq = zero;
    gisq = zero;
    for (i__ = 1; i__ <= n; ++i__) {
      sum = zero;
      for (k = 1; k <= npt; ++k) {
        sum = sum + bmat[k + i__ * bmat_dim1] * vlag[k] + xpt[k + i__ * xpt_dim1] * w[k];
      }
      if (xopt[i__] == sl[i__]) {
        double d1 = gopt[i__];
        if (zero < d1) {
          d1 = zero;
        }
        gqsq += d1 * d1;
        d1 = sum;
        if (zero < sum) {
          sum = zero;
        }
        gisq += d1 * d1;
      } else if (xopt[i__] == su[i__]) {
        double d1 = gopt[i__];
        if (zero > d1) {
          d1 = zero;
        }
        gqsq += d1 * d1;
        d1 = sum;
        if (zero > sum) {
          sum = zero;
        }
        gisq += d1 * d1;
      } else {
        gqsq += gopt[i__] * gopt[i__];
        gisq += sum * sum;
      }
      vlag[npt + i__] = sum;
    }
    ++itest;
    if (gqsq < ten * gisq) {
      itest = 0;
    }
    if (itest >= 3) {
      i__1 = imax(npt, nh);
      for (i__ = 1; i__ <= i__1; ++i__) {
        if (i__ <= n) {
          gopt[i__] = vlag[npt + i__];
        }
        if (i__ <= npt) {
          pq[i__] = w[npt + i__];
        }
        if (i__ <= nh) {
          hq[i__] = zero;
        }
        itest = 0;
      }
    }
  }
  if (ntrits == 0) {
    goto L60;
  }
  if (f <= fopt + tenth * vquad) {
    goto L60;
  }
  {
    double d3 = two * delta;
    double d4 = ten * rho;
    double d1 = d3 * d3;
    double d2 = d4 * d4;
    distsq = (d1 > d2) ? d1 : d2;
  }
L650:
  knew = 0;
  for (k = 1; k <= npt; ++k) {
    sum = zero;
    for (j = 1; j <= n; ++j) {
      sum += (xpt[k + j * xpt_dim1] - xopt[j]) * (xpt[k + j * xpt_dim1] - xopt[j]);
    }
    if (sum > distsq) {
      knew = k;
      distsq = sum;
    }
  }
  if (knew > 0) {
    dist = sqrt(distsq);
    if (ntrits == -1) {
      delta = tenth * delta;
      if (half * dist < delta) {
        delta = half * dist;
      }
      if (delta <= rho * 1.5) {
        delta = rho;
      }
    }
    ntrits = 0;
    adelt = tenth * dist;
    if (delta < adelt) {
      adelt = delta;
    }
    if (rho > adelt) {
      adelt = rho;
    }
    dsq = adelt * adelt;
    goto L90;
  }
  if (ntrits == -1) {
    goto L680;
  }
  if (ratio > zero) {
    goto L60;
  }
  if ((delta > dnorm ? delta : dnorm) > rho) {
    goto L60;
  }
L680:
  if (rho > rhoend) {
    delta = half * rho;
    ratio = rho / rhoend;
    if (ratio <= 16.) {
      rho = rhoend;
    } else if (ratio <= 250.) {
      rho = sqrt(ratio) * rhoend;
    } else {
      rho = tenth * rho;
    }
    delta = (delta > rho ? delta : rho);
    if (iprint >= 2) {
      printf("New RHO = %g, Number of function values = %d", rho, nf);
      printf("Least value of F = %g\n    The corresponding X is:\n", fval[kopt]);
      for (i__ = 1; i__ <= n; ++i__) {
        printf("\t%g\n", xbase[i__] + xopt[i__]);
      }
    }
    ntrits = 0;
    nfsav = nf;
    goto L60;
  }
  if (ntrits == -1) {
    goto L360;
  }
L720:
  if (fval[kopt] <= fsave) {
    for (i__ = 1; i__ <= n; ++i__) {
      x[i__] = xbase[i__] + xopt[i__];
      if (xl[i__] > x[i__]) {
        x[i__] = xl[i__];
      }
      if (xu[i__] < x[i__]) {
        x[i__] = xu[i__];
      }
      if (xopt[i__] == sl[i__]) {
        x[i__] = xl[i__];
      }
      if (xopt[i__] == su[i__]) {
        x[i__] = xu[i__];
      }
    }
    f = fval[kopt];
  }
  if (iprint >= 1) {
    printf("At the return from BOBYQA\nNumber of function values = %d\n", nf);
    printf("Least value of F = %g\n    The corresponding X is:\n", f);
    for (i__ = 1; i__ <= n; ++i__) {
      printf("\t%g\n", x[i__]);
    }
  }
}
```