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

```asm
<main>:
  endbr64
  sub    $0x118,%rsp
  movapd D15(%rip),%xmm0
  mov    $0x10,%edx
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  lea    0x80(%rsp),%rsi
  mov    %rsp,%rdi
  movaps %xmm0,(%rsp)
  movapd D144(%rip),%xmm0
  movaps %xmm0,0x10(%rsp)
  movapd D105(%rip),%xmm0
  movaps %xmm0,0x20(%rsp)
  movapd D35(%rip),%xmm0
  movaps %xmm0,0x30(%rsp)
  movapd D88(%rip),%xmm0
  movaps %xmm0,0x40(%rsp)
  movapd D97(%rip),%xmm0
  movaps %xmm0,0x50(%rsp)
  movapd D65(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  movapd D130(%rip),%xmm0
  movaps %xmm0,0x70(%rsp)
  movapd D76(%rip),%xmm0
  movaps %xmm0,0x80(%rsp)
  movapd D143(%rip),%xmm0
  movaps %xmm0,0x90(%rsp)
  movapd D2(%rip),%xmm0
  movaps %xmm0,0xa0(%rsp)
  movapd D93(%rip),%xmm0
  movaps %xmm0,0xb0(%rsp)
  movapd D146(%rip),%xmm0
  movaps %xmm0,0xc0(%rsp)
  movapd D18(%rip),%xmm0
  movaps %xmm0,0xd0(%rsp)
  movapd D48(%rip),%xmm0
  movaps %xmm0,0xe0(%rsp)
  movapd D91(%rip),%xmm0
  movaps %xmm0,0xf0(%rsp)
  call   <lspa_set_discrete_data@plt>
  xor    %eax,%eax
  call   <lspa_get_coefficient@plt>
  xor    %eax,%eax
  call   <lspa_cleanup@plt>
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L0
  xor    %eax,%eax
  add    $0x118,%rsp
  ret
L0:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D15
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D144
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D105
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D35
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D88
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D97
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D65
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D130
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D76
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D143
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D2
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D93
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D146
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D18
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D48
type_guessed: f64[2]
name: extract_symbolic_data
arguments: data_tag: D91
type_guessed: f64[2]

tool: {"D15": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D144": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

tool: {"D105": [0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x40]}

tool: {"D35": [0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40]}

tool: {"D88": [0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

tool: {"D97": [0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x40]}

tool: {"D65": [0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x40]}

tool: {"D130": [0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x40]}

tool: {"D76": [4.0,6.4]}

tool: {"D143": [8.0,8.8]}

tool: {"D2": [9.22,9.5]}

tool: {"D93": [9.7,9.86]}

tool: {"D146": [10.0,10.2]}

tool: {"D18": [10.32,10.42]}

tool: {"D48": [10.5,10.55]}

tool: {"D91": [10.58,10.6]}

assistant: ```c
int main() {
  double x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
  double y[] = {4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60};
  lspa_set_discrete_data(x, y, sizeof(y) / sizeof(double));
  lspa_get_coefficient();
  lspa_cleanup();
  return 0;
}
```