user: What is the c source code of the assembly code below?

```asm
<SKP_Silk_burg_modified>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1e0,%rsp
  mov    %rdi,-0x1b8(%rbp)
  mov    %rsi,-0x1c0(%rbp)
  mov    %rdx,-0x1c8(%rbp)
  mov    %rcx,-0x1d0(%rbp)
  mov    %r8d,-0x1d4(%rbp)
  mov    %r9d,-0x1d8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x1d8(%rbp),%eax
  imul   -0x1d4(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1d0(%rbp),%rdx
  lea    -0x1a8(%rbp),%rsi
  lea    -0x1a4(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <SKP_Silk_sum_sqr_shift@plt>
  mov    -0x1a8(%rbp),%eax
  cmp    $0x8,%eax
  jle    L100
  mov    -0x1a4(%rbp),%edx
  mov    -0x1a8(%rbp),%eax
  sub    $0x8,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x1a4(%rbp)
  movl   $0x8,-0x1a8(%rbp)
  jmp    L34
L100:
  mov    -0x1a4(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <SKP_Silk_CLZ32@plt>
  sub    $0x1,%eax
  mov    %eax,-0x180(%rbp)
  mov    $0x2,%eax
  sub    -0x180(%rbp),%eax
  mov    %eax,-0x194(%rbp)
  cmpl   $0x0,-0x194(%rbp)
  jle    L106
  mov    -0x1a8(%rbp),%eax
  mov    $0x8,%edx
  sub    %eax,%edx
  mov    -0x194(%rbp),%eax
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x194(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x194(%rbp),%eax
  mov    %eax,%ecx
  sar    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x1a4(%rbp)
  jmp    L16
L106:
  mov    -0x1a8(%rbp),%eax
  mov    $0xfffffff0,%edx
  sub    %eax,%edx
  mov    -0x194(%rbp),%eax
  cmp    %edx,%eax
  cmovl  %edx,%eax
  mov    %eax,-0x194(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x194(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x1a4(%rbp)
L16:
  mov    -0x1a8(%rbp),%edx
  mov    -0x194(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x1a8(%rbp)
L34:
  lea    -0x160(%rbp),%rax
  mov    $0x40,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x1a8(%rbp),%eax
  test   %eax,%eax
  jle    L170
  movl   $0x0,-0x198(%rbp)
  jmp    L126
L41:
  mov    -0x198(%rbp),%eax
  imul   -0x1d4(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x1d0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x168(%rbp)
  movl   $0x1,-0x19c(%rbp)
  jmp    L247
L61:
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x168(%rbp),%rax
  add    %rax,%rcx
  mov    -0x168(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <SKP_Silk_inner_prod16_aligned_64@plt>
  mov    %eax,%edx
  mov    -0x1a8(%rbp),%eax
  mov    %eax,%ecx
  sar    %cl,%edx
  mov    %edx,%ecx
  mov    -0x19c(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%edx
  mov    -0x19c(%rbp),%eax
  sub    $0x1,%eax
  add    %ecx,%edx
  cltq
  mov    %edx,-0x160(%rbp,%rax,4)
  addl   $0x1,-0x19c(%rbp)
L247:
  mov    0x18(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jge    L61
  addl   $0x1,-0x198(%rbp)
L126:
  mov    -0x198(%rbp),%eax
  cmp    -0x1d8(%rbp),%eax
  jl     L41
  jmp    L19
L170:
  movl   $0x0,-0x198(%rbp)
  jmp    L38
L183:
  mov    -0x198(%rbp),%eax
  imul   -0x1d4(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x1d0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x168(%rbp)
  movl   $0x1,-0x19c(%rbp)
  jmp    L142
L69:
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x168(%rbp),%rax
  add    %rax,%rcx
  mov    -0x168(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <SKP_Silk_inner_prod_aligned@plt>
  mov    -0x1a8(%rbp),%edx
  neg    %edx
  mov    %edx,%ecx
  shl    %cl,%eax
  mov    %eax,%ecx
  mov    -0x19c(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%edx
  mov    -0x19c(%rbp),%eax
  sub    $0x1,%eax
  add    %ecx,%edx
  cltq
  mov    %edx,-0x160(%rbp,%rax,4)
  addl   $0x1,-0x19c(%rbp)
L142:
  mov    0x18(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jge    L69
  addl   $0x1,-0x198(%rbp)
L38:
  mov    -0x198(%rbp),%eax
  cmp    -0x1d8(%rbp),%eax
  jl     L183
L19:
  mov    -0x160(%rbp),%rax
  mov    -0x158(%rbp),%rdx
  mov    %rax,-0x120(%rbp)
  mov    %rdx,-0x118(%rbp)
  mov    -0x150(%rbp),%rax
  mov    -0x148(%rbp),%rdx
  mov    %rax,-0x110(%rbp)
  mov    %rdx,-0x108(%rbp)
  mov    -0x140(%rbp),%rax
  mov    -0x138(%rbp),%rdx
  mov    %rax,-0x100(%rbp)
  mov    %rdx,-0xf8(%rbp)
  mov    -0x130(%rbp),%rax
  mov    -0x128(%rbp),%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  mov    0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1a4(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    -0x1a4(%rbp),%eax
  add    %edx,%eax
  add    $0x1,%eax
  mov    %eax,-0xa0(%rbp)
  mov    -0xa0(%rbp),%eax
  mov    %eax,-0x50(%rbp)
  movl   $0x0,-0x19c(%rbp)
  jmp    L26
L150:
  mov    -0x1a8(%rbp),%eax
  cmp    $0xffffffff,%eax
  jl     L48
  movl   $0x0,-0x198(%rbp)
  jmp    L73
L71:
  mov    -0x198(%rbp),%eax
  imul   -0x1d4(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x1d0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x168(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%ecx
  mov    $0x10,%eax
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  neg    %eax
  mov    %eax,-0x17c(%rbp)
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%ecx
  mov    $0x10,%eax
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  neg    %eax
  mov    %eax,-0x178(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  shl    $0x8,%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  shl    $0x8,%eax
  mov    %eax,-0x184(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L210
L392:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%ecx
  mov    -0x17c(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%esi
  imul   %eax,%esi
  mov    -0x17c(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdi
  mov    -0x168(%rbp),%rax
  add    %rdi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %esi,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x160(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x120(%rbp,%rax,4),%ecx
  mov    -0x178(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%esi
  mov    -0x1a0(%rbp),%eax
  add    %esi,%eax
  cltq
  lea    (%rax,%rax,1),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%esi
  imul   %eax,%esi
  mov    -0x178(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edi
  mov    -0x1a0(%rbp),%eax
  add    %edi,%eax
  cltq
  lea    (%rax,%rax,1),%rdi
  mov    -0x168(%rbp),%rax
  add    %rdi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %esi,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x120(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  mov    %eax,-0x170(%rbp)
  mov    -0x170(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x170(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %ecx,%eax
  add    %eax,-0x188(%rbp)
  mov    -0x170(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1a0(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x170(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%esi
  mov    -0x1a0(%rbp),%eax
  add    %esi,%eax
  cltq
  lea    (%rax,%rax,1),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %ecx,%eax
  add    %eax,-0x184(%rbp)
  addl   $0x1,-0x1a0(%rbp)
L210:
  mov    -0x1a0(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jl     L392
  mov    -0x188(%rbp),%eax
  neg    %eax
  mov    %eax,%edx
  mov    -0x1a8(%rbp),%ecx
  mov    $0x8,%eax
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x184(%rbp),%eax
  neg    %eax
  mov    %eax,%edx
  mov    -0x1a8(%rbp),%ecx
  mov    $0x8,%eax
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x184(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L64
L337:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%ecx
  mov    -0x188(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%esi
  imul   %eax,%esi
  mov    -0x188(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdi
  mov    -0x168(%rbp),%rax
  add    %rdi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %esi,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%ecx
  mov    -0x184(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%esi
  mov    -0x1a0(%rbp),%eax
  add    %esi,%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rsi
  mov    -0x168(%rbp),%rax
  add    %rsi,%rax
  movzwl (%rax),%eax
  cwtl
  mov    %edx,%esi
  imul   %eax,%esi
  mov    -0x184(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edi
  mov    -0x1a0(%rbp),%eax
  add    %edi,%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdi
  mov    -0x168(%rbp),%rax
  add    %rdi,%rax
  movzwl (%rax),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %esi,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x1a0(%rbp)
L64:
  mov    -0x1a0(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jle    L337
  addl   $0x1,-0x198(%rbp)
L73:
  mov    -0x198(%rbp),%eax
  cmp    -0x1d8(%rbp),%eax
  jl     L71
  jmp    L154
L48:
  movl   $0x0,-0x198(%rbp)
  jmp    L5
L365:
  mov    -0x198(%rbp),%eax
  imul   -0x1d4(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x1d0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x168(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  neg    %eax
  mov    %eax,-0x17c(%rbp)
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  neg    %eax
  mov    %eax,-0x178(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  shl    $0x11,%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  shl    $0x11,%eax
  mov    %eax,-0x184(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L163
L400:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  cwtl
  imul   -0x17c(%rbp),%eax
  add    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x160(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x120(%rbp,%rax,4),%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1a0(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  cwtl
  imul   -0x178(%rbp),%eax
  add    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x120(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  sar    $0x6,%eax
  add    $0x1,%eax
  sar    %eax
  mov    %eax,-0x174(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  imul   -0x174(%rbp),%eax
  add    %eax,-0x188(%rbp)
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  cwtl
  imul   -0x174(%rbp),%eax
  add    %eax,-0x184(%rbp)
  addl   $0x1,-0x1a0(%rbp)
L163:
  mov    -0x1a0(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jl     L400
  negl   -0x188(%rbp)
  negl   -0x184(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L39
L332:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%edi
  mov    -0x188(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%esi
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cwtl
  imul   %eax,%esi
  mov    %esi,%r8d
  mov    -0x188(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movswl %ax,%esi
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    %esi,%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %r8d,%eax
  lea    (%rdi,%rax,1),%esi
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  sar    $0xf,%eax
  add    $0x1,%eax
  sar    %eax
  imul   -0x188(%rbp),%eax
  lea    (%rsi,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,4)
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%edi
  mov    -0x184(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%esi
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  add    %edx,%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cwtl
  imul   %eax,%esi
  mov    %esi,%r8d
  mov    -0x184(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x1a0(%rbp),%eax
  add    %ecx,%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rcx
  mov    -0x168(%rbp),%rax
  add    %rcx,%rax
  movzwl (%rax),%eax
  movswl %ax,%esi
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    %esi,%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  add    %r8d,%eax
  lea    (%rdi,%rax,1),%esi
  mov    -0x1d4(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  add    %edx,%eax
  cltq
  add    %rax,%rax
  lea    -0x2(%rax),%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movswl %ax,%edx
  mov    -0x1a8(%rbp),%eax
  not    %eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  sar    $0xf,%eax
  add    $0x1,%eax
  sar    %eax
  imul   -0x184(%rbp),%eax
  lea    (%rsi,%rax,1),%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x1a0(%rbp)
L39:
  mov    -0x1a0(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jle    L332
  addl   $0x1,-0x198(%rbp)
L5:
  mov    -0x198(%rbp),%eax
  cmp    -0x1d8(%rbp),%eax
  jl     L365
L154:
  mov    -0x19c(%rbp),%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x19c(%rbp),%eax
  cltq
  mov    -0x120(%rbp,%rax,4),%eax
  mov    %eax,-0x184(%rbp)
  movl   $0x0,-0x190(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0xa0(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x18c(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L184
L122:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  mov    %eax,-0x170(%rbp)
  mov    -0x170(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <SKP_Silk_CLZ32@plt>
  sub    $0x1,%eax
  mov    %eax,-0x180(%rbp)
  mov    -0x180(%rbp),%eax
  mov    $0x8,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x180(%rbp)
  mov    -0x180(%rbp),%eax
  mov    -0x170(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  mov    %eax,-0x174(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    -0x120(%rbp,%rax,4),%eax
  movslq %eax,%rdx
  mov    -0x174(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    $0x8,%eax
  sub    -0x180(%rbp),%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  add    %eax,-0x188(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    -0x160(%rbp,%rax,4),%eax
  movslq %eax,%rdx
  mov    -0x174(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    $0x8,%eax
  sub    -0x180(%rbp),%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  add    %eax,-0x184(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%eax
  movslq %eax,%rdx
  mov    -0x174(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    $0x8,%eax
  sub    -0x180(%rbp),%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  add    %eax,-0x190(%rbp)
  mov    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%edx
  mov    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x174(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    $0x8,%eax
  sub    -0x180(%rbp),%eax
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  add    %eax,-0x18c(%rbp)
  addl   $0x1,-0x1a0(%rbp)
L184:
  mov    -0x1a0(%rbp),%eax
  cmp    -0x19c(%rbp),%eax
  jl     L122
  mov    -0x19c(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0x188(%rbp),%edx
  mov    %edx,-0xa0(%rbp,%rax,4)
  mov    -0x19c(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0x184(%rbp),%edx
  mov    %edx,-0x50(%rbp,%rax,4)
  mov    -0x184(%rbp),%eax
  add    %eax,-0x190(%rbp)
  mov    -0x190(%rbp),%eax
  neg    %eax
  add    %eax,%eax
  mov    %eax,-0x190(%rbp)
  mov    -0x190(%rbp),%eax
  mov    %eax,%edx
  neg    %edx
  cmovns %edx,%eax
  cmp    %eax,-0x18c(%rbp)
  jle    L251
  mov    -0x18c(%rbp),%ecx
  mov    -0x190(%rbp),%eax
  mov    $0x1f,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <SKP_DIV32_varQ@plt>
  mov    %eax,-0x16c(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L405
L251:
  mov    0x18(%rbp),%eax
  sub    -0x19c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  lea    -0xe0(%rbp),%rcx
  mov    -0x19c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rcx,%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  jmp    L367
L350:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  mov    %eax,-0x184(%rbp)
  mov    -0x184(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x16c(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  lea    (%rax,%rax,1),%edx
  mov    -0x188(%rbp),%eax
  add    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0xe0(%rbp,%rax,4)
  mov    -0x188(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x16c(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  lea    (%rax,%rax,1),%ecx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  sub    $0x1,%eax
  mov    -0x184(%rbp),%edx
  add    %ecx,%edx
  cltq
  mov    %edx,-0xe0(%rbp,%rax,4)
  addl   $0x1,-0x1a0(%rbp)
L405:
  mov    -0x19c(%rbp),%eax
  add    $0x1,%eax
  sar    %eax
  cmp    %eax,-0x1a0(%rbp)
  jl     L350
  mov    -0x16c(%rbp),%eax
  sar    $0x7,%eax
  mov    %eax,%edx
  mov    -0x19c(%rbp),%eax
  cltq
  mov    %edx,-0xe0(%rbp,%rax,4)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L241
L260:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%eax
  mov    %eax,-0x184(%rbp)
  mov    -0x184(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x16c(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  lea    (%rax,%rax,1),%edx
  mov    -0x188(%rbp),%eax
  add    %eax,%edx
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    %edx,-0xa0(%rbp,%rax,4)
  mov    -0x188(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x16c(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  lea    (%rax,%rax,1),%ecx
  mov    -0x19c(%rbp),%eax
  sub    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  mov    -0x184(%rbp),%edx
  add    %ecx,%edx
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x1a0(%rbp)
L241:
  mov    -0x19c(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x1a0(%rbp)
  jle    L260
  addl   $0x1,-0x19c(%rbp)
L26:
  mov    -0x19c(%rbp),%eax
  cmp    0x18(%rbp),%eax
  jl     L150
L367:
  mov    -0xa0(%rbp),%eax
  mov    %eax,-0x18c(%rbp)
  movl   $0x10000,-0x188(%rbp)
  movl   $0x0,-0x1a0(%rbp)
  jmp    L50
L13:
  mov    -0x1a0(%rbp),%eax
  cltq
  mov    -0xe0(%rbp,%rax,4),%eax
  sar    $0x7,%eax
  add    $0x1,%eax
  sar    %eax
  mov    %eax,-0x174(%rbp)
  mov    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x174(%rbp),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  movzwl %ax,%edx
  mov    -0x174(%rbp),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x18c(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  mov    -0x1a0(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    -0xa0(%rbp,%rax,4),%eax
  mov    -0x174(%rbp),%edx
  sar    $0xf,%edx
  add    $0x1,%edx
  sar    %edx
  imul   %edx,%eax
  add    %ecx,%eax
  mov    %eax,-0x18c(%rbp)
  mov    -0x174(%rbp),%eax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x174(%rbp),%eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x174(%rbp),%eax
  movzwl %ax,%edx
  mov    -0x174(%rbp),%eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x188(%rbp),%eax
  add    %eax,%edx
  mov    -0x174(%rbp),%eax
  sar    $0xf,%eax
  add    $0x1,%eax
  sar    %eax
  imul   -0x174(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x188(%rbp)
  mov    -0x1a0(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1c8(%rbp),%rax
  add    %rdx,%rax
  mov    -0x174(%rbp),%edx
  neg    %edx
  mov    %edx,(%rax)
  addl   $0x1,-0x1a0(%rbp)
L50:
  mov    -0x1a0(%rbp),%eax
  cmp    0x18(%rbp),%eax
  jl     L13
  mov    0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1a4(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  sar    $0x10,%eax
  mov    %eax,%edx
  mov    -0x188(%rbp),%eax
  neg    %eax
  cwtl
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1a4(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  movzwl %ax,%edx
  mov    -0x188(%rbp),%eax
  neg    %eax
  cwtl
  imul   %edx,%eax
  sar    $0x10,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x18c(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  mov    0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1a4(%rbp),%eax
  cltq
  imul   %rdx,%rax
  sar    $0x20,%rax
  mov    %eax,%edx
  mov    -0x188(%rbp),%eax
  neg    %eax
  sar    $0xf,%eax
  add    $0x1,%eax
  sar    %eax
  imul   %edx,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x1b8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1a8(%rbp),%eax
  neg    %eax
  mov    %eax,%edx
  mov    -0x1c0(%rbp),%rax
  mov    %edx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L409
  call   <__stack_chk_fail@plt>
L409:
  leave
  ret
```

