user: 这段汇编代码用C语言表示是什么样的?

```asm
<SKP_Silk_schur>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0xd8,%rsp
  mov    %rdi,-0xc8(%rbp)
  mov    %rsi,-0xd0(%rbp)
  mov    %edx,-0xd4(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  mov    -0xd0(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <SKP_Silk_CLZ32@plt>
  mov    %eax,-0xb0(%rbp)
  cmpl   $0x1,-0xb0(%rbp)
  jg     L79
  movl   $0x0,-0xb8(%rbp)
  jmp    L91
L16:
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xd0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0x9c(%rbp,%rax,8)
  mov    -0xb8(%rbp),%eax
  cltq
  mov    -0x9c(%rbp,%rax,8),%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,8)
  addl   $0x1,-0xb8(%rbp)
L91:
  mov    -0xd4(%rbp),%eax
  cmp    -0xb8(%rbp),%eax
  jge    L16
  jmp    L30
L79:
  cmpl   $0x2,-0xb0(%rbp)
  jle    L68
  subl   $0x2,-0xb0(%rbp)
  movl   $0x0,-0xb8(%rbp)
  jmp    L85
L87:
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xd0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xb0(%rbp),%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0x9c(%rbp,%rax,8)
  mov    -0xb8(%rbp),%eax
  cltq
  mov    -0x9c(%rbp,%rax,8),%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,8)
  addl   $0x1,-0xb8(%rbp)
L85:
  mov    -0xd4(%rbp),%eax
  cmp    -0xb8(%rbp),%eax
  jge    L87
  jmp    L30
L68:
  movl   $0x0,-0xb8(%rbp)
  jmp    L113
L118:
  mov    -0xb8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xd0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0x9c(%rbp,%rax,8)
  mov    -0xb8(%rbp),%eax
  cltq
  mov    -0x9c(%rbp,%rax,8),%edx
  mov    -0xb8(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,8)
  addl   $0x1,-0xb8(%rbp)
L113:
  mov    -0xd4(%rbp),%eax
  cmp    -0xb8(%rbp),%eax
  jge    L118
L30:
  movl   $0x0,-0xb8(%rbp)
  jmp    L44
L6:
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,8),%ebx
  mov    -0x9c(%rbp),%eax
  sar    $0xf,%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <SKP_max_32@plt>
  mov    %eax,%esi
  mov    %ebx,%eax
  cltd
  idiv   %esi
  neg    %eax
  mov    %eax,-0xac(%rbp)
  cmpl   $0x7fff,-0xac(%rbp)
  jg     L125
  mov    -0xac(%rbp),%eax
  mov    $0xffff8000,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  jmp    L156
L125:
  mov    $0x7fff,%eax
L156:
  mov    %eax,-0xac(%rbp)
  mov    -0xb8(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    -0xac(%rbp),%edx
  mov    %dx,(%rax)
  movl   $0x0,-0xb4(%rbp)
  jmp    L127
L166:
  mov    -0xb4(%rbp),%edx
  mov    -0xb8(%rbp),%eax
  add    %edx,%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,8),%eax
  mov    %eax,-0xa8(%rbp)
  mov    -0xb4(%rbp),%eax
  cltq
  mov    -0x9c(%rbp,%rax,8),%eax
  mov    %eax,-0xa4(%rbp)
  mov    -0xa4(%rbp),%eax
  add    %eax,%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0xac(%rbp),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0xa4(%rbp),%eax
  add    %eax,%eax
  movzwl %ax,%edx
  mov    -0xac(%rbp),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %eax,%ecx
  mov    -0xb4(%rbp),%edx
  mov    -0xb8(%rbp),%eax
  add    %edx,%eax
  add    $0x1,%eax
  mov    -0xa8(%rbp),%edx
  add    %ecx,%edx
  cltq
  mov    %edx,-0xa0(%rbp,%rax,8)
  mov    -0xa8(%rbp),%eax
  add    %eax,%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0xac(%rbp),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0xa8(%rbp),%eax
  add    %eax,%eax
  movzwl %ax,%edx
  mov    -0xac(%rbp),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0xa4(%rbp),%eax
  add    %eax,%edx
  mov    -0xb4(%rbp),%eax
  cltq
  mov    %edx,-0x9c(%rbp,%rax,8)
  addl   $0x1,-0xb4(%rbp)
L127:
  mov    -0xd4(%rbp),%eax
  sub    -0xb8(%rbp),%eax
  cmp    %eax,-0xb4(%rbp)
  jl     L166
  addl   $0x1,-0xb8(%rbp)
L44:
  mov    -0xb8(%rbp),%eax
  cmp    -0xd4(%rbp),%eax
  jl     L6
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L137
  call   <__stack_chk_fail@plt>
L137:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void SKP_Silk_schur(short *rc_Q15, const int *c, const int order) {
  int k, n, lz;
  int C[16 + 1][2];
  int Ctmp1, Ctmp2, rc_tmp_Q15;
  lz = SKP_Silk_CLZ32(c[0]);
  if (lz < 2) {
    for (k = 0; k < order + 1; k++) {
      C[k][0] = C[k][1] = ((c[k]) >> (1));
    }
  } else if (lz > 2) {
    lz -= 2;
    for (k = 0; k < order + 1; k++) {
      C[k][0] = C[k][1] = ((c[k]) << (lz));
    }
  } else {
    for (k = 0; k < order + 1; k++) {
      C[k][0] = C[k][1] = c[k];
    }
  }
  for (k = 0; k < order; k++) {
    rc_tmp_Q15 = -((int)((C[k + 1][0]) / (SKP_max_32(((C[0][1]) >> (15)), 1))));
    rc_tmp_Q15 = ((rc_tmp_Q15) > 0x7FFF ? 0x7FFF : ((rc_tmp_Q15) < ((short)0x8000) ? ((short)0x8000) : (rc_tmp_Q15)));
    rc_Q15[k] = (short)rc_tmp_Q15;
    for (n = 0; n < order - k; n++) {
      Ctmp1 = C[n + k + 1][0];
      Ctmp2 = C[n][1];
      C[n + k + 1][0] = ((Ctmp1) + ((((((Ctmp2) << (1))) >> 16) * (int)((short)(rc_tmp_Q15))) + ((((((Ctmp2) << (1))) & 0x0000FFFF) * (int)((short)(rc_tmp_Q15))) >> 16)));
      C[n][1] = ((Ctmp2) + ((((((Ctmp1) << (1))) >> 16) * (int)((short)(rc_tmp_Q15))) + ((((((Ctmp1) << (1))) & 0x0000FFFF) * (int)((short)(rc_tmp_Q15))) >> 16)));
    }
  }
}
```