user: What is the c source code of the assembly code below:

```asm
<dVTTetra3D>:
  endbr64
  push   %r14
  mov    %rdi,%r10
  push   %r13
  push   %r12
  mov    %r8,%r12
  mov    %rcx,%r8
  mov    %rdx,%rcx
  push   %rbp
  mov    %rsi,%rdx
  mov    %r10,%rsi
  push   %rbx
  mov    %r9,%rbx
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rdi
  mov    0x80(%rsp),%rbp
  mov    0x88(%rsp),%r13
  call   <cofactor3D@plt>
  lea    0xf(%rbx),%rcx
  lea    0xf(%r12),%rdx
  mov    %rcx,%rax
  sub    %rbp,%rax
  cmp    $0x1e,%rax
  seta   %al
  sub    %r13,%rcx
  cmp    $0x1e,%rcx
  seta   %cl
  and    %ecx,%eax
  lea    0xf(%rbp),%rcx
  sub    %r13,%rcx
  cmp    $0x1e,%rcx
  seta   %cl
  and    %ecx,%eax
  mov    %rdx,%rcx
  sub    %rbx,%rcx
  cmp    $0x1e,%rcx
  seta   %cl
  and    %ecx,%eax
  mov    %rdx,%rcx
  sub    %rbp,%rcx
  cmp    $0x1e,%rcx
  seta   %cl
  test   %cl,%al
  je     L2
  sub    %r13,%rdx
  cmp    $0x1e,%rdx
  jbe    L2
  movapd (%rsp),%xmm1
  movapd 0x10(%rsp),%xmm0
  movapd %xmm1,%xmm2
  unpcklpd %xmm1,%xmm0
  movapd %xmm1,%xmm3
  movhps 0x18(%rsp),%xmm3
  shufpd $0x1,%xmm1,%xmm2
  movapd %xmm0,%xmm1
  movupd 0x0(%r13),%xmm0
  movhpd 0x20(%rsp),%xmm2
  movhps 0x28(%rsp),%xmm1
  subpd  %xmm3,%xmm0
  subpd  %xmm2,%xmm0
  subpd  %xmm1,%xmm0
  movups %xmm0,0x0(%r13)
  movupd (%r12),%xmm0
  addpd  %xmm3,%xmm0
  movups %xmm0,(%r12)
  movupd (%rbx),%xmm0
  addpd  %xmm2,%xmm0
  movups %xmm0,(%rbx)
  movupd 0x0(%rbp),%xmm0
  addpd  %xmm1,%xmm0
  movups %xmm0,0x0(%rbp)
L25:
  movsd  0x10(%r13),%xmm0
  movsd  0x30(%rsp),%xmm3
  movsd  0x38(%rsp),%xmm2
  movsd  0x40(%rsp),%xmm1
  subsd  %xmm3,%xmm0
  subsd  %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%r13)
  addsd  0x10(%r12),%xmm3
  movsd  %xmm3,0x10(%r12)
  addsd  0x10(%rbx),%xmm2
  movsd  %xmm2,0x10(%rbx)
  addsd  0x10(%rbp),%xmm1
  movsd  %xmm1,0x10(%rbp)
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L10
  add    $0x50,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax,%rax,1)
L2:
  movsd  0x0(%r13),%xmm0
  movsd  (%rsp),%xmm3
  movsd  0x8(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm1
  subsd  %xmm3,%xmm0
  subsd  %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x0(%r13)
  addsd  (%r12),%xmm3
  movsd  %xmm3,(%r12)
  addsd  (%rbx),%xmm2
  movsd  0x18(%rsp),%xmm3
  movsd  %xmm2,(%rbx)
  addsd  0x0(%rbp),%xmm1
  movsd  0x20(%rsp),%xmm2
  movsd  %xmm1,0x0(%rbp)
  movsd  0x8(%r13),%xmm0
  movsd  0x28(%rsp),%xmm1
  subsd  %xmm3,%xmm0
  subsd  %xmm2,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%r13)
  addsd  0x8(%r12),%xmm3
  movsd  %xmm3,0x8(%r12)
  addsd  0x8(%rbx),%xmm2
  movsd  %xmm2,0x8(%rbx)
  addsd  0x8(%rbp),%xmm1
  movsd  %xmm1,0x8(%rbp)
  jmp    L25
L10:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void dVTTetra3D(const double *yA, const double *yB, const double *yC, const double *yM, const double x, double *rA, double *rB, double *rC, double *rM) {
  int i, j, k;
  double cof[9];
  cofactor3D(cof, yA, yB, yC, yM, x);
  k = 0;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      rM[i] -= cof[j + k];
    }
    rA[i] += cof[0 + k];
    rB[i] += cof[1 + k];
    rC[i] += cof[2 + k];
    k += 3;
  }
}
```