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

```asm
<nextgeneration>:
  endbr64
  movupd (%rdi),%xmm3
  movsd  (%rsi),%xmm5
  pxor   %xmm14,%xmm14
  movupd 0x20(%rdi),%xmm6
  movsd  0x8(%rsi),%xmm2
  movhpd 0x10(%rdi),%xmm3
  movapd %xmm5,%xmm15
  movupd 0x10(%rdi),%xmm0
  movlpd 0x8(%rdi),%xmm0
  movhpd 0x30(%rdi),%xmm6
  movapd %xmm3,%xmm1
  unpcklpd %xmm15,%xmm15
  movupd 0x30(%rdi),%xmm4
  unpcklpd %xmm6,%xmm1
  movlpd 0x28(%rdi),%xmm4
  movapd %xmm2,%xmm13
  movapd %xmm0,%xmm7
  mulpd  %xmm15,%xmm1
  movsd  0x10(%rsi),%xmm9
  unpcklpd %xmm13,%xmm13
  movsd  0x18(%rsi),%xmm8
  unpcklpd %xmm4,%xmm7
  unpckhpd %xmm6,%xmm3
  unpckhpd %xmm4,%xmm0
  movupd 0x40(%rdi),%xmm4
  mulpd  %xmm13,%xmm7
  movapd %xmm9,%xmm11
  movapd %xmm8,%xmm10
  movupd 0x60(%rdi),%xmm12
  unpcklpd %xmm11,%xmm11
  unpcklpd %xmm10,%xmm10
  pxor   %xmm6,%xmm6
  mulpd  %xmm11,%xmm3
  movhpd 0x50(%rdi),%xmm4
  movhpd 0x70(%rdi),%xmm12
  addpd  %xmm14,%xmm1
  mulpd  %xmm10,%xmm0
  mulsd  %xmm5,%xmm8
  mulsd  %xmm9,%xmm2
  addpd  %xmm7,%xmm1
  movupd 0x70(%rdi),%xmm7
  movlpd 0x68(%rdi),%xmm7
  addpd  %xmm3,%xmm1
  movupd 0x50(%rdi),%xmm3
  movlpd 0x48(%rdi),%xmm3
  subsd  %xmm8,%xmm2
  addpd  %xmm0,%xmm1
  movupd (%rsi),%xmm0
  mulpd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm5
  unpckhpd %xmm1,%xmm1
  addsd  %xmm0,%xmm6
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm6
  movapd %xmm4,%xmm0
  unpckhpd %xmm12,%xmm4
  mulpd  %xmm11,%xmm4
  unpcklpd %xmm12,%xmm0
  mulpd  %xmm15,%xmm0
  addpd  %xmm14,%xmm0
  movapd %xmm3,%xmm14
  unpckhpd %xmm7,%xmm3
  mulpd  %xmm10,%xmm3
  unpcklpd %xmm7,%xmm14
  mulpd  %xmm14,%xmm13
  addpd  %xmm13,%xmm0
  addpd  %xmm4,%xmm0
  addpd  %xmm3,%xmm0
  movupd 0x10(%rsi),%xmm3
  mulpd  %xmm0,%xmm3
  movapd %xmm3,%xmm4
  unpckhpd %xmm3,%xmm3
  addsd  %xmm6,%xmm4
  movsd  0x18(%rdi),%xmm6
  addsd  %xmm4,%xmm3
  movsd  D12(%rip),%xmm4
  mulsd  %xmm4,%xmm6
  mulsd  %xmm6,%xmm2
  addsd  %xmm5,%xmm2
  divsd  %xmm3,%xmm2
  movsd  %xmm2,(%rdx)
  movsd  0x8(%rsi),%xmm6
  movsd  0x10(%rsi),%xmm2
  movsd  0x18(%rsi),%xmm5
  mulsd  (%rsi),%xmm5
  mulsd  %xmm6,%xmm2
  movsd  0x18(%rdi),%xmm7
  mulsd  %xmm6,%xmm1
  subsd  %xmm5,%xmm2
  movsd  D14(%rip),%xmm5
  mulsd  %xmm5,%xmm7
  mulsd  %xmm7,%xmm2
  addsd  %xmm1,%xmm2
  divsd  %xmm3,%xmm2
  movsd  %xmm2,0x8(%rdx)
  movsd  0x10(%rsi),%xmm6
  movsd  0x8(%rsi),%xmm1
  movsd  0x18(%rsi),%xmm2
  mulsd  (%rsi),%xmm2
  mulsd  %xmm6,%xmm1
  mulsd  0x18(%rdi),%xmm5
  subsd  %xmm2,%xmm1
  movapd %xmm0,%xmm2
  unpckhpd %xmm0,%xmm0
  mulsd  %xmm6,%xmm2
  mulsd  %xmm5,%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm3,%xmm1
  movsd  %xmm1,0x10(%rdx)
  movsd  0x18(%rsi),%xmm2
  movsd  (%rsi),%xmm5
  movsd  0x8(%rsi),%xmm1
  mulsd  0x10(%rsi),%xmm1
  mulsd  %xmm2,%xmm5
  mulsd  0x18(%rdi),%xmm4
  mulsd  %xmm2,%xmm0
  subsd  %xmm5,%xmm1
  mulsd  %xmm4,%xmm1
  addsd  %xmm0,%xmm1
  divsd  %xmm3,%xmm1
  movsd  %xmm1,0x18(%rdx)
  ret
```

tool_calls: name: disassemble_data
arguments: label: D12
datatype: f64
name: disassemble_data
arguments: label: D14
datatype: f32[2]

tool: D12: 0.5

tool: {"D14": [0.0,-1.75]}

assistant: ```c
void nextgeneration(double modg[4][4], double *Cf, double *Cn) {
  int i, j;
  double meanW = 0, Wmarg[4], nu[4] = {1, -1, -1, 1};
  for (i = 0; i < 4; i++) {
    Wmarg[i] = 0;
    for (j = 0; j < 4; j++) {
      Wmarg[i] += modg[i][j] * Cf[j];
    }
    meanW += Wmarg[i] * Cf[i];
  }
  for (i = 0; i < 4; i++) {
    Cn[i] = (Cf[i] * Wmarg[i] + nu[i] * 0.5 * modg[0][3] * (Cf[1] * Cf[2] - Cf[0] * Cf[3])) / meanW;
  }
}
```