assistant: ```c
void SKP_Silk_burg_modified(int *res_nrg, int *res_nrg_Q, int A_Q16[], const short x[], const int subfr_length, const int nb_subfr, const int WhiteNoiseFrac_Q32, const int D) {
  int k, n, s, lz, rshifts, rshifts_extra;
  int C0, num, nrg, rc_Q31, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2;
  const short *x_ptr;
  int C_first_row[16];
  int C_last_row[16];
  int Af_QA[16];
  int CAf[16 + 1];
  int CAb[16 + 1];
  ;
  ;
  SKP_Silk_sum_sqr_shift(&C0, &rshifts, x, nb_subfr * subfr_length);
  if (rshifts > (32 - 24)) {
    C0 = ((C0) << (rshifts - (32 - 24)));
    ;
    rshifts = (32 - 24);
  } else {
    lz = SKP_Silk_CLZ32(C0) - 1;
    rshifts_extra = 2 - lz;
    if (rshifts_extra > 0) {
      rshifts_extra = (((rshifts_extra) < ((32 - 24) - rshifts)) ? (rshifts_extra) : ((32 - 24) - rshifts));
      C0 = ((C0) >> (rshifts_extra));
    } else {
      rshifts_extra = (((rshifts_extra) > (-16 - rshifts)) ? (rshifts_extra) : (-16 - rshifts));
      C0 = ((C0) << (-rshifts_extra));
    }
    rshifts += rshifts_extra;
  }
  memset((C_first_row), (0), (16 * sizeof(int)));
  if (rshifts > 0) {
    for (s = 0; s < nb_subfr; s++) {
      x_ptr = x + s * subfr_length;
      for (n = 1; n < D + 1; n++) {
        C_first_row[n - 1] += (int)((SKP_Silk_inner_prod16_aligned_64(x_ptr, x_ptr + n, subfr_length - n)) >> (rshifts));
      }
    }
  } else {
    for (s = 0; s < nb_subfr; s++) {
      x_ptr = x + s * subfr_length;
      for (n = 1; n < D + 1; n++) {
        C_first_row[n - 1] += ((SKP_Silk_inner_prod_aligned(x_ptr, x_ptr + n, subfr_length - n)) << (-rshifts));
      }
    }
  }
  memcpy((C_last_row), (C_first_row), (16 * sizeof(int)));
  CAb[0] = CAf[0] = C0 + (int)((((long long)((WhiteNoiseFrac_Q32)) * ((C0)))) >> (32)) + 1;
  for (n = 0; n < D; n++) {
    if (rshifts > -2) {
      for (s = 0; s < nb_subfr; s++) {
        x_ptr = x + s * subfr_length;
        x1 = -(((int)x_ptr[n]) << (16 - rshifts));
        x2 = -(((int)x_ptr[subfr_length - n - 1]) << (16 - rshifts));
        tmp1 = (((int)x_ptr[n]) << (24 - 16));
        tmp2 = (((int)x_ptr[subfr_length - n - 1]) << (24 - 16));
        for (k = 0; k < n; k++) {
          C_first_row[k] = ((C_first_row[k]) + ((((x1) >> 16) * (int)((short)(x_ptr[n - k - 1]))) + ((((x1)&0x0000FFFF) * (int)((short)(x_ptr[n - k - 1]))) >> 16)));
          C_last_row[k] = ((C_last_row[k]) + ((((x2) >> 16) * (int)((short)(x_ptr[subfr_length - n + k]))) + ((((x2)&0x0000FFFF) * (int)((short)(x_ptr[subfr_length - n + k]))) >> 16)));
          Atmp_QA = Af_QA[k];
          tmp1 = ((tmp1) + ((((Atmp_QA) >> 16) * (int)((short)(x_ptr[n - k - 1]))) + ((((Atmp_QA)&0x0000FFFF) * (int)((short)(x_ptr[n - k - 1]))) >> 16)));
          tmp2 = ((tmp2) + ((((Atmp_QA) >> 16) * (int)((short)(x_ptr[subfr_length - n + k]))) + ((((Atmp_QA)&0x0000FFFF) * (int)((short)(x_ptr[subfr_length - n + k]))) >> 16)));
        }
        tmp1 = ((-tmp1) << (32 - 24 - rshifts));
        tmp2 = ((-tmp2) << (32 - 24 - rshifts));
        for (k = 0; k <= n; k++) {
          CAf[k] = ((CAf[k]) + ((((tmp1) >> 16) * (int)((short)(x_ptr[n - k]))) + ((((tmp1)&0x0000FFFF) * (int)((short)(x_ptr[n - k]))) >> 16)));
          CAb[k] = ((CAb[k]) + ((((tmp2) >> 16) * (int)((short)(x_ptr[subfr_length - n + k - 1]))) + ((((tmp2)&0x0000FFFF) * (int)((short)(x_ptr[subfr_length - n + k - 1]))) >> 16)));
        }
      }
    } else {
      for (s = 0; s < nb_subfr; s++) {
        x_ptr = x + s * subfr_length;
        x1 = -(((int)x_ptr[n]) << (-rshifts));
        x2 = -(((int)x_ptr[subfr_length - n - 1]) << (-rshifts));
        tmp1 = (((int)x_ptr[n]) << (17));
        tmp2 = (((int)x_ptr[subfr_length - n - 1]) << (17));
        for (k = 0; k < n; k++) {
          C_first_row[k] = (((C_first_row[k])) + (((x1) * (x_ptr[n - k - 1]))));
          C_last_row[k] = (((C_last_row[k])) + (((x2) * (x_ptr[subfr_length - n + k]))));
          Atmp1 = ((24 - 17) == 1 ? ((Af_QA[k]) >> 1) + ((Af_QA[k]) & 1) : (((Af_QA[k]) >> ((24 - 17) - 1)) + 1) >> 1);
          tmp1 = (((tmp1)) + (((x_ptr[n - k - 1]) * (Atmp1))));
          tmp2 = (((tmp2)) + (((x_ptr[subfr_length - n + k]) * (Atmp1))));
        }
        tmp1 = -tmp1;
        tmp2 = -tmp2;
        for (k = 0; k <= n; k++) {
          CAf[k] = ((((((CAf[k])) + (((((tmp1)) >> 16) * (int)((short)(((((int)x_ptr[n - k]) << (-rshifts - 1)))))) + (((((tmp1)) & 0x0000FFFF) * (int)((short)(((((int)x_ptr[n - k]) << (-rshifts - 1)))))) >> 16))))) + ((((tmp1)) * (((16) == 1 ? ((((((int)x_ptr[n - k]) << (-rshifts - 1)))) >> 1) + ((((((int)x_ptr[n - k]) << (-rshifts - 1)))) & 1) : (((((((int)x_ptr[n - k]) << (-rshifts - 1)))) >> ((16) - 1)) + 1) >> 1)))));
          CAb[k] = ((((((CAb[k])) + (((((tmp2)) >> 16) * (int)((short)(((((int)x_ptr[subfr_length - n + k - 1]) << (-rshifts - 1)))))) + (((((tmp2)) & 0x0000FFFF) * (int)((short)(((((int)x_ptr[subfr_length - n + k - 1]) << (-rshifts - 1)))))) >> 16))))) + ((((tmp2)) * (((16) == 1 ? ((((((int)x_ptr[subfr_length - n + k - 1]) << (-rshifts - 1)))) >> 1) + ((((((int)x_ptr[subfr_length - n + k - 1]) << (-rshifts - 1)))) & 1) : (((((((int)x_ptr[subfr_length - n + k - 1]) << (-rshifts - 1)))) >> ((16) - 1)) + 1) >> 1)))));
        }
      }
    }
    tmp1 = C_first_row[n];
    tmp2 = C_last_row[n];
    num = 0;
    nrg = ((CAb[0]) + (CAf[0]));
    for (k = 0; k < n; k++) {
      Atmp_QA = Af_QA[k];
      lz = SKP_Silk_CLZ32((((Atmp_QA) > 0) ? (Atmp_QA) : -(Atmp_QA))) - 1;
      lz = (((32 - 24) < (lz)) ? (32 - 24) : (lz));
      Atmp1 = ((Atmp_QA) << (lz));
      tmp1 = (((tmp1)) + (((((int)((((long long)((C_last_row[n - k - 1])) * ((Atmp1)))) >> (32)))) << ((32 - 24 - lz)))));
      tmp2 = (((tmp2)) + (((((int)((((long long)((C_first_row[n - k - 1])) * ((Atmp1)))) >> (32)))) << ((32 - 24 - lz)))));
      num = (((num)) + (((((int)((((long long)((CAb[n - k])) * ((Atmp1)))) >> (32)))) << ((32 - 24 - lz)))));
      nrg = (((nrg)) + (((((int)((((long long)((((CAb[k + 1]) + (CAf[k + 1])))) * ((Atmp1)))) >> (32)))) << ((32 - 24 - lz)))));
    }
    CAf[n + 1] = tmp1;
    CAb[n + 1] = tmp2;
    num = ((num) + (tmp2));
    num = ((-num) << (1));
    if ((((num) > 0) ? (num) : -(num)) < nrg) {
      rc_Q31 = SKP_DIV32_varQ(num, nrg, 31);
    } else {
      memset((&Af_QA[n]), (0), ((D - n) * sizeof(int)));
      ;
      break;
    }
    for (k = 0; k < (n + 1) >> 1; k++) {
      tmp1 = Af_QA[k];
      tmp2 = Af_QA[n - k - 1];
      Af_QA[k] = (((tmp1)) + (((((int)((((long long)((tmp2)) * ((rc_Q31)))) >> (32)))) << ((1)))));
      Af_QA[n - k - 1] = (((tmp2)) + (((((int)((((long long)((tmp1)) * ((rc_Q31)))) >> (32)))) << ((1)))));
    }
    Af_QA[n] = ((rc_Q31) >> (31 - 24));
    for (k = 0; k <= n + 1; k++) {
      tmp1 = CAf[k];
      tmp2 = CAb[n - k + 1];
      CAf[k] = (((tmp1)) + (((((int)((((long long)((tmp2)) * ((rc_Q31)))) >> (32)))) << ((1)))));
      CAb[n - k + 1] = (((tmp2)) + (((((int)((((long long)((tmp1)) * ((rc_Q31)))) >> (32)))) << ((1)))));
    }
  }
  nrg = CAf[0];
  tmp1 = 1 << 16;
  for (k = 0; k < D; k++) {
    Atmp1 = ((24 - 16) == 1 ? ((Af_QA[k]) >> 1) + ((Af_QA[k]) & 1) : (((Af_QA[k]) >> ((24 - 16) - 1)) + 1) >> 1);
    nrg = ((((((nrg)) + (((((CAf[k + 1])) >> 16) * (int)((short)((Atmp1)))) + (((((CAf[k + 1])) & 0x0000FFFF) * (int)((short)((Atmp1)))) >> 16))))) + ((((CAf[k + 1])) * (((16) == 1 ? (((Atmp1)) >> 1) + (((Atmp1)) & 1) : ((((Atmp1)) >> ((16) - 1)) + 1) >> 1)))));
    tmp1 = ((((((tmp1)) + (((((Atmp1)) >> 16) * (int)((short)((Atmp1)))) + (((((Atmp1)) & 0x0000FFFF) * (int)((short)((Atmp1)))) >> 16))))) + ((((Atmp1)) * (((16) == 1 ? (((Atmp1)) >> 1) + (((Atmp1)) & 1) : ((((Atmp1)) >> ((16) - 1)) + 1) >> 1)))));
    A_Q16[k] = -Atmp1;
  }
  *res_nrg = ((((((nrg)) + ((((((int)((((long long)((WhiteNoiseFrac_Q32)) * ((C0)))) >> (32)))) >> 16) * (int)((short)((-tmp1)))) + ((((((int)((((long long)((WhiteNoiseFrac_Q32)) * ((C0)))) >> (32)))) & 0x0000FFFF) * (int)((short)((-tmp1)))) >> 16))))) + (((((int)((((long long)((WhiteNoiseFrac_Q32)) * ((C0)))) >> (32)))) * (((16) == 1 ? (((-tmp1)) >> 1) + (((-tmp1)) & 1) : ((((-tmp1)) >> ((16) - 1)) + 1) >> 1)))));
  *res_nrg_Q = -rshifts;
}
```