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

```asm
<R_faceBlendTetDrv>:
  endbr64
  mov    0x4(%rdi),%ecx
  pxor   %xmm0,%xmm0
  add    (%rdi),%ecx
  mov    %rsi,%rax
  add    0x8(%rdi),%ecx
  movq   $0x0,0x10(%rdx)
  movups %xmm0,(%rdx)
  cmp    $0x3,%ecx
  je     L17
  cmp    $0x5,%ecx
  je     L8
  cmp    $0x4,%ecx
  je     L3
  xor    %r8d,%r8d
  cmp    $0x6,%ecx
  jne    L14
  movsd  0x8(%rsi),%xmm0
  xorpd  D21(%rip),%xmm0
  mulsd  0x10(%rsi),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  0x8(%rsi),%xmm2
  movsd  0x10(%rsi),%xmm3
  movsd  D11(%rip),%xmm0
  addsd  %xmm2,%xmm2
  movapd %xmm0,%xmm1
  subsd  (%rsi),%xmm1
  subsd  %xmm2,%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,0x8(%rdx)
  subsd  (%rsi),%xmm0
  movsd  0x8(%rsi),%xmm2
  subsd  %xmm2,%xmm0
  jmp    L12
  nopl   (%rax)
L8:
  movsd  (%rsi),%xmm0
  movsd  0x10(%rsi),%xmm3
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D11(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  subsd  0x8(%rsi),%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,(%rdx)
  movsd  (%rsi),%xmm1
  xorpd  D21(%rip),%xmm1
  mulsd  0x10(%rsi),%xmm1
  movsd  %xmm1,0x8(%rdx)
  movsd  (%rsi),%xmm2
  subsd  %xmm2,%xmm0
  subsd  0x8(%rsi),%xmm0
L12:
  movsd  0x10(%rax),%xmm1
  mov    $0x1,%r8d
  addsd  %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x10(%rdx)
L14:
  mov    %r8d,%eax
  ret
  nopl   (%rax)
L17:
  movsd  0x8(%rsi),%xmm0
  mulsd  0x10(%rsi),%xmm0
  mov    $0x1,%r8d
  mov    %r8d,%eax
  movsd  %xmm0,(%rdx)
  movsd  (%rsi),%xmm0
  mulsd  0x10(%rsi),%xmm0
  movsd  %xmm0,0x8(%rdx)
  movsd  0x8(%rsi),%xmm0
  mulsd  (%rsi),%xmm0
  movsd  %xmm0,0x10(%rdx)
  ret
  nopl   0x0(%rax)
L3:
  movsd  (%rsi),%xmm0
  movsd  0x8(%rsi),%xmm3
  mov    $0x1,%r8d
  mov    %r8d,%eax
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  movsd  D11(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  subsd  %xmm3,%xmm1
  subsd  0x10(%rsi),%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,(%rdx)
  movsd  (%rsi),%xmm2
  movsd  0x8(%rsi),%xmm1
  subsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  subsd  0x10(%rsi),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x8(%rdx)
  movsd  (%rsi),%xmm0
  xorpd  D21(%rip),%xmm0
  mulsd  0x8(%rsi),%xmm0
  movsd  %xmm0,0x10(%rdx)
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D21
type_infered: byte[16]
name: disassemble_data
arguments: data_tag: D11
type_infered: f64

tool: {"D21": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: D11: 1

assistant: ```c
int R_faceBlendTetDrv(int *index, double *L, double drv[]) {
  int isum = index[0] + index[1] + index[2];
  drv[0] = drv[1] = drv[2] = 0;
  if (isum == 3) {
    drv[0] = L[1] * L[2];
    drv[1] = L[0] * L[2];
    drv[2] = L[1] * L[0];
  } else if (isum == 5) {
    drv[0] = L[2] * (1.0 - 2.0 * L[0] - L[1] - L[2]);
    drv[1] = -L[0] * L[2];
    drv[2] = L[0] * (1.0 - L[0] - L[1] - 2.0 * L[2]);
  } else if (isum == 4) {
    drv[0] = L[1] * (1.0 - 2.0 * L[0] - L[1] - L[2]);
    drv[1] = L[0] * (1.0 - L[0] - 2.0 * L[1] - L[2]);
    drv[2] = -L[0] * L[1];
  } else if (isum == 6) {
    drv[0] = -L[1] * L[2];
    drv[1] = L[2] * (1.0 - L[0] - 2.0 * L[1] - L[2]);
    drv[2] = L[1] * (1.0 - L[0] - L[1] - 2.0 * L[2]);
  } else
    return 0;
  return 1;
}
```