user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x110,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  D239(%rip),%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movsd  D278(%rip),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  D126(%rip),%xmm0
  movsd  %xmm0,-0x100(%rbp)
  movsd  D219(%rip),%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  movsd  D76(%rip),%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  movsd  D82(%rip),%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  D153(%rip),%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  D314(%rip),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  D238(%rip),%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  D75(%rip),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  D319(%rip),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D2(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  D221(%rip),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  D169(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  D276(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  D137(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  D219(%rip),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D28(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D314(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D248(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D160(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D308(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D143(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D104(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D75(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D128(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D10(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D243(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D275(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D17(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D74(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D190(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  lea    -0x90(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    $0x10,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <lspa_set_discrete_data@plt>
  mov    $0x0,%eax
  call   <lspa_get_coefficient@plt>
  mov    $0x0,%eax
  call   <lspa_cleanup@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D239
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D278
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D126
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D219
data_type: f64
name: extract_symbolic_data
arguments: tag: D76
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D82
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D153
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D314
data_type: f64
name: extract_symbolic_data
arguments: tag: D238
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D75
data_type: f64
name: extract_symbolic_data
arguments: tag: D319
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D2
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D221
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D169
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D276
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D137
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D28
data_type: f64
name: extract_symbolic_data
arguments: tag: D248
data_type: f64
name: extract_symbolic_data
arguments: tag: D160
data_type: f64
name: extract_symbolic_data
arguments: tag: D308
data_type: f64
name: extract_symbolic_data
arguments: tag: D143
data_type: f64
name: extract_symbolic_data
arguments: tag: D104
data_type: f64
name: extract_symbolic_data
arguments: tag: D128
data_type: f64
name: extract_symbolic_data
arguments: tag: D10
data_type: f64
name: extract_symbolic_data
arguments: tag: D243
data_type: f64
name: extract_symbolic_data
arguments: tag: D275
data_type: f64
name: extract_symbolic_data
arguments: tag: D17
data_type: f64
name: extract_symbolic_data
arguments: tag: D74
data_type: f64
name: extract_symbolic_data
arguments: tag: D190
data_type: f64

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

tool: {"D278": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

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

tool: D219: 4

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

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

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

tool: D314: 8

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

tool: D75: 10

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

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

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

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

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

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

tool: D28: 6.4

tool: D248: 8.8

tool: D160: 9.22

tool: D308: 9.5

tool: D143: 9.7

tool: D104: 9.86

tool: D128: 10.2

tool: D10: 10.32

tool: D243: 10.42

tool: D275: 10.5

tool: D17: 10.55

tool: D74: 10.58

tool: D190: 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;
}
```