user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<ZuN>:
  endbr64
  movsd  D8(%rip),%xmm1
  mov    %rsi,%rax
  imul   $0x2a,%r8d,%r10d
  imul   $0x31,%r8d,%r9d
  movsd  %xmm1,(%rdi)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm2
  mulsd  (%rdx),%xmm0
  movslq %r10d,%rsi
  add    $0x2,%r10d
  mulsd  0x18(%rdx),%xmm2
  add    $0x1,%r9d
  movslq %r10d,%r10
  movslq %r9d,%r9
  addsd  %xmm2,%xmm0
  addsd  0x30(%rdx),%xmm0
  movsd  %xmm0,(%rdi,%rsi,8)
  lea    0x0(,%r8,8),%esi
  sub    %r8d,%esi
  add    $0x1,%esi
  movslq %esi,%rsi
  movsd  %xmm1,(%rdi,%rsi,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm2
  lea    0x0(,%r9,8),%rsi
  mulsd  0x18(%rdx),%xmm2
  mulsd  (%rdx),%xmm0
  addsd  %xmm2,%xmm0
  addsd  0x30(%rdx),%xmm0
  movsd  %xmm0,(%rdi,%r9,8)
  imul   $0xe,%r8d,%r9d
  add    $0x2,%r9d
  movslq %r9d,%r9
  movsd  %xmm1,(%rdi,%r9,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm2
  lea    0x0(,%r10,8),%r9
  mulsd  0x18(%rdx),%xmm2
  movsd  0x28(%rax),%xmm3
  mulsd  (%rdx),%xmm0
  movsd  0x30(%rax),%xmm4
  mulsd  (%rcx),%xmm3
  mulsd  0x18(%rcx),%xmm4
  addsd  %xmm2,%xmm0
  addsd  0x30(%rdx),%xmm0
  movq   D10(%rip),%xmm2
  addsd  %xmm4,%xmm3
  addsd  0x30(%rcx),%xmm3
  xorpd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,(%rdi,%r10,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm3
  lea    (%r8,%r8,4),%r10d
  mulsd  0x18(%rdx),%xmm3
  lea    0x3(%r8,%r10,4),%r10d
  mulsd  (%rdx),%xmm0
  movslq %r10d,%r10
  addsd  %xmm3,%xmm0
  addsd  0x30(%rdx),%xmm0
  movsd  0x28(%rax),%xmm3
  movsd  0x30(%rax),%xmm4
  mulsd  0x8(%rcx),%xmm3
  mulsd  0x20(%rcx),%xmm4
  xorpd  %xmm2,%xmm0
  addsd  %xmm4,%xmm3
  addsd  0x38(%rcx),%xmm3
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x8(%rdi,%rsi,1)
  movsd  %xmm1,(%rdi,%r10,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm3
  imul   $0x1c,%r8d,%r10d
  mulsd  0x20(%rdx),%xmm3
  mulsd  0x8(%rdx),%xmm0
  add    $0x4,%r10d
  movslq %r10d,%r10
  addsd  %xmm3,%xmm0
  addsd  0x38(%rdx),%xmm0
  movsd  %xmm0,0x8(%rdi,%r9,1)
  movsd  %xmm1,(%rdi,%r10,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm3
  imul   $0x23,%r8d,%r10d
  mulsd  0x20(%rdx),%xmm3
  imul   $0x38,%r8d,%r8d
  mulsd  0x8(%rdx),%xmm0
  add    $0x5,%r10d
  movslq %r10d,%r10
  add    $0x6,%r8d
  movslq %r8d,%r8
  addsd  %xmm3,%xmm0
  addsd  0x38(%rdx),%xmm0
  movsd  %xmm0,0x18(%rdi,%rsi,1)
  movsd  %xmm1,(%rdi,%r10,8)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm3
  mulsd  0x8(%rdx),%xmm0
  movsd  0x30(%rax),%xmm4
  mulsd  0x20(%rdx),%xmm3
  mulsd  0x18(%rcx),%xmm4
  addsd  %xmm3,%xmm0
  movsd  0x28(%rax),%xmm3
  mulsd  (%rcx),%xmm3
  addsd  0x38(%rdx),%xmm0
  xorpd  %xmm2,%xmm0
  addsd  %xmm4,%xmm3
  addsd  0x30(%rcx),%xmm3
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x18(%rdi,%r9,1)
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm3
  mulsd  0x8(%rdx),%xmm0
  movsd  0x30(%rax),%xmm4
  mulsd  0x20(%rdx),%xmm3
  mulsd  0x20(%rcx),%xmm4
  addsd  %xmm3,%xmm0
  movsd  0x28(%rax),%xmm3
  mulsd  0x8(%rcx),%xmm3
  addsd  0x38(%rdx),%xmm0
  xorpd  %xmm2,%xmm0
  addsd  %xmm4,%xmm3
  addsd  0x38(%rcx),%xmm3
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x20(%rdi,%rsi,1)
  movsd  %xmm1,(%rdi,%r8,8)
  movsd  0x28(%rax),%xmm0
  movsd  0x30(%rax),%xmm1
  mulsd  (%rcx),%xmm0
  mulsd  0x18(%rcx),%xmm1
  addsd  %xmm1,%xmm0
  addsd  0x30(%rcx),%xmm0
  xorpd  %xmm2,%xmm0
  movsd  %xmm0,0x20(%rdi,%r9,1)
  movsd  0x28(%rax),%xmm0
  movsd  0x30(%rax),%xmm1
  mulsd  0x8(%rcx),%xmm0
  mulsd  0x20(%rcx),%xmm1
  addsd  %xmm1,%xmm0
  addsd  0x38(%rcx),%xmm0
  xorpd  %xmm2,%xmm0
  movsd  %xmm0,0x28(%rdi,%rsi,1)
  ret
```

tool_calls: name: read_data
arguments: data_label: D8
type_guessed: byte[8]
name: read_data
arguments: data_label: D10
type_guessed: byte[8]

tool: {"D8": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

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

assistant: ```c
void ZuN(double *Z, double *u, double *T1, double *T2, int len) {
  Z[0 + 0 * len * 7] = -1;
  Z[0 + 6 * len * 7] = (u[0]) * T1[0] + (u[1]) * T1[3] + T1[6];
  Z[1 + 1 * len * 7] = -1;
  Z[1 + 7 * len * 7] = (u[0]) * T1[0] + (u[1]) * T1[3] + T1[6];
  Z[2 + 2 * len * 7] = -1;
  Z[2 + 6 * len * 7] = -((u[0]) * T1[0] + (u[1]) * T1[3] + T1[6]) * ((u[5]) * T2[0] + (u[6]) * T2[3] + T2[6]);
  Z[2 + 7 * len * 7] = -((u[0]) * T1[0] + (u[1]) * T1[3] + T1[6]) * ((u[5]) * T2[1] + (u[6]) * T2[4] + T2[7]);
  Z[3 + 3 * len * 7] = -1;
  Z[3 + 6 * len * 7] = (u[0]) * T1[1] + (u[1]) * T1[4] + T1[7];
  Z[4 + 4 * len * 7] = -1;
  Z[4 + 7 * len * 7] = (u[0]) * T1[1] + (u[1]) * T1[4] + T1[7];
  Z[5 + 5 * len * 7] = -1;
  Z[5 + 6 * len * 7] = -((u[0]) * T1[1] + (u[1]) * T1[4] + T1[7]) * ((u[5]) * T2[0] + (u[6]) * T2[3] + T2[6]);
  Z[5 + 7 * len * 7] = -((u[0]) * T1[1] + (u[1]) * T1[4] + T1[7]) * ((u[5]) * T2[1] + (u[6]) * T2[4] + T2[7]);
  Z[6 + 8 * len * 7] = -1;
  Z[6 + 6 * len * 7] = -((u[5]) * T2[0] + (u[6]) * T2[3] + T2[6]);
  Z[6 + 7 * len * 7] = -((u[5]) * T2[1] + (u[6]) * T2[4] + T2[7]);
}
```