user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<dwt_encode_97>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %esi,%ebp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x18,%rsp
  mov    %edx,0x4(%rsp)
  test   %ecx,%ecx
  jne    L166
  mov    %ecx,%r12d
  test   %esi,%esi
  jg     L916
  cmp    $0x1,%edx
  jle    L1031
  test   %esi,%esi
  jle    L523
L916:
  mov    0x4(%rsp),%ecx
  lea    -0x1(%rcx),%eax
  mov    %eax,0xc(%rsp)
  add    %eax,%eax
  cltq
  lea    (%rbx,%rax,4),%r14
  test   %ecx,%ecx
  jle    L1177
  cmp    %ebp,%ecx
  mov    $0x1,%r15d
  cmovg  %ebp,%ecx
  mov    %ecx,0x8(%rsp)
  jmp    L396
  nopw   0x0(%rax,%rax,1)
L1199:
  add    (%r14),%edi
L413:
  mov    $0x32c1,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,0x8(%rsp)
  jle    L1158
L396:
  mov    -0x8(%rbx,%r15,8),%edi
  mov    %r15d,%r13d
  cmp    %r15d,0x4(%rsp)
  jle    L1199
  lea    (%r15,%r15,1),%eax
  cltq
  add    (%rbx,%rax,4),%edi
  jmp    L413
L166:
  mov    0x4(%rsp),%r10d
  test   %r10d,%r10d
  jg     L693
  cmp    $0x1,%esi
  jg     L693
L1031:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  xchg   %ax,%ax
L693:
  test   %ebp,%ebp
  jle    L906
  mov    0x4(%rsp),%edx
  lea    -0x1(%rdx),%eax
  mov    %eax,0xc(%rsp)
  lea    -0x1(%rdx,%rdx,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r12
  test   %edx,%edx
  jle    L382
  cmp    %ebp,%edx
  cmovg  %ebp,%edx
  xor    %r14d,%r14d
  mov    %edx,%r13d
  jmp    L655
  nopw   0x0(%rax,%rax,1)
L61:
  cmp    %r14d,0x4(%rsp)
  jge    L850
  mov    (%r12),%edi
L26:
  add    %eax,%edi
  mov    $0x32c1,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%rbx,%r14,8)
  lea    0x1(%r14),%eax
  add    $0x1,%r14
  cmp    %r14d,%r13d
  jle    L932
L655:
  mov    0x4(%rbx,%r14,8),%eax
  test   %r14,%r14
  jne    L61
  mov    0x4(%rbx),%edi
  jmp    L26
  nopl   0x0(%rax)
L850:
  mov    -0x4(%rbx,%r14,8),%edi
  jmp    L26
  nop
L1177:
  xor    %r13d,%r13d
L901:
  add    $0x1,%r13d
  movslq %r13d,%r13
  jmp    L133
  nopl   0x0(%rax)
L52:
  add    %edi,%edi
L662:
  mov    $0x32c1,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r13,8)
  add    $0x1,%r13
  lea    -0x1(%r13),%eax
  cmp    %eax,%ebp
  jle    L132
L133:
  mov    (%r14),%edi
  cmp    %r13d,0x4(%rsp)
  jle    L52
  lea    0x0(%r13,%r13,1),%eax
  cltq
  add    (%rbx,%rax,4),%edi
  jmp    L662
  nopl   0x0(%rax)
L932:
  cmp    %eax,%ebp
  jle    L86
L650:
  movslq %eax,%r13
  jmp    L506
  nopl   0x0(%rax)
L1204:
  mov    %edi,%eax
  cmp    %r13d,0x4(%rsp)
  jl     L1156
  lea    -0x1(%r13,%r13,1),%eax
  cltq
  mov    (%rbx,%rax,4),%eax
L1156:
  add    %eax,%edi
  mov    $0x32c1,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%rbx,%r13,8)
  add    $0x1,%r13
  cmp    %r13d,%ebp
  jle    L512
