user: Converte this assembly snippet into its equivalent C code:

```asm
<cu_compute_matrix_stamps>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x108,%rsp
  mov    %edi,0x8c(%rsp)
  mov    %esi,0xdc(%rsp)
  mov    %edx,0xe8(%rsp)
  mov    %ecx,%r12d
  mov    %ecx,0x20(%rsp)
  mov    %r8d,%ebx
  mov    %r8d,0x24(%rsp)
  mov    %r9d,0xac(%rsp)
  mov    0x198(%rsp),%ebp
  movslq %ecx,%rax
  shl    $0x3,%rax
  mov    %rax,0x8(%rsp)
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,0xb0(%rsp)
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rbx
  mov    %rbx,%rdi
  call   <malloc@plt>
  mov    %rax,0xb8(%rsp)
  mov    0x8(%rsp),%rdi
  call   <malloc@plt>
  mov    %rax,0x30(%rsp)
  mov    %rbx,%rdi
  call   <malloc@plt>
  mov    %rax,0x10(%rsp)
  test   %r12d,%r12d
  jle    L999
  lea    -0x1(%r12),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movapd %xmm1,%xmm2
  mulsd  D9(%rip),%xmm2
  mov    %r12d,%edx
  mov    $0x0,%eax
L637:
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  mov    0xb0(%rsp),%rbx
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %rdx,%rax
  jne    L637
L999:
  mov    0x24(%rsp),%ebx
  test   %ebx,%ebx
  jle    L249
  lea    -0x1(%rbx),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movapd %xmm1,%xmm2
  mulsd  D9(%rip),%xmm2
  mov    %ebx,%edx
  mov    $0x0,%eax
L1220:
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  subsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  mov    0xb8(%rsp),%rbx
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %rdx,%rax
  jne    L1220
L249:
  test   %ebp,%ebp
  jle    L1015
  mov    $0x0,%ecx
  movl   $0x0,0xec(%rsp)
  mov    0x190(%rsp),%eax
  lea    -0x1(%rax),%edi
  mov    0x180(%rsp),%rax
  lea    0x8(%rax),%rsi
  jmp    L569
L143:
  mov    0xec(%rsp),%eax
  add    $0x1,%eax
  add    0x190(%rsp),%ecx
  cmp    %eax,%ebp
  je     L555
  mov    %eax,0xec(%rsp)
L569:
  cmpl   $0x0,0x190(%rsp)
  jle    L143
  movslq %ecx,%rdx
  mov    0x180(%rsp),%rax
  lea    (%rax,%rdx,8),%rax
  add    %rdi,%rdx
  lea    (%rsi,%rdx,8),%rdx
L1401:
  movq   $0x0,(%rax)
  add    $0x8,%rax
  cmp    %rdx,%rax
  jne    L1401
  jmp    L143
L630:
  movl   $0x0,0x74(%rsp)
  movl   $0x0,0x70(%rsp)
L776:
  mov    0x38(%rsp),%eax
  cmp    0x170(%rsp),%eax
  jge    L119
  cltq
  mov    0x158(%rsp),%rbx
  mov    (%rbx,%rax,4),%ebx
  mov    %ebx,0x68(%rsp)
  mov    0x160(%rsp),%rbx
  mov    (%rbx,%rax,4),%eax
  mov    %eax,0x6c(%rsp)
L119:
  mov    0x8c(%rsp),%r11d
  mov    0x28(%rsp),%eax
  test   %eax,%eax
  je     L1455
  cmp    0x170(%rsp),%eax
  jge    L836
  sub    $0x1,%eax
  imul   0x94(%rsp),%eax
  mov    0x58(%rsp),%ebp
  sub    %eax,%ebp
  mov    0xdc(%rsp),%r11d
L1455:
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  je     L961
  cmp    0x170(%rsp),%eax
  jge    L192
  mov    0xa8(%rsp),%edx
  sub    0x5c(%rsp),%edx
  sub    $0x1,%eax
  imul   0x94(%rsp),%eax
  sub    %eax,%edx
  mov    %edx,0x80(%rsp)
  mov    0x28(%rsp),%eax
  cmp    0x170(%rsp),%eax
  setl   0x48(%rsp)
  movzbl 0x48(%rsp),%ebx
  test   %eax,%eax
  setg   %al
  and    %bl,%al
  mov    %al,0x93(%rsp)
  je     L1090
  cmp    0x80(%rsp),%ebp
  jle    L765
  cmpl   $0x0,0x38(%rsp)
  jg     L68
L765:
  mov    0xdc(%rsp),%r10d
  movzbl 0x93(%rsp),%eax
  mov    %al,0x48(%rsp)
  jmp    L1174
L836:
  mov    0x28(%rsp),%eax
  sub    $0x1,%eax
  imul   0x94(%rsp),%eax
  mov    0x58(%rsp),%ebp
  sub    %eax,%ebp
  mov    0xe8(%rsp),%r11d
  jmp    L1455
L1090:
  mov    0xdc(%rsp),%r10d
  jmp    L1174
L192:
  mov    0xa8(%rsp),%edx
  sub    0x5c(%rsp),%edx
  mov    0x38(%rsp),%eax
  sub    $0x1,%eax
  imul   0x94(%rsp),%eax
  sub    %eax,%edx
  mov    %edx,0x80(%rsp)
  mov    0xe8(%rsp),%r10d
  jmp    L1222
L420:
  sub    $0x1,%r8d
  sub    $0x1,%ecx
  je     L152
L538:
  mov    %r11d,%edi
  sub    %ecx,%edi
  mov    %r8d,%r9d
  mov    $0x0,%eax
  test   %r8d,%r8d
  js     L420
L1000:
  lea    (%rsi,%rax,1),%edx
  cmp    %edx,%ebp
  cmove  %eax,%r14d
  cmove  %edi,%r15d
  add    $0x1,%eax
  cmp    %ecx,%eax
  jne    L1000
  lea    0x1(%r9,%rsi,1),%esi
  jmp    L420
L152:
  mov    %r15d,0x60(%rsp)
  mov    %r14d,0x64(%rsp)
L558:
  test   %r10d,%r10d
  js     L1273
  mov    %r10d,%r8d
  add    $0x1,%r10d
  mov    %r10d,%ecx
  mov    $0x0,%esi
  mov    0x80(%rsp),%edi
  jmp    L1244
L759:
  sub    $0x1,%r8d
  sub    $0x1,%ecx
  je     L1273
L1244:
  mov    %r10d,%r9d
  sub    %ecx,%r9d
  mov    %r8d,%r11d
  mov    $0x0,%eax
  test   %r8d,%r8d
  js     L759
L1505:
  lea    (%rsi,%rax,1),%edx
  cmp    %edx,%edi
  cmove  %eax,%r12d
  cmove  %r9d,%r13d
  add    $0x1,%eax
  cmp    %ecx,%eax
  jne    L1505
  lea    0x1(%r11,%rsi,1),%esi
  jmp    L759
L1273:
  mov    0x20(%rsp),%eax
  test   %eax,%eax
  jle    L942
  mov    %eax,%r15d
  mov    $0x0,%ebx
  mov    0x60(%rsp),%eax
  add    %r13d,%eax
  pxor   %xmm5,%xmm5
  cvtsi2sd %eax,%xmm5
  movsd  %xmm5,0x18(%rsp)
  mov    %ebp,0x50(%rsp)
  mov    0xb0(%rsp),%rbp
  mov    0x30(%rsp),%r14
L577:
  movsd  0x0(%rbp,%rbx,8),%xmm0
  movsd  0x18(%rsp),%xmm1
  call   <pow@plt>
  movsd  %xmm0,(%r14,%rbx,8)
  add    $0x1,%rbx
  cmp    %r15,%rbx
  jne    L577
  mov    0x50(%rsp),%ebp
L942:
  mov    0x24(%rsp),%eax
  test   %eax,%eax
  jle    L846
  mov    %eax,%r15d
  mov    $0x0,%ebx
  mov    0x64(%rsp),%eax
  add    %r12d,%eax
  pxor   %xmm6,%xmm6
  cvtsi2sd %eax,%xmm6
  movsd  %xmm6,0x18(%rsp)
  mov    %ebp,0x50(%rsp)
  mov    0xb8(%rsp),%rbp
  mov    0x10(%rsp),%r14
L310:
  movsd  0x0(%rbp,%rbx,8),%xmm0
  movsd  0x18(%rsp),%xmm1
  call   <pow@plt>
  movsd  %xmm0,(%r14,%rbx,8)
  add    $0x1,%rbx
  cmp    %r15,%rbx
  jne    L310
  mov    0x50(%rsp),%ebp
L846:
  cmpl   $0x0,0x28(%rsp)
  jne    L171
  cmpl   $0x0,0x38(%rsp)
  je     L91
  mov    0x38(%rsp),%eax
  cmp    0x170(%rsp),%eax
  jl     L1095
  pxor   %xmm1,%xmm1
  cmpl   $0x0,0xac(%rsp)
  jle    L390
  mov    0x148(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    0x150(%rsp),%r15
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x28(%rsp)
  mov    %r13d,0x38(%rsp)
  mov    %r12d,0x48(%rsp)
  mov    0x1a0(%rsp),%r12
  mov    0x1b0(%rsp),%r13
  mov    0x1b8(%rsp),%r14
L188:
  cvttsd2si (%r15),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x18(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%ebx
  sub    0x140(%rsp),%ebx
  mov    $0x0,%esi
  cmovs  %esi,%ebx
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r9d
  cmp    %r9d,%ecx
  cmovg  %r9d,%ecx
  mov    %ecx,%r11d
  cmp    %eax,%edx
  jge    L159
  movslq %ebx,%rdi
  mov    0x30(%rsp),%rsi
  lea    (%rsi,%rdi,8),%r8
  movslq %edx,%rsi
  mov    0x10(%rsp),%rcx
  lea    (%rcx,%rsi,8),%r10
  mov    %r9d,%ecx
  imul   %edx,%ecx
  movslq %ecx,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r9
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x28(%rsp),%rdi
  lea    (%rdi,%rax,8),%rbp
  lea    -0x1(%r11),%eax
  sub    %ebx,%eax
  lea    0x8(,%rax,8),%rdi
L1295:
  lea    (%r12,%r9,1),%rsi
  lea    0x0(%r13,%r9,1),%rcx
  lea    (%r14,%r9,1),%rdx
  movsd  (%r10),%xmm2
  cmp    %r11d,%ebx
  jge    L779
  mov    $0x0,%eax
L657:
  movapd %xmm2,%xmm0
  mulsd  (%r8,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rdx,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %rdi,%rax
  jne    L657
L779:
  add    $0x8,%r10
  add    0x8(%rsp),%r9
  cmp    %rbp,%r10
  jne    L1295
L159:
  add    $0x8,%r15
  addq   $0x8,0x18(%rsp)
  cmp    0x40(%rsp),%r15
  jne    L188
  mov    0x38(%rsp),%r13d
  mov    0x48(%rsp),%r12d
  jmp    L390
L91:
  cmpl   $0x0,0xac(%rsp)
  jle    L300
  mov    0x148(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    0x150(%rsp),%r15
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x28(%rsp)
  mov    %r13d,0x38(%rsp)
  mov    %r12d,0x48(%rsp)
  mov    0x1a0(%rsp),%r12
  mov    0x1b0(%rsp),%r13
  mov    0x1b8(%rsp),%r14
  jmp    L886
L313:
  add    $0x8,%r15
  addq   $0x8,0x18(%rsp)
  cmp    0x40(%rsp),%r15
  je     L935
L886:
  cvttsd2si (%r15),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x18(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%ebx
  sub    0x140(%rsp),%ebx
  mov    $0x0,%esi
  cmovs  %esi,%ebx
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r9d
  cmp    %r9d,%ecx
  cmovg  %r9d,%ecx
  mov    %ecx,%r11d
  cmp    %eax,%edx
  jge    L313
  movslq %ebx,%rdi
  mov    0x30(%rsp),%rsi
  lea    (%rsi,%rdi,8),%r8
  movslq %edx,%rsi
  mov    0x10(%rsp),%rcx
  lea    (%rcx,%rsi,8),%r10
  mov    %r9d,%ecx
  imul   %edx,%ecx
  movslq %ecx,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r9
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x28(%rsp),%rdi
  lea    (%rdi,%rax,8),%rbp
  lea    -0x1(%r11),%eax
  sub    %ebx,%eax
  lea    0x8(,%rax,8),%rdi
L1149:
  lea    (%r12,%r9,1),%rcx
  lea    0x0(%r13,%r9,1),%rdx
  lea    (%r14,%r9,1),%rsi
  movsd  (%r10),%xmm3
  cmp    %r11d,%ebx
  jge    L480
  mov    $0x0,%eax
L56:
  movsd  (%rcx,%rax,1),%xmm2
  movapd %xmm3,%xmm0
  mulsd  (%r8,%rax,1),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  (%rdx,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %rdi,%rax
  jne    L56
L480:
  add    $0x8,%r10
  add    0x8(%rsp),%r9
  cmp    %rbp,%r10
  jne    L1149
  jmp    L313
L935:
  mov    0x38(%rsp),%r13d
  mov    0x48(%rsp),%r12d
  jmp    L390
L1095:
  cmpl   $0x0,0xac(%rsp)
  jle    L990
  movslq 0x38(%rsp),%rax
  mov    0x168(%rsp),%rbx
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x38(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x150(%rsp),%rax
  mov    %rax,0x18(%rsp)
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x48(%rsp)
  mov    %r13d,0x50(%rsp)
  mov    %r12d,0x70(%rsp)
  mov    0x1a0(%rsp),%r13
  jmp    L1317
L711:
  movslq %ebx,%rax
  lea    0x0(%r13,%rax,8),%rsi
L1040:
  mov    %r10,%rcx
  add    0x1b0(%rsp),%rcx
  mov    %r10,%rdx
  add    0x1b8(%rsp),%rdx
  movsd  (%r11),%xmm4
  cmp    %ebp,%r12d
  jge    L937
  mov    $0x0,%eax
L1105:
  movsd  (%rdi,%rax,1),%xmm3
  movapd %xmm4,%xmm0
  mulsd  (%r9,%rax,1),%xmm0
  mulsd  %xmm3,%xmm0
  movsd  (%rsi,%rax,1),%xmm2
  subsd  %xmm3,%xmm2
  mulsd  %xmm2,%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rdx,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %r8,%rax
  jne    L1105
L937:
  add    $0x8,%r11
  add    0x20(%rsp),%ebx
  add    0x8(%rsp),%r10
  cmp    %r11,%r14
  je     L1135
L1001:
  lea    0x0(%r13,%r10,1),%rdi
  test   %r15d,%r15d
  je     L711
  movslq %ebx,%rax
  mov    0x1a8(%rsp),%rsi
  lea    (%rsi,%rax,8),%rsi
  jmp    L1040
L1135:
  addq   $0x8,0x18(%rsp)
  mov    0x18(%rsp),%rax
  addq   $0x8,0x28(%rsp)
  cmp    0x40(%rsp),%rax
  je     L1251
L1317:
  mov    0x18(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x28(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%r12d
  sub    0x140(%rsp),%r12d
  mov    $0x0,%esi
  cmovs  %esi,%r12d
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r14d
  cmp    %r14d,%ecx
  cmovg  %r14d,%ecx
  mov    %ecx,%ebp
  cmp    %eax,%edx
  jge    L1135
  mov    0x38(%rsp),%rbx
  mov    (%rbx),%r15d
  movslq %r12d,%rdi
  mov    0x30(%rsp),%rbx
  lea    (%rbx,%rdi,8),%r9
  movslq %edx,%rsi
  mov    0x10(%rsp),%rbx
  lea    (%rbx,%rsi,8),%r11
  mov    0x6c(%rsp),%ebx
  add    %edx,%ebx
  imul   %r14d,%ebx
  mov    0x68(%rsp),%ecx
  add    %r12d,%ecx
  add    %ecx,%ebx
  imul   %edx,%r14d
  movslq %r14d,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r10
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x48(%rsp),%rdi
  lea    (%rdi,%rax,8),%r14
  lea    -0x1(%rbp),%eax
  sub    %r12d,%eax
  lea    0x8(,%rax,8),%r8
  jmp    L1001
L1251:
  mov    0x50(%rsp),%r13d
  mov    0x70(%rsp),%r12d
L390:
  mov    0x58(%rsp),%eax
  add    0xd8(%rsp),%eax
  cltq
  mov    0x180(%rsp),%rbx
  movsd  %xmm1,(%rbx,%rax,8)
  movslq 0x88(%rsp),%rax
  movsd  %xmm1,(%rbx,%rax,8)
L68:
  mov    0x190(%rsp),%ebx
  add    %ebx,0x88(%rsp)
  addl   $0x1,0x58(%rsp)
  mov    0x58(%rsp),%eax
  cmp    0x98(%rsp),%eax
  je     L1333
L203:
  mov    0x58(%rsp),%eax
  mov    %eax,%ebp
  mov    0x5c(%rsp),%ebx
  add    %ebx,%ebp
  movl   $0x0,0x28(%rsp)
  cmp    %ebp,%ebx
  jg     L1053
  cltd
  idivl  0x9c(%rsp)
  add    $0x1,%eax
  mov    %eax,0x28(%rsp)
L1053:
  movl   $0x0,0x38(%rsp)
  mov    0x5c(%rsp),%ebx
  mov    0x84(%rsp),%eax
  cmp    %eax,%ebx
  jg     L1111
  mov    0xa8(%rsp),%eax
  sub    %ebx,%eax
  cltd
  idivl  0x9c(%rsp)
  add    $0x1,%eax
  mov    %eax,0x38(%rsp)
L1111:
  mov    0x28(%rsp),%eax
  cmp    0x170(%rsp),%eax
  jge    L630
  cltq
  mov    0x158(%rsp),%rbx
  mov    (%rbx,%rax,4),%ebx
  mov    %ebx,0x70(%rsp)
  mov    0x160(%rsp),%rbx
  mov    (%rbx,%rax,4),%eax
  mov    %eax,0x74(%rsp)
  jmp    L776
L171:
  cmpb   $0x0,0x48(%rsp)
  je     L1242
  cmpl   $0x0,0x38(%rsp)
  je     L959
  mov    0x38(%rsp),%eax
  cmp    0x170(%rsp),%eax
  jl     L314
  pxor   %xmm2,%xmm2
  cmpl   $0x0,0xac(%rsp)
  jle    L483
  movslq 0x28(%rsp),%rax
  mov    0x168(%rsp),%rbx
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x38(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x150(%rsp),%rax
  mov    %rax,0x18(%rsp)
  pxor   %xmm2,%xmm2
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x48(%rsp)
  mov    %r13d,0x50(%rsp)
  mov    %r12d,0x80(%rsp)
  mov    0x1a0(%rsp),%r13
  jmp    L924
L959:
  cmpl   $0x0,0xac(%rsp)
  jle    L338
  movslq 0x28(%rsp),%rax
  mov    0x168(%rsp),%rbx
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x38(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x150(%rsp),%rax
  mov    %rax,0x18(%rsp)
  pxor   %xmm2,%xmm2
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x48(%rsp)
  mov    %r13d,0x50(%rsp)
  mov    %r12d,0x80(%rsp)
  mov    0x1a0(%rsp),%r13
  jmp    L901
L1394:
  movslq %ebx,%rax
  lea    0x0(%r13,%rax,8),%rdx
L1475:
  mov    %r10,%rsi
  add    0x1b0(%rsp),%rsi
  mov    %r10,%rdi
  add    0x1b8(%rsp),%rdi
  movsd  (%r11),%xmm4
  cmp    %ebp,%r12d
  jge    L1514
  mov    $0x0,%eax
L1016:
  movsd  (%rcx,%rax,1),%xmm3
  movapd %xmm4,%xmm1
  mulsd  (%r9,%rax,1),%xmm1
  movsd  (%rdx,%rax,1),%xmm0
  subsd  %xmm3,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm3,%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  mulsd  (%rdi,%rax,1),%xmm0
  addsd  %xmm0,%xmm2
  add    $0x8,%rax
  cmp    %rax,%r8
  jne    L1016
L1514:
  add    $0x8,%r11
  add    0x20(%rsp),%ebx
  add    0x8(%rsp),%r10
  cmp    %r14,%r11
  je     L1450
L309:
  lea    0x0(%r13,%r10,1),%rcx
  test   %r15d,%r15d
  je     L1394
  movslq %ebx,%rax
  mov    0x1a8(%rsp),%rsi
  lea    (%rsi,%rax,8),%rdx
  jmp    L1475
L1450:
  addq   $0x8,0x18(%rsp)
  mov    0x18(%rsp),%rax
  addq   $0x8,0x28(%rsp)
  cmp    0x40(%rsp),%rax
  je     L528
L901:
  mov    0x18(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x28(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%r12d
  sub    0x140(%rsp),%r12d
  mov    $0x0,%esi
  cmovs  %esi,%r12d
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r14d
  cmp    %r14d,%ecx
  cmovg  %r14d,%ecx
  mov    %ecx,%ebp
  cmp    %eax,%edx
  jge    L1450
  mov    0x38(%rsp),%rbx
  mov    (%rbx),%r15d
  movslq %r12d,%rdi
  mov    0x30(%rsp),%rbx
  lea    (%rbx,%rdi,8),%r9
  movslq %edx,%rsi
  mov    0x10(%rsp),%rbx
  lea    (%rbx,%rsi,8),%r11
  mov    0x74(%rsp),%ebx
  add    %edx,%ebx
  imul   %r14d,%ebx
  mov    0x70(%rsp),%ecx
  add    %r12d,%ecx
  add    %ecx,%ebx
  imul   %edx,%r14d
  movslq %r14d,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r10
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x48(%rsp),%rdi
  lea    (%rdi,%rax,8),%r14
  lea    -0x1(%rbp),%eax
  sub    %r12d,%eax
  lea    0x8(,%rax,8),%r8
  jmp    L309
L528:
  mov    0x50(%rsp),%r13d
  mov    0x80(%rsp),%r12d
  jmp    L483
L314:
  cmpl   $0x0,0xac(%rsp)
  jle    L730
  movslq 0x28(%rsp),%rax
  mov    0x168(%rsp),%rbx
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0xc0(%rsp)
  movslq 0x38(%rsp),%rax
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0xc8(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0xa0(%rsp)
  mov    0x150(%rsp),%rax
  mov    %rax,0x78(%rsp)
  pxor   %xmm3,%xmm3
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0xe0(%rsp)
  mov    %ebp,0xf4(%rsp)
  mov    %r13d,0xf8(%rsp)
  mov    %r12d,0xfc(%rsp)
  mov    0x1a0(%rsp),%r13
  jmp    L1355
L5:
  movslq %ebp,%rax
  lea    0x0(%r13,%rax,8),%rdi
  jmp    L579
L315:
  movslq %r12d,%rax
  lea    0x0(%r13,%rax,8),%r8
L1023:
  mov    %r11,%rcx
  add    0x1b0(%rsp),%rcx
  mov    %r11,%rsi
  add    0x1b8(%rsp),%rsi
  movsd  (%rbx),%xmm4
  cmp    0x48(%rsp),%r14d
  jge    L673
  mov    $0x0,%eax
L252:
  movsd  (%rdx,%rax,1),%xmm2
  movapd %xmm4,%xmm0
  mulsd  (%r10,%rax,1),%xmm0
  movsd  (%rdi,%rax,1),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  movsd  (%r8,%rax,1),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  addsd  %xmm0,%xmm3
  add    $0x8,%rax
  cmp    %r9,%rax
  jne    L252
L673:
  add    $0x8,%rbx
  mov    0x20(%rsp),%eax
  add    %eax,%r12d
  add    %eax,%ebp
  add    0x8(%rsp),%r11
  cmp    0x50(%rsp),%rbx
  je     L1443
L906:
  lea    0x0(%r13,%r11,1),%rdx
  cmpl   $0x0,0x18(%rsp)
  je     L5
  movslq %ebp,%rax
  mov    0x1a8(%rsp),%rsi
  lea    (%rsi,%rax,8),%rdi
L579:
  test   %r15d,%r15d
  je     L315
  movslq %r12d,%rax
  mov    0x1a8(%rsp),%rsi
  lea    (%rsi,%rax,8),%r8
  jmp    L1023
L1443:
  addq   $0x8,0x78(%rsp)
  mov    0x78(%rsp),%rax
  addq   $0x8,0xa0(%rsp)
  cmp    0x40(%rsp),%rax
  je     L443
L1355:
  mov    0x78(%rsp),%rax
  cvttsd2si (%rax),%edx
  mov    %edx,%eax
  sub    0x140(%rsp),%eax
  mov    $0x0,%ecx
  cmovs  %ecx,%eax
  add    0x140(%rsp),%edx
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%edx
  mov    %edx,%edi
  cmovg  %ebx,%edi
  mov    0xa0(%rsp),%rbx
  cvttsd2si (%rbx),%edx
  mov    %edx,%r14d
  sub    0x140(%rsp),%r14d
  cmovs  %ecx,%r14d
  add    0x140(%rsp),%edx
  mov    0x20(%rsp),%r11d
  cmp    %r11d,%edx
  cmovg  %r11d,%edx
  mov    %edx,%r9d
  mov    %edx,0x48(%rsp)
  cmp    %edi,%eax
  jge    L1443
  mov    0xc0(%rsp),%rbx
  mov    (%rbx),%ebx
  mov    %ebx,0x18(%rsp)
  mov    0xc8(%rsp),%rbx
  mov    (%rbx),%r15d
  movslq %r14d,%rsi
  mov    0x30(%rsp),%rbx
  lea    (%rbx,%rsi,8),%r10
  movslq %eax,%rcx
  mov    0x10(%rsp),%rbx
  lea    (%rbx,%rcx,8),%rbx
  mov    0x6c(%rsp),%edx
  lea    (%rdx,%rax,1),%r12d
  imul   %r11d,%r12d
  mov    0x68(%rsp),%edx
  add    %r14d,%edx
  add    %edx,%r12d
  mov    0x74(%rsp),%edx
  lea    (%rdx,%rax,1),%ebp
  imul   %r11d,%ebp
  mov    0x70(%rsp),%edx
  add    %r14d,%edx
  add    %edx,%ebp
  imul   %eax,%r11d
  movslq %r11d,%rdx
  add    %rsi,%rdx
  lea    0x0(,%rdx,8),%r11
  sub    $0x1,%edi
  sub    %eax,%edi
  add    %rcx,%rdi
  mov    0xe0(%rsp),%rax
  lea    (%rax,%rdi,8),%rax
  mov    %rax,0x50(%rsp)
  lea    -0x1(%r9),%eax
  sub    %r14d,%eax
  lea    0x8(,%rax,8),%r9
  jmp    L906
L443:
  mov    0xf4(%rsp),%ebp
  mov    0xf8(%rsp),%r13d
  mov    0xfc(%rsp),%r12d
L295:
  mov    0x58(%rsp),%eax
  add    0xd8(%rsp),%eax
  cltq
  mov    0x180(%rsp),%rbx
  movsd  %xmm3,(%rbx,%rax,8)
  movslq 0x88(%rsp),%rax
  movsd  %xmm3,(%rbx,%rax,8)
  cmpb   $0x0,0x93(%rsp)
  je     L68
  mov    0x38(%rsp),%ebx
  test   %ebx,%ebx
  jle    L68
  mov    0x28(%rsp),%eax
  sub    $0x1,%eax
  mov    0x94(%rsp),%edi
  imul   %edi,%eax
  mov    0x5c(%rsp),%esi
  add    %esi,%eax
  add    0x80(%rsp),%eax
  sub    $0x1,%ebx
  mov    %ebx,%edx
  imul   %edi,%edx
  add    %esi,%edx
  add    %ebp,%edx
  mov    %edx,%ecx
  imul   0x190(%rsp),%ecx
  add    %eax,%ecx
  movslq %ecx,%rcx
  mov    0x180(%rsp),%rbx
  movsd  %xmm3,(%rbx,%rcx,8)
  imul   0x190(%rsp),%eax
  add    %edx,%eax
  cltq
  movsd  %xmm3,(%rbx,%rax,8)
  jmp    L68
L1162:
  movslq %ebx,%rax
  lea    0x0(%r13,%rax,8),%rdi
L1037:
  mov    %r10,%rcx
  add    0x1b0(%rsp),%rcx
  mov    %r10,%rsi
  add    0x1b8(%rsp),%rsi
  movsd  (%r11),%xmm3
  cmp    %ebp,%r12d
  jge    L606
  mov    $0x0,%eax
L428:
  movsd  (%rdi,%rax,1),%xmm0
  subsd  (%rdx,%rax,1),%xmm0
  movapd %xmm3,%xmm1
  mulsd  (%r9,%rax,1),%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  addsd  %xmm0,%xmm2
  add    $0x8,%rax
  cmp    %r8,%rax
  jne    L428
L606:
  add    $0x8,%r11
  add    0x20(%rsp),%ebx
  add    0x8(%rsp),%r10
  cmp    %r14,%r11
  je     L767
L612:
  lea    0x0(%r13,%r10,1),%rdx
  test   %r15d,%r15d
  je     L1162
  movslq %ebx,%rax
  mov    0x1a8(%rsp),%rsi
  lea    (%rsi,%rax,8),%rdi
  jmp    L1037
L767:
  addq   $0x8,0x18(%rsp)
  mov    0x18(%rsp),%rax
  addq   $0x8,0x28(%rsp)
  cmp    0x40(%rsp),%rax
  je     L956
L924:
  mov    0x18(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x28(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%r12d
  sub    0x140(%rsp),%r12d
  mov    $0x0,%esi
  cmovs  %esi,%r12d
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r14d
  cmp    %r14d,%ecx
  cmovg  %r14d,%ecx
  mov    %ecx,%ebp
  cmp    %eax,%edx
  jge    L767
  mov    0x38(%rsp),%rbx
  mov    (%rbx),%r15d
  movslq %r12d,%rdi
  mov    0x30(%rsp),%rbx
  lea    (%rbx,%rdi,8),%r9
  movslq %edx,%rsi
  mov    0x10(%rsp),%rbx
  lea    (%rbx,%rsi,8),%r11
  mov    0x74(%rsp),%ebx
  add    %edx,%ebx
  imul   %r14d,%ebx
  mov    0x70(%rsp),%ecx
  add    %r12d,%ecx
  add    %ecx,%ebx
  imul   %edx,%r14d
  movslq %r14d,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r10
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x48(%rsp),%rsi
  lea    (%rsi,%rax,8),%r14
  lea    -0x1(%rbp),%eax
  sub    %r12d,%eax
  lea    0x8(,%rax,8),%r8
  jmp    L612
L956:
  mov    0x50(%rsp),%r13d
  mov    0x80(%rsp),%r12d
L483:
  mov    0x58(%rsp),%eax
  add    0xd8(%rsp),%eax
  cltq
  mov    0x180(%rsp),%rbx
  movsd  %xmm2,(%rbx,%rax,8)
  movslq 0x88(%rsp),%rax
  movsd  %xmm2,(%rbx,%rax,8)
  jmp    L68
L1242:
  cmpl   $0x0,0x38(%rsp)
  je     L305
  mov    0x38(%rsp),%eax
  cmp    0x170(%rsp),%eax
  jl     L619
  mov    $0x0,%ebx
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x18(%rsp)
  cmpl   $0x0,0xac(%rsp)
  jle    L390
  mov    0x8(%rsp),%r11
  mov    %r13d,0x28(%rsp)
  mov    %r12d,0x38(%rsp)
  mov    %rbx,%r13
  mov    0x20(%rsp),%r14d
  mov    0x24(%rsp),%r15d
  jmp    L1426
L305:
  cmpl   $0x0,0xac(%rsp)
  jle    L322
  mov    0x148(%rsp),%rax
  mov    %rax,0x18(%rsp)
  mov    0x150(%rsp),%r15
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x28(%rsp)
  mov    %r13d,0x38(%rsp)
  mov    %r12d,0x48(%rsp)
  mov    0x1a0(%rsp),%r12
  mov    0x1b0(%rsp),%r13
  mov    0x1b8(%rsp),%r14
  jmp    L617
L1171:
  add    $0x8,%r15
  addq   $0x8,0x18(%rsp)
  cmp    0x40(%rsp),%r15
  je     L1262
L617:
  cvttsd2si (%r15),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x18(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%ebx
  sub    0x140(%rsp),%ebx
  mov    $0x0,%esi
  cmovs  %esi,%ebx
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r9d
  cmp    %r9d,%ecx
  cmovg  %r9d,%ecx
  mov    %ecx,%r11d
  cmp    %eax,%edx
  jge    L1171
  movslq %ebx,%rdi
  mov    0x30(%rsp),%rsi
  lea    (%rsi,%rdi,8),%r8
  movslq %edx,%rsi
  mov    0x10(%rsp),%rcx
  lea    (%rcx,%rsi,8),%r10
  mov    %r9d,%ecx
  imul   %edx,%ecx
  movslq %ecx,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r9
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x28(%rsp),%rdi
  lea    (%rdi,%rax,8),%rbp
  lea    -0x1(%r11),%eax
  sub    %ebx,%eax
  lea    0x8(,%rax,8),%rdi
L1182:
  lea    (%r12,%r9,1),%rdx
  lea    0x0(%r13,%r9,1),%rcx
  lea    (%r14,%r9,1),%rsi
  movsd  (%r10),%xmm2
  cmp    %r11d,%ebx
  jge    L873
  mov    $0x0,%eax
L764:
  movapd %xmm2,%xmm0
  mulsd  (%r8,%rax,1),%xmm0
  mulsd  (%rdx,%rax,1),%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %rdi,%rax
  jne    L764
L873:
  add    $0x8,%r10
  add    0x8(%rsp),%r9
  cmp    %rbp,%r10
  jne    L1182
  jmp    L1171
L1262:
  mov    0x38(%rsp),%r13d
  mov    0x48(%rsp),%r12d
  jmp    L390
L619:
  cmpl   $0x0,0xac(%rsp)
  jle    L501
  movslq 0x38(%rsp),%rax
  mov    0x168(%rsp),%rbx
  lea    (%rbx,%rax,4),%rax
  mov    %rax,0x38(%rsp)
  mov    0x148(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    0x150(%rsp),%rax
  mov    %rax,0x18(%rsp)
  pxor   %xmm1,%xmm1
  mov    0x10(%rsp),%rax
  add    $0x8,%rax
  mov    %rax,0x48(%rsp)
  mov    %r13d,0x50(%rsp)
  mov    %r12d,0x70(%rsp)
  mov    0x1a0(%rsp),%r13
  jmp    L883
L1080:
  movslq %ebx,%rax
  lea    0x0(%r13,%rax,8),%rdi
L615:
  mov    %r10,%rcx
  add    0x1b0(%rsp),%rcx
  mov    %r10,%rsi
  add    0x1b8(%rsp),%rsi
  movsd  (%r11),%xmm3
  cmp    %ebp,%r12d
  jge    L974
  mov    $0x0,%eax
L169:
  movsd  (%rdi,%rax,1),%xmm0
  subsd  (%rdx,%rax,1),%xmm0
  movapd %xmm3,%xmm2
  mulsd  (%r9,%rax,1),%xmm2
  mulsd  %xmm2,%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  mulsd  (%rsi,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %r8,%rax
  jne    L169
L974:
  add    $0x8,%r11
  add    0x20(%rsp),%ebx
  add    0x8(%rsp),%r10
  cmp    %r14,%r11
  je     L1142
L519:
  lea    0x0(%r13,%r10,1),%rdx
  test   %r15d,%r15d
  je     L1080
  movslq %ebx,%rax
  mov    0x1a8(%rsp),%rdi
  lea    (%rdi,%rax,8),%rdi
  jmp    L615
L1142:
  addq   $0x8,0x18(%rsp)
  mov    0x18(%rsp),%rax
  addq   $0x8,0x28(%rsp)
  cmp    0x40(%rsp),%rax
  je     L62
L883:
  mov    0x18(%rsp),%rax
  cvttsd2si (%rax),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  mov    0x24(%rsp),%ebx
  cmp    %ebx,%eax
  cmovg  %ebx,%eax
  mov    0x28(%rsp),%rbx
  cvttsd2si (%rbx),%ecx
  mov    %ecx,%r12d
  sub    0x140(%rsp),%r12d
  mov    $0x0,%esi
  cmovs  %esi,%r12d
  add    0x140(%rsp),%ecx
  mov    0x20(%rsp),%r14d
  cmp    %r14d,%ecx
  cmovg  %r14d,%ecx
  mov    %ecx,%ebp
  cmp    %eax,%edx
  jge    L1142
  mov    0x38(%rsp),%rbx
  mov    (%rbx),%r15d
  movslq %r12d,%rdi
  mov    0x30(%rsp),%rbx
  lea    (%rbx,%rdi,8),%r9
  movslq %edx,%rsi
  mov    0x10(%rsp),%rbx
  lea    (%rbx,%rsi,8),%r11
  mov    0x6c(%rsp),%ebx
  add    %edx,%ebx
  imul   %r14d,%ebx
  mov    0x68(%rsp),%ecx
  add    %r12d,%ecx
  add    %ecx,%ebx
  imul   %edx,%r14d
  movslq %r14d,%rcx
  add    %rdi,%rcx
  lea    0x0(,%rcx,8),%r10
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rsi,%rax
  mov    0x48(%rsp),%rdi
  lea    (%rdi,%rax,8),%r14
  lea    -0x1(%rbp),%eax
  sub    %r12d,%eax
  lea    0x8(,%rax,8),%r8
  jmp    L519
L62:
  mov    0x50(%rsp),%r13d
  mov    0x70(%rsp),%r12d
  jmp    L390
L919:
  mov    %rax,%r13
L1426:
  mov    0x150(%rsp),%rax
  cvttsd2si (%rax,%r13,8),%eax
  mov    %eax,%edx
  sub    0x140(%rsp),%edx
  mov    $0x0,%ecx
  cmovs  %ecx,%edx
  add    0x140(%rsp),%eax
  cmp    %r15d,%eax
  cmovg  %r15d,%eax
  mov    0x148(%rsp),%rbx
  cvttsd2si (%rbx,%r13,8),%ecx
  mov    %ecx,%ebp
  sub    0x140(%rsp),%ebp
  mov    $0x0,%esi
  cmovs  %esi,%ebp
  add    0x140(%rsp),%ecx
  cmp    %r14d,%ecx
  mov    %ecx,%ebx
  cmovg  %r14d,%ebx
  cmp    %eax,%edx
  jge    L1165
  movslq %ebp,%r9
  mov    0x30(%rsp),%rsi
  lea    (%rsi,%r9,8),%rdi
  movslq %edx,%rcx
  mov    0x10(%rsp),%rsi
  lea    (%rsi,%rcx,8),%r8
  mov    %r14d,%esi
  imul   %edx,%esi
  movslq %esi,%rsi
  add    %rsi,%r9
  shl    $0x3,%r9
  mov    %r9,%r10
  add    0x1b0(%rsp),%r10
  add    0x1b8(%rsp),%r9
  sub    $0x1,%eax
  sub    %edx,%eax
  add    %rcx,%rax
  mov    0x18(%rsp),%rsi
  lea    (%rsi,%rax,8),%r12
  lea    -0x1(%rbx),%eax
  sub    %ebp,%eax
  lea    0x8(,%rax,8),%rsi
L945:
  mov    %r10,%rdx
  mov    %r9,%rcx
  movsd  (%r8),%xmm2
  cmp    %ebx,%ebp
  jge    L499
  mov    $0x0,%eax
L1146:
  movapd %xmm2,%xmm0
  mulsd  (%rdi,%rax,1),%xmm0
  mulsd  (%rdx,%rax,1),%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %rsi,%rax
  jne    L1146
L499:
  add    $0x8,%r8
  add    %r11,%r10
  add    %r11,%r9
  cmp    %r12,%r8
  jne    L945
L1165:
  lea    0x1(%r13),%rax
  cmp    %r13,0xd0(%rsp)
  jne    L919
  mov    0x28(%rsp),%r13d
  mov    0x38(%rsp),%r12d
  jmp    L390
L730:
  pxor   %xmm3,%xmm3
  jmp    L295
L1333:
  mov    0x60(%rsp),%r15d
  mov    %r13d,%r14d
  mov    0x64(%rsp),%r13d
  mov    %r12d,0x18(%rsp)
L986:
  mov    0x84(%rsp),%ebx
  lea    0x1(%rbx),%eax
  mov    0x190(%rsp),%esi
  add    %esi,0xd8(%rsp)
  cmp    %ebx,0xec(%rsp)
  je     L1015
  mov    %eax,0x84(%rsp)
L933:
  mov    0x84(%rsp),%ebx
  mov    %ebx,0xa8(%rsp)
  mov    0x5c(%rsp),%edi
  neg    %edi
  mov    %edi,0x58(%rsp)
  mov    %ebx,0x88(%rsp)
  mov    0xf0(%rsp),%edi
  add    %ebx,%edi
  mov    %edi,0x98(%rsp)
  test   %ebx,%ebx
  js     L986
  mov    %r15d,0x60(%rsp)
  mov    %r13d,0x64(%rsp)
  mov    %r14d,%r13d
  mov    0x18(%rsp),%r12d
  jmp    L203
L300:
  pxor   %xmm1,%xmm1
  jmp    L390
L990:
  pxor   %xmm1,%xmm1
  jmp    L390
L322:
  pxor   %xmm1,%xmm1
  jmp    L390
L501:
  pxor   %xmm1,%xmm1
  jmp    L390
L338:
  pxor   %xmm2,%xmm2
  jmp    L483
L961:
  mov    0x8c(%rsp),%r10d
  mov    0x84(%rsp),%eax
  mov    %eax,0x80(%rsp)
L1222:
  mov    0x28(%rsp),%eax
  cmp    0x170(%rsp),%eax
  setl   0x48(%rsp)
  movzbl 0x48(%rsp),%ebx
  test   %eax,%eax
  setg   %al
  and    %ebx,%eax
  mov    %al,0x93(%rsp)
L1174:
  test   %r11d,%r11d
  js     L558
  mov    %r11d,%r8d
  add    $0x1,%r11d
  mov    %r11d,%ecx
  mov    $0x0,%esi
  mov    0x60(%rsp),%r15d
  mov    0x64(%rsp),%r14d
  jmp    L538
L555:
  mov    0x8c(%rsp),%ebx
  lea    0x2(%rbx),%eax
  lea    0x1(%rbx),%edx
  imul   %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%ebx
  mov    %eax,0x5c(%rsp)
  mov    0xdc(%rsp),%edi
  lea    0x1(%rdi),%eax
  lea    0x2(%rdi),%edx
  imul   %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,0x94(%rsp)
  mov    %eax,0x9c(%rsp)
  mov    0xac(%rsp),%eax
  lea    -0x1(%rax),%eax
  mov    %rax,0xd0(%rsp)
  mov    0x150(%rsp),%rsi
  lea    0x8(%rsi,%rax,8),%rax
  mov    %rax,0x40(%rsp)
  mov    %ebx,0xd8(%rsp)
  movl   $0x0,0x84(%rsp)
  mov    $0x1,%eax
  sub    %ebx,%eax
  mov    %eax,0xf0(%rsp)
  jmp    L933
L1015:
  add    $0x108,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D9
data_type: f64

tool: D9: 0.5

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;
      }
    }
  }
}
```