user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<d2S3Ddiag>:
  endbr64
  push   %r15
  mov    %rsi,%r10
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdx,%rbx
  sub    $0x4e8,%rsp
  movsd  (%r9),%xmm0
  movsd  0x8(%r8),%xmm3
  mov    %rcx,0x40(%rsp)
  mulsd  0x8(%r9),%xmm0
  mov    %rdi,0x1d8(%rsp)
  mov    0x520(%rsp),%rcx
  mov    %rsi,0x1e0(%rsp)
  mulsd  0x10(%r9),%xmm0
  cvttsd2si 0x8(%rcx),%r14d
  cvttsd2si 0x10(%rcx),%r15d
  mov    %fs:0x28,%rsi
  mov    %rsi,0x4d8(%rsp)
  xor    %esi,%esi
  cvttsd2si (%rcx),%esi
  mulsd  %xmm0,%xmm3
  lea    0x1(%r14),%edx
  mov    %r14d,0x18c(%rsp)
  mulsd  0x10(%r8),%xmm0
  lea    0x1(%r15),%eax
  mov    %r15d,0x15c(%rsp)
  lea    0x1(%rsi),%ecx
  mov    %esi,0x1b4(%rsp)
  imul   %ecx,%edx
  movsd  %xmm0,0x30(%rsp)
  imul   %edx,%eax
  test   %esi,%esi
  jle    L14
  movslq %edx,%rdx
  movslq %ecx,%rcx
  lea    0x0(,%rdx,8),%r11
  lea    0x0(,%rcx,8),%rsi
  mov    %r11,%r9
  lea    (%rax,%rax,1),%edx
  mov    %rsi,0x190(%rsp)
  lea    0x8(%rsi),%rcx
  sub    %rsi,%r9
  movslq %edx,%rdx
  mov    %r9,0x1c0(%rsp)
  test   %r14d,%r14d
  jle    L14
  test   %r15d,%r15d
  jle    L14
  cltq
  shl    $0x3,%rdx
  movq   $0x0,0x1a0(%rsp)
  movsd  D49(%rip),%xmm5
  shl    $0x3,%rax
  mov    %rdx,0x1a8(%rsp)
  movsd  D210(%rip),%xmm11
  movl   $0x0,0x1b0(%rsp)
  lea    (%rcx,%rax,1),%rsi
  add    %r10,%rsi
  mov    %rsi,0x198(%rsp)
  lea    (%rdi,%rax,1),%rsi
  mov    %rsi,0x170(%rsp)
  lea    (%rdi,%rcx,1),%rsi
  lea    (%rsi,%rax,1),%r14
  add    %r10,%rax
  mov    %rsi,0x1b8(%rsp)
  add    %r9,%rsi
  mov    %rax,0x1d0(%rsp)
  lea    (%rcx,%r11,1),%rax
  mov    %rsi,0x1f0(%rsp)
  add    %rax,%rdi
  lea    (%r10,%rcx,1),%rsi
  mov    %r14,0x168(%rsp)
  mov    %rax,0x1f8(%rsp)
  mov    %rsi,0x1e8(%rsp)
  mov    %rdi,0x1c8(%rsp)
L81:
  mov    0x1d8(%rsp),%rdi
  mov    0x1a0(%rsp),%rcx
  pxor   %xmm6,%xmm6
  mov    0x1b8(%rsp),%rdx
  mov    0x168(%rsp),%r10
  mov    %rdi,%rax
  mov    0x1c0(%rsp),%rsi
  mov    0x1c8(%rsp),%r9
  add    %rcx,%rax
  mov    0x1f0(%rsp),%rbp
  mov    0x1e0(%rsp),%r14
  mov    %rax,0xb8(%rsp)
  mov    %rdx,%rax
  mov    0x1e8(%rsp),%r8
  add    %rcx,%rax
  mov    0x198(%rsp),%r15
  mov    %rax,0xc0(%rsp)
  lea    (%r11,%r10,1),%rax
  mov    %rax,0xc8(%rsp)
  mov    %rsi,%rax
  add    %r10,%rax
  mov    %rsi,%r10
  mov    %rax,0xd0(%rsp)
  mov    %rdi,%rax
  add    %r15,%r10
  mov    0x1a8(%rsp),%rdi
  mov    %r10,0x130(%rsp)
  mov    %r11,%r10
  add    %rdi,%rax
  add    %rdi,%rdx
  mov    %rax,0xd8(%rsp)
  mov    %rdi,%rax
  add    %r9,%rax
  mov    %rdx,0xe0(%rsp)
  mov    0x1f8(%rsp),%rdx
  mov    %rax,0xe8(%rsp)
  mov    %rdi,%rax
  add    %rbp,%rax
  add    %r14,%rdx
  mov    %rax,0xf0(%rsp)
  mov    %r14,%rax
  add    %rdi,%r14
  add    %rcx,%rax
  mov    %r14,0x138(%rsp)
  mov    %rax,0xf8(%rsp)
  mov    %rcx,%rax
  add    %r8,%rax
  mov    %rax,0x100(%rsp)
  lea    (%rcx,%rdx,1),%rax
  add    %rdi,%rdx
  mov    %rax,0x108(%rsp)
  mov    %rsi,%rax
  add    %r8,%rax
  mov    %rdx,0x148(%rsp)
  lea    (%rcx,%rax,1),%rsi
  add    %rdi,%rax
  mov    %rsi,0x110(%rsp)
  mov    0x1d0(%rsp),%rsi
  mov    %rax,0x150(%rsp)
  lea    (%rcx,%r9,1),%rax
  add    %rcx,%rsi
  mov    %rsi,0x118(%rsp)
  lea    (%r11,%r15,1),%rsi
  mov    %rsi,0x128(%rsp)
  mov    %rdi,%rsi
  add    %r8,%rsi
  mov    %rsi,0x140(%rsp)
  mov    %r15,0x120(%rsp)
  mov    %rax,0x178(%rsp)
  lea    (%rcx,%rbp,1),%rax
  movq   $0x0,0x160(%rsp)
  movl   $0x0,0x188(%rsp)
  mov    %rax,0x180(%rsp)
  nopw   0x0(%rax,%rax,1)
