user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<PyramidFilterSplinel2>:
  endbr64
  cmp    $0x2,%r8
  je     L46
  jg     L51
  test   %r8,%r8
  je     L33
  cmp    $0x1,%r8
  jne    L15
  mov    D521(%rip),%rax
  mov    %rax,(%rdi)
  mov    D503(%rip),%rax
  mov    %rax,0x8(%rdi)
  mov    D595(%rip),%rax
  mov    %rax,0x10(%rdi)
  mov    D371(%rip),%rax
  mov    %rax,0x18(%rdi)
  mov    D522(%rip),%rax
  mov    %rax,0x20(%rdi)
  mov    D285(%rip),%rax
  mov    %rax,0x28(%rdi)
  mov    D30(%rip),%rax
  mov    %rax,0x30(%rdi)
  mov    D400(%rip),%rax
  mov    %rax,0x38(%rdi)
  mov    D509(%rip),%rax
  mov    %rax,0x40(%rdi)
  movq   $0x9,(%rsi)
  mov    D508(%rip),%rax
  mov    %rax,(%rdx)
  mov    D519(%rip),%rax
  mov    %rax,0x8(%rdx)
  mov    $0x2,%eax
  jmp    L39
L51:
  cmp    $0x3,%r8
  jne    L15
  mov    D340(%rip),%rax
  mov    %rax,(%rdi)
  mov    D352(%rip),%rax
  mov    %rax,0x8(%rdi)
  mov    D420(%rip),%rax
  mov    %rax,0x10(%rdi)
  mov    D240(%rip),%rax
  mov    %rax,0x18(%rdi)
  mov    D40(%rip),%rax
  mov    %rax,0x20(%rdi)
  mov    D359(%rip),%rax
  mov    %rax,0x28(%rdi)
  mov    D109(%rip),%rax
  mov    %rax,0x30(%rdi)
  mov    D484(%rip),%rax
  mov    %rax,0x38(%rdi)
  mov    D277(%rip),%rax
  mov    %rax,0x40(%rdi)
  mov    D278(%rip),%rax
  mov    %rax,0x48(%rdi)
  mov    D105(%rip),%rax
  mov    %rax,0x50(%rdi)
  mov    D92(%rip),%rax
  mov    %rax,0x58(%rdi)
  mov    D414(%rip),%rax
  mov    %rax,0x60(%rdi)
  mov    D307(%rip),%rax
  mov    %rax,0x68(%rdi)
  mov    D398(%rip),%rax
  mov    %rax,0x70(%rdi)
  mov    D364(%rip),%rax
  mov    %rax,0x78(%rdi)
  mov    D538(%rip),%rax
  mov    %rax,0x80(%rdi)
  mov    D413(%rip),%rax
  mov    %rax,0x88(%rdi)
  mov    D159(%rip),%rax
  mov    %rax,0x90(%rdi)
  mov    D458(%rip),%rax
  mov    %rax,0x98(%rdi)
  movq   $0x14,(%rsi)
  mov    D508(%rip),%rax
  mov    %rax,(%rdx)
  mov    D231(%rip),%rax
  mov    %rax,0x8(%rdx)
  movq   $0x0,0x10(%rdx)
  mov    D70(%rip),%rax
  mov    %rax,0x18(%rdx)
  movq   $0x0,0x20(%rdx)
  mov    D588(%rip),%rax
  mov    %rax,0x28(%rdx)
  movq   $0x0,0x30(%rdx)
  mov    D589(%rip),%rax
  mov    %rax,0x38(%rdx)
  movq   $0x0,0x40(%rdx)
  mov    D253(%rip),%rax
  mov    %rax,0x48(%rdx)
  movq   $0x0,0x50(%rdx)
  mov    D546(%rip),%rax
  mov    %rax,0x58(%rdx)
  mov    $0xc,%eax
  jmp    L39
L33:
  movq   $0x1,(%rsi)
  mov    $0x1,%eax
L39:
  mov    %rax,(%rcx)
  ret
