user: Demonstrate the C code that generates the assembly output below:

```asm
<make_hex_correlator>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x338,%rsp
  mov    %rdi,-0x1c8(%rbp)
  mov    %rsi,-0x1d0(%rbp)
  mov    %rdx,-0x1d8(%rbp)
  mov    %rcx,-0x1e0(%rbp)
  mov    %r8,-0x1e8(%rbp)
  mov    %r9,-0x1f0(%rbp)
  movsd  %xmm0,-0x238(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x208(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x210(%rbp)
  mov    0x30(%rbp),%rax
  mov    %rax,-0x218(%rbp)
  mov    0x38(%rbp),%rax
  mov    %rax,-0x220(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0x228(%rbp)
  mov    0x48(%rbp),%rax
  mov    %rax,-0x230(%rbp)
  mov    0x50(%rbp),%rax
  mov    %rax,-0x240(%rbp)
  mov    0x58(%rbp),%rax
  mov    %rax,-0x248(%rbp)
  mov    0x60(%rbp),%rax
  mov    %rax,-0x250(%rbp)
  mov    0x68(%rbp),%rax
  mov    %rax,-0x258(%rbp)
  mov    0x70(%rbp),%rax
  mov    %rax,-0x260(%rbp)
  mov    0x78(%rbp),%rax
  mov    %rax,-0x268(%rbp)
  mov    0x80(%rbp),%rax
  mov    %rax,-0x270(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  movl   $0x2,-0x190(%rbp)
  mov    0xb0(%rbp),%eax
  imul   %eax,%eax
  mov    %eax,-0x18c(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0x108(%rbp)
  movslq %edx,%rax
  mov    %rax,%r10
  mov    $0x0,%r11d
  movslq %edx,%rax
  mov    %rax,%r12
  mov    $0x0,%r13d
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L203:
  cmp    %rcx,%rsp
  je     L80
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L203
L80:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L84
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L84:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x100(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xf8(%rbp)
  movslq %edx,%rax
  mov    %rax,%r14
  mov    $0x0,%r15d
  movslq %edx,%rax
  mov    %rax,-0x280(%rbp)
  movq   $0x0,-0x278(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L359:
  cmp    %rcx,%rsp
  je     L273
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L359
L273:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L166
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L166:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xf0(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xe8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x290(%rbp)
  movq   $0x0,-0x288(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2a0(%rbp)
  movq   $0x0,-0x298(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L133:
  cmp    %rcx,%rsp
  je     L70
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L133
L70:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L5
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L5:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xe0(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xd8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2b0(%rbp)
  movq   $0x0,-0x2a8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2c0(%rbp)
  movq   $0x0,-0x2b8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L349:
  cmp    %rcx,%rsp
  je     L351
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L349
L351:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L392
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L392:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xd0(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xc8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2d0(%rbp)
  movq   $0x0,-0x2c8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2e0(%rbp)
  movq   $0x0,-0x2d8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L372:
  cmp    %rcx,%rsp
  je     L303
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L372
L303:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L127
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L127:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xc0(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xb8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x2f0(%rbp)
  movq   $0x0,-0x2e8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x300(%rbp)
  movq   $0x0,-0x2f8(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rdx
  mov    %rdx,%rax
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L282:
  cmp    %rcx,%rsp
  je     L251
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L282
L251:
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  mov    %rdx,%rax
  and    $0xfff,%eax
  test   %rax,%rax
  je     L313
  mov    %rdx,%rax
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L313:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xb0(%rbp)
  mov    -0x190(%rbp),%edx
  movslq %edx,%rax
  sub    $0x1,%rax
  mov    %rax,-0xa8(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x310(%rbp)
  movq   $0x0,-0x308(%rbp)
  movslq %edx,%rax
  mov    %rax,-0x320(%rbp)
  movq   $0x0,-0x318(%rbp)
  movslq %edx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L88:
  cmp    %rdx,%rsp
  je     L337
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L88
L337:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L3
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L3:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0xa0(%rbp)
  mov    -0x190(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x98(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x330(%rbp)
  movq   $0x0,-0x328(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x340(%rbp)
  movq   $0x0,-0x338(%rbp)
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L465:
  cmp    %rdx,%rsp
  je     L149
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L465
L149:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L361
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L361:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x90(%rbp)
  mov    -0x190(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x88(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x350(%rbp)
  movq   $0x0,-0x348(%rbp)
  movslq %eax,%rdx
  mov    %rdx,-0x360(%rbp)
  movq   $0x0,-0x358(%rbp)
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L336:
  cmp    %rdx,%rsp
  je     L311
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L336
L311:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L463
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L463:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x80(%rbp)
  movl   $0x0,-0x1a8(%rbp)
  jmp    L117
L167:
  movl   $0x0,-0x1a4(%rbp)
  jmp    L473
L250:
  mov    0xb8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    0xb8(%rbp),%eax
  imul   -0x1a4(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1a8(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%ecx
  mov    -0xa0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    0xb8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    0xb8(%rbp),%eax
  imul   -0x1a4(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1a8(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x90(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    0xb8(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    0xb8(%rbp),%eax
  imul   -0x1a4(%rbp),%eax
  lea    0x2(%rax),%ecx
  mov    -0x1a8(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x80(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xa0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%ecx
  mov    -0xa0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %ecx,%eax
  sub    %edx,%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %eax,%ecx
  mov    -0xd0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x90(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%ecx
  mov    -0x90(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %ecx,%eax
  sub    %edx,%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %eax,%ecx
  mov    -0xc0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x80(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%ecx
  mov    -0x80(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %ecx,%eax
  sub    %edx,%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %eax,%ecx
  mov    -0xb0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0xa0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %edx,%ecx
  mov    -0x100(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x90(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %edx,%ecx
  mov    -0xf0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x80(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  cltd
  idivl  0xb8(%rbp)
  mov    %edx,%ecx
  mov    -0xe0(%rbp),%rax
  mov    -0x1a4(%rbp),%edx
  movslq %edx,%rdx
  mov    %ecx,(%rax,%rdx,4)
  addl   $0x1,-0x1a4(%rbp)
L473:
  mov    -0x1a4(%rbp),%eax
  cmp    -0x190(%rbp),%eax
  jl     L250
  movl   $0x0,-0x194(%rbp)
  jmp    L100
L338:
  mov    -0x100(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xd0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x100(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xd0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x184(%rbp)
  mov    -0xf0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x180(%rbp)
  mov    -0xf0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x17c(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x178(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x174(%rbp)
  mov    -0x100(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xd0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x170(%rbp)
  mov    -0x100(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xd0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x16c(%rbp)
  mov    -0xf0(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x168(%rbp)
  mov    -0xf0(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x164(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xb0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x160(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    0x4(%rax),%edx
  mov    -0xb0(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    0xb8(%rbp),%edi
  mov    -0x18c(%rbp),%ecx
  mov    -0x194(%rbp),%esi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x15c(%rbp)
  movl   $0x0,-0x1b0(%rbp)
  jmp    L194
L267:
  movl   $0x0,-0x198(%rbp)
  jmp    L140
L38:
  movl   $0x0,-0x1b4(%rbp)
  jmp    L152
L210:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x128(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x120(%rbp)
  movl   $0x0,-0x1ac(%rbp)
  jmp    L386
L334:
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x208(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x140(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x210(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x13c(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x208(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x138(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x210(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x134(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x208(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x130(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x210(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x12c(%rbp)
  mov    -0x1ac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x218(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,-0x280(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x290(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x2a0(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2a0(%rbp),%xmm0
  movsd  -0x290(%rbp),%xmm3
  subsd  %xmm0,%xmm3
  movsd  %xmm3,-0x290(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x2a0(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm5
  mulsd  -0x2a0(%rbp),%xmm5
  movsd  %xmm5,-0x2a0(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,-0x2b0(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2b0(%rbp),%xmm0
  movsd  -0x2a0(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movsd  -0x290(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x1ac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x218(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,-0x280(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x290(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x2a0(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2a0(%rbp),%xmm0
  addsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x2a0(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm6
  mulsd  -0x2a0(%rbp),%xmm6
  movsd  %xmm6,-0x2a0(%rbp)
  mov    -0x174(%rbp),%r8d
  mov    -0x178(%rbp),%edi
  mov    -0x13c(%rbp),%ecx
  mov    -0x140(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x2b0(%rbp)
  mov    -0x184(%rbp),%r8d
  mov    -0x188(%rbp),%edi
  mov    -0x12c(%rbp),%ecx
  mov    -0x130(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2b0(%rbp),%xmm0
  movsd  -0x2a0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0x290(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x17c(%rbp),%r8d
  mov    -0x180(%rbp),%edi
  mov    -0x134(%rbp),%ecx
  mov    -0x138(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x17c(%rbp),%r8d
  mov    -0x180(%rbp),%edi
  mov    -0x134(%rbp),%ecx
  mov    -0x138(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x280(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  -0x128(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x128(%rbp)
  mov    -0x17c(%rbp),%r8d
  mov    -0x180(%rbp),%edi
  mov    -0x134(%rbp),%ecx
  mov    -0x138(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x17c(%rbp),%r8d
  mov    -0x180(%rbp),%edi
  mov    -0x134(%rbp),%ecx
  mov    -0x138(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  -0x280(%rbp),%xmm0
  movsd  -0x120(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x120(%rbp)
  addl   $0x1,-0x1ac(%rbp)
L386:
  mov    -0x1ac(%rbp),%eax
  cmp    0xb0(%rbp),%eax
  jl     L334
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movl   $0x0,-0x1ac(%rbp)
  jmp    L192
L184:
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x220(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x158(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x228(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x154(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x220(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x150(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x228(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x14c(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x220(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x148(%rbp)
  mov    0xb8(%rbp),%edx
  mov    -0x1ac(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,4),%rdx
  mov    -0x228(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x144(%rbp)
  mov    -0x1ac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x230(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,-0x280(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,-0x290(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x2a0(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2a0(%rbp),%xmm0
  movsd  -0x290(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x290(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x2a0(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm7
  mulsd  -0x2a0(%rbp),%xmm7
  movsd  %xmm7,-0x2a0(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  movsd  %xmm2,-0x2b0(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2b0(%rbp),%xmm0
  movsd  -0x2a0(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movsd  -0x290(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x1ac(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x230(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x280(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,-0x290(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm5
  movsd  %xmm5,-0x2a0(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2a0(%rbp),%xmm0
  addsd  -0x290(%rbp),%xmm0
  movsd  %xmm0,-0x290(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm7
  movsd  %xmm7,-0x2a0(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm3
  mulsd  -0x2a0(%rbp),%xmm3
  movsd  %xmm3,-0x2a0(%rbp)
  mov    -0x15c(%rbp),%r8d
  mov    -0x160(%rbp),%edi
  mov    -0x154(%rbp),%ecx
  mov    -0x158(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm6
  movsd  %xmm6,-0x2b0(%rbp)
  mov    -0x16c(%rbp),%r8d
  mov    -0x170(%rbp),%edi
  mov    -0x144(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x2,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x2b0(%rbp),%xmm0
  movsd  -0x2a0(%rbp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  -0x290(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x164(%rbp),%r8d
  mov    -0x168(%rbp),%edi
  mov    -0x14c(%rbp),%ecx
  mov    -0x150(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x164(%rbp),%r8d
  mov    -0x168(%rbp),%edi
  mov    -0x14c(%rbp),%ecx
  mov    -0x150(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x50(%rbp),%xmm1
  movsd  -0x280(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  -0x118(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x118(%rbp)
  mov    -0x164(%rbp),%r8d
  mov    -0x168(%rbp),%edi
  mov    -0x14c(%rbp),%ecx
  mov    -0x150(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x164(%rbp),%r8d
  mov    -0x168(%rbp),%edi
  mov    -0x14c(%rbp),%ecx
  mov    -0x150(%rbp),%edx
  mov    -0x1b0(%rbp),%eax
  sub    $0x8,%rsp
  mov    0xa8(%rbp),%esi
  push   %rsi
  mov    0xa0(%rbp),%esi
  push   %rsi
  mov    0x98(%rbp),%esi
  push   %rsi
  mov    0x90(%rbp),%esi
  push   %rsi
  mov    0x88(%rbp),%esi
  push   %rsi
  mov    -0x1b4(%rbp),%esi
  push   %rsi
  mov    -0x198(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <prop_index@plt>
  add    $0x40,%rsp
  lea    0x0(,%rax,8),%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x50(%rbp),%xmm0
  addsd  -0x280(%rbp),%xmm0
  movsd  -0x110(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x110(%rbp)
  addl   $0x1,-0x1ac(%rbp)
L192:
  mov    -0x1ac(%rbp),%eax
  cmp    0xb0(%rbp),%eax
  jl     L184
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x200(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x238(%rbp),%xmm1
  mov    -0x194(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x250(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  -0x128(%rbp),%xmm0
  mulsd  -0x118(%rbp),%xmm0
  movsd  -0x120(%rbp),%xmm1
  mulsd  -0x110(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  mov    -0x1a8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x200(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x238(%rbp),%xmm1
  mov    -0x194(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x250(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x128(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x110(%rbp),%xmm2
  movsd  -0x120(%rbp),%xmm0
  mulsd  -0x118(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0x0,-0x19c(%rbp)
  jmp    L76
L83:
  mov    0xc0(%rbp),%edx
  mov    -0x19c(%rbp),%ecx
  mov    -0x198(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x258(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    0xc0(%rbp),%edx
  mov    -0x19c(%rbp),%ecx
  mov    -0x198(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x260(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  -0x280(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    0xc0(%rbp),%edx
  mov    -0x19c(%rbp),%ecx
  mov    -0x198(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x258(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    0xc0(%rbp),%edx
  mov    -0x19c(%rbp),%ecx
  mov    -0x198(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x260(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  addsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L103
L0:
  mov    0xc8(%rbp),%edx
  mov    -0x1a0(%rbp),%ecx
  mov    -0x1b4(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x268(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    0xc8(%rbp),%edx
  mov    -0x1a0(%rbp),%ecx
  mov    -0x1b4(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x270(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0x280(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x280(%rbp)
  mov    0xa8(%rbp),%edi
  mov    0xc8(%rbp),%ecx
  mov    -0x1b0(%rbp),%edx
  mov    -0x1a0(%rbp),%esi
  mov    -0x19c(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,8),%rcx
  mov    -0x1c8(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x1c8(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    0xc8(%rbp),%edx
  mov    -0x1a0(%rbp),%ecx
  mov    -0x1b4(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x268(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    0xc8(%rbp),%edx
  mov    -0x1a0(%rbp),%ecx
  mov    -0x1b4(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <index_2d@plt>
  lea    0x0(,%rax,8),%rdx
  mov    -0x270(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm7
  addsd  -0x280(%rbp),%xmm7
  movsd  %xmm7,-0x280(%rbp)
  mov    0xa8(%rbp),%edi
  mov    0xc8(%rbp),%ecx
  mov    -0x1b0(%rbp),%edx
  mov    -0x1a0(%rbp),%esi
  mov    -0x19c(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <index_3d@plt>
  lea    0x0(,%rax,8),%rcx
  mov    -0x1d0(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(,%rax,8),%rdx
  mov    -0x1d0(%rbp),%rax
  add    %rdx,%rax
  addsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x1a0(%rbp)
L103:
  mov    -0x1a0(%rbp),%eax
  cmp    0xc8(%rbp),%eax
  jl     L0
  addl   $0x1,-0x19c(%rbp)
L76:
  mov    -0x19c(%rbp),%eax
  cmp    0xc0(%rbp),%eax
  jl     L83
  addl   $0x1,-0x1b4(%rbp)
L152:
  mov    -0x1b4(%rbp),%eax
  cmp    0xa0(%rbp),%eax
  jl     L210
  addl   $0x1,-0x198(%rbp)
L140:
  mov    -0x198(%rbp),%eax
  cmp    0x98(%rbp),%eax
  jl     L38
  addl   $0x1,-0x1b0(%rbp)
L194:
  mov    -0x1b0(%rbp),%eax
  cmp    0xa8(%rbp),%eax
  jl     L267
  addl   $0x1,-0x194(%rbp)
L100:
  mov    -0x194(%rbp),%eax
  cmp    -0x18c(%rbp),%eax
  jl     L338
  addl   $0x1,-0x1a8(%rbp)
L117:
  mov    -0x1a8(%rbp),%eax
  cmp    0xd0(%rbp),%eax
  jl     L167
  mov    %rbx,%rsp
  nop
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L81
  call   <__stack_chk_fail@plt>
L81:
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

assistant: ```c
void make_hex_correlator(double *C_re, double *C_im, const double *B1_prop_re, const double *B1_prop_im, const double *B2_prop_re, const double *B2_prop_im, const int *perms, const int *sigs, const int *B1_src_color_weights, const int *B1_src_spin_weights, const double *B1_src_weights, const int *B2_src_color_weights, const int *B2_src_spin_weights, const double *B2_src_weights, const double overall_weight, const int *snk_color_weights, const int *snk_spin_weights, const double *snk_weights, const double *hex_src_psi_re, const double *hex_src_psi_im, const double *hex_snk_psi_re, const double *hex_snk_psi_im, const int Nc, const int Ns, const int Vsrc, const int Vsnk, const int Nt, const int Nw, const int Nq, const int NsrcHex, const int NsnkHex, const int Nperms) {
  int x, t, wnum, nperm, b, n, m, y, wnumprime;
  int iC1prime, iS1prime, jC1prime, jS1prime, kC1prime, kS1prime, iC2prime, iS2prime, jC2prime, jS2prime, kC2prime, kS2prime;
  int iC1, iS1, jC1, jS1, kC1, kS1, iC2, iS2, jC2, jS2, kC2, kS2;
  int Nb = 2;
  int Nw2 = Nw * Nw;
  double B1_prop_prod_02_re, B1_prop_prod_02_im, B1_prop_prod_re, B1_prop_prod_im, B2_prop_prod_02_re, B2_prop_prod_02_im, B2_prop_prod_re, B2_prop_prod_im;
  double prop_prod_re, prop_prod_im, new_prop_prod_re, new_prop_prod_im;
  int snk_1_nq[Nb];
  int snk_2_nq[Nb];
  int snk_3_nq[Nb];
  int snk_1_b[Nb];
  int snk_2_b[Nb];
  int snk_3_b[Nb];
  int snk_1[Nb];
  int snk_2[Nb];
  int snk_3[Nb];
  for (nperm = 0; nperm < Nperms; nperm++) {
    for (b = 0; b < Nb; b++) {
      snk_1[b] = perms[index_2d(nperm, Nq * b + 0, 2 * Nq)] - 1;
      snk_2[b] = perms[index_2d(nperm, Nq * b + 1, 2 * Nq)] - 1;
      snk_3[b] = perms[index_2d(nperm, Nq * b + 2, 2 * Nq)] - 1;
      snk_1_b[b] = (snk_1[b] - snk_1[b] % Nq) / Nq;
      snk_2_b[b] = (snk_2[b] - snk_2[b] % Nq) / Nq;
      snk_3_b[b] = (snk_3[b] - snk_3[b] % Nq) / Nq;
      snk_1_nq[b] = snk_1[b] % Nq;
      snk_2_nq[b] = snk_2[b] % Nq;
      snk_3_nq[b] = snk_3[b] % Nq;
    }
    for (wnumprime = 0; wnumprime < Nw2; wnumprime++) {
      iC1prime = snk_color_weights[index_3d(snk_1_b[0], wnumprime, snk_1_nq[0], Nw2, Nq)];
      iS1prime = snk_spin_weights[index_3d(snk_1_b[0], wnumprime, snk_1_nq[0], Nw2, Nq)];
      jC1prime = snk_color_weights[index_3d(snk_2_b[0], wnumprime, snk_2_nq[0], Nw2, Nq)];
      jS1prime = snk_spin_weights[index_3d(snk_2_b[0], wnumprime, snk_2_nq[0], Nw2, Nq)];
      kC1prime = snk_color_weights[index_3d(snk_3_b[0], wnumprime, snk_3_nq[0], Nw2, Nq)];
      kS1prime = snk_spin_weights[index_3d(snk_3_b[0], wnumprime, snk_3_nq[0], Nw2, Nq)];
      iC2prime = snk_color_weights[index_3d(snk_1_b[1], wnumprime, snk_1_nq[1], Nw2, Nq)];
      iS2prime = snk_spin_weights[index_3d(snk_1_b[1], wnumprime, snk_1_nq[1], Nw2, Nq)];
      jC2prime = snk_color_weights[index_3d(snk_2_b[1], wnumprime, snk_2_nq[1], Nw2, Nq)];
      jS2prime = snk_spin_weights[index_3d(snk_2_b[1], wnumprime, snk_2_nq[1], Nw2, Nq)];
      kC2prime = snk_color_weights[index_3d(snk_3_b[1], wnumprime, snk_3_nq[1], Nw2, Nq)];
      kS2prime = snk_spin_weights[index_3d(snk_3_b[1], wnumprime, snk_3_nq[1], Nw2, Nq)];
      for (t = 0; t < Nt; t++) {
        for (y = 0; y < Vsrc; y++) {
          for (x = 0; x < Vsnk; x++) {
            B1_prop_prod_re = 0;
            B1_prop_prod_im = 0;
            for (wnum = 0; wnum < Nw; wnum++) {
              iC1 = B1_src_color_weights[index_2d(wnum, 0, Nq)];
              iS1 = B1_src_spin_weights[index_2d(wnum, 0, Nq)];
              jC1 = B1_src_color_weights[index_2d(wnum, 1, Nq)];
              jS1 = B1_src_spin_weights[index_2d(wnum, 1, Nq)];
              kC1 = B1_src_color_weights[index_2d(wnum, 2, Nq)];
              kS1 = B1_src_spin_weights[index_2d(wnum, 2, Nq)];
              B1_prop_prod_02_re = B1_src_weights[wnum] * ((B1_prop_re[prop_index(0, t, iC1, iS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_re[prop_index(2, t, kC1, kS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B1_prop_im[prop_index(0, t, iC1, iS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_im[prop_index(2, t, kC1, kS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]) - (B1_prop_re[prop_index(0, t, iC1, iS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_re[prop_index(2, t, kC1, kS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B1_prop_im[prop_index(0, t, iC1, iS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_im[prop_index(2, t, kC1, kS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]));
              B1_prop_prod_02_im = B1_src_weights[wnum] * ((B1_prop_re[prop_index(0, t, iC1, iS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_im[prop_index(2, t, kC1, kS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B1_prop_im[prop_index(0, t, iC1, iS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_re[prop_index(2, t, kC1, kS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]) - (B1_prop_re[prop_index(0, t, iC1, iS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_im[prop_index(2, t, kC1, kS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B1_prop_im[prop_index(0, t, iC1, iS1, kC1prime, kS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B1_prop_re[prop_index(2, t, kC1, kS1, iC1prime, iS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]));
              B1_prop_prod_re += B1_prop_prod_02_re * B1_prop_re[prop_index(1, t, jC1, jS1, jC1prime, jS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B1_prop_prod_02_im * B1_prop_im[prop_index(1, t, jC1, jS1, jC1prime, jS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)];
              B1_prop_prod_im += B1_prop_prod_02_re * B1_prop_im[prop_index(1, t, jC1, jS1, jC1prime, jS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B1_prop_prod_02_im * B1_prop_re[prop_index(1, t, jC1, jS1, jC1prime, jS1prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)];
            }
            B2_prop_prod_re = 0;
            B2_prop_prod_im = 0;
            for (wnum = 0; wnum < Nw; wnum++) {
              iC2 = B2_src_color_weights[index_2d(wnum, 0, Nq)];
              iS2 = B2_src_spin_weights[index_2d(wnum, 0, Nq)];
              jC2 = B2_src_color_weights[index_2d(wnum, 1, Nq)];
              jS2 = B2_src_spin_weights[index_2d(wnum, 1, Nq)];
              kC2 = B2_src_color_weights[index_2d(wnum, 2, Nq)];
              kS2 = B2_src_spin_weights[index_2d(wnum, 2, Nq)];
              B2_prop_prod_02_re = B2_src_weights[wnum] * ((B2_prop_re[prop_index(0, t, iC2, iS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_re[prop_index(2, t, kC2, kS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B2_prop_im[prop_index(0, t, iC2, iS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_im[prop_index(2, t, kC2, kS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]) - (B2_prop_re[prop_index(0, t, iC2, iS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_re[prop_index(2, t, kC2, kS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B2_prop_im[prop_index(0, t, iC2, iS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_im[prop_index(2, t, kC2, kS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]));
              B2_prop_prod_02_im = B2_src_weights[wnum] * ((B2_prop_re[prop_index(0, t, iC2, iS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_im[prop_index(2, t, kC2, kS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B2_prop_im[prop_index(0, t, iC2, iS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_re[prop_index(2, t, kC2, kS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]) - (B2_prop_re[prop_index(0, t, iC2, iS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_im[prop_index(2, t, kC2, kS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B2_prop_im[prop_index(0, t, iC2, iS2, kC2prime, kS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] * B2_prop_re[prop_index(2, t, kC2, kS2, iC2prime, iS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)]));
              B2_prop_prod_re += B2_prop_prod_02_re * B2_prop_re[prop_index(1, t, jC2, jS2, jC2prime, jS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] - B2_prop_prod_02_im * B2_prop_im[prop_index(1, t, jC2, jS2, jC2prime, jS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)];
              B2_prop_prod_im += B2_prop_prod_02_re * B2_prop_im[prop_index(1, t, jC2, jS2, jC2prime, jS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)] + B2_prop_prod_02_im * B2_prop_re[prop_index(1, t, jC2, jS2, jC2prime, jS2prime, y, x, Nc, Ns, Vsrc, Vsnk, Nt)];
            }
            prop_prod_re = overall_weight * sigs[nperm] * snk_weights[wnumprime] * (B1_prop_prod_re * B2_prop_prod_re - B1_prop_prod_im * B2_prop_prod_im);
            prop_prod_im = overall_weight * sigs[nperm] * snk_weights[wnumprime] * (B1_prop_prod_re * B2_prop_prod_im + B1_prop_prod_im * B2_prop_prod_re);
            for (m = 0; m < NsrcHex; m++) {
              new_prop_prod_re = hex_src_psi_re[index_2d(y, m, NsrcHex)] * prop_prod_re - hex_src_psi_im[index_2d(y, m, NsrcHex)] * prop_prod_im;
              new_prop_prod_im = hex_src_psi_re[index_2d(y, m, NsrcHex)] * prop_prod_im + hex_src_psi_im[index_2d(y, m, NsrcHex)] * prop_prod_re;
              for (n = 0; n < NsnkHex; n++) {
                C_re[index_3d(m, n, t, NsnkHex, Nt)] += hex_snk_psi_re[index_2d(x, n, NsnkHex)] * new_prop_prod_re - hex_snk_psi_im[index_2d(x, n, NsnkHex)] * new_prop_prod_im;
                C_im[index_3d(m, n, t, NsnkHex, Nt)] += hex_snk_psi_re[index_2d(x, n, NsnkHex)] * new_prop_prod_im + hex_snk_psi_im[index_2d(x, n, NsnkHex)] * new_prop_prod_re;
              }
            }
          }
        }
      }
    }
  }
}
```