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

```asm
<d2S3Ddiag>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdx,%rbx
  sub    $0x408,%rsp
  movsd  (%r9),%xmm0
  movsd  0x8(%r8),%xmm3
  mov    %rcx,0x28(%rsp)
  mov    0x440(%rsp),%rcx
  mov    %rdi,0x110(%rsp)
  mulsd  0x8(%r9),%xmm0
  cvttsd2si (%rcx),%edi
  mov    %rsi,0xf0(%rsp)
  cvttsd2si 0x8(%rcx),%r11d
  mulsd  0x10(%r9),%xmm0
  cvttsd2si 0x10(%rcx),%r10d
  movsd  0x10(%r8),%xmm4
  mov    %fs:0x28,%rsi
  mov    %rsi,0x3f8(%rsp)
  xor    %esi,%esi
  lea    0x1(%rdi),%esi
  mov    %edi,0x11c(%rsp)
  lea    0x1(%r11),%ecx
  mov    %r11d,0x108(%rsp)
  imul   %esi,%ecx
  lea    0x1(%r10),%eax
  mulsd  %xmm0,%xmm3
  mov    %r10d,0xe4(%rsp)
  mulsd  %xmm0,%xmm4
  mov    %esi,0x10c(%rsp)
  imul   %ecx,%eax
  test   %edi,%edi
  jle    L63
  movslq %esi,%rdx
  cltq
  movl   $0x0,0x118(%rsp)
  movsd  D169(%rip),%xmm5
  shl    $0x3,%rdx
  shl    $0x3,%rax
  lea    0x8(%rdx),%rdi
  mov    %rax,0xb8(%rsp)
  mov    %rdi,0xe8(%rsp)
  movslq %ecx,%rdi
  lea    0x0(,%rdi,8),%r10
  mov    %rdi,0xf8(%rsp)
  mov    %r10,%r11
  sub    %rdx,%r11
L40:
  mov    0x108(%rsp),%eax
  test   %eax,%eax
  jle    L8
  mov    0x118(%rsp),%eax
  movsd  D22(%rip),%xmm6
  movl   $0x0,0x100(%rsp)
  mov    %eax,0x104(%rsp)
  nopl   0x0(%rax)
L28:
  mov    0xe4(%rsp),%edx
  test   %edx,%edx
  jle    L53
  movslq 0x104(%rsp),%rax
  mov    0x110(%rsp),%rsi
  movl   $0x0,0xe0(%rsp)
  lea    0x2e0(%rsp),%r14
  lea    0x3e0(%rsp),%r13
  lea    0x3c0(%rsp),%r12
  mov    %rax,0xa8(%rsp)
  shl    $0x3,%rax
  lea    0x3a0(%rsp),%rbp
  lea    0x380(%rsp),%r15
  lea    (%rsi,%rax,1),%rdi
  add    0xe8(%rsp),%rax
  add    0xf0(%rsp),%rax
  mov    %rax,0xa0(%rsp)
  lea    0x120(%rsp),%rax
  mov    %rax,0x60(%rsp)
  lea    0x140(%rsp),%rax
  mov    %rax,0x68(%rsp)
  lea    0x180(%rsp),%rax
  mov    %rax,0x38(%rsp)
  lea    0x160(%rsp),%rax
  mov    %rax,0x30(%rsp)
  lea    0x1e0(%rsp),%rax
  mov    %rax,0x50(%rsp)
  lea    0x200(%rsp),%rax
  mov    %rax,0x58(%rsp)
  lea    0x1c0(%rsp),%rax
  mov    %rax,0x48(%rsp)
  lea    0x1a0(%rsp),%rax
  mov    %rax,0x40(%rsp)
  lea    0x220(%rsp),%rax
  mov    %rax,0x88(%rsp)
  lea    0x240(%rsp),%rax
  mov    %rax,0x90(%rsp)
  lea    0x260(%rsp),%rax
  mov    %rax,0x98(%rsp)
  lea    0x280(%rsp),%rax
  mov    %rax,0x70(%rsp)
  lea    0x2a0(%rsp),%rax
  mov    %rax,0x78(%rsp)
  lea    0x2c0(%rsp),%rax
  mov    %rax,0x80(%rsp)
  lea    0x360(%rsp),%rax
  mov    %rax,0x20(%rsp)
  lea    0x340(%rsp),%rax
  mov    %rax,0x18(%rsp)
  lea    0x320(%rsp),%rax
  mov    %rax,0x10(%rsp)
  lea    0x300(%rsp),%rax
  mov    %rdi,0xb0(%rsp)
  mov    %rax,0x8(%rsp)
L26:
  mov    0xf0(%rsp),%rax
  mov    0xa8(%rsp),%rsi
  mov    %r10,0xc0(%rsp)
  mov    0xb8(%rsp),%r9
  lea    (%rax,%rsi,8),%rdi
  mov    0xa0(%rsp),%rax
  mov    %rax,%rdx
  add    %r10,%rax
  mov    %r11,%r10
  lea    (%r11,%rdx,1),%rsi
  mov    %rbx,%r11
  mov    %r15,%rbx
  mov    %rax,%rcx
  mov    0x98(%rsp),%r15
  mov    %rax,0xa0(%rsp)
  xor    %eax,%eax
L68:
  movsd  (%rdi),%xmm2
  movsd  0x8(%rdi),%xmm12
  add    %r9,%rdi
  mov    0x60(%rsp),%r8
  movsd  (%rdx),%xmm11
  movapd %xmm12,%xmm13
  movsd  -0x8(%rdx),%xmm1
  movsd  (%rcx),%xmm9
  add    %r9,%rdx
  movsd  %xmm2,(%r8,%rax,1)
  mov    0x68(%rsp),%r8
  addsd  %xmm2,%xmm13
  movsd  -0x8(%rcx),%xmm8
  addsd  %xmm1,%xmm2
  movsd  -0x8(%rsi),%xmm0
  movsd  (%rsi),%xmm10
  add    %r9,%rcx
  movsd  %xmm12,(%r8,%rax,1)
  mov    0x38(%rsp),%r8
  addsd  %xmm11,%xmm12
  add    %r9,%rsi
  movapd %xmm13,%xmm7
  addsd  %xmm10,%xmm13
  movsd  %xmm11,(%r8,%rax,1)
  mov    0x30(%rsp),%r8
  addsd  %xmm11,%xmm7
  addsd  %xmm0,%xmm2
  addsd  %xmm9,%xmm12
  movsd  %xmm1,(%r8,%rax,1)
  mov    0x50(%rsp),%r8
  addsd  %xmm0,%xmm13
  addsd  %xmm1,%xmm7
  addsd  %xmm11,%xmm1
  movsd  %xmm8,(%r8,%rax,1)
  mov    0x58(%rsp),%r8
  addsd  %xmm10,%xmm12
  addsd  %xmm8,%xmm2
  mulsd  %xmm5,%xmm13
  movsd  %xmm9,(%r8,%rax,1)
  mov    0x48(%rsp),%r8
  mulsd  %xmm5,%xmm7
  addsd  %xmm8,%xmm1
  mulsd  %xmm5,%xmm12
  movsd  %xmm10,(%r8,%rax,1)
  mov    0x40(%rsp),%r8
  mulsd  %xmm5,%xmm2
  addsd  %xmm9,%xmm1
  movsd  %xmm0,(%r8,%rax,1)
  mov    0x88(%rsp),%r8
  movsd  %xmm13,(%r15,%rax,1)
  movsd  %xmm7,(%r8,%rax,1)
  mov    0x90(%rsp),%r8
  mulsd  %xmm5,%xmm1
  movsd  %xmm12,(%r8,%rax,1)
  mov    0x70(%rsp),%r8
  movsd  %xmm2,(%r8,%rax,1)
  mov    0x78(%rsp),%r8
  movsd  %xmm1,(%r8,%rax,1)
  movapd %xmm0,%xmm1
  mov    0x80(%rsp),%r8
  addsd  %xmm10,%xmm1
  addsd  %xmm9,%xmm1
  addsd  %xmm8,%xmm1
  movapd %xmm1,%xmm0
  mulsd  %xmm5,%xmm0
  movsd  %xmm0,(%r8,%rax,1)
  addsd  %xmm7,%xmm0
  mulsd  %xmm6,%xmm0
  movsd  %xmm0,(%r14,%rax,1)
  add    $0x8,%rax
  cmp    $0x18,%rax
  jne    L68
  mov    0x20(%rsp),%rax
  pxor   %xmm0,%xmm0
  pxor   %xmm7,%xmm7
  mov    %rbx,%r15
  comisd %xmm7,%xmm3
  mov    %r11,%rbx
  movq   $0x0,0x10(%r13)
  mov    %r10,%r11
  movq   $0x0,0x10(%rax)
  mov    0xc0(%rsp),%r10
  movaps %xmm0,(%rax)
  mov    0x18(%rsp),%rax
  movq   $0x0,0x10(%r12)
  movq   $0x0,0x10(%rax)
  movaps %xmm0,(%rax)
  mov    0x10(%rsp),%rax
  movq   $0x0,0x10(%rbp)
  movq   $0x0,0x10(%rax)
  movaps %xmm0,(%rax)
  mov    0x8(%rsp),%rax
  movq   $0x0,0x10(%r15)
  movq   $0x0,0x10(%rax)
  movaps %xmm0,0x0(%r13)
  movaps %xmm0,(%r12)
  movaps %xmm0,0x0(%rbp)
  movaps %xmm0,(%r15)
  movaps %xmm0,(%rax)
  ja     L91
  comisd %xmm7,%xmm4
  jbe    L94
L91:
  mov    D184(%rip),%rax
  mov    %r11,0xd8(%rsp)
  mov    %r14,%rcx
  mov    %r10,0xd0(%rsp)
  movsd  (%rbx),%xmm0
  push   %r12
  movq   %rax,%xmm2
  push   %r13
  push   %rbp
  push   %r15
  push   0x38(%rsp)
  push   0x48(%rsp)
  mov    0x58(%rsp),%rax
  mov    0x40(%rsp),%r9
  mov    0x38(%rsp),%r8
  mov    0xb8(%rsp),%rdx
  mov    0x98(%rsp),%rsi
  movsd  %xmm4,0xf8(%rsp)
  mov    0x90(%rsp),%rdi
  movsd  (%rax),%xmm1
  movsd  %xmm3,0xf0(%rsp)
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x8(%rbx),%xmm0
  mov    D184(%rip),%rcx
  push   %r15
  push   %r12
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r13
  push   %rbp
  push   0x28(%rsp)
  push   0x40(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0x50(%rsp),%r9
  movsd  0xf0(%rsp),%xmm3
  mov    0x40(%rsp),%r8
  mov    0xb8(%rsp),%rdx
  mov    0x68(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  movsd  0x8(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x10(%rbx),%xmm0
  mov    D184(%rip),%rcx
  push   %rbp
  push   %r15
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r12
  push   %r13
  push   0x30(%rsp)
  push   0x30(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0x48(%rsp),%r9
  movsd  0xf0(%rsp),%xmm3
  mov    0x50(%rsp),%r8
  mov    0xb8(%rsp),%rdx
  mov    0x60(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  movsd  0x10(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x18(%rbx),%xmm0
  mov    D184(%rip),%rcx
  push   %r13
  push   %rbp
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r15
  push   %r12
  push   0x40(%rsp)
  push   0x38(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0x38(%rsp),%r9
  movsd  0xf0(%rsp),%xmm3
  mov    0x48(%rsp),%r8
  mov    0xb8(%rsp),%rdx
  mov    0x90(%rsp),%rsi
  mov    0x60(%rsp),%rdi
  movsd  0x18(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x20(%rbx),%xmm0
  mov    D212(%rip),%rcx
  push   %r15
  push   %r12
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x28(%rsp)
  push   0x20(%rsp)
  push   %rbp
  push   %r13
  mov    0x58(%rsp),%rax
  mov    0x50(%rsp),%r9
  mov    0x40(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xc0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x68(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  movsd  0x20(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x28(%rbx),%xmm0
  mov    %r13,%r9
  push   0x8(%rsp)
  mov    D212(%rip),%rcx
  push   %r15
  push   %r12
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x30(%rsp)
  push   0x30(%rsp)
  push   %rbp
  mov    0x58(%rsp),%rax
  mov    0x50(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xc0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x88(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  movsd  0x28(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %rbp,%r9
  mov    %r13,%r8
  movsd  0x30(%rbx),%xmm0
  mov    D212(%rip),%rcx
  push   0x18(%rsp)
  push   0x10(%rsp)
  push   %r15
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r12
  push   0x40(%rsp)
  push   0x38(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xc0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x78(%rsp),%rsi
  mov    0x88(%rsp),%rdi
  movsd  0x30(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x38(%rbx),%xmm0
  mov    %rbp,%r8
  push   %r12
  mov    D212(%rip),%rcx
  push   0x20(%rsp)
  push   0x18(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r15
  push   %r13
  push   0x48(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  movsd  0xf0(%rsp),%xmm3
  mov    0x40(%rsp),%r9
  mov    0xc0(%rsp),%rdx
  mov    0x98(%rsp),%rsi
  mov    0x78(%rsp),%rdi
  movsd  0x38(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x40(%rbx),%xmm0
  mov    D212(%rip),%rcx
  push   %r12
  push   %r13
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x30(%rsp)
  push   0x30(%rsp)
  push   %r15
  push   %rbp
  mov    0x58(%rsp),%rax
  mov    0x40(%rsp),%r9
  mov    0x38(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xc8(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x98(%rsp),%rsi
  mov    0x90(%rsp),%rdi
  movsd  0x40(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x48(%rbx),%xmm0
  mov    %rbp,%r9
  push   0x18(%rsp)
  mov    D212(%rip),%rcx
  push   %r12
  push   %r13
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x38(%rsp)
  push   0x28(%rsp)
  push   %r15
  mov    0x58(%rsp),%rax
  mov    0x40(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xc8(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x78(%rsp),%rsi
  mov    0x98(%rsp),%rdi
  movsd  0x48(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r15,%r9
  mov    %rbp,%r8
  movsd  0x50(%rbx),%xmm0
  mov    D212(%rip),%rcx
  push   0x20(%rsp)
  push   0x20(%rsp)
  push   %r12
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r13
  push   0x30(%rsp)
  push   0x30(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xc8(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x70(%rsp),%rsi
  mov    0x78(%rsp),%rdi
  movsd  0x50(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x58(%rbx),%xmm0
  mov    %r15,%r8
  push   %r13
  mov    D212(%rip),%rcx
  push   0x28(%rsp)
  push   0x28(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r12
  push   %rbp
  push   0x38(%rsp)
  mov    0x58(%rsp),%rax
  mov    0xc8(%rsp),%rdx
  movsd  0xf8(%rsp),%xmm4
  mov    0x38(%rsp),%r9
  movsd  0xf0(%rsp),%xmm3
  mov    0x90(%rsp),%rsi
  mov    0x70(%rsp),%rdi
  movsd  0x58(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x60(%rbx),%xmm0
  mov    %r14,%rcx
  push   %r13
  mov    D212(%rip),%rdx
  push   %rbp
  push   0x20(%rsp)
  movq   %rdx,%xmm2
  push   0x38(%rsp)
  push   %r12
  push   %r15
  mov    0x58(%rsp),%rax
  mov    0x38(%rsp),%r9
  mov    0x48(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xa0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x90(%rsp),%rsi
  mov    0x60(%rsp),%rdi
  movsd  0x60(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x68(%rbx),%xmm0
  mov    %r15,%r9
  push   0x20(%rsp)
  mov    D212(%rip),%rcx
  push   %r13
  push   %rbp
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x28(%rsp)
  push   0x38(%rsp)
  push   %r12
  mov    0x58(%rsp),%rax
  mov    0x38(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xa0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x70(%rsp),%rsi
  mov    0x90(%rsp),%rdi
  movsd  0x68(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r12,%r9
  mov    %r15,%r8
  movsd  0x70(%rbx),%xmm0
  mov    D212(%rip),%rcx
  push   0x10(%rsp)
  push   0x28(%rsp)
  push   %r13
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %rbp
  push   0x28(%rsp)
  push   0x40(%rsp)
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xa0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x80(%rsp),%rsi
  mov    0x70(%rsp),%rdi
  movsd  0x70(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x78(%rbx),%xmm0
  mov    %r12,%r8
  push   %rbp
  mov    D212(%rip),%rcx
  push   0x18(%rsp)
  push   0x30(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r13
  push   %r15
  push   0x30(%rsp)
  mov    0x58(%rsp),%rax
  mov    0xa0(%rsp),%rdx
  movsd  0xf8(%rsp),%xmm4
  mov    0x48(%rsp),%r9
  movsd  0xf0(%rsp),%xmm3
  mov    0x60(%rsp),%rsi
  mov    0x80(%rsp),%rdi
  movsd  0x78(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x80(%rbx),%xmm0
  mov    %r14,%rcx
  push   %rbp
  mov    D212(%rip),%rdx
  push   %r15
  push   0x18(%rsp)
  movq   %rdx,%xmm2
  push   0x28(%rsp)
  push   %r13
  push   %r12
  mov    0x58(%rsp),%rax
  mov    0x48(%rsp),%r9
  mov    0x50(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xa8(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x60(%rsp),%rsi
  mov    0x68(%rsp),%rdi
  movsd  0x80(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x88(%rbx),%xmm0
  mov    %r12,%r9
  push   0x10(%rsp)
  mov    D212(%rip),%rcx
  push   %rbp
  push   %r15
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x20(%rsp)
  push   0x40(%rsp)
  push   %r13
  mov    0x58(%rsp),%rax
  mov    0x48(%rsp),%r8
  movsd  0xf8(%rsp),%xmm4
  mov    0xa8(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x80(%rsp),%rsi
  mov    0x60(%rsp),%rdi
  movsd  0x88(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r13,%r9
  mov    %r12,%r8
  movsd  0x90(%rbx),%xmm0
  push   0x8(%rsp)
  mov    D212(%rip),%rcx
  push   0x18(%rsp)
  push   %rbp
  push   %r15
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   0x38(%rsp)
  push   0x48(%rsp)
  mov    0x58(%rsp),%rax
  mov    0xa8(%rsp),%rdx
  mov    0x88(%rsp),%rsi
  mov    0x80(%rsp),%rdi
  movsd  0x90(%rax),%xmm1
  movsd  0xf8(%rsp),%xmm4
  movsd  0xf0(%rsp),%xmm3
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  movsd  0x98(%rbx),%xmm0
  mov    %r13,%r8
  push   %r15
  mov    D212(%rip),%rcx
  push   0x10(%rsp)
  push   0x20(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %rbp
  push   %r12
  push   0x40(%rsp)
  mov    0x58(%rsp),%rax
  mov    0x50(%rsp),%r9
  mov    0x68(%rsp),%rsi
  mov    0xa8(%rsp),%rdx
  mov    0x88(%rsp),%rdi
  movsd  0x98(%rax),%xmm1
  movsd  0xf8(%rsp),%xmm4
  movsd  0xf0(%rsp),%xmm3
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %rbp,%r9
  mov    %r15,%r8
  movsd  0xa0(%rbx),%xmm0
  mov    D212(%rip),%rsi
  push   0x18(%rsp)
  mov    %r14,%rcx
  push   0x28(%rsp)
  push   0x20(%rsp)
  movq   %rsi,%xmm2
  push   0x20(%rsp)
  push   %r12
  push   %r13
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xb0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x78(%rsp),%rsi
  mov    0x70(%rsp),%rdi
  movsd  0xa0(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r13,%r9
  mov    %rbp,%r8
  movsd  0xa8(%rbx),%xmm0
  push   0x8(%rsp)
  mov    D212(%rip),%rcx
  push   0x20(%rsp)
  push   0x30(%rsp)
  push   0x28(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r15
  push   %r12
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xb0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x88(%rsp),%rsi
  mov    0x78(%rsp),%rdi
  movsd  0xa8(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r12,%r9
  mov    %r13,%r8
  movsd  0xb0(%rbx),%xmm0
  push   0x10(%rsp)
  mov    D212(%rip),%rcx
  push   0x10(%rsp)
  push   0x28(%rsp)
  push   0x38(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %rbp
  push   %r15
  mov    0x58(%rsp),%rax
  mov    0xb0(%rsp),%rdx
  mov    0x80(%rsp),%rsi
  mov    0x88(%rsp),%rdi
  movsd  0xb0(%rax),%xmm1
  movsd  0xf8(%rsp),%xmm4
  movsd  0xf0(%rsp),%xmm3
  call   <d2SdiagTetra@plt>
  add    $0x30,%rsp
  mov    %r15,%r9
  mov    %r12,%r8
  movsd  0xb8(%rbx),%xmm0
  push   0x20(%rsp)
  mov    D212(%rip),%rcx
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   0x30(%rsp)
  movq   %rcx,%xmm2
  mov    %r14,%rcx
  push   %r13
  push   %rbp
  mov    0x58(%rsp),%rax
  movsd  0xf8(%rsp),%xmm4
  mov    0xb0(%rsp),%rdx
  movsd  0xf0(%rsp),%xmm3
  mov    0x70(%rsp),%rsi
  mov    0x80(%rsp),%rdi
  movsd  0xb8(%rax),%xmm1
  call   <d2SdiagTetra@plt>
  mov    D169(%rip),%rax
  add    $0x30,%rsp
  mov    0xd8(%rsp),%r11
  mov    0xd0(%rsp),%r10
  movsd  0xc8(%rsp),%xmm4
  movsd  0xc0(%rsp),%xmm3
  movq   %rax,%xmm5
  mov    D22(%rip),%rax
  movq   %rax,%xmm6
L94:
  mov    0xe8(%rsp),%rax
  mov    0x10(%rsp),%rdi
  xor    %edx,%edx
  mov    %rbx,0xc0(%rsp)
  mov    0xb0(%rsp),%rcx
  mov    0xb8(%rsp),%rsi
  mov    0x18(%rsp),%r8
  mov    0x20(%rsp),%r9
  add    %rcx,%rax
L49:
  mov    0x8(%rsp),%rbx
  movsd  (%rcx),%xmm0
  addsd  (%rbx,%rdx,1),%xmm0
  movsd  %xmm0,(%rcx)
  movsd  0x8(%rcx),%xmm0
  addsd  (%rdi,%rdx,1),%xmm0
  movsd  %xmm0,0x8(%rcx)
  movsd  (%rax),%xmm0
  addsd  (%r9,%rdx,1),%xmm0
  add    %rsi,%rcx
  movsd  %xmm0,(%rax)
  movsd  -0x8(%rax),%xmm0
  addsd  (%r8,%rdx,1),%xmm0
  movsd  %xmm0,-0x8(%rax)
  movsd  -0x8(%rax,%r10,1),%xmm0
  addsd  (%r12,%rdx,1),%xmm0
  movsd  %xmm0,-0x8(%rax,%r10,1)
  movsd  (%rax,%r10,1),%xmm0
  addsd  0x0(%r13,%rdx,1),%xmm0
  movsd  %xmm0,(%rax,%r10,1)
  movsd  (%rax,%r11,1),%xmm0
  addsd  0x0(%rbp,%rdx,1),%xmm0
  movsd  %xmm0,(%rax,%r11,1)
  movsd  -0x8(%rax,%r11,1),%xmm0
  addsd  (%r15,%rdx,1),%xmm0
  add    $0x8,%rdx
  movsd  %xmm0,-0x8(%rax,%r11,1)
  add    %rsi,%rax
  cmp    $0x18,%rdx
  jne    L49
  addl   $0x1,0xe0(%rsp)
  mov    0xf8(%rsp),%rsi
  add    %r10,0xb0(%rsp)
  mov    0xc0(%rsp),%rbx
  add    %rsi,0xa8(%rsp)
  mov    0xe0(%rsp),%eax
  cmp    %eax,0xe4(%rsp)
  jne    L26
L53:
  addl   $0x1,0x100(%rsp)
  mov    0x10c(%rsp),%esi
  mov    0x100(%rsp),%eax
  add    %esi,0x104(%rsp)
  cmp    %eax,0x108(%rsp)
  jne    L28
L8:
  addl   $0x1,0x118(%rsp)
  mov    0x118(%rsp),%eax
  cmp    %eax,0x11c(%rsp)
  jne    L40
L63:
  mov    0x3f8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L100
  add    $0x408,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L100:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D169
type_guessed: f64
name: unpack_data
arguments: tag: D22
type_guessed: f64
name: unpack_data
arguments: tag: D184
type_guessed: f32[2]
name: unpack_data
arguments: tag: D212
type_guessed: f64

tool: D169: 0.25

tool: D22: 0.5

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

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