L506:
  mov    (%r12),%edi
  test   %r13d,%r13d
  jne    L1204
  mov    0x4(%rbx),%eax
  jmp    L1156
  nopl   0x0(%rax)
L512:
  mov    0x4(%rsp),%r9d
  test   %r9d,%r9d
  jle    L206
L86:
  lea    -0x1(%rbp),%eax
  mov    $0x1,%r14d
  mov    %eax,0x8(%rsp)
  add    %eax,%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  mov    0x4(%rsp),%eax
  cmp    %ebp,%eax
  mov    %eax,%r15d
  cmovg  %ebp,%r15d
L948:
  mov    -0x8(%rbx,%r14,8),%edi
  mov    %r14d,%r12d
  cmp    %r14d,%ebp
  jg     L979
  add    0x0(%r13),%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r14,8)
  add    $0x1,%r14
  lea    -0x1(%r14),%eax
  cmp    %r15d,%eax
  jl     L948
  mov    0xc(%rsp),%eax
  cmp    0x4(%rsp),%r12d
  jge    L159
L977:
  add    $0x1,%r12d
  movslq %r12d,%r12
  nopl   (%rax)
L193:
  mov    0x0(%r13),%edi
  cmp    %r12d,%ebp
  jg     L1183
  add    %edi,%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r12,8)
  add    $0x1,%r12
  lea    -0x1(%r12),%eax
  cmp    %eax,0x4(%rsp)
  jg     L193
L186:
  test   %ebp,%ebp
  jle    L1207
  mov    0x4(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0xc(%rsp)
L159:
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r12
  mov    0x4(%rsp),%eax
  cmp    %ebp,%eax
  mov    %eax,%r13d
  cmovg  %ebp,%r13d
  xor    %r15d,%r15d
  jmp    L766
  cs nopw 0x0(%rax,%rax,1)
L422:
  cmp    %r15d,0x4(%rsp)
  jge    L303
  mov    (%r12),%edi
L849:
  add    %eax,%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%rbx,%r15,8)
  lea    0x1(%r15),%eax
  add    $0x1,%r15
  cmp    %r15d,%r13d
  jle    L699
L766:
  mov    0x4(%rbx,%r15,8),%eax
  test   %r15,%r15
  jne    L422
  mov    0x4(%rbx),%edi
  jmp    L849
  nopl   0x0(%rax)
L979:
  lea    (%r14,%r14,1),%eax
  mov    $0x1b2,%esi
  cltq
  add    (%rbx,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r14,8)
  add    $0x1,%r14
  lea    -0x1(%r14),%eax
  cmp    %eax,%r15d
  jg     L948
  mov    0xc(%rsp),%eax
  cmp    0x4(%rsp),%r12d
  jl     L977
  jmp    L159
  nopw   0x0(%rax,%rax,1)
L1183:
  lea    (%r12,%r12,1),%eax
  mov    $0x1b2,%esi
  cltq
  add    (%rbx,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%rbx,%r12,8)
  add    $0x1,%r12
  lea    -0x1(%r12),%eax
  cmp    0x4(%rsp),%eax
  jl     L193
  jmp    L186
  nopw   0x0(%rax,%rax,1)
L303:
  mov    -0x4(%rbx,%r15,8),%edi
  jmp    L849
  nopw   0x0(%rax,%rax,1)
L699:
  cmp    %eax,%ebp
  jle    L212
L907:
  movslq %eax,%r13
  jmp    L235
  nopl   (%rax)
L1072:
  mov    %edi,%eax
  cmp    %r13d,0x4(%rsp)
  jl     L991
  lea    -0x1(%r13,%r13,1),%eax
  cltq
  mov    (%rbx,%rax,4),%eax
L991:
  add    %eax,%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%rbx,%r13,8)
  add    $0x1,%r13
  cmp    %r13d,%ebp
  jle    L213
