user: 请从给定的汇编指令推导出C源代码：

```asm
<FOO1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  movl   $0x10,-0x8(%rbp)
  movl   $0x18,-0x4(%rbp)
  mov    -0x20(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x18(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x20(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x20(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x28(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x28(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x30(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x38(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x38(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x40(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x40(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x48(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x48(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x50(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x50(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x58(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x58(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x60(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x60(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x68(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x68(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x70(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x70(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x78(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x78(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x80(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x80(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x88(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x88(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x90(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x90(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x98(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x98(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xa0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xa0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xa8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xa8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xb0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xb0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xb8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xb8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xc0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xc0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xc8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xc8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xd0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xd0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xd8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xd8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xe0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xe0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xe8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xe8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xf0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xf0(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0xf8(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0xf8(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x100(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x100(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x108(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x108(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x110(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x110(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x118(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x118(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x120(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x120(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x128(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x128(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x130(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x130(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x138(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x138(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x140(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x140(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x148(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x148(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x150(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x150(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x158(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x158(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x160(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x160(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x168(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x168(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x170(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x170(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x178(%rax),%rdx
  mov    -0x20(%rbp),%rax
  movsd  0x178(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x8(%rbp),%eax
  pop    %rbp
  ret
```

assistant: ```c
int FOO1(double *restrict a, double *restrict b, double *restrict c) {
  int i, bytes = 16, len = 24;
  a[0] = b[0];
  a[1] = b[1];
  a[2] = b[2];
  a[3] = b[3];
  a[4] = b[4];
  a[5] = b[5];
  a[6] = b[6];
  a[7] = b[7];
  a[8] = b[8];
  a[9] = b[9];
  a[10] = b[10];
  a[11] = b[11];
  a[12] = b[12];
  a[13] = b[13];
  a[14] = b[14];
  a[15] = b[15];
  a[16] = b[16];
  a[17] = b[17];
  a[18] = b[18];
  a[19] = b[19];
  a[20] = b[20];
  a[21] = b[21];
  a[22] = b[22];
  a[23] = b[23];
  a[24] = b[24];
  a[25] = b[25];
  a[26] = b[26];
  a[27] = b[27];
  a[28] = b[28];
  a[29] = b[29];
  a[30] = b[30];
  a[31] = b[31];
  a[32] = b[32];
  a[33] = b[33];
  a[34] = b[34];
  a[35] = b[35];
  a[36] = b[36];
  a[37] = b[37];
  a[38] = b[38];
  a[39] = b[39];
  a[40] = b[40];
  a[41] = b[41];
  a[42] = b[42];
  a[43] = b[43];
  a[44] = b[44];
  a[45] = b[45];
  a[46] = b[46];
  a[47] = b[47];
  return bytes;
}
```