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

```asm
<dwt_decode_97>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  sub    $0x18,%rsp
  mov    %esi,(%rsp)
  test   %ecx,%ecx
  jne    L184
  mov    %ecx,%ebx
  test   %esi,%esi
  jg     L898
  cmp    $0x1,%edx
  jle    L1250
L898:
  test   %ebp,%ebp
  jle    L677
  lea    -0x1(%rbp),%eax
  mov    %r12,%r13
  lea    0x8(%r12,%rax,8),%r14
  nopl   0x0(%rax)
L113:
  mov    0x0(%r13),%edi
  mov    $0x275e,%esi
  xor    %eax,%eax
  add    $0x8,%r13
  call   <fix_mul@plt>
  mov    %eax,-0x8(%r13)
  cmp    %r14,%r13
  jne    L113
  mov    (%rsp),%edx
  test   %edx,%edx
  jle    L245
L1217:
  mov    (%rsp),%eax
  lea    0x4(%r12),%r14
  sub    $0x1,%eax
  mov    %eax,0x8(%rsp)
  lea    0xc(%r12,%rax,8),%r13
  nopl   0x0(%rax)
L746:
  mov    (%r14),%edi
  mov    $0x3406,%esi
  xor    %eax,%eax
  add    $0x8,%r14
  call   <fix_mul@plt>
  mov    %eax,-0x8(%r14)
  cmp    %r13,%r14
  jne    L746
  test   %ebp,%ebp
  jle    L481
  mov    0x8(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  xor    %r15d,%r15d
  jmp    L112
  nopl   0x0(%rax,%rax,1)
L87:
  cmp    %r15d,(%rsp)
  jge    L97
  mov    0x0(%r13),%edi
L709:
  add    0x4(%r12,%r15,8),%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%r12,%r15,8)
  lea    0x1(%r15),%eax
  add    $0x1,%r15
  cmp    %r15d,%r14d
  jle    L254
L112:
  test   %r15,%r15
  jne    L87
  mov    0x4(%r12),%edi
  jmp    L709
L184:
  test   %edx,%edx
  jg     L56
  cmpl   $0x1,(%rsp)
  jg     L495
L1250:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L495:
  test   %edx,%edx
  jle    L215
L56:
  lea    -0x1(%rbp),%eax
  lea    0x4(%r12),%rbx
  lea    0xc(%r12,%rax,8),%r13
  nopl   0x0(%rax)
L345:
  mov    (%rbx),%edi
  mov    $0x275e,%esi
  xor    %eax,%eax
  add    $0x8,%rbx
  call   <fix_mul@plt>
  mov    %eax,-0x8(%rbx)
  cmp    %r13,%rbx
  jne    L345
L215:
  mov    (%rsp),%r8d
  test   %r8d,%r8d
  jle    L399
  mov    (%rsp),%eax
  mov    %r12,%rbx
  sub    $0x1,%eax
  mov    %eax,0x8(%rsp)
  lea    0x8(%r12,%rax,8),%r13
  nopl   0x0(%rax)
L884:
  mov    (%rbx),%edi
  mov    $0x3406,%esi
  xor    %eax,%eax
  add    $0x8,%rbx
  call   <fix_mul@plt>
  mov    %eax,-0x8(%rbx)
  cmp    %r13,%rbx
  jne    L884
  test   %ebp,%ebp
  jle    L923
  mov    0x8(%rsp),%eax
  mov    $0x1,%r15d
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  nopl   0x0(%rax,%rax,1)
L1229:
  mov    -0x8(%r12,%r15,8),%edi
  mov    %r15d,%ebx
  cmp    %r15d,(%rsp)
  jg     L267
  add    0x0(%r13),%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %r14d,%eax
  jl     L1229
  cmp    %ebp,%ebx
  jge    L620
L253:
  add    $0x1,%ebx
  movslq %ebx,%rbx
  xchg   %ax,%ax
L754:
  mov    0x0(%r13),%edi
  cmp    %ebx,(%rsp)
  jg     L27
  add    %edi,%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%rbx,8)
  add    $0x1,%rbx
  lea    -0x1(%rbx),%eax
  cmp    %eax,%ebp
  jg     L754
  mov    (%rsp),%edi
  test   %edi,%edi
  jle    L811
L620:
  lea    -0x1(%rbp),%eax
  mov    %eax,0xc(%rsp)
  lea    -0x1(%rbp,%rbp,1),%eax
  cltq
  lea    (%r12,%rax,4),%rbx
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r13d
  cmovle %ebp,%r13d
  xor    %r14d,%r14d
  jmp    L1260
  nopl   0x0(%rax,%rax,1)
L679:
  cmp    %r14d,%ebp
  jge    L211
  mov    (%rbx),%edi
L380:
  add    %eax,%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%r12,%r14,8)
  lea    0x1(%r14),%eax
  add    $0x1,%r14
  cmp    %r14d,%r13d
  jle    L1038
L1260:
  mov    0x4(%r12,%r14,8),%eax
  test   %r14,%r14
  jne    L679
  mov    0x4(%r12),%edi
  jmp    L380
  nop
L267:
  lea    (%r15,%r15,1),%eax
  mov    $0xe31,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,%r14d
  jg     L1229
  cmp    %ebp,%ebx
  jl     L253
  jmp    L620
  nopl   0x0(%rax)
L27:
  lea    (%rbx,%rbx,1),%eax
  mov    $0xe31,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%rbx,8)
  add    $0x1,%rbx
  lea    -0x1(%rbx),%eax
  cmp    %ebp,%eax
  jl     L754
  mov    (%rsp),%edi
  test   %edi,%edi
  jg     L620
  jmp    L811
  nopl   0x0(%rax)
L211:
  mov    -0x4(%r12,%r14,8),%edi
  jmp    L380
  nopw   0x0(%rax,%rax,1)
L97:
  mov    -0x4(%r12,%r15,8),%edi
  jmp    L709
  nopw   0x0(%rax,%rax,1)
L1038:
  cmp    %eax,(%rsp)
  jle    L865
L573:
  movslq %eax,%r13
  jmp    L583
  xchg   %ax,%ax
L777:
  mov    %edi,%eax
  cmp    %r13d,%ebp
  jl     L864
  lea    -0x1(%r13,%r13,1),%eax
  cltq
  mov    (%r12,%rax,4),%eax
L864:
  add    %eax,%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%r12,%r13,8)
  add    $0x1,%r13
  cmp    %r13d,(%rsp)
  jle    L1128
L583:
  mov    (%rbx),%edi
  test   %r13d,%r13d
  jne    L777
  mov    0x4(%r12),%eax
  jmp    L864
L254:
  cmp    %eax,%ebp
  jle    L451
L483:
  movslq %eax,%r14
  jmp    L372
  nopl   0x0(%rax)
L821:
  cmp    %r14d,(%rsp)
  jge    L309
  mov    0x0(%r13),%eax
  mov    %eax,%edi
L854:
  add    %eax,%edi
  mov    $0xe31,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,(%r12,%r14,8)
  add    $0x1,%r14
  cmp    %r14d,%ebp
  jle    L451
L372:
  test   %r14d,%r14d
  jne    L821
  mov    0x4(%r12),%edi
  mov    0x0(%r13),%eax
  jmp    L854
  nopl   0x0(%rax,%rax,1)
L451:
  mov    (%rsp),%r10d
  test   %r10d,%r10d
  jle    L850
  lea    -0x1(%rbp),%eax
  mov    $0x1,%r15d
  mov    %eax,0xc(%rsp)
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r14
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  cmovle %ebp,%eax
  mov    %eax,0x4(%rsp)
  xchg   %ax,%ax
L357:
  mov    -0x8(%r12,%r15,8),%edi
  mov    %r15d,%r13d
  cmp    %r15d,%ebp
  jg     L1216
  add    (%r14),%edi
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,0x4(%rsp)
  jg     L357
  cmp    (%rsp),%r13d
  jge    L706
L52:
  add    $0x1,%r13d
  movslq %r13d,%r13
  jmp    L362
  nopw   0x0(%rax,%rax,1)
L394:
  add    %edi,%edi
L352:
  mov    $0x1c41,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%r13,8)
  add    $0x1,%r13
  lea    -0x1(%r13),%eax
  cmp    %eax,(%rsp)
  jle    L706
L362:
  mov    (%r14),%edi
  cmp    %r13d,%ebp
  jle    L394
  lea    0x0(%r13,%r13,1),%eax
  cltq
  add    (%r12,%rax,4),%edi
  jmp    L352
  nopl   (%rax)
L706:
  test   %ebp,%ebp
  jle    L144
  mov    0x8(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  test   %eax,%eax
  jle    L1266
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  xor    %r15d,%r15d
  jmp    L779
  nop
L1212:
  cmp    %r15d,(%rsp)
  jge    L725
  mov    0x0(%r13),%edi
L833:
  add    0x4(%r12,%r15,8),%edi
  mov    $0x1b2,%esi
  lea    0x1(%r15),%ebx
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%r12,%r15,8)
  add    $0x1,%r15
  cmp    %r15d,%r14d
  jle    L46
L779:
  test   %r15,%r15
  jne    L1212
  mov    0x4(%r12),%edi
  jmp    L833
  nopl   0x0(%rax)
L1216:
  lea    (%r15,%r15,1),%eax
  mov    $0x1c41,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  sub    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    0x4(%rsp),%eax
  jl     L357
  cmp    (%rsp),%r13d
  jl     L52
  jmp    L706
  nopl   0x0(%rax)
L309:
  lea    -0x1(%r14,%r14,1),%eax
  cltq
  mov    (%r12,%rax,4),%edi
  mov    0x0(%r13),%eax
  jmp    L854
  nopl   0x0(%rax)
L725:
  mov    -0x4(%r12,%r15,8),%edi
  jmp    L833
  nopw   0x0(%rax,%rax,1)
L46:
  mov    0xc(%rsp),%eax
  cmp    %ebx,%ebp
  jle    L428
L1266:
  movslq %ebx,%rbx
  jmp    L1180
  nopl   (%rax)
L949:
  cmp    %ebx,(%rsp)
  jge    L601
  mov    0x0(%r13),%eax
  mov    %eax,%edi
L447:
  add    %eax,%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%r12,%rbx,8)
  add    $0x1,%rbx
  cmp    %ebx,%ebp
  jle    L1042
L1180:
  test   %ebx,%ebx
  jne    L949
  mov    0x4(%r12),%edi
  mov    0x0(%r13),%eax
  jmp    L447
  nopl   0x0(%rax)
L601:
  lea    -0x1(%rbx,%rbx,1),%eax
  cltq
  mov    (%r12,%rax,4),%edi
  mov    0x0(%r13),%eax
  jmp    L447
L1042:
  mov    (%rsp),%r9d
  test   %r9d,%r9d
  jle    L1250
  lea    -0x1(%rbp),%eax
  mov    %eax,0xc(%rsp)
L428:
  add    %eax,%eax
  mov    $0x1,%r15d
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  xchg   %ax,%ax
L818:
  mov    -0x8(%r12,%r15,8),%edi
  mov    %r15d,%ebx
  cmp    %r15d,%ebp
  jg     L1170
  add    0x0(%r13),%edi
  mov    $0x32c2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %r14d,%eax
  jl     L818
  cmp    (%rsp),%ebx
  jge    L1250
L618:
  add    $0x1,%ebx
  movslq %ebx,%rbx
  nopw   0x0(%rax,%rax,1)
L371:
  mov    0x0(%r13),%edi
  cmp    %ebx,%ebp
  jg     L1263
L1089:
  add    %edi,%edi
  mov    $0x32c2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%rbx,8)
  add    $0x1,%rbx
  lea    -0x1(%rbx),%eax
  cmp    (%rsp),%eax
  jge    L1250
  mov    0x0(%r13),%edi
  cmp    %ebx,%ebp
  jle    L1089
L1263:
  lea    (%rbx,%rbx,1),%eax
  mov    $0x32c2,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%rbx,8)
  add    $0x1,%rbx
  lea    -0x1(%rbx),%eax
  cmp    %eax,(%rsp)
  jg     L371
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L1170:
  lea    (%r15,%r15,1),%eax
  mov    $0x32c2,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,%r14d
  jg     L818
  cmp    (%rsp),%ebx
  jl     L618
  jmp    L1250
  nopw   0x0(%rax,%rax,1)
L1128:
  test   %ebp,%ebp
  jle    L1134
L563:
  mov    0x8(%rsp),%eax
  mov    $0x1,%r15d
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  cs nopw 0x0(%rax,%rax,1)
L744:
  mov    -0x8(%r12,%r15,8),%edi
  mov    %r15d,%ebx
  cmp    %r15d,(%rsp)
  jg     L183
  add    0x0(%r13),%edi
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %r14d,%eax
  jl     L744
L1208:
  cmp    %ebp,%ebx
  jge    L506
L62:
  add    $0x1,%ebx
  movslq %ebx,%rbx
  jmp    L110
  nopl   0x0(%rax)
L1003:
  add    %edi,%edi
L1222:
  mov    $0x1b2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%rbx,8)
  add    $0x1,%rbx
  lea    -0x1(%rbx),%eax
  cmp    %eax,%ebp
  jle    L506
L110:
  mov    0x0(%r13),%edi
  cmp    %ebx,(%rsp)
  jle    L1003
  lea    (%rbx,%rbx,1),%eax
  cltq
  add    (%r12,%rax,4),%edi
  jmp    L1222
  nopw   0x0(%rax,%rax,1)
L183:
  lea    (%r15,%r15,1),%eax
  mov    $0x1b2,%esi
  cltq
  add    (%r12,%rax,4),%edi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,-0x4(%r12,%r15,8)
  add    $0x1,%r15
  lea    -0x1(%r15),%eax
  cmp    %eax,%r14d
  jg     L744
  jmp    L1208
  cs nopw 0x0(%rax,%rax,1)
L506:
  mov    (%rsp),%esi
  test   %esi,%esi
  jle    L1250
  lea    -0x1(%rbp,%rbp,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  mov    (%rsp),%eax
  cmp    %eax,%ebp
  mov    %eax,%r14d
  cmovle %ebp,%r14d
  xor    %ebx,%ebx
  jmp    L455
  nopl   (%rax)
L1255:
  cmp    %ebx,%ebp
  jge    L708
  mov    0x0(%r13),%edi
L260:
  add    %eax,%edi
  mov    $0x32c2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%r12,%rbx,8)
  lea    0x1(%rbx),%eax
  add    $0x1,%rbx
  cmp    %ebx,%r14d
  jle    L576
L455:
  mov    0x4(%r12,%rbx,8),%eax
  test   %rbx,%rbx
  jne    L1255
  mov    0x4(%r12),%edi
  jmp    L260
  nop
L708:
  mov    -0x4(%r12,%rbx,8),%edi
  jmp    L260
  nopw   0x0(%rax,%rax,1)
L576:
  cmp    %eax,(%rsp)
  jle    L1250
L1193:
  movslq %eax,%rbx
  jmp    L988
  xchg   %ax,%ax
L469:
  mov    %eax,%edi
  cmp    %ebx,%ebp
  jl     L856
  lea    -0x1(%rbx,%rbx,1),%edx
  movslq %edx,%rdx
  mov    (%r12,%rdx,4),%edi
L856:
  add    %eax,%edi
  mov    $0x32c2,%esi
  xor    %eax,%eax
  call   <fix_mul@plt>
  add    %eax,(%r12,%rbx,8)
  add    $0x1,%rbx
  cmp    %ebx,(%rsp)
  jle    L1250
L988:
  mov    0x0(%r13),%eax
  test   %ebx,%ebx
  jne    L469
  mov    0x4(%r12),%edi
  jmp    L856
  nop
L865:
  test   %ebp,%ebp
  jg     L563
  nopl   0x0(%rax,%rax,1)
L280:
  mov    0xc(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  xor    %eax,%eax
  jmp    L1193
  nopw   0x0(%rax,%rax,1)
L811:
  test   %ebp,%ebp
  jle    L1250
  mov    0x8(%rsp),%eax
  xor    %ebx,%ebx
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r13
  jmp    L62
  nopl   0x0(%rax,%rax,1)
L245:
  mov    (%rsp),%eax
  lea    -0x1(%rax),%edx
  lea    -0x1(%rax,%rax,1),%eax
  cltq
  mov    %edx,0x8(%rsp)
  lea    (%r12,%rax,4),%r13
  xor    %eax,%eax
  jmp    L483
  nopl   0x0(%rax,%rax,1)
L850:
  test   %ebp,%ebp
  jle    L144
  mov    0x8(%rsp),%eax
  lea    0x1(%rax,%rax,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  jmp    L1266
  nopl   0x0(%rax,%rax,1)
L481:
  lea    -0x1(%rbp),%eax
  xor    %r13d,%r13d
  mov    %eax,0xc(%rsp)
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r14
  jmp    L52
L1134:
  mov    (%rsp),%eax
  test   %eax,%eax
  jg     L280
  jmp    L1250
  nop
L399:
  test   %ebp,%ebp
  jle    L1250
  mov    (%rsp),%eax
  xor    %ebx,%ebx
  sub    $0x1,%eax
  mov    %eax,0x8(%rsp)
  add    %eax,%eax
  cltq
  lea    (%r12,%rax,4),%r13
  jmp    L253
  nopl   0x0(%rax)
L677:
  mov    (%rsp),%r11d
  test   %r11d,%r11d
  jg     L1217
  jmp    L1250
L923:
  lea    -0x1(%rbp),%eax
  mov    %eax,0xc(%rsp)
  lea    -0x1(%rbp,%rbp,1),%eax
  cltq
  lea    (%r12,%rax,4),%rbx
  xor    %eax,%eax
  jmp    L573
  nopw   0x0(%rax,%rax,1)
L144:
  mov    (%rsp),%ecx
  test   %ecx,%ecx
  jle    L1250
  lea    -0x2(%rbp,%rbp,1),%eax
  cltq
  lea    (%r12,%rax,4),%r13
  jmp    L618
```

assistant: ```c
void dwt_decode_97(int *a, int dn, int sn, int cas) {
  int i;
  if (!cas) {
    if ((dn > 0) || (sn > 1)) {
      for (i = 0; i < sn; i++)
        a[(i)*2] = fix_mul(a[(i)*2], 10078);
      for (i = 0; i < dn; i++)
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 13318);
      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(((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)])), 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])), 12994);
    }
  } else {
    if ((sn > 0) || (dn > 1)) {
      for (i = 0; i < sn; i++)
        a[(1 + (i)*2)] = fix_mul(a[(1 + (i)*2)], 10078);
      for (i = 0; i < dn; i++)
        a[(i)*2] = fix_mul(a[(i)*2], 13318);
      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(((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])), 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)])), 12994);
    }
  }
}
```