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

```asm
<BsplnWght7>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdq -0x18(%rbp),%xmm1
  movsd  -0x20(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movq   D161(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D269(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L41
  movsd  -0x20(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D279(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D86(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D206(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D39(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D32(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L26
L41:
  movsd  D61(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L36
  movsd  -0x20(%rbp),%xmm1
  movsd  D26(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D138(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D114(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D178(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D185(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D191(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D241(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L26
L36:
  movsd  D57(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L63
  movsd  -0x20(%rbp),%xmm1
  movsd  D202(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D86(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D138(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D62(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D69(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D182(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D187(%rip),%xmm1
  subsd  %xmm1,%xmm0
  jmp    L26
L63:
  movsd  D273(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L62
  movsd  D273(%rip),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  -0x8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D16(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  jmp    L26
L62:
  pxor   %xmm0,%xmm0
L26:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: label: D161
type: qword
name: unpack_data
arguments: label: D269
type: f64
name: unpack_data
arguments: label: D279
type: byte[8]
name: unpack_data
arguments: label: D86
type: byte[8]
name: unpack_data
arguments: label: D206
type: byte[8]
name: unpack_data
arguments: label: D39
type: byte[8]
name: unpack_data
arguments: label: D32
type: byte[8]
name: unpack_data
arguments: label: D61
type: f64
name: unpack_data
arguments: label: D26
type: byte[8]
name: unpack_data
arguments: label: D219
type: f64
name: unpack_data
arguments: label: D138
type: byte[8]
name: unpack_data
arguments: label: D114
type: f64
name: unpack_data
arguments: label: D178
type: byte[8]
name: unpack_data
arguments: label: D185
type: f64
name: unpack_data
arguments: label: D191
type: byte[8]
name: unpack_data
arguments: label: D241
type: byte[8]
name: unpack_data
arguments: label: D57
type: f64
name: unpack_data
arguments: label: D202
type: byte[8]
name: unpack_data
arguments: label: D62
type: byte[8]
name: unpack_data
arguments: label: D139
type: byte[8]
name: unpack_data
arguments: label: D69
type: byte[8]
name: unpack_data
arguments: label: D182
type: byte[8]
name: unpack_data
arguments: label: D187
type: byte[8]
name: unpack_data
arguments: label: D273
type: f64
name: unpack_data
arguments: label: D16
type: byte[8]

tool: D161: 9223372036854775807

tool: D269: 1

tool: {"D279": [0x1c,0xc7,0x71,0x1c,0xc7,0x71,0x7c,0x3f]}

tool: {"D86": [0x1c,0xc7,0x71,0x1c,0xc7,0x71,0x9c,0x3f]}

tool: {"D206": [0x1c,0xc7,0x71,0x1c,0xc7,0x71,0xbc,0x3f]}

tool: {"D39": [0x55,0x55,0x55,0x55,0x55,0x55,0xd5,0x3f]}

tool: {"D32": [0xdf,0xea,0xad,0xde,0xea,0xad,0xde,0x3f]}

tool: D61: 2

tool: {"D26": [0x11,0x11,0x11,0x11,0x11,0x11,0x71,0x3f]}

tool: D219: 0.05

tool: {"D138": [0xde,0xdd,0xdd,0xdd,0xdd,0xdd,0xcd,0x3f]}

tool: D114: 0.5

tool: {"D178": [0x39,0x8e,0xe3,0x38,0x8e,0xe3,0xd8,0x3f]}

tool: D185: 0.1

tool: {"D191": [0x94,0x3e,0xe9,0x93,0x3e,0xe9,0xb3,0x3f]}

tool: {"D241": [0x3f,0xf6,0x63,0x3f,0xf6,0x63,0xdf,0x3f]}

tool: D57: 3

tool: {"D202": [0x17,0x6c,0xc1,0x16,0x6c,0xc1,0x56,0x3f]}

tool: {"D62": [0x39,0x8e,0xe3,0x38,0x8e,0xe3,0xf0,0x3f]}

tool: {"D139": [0x72,0x1c,0xc7,0x71,0x1c,0xc7,0x05,0x40]}

tool: {"D69": [0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0x0e,0x40]}

tool: {"D182": [0x9f,0xf4,0x49,0x9f,0xf4,0x49,0x03,0x40]}

tool: {"D187": [0xdc,0xc3,0x3d,0xdc,0xc3,0x3d,0xcc,0x3f]}

tool: D273: 4

tool: {"D16": [0x1a,0xa0,0x01,0x1a,0xa0,0x01,0x2a,0x3f]}

assistant: ```c
double BsplnWght7(long i, double x) {
  double f;
  x = fabs(x - (double)i);
  if (x < 1.0) {
    f = x * x;
    return (f * (f * (f * (x * (1.0 / 144.0) - 1.0 / 36.0) + 1.0 / 9.0) - 1.0 / 3.0) + 151.0 / 315.0);
  }
  if (x < 2.0)
    return (x * (x * (x * (x * (x * (x * (0.05 - x * (1.0 / 240.0)) - 7.0 / 30.0) + 0.5) - 7.0 / 18.0) - 0.1) - 7.0 / 90.0) + 103.0 / 210.0);
  if (x < 3.0)
    return (x * (x * (x * (x * (x * (x * (x * (1.0 / 720.0) - 1.0 / 36.0) + 7.0 / 30.0) - 19.0 / 18.0) + 49.0 / 18.0) - 23.0 / 6.0) + 217.0 / 90.0) - 139.0 / 630.0);
  if (x < 4.0) {
    f = 4.0 - x;
    x = f * f * f;
    return (x * x * f * (1.0 / 5040.0));
  }
  return (0.0);
}
```