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

```asm
<freduce_degree>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  add    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void freduce_degree(int64_t *output) {
  output[8] += output[18] << 4;
  output[8] += output[18] << 1;
  output[8] += output[18];
  output[7] += output[17] << 4;
  output[7] += output[17] << 1;
  output[7] += output[17];
  output[6] += output[16] << 4;
  output[6] += output[16] << 1;
  output[6] += output[16];
  output[5] += output[15] << 4;
  output[5] += output[15] << 1;
  output[5] += output[15];
  output[4] += output[14] << 4;
  output[4] += output[14] << 1;
  output[4] += output[14];
  output[3] += output[13] << 4;
  output[3] += output[13] << 1;
  output[3] += output[13];
  output[2] += output[12] << 4;
  output[2] += output[12] << 1;
  output[2] += output[12];
  output[1] += output[11] << 4;
  output[1] += output[11] << 1;
  output[1] += output[11];
  output[0] += output[10] << 4;
  output[0] += output[10] << 1;
  output[0] += output[10];
}
```