L235:
  mov    (%r12),%edi
  test   %r13d,%r13d
  jne    L1072
  mov    0x4(%rbx),%eax
  jmp    L991
  nopl   0x0(%rax,%rax,1)
L382:
  xor    %eax,%eax
  jmp    L650
  nopw   0x0(%rax,%rax,1)
L1158:
  cmp    %ebp,%r13d
  jl     L901
L943:
  lea    -0x1(%rbp),%eax
  mov    %eax,0x8(%rsp)
  lea    -0x1(%rbp,%rbp,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  mov    0x4(%rsp),%eax
  cmp    %ebp,%eax
  mov    %eax,%r15d
  cmovg  %ebp,%r15d
  xor    %r14d,%r14d
  jmp    L1247
  nopl   0x0(%rax)
L474:
  cmp    %r14d,%ebp
  jge    L727
  mov    0x0(%r13),%edi
L442:
  add    0x4(%rbx,%r14,8),%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%rbx,%r14,8)
  lea    0x1(%r14),%eax
  add    $0x1,%r14
  cmp    %r14d,%r15d
  jle    L88
L1247:
  test   %r14,%r14
  jne    L474
  mov    0x4(%rbx),%edi
  jmp    L442
  nopl   (%rax)
L727:
  mov    -0x4(%rbx,%r14,8),%edi
  jmp    L442
  nop
L88:
  cmp    %eax,0x4(%rsp)
  jle    L1001
L196:
  movslq %eax,%r15
  jmp    L516
  nopl   0x0(%rax,%rax,1)
L326:
  cmp    %r15d,%ebp
  jge    L306
  mov    0x0(%r13),%eax
  mov    %eax,%edi
L1287:
  add    %eax,%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%rbx,%r15,8)
  add    $0x1,%r15
  cmp    %r15d,0x4(%rsp)
  jle    L1001
L516:
  test   %r15d,%r15d
  jne    L326
  mov    0x4(%rbx),%edi
  mov    0x0(%r13),%eax
  jmp    L1287
  nopw   0x0(%rax,%rax,1)
L1001:
  test   %ebp,%ebp
  jle    L77
  mov    0x4(%rsp),%ecx
  mov    $0x1,%r15d
  cmp    %ebp,%ecx
  lea    -0x2(%rcx,%rcx,1),%eax
  cmovg  %ebp,%ecx
  cltq
  lea    (%rbx,%rax,4),%r14
  mov    %ecx,0x8(%rsp)
  nopl   (%rax)
L258:
  mov    -0x8(%rbx,%r15,8),%edi
  mov    %r15d,%r13d
  cmp    %r15d,0x4(%rsp)
  jg     L19
  add    (%r14),%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,0x8(%rsp)
  jg     L258
  cmp    %ebp,%r13d
  jge    L998
L368:
  add    $0x1,%r13d
  movslq %r13d,%r13
  jmp    L711
  nopl   0x0(%rax,%rax,1)
L362:
  add    %edi,%edi
L581:
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r13,8)
  add    $0x1,%r13
  lea    -0x1(%r13),%eax
  cmp    %eax,%ebp
  jle    L998
L711:
  mov    (%r14),%edi
  cmp    %r13d,0x4(%rsp)
  jle    L362
  lea    0x0(%r13,%r13,1),%eax
  cltq
  add    (%rbx,%rax,4),%edi
  jmp    L581
  nopl   (%rax)
L998:
  mov    0x4(%rsp),%r13d
  test   %r13d,%r13d
  jle    L97
  lea    -0x1(%rbp),%eax
  mov    %eax,0x8(%rsp)
  lea    -0x1(%rbp,%rbp,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  test   %ebp,%ebp
  jle    L503
  mov    0x4(%rsp),%eax
  cmp    %ebp,%eax
  mov    %eax,%r15d
  cmovg  %ebp,%r15d
  xor    %r14d,%r14d
  jmp    L33
  nopl   0x0(%rax)
L58:
  cmp    %r14d,%ebp
  jge    L123
  mov    0x0(%r13),%edi
L896:
  add    0x4(%rbx,%r14,8),%edi
  mov    $0xe31,%esi
  lea    0x1(%r14),%r12d
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%rbx,%r14,8)
  add    $0x1,%r14
  cmp    %r14d,%r15d
  jle    L497