L46:
  mov    D415(%rip),%rax
  mov    %rax,(%rdi)
  mov    D454(%rip),%rax
  mov    %rax,0x8(%rdi)
  mov    D425(%rip),%rax
  mov    %rax,0x10(%rdi)
  mov    D541(%rip),%rax
  mov    %rax,0x18(%rdi)
  mov    D225(%rip),%rax
  mov    %rax,0x20(%rdi)
  mov    D493(%rip),%rax
  mov    %rax,0x28(%rdi)
  mov    D167(%rip),%rax
  mov    %rax,0x30(%rdi)
  mov    D39(%rip),%rax
  mov    %rax,0x38(%rdi)
  mov    D206(%rip),%rax
  mov    %rax,0x40(%rdi)
  mov    D322(%rip),%rax
  mov    %rax,0x48(%rdi)
  mov    D391(%rip),%rax
  mov    %rax,0x50(%rdi)
  mov    D96(%rip),%rax
  mov    %rax,0x58(%rdi)
  mov    D463(%rip),%rax
  mov    %rax,0x60(%rdi)
  mov    D310(%rip),%rax
  mov    %rax,0x68(%rdi)
  mov    D221(%rip),%rax
  mov    %rax,0x70(%rdi)
  mov    D440(%rip),%rax
  mov    %rax,0x78(%rdi)
  movq   $0x10,(%rsi)
  mov    D508(%rip),%rax
  mov    %rax,(%rdx)
  mov    D164(%rip),%rax
  mov    %rax,0x8(%rdx)
  movq   $0x0,0x10(%rdx)
  mov    D515(%rip),%rax
  mov    %rax,0x18(%rdx)
  movq   $0x0,0x20(%rdx)
  mov    D308(%rip),%rax
  mov    %rax,0x28(%rdx)
  movq   $0x0,0x30(%rdx)
  mov    D461(%rip),%rax
  mov    %rax,0x38(%rdx)
  movq   $0x0,0x40(%rdx)
  mov    D572(%rip),%rax
  mov    %rax,0x48(%rdx)
  mov    $0xa,%eax
  jmp    L39
L15:
  movq   $0xffffffffffffffff,(%rsi)
  mov    $0xffffffffffffffff,%rax
  jmp    L39
