user: 请从给定的汇编指令推导出C源代码:

```asm
<dwt_encode_97>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %edx,-0x30(%rbp)
  mov    %ecx,-0x34(%rbp)
  cmpl   $0x0,-0x34(%rbp)
  jne    L508
  cmpl   $0x0,-0x2c(%rbp)
  jg     L119
  cmpl   $0x1,-0x30(%rbp)
  jle    L886
L119:
  movl   $0x0,-0x14(%rbp)
  jmp    L872
L697:
  cmpl   $0x0,-0x14(%rbp)
  jns    L708
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  jmp    L355
L708:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L362
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L355
L362:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L355:
  cmpl   $0xffffffff,-0x14(%rbp)
  jge    L279
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  jmp    L818
L279:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x30(%rbp)
  jg     L757
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L818
L757:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L818:
  add    %edx,%eax
  mov    $0x32c1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L872:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L697
  movl   $0x0,-0x14(%rbp)
  jmp    L356
L525:
  cmpl   $0x0,-0x14(%rbp)
  jg     L541
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%edx
  jmp    L864
L541:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jle    L300
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L864
L300:
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L864:
  cmpl   $0x0,-0x14(%rbp)
  jns    L440
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L460
L440:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L276
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L460
L276:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L460:
  add    %edx,%eax
  mov    $0x1b2,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L356:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L525
  movl   $0x0,-0x14(%rbp)
  jmp    L893
L877:
  cmpl   $0x0,-0x14(%rbp)
  jns    L761
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  jmp    L573
L761:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L602
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L573
L602:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L573:
  cmpl   $0xffffffff,-0x14(%rbp)
  jge    L149
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  jmp    L571
L149:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x30(%rbp)
  jg     L905
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L571
L905:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L571:
  add    %edx,%eax
  mov    $0x1c41,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L893:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L877
  movl   $0x0,-0x14(%rbp)
  jmp    L249
L78:
  cmpl   $0x0,-0x14(%rbp)
  jg     L921
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%edx
  jmp    L26
L921:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jle    L659
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L26
L659:
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L26:
  cmpl   $0x0,-0x14(%rbp)
  jns    L781
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L360
L781:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L289
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L360
L289:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L360:
  add    %edx,%eax
  mov    $0xe31,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L249:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L78
  movl   $0x0,-0x14(%rbp)
  jmp    L649
L260:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0x14(%rbp),%edx
  add    %edx,%edx
  add    $0x1,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    $0x13ae,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,(%rbx)
  addl   $0x1,-0x14(%rbp)
L649:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L260
  movl   $0x0,-0x14(%rbp)
  jmp    L301
L550:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0x14(%rbp),%edx
  add    %edx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    $0x1a03,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,(%rbx)
  addl   $0x1,-0x14(%rbp)
L301:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L550
  jmp    L886
L508:
  cmpl   $0x0,-0x30(%rbp)
  jg     L879
  cmpl   $0x1,-0x2c(%rbp)
  jle    L886
L879:
  movl   $0x0,-0x14(%rbp)
  jmp    L79
L58:
  cmpl   $0x0,-0x14(%rbp)
  jns    L575
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%edx
  jmp    L581
L575:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L767
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L581
L767:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L581:
  cmpl   $0x0,-0x14(%rbp)
  jg     L157
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L677
L157:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jle    L217
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L677
L217:
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L677:
  add    %edx,%eax
  mov    $0x32c1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L79:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L58
  movl   $0x0,-0x14(%rbp)
  jmp    L710
L833:
  cmpl   $0x0,-0x14(%rbp)
  jns    L643
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  jmp    L148
L643:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L888
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L148
L888:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L148:
  cmpl   $0xffffffff,-0x14(%rbp)
  jge    L704
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  jmp    L699
L704:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x2c(%rbp)
  jg     L42
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L699
L42:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L699:
  add    %edx,%eax
  mov    $0x1b2,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  sub    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L710:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L833
  movl   $0x0,-0x14(%rbp)
  jmp    L313
L441:
  cmpl   $0x0,-0x14(%rbp)
  jns    L729
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%edx
  jmp    L899
L729:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L235
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L899
L235:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L899:
  cmpl   $0x0,-0x14(%rbp)
  jg     L122
  mov    -0x28(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L202
L122:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jle    L132
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L202
L132:
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L202:
  add    %edx,%eax
  mov    $0x1c41,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L313:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L441
  movl   $0x0,-0x14(%rbp)
  jmp    L632
L778:
  cmpl   $0x0,-0x14(%rbp)
  jns    L332
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  jmp    L779
L332:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L782
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  jmp    L779
L782:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
L779:
  cmpl   $0xffffffff,-0x14(%rbp)
  jge    L87
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  jmp    L175
L87:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x2c(%rbp)
  jg     L929
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  jmp    L175
L929:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
L175:
  add    %edx,%eax
  mov    $0xe31,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0x14(%rbp)
L632:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L778
  movl   $0x0,-0x14(%rbp)
  jmp    L532
L681:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0x14(%rbp),%edx
  add    %edx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    $0x13ae,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,(%rbx)
  addl   $0x1,-0x14(%rbp)
L532:
  mov    -0x14(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L681
  movl   $0x0,-0x14(%rbp)
  jmp    L423
L701:
  mov    -0x14(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0x14(%rbp),%edx
  add    %edx,%edx
  add    $0x1,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    $0x1a03,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fix_mul@plt>
  mov    %eax,(%rbx)
  addl   $0x1,-0x14(%rbp)
L423:
  mov    -0x14(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L701
L886:
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void dwt_encode_97(int *a, int dn, int sn, int cas) {
  int i;
  if (!cas) {
    if ((dn > 0) || (sn > 1)) {
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] -= fix_mul(((i) < 0 ? a[(0) * 2] : ((i) >= sn ? a[(sn - 1) * 2] : a[(i)*2])) + ((i + 1) < 0 ? a[(0) * 2] : ((i + 1) >= sn ? a[(sn - 1) * 2] : a[(i + 1) * 2])), 12993);
      }
      for (i = 0; i < sn; i++) {
        a[(i)*2] -= fix_mul(((i - 1) < 0 ? a[(1 + (0) * 2)] : ((i - 1) >= dn ? a[(1 + (dn - 1) * 2)] : a[(1 + (i - 1) * 2)])) + ((i) < 0 ? a[(1 + (0) * 2)] : ((i) >= dn ? a[(1 + (dn - 1) * 2)] : a[(1 + (i)*2)])), 434);
      }
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] += fix_mul(((i) < 0 ? a[(0) * 2] : ((i) >= sn ? a[(sn - 1) * 2] : a[(i)*2])) + ((i + 1) < 0 ? a[(0) * 2] : ((i + 1) >= sn ? a[(sn - 1) * 2] : a[(i + 1) * 2])), 7233);
      }
      for (i = 0; i < sn; i++) {
        a[(i)*2] += fix_mul(((i - 1) < 0 ? a[(1 + (0) * 2)] : ((i - 1) >= dn ? a[(1 + (dn - 1) * 2)] : a[(1 + (i - 1) * 2)])) + ((i) < 0 ? a[(1 + (0) * 2)] : ((i) >= dn ? a[(1 + (dn - 1) * 2)] : a[(1 + (i)*2)])), 3633);
      }
      for (i = 0; i < dn; i++) {
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 5038);
      }
      for (i = 0; i < sn; i++) {
        a[(i)*2] = fix_mul(a[(i)*2], 6659);
      }
    }
  } else {
    if ((sn > 0) || (dn > 1)) {
      for (i = 0; i < dn; i++) {
        a[(i)*2] -= fix_mul(((i) < 0 ? a[(1 + (0) * 2)] : ((i) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i)*2)])) + ((i - 1) < 0 ? a[(1 + (0) * 2)] : ((i - 1) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i - 1) * 2)])), 12993);
      }
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] -= fix_mul(((i) < 0 ? a[(0) * 2] : ((i) >= dn ? a[(dn - 1) * 2] : a[(i)*2])) + ((i + 1) < 0 ? a[(0) * 2] : ((i + 1) >= dn ? a[(dn - 1) * 2] : a[(i + 1) * 2])), 434);
      }
      for (i = 0; i < dn; i++) {
        a[(i)*2] += fix_mul(((i) < 0 ? a[(1 + (0) * 2)] : ((i) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i)*2)])) + ((i - 1) < 0 ? a[(1 + (0) * 2)] : ((i - 1) >= sn ? a[(1 + (sn - 1) * 2)] : a[(1 + (i - 1) * 2)])), 7233);
      }
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] += fix_mul(((i) < 0 ? a[(0) * 2] : ((i) >= dn ? a[(dn - 1) * 2] : a[(i)*2])) + ((i + 1) < 0 ? a[(0) * 2] : ((i + 1) >= dn ? a[(dn - 1) * 2] : a[(i + 1) * 2])), 3633);
      }
      for (i = 0; i < dn; i++) {
        a[(i)*2] = fix_mul(a[(i)*2], 5038);
      }
      for (i = 0; i < sn; i++) {
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 6659);
      }
    }
  }
}
```