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

```asm
<test_FKinSpace>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x260,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x258(%rsp)
  xor    %eax,%eax
  movsd  D4(%rip),%xmm0
  movsd  %xmm0,0x30(%rsp)
  movq   $0x0,0x38(%rsp)
  movq   $0x0,0x40(%rsp)
  mov    D41(%rip),%rax
  mov    %rax,0x48(%rsp)
  movq   $0x0,0x50(%rsp)
  movsd  %xmm0,0x58(%rsp)
  movq   $0x0,0x60(%rsp)
  mov    D3(%rip),%rax
  mov    %rax,0x68(%rsp)
  movq   $0x0,0x70(%rsp)
  movq   $0x0,0x78(%rsp)
  movsd  %xmm0,0x80(%rsp)
  mov    D125(%rip),%rax
  mov    %rax,0x88(%rsp)
  movq   $0x0,0x90(%rsp)
  movq   $0x0,0x98(%rsp)
  movq   $0x0,0xa0(%rsp)
  movsd  %xmm0,0xa8(%rsp)
  lea    0x130(%rsp),%rdi
  lea    D106(%rip),%rsi
  mov    $0x24,%ecx
  rep movsq %ds:(%rsi),%es:(%rdi)
  mov    D142(%rip),%rax
  mov    %rax,(%rsp)
  mov    D51(%rip),%rax
  mov    %rax,0x8(%rsp)
  mov    D20(%rip),%rax
  mov    %rax,0x10(%rsp)
  mov    D50(%rip),%rax
  mov    %rax,0x18(%rsp)
  mov    D132(%rip),%rax
  mov    %rax,0x20(%rsp)
  mov    D23(%rip),%rax
  mov    %rax,0x28(%rsp)
  lea    D39(%rip),%rdi
  call   <puts@plt>
  mov    %rsp,%rbx
  lea    0x30(%rsp),%r12
  lea    D71(%rip),%rbp
L1:
  movsd  (%rbx),%xmm0
  mov    %rbp,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  add    $0x8,%rbx
  cmp    %r12,%rbx
  jne    L1
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0xb0(%rsp),%rbx
  mov    %rsp,%rcx
  lea    0x130(%rsp),%rdx
  lea    0x30(%rsp),%rdi
  mov    %rbx,%r8
  mov    $0x6,%esi
  call   <FKinSpace@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    0x130(%rsp),%r12
  lea    D78(%rip),%rbp
L19:
  movsd  0x18(%rbx),%xmm3
  movsd  0x10(%rbx),%xmm2
  movsd  0x8(%rbx),%xmm1
  movsd  (%rbx),%xmm0
  mov    %rbp,%rdi
  mov    $0x4,%eax
  call   <printf@plt>
  add    $0x20,%rbx
  cmp    %r12,%rbx
  jne    L19
  mov    0x258(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L12
  add    $0x260,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L12:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D4
type_infered: f64
name: read_data
arguments: data_tag: D41
type_infered: f64
name: read_data
arguments: data_tag: D3
type_infered: f64
name: read_data
arguments: data_tag: D125
type_infered: f64
name: read_data
arguments: data_tag: D106
type_infered: string
name: read_data
arguments: data_tag: D142
type_infered: f64
name: read_data
arguments: data_tag: D51
type_infered: f64
name: read_data
arguments: data_tag: D20
type_infered: f64
name: read_data
arguments: data_tag: D50
type_infered: f64
name: read_data
arguments: data_tag: D132
type_infered: f64
name: read_data
arguments: data_tag: D23
type_infered: byte[8]
name: read_data
arguments: data_tag: D39
type_infered: string
name: read_data
arguments: data_tag: D71
type_infered: string
name: read_data
arguments: data_tag: D83
type_infered: string
name: read_data
arguments: data_tag: D78
type_infered: string

tool: D4: 1

tool: D41: 213

tool: D3: 267.8

tool: D125: 478.95

tool: 

tool: D142: 0.1

tool: D51: 0.2

tool: D20: 0.3

tool: D50: 0.4

tool: D132: 0.5

tool: {"D23": [0x18,0x2d,0x44,0x54,0xfb,0x21,0xe9,0x3f]}

tool: D39: thetalist:

tool: D71: %lf 

tool: D83: T:

tool: D78: %lf %lf %lf %lf


assistant: ```c
void test_FKinSpace() {
  int i;
  double M[4][4] = {1.0000, 0, 0, 213.0000, 0, 1.0000, 0, 267.8000, 0, 0, 1.0000, 478.9500, 0, 0, 0, 1.0000};
  int JoinNum = 6;
  double Slist[6][6] = {0, 0, 0, 0, 0, 0, 0, 1.0000, 1.0000, 1.0000, 0, 1.0000, 1.0000, 0, 0, 0, 1.0000, 0, 0, -151.9000, -395.5500, -395.5500, 110.4000, -478.9500, 0, 0, 0, 0, -213.0000, 0, 0, 0, 0, 213.0000, 0, 213.0000};
  double thetalist[6] = {0.1, 0.2, 0.3, 0.4, 0.5, 3.14159265358979323846 / 4};
  printf("thetalist:\n");
  for (i = 0; i < 6; i++) {
    printf("%lf ", thetalist[i]);
  }
  printf("\n");
  double T[4][4];
  FKinSpace(M, JoinNum, (double *)Slist, thetalist, T);
  printf("T:\n");
  for (i = 0; i < 4; i++) {
    printf("%lf %lf %lf %lf\n", T[i][0], T[i][1], T[i][2], T[i][3]);
  }
  return;
}
```