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

```asm
<cu_compute_matrix_stamps>:
  endbr64
  push   %r15
  movslq %ecx,%rax
  push   %r14
  push   %r13
  mov    %rax,%r13
  push   %r12
  push   %rbp
  mov    %r8d,%ebp
  push   %rbx
  lea    0x0(,%rax,8),%rbx
  sub    $0x168,%rsp
  mov    %edi,0x8c(%rsp)
  mov    %rbx,%rdi
  mov    0x1f8(%rsp),%r14d
  mov    %esi,0x10c(%rsp)
  mov    %edx,0x110(%rsp)
  mov    %r8d,0x14(%rsp)
  mov    %r9d,0xfc(%rsp)
  mov    %eax,0x10(%rsp)
  mov    %rax,0xe0(%rsp)
  call   <malloc@plt>
  mov    %rax,0xc8(%rsp)
  movslq %ebp,%rax
  lea    0x0(,%rax,8),%rbp
  mov    %rax,0xe8(%rsp)
  mov    %rbp,%rdi
  call   <malloc@plt>
  mov    %rbx,%rdi
  mov    %rax,0xd0(%rsp)
  call   <malloc@plt>
  mov    %rbp,%rdi
  mov    %rax,0x40(%rsp)
  call   <malloc@plt>
  mov    %rax,0x18(%rsp)
  test   %r13d,%r13d
  jle    L1614
  mov    0x10(%rsp),%ecx
  pxor   %xmm1,%xmm1
  movsd  D86(%rip),%xmm2
  lea    -0x1(%rcx),%eax
  cvtsi2sd %eax,%xmm1
  mulsd  %xmm1,%xmm2
  cmp    $0x2,%eax
  jbe    L796
  mov    %ecx,%eax
  mov    0xc8(%rsp),%rsi
  movapd %xmm2,%xmm7
  movapd %xmm1,%xmm6
  shr    $0x2,%eax
  movdqa D56(%rip),%xmm5
  unpcklpd %xmm7,%xmm7
  unpcklpd %xmm6,%xmm6
  shl    $0x5,%rax
  movdqa D37(%rip),%xmm4
  mov    %rsi,%rdx
  add    %rsi,%rax
L1951:
  movdqa %xmm5,%xmm0
  add    $0x20,%rdx
  paddd  %xmm4,%xmm5
  cvtdq2pd %xmm0,%xmm3
  pshufd $0xee,%xmm0,%xmm0
  subpd  %xmm7,%xmm3
  cvtdq2pd %xmm0,%xmm0
  subpd  %xmm7,%xmm0
  divpd  %xmm6,%xmm3
  divpd  %xmm6,%xmm0
  movups %xmm3,-0x20(%rdx)
  movups %xmm0,-0x10(%rdx)
  cmp    %rax,%rdx
  jne    L1951
  mov    0x10(%rsp),%ecx
  mov    %ecx,%eax
  and    $0xfffffffc,%eax
  and    $0x3,%ecx
  je     L1614
L662:
  pxor   %xmm0,%xmm0
  mov    0xc8(%rsp),%rsi
  movslq %eax,%rcx
  mov    0x10(%rsp),%edi
  cvtsi2sd %eax,%xmm0
  lea    0x0(,%rcx,8),%rdx
  subsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rcx,8)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%edi
  jle    L1614
  pxor   %xmm0,%xmm0
  add    $0x2,%eax
  cvtsi2sd %ecx,%xmm0
  subsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%rsi,%rdx,1)
  cmp    %eax,%edi
  jle    L1614
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi,%rdx,1)
L1614:
  mov    0x14(%rsp),%eax
  test   %eax,%eax
  jle    L1290
  mov    0x14(%rsp),%ecx
  pxor   %xmm1,%xmm1
  movsd  D86(%rip),%xmm3
  lea    -0x1(%rcx),%eax
  cvtsi2sd %eax,%xmm1
  mulsd  %xmm1,%xmm3
  cmp    $0x2,%eax
  jbe    L1070
  mov    %ecx,%eax
  mov    0xd0(%rsp),%rsi
  movapd %xmm3,%xmm7
  movapd %xmm1,%xmm6
  shr    $0x2,%eax
  movdqa D56(%rip),%xmm5
  unpcklpd %xmm7,%xmm7
  unpcklpd %xmm6,%xmm6
  shl    $0x5,%rax
  movdqa D37(%rip),%xmm4
  mov    %rsi,%rdx
  add    %rsi,%rax
L2141:
  movdqa %xmm5,%xmm0
  add    $0x20,%rdx
  paddd  %xmm4,%xmm5
  cvtdq2pd %xmm0,%xmm2
  pshufd $0xee,%xmm0,%xmm0
  subpd  %xmm7,%xmm2
  cvtdq2pd %xmm0,%xmm0
  subpd  %xmm7,%xmm0
  divpd  %xmm6,%xmm2
  divpd  %xmm6,%xmm0
  movups %xmm2,-0x20(%rdx)
  movups %xmm0,-0x10(%rdx)
  cmp    %rax,%rdx
  jne    L2141
  mov    0x14(%rsp),%ecx
  mov    %ecx,%eax
  and    $0xfffffffc,%eax
  and    $0x3,%ecx
  je     L1290
L435:
  pxor   %xmm0,%xmm0
  mov    0xd0(%rsp),%rsi
  movslq %eax,%rcx
  mov    0x14(%rsp),%edi
  cvtsi2sd %eax,%xmm0
  lea    0x0(,%rcx,8),%rdx
  subsd  %xmm3,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rcx,8)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%edi
  jle    L1290
  pxor   %xmm0,%xmm0
  add    $0x2,%eax
  cvtsi2sd %ecx,%xmm0
  subsd  %xmm3,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%rsi,%rdx,1)
  cmp    %edi,%eax
  jge    L1290
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  %xmm3,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi,%rdx,1)
L1290:
  test   %r14d,%r14d
  jle    L1576
  mov    0x1f0(%rsp),%eax
  movslq 0x1f0(%rsp),%rbp
  test   %eax,%eax
  jle    L488
  mov    0x1e0(%rsp),%rcx
  lea    0x0(,%rbp,8),%r13
  xor    %r12d,%r12d
L2017:
  mov    %rcx,%rdi
  mov    %r13,%rdx
  xor    %esi,%esi
  add    $0x1,%r12d
  call   <memset@plt>
  mov    %rax,%rcx
  add    %r13,%rcx
  cmp    %r12d,%r14d
  jne    L2017
L488:
  mov    0x8c(%rsp),%ecx
  movdqa D37(%rip),%xmm2
  movl   $0x0,0x148(%rsp)
  movq   $0x0,0x140(%rsp)
  lea    0x2(%rcx),%eax
  add    $0x1,%ecx
  imul   %ecx,%eax
  mov    %ecx,0x114(%rsp)
  mov    %eax,0x14c(%rsp)
  mov    %eax,%ecx
  shr    $0x1f,%eax
  add    %ecx,%eax
  mov    0x10c(%rsp),%ecx
  sar    %eax
  lea    0x2(%rcx),%edx
  mov    %eax,0x88(%rsp)
  lea    0x1(%rcx),%eax
  mov    0x1b0(%rsp),%rcx
  imul   %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,0x90(%rsp)
  movslq %r14d,%rax
  mov    %r15d,%r14d
  mov    %rbx,%r15
  mov    %rax,0x150(%rsp)
  lea    0x0(,%rbp,8),%rax
  mov    %rax,0xf0(%rsp)
  mov    0xfc(%rsp),%eax
  sub    $0x1,%eax
  mov    %rax,0x128(%rsp)
  lea    0x8(%rcx,%rax,8),%rax
  mov    %rax,0x48(%rsp)
L825:
  mov    0x140(%rsp),%rbx
  cmpl   $0x1,0x14c(%rsp)
  mov    %ebx,0xd8(%rsp)
  mov    %ebx,%eax
  mov    %ebx,0x108(%rsp)
  jle    L1615
  mov    0x88(%rsp),%ecx
  add    $0x1,%eax
  mov    %ebx,0x94(%rsp)
  mov    %r14d,%r13d
  movl   $0x0,0x50(%rsp)
  movdqa D37(%rip),%xmm3
  cmp    %ecx,%eax
  mov    %r15,0xb0(%rsp)
  mov    0x98(%rsp),%r14d
  cmovg  %ecx,%eax
  mov    0x1e0(%rsp),%rcx
  mov    0xa0(%rsp),%r12d
  mov    0xac(%rsp),%ebp
  mov    %eax,0xa8(%rsp)
  movslq 0x148(%rsp),%rax
  lea    (%rcx,%rax,8),%rax
  mov    %rax,0x70(%rsp)
  lea    (%rcx,%rbx,8),%rax
  mov    %rax,0x80(%rsp)
  nop
L981:
  mov    0x94(%rsp),%ebx
  cmp    %ebx,0x88(%rsp)
  jle    L521
  mov    0x1d0(%rsp),%eax
  test   %eax,%eax
  jle    L725
  mov    0x1b8(%rsp),%rax
  mov    (%rax),%eax
  mov    %eax,0x78(%rsp)
  mov    0x1c0(%rsp),%rax
  mov    (%rax),%eax
  mov    %eax,0x7c(%rsp)
L725:
  mov    0x8c(%rsp),%eax
  movl   $0x0,0x8(%rsp)
  mov    0x108(%rsp),%esi
  mov    %eax,(%rsp)
  test   %eax,%eax
  js     L1050
L661:
  mov    0x8c(%rsp),%eax
  mov    %esi,0x20(%rsp)
  xor    %r11d,%r11d
  pcmpeqd %xmm11,%xmm11
  movd   0x50(%rsp),%xmm7
  mov    0x114(%rsp),%r9d
  movdqa D37(%rip),%xmm9
  mov    %eax,%edx
  mov    %eax,%esi
  pshufd $0x0,%xmm7,%xmm10
  movd   %xmm7,%ecx
  nopl   0x0(%rax)
L1577:
  mov    %esi,%eax
  sub    %edx,%eax
  cmp    $0x18,%edx
  jbe    L1899
  movd   %r11d,%xmm7
  mov    %r9d,%r8d
  pxor   %xmm5,%xmm5
  xor    %edi,%edi
  pshufd $0x0,%xmm7,%xmm6
  movd   %r12d,%xmm7
  shr    $0x2,%r8d
  paddd  D56(%rip),%xmm6
  pshufd $0x0,%xmm7,%xmm4
  movd   %eax,%xmm7
  movdqa %xmm11,%xmm12
  movdqa D190(%rip),%xmm8
  pshufd $0x0,%xmm7,%xmm13
  movdqa D56(%rip),%xmm7
  xchg   %ax,%ax
L1072:
  movdqa %xmm6,%xmm0
  movdqa %xmm13,%xmm14
  movdqa %xmm7,%xmm1
  add    $0x1,%edi
  pcmpeqd %xmm10,%xmm0
  paddd  %xmm9,%xmm7
  paddd  %xmm9,%xmm6
  movdqa %xmm0,%xmm15
  pand   %xmm0,%xmm14
  pand   %xmm0,%xmm1
  pandn  %xmm4,%xmm15
  movdqa %xmm15,%xmm4
  por    %xmm14,%xmm4
  movdqa %xmm0,%xmm14
  pandn  %xmm12,%xmm14
  movdqa %xmm14,%xmm12
  por    %xmm1,%xmm12
  movdqa %xmm8,%xmm1
  paddd  %xmm9,%xmm8
  pand   %xmm0,%xmm1
  pandn  %xmm5,%xmm0
  movdqa %xmm0,%xmm5
  por    %xmm1,%xmm5
  cmp    %edi,%r8d
  jne    L1072
  movdqa %xmm12,%xmm0
  movd   %xmm5,%r12d
  psrldq $0x8,%xmm0
  movdqa %xmm0,%xmm1
  pcmpgtd %xmm12,%xmm1
  pand   %xmm1,%xmm0
  pandn  %xmm12,%xmm1
  por    %xmm0,%xmm1
  movdqa %xmm1,%xmm6
  psrldq $0x4,%xmm6
  movdqa %xmm6,%xmm0
  pcmpgtd %xmm1,%xmm0
  pand   %xmm0,%xmm6
  pandn  %xmm1,%xmm0
  por    %xmm6,%xmm0
  movd   %xmm0,%edi
  pshufd $0x55,%xmm5,%xmm0
  cmp    $0xffffffff,%edi
  movd   %xmm0,%r10d
  cmovne %edi,%ebp
  movd   %xmm0,%edi
  movdqa %xmm5,%xmm0
  cmp    %r10d,%r12d
  punpckhdq %xmm5,%xmm0
  cmovae %r12d,%edi
  movd   %xmm0,%r8d
  cmp    %r8d,%edi
  jb     L1992
  pshufd $0x55,%xmm4,%xmm0
  movd   %xmm4,%ebx
  cmp    %r10d,%r12d
  movd   %xmm0,%r15d
  cmovb  %r15d,%ebx
L458:
  pshufd $0xff,%xmm5,%xmm0
  pshufd $0xff,%xmm4,%xmm4
  cmp    %r8d,%edi
  cmovb  %r8d,%edi
  movd   %xmm0,%r8d
  movd   %xmm4,%r10d
  cmp    %r8d,%edi
  mov    %r9d,%edi
  cmovae %ebx,%r10d
  and    $0xfffffffc,%edi
  mov    %r10d,%r12d
  lea    (%r11,%rdi,1),%r10d
  cmp    %r9d,%edi
  je     L310
L403:
  sub    %edi,%r10d
  nopw   0x0(%rax,%rax,1)
L1568:
  lea    (%r10,%rdi,1),%r8d
  cmp    %r8d,%ecx
  cmove  %edi,%ebp
  cmove  %eax,%r12d
  add    $0x1,%edi
  cmp    %edi,%edx
  jge    L1568
L310:
  lea    0x1(%r11,%rdx,1),%r11d
  sub    $0x1,%edx
  sub    $0x1,%r9d
  cmp    $0xffffffff,%edx
  jne    L1577
  mov    0x20(%rsp),%esi
L109:
  mov    (%rsp),%r15d
  test   %r15d,%r15d
  js     L1050
  movd   %esi,%xmm7
  lea    0x1(%r15),%r9d
  mov    %r15d,%edx
  xor    %r11d,%r11d
  pshufd $0x0,%xmm7,%xmm10
  pcmpeqd %xmm11,%xmm11
  nopl   0x0(%rax)
L653:
  mov    %r15d,%ecx
  sub    %edx,%ecx
  cmp    $0x18,%edx
  jbe    L367
  movd   %r11d,%xmm7
  mov    %r9d,%edi
  pxor   %xmm4,%xmm4
  xor    %eax,%eax
  pshufd $0x0,%xmm7,%xmm5
  movd   %r14d,%xmm7
  shr    $0x2,%edi
  paddd  D56(%rip),%xmm5
  pshufd $0x0,%xmm7,%xmm6
  movd   %ecx,%xmm7
  movdqa %xmm11,%xmm9
  movdqa D190(%rip),%xmm8
  pshufd $0x0,%xmm7,%xmm12
  movdqa D56(%rip),%xmm7
  cs nopw 0x0(%rax,%rax,1)
L1468:
  movdqa %xmm5,%xmm0
  movdqa %xmm12,%xmm13
  movdqa %xmm7,%xmm1
  add    $0x1,%eax
  pcmpeqd %xmm10,%xmm0
  paddd  %xmm3,%xmm7
  paddd  %xmm3,%xmm5
  movdqa %xmm0,%xmm14
  pand   %xmm0,%xmm13
  pand   %xmm0,%xmm1
  pandn  %xmm6,%xmm14
  movdqa %xmm14,%xmm6
  por    %xmm13,%xmm6
  movdqa %xmm0,%xmm13
  pandn  %xmm9,%xmm13
  movdqa %xmm13,%xmm9
  por    %xmm1,%xmm9
  movdqa %xmm8,%xmm1
  paddd  %xmm3,%xmm8
  pand   %xmm0,%xmm1
  pandn  %xmm4,%xmm0
  movdqa %xmm0,%xmm4
  por    %xmm1,%xmm4
  cmp    %eax,%edi
  jne    L1468
  movdqa %xmm9,%xmm0
  movd   %xmm4,%ebx
  psrldq $0x8,%xmm0
  movdqa %xmm0,%xmm1
  pcmpgtd %xmm9,%xmm1
  pand   %xmm1,%xmm0
  pandn  %xmm9,%xmm1
  por    %xmm0,%xmm1
  movdqa %xmm1,%xmm5
  psrldq $0x4,%xmm5
  movdqa %xmm5,%xmm0
  pcmpgtd %xmm1,%xmm0
  pand   %xmm0,%xmm5
  pandn  %xmm1,%xmm0
  por    %xmm5,%xmm0
  movd   %xmm0,%eax
  pshufd $0x55,%xmm4,%xmm0
  cmp    $0xffffffff,%eax
  movd   %xmm0,%r10d
  movd   %xmm0,%edi
  cmovne %eax,%r13d
  movdqa %xmm4,%xmm0
  cmp    %r10d,%ebx
  punpckhdq %xmm4,%xmm0
  cmovae %ebx,%edi
  movd   %xmm0,%r8d
  cmp    %r8d,%edi
  jb     L578
  pshufd $0x55,%xmm6,%xmm0
  movd   %xmm6,%eax
  cmp    %r10d,%ebx
  movd   %xmm0,%r14d
  cmovae %eax,%r14d
L180:
  pshufd $0xff,%xmm4,%xmm4
  pshufd $0xff,%xmm6,%xmm6
  cmp    %r8d,%edi
  cmovb  %r8d,%edi
  movd   %xmm4,%r8d
  movd   %xmm6,%r10d
  cmp    %r8d,%edi
  mov    %r9d,%edi
  cmovb  %r10d,%r14d
  and    $0xfffffffc,%edi
  lea    (%r11,%rdi,1),%r8d
  cmp    %r9d,%edi
  je     L401
L21:
  sub    %edi,%r8d
  nopl   0x0(%rax,%rax,1)
L631:
  lea    (%r8,%rdi,1),%eax
  cmp    %eax,%esi
  cmove  %edi,%r13d
  cmove  %ecx,%r14d
  add    $0x1,%edi
  cmp    %edi,%edx
  jge    L631
L401:
  lea    0x1(%r11,%rdx,1),%r11d
  sub    $0x1,%edx
  sub    $0x1,%r9d
  cmp    $0xffffffff,%edx
  jne    L653
L1050:
  mov    0x10(%rsp),%r15d
  test   %r15d,%r15d
  jle    L885
  lea    (%r12,%r14,1),%eax
  pxor   %xmm1,%xmm1
  xor    %ebx,%ebx
  mov    %r12d,0x20(%rsp)
  cvtsi2sd %eax,%xmm1
  mov    %ebp,0x28(%rsp)
  mov    0xc8(%rsp),%r15
  mov    %rbx,%rbp
  mov    0xe0(%rsp),%r12
  mov    0x40(%rsp),%rbx
  nopl   0x0(%rax,%rax,1)
L348:
  movsd  (%r15,%rbp,8),%xmm0
  movsd  %xmm1,(%rsp)
  call   <pow@plt>
  movdqa D37(%rip),%xmm3
  movsd  (%rsp),%xmm1
  movsd  %xmm0,(%rbx,%rbp,8)
  add    $0x1,%rbp
  cmp    %r12,%rbp
  movdqa %xmm3,%xmm2
  jne    L348
  mov    0x20(%rsp),%r12d
  mov    0x28(%rsp),%ebp
L885:
  mov    0x14(%rsp),%ebx
  test   %ebx,%ebx
  jle    L540
  lea    0x0(%r13,%rbp,1),%eax
  pxor   %xmm1,%xmm1
  xor    %ebx,%ebx
  mov    %r12d,0x20(%rsp)
  cvtsi2sd %eax,%xmm1
  mov    %ebp,0x28(%rsp)
  mov    0xd0(%rsp),%r15
  mov    %rbx,%rbp
  mov    0xe8(%rsp),%r12
  mov    0x18(%rsp),%rbx
  nopl   0x0(%rax,%rax,1)
L1860:
  movsd  (%r15,%rbp,8),%xmm0
  movsd  %xmm1,(%rsp)
  call   <pow@plt>
  movdqa D37(%rip),%xmm3
  movsd  (%rsp),%xmm1
  movsd  %xmm0,(%rbx,%rbp,8)
  add    $0x1,%rbp
  cmp    %r12,%rbp
  movdqa %xmm3,%xmm2
  jne    L1860
  mov    0x20(%rsp),%r12d
  mov    0x28(%rsp),%ebp
L540:
  mov    0x8(%rsp),%r11d
  test   %r11d,%r11d
  je     L1385
  mov    0x8(%rsp),%eax
  cmp    0x1d0(%rsp),%eax
  jl     L1453
  mov    0x1a8(%rsp),%rax
  mov    0xfc(%rsp),%r9d
  pxor   %xmm0,%xmm0
  mov    %rax,0x30(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x38(%rsp)
  test   %r9d,%r9d
  jle    L2
  mov    %r14d,0x54(%rsp)
  mov    0xb0(%rsp),%r15
  mov    %r13d,0x58(%rsp)
  mov    %r12d,0x60(%rsp)
  mov    %ebp,0x68(%rsp)
  nop
L1077:
  mov    0x28(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%ecx
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%esi
  mov    0x30(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r14d
  sub    0x1a0(%rsp),%r14d
  cmovs  %edx,%r14d
  add    0x1a0(%rsp),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,%r13d
  cmp    %esi,%edi
  jge    L648
  mov    0x40(%rsp),%rax
  movslq %r14d,%rdx
  movslq %edi,%r8
  sub    $0x1,%esi
  sub    %edi,%esi
  mov    %r13d,%r12d
  lea    (%rax,%rdx,8),%r11
  mov    0x18(%rsp),%rax
  add    %r8,%rsi
  sub    %r14d,%r12d
  lea    (%rax,%r8,8),%rbx
  mov    %ecx,%eax
  mov    0x200(%rsp),%rcx
  imul   %edi,%eax
  mov    0x38(%rsp),%rdi
  lea    (%rdi,%rsi,8),%rsi
  mov    %rsi,(%rsp)
  mov    %r12d,%esi
  cltq
  shr    %esi
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  lea    -0x1(%rsi),%r10d
  mov    %r12d,%esi
  shl    $0x3,%rax
  and    $0xfffffffe,%esi
  add    $0x1,%r10
  add    %rax,%rcx
  add    %rax,%rdx
  mov    %esi,%ebp
  mov    %esi,0x8(%rsp)
  shl    $0x4,%r10
  add    0x218(%rsp),%rax
  shl    $0x3,%rbp
  lea    (%r11,%rbp,1),%rsi
  mov    %rsi,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L855:
  movsd  (%rbx),%xmm4
  mov    %rcx,%r8
  mov    %rdx,%rdi
  mov    %rax,%rsi
  cmp    %r13d,%r14d
  jge    L1818
  cmp    $0x1,%r12d
  je     L1321
  movapd %xmm4,%xmm6
  xor    %esi,%esi
  unpcklpd %xmm6,%xmm6
  nopw   0x0(%rax,%rax,1)
L424:
  movupd (%r11,%rsi,1),%xmm1
  movupd (%rcx,%rsi,1),%xmm7
  mulpd  %xmm6,%xmm1
  mulpd  %xmm7,%xmm1
  movupd (%rdx,%rsi,1),%xmm7
  mulpd  %xmm7,%xmm1
  movupd (%rax,%rsi,1),%xmm7
  add    $0x10,%rsi
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r10,%rsi
  jne    L424
  lea    (%rcx,%rbp,1),%r8
  lea    (%rdx,%rbp,1),%rdi
  lea    (%rax,%rbp,1),%rsi
  cmp    0x8(%rsp),%r12d
  je     L1818
  mov    0x20(%rsp),%r9
L1440:
  mulsd  (%r9),%xmm4
  movsd  (%r8),%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  (%rdi),%xmm1
  mulsd  (%rsi),%xmm1
  addsd  %xmm1,%xmm0
L1818:
  add    $0x8,%rbx
  add    %r15,%rcx
  add    %r15,%rdx
  add    %r15,%rax
  cmp    (%rsp),%rbx
  jne    L855
L648:
  addq   $0x8,0x28(%rsp)
  mov    0x28(%rsp),%rax
  addq   $0x8,0x30(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L1077
L481:
  mov    0x54(%rsp),%r14d
  mov    0x58(%rsp),%r13d
  mov    0x60(%rsp),%r12d
  mov    0x68(%rsp),%ebp
L2:
  mov    0x70(%rsp),%rax
  mov    0x80(%rsp),%rbx
  addl   $0x1,0x50(%rsp)
  mov    0x50(%rsp),%ecx
  movsd  %xmm0,(%rax)
  add    $0x8,%rax
  mov    %rax,0x70(%rsp)
  mov    0xf0(%rsp),%rax
  movsd  %xmm0,(%rbx)
  add    %rax,%rbx
  mov    %rbx,0x80(%rsp)
  cmp    %ecx,0xa8(%rsp)
  jg     L981
  mov    %r14d,0x98(%rsp)
  mov    0xb0(%rsp),%r15
  mov    %r13d,%r14d
  mov    %r12d,0xa0(%rsp)
  mov    0x94(%rsp),%ebx
  mov    %ebp,0xac(%rsp)
  cmp    %ebx,0x50(%rsp)
  jg     L790
L704:
  mov    0x50(%rsp),%eax
  mov    0x148(%rsp),%ebx
  mov    %r14d,0xb0(%rsp)
  add    %eax,%ebx
  imul   0x1f0(%rsp),%eax
  add    0xd8(%rsp),%eax
  mov    %eax,0xc4(%rsp)
  mov    0x140(%rsp),%eax
  mov    %ebx,0xc0(%rsp)
  mov    %eax,0xa8(%rsp)
  jmp    L1247
L807:
  mov    0x1b8(%rsp),%rbx
  mov    (%rbx,%rax,4),%ebx
  mov    %ebx,0x68(%rsp)
  mov    0x1c0(%rsp),%rbx
  mov    (%rbx,%rax,4),%eax
  mov    %eax,0x94(%rsp)
L1484:
  movslq 0x28(%rsp),%rax
  cmp    %eax,0x1d0(%rsp)
  jle    L1496
  mov    0x1b8(%rsp),%rbx
  mov    (%rbx,%rax,4),%ebx
  mov    %ebx,0x78(%rsp)
  mov    0x1c0(%rsp),%rbx
  mov    (%rbx,%rax,4),%eax
  mov    %eax,0x7c(%rsp)
L1496:
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  je     L478
  mov    0x28(%rsp),%ebx
  mov    0x110(%rsp),%ebp
  cmp    %eax,0x1d0(%rsp)
  cmovg  0x10c(%rsp),%ebp
  test   %ebx,%ebx
  je     L344
L823:
  lea    -0x1(%rbx),%eax
  mov    0xd8(%rsp),%edx
  sub    0x88(%rsp),%edx
  imul   0x90(%rsp),%eax
  sub    %eax,%edx
  mov    %edx,%r14d
  cmp    %ebx,0x1d0(%rsp)
  jle    L1351
  cmpb   $0x0,0xdf(%rsp)
  je     L942
  test   %ebx,%ebx
  jle    L942
  cmp    %r12d,%edx
  jge    L942
L2018:
  addl   $0x1,0x50(%rsp)
  mov    0x1f0(%rsp),%ecx
  addl   $0x1,0xc0(%rsp)
  mov    0x50(%rsp),%eax
  add    %ecx,0xc4(%rsp)
  cmp    0xa8(%rsp),%eax
  jg     L1633
L1247:
  mov    0x50(%rsp),%eax
  mov    0x88(%rsp),%ebx
  movl   $0x0,0x28(%rsp)
  mov    0x90(%rsp),%ecx
  sub    %ebx,%eax
  cltd
  idiv   %ecx
  mov    %eax,0xf8(%rsp)
  add    $0x1,%eax
  mov    %edx,%r12d
  cmp    %eax,0x1d0(%rsp)
  setg   %dl
  test   %eax,%eax
  mov    %eax,0x8(%rsp)
  setg   %al
  and    %eax,%edx
  mov    0xa8(%rsp),%eax
  mov    %dl,0xdf(%rsp)
  cmp    %eax,%ebx
  jg     L681
  mov    0xd8(%rsp),%eax
  sub    %ebx,%eax
  cltd
  idiv   %ecx
  add    $0x1,%eax
  mov    %eax,0x28(%rsp)
L681:
  movslq 0x8(%rsp),%rax
  cmp    %eax,0x1d0(%rsp)
  jg     L807
  movl   $0x0,0x94(%rsp)
  movl   $0x0,0x68(%rsp)
  jmp    L1484
  nopw   0x0(%rax,%rax,1)
L578:
  movdqa %xmm6,%xmm0
  punpckhdq %xmm6,%xmm0
  movd   %xmm0,%r14d
  jmp    L180
  nopw   0x0(%rax,%rax,1)
L1992:
  movdqa %xmm4,%xmm0
  punpckhdq %xmm4,%xmm0
  movd   %xmm0,%ebx
  jmp    L458
L1321:
  mov    %r11,%r9
  jmp    L1440
L1899:
  mov    %r11d,%r10d
  xor    %edi,%edi
  jmp    L403
L367:
  mov    %r11d,%r8d
  xor    %edi,%edi
  jmp    L21
L478:
  mov    0x28(%rsp),%ebx
  mov    0x8c(%rsp),%ebp
  mov    0x50(%rsp),%r12d
  test   %ebx,%ebx
  jne    L823
L344:
  mov    0x8c(%rsp),%r13d
  mov    0x108(%rsp),%r14d
L454:
  test   %ebp,%ebp
  js     L1532
  movd   %r12d,%xmm7
  mov    %r15,(%rsp)
  lea    0x1(%rbp),%r8d
  mov    %ebp,%eax
  pshufd $0x0,%xmm7,%xmm9
  mov    0xa0(%rsp),%edx
  mov    0xac(%rsp),%ecx
  xor    %r10d,%r10d
  movdqa D37(%rip),%xmm7
  pxor   %xmm8,%xmm8
  pcmpeqd %xmm10,%xmm10
  nopl   (%rax)
L527:
  mov    %ebp,%esi
  sub    %eax,%esi
  cmp    $0x18,%eax
  jbe    L818
  movd   %r10d,%xmm6
  pxor   %xmm1,%xmm1
  movdqa %xmm10,%xmm4
  mov    %r8d,%edi
  pshufd $0x0,%xmm6,%xmm5
  movd   %edx,%xmm6
  paddd  D56(%rip),%xmm5
  xor    %edx,%edx
  pshufd $0x0,%xmm6,%xmm3
  movd   %esi,%xmm6
  shr    $0x2,%edi
  movdqa D190(%rip),%xmm11
  pshufd $0x0,%xmm6,%xmm12
  movdqa D56(%rip),%xmm6
  nopl   0x0(%rax)
L73:
  movdqa %xmm5,%xmm0
  movdqa %xmm6,%xmm13
  paddd  %xmm7,%xmm5
  add    $0x1,%edx
  pcmpeqd %xmm9,%xmm0
  paddd  %xmm7,%xmm6
  pcmpeqd %xmm8,%xmm0
  movdqa %xmm0,%xmm14
  pand   %xmm0,%xmm3
  pand   %xmm0,%xmm4
  pandn  %xmm12,%xmm14
  pand   %xmm0,%xmm1
  por    %xmm14,%xmm3
  movdqa %xmm0,%xmm14
  pandn  %xmm11,%xmm0
  pandn  %xmm13,%xmm14
  por    %xmm0,%xmm1
  paddd  %xmm7,%xmm11
  por    %xmm14,%xmm4
  cmp    %edx,%edi
  jne    L73
  movdqa %xmm4,%xmm5
  movd   %xmm1,%ebx
  psrldq $0x8,%xmm5
  movdqa %xmm5,%xmm0
  pcmpgtd %xmm4,%xmm0
  pand   %xmm0,%xmm5
  pandn  %xmm4,%xmm0
  movdqa %xmm0,%xmm4
  por    %xmm5,%xmm4
  movdqa %xmm4,%xmm5
  psrldq $0x4,%xmm5
  movdqa %xmm5,%xmm0
  pcmpgtd %xmm4,%xmm0
  pand   %xmm0,%xmm5
  pandn  %xmm4,%xmm0
  por    %xmm5,%xmm0
  movd   %xmm0,%edx
  pshufd $0x55,%xmm1,%xmm0
  cmp    $0xffffffff,%edx
  movd   %xmm0,%r11d
  movd   %xmm0,%edi
  cmovne %edx,%ecx
  movdqa %xmm1,%xmm0
  cmp    %r11d,%ebx
  punpckhdq %xmm1,%xmm0
  cmovae %ebx,%edi
  movd   %xmm0,%r9d
  cmp    %r9d,%edi
  jb     L1673
  pshufd $0x55,%xmm3,%xmm0
  movd   %xmm3,%edx
  cmp    %r11d,%ebx
  movd   %xmm0,%r15d
  cmovb  %r15d,%edx
L512:
  pshufd $0xff,%xmm1,%xmm1
  pshufd $0xff,%xmm3,%xmm3
  cmp    %r9d,%edi
  cmovb  %r9d,%edi
  movd   %xmm1,%r9d
  movd   %xmm3,%r11d
  cmp    %r9d,%edi
  mov    %r8d,%edi
  cmovb  %r11d,%edx
  and    $0xfffffffc,%edi
  lea    (%r10,%rdi,1),%r11d
  cmp    %r8d,%edi
  je     L1277
L656:
  sub    %edi,%r11d
  nopl   0x0(%rax)
L1483:
  lea    (%r11,%rdi,1),%r9d
  cmp    %r9d,%r12d
  cmove  %edi,%ecx
  cmove  %esi,%edx
  add    $0x1,%edi
  cmp    %edi,%eax
  jge    L1483
L1277:
  lea    0x1(%r10,%rax,1),%r10d
  sub    $0x1,%eax
  sub    $0x1,%r8d
  cmp    $0xffffffff,%eax
  jne    L527
  mov    %edx,0xa0(%rsp)
  mov    (%rsp),%r15
  mov    %ecx,0xac(%rsp)
L1532:
  test   %r13d,%r13d
  js     L1740
  movd   %r14d,%xmm7
  lea    0x1(%r13),%r8d
  mov    %r13d,%eax
  xor    %r10d,%r10d
  mov    0x98(%rsp),%ecx
  pshufd $0x0,%xmm7,%xmm8
  pcmpeqd %xmm9,%xmm9
  mov    0xb0(%rsp),%edi
  pxor   %xmm7,%xmm7
L1241:
  mov    %r13d,%r9d
  sub    %eax,%r9d
  cmp    $0x18,%eax
  jbe    L1030
  movd   %r10d,%xmm6
  mov    %r8d,%esi
  pxor   %xmm1,%xmm1
  xor    %edx,%edx
  pshufd $0x0,%xmm6,%xmm5
  movd   %ecx,%xmm6
  shr    $0x2,%esi
  paddd  D56(%rip),%xmm5
  pshufd $0x0,%xmm6,%xmm3
  movd   %r9d,%xmm6
  movdqa %xmm9,%xmm4
  movdqa D190(%rip),%xmm10
  pshufd $0x0,%xmm6,%xmm11
  movdqa D56(%rip),%xmm6
  nopw   0x0(%rax,%rax,1)
L586:
  movdqa %xmm5,%xmm0
  movdqa %xmm6,%xmm12
  paddd  %xmm2,%xmm5
  add    $0x1,%edx
  pcmpeqd %xmm8,%xmm0
  paddd  %xmm2,%xmm6
  pcmpeqd %xmm7,%xmm0
  movdqa %xmm0,%xmm13
  pand   %xmm0,%xmm3
  pand   %xmm0,%xmm4
  pandn  %xmm11,%xmm13
  pand   %xmm0,%xmm1
  por    %xmm13,%xmm3
  movdqa %xmm0,%xmm13
  pandn  %xmm10,%xmm0
  pandn  %xmm12,%xmm13
  por    %xmm0,%xmm1
  paddd  %xmm2,%xmm10
  por    %xmm13,%xmm4
  cmp    %edx,%esi
  jne    L586
  movdqa %xmm4,%xmm5
  movd   %xmm1,%ebx
  psrldq $0x8,%xmm5
  movdqa %xmm5,%xmm0
  pcmpgtd %xmm4,%xmm0
  pand   %xmm0,%xmm5
  pandn  %xmm4,%xmm0
  movdqa %xmm0,%xmm4
  por    %xmm5,%xmm4
  movdqa %xmm4,%xmm5
  psrldq $0x4,%xmm5
  movdqa %xmm5,%xmm0
  pcmpgtd %xmm4,%xmm0
  pand   %xmm0,%xmm5
  pandn  %xmm4,%xmm0
  por    %xmm5,%xmm0
  movd   %xmm0,%edx
  pshufd $0x55,%xmm1,%xmm0
  cmp    $0xffffffff,%edx
  movd   %xmm0,%esi
  cmovne %edx,%edi
  movd   %xmm0,%edx
  movdqa %xmm1,%xmm0
  cmp    %esi,%ebx
  punpckhdq %xmm1,%xmm0
  cmovae %ebx,%edx
  movd   %xmm0,%r11d
  cmp    %r11d,%edx
  jb     L146
  pshufd $0x55,%xmm3,%xmm0
  movd   %xmm3,%ebp
  cmp    %esi,%ebx
  movd   %xmm0,%ecx
  cmovae %ebp,%ecx
L641:
  pshufd $0xff,%xmm1,%xmm1
  pshufd $0xff,%xmm3,%xmm0
  cmp    %r11d,%edx
  cmovae %edx,%r11d
  movd   %xmm1,%edx
  movd   %xmm0,%esi
  cmp    %edx,%r11d
  mov    %r8d,%edx
  cmovb  %esi,%ecx
  and    $0xfffffffc,%edx
  lea    (%r10,%rdx,1),%r11d
  cmp    %r8d,%edx
  je     L761
L2149:
  sub    %edx,%r11d
L60:
  lea    (%r11,%rdx,1),%esi
  cmp    %esi,%r14d
  cmove  %edx,%edi
  cmove  %r9d,%ecx
  add    $0x1,%edx
  cmp    %edx,%eax
  jge    L60
L761:
  lea    0x1(%r10,%rax,1),%r10d
  sub    $0x1,%eax
  sub    $0x1,%r8d
  cmp    $0xffffffff,%eax
  jne    L1241
  mov    %ecx,0x98(%rsp)
  mov    %edi,0xb0(%rsp)
L1740:
  mov    0x10(%rsp),%esi
  test   %esi,%esi
  jle    L764
  pxor   %xmm1,%xmm1
  xor    %ebx,%ebx
  mov    %r12d,0x20(%rsp)
  mov    0x40(%rsp),%r13
  mov    0x98(%rsp),%eax
  add    0xa0(%rsp),%eax
  mov    %rbx,%r12
  cvtsi2sd %eax,%xmm1
  mov    0xc8(%rsp),%rbp
  mov    0xe0(%rsp),%rbx
  nopl   (%rax)
L2012:
  movsd  0x0(%rbp,%r12,8),%xmm0
  movsd  %xmm1,(%rsp)
  call   <pow@plt>
  movsd  (%rsp),%xmm1
  movdqa D37(%rip),%xmm2
  movsd  %xmm0,0x0(%r13,%r12,8)
  add    $0x1,%r12
  cmp    %rbx,%r12
  jne    L2012
  mov    0x20(%rsp),%r12d
L764:
  mov    0x14(%rsp),%ecx
  test   %ecx,%ecx
  jle    L43
  pxor   %xmm1,%xmm1
  xor    %ebx,%ebx
  mov    %r12d,0x20(%rsp)
  mov    0x18(%rsp),%r13
  mov    0xb0(%rsp),%eax
  add    0xac(%rsp),%eax
  mov    %rbx,%r12
  cvtsi2sd %eax,%xmm1
  mov    0xd0(%rsp),%rbp
  mov    0xe8(%rsp),%rbx
  nopl   0x0(%rax,%rax,1)
L504:
  movsd  0x0(%rbp,%r12,8),%xmm0
  movsd  %xmm1,(%rsp)
  call   <pow@plt>
  movsd  (%rsp),%xmm1
  movdqa D37(%rip),%xmm2
  movsd  %xmm0,0x0(%r13,%r12,8)
  add    $0x1,%r12
  cmp    %rbx,%r12
  jne    L504
  mov    0x20(%rsp),%r12d
L43:
  mov    0x8(%rsp),%edx
  test   %edx,%edx
  jne    L1198
  mov    0x28(%rsp),%eax
  test   %eax,%eax
  je     L830
  mov    0x28(%rsp),%eax
  cmp    %eax,0x1d0(%rsp)
  jg     L4
  mov    0xfc(%rsp),%eax
  test   %eax,%eax
  jle    L1432
  mov    0x1a8(%rsp),%rax
  pxor   %xmm0,%xmm0
  mov    %rax,0x30(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x38(%rsp)
  nopw   0x0(%rax,%rax,1)
L2147:
  mov    0x28(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%ecx
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%esi
  mov    0x30(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r14d
  sub    0x1a0(%rsp),%r14d
  cmovs  %edx,%r14d
  add    0x1a0(%rsp),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,%r13d
  cmp    %edi,%esi
  jle    L2189
  mov    0x40(%rsp),%rax
  movslq %r14d,%rdx
  movslq %edi,%r8
  sub    $0x1,%esi
  sub    %edi,%esi
  mov    %r13d,%r12d
  lea    (%rax,%rdx,8),%r11
  mov    0x18(%rsp),%rax
  add    %r8,%rsi
  sub    %r14d,%r12d
  lea    (%rax,%r8,8),%rbx
  mov    %ecx,%eax
  mov    0x200(%rsp),%rcx
  imul   %edi,%eax
  mov    0x38(%rsp),%rdi
  lea    (%rdi,%rsi,8),%rsi
  mov    %rsi,(%rsp)
  mov    %r12d,%esi
  cltq
  shr    %esi
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  lea    -0x1(%rsi),%r10d
  mov    %r12d,%esi
  shl    $0x3,%rax
  and    $0xfffffffe,%esi
  add    $0x1,%r10
  add    %rax,%rcx
  add    %rax,%rdx
  mov    %esi,%ebp
  mov    %esi,0x8(%rsp)
  shl    $0x4,%r10
  add    0x218(%rsp),%rax
  shl    $0x3,%rbp
  lea    (%r11,%rbp,1),%rsi
  mov    %rsi,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L53:
  movsd  (%rbx),%xmm3
  mov    %rcx,%r8
  mov    %rdx,%rdi
  mov    %rax,%rsi
  cmp    %r14d,%r13d
  jle    L1387
  cmp    $0x1,%r12d
  je     L591
  movapd %xmm3,%xmm5
  xor    %esi,%esi
  unpcklpd %xmm5,%xmm5
  nopw   0x0(%rax,%rax,1)
L1591:
  movupd (%r11,%rsi,1),%xmm1
  movupd (%rcx,%rsi,1),%xmm6
  mulpd  %xmm5,%xmm1
  mulpd  %xmm6,%xmm1
  movupd (%rdx,%rsi,1),%xmm6
  mulpd  %xmm6,%xmm1
  movupd (%rax,%rsi,1),%xmm6
  add    $0x10,%rsi
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rsi,%r10
  jne    L1591
  lea    (%rcx,%rbp,1),%r8
  lea    (%rdx,%rbp,1),%rdi
  lea    (%rax,%rbp,1),%rsi
  cmp    0x8(%rsp),%r12d
  je     L1387
  mov    0x20(%rsp),%r9
L1082:
  mulsd  (%r9),%xmm3
  movsd  (%r8),%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  (%rdi),%xmm1
  mulsd  (%rsi),%xmm1
  addsd  %xmm1,%xmm0
L1387:
  add    $0x8,%rbx
  add    %r15,%rcx
  add    %r15,%rdx
  add    %r15,%rax
  cmp    (%rsp),%rbx
  jne    L53
L2189:
  addq   $0x8,0x28(%rsp)
  mov    0x28(%rsp),%rax
  addq   $0x8,0x30(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L2147
L249:
  movslq 0xc0(%rsp),%rax
  mov    0x1e0(%rsp),%rbx
  movsd  %xmm0,(%rbx,%rax,8)
  movslq 0xc4(%rsp),%rax
  movsd  %xmm0,(%rbx,%rax,8)
  jmp    L2018
  cs nopw 0x0(%rax,%rax,1)
L1673:
  movdqa %xmm3,%xmm0
  punpckhdq %xmm3,%xmm0
  movd   %xmm0,%edx
  jmp    L512
  nopl   0x0(%rax)
L146:
  movdqa %xmm3,%xmm0
  punpckhdq %xmm3,%xmm0
  movd   %xmm0,%ecx
  jmp    L641
L591:
  mov    %r11,%r9
  jmp    L1082
L1030:
  mov    %r10d,%r11d
  xor    %edx,%edx
  jmp    L2149
L818:
  mov    %r10d,%r11d
  xor    %edi,%edi
  jmp    L656
L521:
  mov    0xd8(%rsp),%esi
  sub    0x88(%rsp),%esi
  mov    %esi,%eax
  cltd
  idivl  0x90(%rsp)
  lea    0x1(%rax),%ebx
  mov    %ebx,0x8(%rsp)
  cmp    0x1d0(%rsp),%ebx
  jge    L287
  mov    0x1b8(%rsp),%rcx
  movslq %ebx,%rdx
  mov    (%rcx,%rdx,4),%ecx
  mov    %ecx,0x78(%rsp)
  mov    0x1c0(%rsp),%rcx
  mov    (%rcx,%rdx,4),%ecx
  mov    %ecx,0x7c(%rsp)
  test   %ebx,%ebx
  je     L725
  imul   0x90(%rsp),%eax
  sub    %eax,%esi
  mov    0x10c(%rsp),%eax
  mov    %eax,(%rsp)
L2098:
  mov    0x8c(%rsp),%eax
  test   %eax,%eax
  jns    L661
  jmp    L109
L1198:
  movslq 0x8(%rsp),%rax
  cmp    %eax,0x1d0(%rsp)
  jle    L1096
  mov    0x28(%rsp),%ebx
  test   %ebx,%ebx
  je     L557
  mov    0x28(%rsp),%eax
  cmp    %eax,0x1d0(%rsp)
  jg     L279
  mov    0xfc(%rsp),%r8d
  test   %r8d,%r8d
  jle    L1432
  movslq 0x8(%rsp),%rax
  mov    0x1c8(%rsp),%rbx
  pxor   %xmm0,%xmm0
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x80(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %rax,0x70(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0xb8(%rsp)
L546:
  mov    0x60(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    $0x0,%r10d
  mov    0x10(%rsp),%r11d
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x70(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r10d
  add    0x1a0(%rsp),%edx
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %r10d,0x38(%rsp)
  mov    %edx,0x30(%rsp)
  mov    %edx,%r9d
  cmp    %edi,%eax
  jle    L826
  mov    0x94(%rsp),%edx
  movslq %edi,%r8
  sub    $0x1,%eax
  sub    %r10d,%r9d
  mov    0x68(%rsp),%esi
  sub    %edi,%eax
  movslq %r10d,%rcx
  mov    %r9d,(%rsp)
  add    %edi,%edx
  mov    0x80(%rsp),%rbx
  add    %r8,%rax
  mov    0x200(%rsp),%r14
  imul   %r11d,%edx
  add    %r10d,%esi
  movslq %esi,%rsi
  mov    (%rbx),%ebx
  movslq %edx,%rdx
  mov    %ebx,0x28(%rsp)
  mov    0x40(%rsp),%rbx
  lea    (%rdx,%rsi,1),%rbp
  mov    0x18(%rsp),%rdx
  mov    0x200(%rsp),%rsi
  lea    (%rbx,%rcx,8),%rbx
  shl    $0x3,%rbp
  lea    (%rdx,%r8,8),%r12
  mov    %r11d,%edx
  add    %rbp,%r14
  add    0x208(%rsp),%rbp
  imul   %edi,%edx
  mov    0xb8(%rsp),%rdi
  lea    (%rdi,%rax,8),%rax
  mov    %r9d,%edi
  mov    %rax,0x20(%rsp)
  mov    %r9d,%eax
  and    $0xfffffffe,%edi
  movslq %edx,%rdx
  shr    %eax
  mov    %edi,%r13d
  add    %rcx,%rdx
  mov    %edi,0x54(%rsp)
  lea    -0x1(%rax),%r11d
  shl    $0x3,%r13
  mov    0x210(%rsp),%rcx
  shl    $0x3,%rdx
  add    $0x1,%r11
  lea    (%rbx,%r13,1),%rax
  add    %rdx,%rsi
  shl    $0x4,%r11
  mov    %rax,0x58(%rsp)
  add    %rdx,%rcx
  add    0x218(%rsp),%rdx
  mov    %r11,0x8(%rsp)
L56:
  mov    0x28(%rsp),%edi
  mov    %rbp,%rax
  movsd  (%r12),%xmm4
  mov    %rsi,%r9
  mov    0x38(%rsp),%r11d
  mov    %rcx,%r8
  test   %edi,%edi
  mov    %rdx,%rdi
  cmove  %r14,%rax
  cmp    %r11d,0x30(%rsp)
  jle    L1871
  cmpl   $0x1,(%rsp)
  je     L752
  movapd %xmm4,%xmm5
  mov    0x8(%rsp),%r11
  xor    %edi,%edi
  unpcklpd %xmm5,%xmm5
  nopl   (%rax)
L1708:
  movupd (%rbx,%rdi,1),%xmm3
  movupd (%rsi,%rdi,1),%xmm6
  movupd (%rax,%rdi,1),%xmm1
  movupd (%rcx,%rdi,1),%xmm7
  mulpd  %xmm5,%xmm3
  subpd  %xmm6,%xmm1
  movupd (%rdx,%rdi,1),%xmm6
  add    $0x10,%rdi
  mulpd  %xmm3,%xmm1
  mulpd  %xmm7,%xmm1
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rdi,%r11
  jne    L1708
  mov    %r11,0x8(%rsp)
  lea    (%rsi,%r13,1),%r9
  add    %r13,%rax
  lea    (%rcx,%r13,1),%r8
  mov    0x54(%rsp),%r11d
  lea    (%rdx,%r13,1),%rdi
  cmp    %r11d,(%rsp)
  je     L1871
  mov    0x58(%rsp),%r10
L1773:
  movsd  (%r10),%xmm3
  movsd  (%rax),%xmm1
  subsd  (%r9),%xmm1
  mulsd  %xmm4,%xmm3
  mulsd  %xmm3,%xmm1
  mulsd  (%r8),%xmm1
  mulsd  (%rdi),%xmm1
  addsd  %xmm1,%xmm0
L1871:
  add    %r15,%r14
  add    %r15,%rbp
  add    $0x8,%r12
  add    %r15,%rsi
  add    %r15,%rcx
  add    %r15,%rdx
  cmp    %r12,0x20(%rsp)
  jne    L56
L826:
  addq   $0x8,0x60(%rsp)
  mov    0x60(%rsp),%rax
  addq   $0x8,0x70(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L546
  jmp    L249
L752:
  mov    %rbx,%r10
  jmp    L1773
L1351:
  mov    0x110(%rsp),%r13d
  jmp    L454
L287:
  mov    0x8(%rsp),%edx
  test   %edx,%edx
  je     L725
  imul   0x90(%rsp),%eax
  sub    %eax,%esi
  mov    0x110(%rsp),%eax
  mov    %eax,(%rsp)
  jmp    L2098
L1096:
  mov    0x28(%rsp),%r11d
  test   %r11d,%r11d
  je     L330
  mov    0x28(%rsp),%eax
  cmp    %eax,0x1d0(%rsp)
  jg     L1821
  mov    0xfc(%rsp),%r9d
  test   %r9d,%r9d
  jle    L1432
  mov    0x18(%rsp),%rax
  pxor   %xmm0,%xmm0
  movq   $0x0,0x8(%rsp)
  mov    0x8(%rsp),%rbx
  add    $0x8,%rax
  mov    %rax,0x20(%rsp)
L1920:
  mov    0x1b0(%rsp),%rax
  mov    $0x0,%edx
  cvttsd2si (%rax,%rbx,8),%eax
  mov    %eax,%esi
  sub    0x1a0(%rsp),%esi
  cmovs  %edx,%esi
  mov    0x14(%rsp),%edx
  add    0x1a0(%rsp),%eax
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    $0x0,%edx
  mov    %eax,%ecx
  mov    0x1a8(%rsp),%rax
  cvttsd2si (%rax,%rbx,8),%eax
  mov    0x10(%rsp),%ebx
  mov    %eax,%r12d
  sub    0x1a0(%rsp),%r12d
  cmovs  %edx,%r12d
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%ebp
  cmp    %esi,%ecx
  jle    L1318
  mov    0x40(%rsp),%rax
  movslq %r12d,%rdx
  movslq %esi,%rdi
  sub    $0x1,%ecx
  sub    %esi,%ecx
  lea    (%rax,%rdx,8),%r9
  mov    0x18(%rsp),%rax
  add    %rdi,%rcx
  lea    (%rax,%rdi,8),%r10
  mov    %ebx,%eax
  mov    0x20(%rsp),%rbx
  imul   %esi,%eax
  lea    (%rbx,%rcx,8),%r13
  mov    %ebp,%ebx
  sub    %r12d,%ebx
  mov    %ebx,%r14d
  mov    %ebx,%ecx
  cltq
  and    $0xfffffffe,%r14d
  shr    %ecx
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  mov    %r14d,%r11d
  lea    -0x1(%rcx),%r8d
  shl    $0x3,%rax
  shl    $0x3,%r11
  add    $0x1,%r8
  add    %rax,%rdx
  add    0x218(%rsp),%rax
  lea    (%r9,%r11,1),%rcx
  shl    $0x4,%r8
  mov    %rcx,(%rsp)
  nopw   0x0(%rax,%rax,1)
L703:
  movsd  (%r10),%xmm3
  mov    %rdx,%rsi
  mov    %rax,%rcx
  cmp    %r12d,%ebp
  jle    L84
  cmp    $0x1,%ebx
  je     L1789
  movapd %xmm3,%xmm5
  xor    %ecx,%ecx
  unpcklpd %xmm5,%xmm5
  nopl   0x0(%rax,%rax,1)
L982:
  movupd (%r9,%rcx,1),%xmm1
  movupd (%rdx,%rcx,1),%xmm7
  movupd (%rax,%rcx,1),%xmm6
  add    $0x10,%rcx
  mulpd  %xmm5,%xmm1
  mulpd  %xmm7,%xmm1
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r8,%rcx
  jne    L982
  mov    (%rsp),%rdi
  lea    (%rdx,%r11,1),%rsi
  lea    (%rax,%r11,1),%rcx
  cmp    %r14d,%ebx
  je     L84
L274:
  mulsd  (%rdi),%xmm3
  movsd  (%rsi),%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  (%rcx),%xmm1
  addsd  %xmm1,%xmm0
L84:
  add    $0x8,%r10
  add    %r15,%rdx
  add    %r15,%rax
  cmp    %r13,%r10
  jne    L703
L1318:
  mov    0x8(%rsp),%rbx
  lea    0x1(%rbx),%rax
  cmp    0x128(%rsp),%rbx
  je     L249
  mov    %rax,0x8(%rsp)
  mov    %rax,%rbx
  jmp    L1920
L1789:
  mov    %r9,%rdi
  jmp    L274
L4:
  mov    0xfc(%rsp),%eax
  test   %eax,%eax
  jle    L1432
  movslq 0x28(%rsp),%rax
  mov    0x1c8(%rsp),%rbx
  pxor   %xmm0,%xmm0
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x70(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %rax,0x68(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x80(%rsp)
  xchg   %ax,%ax
L1469:
  mov    0x60(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    $0x0,%r10d
  mov    0x10(%rsp),%r11d
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x68(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r10d
  add    0x1a0(%rsp),%edx
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %r10d,0x28(%rsp)
  mov    %edx,0x20(%rsp)
  mov    %edx,%r9d
  cmp    %edi,%eax
  jle    L1243
  mov    0x7c(%rsp),%edx
  mov    0x78(%rsp),%esi
  movslq %edi,%r8
  sub    $0x1,%eax
  sub    %edi,%eax
  mov    0x70(%rsp),%rbx
  sub    %r10d,%r9d
  movslq %r10d,%rcx
  add    %edi,%edx
  add    %r10d,%esi
  add    %r8,%rax
  mov    %r9d,(%rsp)
  imul   %r11d,%edx
  movslq %esi,%rsi
  mov    (%rbx),%ebx
  mov    0x200(%rsp),%r14
  mov    %ebx,0x38(%rsp)
  mov    0x40(%rsp),%rbx
  movslq %edx,%rdx
  lea    (%rdx,%rsi,1),%rbp
  mov    0x18(%rsp),%rdx
  lea    (%rbx,%rcx,8),%rbx
  mov    0x200(%rsp),%rsi
  shl    $0x3,%rbp
  lea    (%rdx,%r8,8),%r12
  mov    %r11d,%edx
  add    %rbp,%r14
  add    0x208(%rsp),%rbp
  imul   %edi,%edx
  mov    0x80(%rsp),%rdi
  lea    (%rdi,%rax,8),%rax
  mov    %rax,0x30(%rsp)
  mov    %r9d,%eax
  and    $0xfffffffe,%r9d
  movslq %edx,%rdx
  shr    %eax
  mov    %r9d,%r13d
  add    %rcx,%rdx
  mov    %r9d,0x54(%rsp)
  lea    -0x1(%rax),%r11d
  shl    $0x3,%r13
  mov    0x210(%rsp),%rcx
  shl    $0x3,%rdx
  add    $0x1,%r11
  lea    (%rbx,%r13,1),%rax
  add    %rdx,%rsi
  shl    $0x4,%r11
  mov    %rax,0x58(%rsp)
  add    %rdx,%rcx
  add    0x218(%rsp),%rdx
  mov    %r11,0x8(%rsp)
  nop
L553:
  mov    0x38(%rsp),%eax
  movsd  (%r12),%xmm3
  mov    %rsi,%r9
  mov    %rcx,%r8
  mov    0x28(%rsp),%r11d
  mov    %rdx,%rdi
  test   %eax,%eax
  mov    %rbp,%rax
  cmove  %r14,%rax
  cmp    %r11d,0x20(%rsp)
  jle    L905
  cmpl   $0x1,(%rsp)
  je     L2093
  movapd %xmm3,%xmm5
  mov    0x8(%rsp),%r11
  xor    %edi,%edi
  unpcklpd %xmm5,%xmm5
  nopl   (%rax)
L726:
  movupd (%rbx,%rdi,1),%xmm1
  movupd (%rsi,%rdi,1),%xmm6
  movupd (%rax,%rdi,1),%xmm4
  movupd (%rdx,%rdi,1),%xmm7
  mulpd  %xmm5,%xmm1
  subpd  %xmm6,%xmm4
  mulpd  %xmm6,%xmm1
  movupd (%rcx,%rdi,1),%xmm6
  add    $0x10,%rdi
  mulpd  %xmm4,%xmm1
  mulpd  %xmm6,%xmm1
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rdi,%r11
  jne    L726
  mov    %r11,0x8(%rsp)
  lea    (%rsi,%r13,1),%r9
  mov    (%rsp),%r11d
  add    %r13,%rax
  lea    (%rcx,%r13,1),%r8
  lea    (%rdx,%r13,1),%rdi
  cmp    %r11d,0x54(%rsp)
  je     L905
  mov    0x58(%rsp),%r10
L383:
  mulsd  (%r10),%xmm3
  movsd  (%r9),%xmm4
  movapd %xmm3,%xmm1
  movsd  (%rax),%xmm3
  mulsd  %xmm4,%xmm1
  subsd  %xmm4,%xmm3
  mulsd  %xmm3,%xmm1
  mulsd  (%r8),%xmm1
  mulsd  (%rdi),%xmm1
  addsd  %xmm1,%xmm0
L905:
  add    %r15,%r14
  add    %r15,%rbp
  add    $0x8,%r12
  add    %r15,%rsi
  add    %r15,%rcx
  add    %r15,%rdx
  cmp    %r12,0x30(%rsp)
  jne    L553
L1243:
  addq   $0x8,0x60(%rsp)
  mov    0x60(%rsp),%rax
  addq   $0x8,0x68(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L1469
  jmp    L249
L2093:
  mov    %rbx,%r10
  jmp    L383
L1453:
  mov    0xfc(%rsp),%r8d
  test   %r8d,%r8d
  jle    L250
  movslq 0x8(%rsp),%rax
  mov    0x1c8(%rsp),%rbx
  mov    %r14d,0xac(%rsp)
  pxor   %xmm0,%xmm0
  mov    %r13d,0xb8(%rsp)
  mov    0xb0(%rsp),%r15
  lea    (%rbx,%rax,4),%rax
  mov    %r12d,0xc0(%rsp)
  mov    %rax,0x98(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %ebp,0xc4(%rsp)
  mov    %rax,0x68(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0xa0(%rsp)
  nopl   0x0(%rax)
L158:
  mov    0x60(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    $0x0,%r9d
  mov    0x10(%rsp),%r11d
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x68(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r9d
  add    0x1a0(%rsp),%edx
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %r9d,0x20(%rsp)
  mov    %edx,0x28(%rsp)
  mov    %edx,%r10d
  cmp    %eax,%edi
  jge    L1667
  mov    0x7c(%rsp),%edx
  mov    0x78(%rsp),%esi
  movslq %edi,%r8
  sub    $0x1,%eax
  sub    %edi,%eax
  mov    0x98(%rsp),%rbx
  sub    %r9d,%r10d
  movslq %r9d,%rcx
  add    %edi,%edx
  add    %r9d,%esi
  add    %r8,%rax
  mov    %r10d,(%rsp)
  imul   %r11d,%edx
  movslq %esi,%rsi
  mov    (%rbx),%ebx
  mov    0x208(%rsp),%r14
  mov    %ebx,0x30(%rsp)
  mov    0x40(%rsp),%rbx
  movslq %edx,%rdx
  lea    (%rdx,%rsi,1),%rbp
  mov    0x18(%rsp),%rdx
  lea    (%rbx,%rcx,8),%rbx
  mov    0x200(%rsp),%rsi
  shl    $0x3,%rbp
  lea    (%rdx,%r8,8),%r12
  mov    %r11d,%edx
  add    %rbp,%r14
  add    0x200(%rsp),%rbp
  imul   %edi,%edx
  mov    0xa0(%rsp),%rdi
  lea    (%rdi,%rax,8),%rax
  mov    %rax,0x38(%rsp)
  mov    %r10d,%eax
  and    $0xfffffffe,%r10d
  movslq %edx,%rdx
  shr    %eax
  mov    %r10d,%r13d
  add    %rcx,%rdx
  mov    %r10d,0x54(%rsp)
  lea    -0x1(%rax),%r11d
  shl    $0x3,%r13
  mov    0x210(%rsp),%rcx
  shl    $0x3,%rdx
  add    $0x1,%r11
  lea    (%rbx,%r13,1),%rax
  add    %rdx,%rsi
  shl    $0x4,%r11
  mov    %rax,0x58(%rsp)
  add    %rdx,%rcx
  add    0x218(%rsp),%rdx
  mov    %r11,0x8(%rsp)
  nopw   0x0(%rax,%rax,1)
L1088:
  mov    0x30(%rsp),%edi
  mov    %r14,%rax
  movsd  (%r12),%xmm4
  mov    %rsi,%r9
  mov    0x28(%rsp),%r11d
  mov    %rcx,%r8
  test   %edi,%edi
  mov    %rdx,%rdi
  cmove  %rbp,%rax
  cmp    %r11d,0x20(%rsp)
  jge    L472
  cmpl   $0x1,(%rsp)
  je     L1033
  movapd %xmm4,%xmm6
  mov    0x8(%rsp),%r11
  xor    %edi,%edi
  unpcklpd %xmm6,%xmm6
  nopl   (%rax)
L2182:
  movupd (%rbx,%rdi,1),%xmm1
  movupd (%rsi,%rdi,1),%xmm7
  movupd (%rax,%rdi,1),%xmm5
  mulpd  %xmm6,%xmm1
  subpd  %xmm7,%xmm5
  mulpd  %xmm7,%xmm1
  movupd (%rcx,%rdi,1),%xmm7
  mulpd  %xmm5,%xmm1
  mulpd  %xmm7,%xmm1
  movupd (%rdx,%rdi,1),%xmm7
  add    $0x10,%rdi
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r11,%rdi
  jne    L2182
  mov    %r11,0x8(%rsp)
  lea    (%rsi,%r13,1),%r9
  add    %r13,%rax
  lea    (%rcx,%r13,1),%r8
  mov    0x54(%rsp),%r11d
  lea    (%rdx,%r13,1),%rdi
  cmp    %r11d,(%rsp)
  je     L472
  mov    0x58(%rsp),%r10
L1876:
  mulsd  (%r10),%xmm4
  movsd  (%r9),%xmm5
  movapd %xmm4,%xmm1
  movsd  (%rax),%xmm4
  mulsd  %xmm5,%xmm1
  subsd  %xmm5,%xmm4
  mulsd  %xmm4,%xmm1
  mulsd  (%r8),%xmm1
  mulsd  (%rdi),%xmm1
  addsd  %xmm1,%xmm0
L472:
  add    %r15,%r14
  add    %r15,%rbp
  add    $0x8,%r12
  add    %r15,%rsi
  add    %r15,%rcx
  add    %r15,%rdx
  cmp    0x38(%rsp),%r12
  jne    L1088
L1667:
  addq   $0x8,0x60(%rsp)
  mov    0x60(%rsp),%rax
  addq   $0x8,0x68(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L158
  mov    0xac(%rsp),%r14d
  mov    0xb8(%rsp),%r13d
  mov    0xc0(%rsp),%r12d
  mov    0xc4(%rsp),%ebp
  jmp    L2
L1033:
  mov    %rbx,%r10
  jmp    L1876
L1633:
  mov    0xb0(%rsp),%r14d
L790:
  addq   $0x1,0x140(%rsp)
  mov    0x1f0(%rsp),%ecx
  mov    0x140(%rsp),%rax
  add    %ecx,0x148(%rsp)
  cmp    0x150(%rsp),%rax
  jne    L825
L1576:
  add    $0x168,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L1615:
  movl   $0x0,0x50(%rsp)
  jmp    L704
L1385:
  mov    0xfc(%rsp),%r10d
  test   %r10d,%r10d
  jle    L250
  mov    0x1a8(%rsp),%rax
  mov    %r14d,0x54(%rsp)
  pxor   %xmm0,%xmm0
  mov    %r13d,0x58(%rsp)
  mov    0xb0(%rsp),%r15
  mov    %rax,0x30(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %r12d,0x60(%rsp)
  mov    %rax,0x28(%rsp)
  mov    0x18(%rsp),%rax
  mov    %ebp,0x68(%rsp)
  add    $0x8,%rax
  mov    %rax,0x38(%rsp)
  nop
L1916:
  mov    0x28(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%ecx
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%esi
  mov    0x30(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r14d
  sub    0x1a0(%rsp),%r14d
  cmovs  %edx,%r14d
  add    0x1a0(%rsp),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,%r13d
  cmp    %esi,%edi
  jge    L1372
  mov    0x40(%rsp),%rax
  movslq %r14d,%rdx
  movslq %edi,%r8
  sub    $0x1,%esi
  sub    %edi,%esi
  mov    %r13d,%r12d
  lea    (%rax,%rdx,8),%r11
  mov    0x18(%rsp),%rax
  add    %r8,%rsi
  sub    %r14d,%r12d
  lea    (%rax,%r8,8),%rbx
  mov    %ecx,%eax
  mov    0x200(%rsp),%rcx
  imul   %edi,%eax
  mov    0x38(%rsp),%rdi
  lea    (%rdi,%rsi,8),%rsi
  mov    %rsi,(%rsp)
  mov    %r12d,%esi
  cltq
  shr    %esi
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  lea    -0x1(%rsi),%r10d
  mov    %r12d,%esi
  shl    $0x3,%rax
  and    $0xfffffffe,%esi
  add    $0x1,%r10
  add    %rax,%rcx
  add    %rax,%rdx
  mov    %esi,%ebp
  mov    %esi,0x8(%rsp)
  shl    $0x4,%r10
  add    0x218(%rsp),%rax
  shl    $0x3,%rbp
  lea    (%r11,%rbp,1),%rsi
  mov    %rsi,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L2101:
  movsd  (%rbx),%xmm4
  mov    %rcx,%r8
  mov    %rdx,%rdi
  mov    %rax,%rsi
  cmp    %r13d,%r14d
  jge    L638
  cmp    $0x1,%r12d
  je     L1363
  movapd %xmm4,%xmm6
  xor    %esi,%esi
  unpcklpd %xmm6,%xmm6
  nopw   0x0(%rax,%rax,1)
L696:
  movupd (%r11,%rsi,1),%xmm1
  movupd (%rcx,%rsi,1),%xmm7
  mulpd  %xmm6,%xmm1
  mulpd  %xmm7,%xmm1
  mulpd  %xmm7,%xmm1
  movupd (%rdx,%rsi,1),%xmm7
  mulpd  %xmm7,%xmm1
  movupd (%rax,%rsi,1),%xmm7
  add    $0x10,%rsi
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r10,%rsi
  jne    L696
  lea    (%rcx,%rbp,1),%r8
  lea    (%rdx,%rbp,1),%rdi
  lea    (%rax,%rbp,1),%rsi
  cmp    0x8(%rsp),%r12d
  je     L638
  mov    0x20(%rsp),%r9
L1300:
  mulsd  (%r9),%xmm4
  movsd  (%r8),%xmm5
  movapd %xmm4,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  (%rdi),%xmm1
  mulsd  (%rsi),%xmm1
  addsd  %xmm1,%xmm0
L638:
  add    $0x8,%rbx
  add    %r15,%rcx
  add    %r15,%rdx
  add    %r15,%rax
  cmp    (%rsp),%rbx
  jne    L2101
L1372:
  addq   $0x8,0x28(%rsp)
  mov    0x28(%rsp),%rax
  addq   $0x8,0x30(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L1916
  jmp    L481
L1363:
  mov    %r11,%r9
  jmp    L1300
L830:
  mov    0xfc(%rsp),%eax
  test   %eax,%eax
  jle    L1432
  mov    0x1a8(%rsp),%rax
  pxor   %xmm0,%xmm0
  mov    %rax,0x30(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x38(%rsp)
L1415:
  mov    0x28(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%ecx
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%esi
  mov    0x30(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r14d
  sub    0x1a0(%rsp),%r14d
  cmovs  %edx,%r14d
  add    0x1a0(%rsp),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,%r13d
  cmp    %edi,%esi
  jle    L1134
  mov    0x40(%rsp),%rax
  movslq %r14d,%rdx
  movslq %edi,%r8
  sub    $0x1,%esi
  sub    %edi,%esi
  mov    %r13d,%r12d
  lea    (%rax,%rdx,8),%r11
  mov    0x18(%rsp),%rax
  add    %r8,%rsi
  sub    %r14d,%r12d
  lea    (%rax,%r8,8),%rbx
  mov    %ecx,%eax
  mov    0x200(%rsp),%rcx
  imul   %edi,%eax
  mov    0x38(%rsp),%rdi
  lea    (%rdi,%rsi,8),%rsi
  mov    %rsi,(%rsp)
  mov    %r12d,%esi
  cltq
  shr    %esi
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  lea    -0x1(%rsi),%r10d
  mov    %r12d,%esi
  shl    $0x3,%rax
  and    $0xfffffffe,%esi
  add    $0x1,%r10
  add    %rax,%rcx
  add    %rax,%rdx
  mov    %esi,%ebp
  mov    %esi,0x8(%rsp)
  shl    $0x4,%r10
  add    0x218(%rsp),%rax
  shl    $0x3,%rbp
  lea    (%r11,%rbp,1),%rsi
  mov    %rsi,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L1142:
  movsd  (%rbx),%xmm3
  mov    %rcx,%r8
  mov    %rdx,%rdi
  mov    %rax,%rsi
  cmp    %r14d,%r13d
  jle    L1117
  cmp    $0x1,%r12d
  je     L1060
  movapd %xmm3,%xmm5
  xor    %esi,%esi
  unpcklpd %xmm5,%xmm5
  nopw   0x0(%rax,%rax,1)
L2142:
  movupd (%r11,%rsi,1),%xmm1
  movupd (%rcx,%rsi,1),%xmm6
  mulpd  %xmm5,%xmm1
  mulpd  %xmm6,%xmm1
  mulpd  %xmm6,%xmm1
  movupd (%rdx,%rsi,1),%xmm6
  mulpd  %xmm6,%xmm1
  movupd (%rax,%rsi,1),%xmm6
  add    $0x10,%rsi
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rsi,%r10
  jne    L2142
  lea    (%rcx,%rbp,1),%r8
  lea    (%rdx,%rbp,1),%rdi
  lea    (%rax,%rbp,1),%rsi
  cmp    %r12d,0x8(%rsp)
  je     L1117
  mov    0x20(%rsp),%r9
L1557:
  mulsd  (%r9),%xmm3
  movsd  (%r8),%xmm4
  movapd %xmm3,%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  %xmm4,%xmm1
  mulsd  (%rdi),%xmm1
  mulsd  (%rsi),%xmm1
  addsd  %xmm1,%xmm0
L1117:
  add    $0x8,%rbx
  add    %r15,%rcx
  add    %r15,%rdx
  add    %r15,%rax
  cmp    %rbx,(%rsp)
  jne    L1142
L1134:
  addq   $0x8,0x28(%rsp)
  mov    0x28(%rsp),%rax
  addq   $0x8,0x30(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L1415
  jmp    L249
L1060:
  mov    %r11,%r9
  jmp    L1557
L279:
  mov    0xfc(%rsp),%ecx
  test   %ecx,%ecx
  jle    L303
  mov    0x1c8(%rsp),%rbx
  movslq 0x8(%rsp),%rax
  pxor   %xmm3,%xmm3
  mov    %r14d,0x158(%rsp)
  mov    %r12d,0x15c(%rsp)
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x120(%rsp)
  movslq 0x28(%rsp),%rax
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x118(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %rax,0x100(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0xb8(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x130(%rsp)
  movslq 0x68(%rsp),%rax
  mov    %rax,0x138(%rsp)
L2144:
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%esi
  mov    $0x0,%r12d
  mov    0xb8(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r10d
  sub    0x1a0(%rsp),%r10d
  cmovs  %edx,%r10d
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x100(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r12d
  add    0x1a0(%rsp),%edx
  cmp    %esi,%edx
  mov    %edx,%ebx
  cmovg  %esi,%ebx
  mov    %r12d,0x68(%rsp)
  mov    %ebx,0x60(%rsp)
  cmp    %r10d,%eax
  jle    L531
  movslq %r12d,%rdx
  mov    0x78(%rsp),%r8d
  movslq %r10d,%r9
  sub    $0x1,%eax
  mov    0x120(%rsp),%rcx
  mov    0x200(%rsp),%r14
  sub    %r10d,%eax
  sub    %r12d,%ebx
  add    %r12d,%r8d
  add    %r9,%rax
  mov    %ebx,0x8(%rsp)
  mov    0x200(%rsp),%rdi
  mov    (%rcx),%ecx
  movslq %r8d,%r8
  mov    %ecx,0x58(%rsp)
  mov    0x118(%rsp),%rcx
  mov    (%rcx),%ecx
  mov    %ecx,0x54(%rsp)
  mov    0x40(%rsp),%rcx
  lea    (%rcx,%rdx,8),%rbp
  mov    0x7c(%rsp),%ecx
  add    %r10d,%ecx
  imul   %esi,%ecx
  movslq %ecx,%r11
  lea    (%r11,%r8,1),%rcx
  shl    $0x3,%rcx
  add    %rcx,%r14
  add    0x208(%rsp),%rcx
  mov    %rcx,(%rsp)
  mov    0x18(%rsp),%rcx
  lea    (%rcx,%r9,8),%r13
  mov    %esi,%ecx
  mov    0x130(%rsp),%r9
  mov    0x210(%rsp),%rsi
  imul   %r10d,%ecx
  add    0x94(%rsp),%r10d
  imul   0x10(%rsp),%r10d
  lea    (%r9,%rax,8),%rax
  mov    %rax,0x30(%rsp)
  movslq %ecx,%rcx
  add    %rdx,%rcx
  add    0x138(%rsp),%rdx
  movslq %r10d,%rax
  sub    %r8,%rdx
  shl    $0x3,%rcx
  add    %rdx,%rax
  mov    %ebx,%edx
  add    %rcx,%rdi
  add    %rcx,%rsi
  sub    %r11,%rax
  and    $0xfffffffe,%edx
  add    0x218(%rsp),%rcx
  shl    $0x3,%rax
  mov    %edx,%r12d
  mov    %edx,0x70(%rsp)
  mov    %rax,0x38(%rsp)
  mov    %ebx,%eax
  shl    $0x3,%r12
  shr    %eax
  lea    -0x1(%rax),%ebx
  lea    0x0(%rbp,%r12,1),%rax
  add    $0x1,%rbx
  mov    %rax,0x80(%rsp)
  shl    $0x4,%rbx
  mov    %rbx,0x20(%rsp)
  nopl   0x0(%rax)
L1696:
  mov    0x38(%rsp),%rax
  mov    (%rsp),%r9
  mov    %rdi,%r10
  mov    %rcx,%r8
  mov    0x58(%rsp),%ebx
  movsd  0x0(%r13),%xmm1
  mov    %rax,%rdx
  add    %r14,%rax
  add    %r9,%rdx
  test   %ebx,%ebx
  mov    0x68(%rsp),%ebx
  cmovne %rdx,%rax
  mov    0x54(%rsp),%edx
  test   %edx,%edx
  mov    %r9,%rdx
  mov    %rsi,%r9
  cmove  %r14,%rdx
  cmp    %ebx,0x60(%rsp)
  jle    L449
  cmpl   $0x1,0x8(%rsp)
  je     L583
  movapd %xmm1,%xmm5
  mov    0x20(%rsp),%rbx
  xor    %r8d,%r8d
  unpcklpd %xmm5,%xmm5
  nopl   0x0(%rax)
L1971:
  movupd 0x0(%rbp,%r8,1),%xmm0
  movupd (%rdi,%r8,1),%xmm7
  movupd (%rax,%r8,1),%xmm4
  movupd (%rcx,%r8,1),%xmm6
  mulpd  %xmm5,%xmm0
  subpd  %xmm7,%xmm4
  mulpd  %xmm4,%xmm0
  movupd (%rdx,%r8,1),%xmm4
  subpd  %xmm7,%xmm4
  movupd (%rsi,%r8,1),%xmm7
  add    $0x10,%r8
  mulpd  %xmm4,%xmm0
  mulpd  %xmm7,%xmm0
  mulpd  %xmm6,%xmm0
  addsd  %xmm0,%xmm3
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm3
  cmp    %r8,%rbx
  jne    L1971
  mov    %rbx,0x20(%rsp)
  mov    0x8(%rsp),%r11d
  add    %r12,%rax
  add    %r12,%rdx
  lea    (%rdi,%r12,1),%r10
  lea    (%rsi,%r12,1),%r9
  lea    (%rcx,%r12,1),%r8
  cmp    %r11d,0x70(%rsp)
  je     L449
  mov    0x80(%rsp),%r11
L950:
  movsd  (%r11),%xmm0
  movsd  (%r10),%xmm4
  mulsd  %xmm1,%xmm0
  movsd  (%rax),%xmm1
  subsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm0
  movsd  (%rdx),%xmm1
  subsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  (%r9),%xmm0
  mulsd  (%r8),%xmm0
  addsd  %xmm0,%xmm3
L449:
  add    %r15,(%rsp)
  add    %r15,%r14
  add    $0x8,%r13
  add    %r15,%rdi
  add    %r15,%rsi
  add    %r15,%rcx
  cmp    %r13,0x30(%rsp)
  jne    L1696
L531:
  addq   $0x8,0xb8(%rsp)
  mov    0xb8(%rsp),%rax
  addq   $0x8,0x100(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L2144
  mov    0x158(%rsp),%r14d
  mov    0x15c(%rsp),%r12d
L2194:
  movslq 0xc0(%rsp),%rax
  mov    0x1e0(%rsp),%rbx
  cmpb   $0x0,0xdf(%rsp)
  movsd  %xmm3,(%rbx,%rax,8)
  movslq 0xc4(%rsp),%rax
  movsd  %xmm3,(%rbx,%rax,8)
  je     L2018
  mov    0x28(%rsp),%ebx
  test   %ebx,%ebx
  jle    L2018
  mov    0x90(%rsp),%ecx
  sub    $0x1,%ebx
  mov    0x88(%rsp),%esi
  mov    %ebx,%edx
  mov    0xf8(%rsp),%eax
  mov    0x1e0(%rsp),%rbx
  imul   %ecx,%edx
  imul   %ecx,%eax
  mov    0x1f0(%rsp),%ecx
  add    %esi,%edx
  add    %r12d,%edx
  add    %esi,%eax
  imul   %edx,%ecx
  add    %r14d,%eax
  add    %eax,%ecx
  imul   0x1f0(%rsp),%eax
  movslq %ecx,%rcx
  movsd  %xmm3,(%rbx,%rcx,8)
  add    %edx,%eax
  cltq
  movsd  %xmm3,(%rbx,%rax,8)
  jmp    L2018
L583:
  mov    %rbp,%r11
  jmp    L950
L1821:
  mov    0xfc(%rsp),%r8d
  test   %r8d,%r8d
  jle    L977
  movslq 0x28(%rsp),%rax
  mov    0x1c8(%rsp),%rbx
  pxor   %xmm1,%xmm1
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x70(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %rax,0x68(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x80(%rsp)
L1963:
  mov    0x60(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    $0x0,%r10d
  mov    0x10(%rsp),%r11d
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x68(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r10d
  add    0x1a0(%rsp),%edx
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %r10d,0x38(%rsp)
  mov    %edx,0x30(%rsp)
  mov    %edx,%r9d
  cmp    %edi,%eax
  jle    L610
  mov    0x7c(%rsp),%edx
  mov    0x78(%rsp),%esi
  movslq %edi,%r8
  sub    $0x1,%eax
  sub    %edi,%eax
  mov    0x70(%rsp),%rbx
  sub    %r10d,%r9d
  movslq %r10d,%rcx
  add    %edi,%edx
  add    %r10d,%esi
  add    %r8,%rax
  mov    0x200(%rsp),%r14
  imul   %r11d,%edx
  movslq %esi,%rsi
  mov    (%rbx),%ebx
  mov    %r9d,(%rsp)
  mov    %ebx,0x28(%rsp)
  mov    0x40(%rsp),%rbx
  movslq %edx,%rdx
  lea    (%rdx,%rsi,1),%rbp
  mov    0x18(%rsp),%rdx
  lea    (%rbx,%rcx,8),%rbx
  mov    0x200(%rsp),%rsi
  shl    $0x3,%rbp
  lea    (%rdx,%r8,8),%r12
  mov    %r11d,%edx
  add    %rbp,%r14
  add    0x208(%rsp),%rbp
  imul   %edi,%edx
  mov    0x80(%rsp),%rdi
  lea    (%rdi,%rax,8),%rax
  mov    %r9d,%edi
  mov    %rax,0x20(%rsp)
  mov    %r9d,%eax
  and    $0xfffffffe,%edi
  movslq %edx,%rdx
  shr    %eax
  mov    %edi,%r13d
  add    %rcx,%rdx
  mov    %edi,0x54(%rsp)
  lea    -0x1(%rax),%r11d
  shl    $0x3,%r13
  mov    0x210(%rsp),%rcx
  shl    $0x3,%rdx
  add    $0x1,%r11
  lea    (%rbx,%r13,1),%rax
  add    %rdx,%rsi
  shl    $0x4,%r11
  mov    %rax,0x58(%rsp)
  add    %rdx,%rcx
  add    0x218(%rsp),%rdx
  mov    %r11,0x8(%rsp)
  nopw   0x0(%rax,%rax,1)
L809:
  mov    0x28(%rsp),%edi
  mov    %rbp,%rax
  movsd  (%r12),%xmm4
  mov    %rsi,%r9
  mov    0x38(%rsp),%r11d
  mov    %rcx,%r8
  test   %edi,%edi
  mov    %rdx,%rdi
  cmove  %r14,%rax
  cmp    %r11d,0x30(%rsp)
  jle    L1131
  cmpl   $0x1,(%rsp)
  je     L1854
  movapd %xmm4,%xmm5
  mov    0x8(%rsp),%r11
  xor    %edi,%edi
  unpcklpd %xmm5,%xmm5
  nopl   (%rax)
L194:
  movupd (%rbx,%rdi,1),%xmm3
  movupd (%rsi,%rdi,1),%xmm7
  movupd (%rax,%rdi,1),%xmm0
  movupd (%rcx,%rdi,1),%xmm6
  mulpd  %xmm5,%xmm3
  subpd  %xmm7,%xmm0
  movupd (%rdx,%rdi,1),%xmm7
  add    $0x10,%rdi
  mulpd  %xmm3,%xmm0
  mulpd  %xmm6,%xmm0
  mulpd  %xmm7,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rdi,%r11
  jne    L194
  mov    %r11,0x8(%rsp)
  lea    (%rsi,%r13,1),%r9
  add    %r13,%rax
  lea    (%rcx,%r13,1),%r8
  mov    0x54(%rsp),%r11d
  lea    (%rdx,%r13,1),%rdi
  cmp    %r11d,(%rsp)
  je     L1131
  mov    0x58(%rsp),%r10
L461:
  movsd  (%r10),%xmm3
  movsd  (%rax),%xmm0
  subsd  (%r9),%xmm0
  mulsd  %xmm4,%xmm3
  mulsd  %xmm3,%xmm0
  mulsd  (%r8),%xmm0
  mulsd  (%rdi),%xmm0
  addsd  %xmm0,%xmm1
L1131:
  add    %r15,%r14
  add    %r15,%rbp
  add    $0x8,%r12
  add    %r15,%rsi
  add    %r15,%rcx
  add    %r15,%rdx
  cmp    %r12,0x20(%rsp)
  jne    L809
L610:
  addq   $0x8,0x60(%rsp)
  mov    0x60(%rsp),%rax
  addq   $0x8,0x68(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L1963
  jmp    L819
L1854:
  mov    %rbx,%r10
  jmp    L461
L1432:
  pxor   %xmm0,%xmm0
  jmp    L249
L557:
  mov    0xfc(%rsp),%r11d
  test   %r11d,%r11d
  jle    L1432
  mov    0x1c8(%rsp),%rbx
  pxor   %xmm0,%xmm0
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x80(%rsp)
  mov    0x1a8(%rsp),%rax
  mov    %rax,0x70(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0xb8(%rsp)
L2060:
  mov    0x60(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    $0x0,%r10d
  mov    0x10(%rsp),%r11d
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x70(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%ebx
  sub    0x1a0(%rsp),%ebx
  cmovns %ebx,%r10d
  add    0x1a0(%rsp),%edx
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %r10d,0x28(%rsp)
  mov    %edx,0x20(%rsp)
  mov    %edx,%r9d
  cmp    %edi,%eax
  jle    L390
  mov    0x94(%rsp),%edx
  movslq %edi,%r8
  sub    $0x1,%eax
  sub    %r10d,%r9d
  mov    0x68(%rsp),%esi
  sub    %edi,%eax
  movslq %r10d,%rcx
  mov    %r9d,(%rsp)
  add    %edi,%edx
  mov    0x80(%rsp),%rbx
  add    %r8,%rax
  mov    0x200(%rsp),%r14
  imul   %r11d,%edx
  add    %r10d,%esi
  movslq %esi,%rsi
  mov    (%rbx),%ebx
  movslq %edx,%rdx
  mov    %ebx,0x30(%rsp)
  mov    0x40(%rsp),%rbx
  lea    (%rdx,%rsi,1),%rbp
  mov    0x18(%rsp),%rdx
  mov    0x200(%rsp),%rsi
  lea    (%rbx,%rcx,8),%rbx
  shl    $0x3,%rbp
  lea    (%rdx,%r8,8),%r12
  mov    %r11d,%edx
  add    %rbp,%r14
  add    0x208(%rsp),%rbp
  imul   %edi,%edx
  mov    0xb8(%rsp),%rdi
  lea    (%rdi,%rax,8),%rax
  mov    %r9d,%edi
  mov    %rax,0x38(%rsp)
  mov    %r9d,%eax
  and    $0xfffffffe,%edi
  movslq %edx,%rdx
  shr    %eax
  mov    %edi,%r13d
  add    %rcx,%rdx
  mov    %edi,0x54(%rsp)
  lea    -0x1(%rax),%r11d
  shl    $0x3,%r13
  mov    0x210(%rsp),%rcx
  shl    $0x3,%rdx
  add    $0x1,%r11
  lea    (%rbx,%r13,1),%rax
  add    %rdx,%rsi
  shl    $0x4,%r11
  mov    %rax,0x58(%rsp)
  add    %rdx,%rcx
  add    0x218(%rsp),%rdx
  mov    %r11,0x8(%rsp)
  nopl   0x0(%rax)
L1472:
  mov    0x30(%rsp),%r10d
  mov    %rbp,%rax
  mov    0x28(%rsp),%r11d
  mov    %rsi,%r9
  movsd  (%r12),%xmm4
  mov    %rcx,%r8
  mov    %rdx,%rdi
  test   %r10d,%r10d
  cmove  %r14,%rax
  cmp    %r11d,0x20(%rsp)
  jle    L2136
  cmpl   $0x1,(%rsp)
  je     L1099
  movapd %xmm4,%xmm5
  mov    0x8(%rsp),%r11
  xor    %edi,%edi
  unpcklpd %xmm5,%xmm5
  nop
L775:
  movupd (%rbx,%rdi,1),%xmm1
  movupd (%rsi,%rdi,1),%xmm7
  movupd (%rax,%rdi,1),%xmm3
  movupd (%rcx,%rdi,1),%xmm6
  mulpd  %xmm5,%xmm1
  subpd  %xmm7,%xmm3
  mulpd  %xmm3,%xmm1
  mulpd  %xmm7,%xmm1
  movupd (%rdx,%rdi,1),%xmm7
  add    $0x10,%rdi
  mulpd  %xmm6,%xmm1
  mulpd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %r11,%rdi
  jne    L775
  mov    %r11,0x8(%rsp)
  lea    (%rsi,%r13,1),%r9
  add    %r13,%rax
  lea    (%rcx,%r13,1),%r8
  mov    0x54(%rsp),%r11d
  lea    (%rdx,%r13,1),%rdi
  cmp    %r11d,(%rsp)
  je     L2136
  mov    0x58(%rsp),%r10
L834:
  mulsd  (%r10),%xmm4
  movsd  (%r9),%xmm5
  movsd  (%rax),%xmm3
  subsd  %xmm5,%xmm3
  movapd %xmm4,%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  (%r8),%xmm1
  mulsd  (%rdi),%xmm1
  addsd  %xmm1,%xmm0
L2136:
  add    %r15,%r14
  add    %r15,%rbp
  add    $0x8,%r12
  add    %r15,%rsi
  add    %r15,%rcx
  add    %r15,%rdx
  cmp    0x38(%rsp),%r12
  jne    L1472
L390:
  addq   $0x8,0x60(%rsp)
  mov    0x60(%rsp),%rax
  addq   $0x8,0x70(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L2060
  jmp    L249
L1099:
  mov    %rbx,%r10
  jmp    L834
L330:
  mov    0xfc(%rsp),%r10d
  test   %r10d,%r10d
  jle    L1432
  mov    0x1a8(%rsp),%rax
  pxor   %xmm0,%xmm0
  mov    %rax,0x30(%rsp)
  mov    0x1b0(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x18(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x38(%rsp)
L331:
  mov    0x28(%rsp),%rax
  mov    0x14(%rsp),%ebx
  mov    $0x0,%edx
  mov    0x10(%rsp),%ecx
  cvttsd2si (%rax),%eax
  mov    %eax,%edi
  sub    0x1a0(%rsp),%edi
  cmovs  %edx,%edi
  add    0x1a0(%rsp),%eax
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    %eax,%esi
  mov    0x30(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%r14d
  sub    0x1a0(%rsp),%r14d
  cmovs  %edx,%r14d
  add    0x1a0(%rsp),%eax
  cmp    %ecx,%eax
  cmovg  %ecx,%eax
  mov    %eax,%r13d
  cmp    %edi,%esi
  jle    L1550
  mov    0x40(%rsp),%rax
  movslq %r14d,%rdx
  movslq %edi,%r8
  sub    $0x1,%esi
  sub    %edi,%esi
  mov    %r13d,%r12d
  lea    (%rax,%rdx,8),%r11
  mov    0x18(%rsp),%rax
  add    %r8,%rsi
  sub    %r14d,%r12d
  lea    (%rax,%r8,8),%rbx
  mov    %ecx,%eax
  mov    0x200(%rsp),%rcx
  imul   %edi,%eax
  mov    0x38(%rsp),%rdi
  lea    (%rdi,%rsi,8),%rsi
  mov    %rsi,(%rsp)
  mov    %r12d,%esi
  cltq
  shr    %esi
  add    %rdx,%rax
  mov    0x210(%rsp),%rdx
  lea    -0x1(%rsi),%r10d
  mov    %r12d,%esi
  shl    $0x3,%rax
  and    $0xfffffffe,%esi
  add    $0x1,%r10
  add    %rax,%rcx
  add    %rax,%rdx
  mov    %esi,%ebp
  mov    %esi,0x8(%rsp)
  shl    $0x4,%r10
  add    0x218(%rsp),%rax
  shl    $0x3,%rbp
  lea    (%r11,%rbp,1),%rsi
  mov    %rsi,0x20(%rsp)
  xchg   %ax,%ax
L421:
  movsd  (%rbx),%xmm3
  mov    %rcx,%r8
  mov    %rdx,%rdi
  mov    %rax,%rsi
  cmp    %r14d,%r13d
  jle    L1043
  cmp    $0x1,%r12d
  je     L1857
  movapd %xmm3,%xmm5
  xor    %esi,%esi
  unpcklpd %xmm5,%xmm5
  nopw   0x0(%rax,%rax,1)
L1340:
  movupd (%r11,%rsi,1),%xmm1
  movupd (%rcx,%rsi,1),%xmm6
  movupd (%rdx,%rsi,1),%xmm7
  mulpd  %xmm5,%xmm1
  mulpd  %xmm6,%xmm1
  movupd (%rax,%rsi,1),%xmm6
  add    $0x10,%rsi
  mulpd  %xmm7,%xmm1
  mulpd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  unpckhpd %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  cmp    %rsi,%r10
  jne    L1340
  lea    (%rcx,%rbp,1),%r8
  lea    (%rdx,%rbp,1),%rdi
  lea    (%rax,%rbp,1),%rsi
  cmp    0x8(%rsp),%r12d
  je     L1043
  mov    0x20(%rsp),%r9
L1856:
  mulsd  (%r9),%xmm3
  movsd  (%r8),%xmm1
  mulsd  %xmm3,%xmm1
  mulsd  (%rdi),%xmm1
  mulsd  (%rsi),%xmm1
  addsd  %xmm1,%xmm0
L1043:
  add    $0x8,%rbx
  add    %r15,%rcx
  add    %r15,%rdx
  add    %r15,%rax
  cmp    (%rsp),%rbx
  jne    L421
L1550:
  addq   $0x8,0x28(%rsp)
  mov    0x28(%rsp),%rax
  addq   $0x8,0x30(%rsp)
  cmp    0x48(%rsp),%rax
  jne    L331
  jmp    L249
L1857:
  mov    %r11,%r9
  jmp    L1856
L250:
  pxor   %xmm0,%xmm0
  jmp    L2
L977:
  pxor   %xmm1,%xmm1
L819:
  movslq 0xc0(%rsp),%rax
  mov    0x1e0(%rsp),%rbx
  movsd  %xmm1,(%rbx,%rax,8)
  movslq 0xc4(%rsp),%rax
  movsd  %xmm1,(%rbx,%rax,8)
  jmp    L2018
  nopl   (%rax)
L303:
  pxor   %xmm3,%xmm3
  jmp    L2194
L796:
  xor    %eax,%eax
  jmp    L662
L1070:
  xor    %eax,%eax
  jmp    L435
L942:
  mov    0x10c(%rsp),%r13d
  jmp    L454
```