L33:
  test   %r14,%r14
  jne    L58
  mov    0x4(%rbx),%edi
  jmp    L896
  nopl   0x0(%rax)
L19:
  lea    (%r15,%r15,1),%eax
  mov    $0x1c41,%esi
  cltq
  add    (%rbx,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    0x8(%rsp),%eax
  jl     L258
  cmp    %ebp,%r13d
  jl     L368
  jmp    L998
  nopw   0x0(%rax,%rax,1)
L306:
  lea    -0x1(%r15,%r15,1),%eax
  cltq
  mov    (%rbx,%rax,4),%edi
  mov    0x0(%r13),%eax
  jmp    L1287
  nopl   0x0(%rax,%rax,1)
L123:
  mov    -0x4(%rbx,%r14,8),%edi
  jmp    L896
  nopw   0x0(%rax,%rax,1)
L497:
  cmp    %r12d,0x4(%rsp)
  jle    L805
L503:
  movslq %r12d,%r12
  jmp    L612
  nopl   0x0(%rax)
L211:
  cmp    %ebp,%r12d
  jle    L593
  mov    0x0(%r13),%eax
  mov    %eax,%edi
L772:
  add    %eax,%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%rbx,%r12,8)
  add    $0x1,%r12
  cmp    %r12d,0x4(%rsp)
  jle    L481
L612:
  test   %r12d,%r12d
  jne    L211
  mov    0x4(%rbx),%edi
  mov    0x0(%r13),%eax
  jmp    L772
  cs nopw 0x0(%rax,%rax,1)
L593:
  lea    -0x1(%r12,%r12,1),%eax
  cltq
  mov    (%rbx,%rax,4),%edi
  mov    0x0(%r13),%eax
  jmp    L772
L481:
  test   %ebp,%ebp
  jle    L1235
L805:
  mov    0x8(%rsp),%r14d
  lea    0x4(%rbx),%rbp
  lea    0xc(%rbx,%r14,8),%r12
  nopw   0x0(%rax,%rax,1)
L863:
  mov    0x0(%rbp),%edi
  mov    $0x13ae,%esi
  xor    %eax,%eax
  add    $0x8,%rbp
  call   <fix_mul@plt>
  mov    %eax,-0x8(%rbp)
  cmp    %r12,%rbp
  jne    L863
  mov    0x4(%rsp),%r11d
  test   %r11d,%r11d
  jle    L1031
L1235:
  mov    0x4(%rsp),%eax
  mov    %rbx,%rbp
  sub    $0x1,%eax
  lea    0x8(%rbx,%rax,8),%rbx
L278:
  mov    0x0(%rbp),%edi
  mov    $0x1a03,%esi
  xor    %eax,%eax
  add    $0x8,%rbp
  call   <fix_mul@plt>
  mov    %eax,-0x8(%rbp)
  cmp    %rbp,%rbx
  jne    L278
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L213:
  mov    0x4(%rsp),%r8d
  lea    -0x1(%rbp),%eax
  mov    %eax,0x8(%rsp)
  test   %r8d,%r8d
  jle    L735
L937:
  mov    0x8(%rsp),%r14d
  mov    0x4(%rsp),%eax
  mov    $0x1,%r15d
  add    %r14d,%r14d
  cmp    %ebp,%eax
  movslq %r14d,%r14
  lea    (%rbx,%r14,4),%r13
  mov    %eax,%r14d
  cmovg  %ebp,%r14d
  nopw   0x0(%rax,%rax,1)
L495:
  mov    -0x8(%rbx,%r15,8),%edi
  mov    %r15d,%r12d
  cmp    %r15d,%ebp
  jg     L75
  add    0x0(%r13),%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %r14d,%eax
  jl     L495
