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

```asm
<d2S3Ddiag>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x390,%rsp
  mov    %rdi,-0x358(%rbp)
  mov    %rsi,-0x360(%rbp)
  mov    %rdx,-0x368(%rbp)
  mov    %rcx,-0x370(%rbp)
  mov    %r8,-0x378(%rbp)
  mov    %r9,-0x380(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x388(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x388(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x330(%rbp)
  mov    -0x388(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x32c(%rbp)
  mov    -0x388(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x328(%rbp)
  mov    -0x380(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x380(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x380(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x310(%rbp)
  mov    -0x378(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  -0x310(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x308(%rbp)
  mov    -0x378(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  movsd  -0x310(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x300(%rbp)
  mov    -0x378(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  movsd  -0x310(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x2f8(%rbp)
  mov    -0x330(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x32c(%rbp),%eax
  add    $0x1,%eax
  imul   %edx,%eax
  mov    -0x328(%rbp),%edx
  add    $0x1,%edx
  imul   %edx,%eax
  mov    %eax,-0x324(%rbp)
  movl   $0x1,-0x320(%rbp)
  mov    -0x330(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x31c(%rbp)
  mov    -0x330(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x32c(%rbp),%eax
  add    $0x1,%eax
  imul   %edx,%eax
  mov    %eax,-0x318(%rbp)
  movl   $0x0,-0x344(%rbp)
  jmp    L122
L125:
  movl   $0x0,-0x340(%rbp)
  jmp    L87
L82:
  movl   $0x0,-0x33c(%rbp)
  jmp    L31
L88:
  mov    -0x340(%rbp),%eax
  imul   -0x31c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x344(%rbp),%eax
  add    %eax,%edx
  mov    -0x33c(%rbp),%eax
  imul   -0x318(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x314(%rbp)
  movl   $0x0,-0x334(%rbp)
  movl   $0x0,-0x338(%rbp)
  jmp    L95
L28:
  mov    -0x314(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x334(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x360(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x2e0(%rbp,%rax,8)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x2c0(%rbp,%rax,8)
  mov    -0x31c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x280(%rbp,%rax,8)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x2a0(%rbp,%rax,8)
  mov    -0x318(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x220(%rbp,%rax,8)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x200(%rbp,%rax,8)
  mov    -0x31c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x240(%rbp,%rax,8)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2e8(%rbp)
  mov    -0x2e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x260(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2e0(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2c0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x280(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2a0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1e0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2c0(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x280(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x200(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x240(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1c0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2e0(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2c0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x240(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x260(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1a0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2a0(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2e0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x260(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x220(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x180(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x280(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x2a0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x220(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x200(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x160(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x260(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x240(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x200(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x220(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x140(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x1e0(%rbp,%rax,8),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x140(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D87(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x338(%rbp),%eax
  cltq
  movsd  %xmm0,-0x120(%rbp,%rax,8)
  mov    -0x324(%rbp),%eax
  add    %eax,-0x334(%rbp)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x100(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xe0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xc0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xa0(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x80(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x40(%rbp,%rax,8)
  mov    -0x338(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp,%rax,8)
  addl   $0x1,-0x338(%rbp)
L95:
  cmpl   $0x2,-0x338(%rbp)
  jle    L28
  movsd  -0x300(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  ja     L105
  movsd  -0x2f8(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L53
L105:
  mov    -0x370(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D299(%rip),%xmm1
  lea    -0xe0(%rbp),%r9
  lea    -0x100(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1e0(%rbp),%rdx
  lea    -0x2c0(%rbp),%rsi
  lea    -0x2e0(%rbp),%rax
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D299(%rip),%xmm1
  lea    -0xa0(%rbp),%r9
  lea    -0xe0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1e0(%rbp),%rdx
  lea    -0x280(%rbp),%rsi
  lea    -0x2c0(%rbp),%rax
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D299(%rip),%xmm1
  lea    -0xc0(%rbp),%r9
  lea    -0xa0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1e0(%rbp),%rdx
  lea    -0x2a0(%rbp),%rsi
  lea    -0x280(%rbp),%rax
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D299(%rip),%xmm1
  lea    -0x100(%rbp),%r9
  lea    -0xc0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1e0(%rbp),%rdx
  lea    -0x2e0(%rbp),%rsi
  lea    -0x2a0(%rbp),%rax
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xa0(%rbp),%r9
  lea    -0xe0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1c0(%rbp),%rdx
  lea    -0x280(%rbp),%rsi
  lea    -0x2c0(%rbp),%rax
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x20(%rbp),%r9
  lea    -0xa0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1c0(%rbp),%rdx
  lea    -0x200(%rbp),%rsi
  lea    -0x280(%rbp),%rax
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x60(%rbp),%r9
  lea    -0x20(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1c0(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x200(%rbp),%rax
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xe0(%rbp),%r9
  lea    -0x60(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1c0(%rbp),%rdx
  lea    -0x2c0(%rbp),%rsi
  lea    -0x240(%rbp),%rax
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xe0(%rbp),%r9
  lea    -0x100(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1a0(%rbp),%rdx
  lea    -0x2c0(%rbp),%rsi
  lea    -0x2e0(%rbp),%rax
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x48,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x60(%rbp),%r9
  lea    -0xe0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1a0(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x2c0(%rbp),%rax
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x50,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x80(%rbp),%r9
  lea    -0x60(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1a0(%rbp),%rdx
  lea    -0x260(%rbp),%rsi
  lea    -0x240(%rbp),%rax
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x58,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x100(%rbp),%r9
  lea    -0x80(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x1a0(%rbp),%rdx
  lea    -0x2e0(%rbp),%rsi
  lea    -0x260(%rbp),%rax
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x60,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x100(%rbp),%r9
  lea    -0xc0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x180(%rbp),%rdx
  lea    -0x2e0(%rbp),%rsi
  lea    -0x2a0(%rbp),%rax
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x68,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x80(%rbp),%r9
  lea    -0x100(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x180(%rbp),%rdx
  lea    -0x260(%rbp),%rsi
  lea    -0x2e0(%rbp),%rax
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x70,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x40(%rbp),%r9
  lea    -0x80(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x180(%rbp),%rdx
  lea    -0x220(%rbp),%rsi
  lea    -0x260(%rbp),%rax
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x78,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xc0(%rbp),%r9
  lea    -0x40(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x180(%rbp),%rdx
  lea    -0x2a0(%rbp),%rsi
  lea    -0x220(%rbp),%rax
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xc0(%rbp),%r9
  lea    -0xa0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x160(%rbp),%rdx
  lea    -0x2a0(%rbp),%rsi
  lea    -0x280(%rbp),%rax
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x88,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x88,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x40(%rbp),%r9
  lea    -0xc0(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x160(%rbp),%rdx
  lea    -0x220(%rbp),%rsi
  lea    -0x2a0(%rbp),%rax
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x90,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x90,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x20(%rbp),%r9
  lea    -0x40(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x160(%rbp),%rdx
  lea    -0x200(%rbp),%rsi
  lea    -0x220(%rbp),%rax
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0x98,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0x98,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0xa0(%rbp),%r9
  lea    -0x20(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x160(%rbp),%rdx
  lea    -0x280(%rbp),%rsi
  lea    -0x200(%rbp),%rax
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0xa0,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0xa0,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x60(%rbp),%r9
  lea    -0x80(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rdx
  lea    -0x240(%rbp),%rsi
  lea    -0x260(%rbp),%rax
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0xa8,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0xa8,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x20(%rbp),%r9
  lea    -0x60(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rdx
  lea    -0x200(%rbp),%rsi
  lea    -0x240(%rbp),%rax
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  lea    -0x40(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0xb0,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0xb0,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x40(%rbp),%r9
  lea    -0x20(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rdx
  lea    -0x220(%rbp),%rsi
  lea    -0x200(%rbp),%rax
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  lea    -0x80(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    -0x370(%rbp),%rax
  add    $0xb8,%rax
  movsd  (%rax),%xmm0
  mov    -0x368(%rbp),%rax
  add    $0xb8,%rax
  mov    (%rax),%rdi
  movsd  -0x2f8(%rbp),%xmm3
  movsd  -0x300(%rbp),%xmm2
  movsd  D265(%rip),%xmm1
  lea    -0x80(%rbp),%r9
  lea    -0x40(%rbp),%r10
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rdx
  lea    -0x260(%rbp),%rsi
  lea    -0x220(%rbp),%rax
  lea    -0xa0(%rbp),%r8
  push   %r8
  lea    -0xe0(%rbp),%r8
  push   %r8
  lea    -0x100(%rbp),%r8
  push   %r8
  lea    -0xc0(%rbp),%r8
  push   %r8
  lea    -0x20(%rbp),%r8
  push   %r8
  lea    -0x60(%rbp),%r8
  push   %r8
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  mov    %r10,%r8
  movapd %xmm0,%xmm1
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
L53:
  movl   $0x0,-0x334(%rbp)
  movl   $0x0,-0x338(%rbp)
  jmp    L38
L103:
  mov    -0x314(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x334(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x358(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x100(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0xe0(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x31c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0xa0(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0xc0(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x318(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x20(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x31c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x60(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x320(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x338(%rbp),%eax
  cltq
  movsd  -0x80(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x2f0(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x324(%rbp),%eax
  add    %eax,-0x334(%rbp)
  addl   $0x1,-0x338(%rbp)
L38:
  cmpl   $0x2,-0x338(%rbp)
  jle    L103
  addl   $0x1,-0x33c(%rbp)
L31:
  mov    -0x33c(%rbp),%eax
  cmp    -0x328(%rbp),%eax
  jl     L88
  addl   $0x1,-0x340(%rbp)
L87:
  mov    -0x340(%rbp),%eax
  cmp    -0x32c(%rbp),%eax
  jl     L82
  addl   $0x1,-0x344(%rbp)
L122:
  mov    -0x344(%rbp),%eax
  cmp    -0x330(%rbp),%eax
  jl     L125
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L73
  call   <__stack_chk_fail@plt>
L73:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D219
type_infered: f64
name: retrieve_data
arguments: label: D87
type_infered: f64
name: retrieve_data
arguments: label: D299
type_infered: f32[2]
name: retrieve_data
arguments: label: D265
type_infered: f64

tool: D219: 0.25

tool: D87: 0.5

tool: {"D299": [0.0,-1.875]}

tool: D265: 1

assistant: ```c
void d2S3Ddiag(double *prod, const double *yc, const double *ARef, const double *VRef, const double *alpha, const double *h, const double *m, int n) {
  const int m1 = m[0], m2 = m[1], m3 = m[2];
  double yA[3], yB[3], yC[3], yD[3], yE[3], yF[3], yG[3], yH[3], yABDC[3], yBDHF[3], yABFE[3], yCAEG[3], yDCGH[3], yEFHG[3], yM[3];
  double rA[3], rB[3], rC[3], rD[3], rE[3], rF[3], rG[3], rH[3];
  int id, i1, i2, i3, r, comp, idn;
  const double hd = h[0] * h[1] * h[2];
  const double alphaLength = alpha[0] * hd;
  const double alphaArea = alpha[1] * hd;
  const double alphaVolume = alpha[2] * hd;
  const int nn = (m1 + 1) * (m2 + 1) * (m3 + 1);
  const int inc_x = 1;
  const int inc_y = m1 + 1;
  const int inc_z = (m1 + 1) * (m2 + 1);
  const double *rptr;
  double *wptr;
#pragma omp parallel for default(shared) private(rptr, wptr, id, i1, i2, i3, r, comp, idn, yA, yB, yC, yD, yE, yF, yG, yH, yABDC, yBDHF, yABFE, yCAEG, yDCGH, yEFHG, yM, rA, rB, rC, rD, rE, rF, rG, rH)
  for (i1 = 0; i1 < m1; i1++) {
    for (i2 = 0; i2 < m2; i2++) {
      for (i3 = 0; i3 < m3; i3++) {
        idn = i1 + i2 * inc_y + i3 * inc_z;
        comp = 0;
        for (r = 0; r < 3; r++) {
          rptr = yc + idn + comp;
          yA[r] = *rptr;
          rptr += inc_x;
          yB[r] = *rptr;
          rptr += inc_y;
          yD[r] = *rptr;
          rptr -= inc_x;
          yC[r] = *rptr;
          rptr += inc_z;
          yG[r] = *rptr;
          rptr += inc_x;
          yH[r] = *rptr;
          rptr -= inc_y;
          yF[r] = *rptr;
          rptr -= inc_x;
          yE[r] = *rptr;
          yABDC[r] = 0.25 * (yA[r] + yB[r] + yD[r] + yC[r]);
          yBDHF[r] = 0.25 * (yB[r] + yD[r] + yH[r] + yF[r]);
          yABFE[r] = 0.25 * (yA[r] + yB[r] + yF[r] + yE[r]);
          yCAEG[r] = 0.25 * (yC[r] + yA[r] + yE[r] + yG[r]);
          yDCGH[r] = 0.25 * (yD[r] + yC[r] + yG[r] + yH[r]);
          yEFHG[r] = 0.25 * (yE[r] + yF[r] + yH[r] + yG[r]);
          yM[r] = 0.5 * (yABDC[r] + yEFHG[r]);
          comp += nn;
          rA[r] = 0.0;
          rB[r] = 0.0;
          rC[r] = 0.0;
          rD[r] = 0.0;
          rE[r] = 0.0;
          rF[r] = 0.0;
          rG[r] = 0.0;
          rH[r] = 0.0;
        }
        if ((alphaArea > 0) || (alphaVolume > 0)) {
          d2SdiagTetra(yA, yB, yABDC, yM, ARef[0], VRef[0], rA, rB, rD, rC, rE, rF, rH, rG, -1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yB, yD, yABDC, yM, ARef[1], VRef[1], rB, rD, rC, rA, rF, rH, rG, rE, -1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yD, yC, yABDC, yM, ARef[2], VRef[2], rD, rC, rA, rB, rH, rG, rE, rF, -1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yC, yA, yABDC, yM, ARef[3], VRef[3], rC, rA, rB, rD, rG, rE, rF, rH, -1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yB, yD, yBDHF, yM, ARef[4], VRef[4], rB, rD, rH, rF, rA, rC, rG, rE, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yD, yH, yBDHF, yM, ARef[5], VRef[5], rD, rH, rF, rB, rC, rG, rE, rA, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yH, yF, yBDHF, yM, ARef[6], VRef[6], rH, rF, rB, rD, rG, rE, rA, rC, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yF, yB, yBDHF, yM, ARef[7], VRef[7], rF, rB, rD, rH, rE, rA, rC, rG, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yA, yB, yABFE, yM, ARef[8], VRef[8], rA, rB, rF, rE, rC, rD, rH, rG, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yB, yF, yABFE, yM, ARef[9], VRef[9], rB, rF, rE, rA, rD, rH, rG, rC, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yF, yE, yABFE, yM, ARef[10], VRef[10], rF, rE, rA, rB, rH, rG, rC, rD, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yE, yA, yABFE, yM, ARef[11], VRef[11], rE, rA, rB, rF, rG, rC, rD, rH, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yC, yA, yCAEG, yM, ARef[12], VRef[12], rC, rA, rE, rG, rD, rB, rF, rH, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yA, yE, yCAEG, yM, ARef[13], VRef[13], rA, rE, rG, rC, rB, rF, rH, rD, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yE, yG, yCAEG, yM, ARef[14], VRef[14], rE, rG, rC, rA, rF, rH, rD, rB, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yG, yC, yCAEG, yM, ARef[15], VRef[15], rG, rC, rA, rE, rH, rD, rB, rF, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yD, yC, yDCGH, yM, ARef[16], VRef[16], rD, rC, rG, rH, rB, rA, rE, rF, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yC, yG, yDCGH, yM, ARef[17], VRef[17], rC, rG, rH, rD, rA, rE, rF, rB, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yG, yH, yDCGH, yM, ARef[18], VRef[18], rG, rH, rD, rC, rE, rF, rB, rA, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yH, yD, yDCGH, yM, ARef[19], VRef[19], rH, rD, rC, rG, rF, rB, rA, rE, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yE, yF, yEFHG, yM, ARef[20], VRef[20], rE, rF, rH, rG, rA, rB, rD, rC, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yF, yH, yEFHG, yM, ARef[21], VRef[21], rF, rH, rG, rE, rB, rD, rC, rA, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yH, yG, yEFHG, yM, ARef[22], VRef[22], rH, rG, rE, rF, rD, rC, rA, rB, 1.0, alphaArea, alphaVolume);
          d2SdiagTetra(yG, yE, yEFHG, yM, ARef[23], VRef[23], rG, rE, rF, rH, rC, rA, rB, rD, 1.0, alphaArea, alphaVolume);
        }
        comp = 0;
        for (r = 0; r < 3; r++) {
          wptr = prod + idn + comp;
#pragma omp atomic
          *wptr += rA[r];
          wptr += inc_x;
#pragma omp atomic
          *wptr += rB[r];
          wptr += inc_y;
#pragma omp atomic
          *wptr += rD[r];
          wptr -= inc_x;
#pragma omp atomic
          *wptr += rC[r];
          wptr += inc_z;
#pragma omp atomic
          *wptr += rG[r];
          wptr += inc_x;
#pragma omp atomic
          *wptr += rH[r];
          wptr -= inc_y;
#pragma omp atomic
          *wptr += rF[r];
          wptr -= inc_x;
#pragma omp atomic
          *wptr += rE[r];
          comp += nn;
        }
      }
    }
  }
}
```