tool_calls: name: retrieve_data
arguments: data_label: D86
type_infered: f64
name: retrieve_data
arguments: data_label: D56
type_infered: f32[4]
name: retrieve_data
arguments: data_label: D37
type_infered: byte[16]
name: retrieve_data
arguments: data_label: D190
type_infered: byte[16]

tool: D86: 0.5

tool: {"D56": [0.0,1.401298464324817e-45,2.802596928649634e-45,4.203895392974451e-45]}

tool: {"D37": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D190": [0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

assistant: ```c
void cu_compute_matrix_stamps(int dp, int ds, int db, int nx, int ny, int nstamps, int stamp_half_width, double *stamp_xpos, double *stamp_ypos, int *kxindex, int *kyindex, int *ext_basis, int nkernel, int kernelRadius, double *H, int BlockDimx, int gridDimx, int gridDimy, double *tex0, double *tex1, double *tex3, double *tex4) {
  int idx, idy, idx0, idy0, idx1, idy1;
  int np, ns, ki, kj, a, b, c, d, d1, d2, i, j, i1, i2, j1, j2;
  int l, m, l1, m1, l2, m2;
  double *px, *py, *x, *y, Bi, Bj, temp, pyj;
  double *ppx;
  double *pBi1, *pBi2, *pBj1, *pBj2, *pt3, *pt4;
  int blockIdx, blockIdy;
  x = (double *)malloc(nx * sizeof(double));
  y = (double *)malloc(ny * sizeof(double));
  px = (double *)malloc(nx * sizeof(double));
  py = (double *)malloc(ny * sizeof(double));
  for (j = 0; j < nx; j++) {
    x[j] = (j - 0.5 * (nx - 1)) / (nx - 1);
  }
  for (j = 0; j < ny; j++) {
    y[j] = (j - 0.5 * (ny - 1)) / (ny - 1);
  }
  for (blockIdy = 0; blockIdy < gridDimy; blockIdy++) {
    for (blockIdx = 0; blockIdx < gridDimx; blockIdx++) {
      H[blockIdx + gridDimx * blockIdy] = 0.0;
    }
  }
  np = (dp + 1) * (dp + 2) / 2;
  ns = (ds + 1) * (ds + 2) / 2;
  for (blockIdy = 0; blockIdy < gridDimy; blockIdy++) {
    for (blockIdx = 0; blockIdx <= blockIdy; blockIdx++) {
      ki = blockIdx < np ? 0 : (blockIdx - np) / ns + 1;
      kj = blockIdy < np ? 0 : (blockIdy - np) / ns + 1;
      a = b = 0;
      if (ki < nkernel) {
        a = kxindex[ki];
        b = kyindex[ki];
      }
      if (kj < nkernel) {
        c = kxindex[kj];
        d = kyindex[kj];
      }
      if (ki == 0) {
        d1 = dp;
        idx = blockIdx;
      } else if (ki < nkernel) {
        d1 = ds;
        idx = blockIdx - np - (ki - 1) * ns;
      } else {
        d1 = db;
        idx = blockIdx - np - (ki - 1) * ns;
      }
      if (kj == 0) {
        d2 = dp;
        idy = blockIdy;
      } else if (kj < nkernel) {
        d2 = ds;
        idy = blockIdy - np - (kj - 1) * ns;
      } else {
        d2 = db;
        idy = blockIdy - np - (kj - 1) * ns;
      }
      if ((ki > 0) && (ki < nkernel) && (kj > 0) && (kj < nkernel) && (idx > idy)) {
        continue;
      }
      idx0 = idx;
      idy0 = idy;
      i = 0;
      for (l = 0; l <= d1; l++) {
        for (m = 0; m <= d1 - l; m++) {
          if (i == idx) {
            l1 = l;
            m1 = m;
          }
          i++;
        }
      }
      i = 0;
      for (l = 0; l <= d2; l++) {
        for (m = 0; m <= d2 - l; m++) {
          if (i == idy) {
            l2 = l;
            m2 = m;
          }
          i++;
        }
      }
      for (j = 0; j < nx; j++) {
        px[j] = pow(x[j], l1 + l2);
      }
      for (j = 0; j < ny; j++) {
        py[j] = pow(y[j], m1 + m2);
      }
      Bi = Bj = 1.0;
      temp = 0.0;
      if (ki == 0) {
        if (kj == 0) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              pBj1 = &tex0[i1 + nx * j];
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * (*pBi1++) * (*pBj1++) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else if (kj < nkernel) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              pBj1 = &tex0[i1 + nx * j];
              if (ext_basis[kj]) {
                pBj2 = &tex1[i1 + c + nx * (j + d)];
              } else {
                pBj2 = &tex0[i1 + c + nx * (j + d)];
              }
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * (*pBi1++) * ((*pBj2++) - (*pBj1++)) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * (*pBi1++) * (*pt3++) * (*pt4++);
              }
            }
          }
        }
      } else if (ki < nkernel) {
        if (kj == 0) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              if (ext_basis[ki]) {
                pBi2 = &tex1[i1 + a + nx * (j + b)];
              } else {
                pBi2 = &tex0[i1 + a + nx * (j + b)];
              }
              pBj1 = &tex0[i1 + nx * j];
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * ((*pBi2++) - (*pBi1++)) * (*pBj1++) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else if (kj < nkernel) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              pBj1 = &tex0[i1 + nx * j];
              if (ext_basis[ki]) {
                pBi2 = &tex1[i1 + a + nx * (j + b)];
              } else {
                pBi2 = &tex0[i1 + a + nx * (j + b)];
              }
              if (ext_basis[kj]) {
                pBj2 = &tex1[i1 + c + nx * (j + d)];
              } else {
                pBj2 = &tex0[i1 + c + nx * (j + d)];
              }
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * ((*pBi2++) - (*pBi1++)) * ((*pBj2++) - (*pBj1++)) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBi1 = &tex0[i1 + nx * j];
              if (ext_basis[ki]) {
                pBi2 = &tex1[i1 + a + nx * (j + b)];
              } else {
                pBi2 = &tex0[i1 + a + nx * (j + b)];
              }
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * ((*pBi2++) - (*pBi1++)) * (*pt3++) * (*pt4++);
              }
            }
          }
        }
      } else {
        if (kj == 0) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBj1 = &tex0[i1 + nx * j];
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * (*pBj1++) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else if (kj < nkernel) {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pBj1 = &tex0[i1 + nx * j];
              if (ext_basis[kj]) {
                pBj2 = &tex1[i1 + c + nx * (j + d)];
              } else {
                pBj2 = &tex0[i1 + c + nx * (j + d)];
              }
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * ((*pBj2++) - (*pBj1++)) * (*pt3++) * (*pt4++);
              }
            }
          }
        } else {
          for (idx = 0; idx < nstamps; idx++) {
            j1 = ((0) > ((int)stamp_ypos[idx] - stamp_half_width) ? (0) : ((int)stamp_ypos[idx] - stamp_half_width));
            j2 = ((ny) < ((int)stamp_ypos[idx] + stamp_half_width) ? (ny) : ((int)stamp_ypos[idx] + stamp_half_width));
            i1 = ((0) > ((int)stamp_xpos[idx] - stamp_half_width) ? (0) : ((int)stamp_xpos[idx] - stamp_half_width));
            i2 = ((nx) < ((int)stamp_xpos[idx] + stamp_half_width) ? (nx) : ((int)stamp_xpos[idx] + stamp_half_width));
            for (j = j1; j < j2; j++) {
              pt3 = &tex3[i1 + nx * j];
              pt4 = &tex4[i1 + nx * j];
              ppx = &px[i1];
              pyj = py[j];
              for (i = i1; i < i2; i++) {
                temp += (*ppx++) * pyj * (*pt3++) * (*pt4++);
              }
            }
          }
        }
      }
      H[blockIdx + gridDimx * blockIdy] = temp;
      H[blockIdy + gridDimx * blockIdx] = temp;
      if ((ki > 0) && (ki < nkernel) && (kj > 0) && (kj < nkernel)) {
        idx1 = np + (ki - 1) * ns;
        idy1 = np + (kj - 1) * ns;
        H[(idx1 + idy0) + gridDimx * (idy1 + idx0)] = temp;
        H[(idy1 + idx0) + gridDimx * (idx1 + idy0)] = temp;
      }
    }
  }
}
```