user: Translate the below assembly code into C programming language:

```asm
<synth_1to1_486>:
  endbr64
  push   %r15
  lea    D15(%rip),%rax
  push   %r14
  push   %r13
  push   %r12
  movslq %esi,%r12
  push   %rbp
  lea    (%rdx,%r12,2),%rbp
  push   %rbx
  movslq %ecx,%rbx
  mov    %r12,%rcx
  shl    $0x4,%rcx
  add    %r12,%rcx
  sub    $0x28,%rsp
  shl    $0xa,%rcx
  mov    (%rax,%r12,4),%r15d
  lea    D33(%rip),%rax
  mov    %ebx,0x14(%rsp)
  add    %rax,%rcx
  test   %ebx,%ebx
  jle    L265
  shl    $0x7,%rbx
  mov    %rdi,%r13
  mov    %r15d,%r14d
  lea    (%rdi,%rbx,1),%rax
  mov    %rax,(%rsp)
  lea    0x2204(%rcx),%rax
  mov    %rax,0x18(%rsp)
  jmp    L57
L170:
  movslq %r14d,%rax
  shl    $0x2,%rax
  lea    0x2200(%rax),%rdx
  test   $0x1,%r14b
  je     L193
  lea    (%rcx,%rax,1),%rsi
  lea    (%rcx,%rdx,1),%rdi
L178:
  mov    %r13,%rdx
  xor    %eax,%eax
  mov    %rcx,0x8(%rsp)
  sub    $0xffffffffffffff80,%r13
  call   <dct64_486@plt>
  mov    0x8(%rsp),%rcx
  cmp    (%rsp),%r13
  je     L183
L57:
  add    $0x1,%r14d
  cmp    $0x7f,%r14d
  jle    L170
  mov    0x18(%rsp),%rsi
  lea    0x6604(%rcx),%rdi
L227:
  lea    -0x2200(%rsi),%rax
  nopw   0x0(%rax,%rax,1)
L115:
  mov    0x1c0(%rax),%edx
  add    $0x200,%rax
  mov    %edx,-0x200(%rax)
  mov    -0x3c(%rax),%edx
  mov    %edx,-0x1fc(%rax)
  mov    -0x38(%rax),%edx
  mov    %edx,-0x1f8(%rax)
  mov    -0x34(%rax),%edx
  mov    %edx,-0x1f4(%rax)
  mov    -0x30(%rax),%edx
  mov    %edx,-0x1f0(%rax)
  mov    -0x2c(%rax),%edx
  mov    %edx,-0x1ec(%rax)
  mov    -0x28(%rax),%edx
  mov    %edx,-0x1e8(%rax)
  mov    -0x24(%rax),%edx
  mov    %edx,-0x1e4(%rax)
  mov    -0x20(%rax),%edx
  mov    %edx,-0x1e0(%rax)
  mov    -0x1c(%rax),%edx
  mov    %edx,-0x1dc(%rax)
  mov    -0x18(%rax),%edx
  mov    %edx,-0x1d8(%rax)
  mov    -0x14(%rax),%edx
  mov    %edx,-0x1d4(%rax)
  mov    -0x10(%rax),%edx
  mov    %edx,-0x1d0(%rax)
  mov    -0xc(%rax),%edx
  mov    %edx,-0x1cc(%rax)
  mov    -0x8(%rax),%edx
  mov    %edx,-0x1c8(%rax)
  cmp    %rsi,%rax
  jne    L115
  lea    0x2200(%rax),%rsi
  cmp    %rdi,%rsi
  jne    L227
  lea    D15(%rip),%rax
  mov    $0x2240,%edx
  mov    $0x10,%r14d
  movl   $0x10,(%rax,%r12,4)
  mov    $0x40,%eax
L193:
  lea    (%rcx,%rdx,1),%rsi
  lea    (%rcx,%rax,1),%rdi
  jmp    L178
L265:
  add    $0x28,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L183:
  lea    D15(%rip),%rax
  lea    0x0(%rbp,%rbx,1),%rsi
  mov    %r15d,%edi
  mov    %r14d,(%rax,%r12,4)
  jmp    L67
L225:
  test   $0x1,%dl
  je     L89
  movslq %edx,%rax
  mov    %edx,%edi
  lea    -0x3c(%rcx,%rax,4),%rax
L42:
  mov    (%rax),%r9d
  imul   $0x35,0x4(%rax),%edx
  lea    0x0(,%r9,8),%r11d
  sub    %r11d,%r9d
  add    %r9d,%edx
  imul   $0xffffff8e,0x8(%rax),%r9d
  add    %r9d,%edx
  imul   $0x1fd,0xc(%rax),%r9d
  add    %r9d,%edx
  imul   $0xfffffaf8,0x10(%rax),%r9d
  add    %r9d,%edx
  imul   $0x66b,0x14(%rax),%r9d
  add    %r9d,%edx
  imul   $0xffffdb64,0x18(%rax),%r9d
  add    %r9d,%edx
  imul   $0x4947,0x1c(%rax),%r9d
  add    %r9d,%edx
  imul   $0x249c,0x20(%rax),%r9d
  add    %r9d,%edx
  imul   $0x66b,0x24(%rax),%r9d
  add    %r9d,%edx
  imul   $0x508,0x28(%rax),%r9d
  add    %r9d,%edx
  imul   $0x1fd,0x2c(%rax),%r9d
  add    %r9d,%edx
  imul   $0x72,0x30(%rax),%r9d
  add    %r9d,%edx
  imul   $0x35,0x34(%rax),%r9d
  add    %r9d,%edx
  mov    0x38(%rax),%r9d
  lea    (%rdx,%r9,8),%edx
  sub    %r9d,%edx
  mov    $0x7fff,%r9d
  add    $0x2000,%edx
  sar    $0xe,%edx
  cmp    %r9d,%edx
  cmovg  %r9d,%edx
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edx
  cmovl  %r9d,%edx
  mov    %dx,0x0(%rbp)
  mov    0x200(%rax),%edx
  lea    0x0(,%rdx,4),%r9d
  sub    %r9d,%edx
  mov    0x204(%rax),%r9d
  imul   $0x34,%r9d,%r11d
  lea    (%r11,%rdx,2),%r12d
  mov    0x208(%rax),%edx
  imul   $0xffffff9c,%edx,%r11d
  imul   $0x36,%edx,%edx
  add    %r12d,%r11d
  lea    0x0(,%r9,8),%r12d
  sub    %r12d,%r9d
  add    %edx,%r9d
  mov    0x20c(%rax),%edx
  imul   $0x203,%edx,%r12d
  imul   $0xffffff7f,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x210(%rax),%edx
  imul   $0xfffffb53,%edx,%r11d
  imul   $0x1f4,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x214(%rax),%edx
  imul   $0x6f7,%edx,%r12d
  imul   $0xfffffa9d,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x218(%rax),%edx
  imul   $0xffffdd32,%edx,%r11d
  imul   $0x5d1,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x21c(%rax),%edx
  imul   $0x493c,%edx,%r12d
  imul   $0xffffd996,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x220(%rax),%edx
  imul   $0x266a,%edx,%r11d
  imul   $0x493c,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x224(%rax),%edx
  imul   $0x5d1,%edx,%r12d
  add    %r11d,%r12d
  imul   $0x22ce,%edx,%edx
  add    %edx,%r9d
  mov    0x228(%rax),%edx
  imul   $0x563,%edx,%r11d
  imul   $0x6f7,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x22c(%rax),%edx
  imul   $0x1f4,%edx,%r12d
  imul   $0x4ad,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x230(%rax),%edx
  mov    %edx,%r11d
  shl    $0x7,%r11d
  add    %edx,%r11d
  imul   $0x203,%edx,%edx
  add    %r12d,%r11d
  add    %r9d,%edx
  mov    0x234(%rax),%r9d
  imul   $0x36,%r9d,%r12d
  imul   $0x64,%r9d,%r9d
  add    %r12d,%r11d
  mov    0x238(%rax),%r12d
  add    %r9d,%edx
  imul   $0x34,%r12d,%r9d
  add    %r9d,%edx
  lea    0x0(,%r12,8),%r9d
  sub    %r12d,%r9d
  lea    0x2000(%r11,%r9,1),%r9d
  mov    0x23c(%rax),%r11d
  sar    $0xe,%r9d
  lea    (%r11,%r11,2),%r11d
  lea    0x2000(%rdx,%r11,2),%edx
  mov    $0x7fff,%r11d
  cmp    %r11d,%r9d
  cmovg  %r11d,%r9d
  mov    $0xffff8000,%r11d
  cmp    %r11d,%r9d
  cmovl  %r11d,%r9d
  sar    $0xe,%edx
  mov    %r9w,0x4(%rbp)
  mov    $0x7fff,%r9d
  cmp    %r9d,%edx
  cmovg  %r9d,%edx
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edx
  cmovl  %r9d,%edx
  mov    %dx,0x7c(%rbp)
  mov    0x400(%rax),%edx
  lea    0x0(,%rdx,4),%r9d
  sub    %r9d,%edx
  mov    0x404(%rax),%r9d
  imul   $0x32,%r9d,%r11d
  neg    %r9d
  lea    (%r11,%rdx,2),%r11d
  mov    0x408(%rax),%edx
  imul   $0xffffffaa,%edx,%r12d
  imul   $0x37,%edx,%edx
  add    %r11d,%r12d
  lea    (%rdx,%r9,8),%r9d
  mov    0x40c(%rax),%edx
  imul   $0x208,%edx,%r11d
  imul   $0xffffff6f,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x410(%rax),%edx
  imul   $0xfffffbae,%edx,%r12d
  imul   $0x1e8,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x414(%rax),%edx
  imul   $0x776,%edx,%r11d
  imul   $0xfffffa43,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x418(%rax),%edx
  imul   $0xffffdf01,%edx,%r12d
  imul   $0x52a,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x41c(%rax),%edx
  imul   $0x491a,%edx,%r11d
  imul   $0xffffd7ca,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x420(%rax),%edx
  imul   $0x2836,%edx,%r12d
  imul   $0x491a,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x424(%rax),%edx
  imul   $0x52a,%edx,%r11d
  add    %r12d,%r11d
  imul   $0x20ff,%edx,%edx
  add    %edx,%r9d
  mov    0x428(%rax),%edx
  imul   $0x5bd,%edx,%r12d
  imul   $0x776,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x42c(%rax),%edx
  imul   $0x1e8,%edx,%r11d
  imul   $0x452,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x430(%rax),%edx
  imul   $0x91,%edx,%r12d
  imul   $0x208,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x434(%rax),%edx
  imul   $0x37,%edx,%r11d
  imul   $0x56,%edx,%edx
  add    %r12d,%r11d
  mov    0x438(%rax),%r12d
  add    %r9d,%edx
  imul   $0x32,%r12d,%r9d
  add    %r9d,%edx
  lea    0x2000(%r11,%r12,8),%r9d
  mov    0x43c(%rax),%r11d
  sar    $0xe,%r9d
  lea    (%r11,%r11,2),%r11d
  lea    0x2000(%rdx,%r11,2),%edx
  mov    $0x7fff,%r11d
  cmp    %r11d,%r9d
  cmovg  %r11d,%r9d
  mov    $0xffff8000,%r11d
  cmp    %r11d,%r9d
  cmovl  %r11d,%r9d
  sar    $0xe,%edx
  mov    0x604(%rax),%r11d
  mov    %r9w,0x8(%rbp)
  mov    $0x7fff,%r9d
  cmp    %r9d,%edx
  cmovg  %r9d,%edx
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edx
  cmovl  %r9d,%edx
  imul   $0x31,%r11d,%r9d
  mov    %dx,0x78(%rbp)
  mov    0x600(%rax),%edx
  lea    (%rdx,%rdx,4),%edx
  sub    %edx,%r9d
  mov    0x608(%rax),%edx
  imul   $0xffffffb7,%edx,%r12d
  add    %r9d,%r12d
  imul   $0x38,%edx,%r9d
  lea    (%r11,%r11,8),%edx
  sub    %edx,%r9d
  mov    0x60c(%rax),%edx
  imul   $0x209,%edx,%r11d
  imul   $0xffffff5f,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x610(%rax),%edx
  imul   $0xfffffc09,%edx,%r12d
  imul   $0x1d9,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x614(%rax),%edx
  imul   $0x7e7,%edx,%r11d
  imul   $0xfffff9e9,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x618(%rax),%edx
  imul   $0xffffe0ce,%edx,%r12d
  imul   $0x474,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x61c(%rax),%edx
  imul   $0x48e1,%edx,%r11d
  imul   $0xffffd601,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x620(%rax),%edx
  imul   $0x29ff,%edx,%r12d
  imul   $0x48e1,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x624(%rax),%edx
  imul   $0x474,%edx,%r11d
  add    %r12d,%r11d
  imul   $0x1f32,%edx,%edx
  add    %edx,%r9d
  mov    0x628(%rax),%edx
  imul   $0x617,%edx,%r12d
  imul   $0x7e7,%edx,%edx
  add    %r11d,%r12d
  add    %edx,%r9d
  mov    0x62c(%rax),%edx
  imul   $0x1d9,%edx,%r11d
  imul   $0x3f7,%edx,%edx
  add    %r12d,%r11d
  add    %edx,%r9d
  mov    0x630(%rax),%edx
  imul   $0xa1,%edx,%r12d
  imul   $0x209,%edx,%edx
  add    %r11d,%r12d
  add    %r9d,%edx
  mov    0x634(%rax),%r9d
  imul   $0x38,%r9d,%r11d
  add    %r12d,%r11d
  lea    (%r9,%r9,8),%r12d
  lea    (%r9,%r12,8),%r12d
  add    %edx,%r12d
  mov    0x638(%rax),%edx
  mov    0x63c(%rax),%eax
  imul   $0x31,%edx,%r9d
  lea    (%rdx,%rdx,8),%edx
  lea    0x2000(%r11,%rdx,1),%edx
  lea    (%rax,%rax,4),%eax
  sar    $0xe,%edx
  add    %r12d,%r9d
  lea    0x2000(%r9,%rax,1),%eax
  mov    $0x7fff,%r9d
  cmp    %r9d,%edx
  cmovg  %r9d,%edx
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edx
  cmovl  %r9d,%edx
  sar    $0xe,%eax
  mov    %dx,0xc(%rbp)
  mov    $0x7fff,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    $0xffff8000,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  sub    $0xffffffffffffff80,%rbp
  mov    %ax,-0xc(%rbp)
  cmp    %rbp,%rsi
  je     L181
L67:
  lea    0x1(%rdi),%edx
  cmp    $0x7f,%edx
  jle    L225
  mov    $0x2204,%eax
  mov    $0x10,%edi
L248:
  add    %rcx,%rax
  jmp    L42
L181:
  mov    0x14(%rsp),%eax
  mov    %r15d,%r11d
  shl    $0x6,%eax
  cltq
  add    %rax,%rax
  mov    %rax,%r9
  sub    %rax,%rsi
  neg    %r9
  lea    (%rsi,%rbx,1),%rdx
  jmp    L63
L150:
  test   $0x1,%dil
  je     L303
  movslq %edi,%rax
  mov    %edi,%r11d
  lea    0x7c4(%rcx,%rax,4),%rax
L84:
  mov    0x4(%rax),%r10d
  mov    (%rax),%edi
  imul   $0x2f,%r10d,%ebp
  neg    %edi
  imul   $0xfffffff6,%r10d,%r10d
  lea    0x0(%rbp,%rdi,4),%ebp
  mov    0x8(%rax),%edi
  imul   $0xffffffc3,%edi,%r12d
  imul   $0x38,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0xc(%rax),%edi
  imul   $0x209,%edi,%ebp
  imul   $0xffffff4f,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x10(%rax),%edi
  imul   $0xfffffc62,%edi,%r12d
  imul   $0x1c7,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x14(%rax),%edi
  imul   $0x84b,%edi,%ebp
  imul   $0xfffff991,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x18(%rax),%edi
  imul   $0xffffe298,%edi,%r12d
  imul   $0x3b0,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x1c(%rax),%edi
  imul   $0x4892,%edi,%ebp
  imul   $0xffffd43b,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x20(%rax),%edi
  imul   $0x2bc5,%edi,%r12d
  imul   $0x4892,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x24(%rax),%edi
  imul   $0x3b0,%edi,%ebp
  add    %r12d,%ebp
  imul   $0x1d68,%edi,%edi
  add    %edi,%r10d
  mov    0x28(%rax),%edi
  imul   $0x66f,%edi,%r12d
  imul   $0x84b,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x2c(%rax),%edi
  imul   $0x1c7,%edi,%ebp
  imul   $0x39e,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x30(%rax),%edi
  imul   $0xb1,%edi,%r12d
  imul   $0x209,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x34(%rax),%edi
  imul   $0x38,%edi,%ebp
  imul   $0x3d,%edi,%edi
  add    %r12d,%ebp
  mov    0x38(%rax),%r12d
  add    %r10d,%edi
  imul   $0x2f,%r12d,%r10d
  add    %r10d,%edi
  lea    (%r12,%r12,4),%r10d
  lea    0x2000(%rbp,%r10,2),%r10d
  mov    0x3c(%rax),%ebp
  sar    $0xe,%r10d
  lea    0x2000(%rdi,%rbp,4),%edi
  mov    $0x7fff,%ebp
  cmp    %ebp,%r10d
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    %r10w,0x10(%rsi)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  mov    0x204(%rax),%r10d
  mov    %di,0x70(%rsi)
  imul   $0x2d,%r10d,%ebp
  mov    0x200(%rax),%edi
  imul   $0xfffffff5,%r10d,%r10d
  neg    %edi
  lea    0x0(%rbp,%rdi,4),%ebp
  mov    0x208(%rax),%edi
  imul   $0xffffffcf,%edi,%r12d
  imul   $0x39,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x20c(%rax),%edi
  imul   $0x206,%edi,%ebp
  imul   $0xffffff3e,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x210(%rax),%edi
  imul   $0xfffffcbb,%edi,%r12d
  imul   $0x1b2,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x214(%rax),%edi
  imul   $0x8a2,%edi,%ebp
  imul   $0xfffff93b,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x218(%rax),%edi
  imul   $0xffffe460,%edi,%r12d
  imul   $0x2dd,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x21c(%rax),%edi
  imul   $0x482d,%edi,%ebp
  imul   $0xffffd27a,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x220(%rax),%edi
  imul   $0x2d86,%edi,%r12d
  imul   $0x482d,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x224(%rax),%edi
  imul   $0x2dd,%edi,%ebp
  add    %r12d,%ebp
  imul   $0x1ba0,%edi,%edi
  add    %edi,%r10d
  mov    0x228(%rax),%edi
  imul   $0x6c5,%edi,%r12d
  imul   $0x8a2,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x22c(%rax),%edi
  imul   $0x1b2,%edi,%ebp
  imul   $0x345,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x230(%rax),%edi
  imul   $0xc2,%edi,%r12d
  imul   $0x206,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x234(%rax),%edi
  imul   $0x39,%edi,%ebp
  imul   $0x31,%edi,%edi
  add    %r12d,%ebp
  add    %r10d,%edi
  mov    0x238(%rax),%r10d
  imul   $0x2d,%r10d,%r12d
  add    %r12d,%edi
  lea    (%r10,%r10,4),%r12d
  lea    (%r10,%r12,2),%r10d
  lea    0x2000(%rbp,%r10,1),%r10d
  mov    0x23c(%rax),%ebp
  sar    $0xe,%r10d
  lea    0x2000(%rdi,%rbp,4),%edi
  mov    $0x7fff,%ebp
  cmp    %ebp,%r10d
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    %r10w,0x14(%rsi)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  mov    0x400(%rax),%r10d
  mov    %di,0x6c(%rsi)
  mov    0x404(%rax),%edi
  neg    %r10d
  imul   $0x2c,%edi,%ebp
  lea    0x0(%rbp,%r10,4),%ebp
  mov    0x408(%rax),%r10d
  imul   $0xffffffda,%r10d,%r12d
  imul   $0x39,%r10d,%r10d
  add    %ebp,%r12d
  lea    0x0(,%rdi,4),%ebp
  sub    %ebp,%edi
  lea    (%r10,%rdi,4),%r10d
  mov    0x40c(%rax),%edi
  imul   $0x202,%edi,%ebp
  imul   $0xffffff2c,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x410(%rax),%edi
  imul   $0xfffffd11,%edi,%r12d
  imul   $0x19b,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x414(%rax),%edi
  imul   $0x8ec,%edi,%ebp
  imul   $0xfffff8e7,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x418(%rax),%edi
  imul   $0xffffe624,%edi,%r12d
  imul   $0x1fd,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x41c(%rax),%edi
  imul   $0x47b1,%edi,%ebp
  imul   $0xffffd0bf,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x420(%rax),%edi
  imul   $0x2f41,%edi,%r12d
  imul   $0x47b1,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x424(%rax),%edi
  imul   $0x1fd,%edi,%ebp
  add    %r12d,%ebp
  imul   $0x19dc,%edi,%edi
  add    %edi,%r10d
  mov    0x428(%rax),%edi
  imul   $0x719,%edi,%r12d
  imul   $0x8ec,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x42c(%rax),%edi
  imul   $0x19b,%edi,%ebp
  imul   $0x2ef,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x430(%rax),%edi
  imul   $0xd4,%edi,%r12d
  imul   $0x202,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x434(%rax),%edi
  imul   $0x39,%edi,%ebp
  imul   $0x26,%edi,%edi
  add    %r12d,%ebp
  mov    0x438(%rax),%r12d
  add    %r10d,%edi
  imul   $0x2c,%r12d,%r10d
  add    %r10d,%edi
  lea    (%r12,%r12,2),%r10d
  lea    0x2000(%rbp,%r10,4),%r10d
  mov    0x43c(%rax),%ebp
  sar    $0xe,%r10d
  lea    0x2000(%rdi,%rbp,4),%edi
  mov    $0x7fff,%ebp
  cmp    %ebp,%r10d
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    %r10w,0x18(%rsi)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  mov    %di,0x68(%rsi)
  mov    0x600(%rax),%edi
  lea    0x0(,%rdi,4),%r10d
  sub    %r10d,%edi
  mov    0x604(%rax),%r10d
  imul   $0x2a,%r10d,%ebp
  imul   $0xfffffff3,%r10d,%r10d
  add    %edi,%ebp
  mov    0x608(%rax),%edi
  imul   $0xffffffe5,%edi,%r12d
  imul   $0x38,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x60c(%rax),%edi
  imul   $0x1fc,%edi,%ebp
  imul   $0xffffff1b,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x610(%rax),%edi
  imul   $0xfffffd67,%edi,%r12d
  imul   $0x17f,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x614(%rax),%edi
  imul   $0x92b,%edi,%ebp
  imul   $0xfffff895,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x618(%rax),%edi
  imul   $0xffffe7e3,%edi,%r12d
  imul   $0x10e,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x61c(%rax),%edi
  imul   $0x4720,%edi,%ebp
  imul   $0xffffcf0a,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x620(%rax),%edi
  imul   $0x30f6,%edi,%r12d
  imul   $0x4720,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x624(%rax),%edi
  imul   $0x10e,%edi,%ebp
  imul   $0x181d,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x628(%rax),%edi
  imul   $0x76b,%edi,%r12d
  imul   $0x92b,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x62c(%rax),%edi
  imul   $0x17f,%edi,%ebp
  imul   $0x299,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x630(%rax),%edi
  imul   $0xe5,%edi,%r12d
  imul   $0x1fc,%edi,%edi
  add    %ebp,%r12d
  add    %r10d,%edi
  mov    0x634(%rax),%r10d
  imul   $0x38,%r10d,%ebp
  lea    (%r10,%r10,2),%r10d
  add    %r12d,%ebp
  lea    (%r10,%r10,8),%r12d
  add    %edi,%r12d
  mov    0x638(%rax),%edi
  mov    0x63c(%rax),%eax
  imul   $0x2a,%edi,%r10d
  lea    (%rax,%rax,2),%eax
  add    %r12d,%r10d
  lea    (%rdi,%rdi,2),%r12d
  lea    (%rdi,%r12,4),%edi
  lea    0x2000(%r10,%rax,1),%eax
  mov    $0x7fff,%r10d
  lea    0x2000(%rbp,%rdi,1),%edi
  sar    $0xe,%edi
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  sar    $0xe,%eax
  mov    %di,0x1c(%rsi)
  mov    $0x7fff,%edi
  cmp    %edi,%eax
  cmovg  %edi,%eax
  mov    $0xffff8000,%edi
  cmp    %edi,%eax
  cmovl  %edi,%eax
  sub    $0xffffffffffffff80,%rsi
  mov    %ax,-0x1c(%rsi)
  cmp    %rsi,%rdx
  je     L275
L63:
  lea    0x1(%r11),%edi
  cmp    $0x7f,%edi
  jle    L150
  mov    $0x2a04,%eax
  mov    $0x10,%r11d
L108:
  add    %rcx,%rax
  jmp    L84
L275:
  add    %r9,%rdx
  mov    %r15d,%r11d
  lea    (%rdx,%rbx,1),%rsi
  jmp    L113
L245:
  test   $0x1,%dil
  je     L300
  movslq %edi,%rax
  mov    %edi,%r11d
  lea    0xfc4(%rcx,%rax,4),%rax
L26:
  mov    (%rax),%edi
  lea    0x0(,%rdi,4),%ebp
  sub    %ebp,%edi
  mov    %edi,%r10d
  mov    0x4(%rax),%edi
  lea    (%rdi,%rdi,4),%ebp
  lea    (%r10,%rbp,8),%r12d
  mov    0x8(%rax),%r10d
  imul   $0xffffffee,%r10d,%ebp
  imul   $0x38,%r10d,%r10d
  add    %r12d,%ebp
  lea    0x0(,%rdi,8),%r12d
  sub    %r12d,%edi
  lea    (%r10,%rdi,2),%r10d
  mov    0xc(%rax),%edi
  imul   $0x1f4,%edi,%r12d
  imul   $0xffffff09,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x10(%rax),%edi
  imul   $0xfffffdba,%edi,%ebp
  imul   $0x161,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x14(%rax),%edi
  imul   $0x95e,%edi,%r13d
  imul   $0xfffff847,%edi,%edi
  add    %ebp,%r13d
  mov    0x18(%rax),%ebp
  add    %r10d,%edi
  mov    %ebp,%r10d
  imul   $0xffffe99c,%ebp,%r12d
  shl    $0x4,%r10d
  add    %ebp,%r10d
  add    %edi,%r10d
  mov    0x1c(%rax),%edi
  add    %r13d,%r12d
  imul   $0x467a,%edi,%ebp
  imul   $0xffffcd5d,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x20(%rax),%edi
  imul   $0x32a3,%edi,%r12d
  imul   $0x467a,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x24(%rax),%edi
  mov    %edi,%ebp
  shl    $0x4,%ebp
  add    %edi,%ebp
  add    %r12d,%ebp
  imul   $0x1664,%edi,%edi
  add    %r10d,%edi
  mov    0x28(%rax),%r10d
  imul   $0x7b9,%r10d,%r12d
  imul   $0x95e,%r10d,%r10d
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x2c(%rax),%edi
  imul   $0x161,%edi,%ebp
  imul   $0x246,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x30(%rax),%edi
  imul   $0xf7,%edi,%r12d
  imul   $0x1f4,%edi,%edi
  add    %ebp,%r12d
  mov    0x34(%rax),%ebp
  add    %r10d,%edi
  imul   $0x38,%ebp,%r10d
  lea    0x0(%rbp,%rbp,8),%ebp
  lea    (%rdi,%rbp,2),%ebp
  mov    0x38(%rax),%edi
  add    %r12d,%r10d
  lea    (%rdi,%rdi,4),%r12d
  imul   $0xe,%edi,%edi
  lea    0x0(%rbp,%r12,8),%ebp
  lea    0x2000(%r10,%rdi,1),%r10d
  mov    0x3c(%rax),%edi
  sar    $0xe,%r10d
  lea    (%rdi,%rdi,2),%edi
  lea    0x2000(%rbp,%rdi,1),%edi
  mov    $0x7fff,%ebp
  cmp    %ebp,%r10d
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    %r10w,0x20(%rdx)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  mov    0x204(%rax),%r10d
  mov    %di,0x60(%rdx)
  imul   $0x26,%r10d,%ebp
  mov    0x200(%rax),%edi
  neg    %edi
  lea    0x0(%rbp,%rdi,2),%r12d
  mov    0x208(%rax),%edi
  lea    (%rdi,%rdi,8),%ebp
  sub    %ebp,%r12d
  imul   $0x37,%edi,%edi
  mov    %r10d,%ebp
  shl    $0x4,%ebp
  sub    %ebp,%r10d
  add    %r10d,%edi
  mov    0x20c(%rax),%r10d
  imul   $0x1ea,%r10d,%ebp
  imul   $0xfffffef6,%r10d,%r10d
  add    %r12d,%ebp
  add    %r10d,%edi
  mov    0x210(%rax),%r10d
  imul   $0xfffffe0b,%r10d,%r12d
  lea    (%r10,%r10,4),%r10d
  shl    $0x6,%r10d
  add    %edi,%r10d
  mov    0x214(%rax),%edi
  add    %ebp,%r12d
  imul   $0x985,%edi,%ebp
  imul   $0xfffff7fc,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x218(%rax),%edi
  imul   $0xffffeb4f,%edi,%r12d
  imul   $0xffffff07,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x21c(%rax),%edi
  imul   $0x45bf,%edi,%ebp
  imul   $0xffffcbb9,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x220(%rax),%edi
  imul   $0x3447,%edi,%r12d
  imul   $0x45bf,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x224(%rax),%edi
  imul   $0xffffff07,%edi,%ebp
  add    %r12d,%ebp
  imul   $0x14b1,%edi,%edi
  add    %edi,%r10d
  mov    0x228(%rax),%edi
  imul   $0x804,%edi,%r12d
  imul   $0x985,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x22c(%rax),%edi
  lea    (%rdi,%rdi,4),%ebp
  imul   $0x1f5,%edi,%edi
  shl    $0x6,%ebp
  add    %r12d,%ebp
  add    %r10d,%edi
  mov    0x230(%rax),%r10d
  imul   $0x10a,%r10d,%r12d
  imul   $0x1ea,%r10d,%r10d
  add    %ebp,%r12d
  add    %r10d,%edi
  mov    0x234(%rax),%r10d
  imul   $0x37,%r10d,%ebp
  lea    (%r10,%r10,8),%r10d
  add    %edi,%r10d
  add    %r12d,%ebp
  mov    0x238(%rax),%r12d
  imul   $0x26,%r12d,%edi
  add    %r10d,%edi
  mov    %r12d,%r10d
  shl    $0x4,%r10d
  sub    %r12d,%r10d
  lea    0x2000(%rbp,%r10,1),%r10d
  mov    0x23c(%rax),%ebp
  sar    $0xe,%r10d
  lea    0x2000(%rdi,%rbp,2),%edi
  mov    $0x7fff,%ebp
  cmp    %ebp,%r10d
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    0x400(%rax),%ebp
  mov    %r10w,0x24(%rdx)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  neg    %ebp
  mov    %di,0x5c(%rdx)
  mov    0x404(%rax),%edi
  lea    (%rdi,%rdi,8),%r10d
  shl    $0x2,%r10d
  imul   $0xffffffef,%edi,%edi
  lea    (%r10,%rbp,2),%r12d
  imul   $0x35,0x408(%rax),%r10d
  add    %edi,%r10d
  mov    0x40c(%rax),%edi
  imul   $0x1df,%edi,%ebp
  imul   $0xfffffee4,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x410(%rax),%edi
  imul   $0xfffffe59,%edi,%r12d
  imul   $0x11a,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x414(%rax),%edi
  imul   $0x9a1,%edi,%ebp
  imul   $0xfffff7b6,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x418(%rax),%edi
  imul   $0xffffecfb,%edi,%r12d
  imul   $0xfffffdee,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x41c(%rax),%edi
  imul   $0x44ef,%edi,%ebp
  imul   $0xffffca1e,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x420(%rax),%edi
  imul   $0x35e2,%edi,%r12d
  imul   $0x44ef,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x424(%rax),%edi
  imul   $0xfffffdee,%edi,%ebp
  imul   $0x1305,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x428(%rax),%edi
  imul   $0x84a,%edi,%r12d
  imul   $0x9a1,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x42c(%rax),%edi
  imul   $0x11a,%edi,%ebp
  imul   $0x1a7,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x430(%rax),%edi
  imul   $0x11c,%edi,%r12d
  imul   $0x1df,%edi,%edi
  add    %ebp,%r12d
  imul   $0x35,0x434(%rax),%ebp
  add    %r10d,%edi
  mov    0x438(%rax),%r10d
  add    %r12d,%ebp
  lea    (%r10,%r10,8),%r12d
  lea    (%rdi,%r12,4),%r12d
  mov    %r10d,%edi
  shl    $0x4,%edi
  add    %r10d,%edi
  lea    0x2000(%rbp,%rdi,1),%r10d
  mov    $0x7fff,%ebp
  mov    0x43c(%rax),%edi
  sar    $0xe,%r10d
  cmp    %ebp,%r10d
  lea    0x2000(%r12,%rdi,2),%edi
  cmovg  %ebp,%r10d
  mov    $0xffff8000,%ebp
  cmp    %ebp,%r10d
  cmovl  %ebp,%r10d
  sar    $0xe,%edi
  mov    %r10w,0x28(%rdx)
  mov    $0x7fff,%r10d
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  mov    0x604(%rax),%r10d
  mov    %di,0x58(%rdx)
  imul   $0x22,%r10d,%ebp
  mov    0x600(%rax),%edi
  imul   $0xffffffee,%r10d,%r10d
  neg    %edi
  lea    0x0(%rbp,%rdi,2),%r12d
  mov    0x608(%rax),%edi
  lea    0x0(,%rdi,8),%ebp
  sub    %edi,%ebp
  imul   $0x34,%edi,%edi
  add    %r12d,%ebp
  add    %r10d,%edi
  mov    0x60c(%rax),%r10d
  imul   $0x1d3,%r10d,%r12d
  imul   $0xfffffed2,%r10d,%r10d
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x610(%rax),%edi
  imul   $0xfffffea5,%edi,%r12d
  imul   $0xf2,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x614(%rax),%edi
  imul   $0x9b3,%edi,%ebp
  imul   $0xfffff774,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x618(%rax),%edi
  imul   $0xffffee9f,%edi,%r12d
  imul   $0xfffffcc7,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x61c(%rax),%edi
  imul   $0x440b,%edi,%ebp
  imul   $0xffffc88e,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x620(%rax),%edi
  imul   $0x3772,%edi,%r12d
  imul   $0x440b,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x624(%rax),%edi
  imul   $0xfffffcc7,%edi,%ebp
  add    %r12d,%ebp
  imul   $0x1161,%edi,%edi
  add    %edi,%r10d
  mov    0x628(%rax),%edi
  imul   $0x88c,%edi,%r12d
  imul   $0x9b3,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x62c(%rax),%edi
  imul   $0xf2,%edi,%ebp
  imul   $0x15b,%edi,%edi
  add    %r12d,%ebp
  add    %edi,%r10d
  mov    0x630(%rax),%edi
  imul   $0x12e,%edi,%r12d
  imul   $0x1d3,%edi,%edi
  add    %ebp,%r12d
  add    %edi,%r10d
  mov    0x634(%rax),%edi
  imul   $0x34,%edi,%ebp
  add    %r12d,%ebp
  lea    0x0(,%rdi,8),%r12d
  sub    %r12d,%edi
  mov    0x638(%rax),%r12d
  mov    0x63c(%rax),%eax
  add    %r10d,%edi
  imul   $0x22,%r12d,%r10d
  add    %edi,%r10d
  lea    (%r12,%r12,8),%edi
  lea    0x2000(%rbp,%rdi,2),%edi
  lea    0x2000(%r10,%rax,2),%eax
  mov    $0x7fff,%r10d
  sar    $0xe,%edi
  cmp    %r10d,%edi
  cmovg  %r10d,%edi
  mov    $0xffff8000,%r10d
  cmp    %r10d,%edi
  cmovl  %r10d,%edi
  sar    $0xe,%eax
  mov    %di,0x2c(%rdx)
  mov    $0x7fff,%edi
  cmp    %edi,%eax
  cmovg  %edi,%eax
  mov    $0xffff8000,%edi
  cmp    %edi,%eax
  cmovl  %edi,%eax
  sub    $0xffffffffffffff80,%rdx
  mov    %ax,-0x2c(%rdx)
  cmp    %rdx,%rsi
  je     L212
L113:
  lea    0x1(%r11),%edi
  cmp    $0x7f,%edi
  jle    L245
  mov    $0x3204,%eax
  mov    $0x10,%r11d
L23:
  add    %rcx,%rax
  jmp    L26
L212:
  add    %r9,%rsi
  add    %rsi,%rbx
  jmp    L277
L13:
  test   $0x1,%dl
  je     L157
  movslq %edx,%rax
  mov    %edx,%r15d
  lea    0x17c4(%rcx,%rax,4),%rax
L81:
  mov    0x4(%rax),%edi
  mov    (%rax),%r9d
  mov    %edi,%edx
  neg    %r9d
  shl    $0x5,%edx
  add    %edi,%edx
  imul   $0xffffffed,%edi,%edi
  lea    (%rdx,%r9,2),%r10d
  mov    0x8(%rax),%edx
  imul   $0xe,%edx,%r9d
  imul   $0x32,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0xc(%rax),%edx
  imul   $0x1c6,%edx,%r10d
  imul   $0xfffffec0,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x10(%rax),%edx
  imul   $0xfffffeef,%edx,%r9d
  imul   $0xc6,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x14(%rax),%edx
  imul   $0x9bb,%edx,%r10d
  imul   $0xfffff737,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x18(%rax),%edx
  imul   $0xfffff03a,%edx,%r9d
  imul   $0xfffffb93,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x1c(%rax),%edx
  imul   $0x4315,%edx,%r10d
  imul   $0xffffc709,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x20(%rax),%edx
  imul   $0x38f7,%edx,%r9d
  imul   $0x4315,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x24(%rax),%edx
  imul   $0xfffffb93,%edx,%r10d
  imul   $0xfc6,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x28(%rax),%edx
  imul   $0x8c9,%edx,%r9d
  imul   $0x9bb,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x2c(%rax),%edx
  imul   $0xc6,%edx,%r10d
  imul   $0x111,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x30(%rax),%edx
  lea    (%rdx,%rdx,4),%r9d
  imul   $0x1c6,%edx,%edx
  shl    $0x6,%r9d
  add    %r10d,%r9d
  add    %edi,%edx
  mov    0x34(%rax),%edi
  imul   $0x32,%edi,%r10d
  add    %r10d,%r9d
  lea    0x0(,%rdi,8),%r10d
  sub    %r10d,%edi
  lea    (%rdx,%rdi,2),%r10d
  mov    0x38(%rax),%edi
  mov    %edi,%edx
  shl    $0x5,%edx
  add    %edi,%edx
  add    %r10d,%edx
  lea    (%rdi,%rdi,8),%r10d
  lea    (%rdi,%r10,2),%edi
  lea    0x2000(%r9,%rdi,1),%edi
  mov    0x3c(%rax),%r9d
  sar    $0xe,%edi
  lea    0x2000(%rdx,%r9,2),%edx
  mov    $0x7fff,%r9d
  cmp    %r9d,%edi
  cmovg  %r9d,%edi
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edi
  cmovl  %r9d,%edi
  sar    $0xe,%edx
  mov    %di,0x30(%rsi)
  mov    $0x7fff,%edi
  cmp    %edi,%edx
  cmovg  %edi,%edx
  mov    $0xffff8000,%edi
  cmp    %edi,%edx
  cmovl  %edi,%edx
  mov    0x208(%rax),%edi
  mov    %dx,0x50(%rsi)
  mov    0x204(%rax),%edx
  lea    (%rdi,%rdi,4),%r10d
  imul   $0x2f,%edi,%edi
  mov    %edx,%r9d
  shl    $0x5,%r9d
  sub    %edx,%r9d
  imul   $0xffffffeb,%edx,%edx
  sub    0x200(%rax),%edx
  sub    0x200(%rax),%r9d
  add    %edi,%edx
  mov    0x20c(%rax),%edi
  lea    (%r9,%r10,4),%r9d
  imul   $0x1b7,%edi,%r10d
  imul   $0xfffffead,%edi,%edi
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x210(%rax),%edx
  imul   $0xffffff35,%edx,%r9d
  imul   $0x97,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x214(%rax),%edx
  imul   $0x9b9,%edx,%r10d
  imul   $0xfffff700,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x218(%rax),%edx
  imul   $0xfffff1cb,%edx,%r9d
  imul   $0xfffffa52,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x21c(%rax),%edx
  imul   $0x420b,%edx,%r10d
  imul   $0xffffc591,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x220(%rax),%edx
  imul   $0x3a6f,%edx,%r9d
  imul   $0x420b,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x224(%rax),%edx
  imul   $0xfffffa52,%edx,%r10d
  add    %r9d,%r10d
  imul   $0xe35,%edx,%edx
  add    %edx,%edi
  mov    0x228(%rax),%edx
  lea    (%rdx,%rdx,8),%r9d
  imul   $0x9b9,%edx,%edx
  shl    $0x8,%r9d
  add    %r10d,%r9d
  add    %edi,%edx
  mov    0x22c(%rax),%edi
  imul   $0x97,%edi,%r10d
  imul   $0xcb,%edi,%edi
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x230(%rax),%edx
  imul   $0x153,%edx,%r9d
  imul   $0x1b7,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x234(%rax),%edx
  imul   $0x2f,%edx,%r10d
  imul   $0xffffffec,%edx,%edx
  add    %r9d,%r10d
  mov    0x238(%rax),%r9d
  add    %edi,%edx
  lea    (%r9,%r9,4),%edi
  lea    (%r9,%rdi,4),%r11d
  mov    %r9d,%edi
  shl    $0x5,%edi
  sub    %r9d,%edi
  mov    0x23c(%rax),%r9d
  add    %edi,%edx
  mov    %r10d,%edi
  sub    %r9d,%edi
  lea    0x2000(%r9,%rdx,1),%edx
  mov    $0x7fff,%r9d
  lea    0x2000(%rdi,%r11,1),%edi
  sar    $0xe,%edi
  cmp    %r9d,%edi
  cmovg  %r9d,%edi
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edi
  cmovl  %r9d,%edi
  sar    $0xe,%edx
  mov    %di,0x34(%rsi)
  mov    $0x7fff,%edi
  cmp    %edi,%edx
  cmovg  %edi,%edx
  mov    $0xffff8000,%edi
  cmp    %edi,%edx
  cmovl  %edi,%edx
  mov    0x408(%rax),%edi
  mov    %dx,0x4c(%rsi)
  imul   $0x1a,%edi,%r10d
  mov    0x404(%rax),%edx
  imul   $0x2c,%edi,%edi
  imul   $0x1d,%edx,%r9d
  sub    0x400(%rax),%r9d
  imul   $0xffffffea,%edx,%edx
  sub    0x400(%rax),%edx
  add    %r10d,%r9d
  add    %edi,%edx
  mov    0x40c(%rax),%edi
  imul   $0x1a8,%edi,%r10d
  imul   $0xfffffe9b,%edi,%edi
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x410(%rax),%edx
  imul   $0xffffff78,%edx,%r10d
  imul   $0x64,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x414(%rax),%edx
  imul   $0x9af,%edx,%r9d
  imul   $0xfffff6ce,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x418(%rax),%edx
  imul   $0xfffff353,%edx,%r10d
  imul   $0xfffff904,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x41c(%rax),%edx
  imul   $0x40ef,%edx,%r9d
  imul   $0xffffc426,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x420(%rax),%edx
  imul   $0x3bda,%edx,%r10d
  imul   $0x40ef,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x424(%rax),%edx
  imul   $0xfffff904,%edx,%r9d
  imul   $0xcad,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x428(%rax),%edx
  imul   $0x932,%edx,%r10d
  imul   $0x9af,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x42c(%rax),%edx
  imul   $0x64,%edx,%r9d
  imul   $0x88,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x430(%rax),%edx
  imul   $0x165,%edx,%r10d
  imul   $0x1a8,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x434(%rax),%edx
  imul   $0x2c,%edx,%r9d
  imul   $0xffffffe6,%edx,%edx
  add    %r10d,%r9d
  mov    0x43c(%rax),%r10d
  add    %edx,%edi
  mov    0x438(%rax),%edx
  imul   $0x16,%edx,%r11d
  imul   $0x1d,%edx,%edx
  add    %edi,%edx
  mov    %r9d,%edi
  mov    $0x7fff,%r9d
  sub    %r10d,%edi
  lea    0x2000(%r10,%rdx,1),%edx
  mov    0x608(%rax),%r10d
  lea    0x2000(%rdi,%r11,1),%edi
  sar    $0xe,%edi
  cmp    %r9d,%edi
  cmovg  %r9d,%edi
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edi
  cmovl  %r9d,%edi
  sar    $0xe,%edx
  mov    %r10d,%r9d
  mov    %di,0x38(%rsi)
  mov    $0x7fff,%edi
  cmp    %edi,%edx
  cmovg  %edi,%edx
  mov    $0xffff8000,%edi
  cmp    %edi,%edx
  cmovl  %edi,%edx
  shl    $0x5,%r9d
  sub    %r10d,%r9d
  mov    %dx,0x48(%rsi)
  mov    0x604(%rax),%edx
  lea    (%rdx,%rdx,2),%edi
  lea    (%rdi,%rdi,8),%edi
  sub    0x600(%rax),%edi
  add    %r9d,%edi
  lea    0x0(,%rdx,4),%r9d
  sub    %r9d,%edx
  lea    (%r10,%r10,4),%r9d
  shl    $0x3,%edx
  sub    0x600(%rax),%edx
  lea    (%rdx,%r9,8),%r10d
  mov    0x60c(%rax),%edx
  imul   $0x198,%edx,%r9d
  imul   $0xfffffe8a,%edx,%edx
  add    %edi,%r9d
  lea    (%rdx,%r10,1),%edi
  mov    0x610(%rax),%edx
  imul   $0xffffffb8,%edx,%r10d
  imul   $0x2e,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x614(%rax),%edx
  imul   $0x99b,%edx,%r9d
  imul   $0xfffff6a4,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x618(%rax),%edx
  imul   $0xfffff4d1,%edx,%r10d
  imul   $0xfffff7a9,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x61c(%rax),%edx
  imul   $0x3fc2,%edx,%r9d
  imul   $0xffffc2c9,%edx,%edx
  add    %r10d,%r9d
  add    %edx,%edi
  mov    0x620(%rax),%edx
  imul   $0x3d37,%edx,%r10d
  imul   $0x3fc2,%edx,%edx
  add    %r9d,%r10d
  add    %edx,%edi
  mov    0x624(%rax),%edx
  imul   $0xfffff7a9,%edx,%r9d
  add    %r10d,%r9d
  imul   $0xb2f,%edx,%edx
  add    %edx,%edi
  mov    0x628(%rax),%edx
  imul   $0x95c,%edx,%r10d
  imul   $0x99b,%edx,%edx
  add    %r9d,%r10d
  mov    0x62c(%rax),%r9d
  add    %edi,%edx
  imul   $0x2e,%r9d,%edi
  lea    (%r9,%r9,8),%r9d
  add    %r10d,%edi
  lea    (%rdx,%r9,8),%r10d
  mov    0x630(%rax),%edx
  imul   $0x176,%edx,%r9d
  imul   $0x198,%edx,%edx
  add    %edi,%r9d
  lea    (%rdx,%r10,1),%edi
  mov    0x634(%rax),%edx
  lea    (%rdx,%rdx,4),%r10d
  lea    (%r9,%r10,8),%r9d
  mov    %edx,%r10d
  shl    $0x5,%r10d
  sub    %r10d,%edx
  mov    0x63c(%rax),%r10d
  add    %edi,%edx
  mov    0x638(%rax),%edi
  lea    (%rdi,%rdi,2),%edi
  lea    0x0(,%rdi,8),%r11d
  add    %r11d,%edi
  add    %edi,%edx
  mov    %r9d,%edi
  mov    $0x7fff,%r9d
  sub    %r10d,%edi
  lea    0x2000(%r10,%rdx,1),%edx
  lea    0x2000(%rdi,%r11,1),%edi
  sar    $0xe,%edi
  cmp    %r9d,%edi
  cmovg  %r9d,%edi
  mov    $0xffff8000,%r9d
  cmp    %r9d,%edi
  cmovl  %r9d,%edi
  sar    $0xe,%edx
  mov    %di,0x3c(%rsi)
  mov    $0x7fff,%edi
  cmp    %edi,%edx
  cmovg  %edi,%edx
  mov    $0xffff8000,%edi
  cmp    %edi,%edx
  cmovl  %edi,%edx
  imul   $0xfffffff5,0x810(%rax),%edi
  mov    %dx,0x44(%rsi)
  mov    0x808(%rax),%edx
  lea    (%rdx,%rdx,8),%edx
  shl    $0x2,%edx
  sub    0x800(%rax),%edx
  add    %edi,%edx
  imul   $0xfffff643,0x818(%rax),%edi
  add    %edi,%edx
  imul   $0x3e84,0x820(%rax),%edi
  add    %edi,%edx
  imul   $0x97f,0x828(%rax),%edi
  add    %edi,%edx
  imul   $0x187,0x830(%rax),%edi
  imul   $0x1a,0x838(%rax),%eax
  add    %edi,%edx
  lea    0x2000(%rdx,%rax,1),%eax
  mov    $0x7fff,%edx
  sar    $0xe,%eax
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    $0xffff8000,%edx
  cmp    %edx,%eax
  cmovl  %edx,%eax
  sub    $0xffffffffffffff80,%rsi
  mov    %ax,-0x40(%rsi)
  cmp    %rsi,%rbx
  je     L265
L277:
  lea    0x1(%r15),%edx
  cmp    $0x7f,%edx
  jle    L13
  mov    $0x3a04,%eax
  mov    $0x10,%r15d
L301:
  add    %rcx,%rax
  jmp    L81
L89:
  lea    0x881(%rdi),%eax
  mov    %edx,%edi
  cltq
  lea    -0x3c(,%rax,4),%rax
  jmp    L248
L157:
  lea    0xe72(%r15),%eax
  mov    %edx,%r15d
  cltq
  shl    $0x2,%rax
  jmp    L301
L300:
  lea    0xc72(%r11),%eax
  mov    %edi,%r11d
  cltq
  shl    $0x2,%rax
  jmp    L23
L303:
  lea    0xa72(%r11),%eax
  mov    %edi,%r11d
  cltq
  shl    $0x2,%rax
  jmp    L108
```