L1168:
  cmp    0x4(%rsp),%r12d
  jge    L874
L275:
  add    $0x1,%r12d
  movslq %r12d,%r12
  nopl   0x0(%rax)
L472:
  mov    0x0(%r13),%edi
  cmp    %r12d,%ebp
  jg     L91
  add    %edi,%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r12,8)
  add    $0x1,%r12
  lea    -0x1(%r12),%eax
  cmp    %eax,0x4(%rsp)
  jg     L472
L874:
  test   %ebp,%ebp
  jle    L177
L848:
  xor    %r12d,%r12d
  xchg   %ax,%ax
L201:
  mov    (%rbx,%r12,8),%edi
  mov    $0x13ae,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  mov    %eax,(%rbx,%r12,8)
  add    $0x1,%r12
  cmp    %r12d,%ebp
  jg     L201
  mov    0x4(%rsp),%edi
  test   %edi,%edi
  jle    L1031
L177:
  xor    %ebp,%ebp
  nopl   0x0(%rax,%rax,1)
L427:
  mov    0x4(%rbx,%rbp,8),%edi
  mov    $0x1a03,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  mov    %eax,0x4(%rbx,%rbp,8)
  add    $0x1,%rbp
  cmp    %ebp,0x4(%rsp)
  jg     L427
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L91:
  lea    (%r12,%r12,1),%eax
  mov    $0xe31,%esi
  cltq
  add    (%rbx,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r12,8)
  add    $0x1,%r12
  lea    -0x1(%r12),%eax
  cmp    0x4(%rsp),%eax
  jl     L472
  jmp    L874
  nopw   0x0(%rax,%rax,1)
L75:
  lea    (%r15,%r15,1),%eax
  mov    $0xe31,%esi
  cltq
  add    (%rbx,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%rbx,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,%r14d
  jg     L495
  jmp    L1168
  nopl   0x0(%rax,%rax,1)
L132:
  mov    0x4(%rsp),%r14d
  test   %r14d,%r14d
  jg     L943
  mov    0xc(%rsp),%eax
  xor    %r13d,%r13d
  add    %eax,%eax
  cltq
  lea    (%rbx,%rax,4),%r14
  jmp    L368
  nopw   0x0(%rax,%rax,1)
L212:
  mov    0x4(%rsp),%eax
  test   %eax,%eax
  jg     L937
  jmp    L848
  nopl   0x0(%rax)
L523:
  test   %edx,%edx
  jle    L97
  lea    -0x1(%rsi),%eax
  mov    %eax,0x8(%rsp)
  lea    -0x1(%rsi,%rsi,1),%eax
  cltq
  lea    (%rdi,%rax,4),%r13
  xor    %eax,%eax
  jmp    L196
L206:
  mov    0xc(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r12
  xor    %eax,%eax
  jmp    L907
  nopl   (%rax)
L77:
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  jle    L97
  mov    0x8(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  jmp    L503
L1207:
  mov    0x4(%rsp),%esi
  test   %esi,%esi
  jle    L1031
  mov    0x8(%rsp),%eax
  xor    %r12d,%r12d
  add    %eax,%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  jmp    L275
  nopl   0x0(%rax,%rax,1)
L906:
  mov    0x4(%rsp),%ecx
  test   %ecx,%ecx
  jle    L1031
  lea    -0x1(%rbp),%eax
  xor    %r12d,%r12d
  mov    %eax,0x8(%rsp)
  add    %eax,%eax
  cltq
  lea    (%rbx,%rax,4),%r13
  jmp    L977
  nopl   0x0(%rax,%rax,1)
L97:
  lea    -0x1(%rbp),%eax
  mov    %eax,0x8(%rsp)
  test   %ebp,%ebp
  jg     L805
  jmp    L1031
L735:
  test   %ebp,%ebp
  jg     L848
  jmp    L1031
```

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