user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<pyr_filters>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    %r8d,%eax
  mov    %ax,-0x24(%rbp)
  movswl -0x24(%rbp),%eax
  cmp    $0x3,%eax
  je     L60
  cmp    $0x3,%eax
  jg     L23
  cmp    $0x2,%eax
  je     L57
  cmp    $0x2,%eax
  jg     L23
  test   %eax,%eax
  je     L38
  cmp    $0x1,%eax
  je     L50
  jmp    L23
L38:
  mov    -0x10(%rbp),%rax
  movw   $0x1,(%rax)
  mov    -0x20(%rbp),%rax
  movw   $0x1,(%rax)
  jmp    L12
L50:
  mov    -0x8(%rbp),%rax
  movss  D172(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  D47(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  D215(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  D337(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  D323(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  D185(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  D528(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  D313(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  D322(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movw   $0x9,(%rax)
  mov    -0x18(%rbp),%rax
  movss  D26(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  D296(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  movw   $0x2,(%rax)
  jmp    L12
L57:
  mov    -0x8(%rbp),%rax
  movss  D288(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  D543(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  D113(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  D56(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  D398(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  D365(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  D513(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  D289(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  D309(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  D24(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  D444(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  D477(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  D50(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  D426(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  D326(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  D163(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movw   $0x10,(%rax)
  mov    -0x18(%rbp),%rax
  movss  D26(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  D410(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  movss  D432(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  movss  D419(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  movss  D429(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  movss  D6(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  movw   $0xa,(%rax)
  jmp    L12
L60:
  mov    -0x8(%rbp),%rax
  movss  D182(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  D95(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  D55(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  D160(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  D188(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  D238(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  D447(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  D561(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  D91(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  D430(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  D534(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  D213(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  D318(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  D599(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  D59(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  D167(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x40,%rax
  movss  D259(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x44,%rax
  movss  D383(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x48,%rax
  movss  D196(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4c,%rax
  movss  D458(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movw   $0x14,(%rax)
  mov    -0x18(%rbp),%rax
  movss  D26(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  D99(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  movss  D481(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  movss  D124(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  movss  D280(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  movss  D361(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x28,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  movss  D441(%rip),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x20(%rbp),%rax
  movw   $0xc,(%rax)
  jmp    L12
L23:
  mov    -0x10(%rbp),%rax
  movw   $0x1,(%rax)
  mov    -0x20(%rbp),%rax
  movw   $0x1,(%rax)
  nop
L12:
  nop
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D172
type: f32
name: disassemble_data
arguments: data_label: D47
type: f32
name: disassemble_data
arguments: data_label: D215
type: byte[4]
name: disassemble_data
arguments: data_label: D337
type: byte[4]
name: disassemble_data
arguments: data_label: D323
type: f32
name: disassemble_data
arguments: data_label: D185
type: f32
name: disassemble_data
arguments: data_label: D528
type: byte[4]
name: disassemble_data
arguments: data_label: D313
type: byte[4]
name: disassemble_data
arguments: data_label: D322
type: f32
name: disassemble_data
arguments: data_label: D26
type: f32
name: disassemble_data
arguments: data_label: D296
type: f32
name: disassemble_data
arguments: data_label: D288
type: f32
name: disassemble_data
arguments: data_label: D543
type: f32
name: disassemble_data
arguments: data_label: D113
type: byte[4]
name: disassemble_data
arguments: data_label: D56
type: byte[4]
name: disassemble_data
arguments: data_label: D398
type: f32
name: disassemble_data
arguments: data_label: D365
type: f32
name: disassemble_data
arguments: data_label: D513
type: byte[4]
name: disassemble_data
arguments: data_label: D289
type: byte[4]
name: disassemble_data
arguments: data_label: D309
type: f32
name: disassemble_data
arguments: data_label: D24
type: f32
name: disassemble_data
arguments: data_label: D444
type: byte[4]
name: disassemble_data
arguments: data_label: D477
type: byte[4]
name: disassemble_data
arguments: data_label: D50
type: f32
name: disassemble_data
arguments: data_label: D426
type: f32
name: disassemble_data
arguments: data_label: D326
type: byte[4]
name: disassemble_data
arguments: data_label: D163
type: byte[4]
name: disassemble_data
arguments: data_label: D410
type: f32
name: disassemble_data
arguments: data_label: D432
type: byte[4]
name: disassemble_data
arguments: data_label: D419
type: f32
name: disassemble_data
arguments: data_label: D429
type: byte[4]
name: disassemble_data
arguments: data_label: D6
type: f32
name: disassemble_data
arguments: data_label: D182
type: f32
name: disassemble_data
arguments: data_label: D95
type: f32
name: disassemble_data
arguments: data_label: D55
type: byte[4]
name: disassemble_data
arguments: data_label: D160
type: byte[4]
name: disassemble_data
arguments: data_label: D188
type: f32
name: disassemble_data
arguments: data_label: D238
type: f32
name: disassemble_data
arguments: data_label: D447
type: byte[4]
name: disassemble_data
arguments: data_label: D561
type: byte[4]
name: disassemble_data
arguments: data_label: D91
type: f32
name: disassemble_data
arguments: data_label: D430
type: f32
name: disassemble_data
arguments: data_label: D534
type: byte[4]
name: disassemble_data
arguments: data_label: D213
type: byte[4]
name: disassemble_data
arguments: data_label: D318
type: f32
name: disassemble_data
arguments: data_label: D599
type: f32
name: disassemble_data
arguments: data_label: D59
type: byte[4]
name: disassemble_data
arguments: data_label: D167
type: byte[4]
name: disassemble_data
arguments: data_label: D259
type: f32
name: disassemble_data
arguments: data_label: D383
type: f32
name: disassemble_data
arguments: data_label: D196
type: byte[4]
name: disassemble_data
arguments: data_label: D458
type: byte[4]
name: disassemble_data
arguments: data_label: D99
type: f32
name: disassemble_data
arguments: data_label: D481
type: byte[4]
name: disassemble_data
arguments: data_label: D124
type: f32
name: disassemble_data
arguments: data_label: D280
type: byte[4]
name: disassemble_data
arguments: data_label: D361
type: f32
name: disassemble_data
arguments: data_label: D441
type: byte[4]

tool: D172: 0.707107

tool: D47: 0.292893

tool: {"D215": [0x9f,0x76,0xf8,0xbd]}

tool: {"D337": [0x91,0xd5,0x4d,0xbd]}

tool: D323: 0.0208153

tool: D185: 0.00862197

tool: {"D528": [0x25,0x0d,0x6a,0xbb]}

tool: {"D313": [0x12,0xe5,0xc1,0xba]}

tool: D322: 0.000612745

tool: D26: 1

tool: D296: 0.5

tool: D288: 0.617317

tool: D543: 0.310754

tool: {"D113": [0x8a,0x7c,0xc2,0xbd]}

tool: {"D56": [0x33,0xda,0xaf,0xbd]}

tool: D398: 0.0529153

tool: D365: 0.0362437

tool: {"D513": [0x36,0xf1,0xc4,0xbc]}

tool: {"D289": [0x6c,0xe1,0x83,0xbc]}

tool: D309: 0.0107498

tool: D24: 0.00718418

tool: {"D444": [0xa7,0x49,0x9d,0xbb]}

tool: {"D477": [0x3c,0x32,0x52,0xbb]}

tool: D50: 0.00214306

tool: D426: 0.00143195

tool: {"D326": [0xc3,0xd1,0x7a,0xba]}

tool: {"D163": [0x81,0x97,0x27,0xba]}

tool: D410: 0.585786

tool: {"D432": [0x91,0xd5,0xcd,0xbd]}

tool: D419: 0.0172439

tool: {"D429": [0xe7,0xe4,0x41,0xbb]}

tool: D6: 0.000507614

tool: D182: 0.596797

tool: D95: 0.313287

tool: {"D55": [0xd9,0x82,0xa9,0xbd]}

tool: {"D160": [0xfd,0xd2,0xbc,0xbd]}

tool: D188: 0.0540288

tool: D238: 0.0436996

tool: {"D447": [0x87,0xd0,0xf7,0xbc]}

tool: {"D561": [0xaf,0xc5,0xb8,0xbc]}

tool: D91: 0.0162251

tool: D430: 0.0118738

tool: {"D534": [0x02,0x32,0x0d,0xbc]}

tool: {"D213": [0x70,0xc5,0xcd,0xbb]}

tool: D318: 0.00456713

tool: D599: 0.00332464

tool: {"D59": [0xc5,0x8a,0x1e,0xbb]}

tool: {"D167": [0x99,0xc3,0xe6,0xba]}

tool: D259: 0.00128128

tool: D383: 0.000932349

tool: {"D196": [0xf6,0xe6,0x31,0xba]}

tool: {"D458": [0x70,0x6a,0x01,0xba]}

tool: D99: 0.600481

tool: {"D481": [0x75,0x76,0x02,0xbe]}

tool: D124: 0.034138

tool: {"D280": [0x59,0xde,0x15,0xbc]}

tool: D361: 0.002451

tool: {"D441": [0x47,0x29,0x2c,0xba]}

assistant: ```c
void pyr_filters(float g[], short *ng, float h[], short *nh, short idegree) {
  switch (idegree) {
  case 0:
    *ng = 1;
    *nh = 1;
    break;
  case 1:
    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 = 9;
    h[0] = 1.;
    h[1] = 0.5;
    *nh = 2;
    break;
  case 2:
    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 = 16;
    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 = 10;
    break;
  case 3:
    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 = 20;
    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 = 12;
    break;
  default:
    *ng = 1;
    *nh = 1;
    break;
  }
}
```