user: Translate the below assembly code into C programming language:

```asm
<ZuN>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    %r8d,-0x24(%rbp)
  mov    -0x8(%rbp),%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x2a,%eax,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%edx
  mov    %edx,%eax
  shl    $0x3,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x31,%eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%eax
  imul   $0xe,%eax,%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movq   D126(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm3
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm2,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x2a,%eax,%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movq   D126(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm3
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm2,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x31,%eax,%eax
  add    $0x2,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x2a,%eax,%eax
  add    $0x3,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%eax
  imul   $0x1c,%eax,%eax
  add    $0x4,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x31,%eax,%eax
  add    $0x4,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%eax
  imul   $0x23,%eax,%eax
  add    $0x5,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movq   D126(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm3
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm2,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x2a,%eax,%eax
  add    $0x5,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movq   D126(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm3
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm2,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x31,%eax,%eax
  add    $0x5,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x24(%rbp),%eax
  imul   $0x38,%eax,%eax
  add    $0x6,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movsd  D50(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x2a,%eax,%eax
  add    $0x6,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movq   D126(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm1
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x24(%rbp),%eax
  imul   $0x31,%eax,%eax
  add    $0x6,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movq   D126(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D50
data_type: byte[8]
name: retrieve_data
arguments: data_label: D126
data_type: byte[8]

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

tool: {"D126": [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]);
}
```