L48:
  mov    0x160(%rsp),%rax
  mov    0x178(%rsp),%rdi
  xor    %r11d,%r11d
  movl   $0x0,0x158(%rsp)
  add    %rax,%rdi
  mov    %rdi,0x90(%rsp)
  mov    0x180(%rsp),%rdi
  add    %rax,%rdi
  mov    %rdi,0x80(%rsp)
  mov    0x170(%rsp),%rdi
  add    %rax,%rdi
  add    0x168(%rsp),%rax
  mov    %rax,0x88(%rsp)
  lea    0x400(%rsp),%rax
  mov    %rdi,0x78(%rsp)
  mov    %rax,0x38(%rsp)
  jmp    L60
  cs nopw 0x0(%rax,%rax,1)
L25:
  lea    0x4a0(%rsp),%rax
  lea    0x3e0(%rsp),%r14
  mov    %r11,0xb0(%rsp)
  mov    D61(%rip),%rcx
  lea    0x3c0(%rsp),%r12
  mov    %rax,(%rsp)
  movsd  (%rbx),%xmm0
  lea    0x200(%rsp),%r11
  lea    0x300(%rsp),%rdx
  mov    %r10,0xa8(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%r8
  lea    0x220(%rsp),%r10
  push   %rax
  lea    0x4c8(%rsp),%rdi
  mov    %rdi,0x18(%rsp)
  push   %rdi
  mov    %r11,%rdi
  lea    0x490(%rsp),%rsi
  mov    %rsi,0x38(%rsp)
  push   %rsi
  mov    %r10,%rsi
  lea    0x478(%rsp),%rbp
  push   %rbp
  lea    0x440(%rsp),%r13
  push   %r13
  lea    0x468(%rsp),%r15
  push   %r15
  mov    0x70(%rsp),%rcx
  mov    0x68(%rsp),%r9
  movsd  0x60(%rsp),%xmm4
  movsd  (%rcx),%xmm1
  mov    %r12,%rcx
  mov    %r10,0x78(%rsp)
  mov    %rdx,0x88(%rsp)
  mov    %r11,0x80(%rsp)
  movsd  %xmm3,0x90(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x8(%rbx),%xmm0
  mov    %r15,%r9
  lea    0x260(%rsp),%r11
  mov    D61(%rip),%rdx
  push   %rbp
  push   0x8(%rsp)
  mov    %r11,%rsi
  push   0x20(%rsp)
  movq   %rdx,%xmm2
  push   0x40(%rsp)
  push   %r14
  push   %r13
  mov    0x70(%rsp),%rcx
  mov    0x88(%rsp),%rdx
  mov    0x68(%rsp),%r8
  movsd  0x90(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm4
  mov    0x78(%rsp),%rdi
  movsd  0x8(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %r11,0x88(%rsp)
  mov    %rdx,0x90(%rsp)
  movsd  %xmm3,0x98(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r13,%r9
  mov    %r15,%r8
  lea    0x240(%rsp),%r10
  mov    D61(%rip),%rdx
  push   0x28(%rsp)
  movsd  0x10(%rbx),%xmm0
  push   %rbp
  mov    %r10,%rsi
  push   0x10(%rsp)
  movq   %rdx,%xmm2
  push   0x28(%rsp)
  push   0x58(%rsp)
  push   %r14
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  mov    0x90(%rsp),%rdx
  mov    0x88(%rsp),%rdi
  movsd  0x98(%rsp),%xmm3
  movsd  0x10(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %r10,0x90(%rsp)
  mov    %rdx,0xa0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r14,%r9
  mov    %r13,%r8
  mov    D61(%rip),%rdx
  movsd  0x18(%rbx),%xmm0
  push   0x10(%rsp)
  push   0x30(%rsp)
  push   %rbp
  movq   %rdx,%xmm2
  push   0x18(%rsp)
  push   %r15
  push   0x60(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0xa0(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  mov    0x80(%rsp),%rsi
  movsd  0x98(%rsp),%xmm3
  mov    0x90(%rsp),%rdi
  movsd  0x18(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x20(%rbx),%xmm0
  mov    %r15,%r9
  lea    0x320(%rsp),%rdx
  mov    D53(%rip),%r8
  push   %rbp
  push   0x8(%rsp)
  push   %r13
  movq   %r8,%xmm2
  push   %r14
  push   0x48(%rsp)
  push   0x38(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0x98(%rsp),%xmm3
  mov    0x68(%rsp),%r8
  mov    0x88(%rsp),%rsi
  movsd  0x60(%rsp),%xmm4
  mov    %rdx,0x98(%rsp)
  mov    0x78(%rsp),%rdi
  movsd  0x20(%rcx),%xmm1
  mov    %r12,%rcx
  movsd  %xmm3,0xa0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x28(%rbx),%xmm0
  mov    %r15,%r8
  lea    0x2e0(%rsp),%rax
  mov    D53(%rip),%rdx
  push   %r14
  push   %rbp
  mov    %rax,%rsi
  push   0x10(%rsp)
  movq   %rdx,%xmm2
  push   %r13
  push   0x58(%rsp)
  push   0x50(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0x98(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  movsd  0xa0(%rsp),%xmm3
  mov    0x40(%rsp),%r9
  mov    %rax,0x98(%rsp)
  mov    0x88(%rsp),%rdi
  movsd  0x28(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %rdx,0xa0(%rsp)
  movsd  %xmm3,0xc8(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x30(%rbx),%xmm0
  mov    D53(%rip),%rdx
  lea    0x2a0(%rsp),%r11
  push   %r13
  push   %r14
  movq   %rdx,%xmm2
  mov    %r11,%rsi
  push   %rbp
  push   0x18(%rsp)
  push   %r15
  push   0x60(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0xa0(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  mov    0x58(%rsp),%r9
  movsd  0xc8(%rsp),%xmm3
  mov    0x40(%rsp),%r8
  mov    %r11,0xa0(%rsp)
  mov    0x98(%rsp),%rdi
  movsd  0x30(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %rdx,0xd0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x38(%rbx),%xmm0
  mov    D53(%rip),%rdx
  push   (%rsp)
  push   %r13
  movq   %rdx,%xmm2
  push   %r14
  push   %rbp
  push   0x30(%rsp)
  push   %r15
  mov    0x70(%rsp),%rcx
  mov    0x58(%rsp),%r8
  mov    0xd0(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  mov    0x68(%rsp),%r9
  mov    0x78(%rsp),%rsi
  mov    0xa0(%rsp),%rdi
  movsd  0x38(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x40(%rbx),%xmm0
  mov    D53(%rip),%r8
  lea    0x340(%rsp),%rdx
  push   (%rsp)
  push   0x18(%rsp)
  movq   %r8,%xmm2
  mov    %r14,%r8
  push   %r15
  push   %r13
  push   %rbp
  push   0x50(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  mov    0x68(%rsp),%r9
  mov    0x78(%rsp),%rsi
  mov    0x80(%rsp),%rdi
  mov    %rdx,0xd0(%rsp)
  movsd  0x40(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x48(%rbx),%xmm0
  mov    D53(%rip),%rdx
  push   %r13
  push   0x8(%rsp)
  movq   %rdx,%xmm2
  push   0x20(%rsp)
  push   %r15
  push   %r14
  push   %rbp
  mov    0x70(%rsp),%rcx
  mov    0x58(%rsp),%r9
  mov    0xd0(%rsp),%rdx
  mov    0xa0(%rsp),%rsi
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  mov    0x68(%rsp),%r8
  mov    0x78(%rsp),%rdi
  movsd  0x48(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x50(%rbx),%xmm0
  mov    %rbp,%r9
  lea    0x280(%rsp),%r11
  mov    D53(%rip),%rdx
  push   %r15
  push   %r13
  mov    %r11,%rsi
  push   0x10(%rsp)
  movq   %rdx,%xmm2
  push   0x28(%rsp)
  push   0x58(%rsp)
  push   %r14
  mov    0x70(%rsp),%rcx
  mov    0x58(%rsp),%r8
  mov    0xd0(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  movsd  0x50(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %r11,0x78(%rsp)
  mov    0xa0(%rsp),%rdi
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r14,%r9
  mov    %rbp,%r8
  mov    D53(%rip),%rdx
  movsd  0x58(%rbx),%xmm0
  push   0x10(%rsp)
  push   %r15
  push   %r13
  movq   %rdx,%xmm2
  push   0x18(%rsp)
  push   0x48(%rsp)
  push   0x60(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0xd0(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  mov    0x80(%rsp),%rsi
  mov    0x78(%rsp),%rdi
  movsd  0x58(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x60(%rbx),%xmm0
  mov    %r13,%r8
  lea    0x360(%rsp),%rdx
  push   0x10(%rsp)
  mov    D53(%rip),%r9
  push   0x30(%rsp)
  push   0x48(%rsp)
  movq   %r9,%xmm2
  mov    %r14,%r9
  push   %r15
  push   0x20(%rsp)
  push   %rbp
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  mov    0x80(%rsp),%rsi
  mov    0x90(%rsp),%rdi
  movsd  0xc8(%rsp),%xmm3
  movsd  0x60(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %rdx,0xd0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %rbp,%r9
  mov    %r14,%r8
  mov    D53(%rip),%rdx
  movsd  0x68(%rbx),%xmm0
  push   %r15
  push   0x18(%rsp)
  push   0x38(%rsp)
  movq   %rdx,%xmm2
  push   0x50(%rsp)
  push   %r13
  push   0x28(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0xd0(%rsp),%rdx
  mov    0x78(%rsp),%rsi
  movsd  0x60(%rsp),%xmm4
  movsd  0xc8(%rsp),%xmm3
  mov    0x80(%rsp),%rdi
  movsd  0x68(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x70(%rbx),%xmm0
  mov    %rbp,%r8
  lea    0x2c0(%rsp),%r10
  mov    D53(%rip),%rdx
  push   0x38(%rsp)
  push   %r15
  mov    %r10,%rsi
  push   0x20(%rsp)
  movq   %rdx,%xmm2
  push   0x40(%rsp)
  push   %r14
  push   %r13
  mov    0x70(%rsp),%rcx
  mov    0x30(%rsp),%r9
  movsd  0x60(%rsp),%xmm4
  mov    0xd0(%rsp),%rdx
  mov    0x78(%rsp),%rdi
  movsd  0xc8(%rsp),%xmm3
  movsd  0x70(%rcx),%xmm1
  mov    %r12,%rcx
  mov    %r10,0x80(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x78(%rbx),%xmm0
  mov    %r13,%r9
  push   0x28(%rsp)
  mov    D53(%rip),%rdx
  push   0x40(%rsp)
  push   %r15
  movq   %rdx,%xmm2
  push   0x28(%rsp)
  push   %rbp
  push   %r14
  mov    0x70(%rsp),%rcx
  mov    0x30(%rsp),%r8
  movsd  0x60(%rsp),%xmm4
  mov    0xd0(%rsp),%rdx
  mov    0x90(%rsp),%rsi
  movsd  0xc8(%rsp),%xmm3
  mov    0x80(%rsp),%rdi
  movsd  0x78(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%r9
  mov    %r15,%r8
  lea    0x380(%rsp),%rdx
  push   0x28(%rsp)
  movsd  0x80(%rbx),%xmm0
  push   %rbp
  movq   %r9,%xmm2
  mov    %r13,%r9
  push   %r14
  push   0x50(%rsp)
  push   0x30(%rsp)
  push   0x28(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0xc8(%rsp),%xmm3
  movsd  0x60(%rsp),%xmm4
  mov    0x90(%rsp),%rsi
  mov    0x88(%rsp),%rdi
  mov    %rdx,0xc8(%rsp)
  movsd  0x80(%rcx),%xmm1
  mov    %r12,%rcx
  movsd  %xmm3,0xd0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rdx
  mov    %r13,%r8
  push   0x38(%rsp)
  movsd  0x88(%rbx),%xmm0
  push   0x30(%rsp)
  movq   %rdx,%xmm2
  push   %rbp
  push   %r14
  push   %r15
  push   0x38(%rsp)
  mov    0x70(%rsp),%rcx
  mov    0xc8(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  mov    0x30(%rsp),%r9
  mov    0x80(%rsp),%rsi
  mov    0x90(%rsp),%rdi
  movsd  0xd0(%rsp),%xmm3
  movsd  0x88(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rdx
  movsd  0x90(%rbx),%xmm0
  push   %r14
  push   0x40(%rsp)
  movq   %rdx,%xmm2
  push   0x38(%rsp)
  push   %rbp
  push   %r13
  push   %r15
  mov    0x70(%rsp),%rcx
  movsd  0xd0(%rsp),%xmm3
  mov    0x40(%rsp),%r9
  mov    0xc8(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  mov    0x30(%rsp),%r8
  mov    0x98(%rsp),%rsi
  movsd  %xmm3,0x90(%rsp)
  mov    0x80(%rsp),%rdi
  movsd  0x90(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rdx
  mov    %r15,%r9
  push   %rbp
  movsd  0x98(%rbx),%xmm0
  push   %r14
  movq   %rdx,%xmm2
  push   0x48(%rsp)
  push   0x40(%rsp)
  push   0x20(%rsp)
  push   %r13
  mov    0x70(%rsp),%rcx
  mov    0x40(%rsp),%r8
  mov    0xc8(%rsp),%rdx
  movsd  0x60(%rsp),%xmm4
  mov    0x88(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  movsd  0x90(%rsp),%xmm3
  movsd  0x98(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rsi
  mov    %rbp,%r8
  lea    0x3a0(%rsp),%rdx
  push   %r13
  movsd  0xa0(%rbx),%xmm0
  push   %r15
  movq   %rsi,%xmm2
  push   0x48(%rsp)
  push   %r14
  push   0x20(%rsp)
  push   0x38(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  mov    0x58(%rsp),%r9
  movsd  0x90(%rsp),%xmm3
  mov    0xa0(%rsp),%rsi
  mov    %rdx,0x88(%rsp)
  mov    0x78(%rsp),%rdi
  movsd  0xa0(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rdx
  movsd  0xa8(%rbx),%xmm0
  push   %r14
  push   %r13
  movq   %rdx,%xmm2
  push   %r15
  push   0x50(%rsp)
  push   %rbp
  push   0x28(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  movsd  0x90(%rsp),%xmm3
  mov    0x40(%rsp),%r9
  mov    0x58(%rsp),%r8
  mov    0x88(%rsp),%rdx
  mov    0x98(%rsp),%rsi
  mov    0xa0(%rsp),%rdi
  movsd  0xa8(%rcx),%xmm1
  mov    %r12,%rcx
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rax
  movsd  0xb0(%rbx),%xmm0
  push   0x38(%rsp)
  push   %r14
  movq   %rax,%xmm2
  push   %r13
  push   %r15
  push   0x48(%rsp)
  push   %rbp
  mov    0x70(%rsp),%rcx
  mov    0x30(%rsp),%r9
  movsd  0x60(%rsp),%xmm4
  mov    0x40(%rsp),%r8
  mov    0x88(%rsp),%rdx
  mov    0x80(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  movsd  0xb0(%rcx),%xmm1
  mov    %r12,%rcx
  movsd  0x90(%rsp),%xmm3
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    D53(%rip),%rax
  mov    %rbp,%r9
  push   %r15
  movsd  0xb8(%rbx),%xmm0
  push   0x40(%rsp)
  movq   %rax,%xmm2
  push   %r14
  push   %r13
  push   0x30(%rsp)
  push   0x50(%rsp)
  mov    0x70(%rsp),%rcx
  movsd  0x60(%rsp),%xmm4
  mov    0x30(%rsp),%r8
  movsd  0x90(%rsp),%xmm3
  mov    0x88(%rsp),%rdx
  mov    0x78(%rsp),%rsi
  mov    0x80(%rsp),%rdi
  movsd  0xb8(%rcx),%xmm1
  mov    %r12,%rcx
  movsd  %xmm3,0x40(%rsp)
  call   <d2SdiagTetra@plt>
  mov    D49(%rip),%rax
  movsd  0x410(%rsp),%xmm0
  movsd  0x450(%rsp),%xmm14
  movsd  0x4d0(%rsp),%xmm13
  movsd  0x490(%rsp),%xmm12
  movapd %xmm0,%xmm6
  movsd  0x418(%rsp),%xmm10
  movq   %rax,%xmm5
  movsd  0x498(%rsp),%xmm7
  mov    D210(%rip),%rax
  movhpd 0x430(%rsp),%xmm6
  movhpd 0x470(%rsp),%xmm14
  movsd  0x458(%rsp),%xmm9
  movaps %xmm6,0x30(%rsp)
  movsd  0x4d8(%rsp),%xmm8
  movhpd 0x4f0(%rsp),%xmm13
  movsd  0x420(%rsp),%xmm4
  pxor   %xmm6,%xmm6
  movsd  0x460(%rsp),%xmm2
  movhpd 0x4b0(%rsp),%xmm12
  movsd  0x4e0(%rsp),%xmm1
  movq   %rax,%xmm11
  movsd  0x4a0(%rsp),%xmm15
  movhpd 0x438(%rsp),%xmm10
  movhpd 0x478(%rsp),%xmm9
  movhpd 0x4f8(%rsp),%xmm8
  movhpd 0x4b8(%rsp),%xmm7
  movhpd 0x440(%rsp),%xmm4
  movhpd 0x480(%rsp),%xmm2
  movhpd 0x500(%rsp),%xmm1
  movhpd 0x4c0(%rsp),%xmm15
  movsd  0x40(%rsp),%xmm3
  mov    0xd8(%rsp),%r10
  add    $0x30,%rsp
  mov    0xb0(%rsp),%r11
L80:
  mov    0xb8(%rsp),%rax
  mov    0x80(%rsp),%rdi
  mov    0x78(%rsp),%rsi
  mov    0x88(%rsp),%rcx
  movupd (%rax,%r11,1),%xmm0
  mov    0xc8(%rsp),%rdx
  movaps %xmm0,0x10(%rsp)
  movapd (%rsp),%xmm0
  addpd  0x10(%rsp),%xmm0
  movups %xmm0,(%rax,%r11,1)
  mov    0xc0(%rsp),%rax
  movupd -0x8(%rax,%r11,1),%xmm0
  addpd  %xmm14,%xmm0
  movups %xmm0,-0x8(%rax,%r11,1)
  mov    0x90(%rsp),%rax
  movupd -0x8(%rax),%xmm0
  addpd  %xmm13,%xmm0
  movups %xmm0,-0x8(%rax)
  movupd -0x8(%rdi),%xmm0
  add    %r10,%rax
  addpd  %xmm12,%xmm0
  movups %xmm0,-0x8(%rdi)
  movupd (%rsi),%xmm0
  add    %r10,%rdi
  addpd  %xmm10,%xmm0
  movups %xmm0,(%rsi)
  movupd -0x8(%rcx),%xmm0
  add    %r10,%rsi
  addpd  %xmm9,%xmm0
  movups %xmm0,-0x8(%rcx)
  movupd -0x8(%rdx,%r11,1),%xmm0
  add    %r10,%rcx
  addpd  %xmm8,%xmm0
  movups %xmm0,-0x8(%rdx,%r11,1)
  mov    0xd0(%rsp),%rdx
  movupd -0x8(%rdx,%r11,1),%xmm0
  addpd  %xmm7,%xmm0
  movups %xmm0,-0x8(%rdx,%r11,1)
  mov    0xd8(%rsp),%rdx
  movupd (%rdx,%r11,1),%xmm7
  movapd %xmm7,%xmm0
  addpd  %xmm4,%xmm0
  movups %xmm0,(%rdx,%r11,1)
  mov    0xe0(%rsp),%rdx
  movupd -0x8(%rdx,%r11,1),%xmm7
  movapd %xmm7,%xmm0
  addpd  %xmm2,%xmm0
  movups %xmm0,-0x8(%rdx,%r11,1)
  mov    0xe8(%rsp),%rdx
  addl   $0x1,0x158(%rsp)
  movupd -0x8(%rdx,%r11,1),%xmm7
  mov    %rax,0x90(%rsp)
  mov    %rdi,0x80(%rsp)
  movapd %xmm7,%xmm0
  mov    %rsi,0x78(%rsp)
  addpd  %xmm1,%xmm0
  mov    %rcx,0x88(%rsp)
  movups %xmm0,-0x8(%rdx,%r11,1)
  mov    0xf0(%rsp),%rdx
  movupd -0x8(%rdx,%r11,1),%xmm7
  movapd %xmm7,%xmm0
  movaps %xmm7,(%rsp)
  addpd  %xmm15,%xmm0
  movups %xmm0,-0x8(%rdx,%r11,1)
  mov    0x158(%rsp),%edx
  add    %r10,%r11
  cmp    %edx,0x15c(%rsp)
  je     L19
L60:
  mov    0xf8(%rsp),%rax
  movsd  (%rax,%r11,1),%xmm12
  movsd  0x8(%rax,%r11,1),%xmm14
  mov    0x100(%rsp),%rax
  movapd %xmm12,%xmm1
  movapd %xmm14,%xmm4
  movsd  (%rax,%r11,1),%xmm10
  movsd  -0x8(%rax,%r11,1),%xmm7
  addsd  %xmm14,%xmm1
  mov    0x108(%rsp),%rax
  movapd %xmm10,%xmm0
  addsd  %xmm10,%xmm4
  movsd  -0x8(%rax,%r11,1),%xmm8
  movsd  (%rax,%r11,1),%xmm13
  addsd  %xmm1,%xmm0
  mov    0x110(%rsp),%rax
  addsd  %xmm13,%xmm4
  movsd  (%rax,%r11,1),%xmm9
  movsd  -0x8(%rax,%r11,1),%xmm2
  addsd  %xmm7,%xmm0
  mov    0x118(%rsp),%rax
  addsd  %xmm9,%xmm1
  addsd  %xmm9,%xmm4
  mulsd  %xmm5,%xmm0
  addsd  %xmm2,%xmm1
  mulsd  %xmm5,%xmm4
  movsd  %xmm0,0x300(%rsp)
  mulsd  %xmm5,%xmm1
  movsd  %xmm4,0x320(%rsp)
  movsd  (%rax,%r11,1),%xmm4
  movsd  %xmm1,0x340(%rsp)
  movapd %xmm12,%xmm1
  unpcklpd %xmm4,%xmm12
  movaps %xmm12,0x200(%rsp)
  addsd  %xmm7,%xmm1
  movsd  0x8(%rax,%r11,1),%xmm12
  mov    0x120(%rsp),%rax
  unpcklpd %xmm12,%xmm14
  movaps %xmm14,0x220(%rsp)
  addsd  %xmm2,%xmm1
  addsd  %xmm8,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  %xmm1,0x360(%rsp)
  movapd %xmm10,%xmm1
  addsd  %xmm7,%xmm1
  addsd  %xmm8,%xmm1
  addsd  %xmm13,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  %xmm1,0x380(%rsp)
  movapd %xmm9,%xmm1
  addsd  %xmm2,%xmm1
  addsd  %xmm13,%xmm1
  addsd  %xmm8,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  %xmm1,0x3a0(%rsp)
  addsd  %xmm1,%xmm0
  movsd  (%rax,%r11,1),%xmm1
  unpcklpd %xmm1,%xmm10
  movaps %xmm10,0x260(%rsp)
  movsd  -0x8(%rax,%r11,1),%xmm10
  mulsd  %xmm11,%xmm0
  mov    0x128(%rsp),%rax
  unpcklpd %xmm10,%xmm7
  movaps %xmm7,0x240(%rsp)
  movsd  -0x8(%rax,%r11,1),%xmm7
  movsd  %xmm0,0x3c0(%rsp)
  unpcklpd %xmm7,%xmm8
  movaps %xmm8,0x2c0(%rsp)
  movsd  (%rax,%r11,1),%xmm8
  mov    0x130(%rsp),%rax
  movaps %xmm6,0x3e0(%rsp)
  unpcklpd %xmm8,%xmm13
  movsd  (%rax,%r11,1),%xmm0
  movaps %xmm6,0x400(%rsp)
  movaps %xmm13,0x2e0(%rsp)
  movapd %xmm4,%xmm13
  addsd  %xmm10,%xmm4
  addsd  %xmm12,%xmm13
  addsd  %xmm1,%xmm12
  unpcklpd %xmm0,%xmm9
  movaps %xmm6,0x420(%rsp)
  movaps %xmm9,0x2a0(%rsp)
  movsd  -0x8(%rax,%r11,1),%xmm9
  mov    0x138(%rsp),%rax
  movaps %xmm6,0x440(%rsp)
  addsd  %xmm8,%xmm12
  unpcklpd %xmm9,%xmm2
  addsd  %xmm9,%xmm4
  movaps %xmm6,0x460(%rsp)
  movaps %xmm2,0x280(%rsp)
  movapd %xmm1,%xmm2
  addsd  %xmm10,%xmm1
  addsd  %xmm13,%xmm2
  addsd  %xmm0,%xmm13
  movaps %xmm6,0x480(%rsp)
  addsd  %xmm0,%xmm12
  addsd  %xmm9,%xmm0
  movaps %xmm6,0x4a0(%rsp)
  addsd  %xmm7,%xmm1
  addsd  %xmm7,%xmm4
  movaps %xmm6,0x4c0(%rsp)
  addsd  %xmm10,%xmm2
  addsd  %xmm9,%xmm13
  addsd  %xmm8,%xmm0
  mulsd  %xmm5,%xmm12
  addsd  %xmm8,%xmm1
  mulsd  %xmm5,%xmm4
  mulsd  %xmm5,%xmm2
  addsd  %xmm7,%xmm0
  mulsd  %xmm5,%xmm13
  mulsd  %xmm5,%xmm1
  movsd  %xmm12,0x328(%rsp)
  movsd  0x8(%rax,%r11,1),%xmm12
  movsd  %xmm4,0x368(%rsp)
  mulsd  %xmm5,%xmm0
  movsd  (%rax,%r11,1),%xmm4
  mov    0x140(%rsp),%rax
  movsd  %xmm2,0x308(%rsp)
  movsd  %xmm4,0x210(%rsp)
  movsd  -0x8(%rax,%r11,1),%xmm10
  movsd  %xmm1,0x388(%rsp)
  movsd  (%rax,%r11,1),%xmm1
  movsd  %xmm13,0x348(%rsp)
  movapd %xmm4,%xmm13
  addsd  %xmm10,%xmm4
  addsd  %xmm0,%xmm2
  addsd  %xmm12,%xmm13
  movsd  %xmm0,0x3a8(%rsp)
  movsd  %xmm12,0x230(%rsp)
  addsd  %xmm1,%xmm12
  movsd  %xmm1,0x270(%rsp)
  movsd  %xmm10,0x250(%rsp)
  mulsd  %xmm11,%xmm2
  movsd  %xmm2,0x3c8(%rsp)
  movapd %xmm1,%xmm2
  mov    0x148(%rsp),%rax
  addsd  %xmm10,%xmm1
  addsd  %xmm13,%xmm2
  movq   $0x0,0x3f0(%rsp)
  movsd  (%rax,%r11,1),%xmm8
  movsd  -0x8(%rax,%r11,1),%xmm7
  movq   $0x0,0x410(%rsp)
  mov    0x150(%rsp),%rax
  movq   $0x0,0x430(%rsp)
  addsd  %xmm8,%xmm12
  addsd  %xmm10,%xmm2
  movsd  %xmm7,0x2d0(%rsp)
  movsd  (%rax,%r11,1),%xmm0
  addsd  %xmm7,%xmm1
  movsd  -0x8(%rax,%r11,1),%xmm9
  movq   $0x0,0x450(%rsp)
  movq   $0x0,0x470(%rsp)
  addsd  %xmm0,%xmm12
  addsd  %xmm0,%xmm13
  mulsd  %xmm5,%xmm2
  movsd  %xmm0,0x2b0(%rsp)
  addsd  %xmm9,%xmm0
  addsd  %xmm9,%xmm4
  movq   $0x0,0x490(%rsp)
  movsd  %xmm8,0x2f0(%rsp)
  addsd  %xmm8,%xmm1
  addsd  %xmm9,%xmm13
  mulsd  %xmm5,%xmm12
  movq   $0x0,0x4b0(%rsp)
  addsd  %xmm8,%xmm0
  addsd  %xmm7,%xmm4
  movq   $0x0,0x4d0(%rsp)
  movsd  %xmm2,0x310(%rsp)
  mulsd  %xmm5,%xmm1
  movsd  %xmm9,0x290(%rsp)
  mulsd  %xmm5,%xmm13
  addsd  %xmm7,%xmm0
  mulsd  %xmm5,%xmm4
  pxor   %xmm7,%xmm7
  movsd  %xmm12,0x330(%rsp)
  comisd %xmm7,%xmm3
  movsd  %xmm1,0x390(%rsp)
  mulsd  %xmm5,%xmm0
  movsd  %xmm13,0x350(%rsp)
  movsd  %xmm4,0x370(%rsp)
  movsd  %xmm0,0x3b0(%rsp)
  addsd  %xmm0,%xmm2
  mulsd  %xmm11,%xmm2
  movsd  %xmm2,0x3d0(%rsp)
  ja     L25
  movapd %xmm7,%xmm2
  movsd  0x30(%rsp),%xmm7
  comisd %xmm2,%xmm7
  ja     L25
  pxor   %xmm4,%xmm4
  movapd %xmm4,%xmm2
  movapd %xmm4,%xmm7
  movaps %xmm4,(%rsp)
  movapd %xmm4,%xmm1
  movapd %xmm4,%xmm10
  movapd %xmm4,%xmm9
  movapd %xmm4,%xmm14
  movapd %xmm4,%xmm8
  movapd %xmm4,%xmm13
  movapd %xmm4,%xmm15
  movapd %xmm4,%xmm12
  jmp    L80
  nopw   0x0(%rax,%rax,1)
L19:
  mov    0x190(%rsp),%rax
  addl   $0x1,0x188(%rsp)
  add    %rax,0xb8(%rsp)
  mov    0x188(%rsp),%edi
  add    %rax,0xc0(%rsp)
  add    %rax,0xc8(%rsp)
  add    %rax,0xd0(%rsp)
  add    %rax,0xd8(%rsp)
  add    %rax,0xe0(%rsp)
  add    %rax,0xe8(%rsp)
  add    %rax,0xf0(%rsp)
  add    %rax,0xf8(%rsp)
  add    %rax,0x100(%rsp)
  add    %rax,0x108(%rsp)
  add    %rax,0x110(%rsp)
  add    %rax,0x118(%rsp)
  add    %rax,0x120(%rsp)
  add    %rax,0x128(%rsp)
  add    %rax,0x130(%rsp)
  add    %rax,0x138(%rsp)
  add    %rax,0x140(%rsp)
  add    %rax,0x148(%rsp)
  add    %rax,0x150(%rsp)
  add    %rax,0x160(%rsp)
  cmp    %edi,0x18c(%rsp)
  jne    L48
  addl   $0x1,0x1b0(%rsp)
  mov    %r10,%r11
  mov    0x1b0(%rsp),%eax
  addq   $0x8,0x198(%rsp)
  addq   $0x8,0x170(%rsp)
  addq   $0x8,0x168(%rsp)
  addq   $0x8,0x1a0(%rsp)
  addq   $0x8,0x1a8(%rsp)
  cmp    %eax,0x1b4(%rsp)
  jne    L81
L14:
  mov    0x4d8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L62
  add    $0x4e8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L62:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D49
type_infered: f64
name: retrieve_data
arguments: tag: D210
type_infered: f64
name: retrieve_data
arguments: tag: D61
type_infered: f32[2]
name: retrieve_data
arguments: tag: D53
type_infered: f64

tool: D49: 0.25

tool: D210: 0.5

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

tool: D53: 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;
        }
      }
    }
  }
}
```