assistant: ```c
int synth_1to1_486(float *bandPtr, int channel, unsigned char *out, int nb_blocks) {
  static int buffs[2][2][17 * 128];
  static int bo[2] = {16 - 1, 16 - 1};
  short *samples = (short *)out;
  int *b0, (*buf)[17 * 128];
  int clip = 0;
  int block, b, bo_start;
  samples += channel;
  bo_start = bo[channel];
  buf = buffs[channel];
  b = bo_start;
  for (block = 0; block < nb_blocks; block++) {
    b++;
    if (b >= 128) {
      int *p, *q;
      int c, i, j;
      for (c = 0; c < 2; c++) {
        p = &buf[c][0] + 1;
        q = p + (128 - 16);
        for (i = 0; i < 17; i++) {
          for (j = 0; j < 16 - 1; j++)
            p[j] = q[j];
          p += 128;
          q += 128;
        }
      }
      b = bo[channel] = 16;
    }
    if (b & 1) {
      dct64_486(buf[1] + b, buf[0] + b, bandPtr);
    } else {
      dct64_486(buf[0] + b, buf[1] + b, bandPtr);
    }
    bandPtr += 32;
  }
  bo[channel] = b;
  b = bo_start;
  for (block = 0; block < nb_blocks; block++) {
    b++;
    if (b >= 128)
      b = 16;
    if (b & 1) {
      b0 = buf[0] + b - (16 - 1);
    } else {
      b0 = buf[1] + b - (16 - 1);
    }
    {
      int sum;
      sum = (-7) * b0[0] + (53) * b0[1] + (-114) * b0[2] + (509) * b0[3] + (-1288) * b0[4] + (1643) * b0[5] + (-9372) * b0[6] + (18759) * b0[7] + (9372) * b0[8] + (1643) * b0[9] + (1288) * b0[10] + (509) * b0[11] + (114) * b0[12] + (53) * b0[13] + (7) * b0[14] + (0) * b0[15];
      sum = (sum + (1 << 13)) >> 14;
      if (sum < -32768)
        sum = -32768;
      else if (sum > 32767)
        sum = 32767;
      samples[2 * (0)] = sum;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-6) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (52) * v;
      sum2 += (-7) * v;
      v = b0[2];
      sum1 += (-100) * v;
      sum2 += (54) * v;
      v = b0[3];
      sum1 += (515) * v;
      sum2 += (-129) * v;
      v = b0[4];
      sum1 += (-1197) * v;
      sum2 += (500) * v;
      v = b0[5];
      sum1 += (1783) * v;
      sum2 += (-1379) * v;
      v = b0[6];
      sum1 += (-8910) * v;
      sum2 += (1489) * v;
      v = b0[7];
      sum1 += (18748) * v;
      sum2 += (-9834) * v;
      v = b0[8];
      sum1 += (9834) * v;
      sum2 += (18748) * v;
      v = b0[9];
      sum1 += (1489) * v;
      sum2 += (8910) * v;
      v = b0[10];
      sum1 += (1379) * v;
      sum2 += (1783) * v;
      v = b0[11];
      sum1 += (500) * v;
      sum2 += (1197) * v;
      v = b0[12];
      sum1 += (129) * v;
      sum2 += (515) * v;
      v = b0[13];
      sum1 += (54) * v;
      sum2 += (100) * v;
      v = b0[14];
      sum1 += (7) * v;
      sum2 += (52) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (6) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(1) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(31) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-6) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (50) * v;
      sum2 += (-8) * v;
      v = b0[2];
      sum1 += (-86) * v;
      sum2 += (55) * v;
      v = b0[3];
      sum1 += (520) * v;
      sum2 += (-145) * v;
      v = b0[4];
      sum1 += (-1106) * v;
      sum2 += (488) * v;
      v = b0[5];
      sum1 += (1910) * v;
      sum2 += (-1469) * v;
      v = b0[6];
      sum1 += (-8447) * v;
      sum2 += (1322) * v;
      v = b0[7];
      sum1 += (18714) * v;
      sum2 += (-10294) * v;
      v = b0[8];
      sum1 += (10294) * v;
      sum2 += (18714) * v;
      v = b0[9];
      sum1 += (1322) * v;
      sum2 += (8447) * v;
      v = b0[10];
      sum1 += (1469) * v;
      sum2 += (1910) * v;
      v = b0[11];
      sum1 += (488) * v;
      sum2 += (1106) * v;
      v = b0[12];
      sum1 += (145) * v;
      sum2 += (520) * v;
      v = b0[13];
      sum1 += (55) * v;
      sum2 += (86) * v;
      v = b0[14];
      sum1 += (8) * v;
      sum2 += (50) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (6) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(2) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(30) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-5) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (49) * v;
      sum2 += (-9) * v;
      v = b0[2];
      sum1 += (-73) * v;
      sum2 += (56) * v;
      v = b0[3];
      sum1 += (521) * v;
      sum2 += (-161) * v;
      v = b0[4];
      sum1 += (-1015) * v;
      sum2 += (473) * v;
      v = b0[5];
      sum1 += (2023) * v;
      sum2 += (-1559) * v;
      v = b0[6];
      sum1 += (-7986) * v;
      sum2 += (1140) * v;
      v = b0[7];
      sum1 += (18657) * v;
      sum2 += (-10751) * v;
      v = b0[8];
      sum1 += (10751) * v;
      sum2 += (18657) * v;
      v = b0[9];
      sum1 += (1140) * v;
      sum2 += (7986) * v;
      v = b0[10];
      sum1 += (1559) * v;
      sum2 += (2023) * v;
      v = b0[11];
      sum1 += (473) * v;
      sum2 += (1015) * v;
      v = b0[12];
      sum1 += (161) * v;
      sum2 += (521) * v;
      v = b0[13];
      sum1 += (56) * v;
      sum2 += (73) * v;
      v = b0[14];
      sum1 += (9) * v;
      sum2 += (49) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (5) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(3) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(29) * 2] = sum2;
      b0 += 128;
    };
    samples += 64;
  }
  samples -= 64 * nb_blocks;
  b = bo_start;
  for (block = 0; block < nb_blocks; block++) {
    b++;
    if (b >= 128)
      b = 16;
    if (b & 1) {
      b0 = buf[0] + b - (16 - 1) + 4 * 128;
    } else {
      b0 = buf[1] + b - (16 - 1) + 4 * 128;
    }
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-4) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (47) * v;
      sum2 += (-10) * v;
      v = b0[2];
      sum1 += (-61) * v;
      sum2 += (56) * v;
      v = b0[3];
      sum1 += (521) * v;
      sum2 += (-177) * v;
      v = b0[4];
      sum1 += (-926) * v;
      sum2 += (455) * v;
      v = b0[5];
      sum1 += (2123) * v;
      sum2 += (-1647) * v;
      v = b0[6];
      sum1 += (-7528) * v;
      sum2 += (944) * v;
      v = b0[7];
      sum1 += (18578) * v;
      sum2 += (-11205) * v;
      v = b0[8];
      sum1 += (11205) * v;
      sum2 += (18578) * v;
      v = b0[9];
      sum1 += (944) * v;
      sum2 += (7528) * v;
      v = b0[10];
      sum1 += (1647) * v;
      sum2 += (2123) * v;
      v = b0[11];
      sum1 += (455) * v;
      sum2 += (926) * v;
      v = b0[12];
      sum1 += (177) * v;
      sum2 += (521) * v;
      v = b0[13];
      sum1 += (56) * v;
      sum2 += (61) * v;
      v = b0[14];
      sum1 += (10) * v;
      sum2 += (47) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (4) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(4) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(28) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-4) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (45) * v;
      sum2 += (-11) * v;
      v = b0[2];
      sum1 += (-49) * v;
      sum2 += (57) * v;
      v = b0[3];
      sum1 += (518) * v;
      sum2 += (-194) * v;
      v = b0[4];
      sum1 += (-837) * v;
      sum2 += (434) * v;
      v = b0[5];
      sum1 += (2210) * v;
      sum2 += (-1733) * v;
      v = b0[6];
      sum1 += (-7072) * v;
      sum2 += (733) * v;
      v = b0[7];
      sum1 += (18477) * v;
      sum2 += (-11654) * v;
      v = b0[8];
      sum1 += (11654) * v;
      sum2 += (18477) * v;
      v = b0[9];
      sum1 += (733) * v;
      sum2 += (7072) * v;
      v = b0[10];
      sum1 += (1733) * v;
      sum2 += (2210) * v;
      v = b0[11];
      sum1 += (434) * v;
      sum2 += (837) * v;
      v = b0[12];
      sum1 += (194) * v;
      sum2 += (518) * v;
      v = b0[13];
      sum1 += (57) * v;
      sum2 += (49) * v;
      v = b0[14];
      sum1 += (11) * v;
      sum2 += (45) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (4) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(5) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(27) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-4) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (44) * v;
      sum2 += (-12) * v;
      v = b0[2];
      sum1 += (-38) * v;
      sum2 += (57) * v;
      v = b0[3];
      sum1 += (514) * v;
      sum2 += (-212) * v;
      v = b0[4];
      sum1 += (-751) * v;
      sum2 += (411) * v;
      v = b0[5];
      sum1 += (2284) * v;
      sum2 += (-1817) * v;
      v = b0[6];
      sum1 += (-6620) * v;
      sum2 += (509) * v;
      v = b0[7];
      sum1 += (18353) * v;
      sum2 += (-12097) * v;
      v = b0[8];
      sum1 += (12097) * v;
      sum2 += (18353) * v;
      v = b0[9];
      sum1 += (509) * v;
      sum2 += (6620) * v;
      v = b0[10];
      sum1 += (1817) * v;
      sum2 += (2284) * v;
      v = b0[11];
      sum1 += (411) * v;
      sum2 += (751) * v;
      v = b0[12];
      sum1 += (212) * v;
      sum2 += (514) * v;
      v = b0[13];
      sum1 += (57) * v;
      sum2 += (38) * v;
      v = b0[14];
      sum1 += (12) * v;
      sum2 += (44) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (4) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(6) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(26) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-3) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (42) * v;
      sum2 += (-13) * v;
      v = b0[2];
      sum1 += (-27) * v;
      sum2 += (56) * v;
      v = b0[3];
      sum1 += (508) * v;
      sum2 += (-229) * v;
      v = b0[4];
      sum1 += (-665) * v;
      sum2 += (383) * v;
      v = b0[5];
      sum1 += (2347) * v;
      sum2 += (-1899) * v;
      v = b0[6];
      sum1 += (-6173) * v;
      sum2 += (270) * v;
      v = b0[7];
      sum1 += (18208) * v;
      sum2 += (-12534) * v;
      v = b0[8];
      sum1 += (12534) * v;
      sum2 += (18208) * v;
      v = b0[9];
      sum1 += (270) * v;
      sum2 += (6173) * v;
      v = b0[10];
      sum1 += (1899) * v;
      sum2 += (2347) * v;
      v = b0[11];
      sum1 += (383) * v;
      sum2 += (665) * v;
      v = b0[12];
      sum1 += (229) * v;
      sum2 += (508) * v;
      v = b0[13];
      sum1 += (56) * v;
      sum2 += (27) * v;
      v = b0[14];
      sum1 += (13) * v;
      sum2 += (42) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (3) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(7) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(25) * 2] = sum2;
      b0 += 128;
    };
    samples += 64;
  }
  samples -= 64 * nb_blocks;
  b = bo_start;
  for (block = 0; block < nb_blocks; block++) {
    b++;
    if (b >= 128)
      b = 16;
    if (b & 1) {
      b0 = buf[0] + b - (16 - 1) + 8 * 128;
    } else {
      b0 = buf[1] + b - (16 - 1) + 8 * 128;
    }
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-3) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (40) * v;
      sum2 += (-14) * v;
      v = b0[2];
      sum1 += (-18) * v;
      sum2 += (56) * v;
      v = b0[3];
      sum1 += (500) * v;
      sum2 += (-247) * v;
      v = b0[4];
      sum1 += (-582) * v;
      sum2 += (353) * v;
      v = b0[5];
      sum1 += (2398) * v;
      sum2 += (-1977) * v;
      v = b0[6];
      sum1 += (-5732) * v;
      sum2 += (17) * v;
      v = b0[7];
      sum1 += (18042) * v;
      sum2 += (-12963) * v;
      v = b0[8];
      sum1 += (12963) * v;
      sum2 += (18042) * v;
      v = b0[9];
      sum1 += (17) * v;
      sum2 += (5732) * v;
      v = b0[10];
      sum1 += (1977) * v;
      sum2 += (2398) * v;
      v = b0[11];
      sum1 += (353) * v;
      sum2 += (582) * v;
      v = b0[12];
      sum1 += (247) * v;
      sum2 += (500) * v;
      v = b0[13];
      sum1 += (56) * v;
      sum2 += (18) * v;
      v = b0[14];
      sum1 += (14) * v;
      sum2 += (40) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (3) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(8) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(24) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-2) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (38) * v;
      sum2 += (-15) * v;
      v = b0[2];
      sum1 += (-9) * v;
      sum2 += (55) * v;
      v = b0[3];
      sum1 += (490) * v;
      sum2 += (-266) * v;
      v = b0[4];
      sum1 += (-501) * v;
      sum2 += (320) * v;
      v = b0[5];
      sum1 += (2437) * v;
      sum2 += (-2052) * v;
      v = b0[6];
      sum1 += (-5297) * v;
      sum2 += (-249) * v;
      v = b0[7];
      sum1 += (17855) * v;
      sum2 += (-13383) * v;
      v = b0[8];
      sum1 += (13383) * v;
      sum2 += (17855) * v;
      v = b0[9];
      sum1 += (-249) * v;
      sum2 += (5297) * v;
      v = b0[10];
      sum1 += (2052) * v;
      sum2 += (2437) * v;
      v = b0[11];
      sum1 += (320) * v;
      sum2 += (501) * v;
      v = b0[12];
      sum1 += (266) * v;
      sum2 += (490) * v;
      v = b0[13];
      sum1 += (55) * v;
      sum2 += (9) * v;
      v = b0[14];
      sum1 += (15) * v;
      sum2 += (38) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (2) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(9) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(23) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-2) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (36) * v;
      sum2 += (-17) * v;
      v = b0[2];
      sum1 += (0) * v;
      sum2 += (53) * v;
      v = b0[3];
      sum1 += (479) * v;
      sum2 += (-284) * v;
      v = b0[4];
      sum1 += (-423) * v;
      sum2 += (282) * v;
      v = b0[5];
      sum1 += (2465) * v;
      sum2 += (-2122) * v;
      v = b0[6];
      sum1 += (-4869) * v;
      sum2 += (-530) * v;
      v = b0[7];
      sum1 += (17647) * v;
      sum2 += (-13794) * v;
      v = b0[8];
      sum1 += (13794) * v;
      sum2 += (17647) * v;
      v = b0[9];
      sum1 += (-530) * v;
      sum2 += (4869) * v;
      v = b0[10];
      sum1 += (2122) * v;
      sum2 += (2465) * v;
      v = b0[11];
      sum1 += (282) * v;
      sum2 += (423) * v;
      v = b0[12];
      sum1 += (284) * v;
      sum2 += (479) * v;
      v = b0[13];
      sum1 += (53) * v;
      sum2 += (0) * v;
      v = b0[14];
      sum1 += (17) * v;
      sum2 += (36) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (2) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(10) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(22) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-2) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (34) * v;
      sum2 += (-18) * v;
      v = b0[2];
      sum1 += (7) * v;
      sum2 += (52) * v;
      v = b0[3];
      sum1 += (467) * v;
      sum2 += (-302) * v;
      v = b0[4];
      sum1 += (-347) * v;
      sum2 += (242) * v;
      v = b0[5];
      sum1 += (2483) * v;
      sum2 += (-2188) * v;
      v = b0[6];
      sum1 += (-4449) * v;
      sum2 += (-825) * v;
      v = b0[7];
      sum1 += (17419) * v;
      sum2 += (-14194) * v;
      v = b0[8];
      sum1 += (14194) * v;
      sum2 += (17419) * v;
      v = b0[9];
      sum1 += (-825) * v;
      sum2 += (4449) * v;
      v = b0[10];
      sum1 += (2188) * v;
      sum2 += (2483) * v;
      v = b0[11];
      sum1 += (242) * v;
      sum2 += (347) * v;
      v = b0[12];
      sum1 += (302) * v;
      sum2 += (467) * v;
      v = b0[13];
      sum1 += (52) * v;
      sum2 += (-7) * v;
      v = b0[14];
      sum1 += (18) * v;
      sum2 += (34) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (2) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(11) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(21) * 2] = sum2;
      b0 += 128;
    };
    samples += 64;
  }
  samples -= 64 * nb_blocks;
  b = bo_start;
  for (block = 0; block < nb_blocks; block++) {
    b++;
    if (b >= 128)
      b = 16;
    if (b & 1) {
      b0 = buf[0] + b - (16 - 1) + 12 * 128;
    } else {
      b0 = buf[1] + b - (16 - 1) + 12 * 128;
    }
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-2) * v;
      sum2 = (0) * v;
      v = b0[1];
      sum1 += (33) * v;
      sum2 += (-19) * v;
      v = b0[2];
      sum1 += (14) * v;
      sum2 += (50) * v;
      v = b0[3];
      sum1 += (454) * v;
      sum2 += (-320) * v;
      v = b0[4];
      sum1 += (-273) * v;
      sum2 += (198) * v;
      v = b0[5];
      sum1 += (2491) * v;
      sum2 += (-2249) * v;
      v = b0[6];
      sum1 += (-4038) * v;
      sum2 += (-1133) * v;
      v = b0[7];
      sum1 += (17173) * v;
      sum2 += (-14583) * v;
      v = b0[8];
      sum1 += (14583) * v;
      sum2 += (17173) * v;
      v = b0[9];
      sum1 += (-1133) * v;
      sum2 += (4038) * v;
      v = b0[10];
      sum1 += (2249) * v;
      sum2 += (2491) * v;
      v = b0[11];
      sum1 += (198) * v;
      sum2 += (273) * v;
      v = b0[12];
      sum1 += (320) * v;
      sum2 += (454) * v;
      v = b0[13];
      sum1 += (50) * v;
      sum2 += (-14) * v;
      v = b0[14];
      sum1 += (19) * v;
      sum2 += (33) * v;
      v = b0[15];
      sum1 += (0) * v;
      sum2 += (2) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(12) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(20) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-1) * v;
      sum2 = (-1) * v;
      v = b0[1];
      sum1 += (31) * v;
      sum2 += (-21) * v;
      v = b0[2];
      sum1 += (20) * v;
      sum2 += (47) * v;
      v = b0[3];
      sum1 += (439) * v;
      sum2 += (-339) * v;
      v = b0[4];
      sum1 += (-203) * v;
      sum2 += (151) * v;
      v = b0[5];
      sum1 += (2489) * v;
      sum2 += (-2304) * v;
      v = b0[6];
      sum1 += (-3637) * v;
      sum2 += (-1454) * v;
      v = b0[7];
      sum1 += (16907) * v;
      sum2 += (-14959) * v;
      v = b0[8];
      sum1 += (14959) * v;
      sum2 += (16907) * v;
      v = b0[9];
      sum1 += (-1454) * v;
      sum2 += (3637) * v;
      v = b0[10];
      sum1 += (2304) * v;
      sum2 += (2489) * v;
      v = b0[11];
      sum1 += (151) * v;
      sum2 += (203) * v;
      v = b0[12];
      sum1 += (339) * v;
      sum2 += (439) * v;
      v = b0[13];
      sum1 += (47) * v;
      sum2 += (-20) * v;
      v = b0[14];
      sum1 += (21) * v;
      sum2 += (31) * v;
      v = b0[15];
      sum1 += (-1) * v;
      sum2 += (1) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(13) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(19) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-1) * v;
      sum2 = (-1) * v;
      v = b0[1];
      sum1 += (29) * v;
      sum2 += (-22) * v;
      v = b0[2];
      sum1 += (26) * v;
      sum2 += (44) * v;
      v = b0[3];
      sum1 += (424) * v;
      sum2 += (-357) * v;
      v = b0[4];
      sum1 += (-136) * v;
      sum2 += (100) * v;
      v = b0[5];
      sum1 += (2479) * v;
      sum2 += (-2354) * v;
      v = b0[6];
      sum1 += (-3245) * v;
      sum2 += (-1788) * v;
      v = b0[7];
      sum1 += (16623) * v;
      sum2 += (-15322) * v;
      v = b0[8];
      sum1 += (15322) * v;
      sum2 += (16623) * v;
      v = b0[9];
      sum1 += (-1788) * v;
      sum2 += (3245) * v;
      v = b0[10];
      sum1 += (2354) * v;
      sum2 += (2479) * v;
      v = b0[11];
      sum1 += (100) * v;
      sum2 += (136) * v;
      v = b0[12];
      sum1 += (357) * v;
      sum2 += (424) * v;
      v = b0[13];
      sum1 += (44) * v;
      sum2 += (-26) * v;
      v = b0[14];
      sum1 += (22) * v;
      sum2 += (29) * v;
      v = b0[15];
      sum1 += (-1) * v;
      sum2 += (1) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(14) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(18) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum1, sum2, v;
      v = b0[0];
      sum1 = (-1) * v;
      sum2 = (-1) * v;
      v = b0[1];
      sum1 += (27) * v;
      sum2 += (-24) * v;
      v = b0[2];
      sum1 += (31) * v;
      sum2 += (40) * v;
      v = b0[3];
      sum1 += (408) * v;
      sum2 += (-374) * v;
      v = b0[4];
      sum1 += (-72) * v;
      sum2 += (46) * v;
      v = b0[5];
      sum1 += (2459) * v;
      sum2 += (-2396) * v;
      v = b0[6];
      sum1 += (-2863) * v;
      sum2 += (-2135) * v;
      v = b0[7];
      sum1 += (16322) * v;
      sum2 += (-15671) * v;
      v = b0[8];
      sum1 += (15671) * v;
      sum2 += (16322) * v;
      v = b0[9];
      sum1 += (-2135) * v;
      sum2 += (2863) * v;
      v = b0[10];
      sum1 += (2396) * v;
      sum2 += (2459) * v;
      v = b0[11];
      sum1 += (46) * v;
      sum2 += (72) * v;
      v = b0[12];
      sum1 += (374) * v;
      sum2 += (408) * v;
      v = b0[13];
      sum1 += (40) * v;
      sum2 += (-31) * v;
      v = b0[14];
      sum1 += (24) * v;
      sum2 += (27) * v;
      v = b0[15];
      sum1 += (-1) * v;
      sum2 += (1) * v;
      sum1 = (sum1 + (1 << 13)) >> 14;
      sum2 = (sum2 + (1 << 13)) >> 14;
      if (sum1 < -32768)
        sum1 = -32768;
      else if (sum1 > 32767)
        sum1 = 32767;
      samples[(15) * 2] = sum1;
      if (sum2 < -32768)
        sum2 = -32768;
      else if (sum2 > 32767)
        sum2 = 32767;
      samples[(17) * 2] = sum2;
      b0 += 128;
    };
    {
      int sum;
      sum = (-1) * b0[0] + (0) * b0[1] + (36) * b0[2] + (0) * b0[3] + (-11) * b0[4] + (0) * b0[5] + (-2493) * b0[6] + (0) * b0[7] + (16004) * b0[8] + (0) * b0[9] + (2431) * b0[10] + (0) * b0[11] + (391) * b0[12] + (0) * b0[13] + (26) * b0[14] + (0) * b0[15];
      sum = (sum + (1 << 13)) >> 14;
      if (sum < -32768)
        sum = -32768;
      else if (sum > 32767)
        sum = 32767;
      samples[2 * (16)] = sum;
      b0 += 128;
    };
    samples += 64;
  }
  return clip;
}
```