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

```asm
<pyr_filters>:
  endbr64
  cmp    $0x2,%r8w
  je     L43
  jg     L66
  test   %r8w,%r8w
  je     L36
  cmp    $0x1,%r8w
  jne    L57
  movl   $0x3f3504f7,(%rdi)
  movl   $0x3e95f612,0x4(%rdi)
  movl   $0xbdf8769f,0x8(%rdi)
  movl   $0xbd4dd591,0xc(%rdi)
  movl   $0x3caa84d9,0x10(%rdi)
  movl   $0x3c0d432a,0x14(%rdi)
  movl   $0xbb6a0d25,0x18(%rdi)
  movl   $0xbac1e512,0x1c(%rdi)
  movl   $0x3a20a09f,0x20(%rdi)
  movw   $0x9,(%rsi)
  movl   $0x3f800000,(%rdx)
  movl   $0x3f000000,0x4(%rdx)
  mov    $0x2,%eax
  jmp    L59
L66:
  cmp    $0x3,%r8w
  jne    L57
  movl   $0x3f18c7b0,(%rdi)
  movl   $0x3ea06727,0x4(%rdi)
  movl   $0xbda982d9,0x8(%rdi)
  movl   $0xbdbcd2fd,0xc(%rdi)
  movl   $0x3d5d4d4e,0x10(%rdi)
  movl   $0x3d32fe5a,0x14(%rdi)
  movl   $0xbcf7d087,0x18(%rdi)
  movl   $0xbcb8c5af,0x1c(%rdi)
  movl   $0x3c84ea80,0x20(%rdi)
  movl   $0x3c428a54,0x24(%rdi)
  movl   $0xbc0d3202,0x28(%rdi)
  movl   $0xbbcdc570,0x2c(%rdi)
  movl   $0x3b95a7dd,0x30(%rdi)
  movl   $0x3b59e234,0x34(%rdi)
  movl   $0xbb1e8ac5,0x38(%rdi)
  movl   $0xbae6c399,0x3c(%rdi)
  movl   $0x3aa7f09f,0x40(%rdi)
  movl   $0x3a7468e2,0x44(%rdi)
  movl   $0xba31e6f6,0x48(%rdi)
  movl   $0xba016a70,0x4c(%rdi)
  movw   $0x14,(%rsi)
  movl   $0x3f800000,(%rdx)
  movl   $0x3f19b91f,0x4(%rdx)
  movl   $0x0,0x8(%rdx)
  movl   $0xbe027675,0xc(%rdx)
  movl   $0x0,0x10(%rdx)
  movl   $0x3d0bd44a,0x14(%rdx)
  movl   $0x0,0x18(%rdx)
  movl   $0xbc15de59,0x1c(%rdx)
  movl   $0x0,0x20(%rdx)
  movl   $0x3b20a0f5,0x24(%rdx)
  movl   $0x0,0x28(%rdx)
  movl   $0xba2c2947,0x2c(%rdx)
  mov    $0xc,%eax
  jmp    L59
L36:
  movw   $0x1,(%rsi)
  mov    $0x1,%eax
L59:
  mov    %ax,(%rcx)
  ret
L43:
  movl   $0x3f1e087d,(%rdi)
  movl   $0x3e9f1b26,0x4(%rdi)
  movl   $0xbdc27c8a,0x8(%rdi)
  movl   $0xbdafda33,0xc(%rdi)
  movl   $0x3d58bdb7,0x10(%rdi)
  movl   $0x3d147446,0x14(%rdi)
  movl   $0xbcc4f136,0x18(%rdi)
  movl   $0xbc83e16c,0x1c(%rdi)
  movl   $0x3c301fee,0x20(%rdi)
  movl   $0x3beb6945,0x24(%rdi)
  movl   $0xbb9d49a7,0x28(%rdi)
  movl   $0xbb52323c,0x2c(%rdi)
  movl   $0x3b0c7295,0x30(%rdi)
  movl   $0x3abbb045,0x34(%rdi)
  movl   $0xba7ad1c3,0x38(%rdi)
  movl   $0xba279781,0x3c(%rdi)
  movw   $0x10,(%rsi)
  movl   $0x3f800000,(%rdx)
  movl   $0x3f15f612,0x4(%rdx)
  movl   $0x0,0x8(%rdx)
  movl   $0xbdcdd591,0xc(%rdx)
  movl   $0x0,0x10(%rdx)
  movl   $0x3c8d4314,0x14(%rdx)
  movl   $0x0,0x18(%rdx)
  movl   $0xbb41e4e7,0x1c(%rdx)
  movl   $0x0,0x20(%rdx)
  movl   $0x3a051166,0x24(%rdx)
  mov    $0xa,%eax
  jmp    L59
L57:
  movw   $0x1,(%rsi)
  mov    $0x1,%eax
  jmp    L59
```

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;
  }
}
```