```

tool_calls: name: unpack_data
arguments: data_label: D521
datatype: f64
name: unpack_data
arguments: data_label: D503
datatype: f64
name: unpack_data
arguments: data_label: D595
datatype: byte[8]
name: unpack_data
arguments: data_label: D371
datatype: byte[8]
name: unpack_data
arguments: data_label: D522
datatype: f64
name: unpack_data
arguments: data_label: D285
datatype: f64
name: unpack_data
arguments: data_label: D30
datatype: byte[8]
name: unpack_data
arguments: data_label: D400
datatype: byte[8]
name: unpack_data
arguments: data_label: D509
datatype: f64
name: unpack_data
arguments: data_label: D508
datatype: f64
name: unpack_data
arguments: data_label: D519
datatype: f64
name: unpack_data
arguments: data_label: D340
datatype: f64
name: unpack_data
arguments: data_label: D352
datatype: f64
name: unpack_data
arguments: data_label: D420
datatype: byte[8]
name: unpack_data
arguments: data_label: D240
datatype: byte[8]
name: unpack_data
arguments: data_label: D40
datatype: f64
name: unpack_data
arguments: data_label: D359
datatype: f64
name: unpack_data
arguments: data_label: D109
datatype: byte[8]
name: unpack_data
arguments: data_label: D484
datatype: byte[8]
name: unpack_data
arguments: data_label: D277
datatype: f64
name: unpack_data
arguments: data_label: D278
datatype: f64
name: unpack_data
arguments: data_label: D105
datatype: byte[8]
name: unpack_data
arguments: data_label: D92
datatype: byte[8]
name: unpack_data
arguments: data_label: D414
datatype: f64
name: unpack_data
arguments: data_label: D307
datatype: f64
name: unpack_data
arguments: data_label: D398
datatype: byte[8]
name: unpack_data
arguments: data_label: D364
datatype: byte[8]
name: unpack_data
arguments: data_label: D538
datatype: f64
name: unpack_data
arguments: data_label: D413
datatype: f64
name: unpack_data
arguments: data_label: D159
datatype: byte[8]
name: unpack_data
arguments: data_label: D458
datatype: byte[8]
name: unpack_data
arguments: data_label: D231
datatype: f64
name: unpack_data
arguments: data_label: D70
datatype: byte[8]
name: unpack_data
arguments: data_label: D588
datatype: f64
name: unpack_data
arguments: data_label: D589
datatype: byte[8]
name: unpack_data
arguments: data_label: D253
datatype: f64
name: unpack_data
arguments: data_label: D546
datatype: byte[8]
name: unpack_data
arguments: data_label: D415
datatype: f64
name: unpack_data
arguments: data_label: D454
datatype: f64
name: unpack_data
arguments: data_label: D425
datatype: byte[8]
name: unpack_data
arguments: data_label: D541
datatype: byte[8]
name: unpack_data
arguments: data_label: D225
datatype: f64
name: unpack_data
arguments: data_label: D493
datatype: f64
name: unpack_data
arguments: data_label: D167
datatype: byte[8]
name: unpack_data
arguments: data_label: D39
datatype: byte[8]
name: unpack_data
arguments: data_label: D206
datatype: f64
name: unpack_data
arguments: data_label: D322
datatype: f64
name: unpack_data
arguments: data_label: D391
datatype: byte[8]
name: unpack_data
arguments: data_label: D96
datatype: byte[8]
name: unpack_data
arguments: data_label: D463
datatype: f64
name: unpack_data
arguments: data_label: D310
datatype: f64
name: unpack_data
arguments: data_label: D221
datatype: byte[8]
name: unpack_data
arguments: data_label: D440
datatype: byte[8]
name: unpack_data
arguments: data_label: D164
datatype: f64
name: unpack_data
arguments: data_label: D515
datatype: byte[8]
name: unpack_data
arguments: data_label: D308
datatype: f64
name: unpack_data
arguments: data_label: D461
datatype: byte[8]
name: unpack_data
arguments: data_label: D572
datatype: f64

tool: D521: 0.707107

tool: D503: 0.292893

tool: {"D595": [0xc9,0xc8,0x59,0xd8,0xd3,0x0e,0xbf,0xbf]}

tool: {"D371": [0x7b,0xa0,0x15,0x18,0xb2,0xba,0xa9,0xbf]}

tool: D522: 0.0208153

tool: D285: 0.00862197

tool: {"D30": [0xb2,0xba,0x17,0x90,0xa4,0x41,0x6d,0xbf]}

tool: {"D400": [0xb3,0x04,0xbe,0x47,0xa2,0x3c,0x58,0xbf]}

tool: D509: 0.000612745

tool: D508: 1

tool: D519: 0.5

tool: D340: 0.596797

tool: D352: 0.313287

tool: {"D420": [0xf5,0x8d,0x9e,0x11,0x5b,0x30,0xb5,0xbf]}

tool: {"D240": [0xc9,0xce,0x36,0x92,0x5f,0x9a,0xb7,0xbf]}

tool: D40: 0.0540288

tool: D359: 0.0436996

tool: {"D109": [0xda,0x1a,0xb6,0xd2,0x10,0xfa,0x9e,0xbf]}

tool: {"D484": [0xc1,0x40,0x6b,0xd9,0xb5,0x18,0x97,0xbf]}

tool: D277: 0.0162251

tool: D278: 0.0118738

tool: {"D105": [0xd3,0x39,0x16,0x46,0x40,0xa6,0x81,0xbf]}

tool: {"D92": [0xdd,0xf4,0xe3,0x06,0xae,0xb8,0x79,0xbf]}

tool: D414: 0.00456713

tool: D307: 0.00332464

tool: {"D398": [0x38,0x6b,0xae,0xa2,0x58,0xd1,0x63,0xbf]}

tool: {"D364": [0xe3,0xc0,0x2f,0x1e,0x73,0xd8,0x5c,0xbf]}

tool: D538: 0.00128128

tool: D413: 0.000932349

tool: {"D159": [0xc4,0xec,0xcd,0xbe,0xde,0x3c,0x46,0xbf]}

tool: {"D458": [0x2b,0x3c,0xb6,0x05,0x4e,0x2d,0x40,0xbf]}

tool: D231: 0.600481

tool: {"D70": [0x90,0x66,0x2c,0x9a,0xce,0x4e,0xc0,0xbf]}

tool: D588: 0.034138

tool: {"D589": [0x63,0x64,0xc9,0x1c,0xcb,0xbb,0x82,0xbf]}

tool: D253: 0.002451

tool: {"D546": [0x74,0xf1,0x7a,0xda,0x28,0x85,0x45,0xbf]}

tool: D415: 0.617317

tool: D454: 0.310754

tool: {"D425": [0x68,0x48,0xcb,0x37,0x91,0x4f,0xb8,0xbf]}

tool: {"D541": [0x29,0xa3,0xdb,0x5c,0x46,0xfb,0xb5,0xbf]}

tool: D225: 0.0529153

tool: D493: 0.0362437

tool: {"D167": [0x28,0x26,0x14,0xc7,0x26,0x9e,0x98,0xbf]}

tool: {"D39": [0x5a,0x4f,0x08,0x78,0x2d,0x7c,0x90,0xbf]}

tool: D206: 0.0107498

tool: D322: 0.00718418

tool: {"D391": [0x7a,0xa3,0x1c,0xed,0x34,0xa9,0x73,0xbf]}

tool: {"D96": [0xf9,0x64,0x07,0x8d,0x47,0x46,0x6a,0xbf]}

tool: D463: 0.00214306

tool: D310: 0.00143195

tool: {"D221": [0xb9,0x60,0xba,0x5a,0x38,0x5a,0x4f,0xbf]}

tool: {"D440": [0xe4,0x6b,0xe3,0x10,0xf0,0xf2,0x44,0xbf]}

tool: D164: 0.585786

tool: {"D515": [0x7b,0xa0,0x15,0x18,0xb2,0xba,0xb9,0xbf]}

tool: D308: 0.0172439

tool: {"D461": [0x27,0x4c,0x5a,0xe9,0x9c,0x3c,0x68,0xbf]}

tool: D572: 0.000507614

assistant: ```c
extern void PyramidFilterSplinel2(double g[], long *ng, double *h, long *nh, long Order) {
  switch (Order) {
  case 0L:
    *ng = 1L;
    *nh = 1L;
    break;
  case 1L:
    g[0] = 0.707107;
    g[1] = 0.292893;
    g[2] = -0.12132;
    g[3] = -0.0502525;
    g[4] = 0.0208153;
    g[5] = 0.00862197;
    g[6] = -0.00357134;
    g[7] = -0.0014793;
    g[8] = 0.000612745;
    *ng = 9L;
    h[0] = 1.;
    h[1] = 0.5;
    *nh = 2L;
    break;
  case 2L:
    g[0] = 0.617317;
    g[1] = 0.310754;
    g[2] = -0.0949641;
    g[3] = -0.0858654;
    g[4] = 0.0529153;
    g[5] = 0.0362437;
    g[6] = -0.0240408;
    g[7] = -0.0160987;
    g[8] = 0.0107498;
    g[9] = 0.00718418;
    g[10] = -0.00480004;
    g[11] = -0.00320734;
    g[12] = 0.00214306;
    g[13] = 0.00143195;
    g[14] = -0.0009568;
    g[15] = -0.000639312;
    *ng = 16L;
    h[0] = 1.;
    h[1] = 0.585786;
    h[2] = 0;
    h[3] = -0.100505;
    h[4] = 0;
    h[5] = 0.0172439;
    h[6] = 0;
    h[7] = -0.00295859;
    h[8] = 0;
    h[9] = 0.000507614;
    *nh = 10L;
    break;
  case 3L:
    g[0] = 0.596797;
    g[1] = 0.313287;
    g[2] = -0.0827691;
    g[3] = -0.0921993;
    g[4] = 0.0540288;
    g[5] = 0.0436996;
    g[6] = -0.0302508;
    g[7] = -0.0225552;
    g[8] = 0.0162251;
    g[9] = 0.0118738;
    g[10] = -0.00861788;
    g[11] = -0.00627964;
    g[12] = 0.00456713;
    g[13] = 0.00332464;
    g[14] = -0.00241916;
    g[15] = -0.00176059;
    g[16] = 0.00128128;
    g[17] = 0.000932349;
    g[18] = -0.000678643;
    g[19] = -0.000493682;
    *ng = 20L;
    h[0] = 1.;
    h[1] = 0.600481;
    h[2] = 0;
    h[3] = -0.127405;
    h[4] = 0;
    h[5] = 0.034138;
    h[6] = 0;
    h[7] = -0.00914725;
    h[8] = 0;
    h[9] = 0.002451;
    h[10] = 0;
    h[11] = -0.000656743;
    *nh = 12L;
    break;
  default:
    *ng = -1L;
    *nh = -1L;
    break;
  }
}
```