user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  sub    $0x118,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  mov    D47(%rip),%rax
  mov    %rax,(%rsp)
  mov    D140(%rip),%rax
  mov    %rax,0x8(%rsp)
  mov    D284(%rip),%rax
  mov    %rax,0x10(%rsp)
  movsd  D134(%rip),%xmm2
  movsd  %xmm2,0x18(%rsp)
  mov    D75(%rip),%rax
  mov    %rax,0x20(%rsp)
  mov    D15(%rip),%rax
  mov    %rax,0x28(%rsp)
  mov    D76(%rip),%rax
  mov    %rax,0x30(%rsp)
  movsd  D7(%rip),%xmm1
  movsd  %xmm1,0x38(%rsp)
  mov    D152(%rip),%rax
  mov    %rax,0x40(%rsp)
  movsd  D179(%rip),%xmm0
  movsd  %xmm0,0x48(%rsp)
  mov    D157(%rip),%rax
  mov    %rax,0x50(%rsp)
  mov    D233(%rip),%rax
  mov    %rax,0x58(%rsp)
  mov    D165(%rip),%rax
  mov    %rax,0x60(%rsp)
  mov    D109(%rip),%rax
  mov    %rax,0x68(%rsp)
  mov    D236(%rip),%rax
  mov    %rax,0x70(%rsp)
  mov    D111(%rip),%rax
  mov    %rax,0x78(%rsp)
  movsd  %xmm2,0x80(%rsp)
  mov    D169(%rip),%rax
  mov    %rax,0x88(%rsp)
  movsd  %xmm1,0x90(%rsp)
  mov    D50(%rip),%rax
  mov    %rax,0x98(%rsp)
  mov    D129(%rip),%rax
  mov    %rax,0xa0(%rsp)
  mov    D51(%rip),%rax
  mov    %rax,0xa8(%rsp)
  mov    D20(%rip),%rax
  mov    %rax,0xb0(%rsp)
  mov    D28(%rip),%rax
  mov    %rax,0xb8(%rsp)
  movsd  %xmm0,0xc0(%rsp)
  mov    D158(%rip),%rax
  mov    %rax,0xc8(%rsp)
  mov    D253(%rip),%rax
  mov    %rax,0xd0(%rsp)
  mov    D122(%rip),%rax
  mov    %rax,0xd8(%rsp)
  mov    D265(%rip),%rax
  mov    %rax,0xe0(%rsp)
  mov    D98(%rip),%rax
  mov    %rax,0xe8(%rsp)
  mov    D201(%rip),%rax
  mov    %rax,0xf0(%rsp)
  mov    D209(%rip),%rax
  mov    %rax,0xf8(%rsp)
  lea    0x80(%rsp),%rsi
  mov    %rsp,%rdi
  mov    $0x10,%edx
  call   <lspa_set_discrete_data@plt>
  mov    $0x0,%eax
  call   <lspa_get_coefficient@plt>
  mov    $0x0,%eax
  call   <lspa_cleanup@plt>
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L0
  mov    $0x0,%eax
  add    $0x118,%rsp
  ret
L0:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D47
data_type: byte[8]
name: disassemble_data
arguments: label: D140
data_type: byte[8]
name: disassemble_data
arguments: label: D284
data_type: byte[8]
name: disassemble_data
arguments: label: D134
data_type: f64
name: disassemble_data
arguments: label: D75
data_type: byte[8]
name: disassemble_data
arguments: label: D15
data_type: byte[8]
name: disassemble_data
arguments: label: D76
data_type: byte[8]
name: disassemble_data
arguments: label: D7
data_type: f64
name: disassemble_data
arguments: label: D152
data_type: byte[8]
name: disassemble_data
arguments: label: D179
data_type: f64
name: disassemble_data
arguments: label: D157
data_type: byte[8]
name: disassemble_data
arguments: label: D233
data_type: byte[8]
name: disassemble_data
arguments: label: D165
data_type: byte[8]
name: disassemble_data
arguments: label: D109
data_type: byte[8]
name: disassemble_data
arguments: label: D236
data_type: byte[8]
name: disassemble_data
arguments: label: D111
data_type: byte[8]
name: disassemble_data
arguments: label: D169
data_type: f64
name: disassemble_data
arguments: label: D50
data_type: f64
name: disassemble_data
arguments: label: D129
data_type: f64
name: disassemble_data
arguments: label: D51
data_type: f64
name: disassemble_data
arguments: label: D20
data_type: f64
name: disassemble_data
arguments: label: D28
data_type: f64
name: disassemble_data
arguments: label: D158
data_type: f64
name: disassemble_data
arguments: label: D253
data_type: f64
name: disassemble_data
arguments: label: D122
data_type: f64
name: disassemble_data
arguments: label: D265
data_type: f64
name: disassemble_data
arguments: label: D98
data_type: f64
name: disassemble_data
arguments: label: D201
data_type: f64
name: disassemble_data
arguments: label: D209
data_type: f64

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

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

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

tool: D134: 4

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

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

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

tool: D7: 8

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

tool: D179: 10

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

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

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

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

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

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

tool: D169: 6.4

tool: D50: 8.8

tool: D129: 9.22

tool: D51: 9.5

tool: D20: 9.7

tool: D28: 9.86

tool: D158: 10.2

tool: D253: 10.32

tool: D122: 10.42

tool: D265: 10.5

tool: D98: 10.55

tool: D201: 10.58

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