user: Translate the below assembly code into C programming language:

```asm
<pyr_filters>:
  endbr64
  cmp    $0x2,%r8w
  je     L8
  cmp    $0x3,%r8w
  je     L1
  cmp    $0x1,%r8w
  je     L26
  mov    $0x1,%r9d
  mov    $0x1,%eax
  mov    %r9w,(%rsi)
  mov    %ax,(%rcx)
  ret
  nopl   0x0(%rax)
L8:
  movabs $0x3e9f1b263f1e087d,%rax
  mov    %rax,(%rdi)
  movabs $0xbdafda33bdc27c8a,%rax
  mov    %rax,0x8(%rdi)
  movabs $0x3d1474463d58bdb7,%rax
  mov    %rax,0x10(%rdi)
  movabs $0xbc83e16cbcc4f136,%rax
  mov    %rax,0x18(%rdi)
  movabs $0x3beb69453c301fee,%rax
  mov    %rax,0x20(%rdi)
  movabs $0xbb52323cbb9d49a7,%rax
  mov    %rax,0x28(%rdi)
  movabs $0x3abbb0453b0c7295,%rax
  mov    %rax,0x30(%rdi)
  movabs $0xba279781ba7ad1c3,%rax
  mov    %rax,0x38(%rdi)
  mov    $0x10,%edi
  movabs $0x3f15f6123f800000,%rax
  mov    %di,(%rsi)
  mov    %rax,(%rdx)
  movabs $0xbdcdd59100000000,%rax
  mov    %rax,0x8(%rdx)
  movabs $0x3c8d431400000000,%rax
  mov    %rax,0x10(%rdx)
  movabs $0xbb41e4e700000000,%rax
  mov    %rax,0x18(%rdx)
  movabs $0x3a05116600000000,%rax
  mov    %rax,0x20(%rdx)
  mov    $0xa,%eax
  mov    %ax,(%rcx)
  ret
  nopl   (%rax)
L26:
  movabs $0x3e95f6123f3504f7,%rax
  mov    $0x9,%r8d
  movl   $0x3a20a09f,0x20(%rdi)
  mov    %rax,(%rdi)
  movabs $0xbd4dd591bdf8769f,%rax
  mov    %rax,0x8(%rdi)
  movabs $0x3c0d432a3caa84d9,%rax
  mov    %rax,0x10(%rdi)
  movabs $0xbac1e512bb6a0d25,%rax
  mov    %rax,0x18(%rdi)
  movabs $0x3f0000003f800000,%rax
  mov    %r8w,(%rsi)
  mov    %rax,(%rdx)
  mov    $0x2,%eax
  mov    %ax,(%rcx)
  ret
  xchg   %ax,%ax
L1:
  movabs $0x3ea067273f18c7b0,%rax
  mov    %rax,(%rdi)
  movabs $0xbdbcd2fdbda982d9,%rax
  mov    %rax,0x8(%rdi)
  movabs $0x3d32fe5a3d5d4d4e,%rax
  mov    %rax,0x10(%rdi)
  movabs $0xbcb8c5afbcf7d087,%rax
  mov    %rax,0x18(%rdi)
  movabs $0x3c428a543c84ea80,%rax
  mov    %rax,0x20(%rdi)
  movabs $0xbbcdc570bc0d3202,%rax
  mov    %rax,0x28(%rdi)
  movabs $0x3b59e2343b95a7dd,%rax
  mov    %rax,0x30(%rdi)
  movabs $0xbae6c399bb1e8ac5,%rax
  mov    %rax,0x38(%rdi)
  movabs $0x3a7468e23aa7f09f,%rax
  mov    %rax,0x40(%rdi)
  movabs $0xba016a70ba31e6f6,%rax
  mov    %rax,0x48(%rdi)
  mov    $0x14,%eax
  mov    %ax,(%rsi)
  movabs $0x3f19b91f3f800000,%rax
  mov    %rax,(%rdx)
  movabs $0xbe02767500000000,%rax
  mov    %rax,0x8(%rdx)
  movabs $0x3d0bd44a00000000,%rax
  mov    %rax,0x10(%rdx)
  movabs $0xbc15de5900000000,%rax
  mov    %rax,0x18(%rdx)
  movabs $0x3b20a0f500000000,%rax
  mov    %rax,0x20(%rdx)
  movabs $0xba2c294700000000,%rax
  mov    %rax,0x28(%rdx)
  mov    $0xc,%eax
  mov    %ax,(%rcx)
  ret
```

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