user: Please show me the C implementation that matches the assembly code listed below:

```asm
<DCT_8x4>:
  endbr64
  push   %r15
  mov    %rsi,%rdx
  mov    %rdi,%rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x10(%rdi),%r9d
  mov    0x40(%rdi),%r10d
  imul   $0x5a80,(%rdi),%ecx
  imul   $0x5a80,%r9d,%r11d
  mov    0x50(%rdi),%esi
  imul   $0x5a80,%r10d,%r8d
  mov    %ecx,(%rdi)
  mov    %r11d,0x10(%rdi)
  add    %r11d,%ecx
  mov    %r8d,0x40(%rdi)
  imul   $0x5a80,%esi,%edi
  add    %r8d,%ecx
  mov    0x54(%rax),%ebp
  mov    0x48(%rax),%r14d
  add    0x8(%rax),%r14d
  mov    0x58(%rax),%r13d
  add    0x18(%rax),%r13d
  lea    0x1000000(%rdi,%rcx,1),%ecx
  add    0x14(%rax),%ebp
  mov    0x44(%rax),%ebx
  mov    %edi,0x50(%rax)
  imul   $0x763e,%r14d,%edi
  mov    0x4c(%rax),%r15d
  mov    0x5c(%rax),%r12d
  mov    %ebp,-0x14(%rsp)
  add    0x1c(%rax),%r12d
  add    0xc(%rax),%r15d
  imul   $0xa402,0x24(%rax),%r8d
  add    0x4(%rax),%ebx
  mov    %r15d,-0x10(%rsp)
  mov    %r12d,%ebp
  add    %edi,%ecx
  mov    %edi,-0x8(%rsp)
  imul   $0x30fa,%r13d,%edi
  mov    %r12d,-0xc(%rsp)
  add    %edi,%ecx
  mov    %edi,-0x4(%rsp)
  imul   $0x8b0a,0x2c(%rax),%edi
  imul   $0xd83,0x7c(%rax),%r12d
  add    %r8d,%edi
  imul   $0x5ce7,0x34(%rax),%r8d
  add    %r8d,%edi
  imul   $0x209f,0x3c(%rax),%r8d
  add    %r8d,%edi
  imul   $0x43ef,0x64(%rax),%r8d
  add    %r8d,%edi
  imul   $0x3997,0x6c(%rax),%r8d
  add    %r8d,%edi
  imul   $0x267b,0x74(%rax),%r8d
  add    %r8d,%edi
  imul   $0x7d86,%ebx,%r8d
  add    %edi,%r12d
  imul   $0x6a6a,%r15d,%edi
  imul   $0x18f8,%ebp,%ebp
  add    %r8d,%edi
  imul   $0x471a,-0x14(%rsp),%r8d
  add    %r8d,%edi
  imul   $0x9a7e,0x28(%rax),%r8d
  add    %edi,%ebp
  mov    0x68(%rax),%edi
  add    0x38(%rax),%edi
  imul   $0x3ffe,%edi,%edi
  add    %r8d,%edi
  imul   $0x1a81,0x78(%rax),%r8d
  add    %edi,%r8d
  mov    0x30(%rax),%edi
  add    0x20(%rax),%edi
  imul   $0x763e,%edi,%edi
  add    %r8d,%edi
  mov    0x70(%rax),%r8d
  add    0x60(%rax),%r8d
  imul   $0x30fa,%r8d,%r8d
  add    %edi,%r8d
  lea    (%rcx,%r12,1),%edi
  lea    (%rdi,%rbp,1),%r11d
  add    %r8d,%r11d
  sar    $0x11,%r11d
  mov    %r11d,%r15d
  test   $0xffffff00,%r11d
  je     L276
  not    %r11d
  sar    $0x1f,%r11d
  mov    %r11d,%r15d
L276:
  sub    %r12d,%ecx
  mov    %r15b,(%rdx)
  mov    %ecx,%r11d
  sub    %ebp,%r11d
  add    %r8d,%r11d
  sub    %r9d,%r11d
  sub    %esi,%r11d
  sar    $0x11,%r11d
  mov    %r11d,%r12d
  test   $0xffffff00,%r11d
  je     L222
  not    %r11d
  sar    $0x1f,%r11d
  mov    %r11d,%r12d
L222:
  add    %ebp,%ecx
  mov    %r12b,0x7(%rdx)
  sub    %r8d,%ecx
  sub    %r10d,%ecx
  sub    %esi,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%r11d
  test   $0xffffff00,%ecx
  je     L24
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%r11d
L24:
  sub    %ebp,%edi
  mov    %r11b,0x18(%rdx)
  sub    %r8d,%edi
  sub    %r9d,%edi
  sub    %r10d,%edi
  sub    %esi,%edi
  sar    $0x11,%edi
  mov    %edi,%ecx
  test   $0xffffff00,%edi
  je     L132
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%ecx
L132:
  mov    %cl,0x1f(%rdx)
  imul   $0x6a6a,%ebx,%ebp
  mov    (%rax),%ecx
  imul   $0x30fa,%r14d,%r14d
  sub    0x10(%rax),%ecx
  mov    0x28(%rax),%r11d
  imul   $0x763e,%r13d,%r13d
  add    0x40(%rax),%ecx
  mov    0x78(%rax),%r12d
  imul   $0x209f,0x2c(%rax),%r8d
  sub    0x50(%rax),%ecx
  imul   $0x8b0a,0x24(%rax),%edi
  lea    0x1000000(%r14,%rcx,1),%ecx
  sub    %r13d,%ecx
  sub    %r8d,%edi
  imul   $0xa402,0x34(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x5ce7,0x3c(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x3997,0x64(%rax),%r8d
  sub    %r8d,%edi
  imul   $0xd83,0x6c(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x43ef,0x74(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x267b,0x7c(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x18f8,-0x10(%rsp),%r8d
  sub    %r8d,%ebp
  imul   $0x7d86,-0x14(%rsp),%r8d
  sub    %r8d,%ebp
  imul   $0x471a,-0xc(%rsp),%r8d
  sub    %r8d,%ebp
  xor    %r8d,%r8d
  cmp    %r12d,%r11d
  je     L179
  sub    %r12d,%r11d
  imul   $0x3ffe,%r11d,%r8d
L179:
  imul   $0x9a7e,0x38(%rax),%r11d
  imul   $0x1a81,0x68(%rax),%r12d
  sub    %r11d,%r8d
  mov    0x70(%rax),%r11d
  add    %r8d,%r12d
  mov    0x60(%rax),%r8d
  cmp    %r11d,%r8d
  je     L80
  sub    %r11d,%r8d
  imul   $0x30fa,%r8d,%r8d
  add    %r8d,%r12d
L80:
  mov    0x20(%rax),%r8d
  mov    0x30(%rax),%r11d
  cmp    %r11d,%r8d
  je     L3
  sub    %r11d,%r8d
  imul   $0x763e,%r8d,%r8d
  add    %r8d,%r12d
L3:
  lea    (%rcx,%rdi,1),%r8d
  lea    (%r8,%rbp,1),%r11d
  add    %r12d,%r11d
  add    %r9d,%r11d
  add    %esi,%r11d
  sar    $0x11,%r11d
  mov    %r11d,%r15d
  test   $0xffffff00,%r11d
  je     L84
  not    %r11d
  sar    $0x1f,%r11d
  mov    %r11d,%r15d
L84:
  sub    %edi,%ecx
  mov    %r15b,0x1(%rdx)
  mov    %ecx,%edi
  sub    %ebp,%edi
  add    %r12d,%edi
  sar    $0x11,%edi
  mov    %edi,%r11d
  test   $0xffffff00,%edi
  je     L417
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r11d
L417:
  add    %ebp,%ecx
  mov    %r11b,0x6(%rdx)
  sub    %r12d,%ecx
  add    %r9d,%ecx
  sub    %r10d,%ecx
  add    %esi,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%edi
  test   $0xffffff00,%ecx
  je     L337
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%edi
L337:
  sub    %ebp,%r8d
  mov    %dil,0x19(%rdx)
  sub    %r12d,%r8d
  add    %esi,%r8d
  sar    $0x11,%r8d
  mov    %r8d,%ecx
  test   $0xffffff00,%r8d
  je     L322
  not    %r8d
  sar    $0x1f,%r8d
  mov    %r8d,%ecx
L322:
  mov    %cl,0x1e(%rdx)
  sub    %r14d,%r13d
  mov    (%rax),%ecx
  sub    0x10(%rax),%ecx
  add    0x40(%rax),%ecx
  sub    0x50(%rax),%ecx
  imul   $0x5ce7,0x24(%rax),%r8d
  lea    0x1000000(%r13,%rcx,1),%edi
  mov    0x28(%rax),%r11d
  imul   $0xa402,0x2c(%rax),%ecx
  imul   $0x3997,0x7c(%rax),%r12d
  imul   $0x6a6a,-0xc(%rsp),%ebp
  sub    %ecx,%r8d
  imul   $0x209f,0x34(%rax),%ecx
  add    %r8d,%ecx
  imul   $0x8b0a,0x3c(%rax),%r8d
  add    %ecx,%r8d
  imul   $0x267b,0x64(%rax),%ecx
  add    %r8d,%ecx
  imul   $0x43ef,0x6c(%rax),%r8d
  sub    %r8d,%ecx
  imul   $0xd83,0x74(%rax),%r8d
  add    %r8d,%ecx
  imul   $0x471a,%ebx,%r8d
  add    %ecx,%r12d
  imul   $0x7d86,-0x10(%rsp),%ecx
  sub    %ecx,%r8d
  imul   $0x18f8,-0x14(%rsp),%ecx
  add    %r8d,%ecx
  mov    0x78(%rax),%r8d
  add    %ecx,%ebp
  xor    %ecx,%ecx
  cmp    %r8d,%r11d
  je     L244
  mov    %r11d,%ecx
  sub    %r8d,%ecx
  mov    %ecx,%r8d
  shl    $0xd,%r8d
  sub    %r8d,%ecx
  add    %ecx,%ecx
L244:
  imul   $0x9a7e,0x38(%rax),%r8d
  mov    0x70(%rax),%r11d
  add    %ecx,%r8d
  imul   $0x1a81,0x68(%rax),%ecx
  sub    %ecx,%r8d
  mov    0x60(%rax),%ecx
  cmp    %r11d,%ecx
  je     L230
  sub    %r11d,%ecx
  imul   $0x30fa,%ecx,%ecx
  add    %ecx,%r8d
L230:
  mov    0x20(%rax),%ecx
  mov    0x30(%rax),%r11d
  cmp    %r11d,%ecx
  je     L393
  sub    %r11d,%ecx
  imul   $0x763e,%ecx,%ecx
  add    %ecx,%r8d
L393:
  lea    (%rdi,%r12,1),%ecx
  lea    (%rcx,%rbp,1),%r11d
  add    %r8d,%r11d
  sar    $0x11,%r11d
  mov    %r11d,%r13d
  test   $0xffffff00,%r11d
  je     L285
  not    %r11d
  sar    $0x1f,%r11d
  mov    %r11d,%r13d
L285:
  sub    %r12d,%edi
  mov    %r13b,0x2(%rdx)
  mov    %edi,%r11d
  sub    %ebp,%r11d
  add    %r8d,%r11d
  sar    $0x11,%r11d
  mov    %r11d,%r12d
  test   $0xffffff00,%r11d
  je     L148
  not    %r11d
  sar    $0x1f,%r11d
  mov    %r11d,%r12d
L148:
  add    %ebp,%edi
  mov    %r12b,0x5(%rdx)
  sub    %r8d,%edi
  sub    %r10d,%edi
  sar    $0x11,%edi
  mov    %edi,%r11d
  test   $0xffffff00,%edi
  je     L317
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r11d
L317:
  sub    %ebp,%ecx
  mov    %r11b,0x1a(%rdx)
  sub    %r8d,%ecx
  add    %r9d,%ecx
  sub    %r10d,%ecx
  add    %esi,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%edi
  test   $0xffffff00,%ecx
  je     L28
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%edi
L28:
  mov    %dil,0x1d(%rdx)
  imul   $0x18f8,%ebx,%ebx
  mov    0x10(%rax),%ecx
  imul   $0x5ce7,0x2c(%rax),%r8d
  add    (%rax),%ecx
  imul   $0x209f,0x24(%rax),%edi
  add    0x40(%rax),%ecx
  imul   $0x3997,0x74(%rax),%r11d
  add    0x50(%rax),%ecx
  mov    0x70(%rax),%ebp
  add    0x60(%rax),%ebp
  add    $0x1000000,%ecx
  sub    %r8d,%edi
  imul   $0x8b0a,0x34(%rax),%r8d
  sub    -0x8(%rsp),%ecx
  sub    -0x4(%rsp),%ecx
  add    %edi,%r8d
  imul   $0xd83,0x64(%rax),%edi
  add    %r8d,%edi
  imul   $0x267b,0x6c(%rax),%r8d
  sub    %r8d,%edi
  imul   $0xffff6582,0x28(%rax),%r8d
  add    %edi,%r11d
  imul   $0x471a,-0x10(%rsp),%edi
  sub    %edi,%ebx
  imul   $0x6a6a,-0x14(%rsp),%edi
  add    %edi,%ebx
  mov    0x68(%rax),%edi
  add    0x38(%rax),%edi
  imul   $0x3ffe,%edi,%edi
  add    %r8d,%edi
  imul   $0x1a81,0x78(%rax),%r8d
  sub    %r8d,%edi
  mov    0x30(%rax),%r8d
  add    0x20(%rax),%r8d
  imul   $0x763e,%r8d,%r8d
  add    %r8d,%edi
  imul   $0x30fa,%ebp,%ebp
  lea    (%rcx,%r11,1),%r8d
  imul   $0xa402,0x3c(%rax),%r12d
  imul   $0x7d86,-0xc(%rsp),%r13d
  add    %edi,%ebp
  imul   $0x43ef,0x7c(%rax),%edi
  add    %edi,%r12d
  lea    (%r8,%rbx,1),%edi
  add    %ebp,%edi
  sub    %r13d,%edi
  sub    %r12d,%edi
  sub    %r9d,%edi
  sub    %esi,%edi
  sar    $0x11,%edi
  mov    %edi,%r14d
  test   $0xffffff00,%edi
  je     L313
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r14d
L313:
  sub    %r11d,%ecx
  mov    %r14b,0x3(%rdx)
  mov    %ecx,%edi
  sub    %ebx,%edi
  add    %ebp,%edi
  sar    $0x11,%edi
  mov    %edi,%r11d
  test   $0xffffff00,%edi
  je     L53
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r11d
L53:
  add    %ebx,%ecx
  mov    %r11b,0x4(%rdx)
  sub    %ebp,%ecx
  sub    %r13d,%ecx
  add    %r12d,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%edi
  test   $0xffffff00,%ecx
  je     L382
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%edi
L382:
  sub    %ebx,%r8d
  mov    %dil,0x1b(%rdx)
  sub    %ebp,%r8d
  sub    %r10d,%r8d
  sub    %esi,%r8d
  sar    $0x11,%r8d
  mov    %r8d,%ecx
  test   $0xffffff00,%r8d
  je     L33
  not    %r8d
  sar    $0x1f,%r8d
  mov    %r8d,%ecx
L33:
  mov    %cl,0x1c(%rdx)
  mov    0x8(%rax),%r13d
  mov    0xc(%rax),%ecx
  sub    0x48(%rax),%r13d
  sub    0x4c(%rax),%ecx
  imul   $0x763e,%r13d,%ebx
  mov    0x18(%rax),%r12d
  mov    %ecx,%r15d
  sub    0x58(%rax),%r12d
  mov    0x4(%rax),%r11d
  mov    %ecx,-0x14(%rsp)
  mov    0x14(%rax),%ecx
  sub    0x54(%rax),%ecx
  mov    %ecx,%r14d
  mov    %ecx,-0x10(%rsp)
  mov    0x1c(%rax),%ecx
  sub    0x5c(%rax),%ecx
  imul   $0x43ef,0x24(%rax),%r8d
  mov    %ebx,-0x8(%rsp)
  mov    %ecx,%ebp
  mov    %ecx,-0xc(%rsp)
  mov    0x10(%rax),%ecx
  add    (%rax),%ecx
  sub    0x40(%rax),%ecx
  sub    0x50(%rax),%ecx
  sub    0x44(%rax),%r11d
  lea    0x1000000(%rbx,%rcx,1),%edi
  imul   $0x3997,0x2c(%rax),%ecx
  imul   $0x30fa,%r12d,%ebx
  add    %r8d,%ecx
  imul   $0x267b,0x34(%rax),%r8d
  add    %ebx,%edi
  mov    %ebx,-0x4(%rsp)
  imul   $0x7d86,%r11d,%ebx
  add    %r8d,%ecx
  imul   $0xd83,0x3c(%rax),%r8d
  add    %r8d,%ecx
  imul   $0xa402,0x64(%rax),%r8d
  sub    %r8d,%ecx
  imul   $0x8b0a,0x6c(%rax),%r8d
  sub    %r8d,%ecx
  imul   $0x5ce7,0x74(%rax),%r8d
  sub    %r8d,%ecx
  imul   $0x209f,0x7c(%rax),%r8d
  sub    %r8d,%ecx
  imul   $0x6a6a,%r15d,%r8d
  add    %ebx,%r8d
  imul   $0x471a,%r14d,%ebx
  add    %ebx,%r8d
  imul   $0x18f8,%ebp,%r14d
  mov    0x78(%rax),%ebp
  xor    %ebx,%ebx
  add    %r8d,%r14d
  mov    0x28(%rax),%r8d
  cmp    %ebp,%r8d
  je     L278
  sub    %ebp,%r8d
  imul   $0x3ffe,%r8d,%ebx
L278:
  imul   $0x1a81,0x38(%rax),%r8d
  add    %ebx,%r8d
  imul   $0x9a7e,0x68(%rax),%ebx
  sub    %ebx,%r8d
  mov    0x70(%rax),%ebx
  add    0x60(%rax),%ebx
  imul   $0x763e,%ebx,%ebx
  sub    %ebx,%r8d
  mov    0x30(%rax),%ebx
  add    0x20(%rax),%ebx
  imul   $0x30fa,%ebx,%ebx
  add    %r8d,%ebx
  lea    (%rdi,%rcx,1),%r8d
  lea    (%r8,%r14,1),%ebp
  add    %ebx,%ebp
  sar    $0x11,%ebp
  mov    %ebp,%r15d
  test   $0xffffff00,%ebp
  je     L400
  not    %ebp
  sar    $0x1f,%ebp
  mov    %ebp,%r15d
L400:
  sub    %ecx,%edi
  mov    %r15b,0x8(%rdx)
  mov    %edi,%ecx
  sub    %r14d,%ecx
  add    %ebx,%ecx
  sub    %r9d,%ecx
  add    %r10d,%ecx
  add    %esi,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%ebp
  test   $0xffffff00,%ecx
  je     L46
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%ebp
L46:
  add    %r14d,%edi
  mov    %bpl,0xf(%rdx)
  sub    %ebx,%edi
  sar    $0x11,%edi
  mov    %edi,%ecx
  test   $0xffffff00,%edi
  je     L284
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%ecx
L284:
  sub    %r14d,%r8d
  mov    %cl,0x10(%rdx)
  sub    %ebx,%r8d
  sub    %r9d,%r8d
  add    %esi,%r8d
  sar    $0x11,%r8d
  mov    %r8d,%ecx
  test   $0xffffff00,%r8d
  je     L108
  not    %r8d
  sar    $0x1f,%r8d
  mov    %r8d,%ecx
L108:
  mov    %cl,0x17(%rdx)
  imul   $0x6a6a,%r11d,%ebx
  mov    (%rax),%ecx
  imul   $0xd83,0x2c(%rax),%r8d
  sub    0x10(%rax),%ecx
  imul   $0x3997,0x24(%rax),%edi
  sub    0x40(%rax),%ecx
  imul   $0x5ce7,0x7c(%rax),%r14d
  add    0x50(%rax),%ecx
  imul   $0x30fa,%r13d,%r13d
  sub    %r8d,%edi
  imul   $0x43ef,0x34(%rax),%r8d
  imul   $0x763e,%r12d,%r12d
  lea    0x1000000(%r13,%rcx,1),%ecx
  sub    %r8d,%edi
  imul   $0x267b,0x3c(%rax),%r8d
  sub    %r12d,%ecx
  sub    %r8d,%edi
  imul   $0x8b0a,0x64(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x209f,0x6c(%rax),%r8d
  add    %r8d,%edi
  imul   $0xa402,0x74(%rax),%r8d
  add    %r8d,%edi
  imul   $0x1a81,0x28(%rax),%r8d
  add    %edi,%r14d
  imul   $0x18f8,-0x14(%rsp),%edi
  sub    %edi,%ebx
  imul   $0x7d86,-0x10(%rsp),%edi
  sub    %edi,%ebx
  imul   $0x471a,-0xc(%rsp),%edi
  sub    %edi,%ebx
  mov    0x68(%rax),%edi
  add    0x38(%rax),%edi
  imul   $0x3ffe,%edi,%edi
  sub    %edi,%r8d
  imul   $0x9a7e,0x78(%rax),%ebp
  mov    0x20(%rax),%edi
  add    %r8d,%ebp
  mov    0x30(%rax),%r8d
  cmp    %r8d,%edi
  je     L149
  sub    %r8d,%edi
  imul   $0x30fa,%edi,%edi
  add    %edi,%ebp
L149:
  mov    0x60(%rax),%edi
  mov    0x70(%rax),%r8d
  cmp    %r8d,%edi
  je     L436
  sub    %r8d,%edi
  imul   $0x763e,%edi,%edi
  sub    %edi,%ebp
L436:
  lea    (%rcx,%r14,1),%r8d
  lea    (%r8,%rbx,1),%edi
  add    %ebp,%edi
  add    %r9d,%edi
  add    %r10d,%edi
  sub    %esi,%edi
  sar    $0x11,%edi
  mov    %edi,%r15d
  test   $0xffffff00,%edi
  je     L214
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r15d
L214:
  sub    %r14d,%ecx
  mov    %r15b,0x9(%rdx)
  mov    %ecx,%edi
  sub    %ebx,%edi
  add    %ebp,%edi
  add    %r10d,%edi
  sar    $0x11,%edi
  mov    %edi,%r14d
  test   $0xffffff00,%edi
  je     L216
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%r14d
L216:
  add    %ebx,%ecx
  mov    %r14b,0xe(%rdx)
  sub    %ebp,%ecx
  add    %r9d,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%edi
  test   $0xffffff00,%ecx
  je     L142
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%edi
L142:
  sub    %ebx,%r8d
  mov    %dil,0x11(%rdx)
  sub    %ebp,%r8d
  sar    $0x11,%r8d
  mov    %r8d,%ecx
  test   $0xffffff00,%r8d
  je     L211
  not    %r8d
  sar    $0x1f,%r8d
  mov    %r8d,%ecx
L211:
  mov    %cl,0x16(%rdx)
  imul   $0x43ef,0x2c(%rax),%r8d
  sub    %r13d,%r12d
  imul   $0x267b,0x24(%rax),%edi
  mov    (%rax),%ecx
  imul   $0xa402,0x6c(%rax),%ebx
  sub    0x10(%rax),%ecx
  sub    0x40(%rax),%ecx
  add    0x50(%rax),%ecx
  sub    %r8d,%edi
  imul   $0xd83,0x34(%rax),%r8d
  lea    0x1000000(%r12,%rcx,1),%ecx
  mov    0x30(%rax),%ebp
  imul   $0x6a6a,-0xc(%rsp),%r12d
  add    %edi,%r8d
  imul   $0x3997,0x3c(%rax),%edi
  add    %r8d,%edi
  imul   $0x5ce7,0x64(%rax),%r8d
  sub    %r8d,%edi
  imul   $0x471a,%r11d,%r8d
  add    %edi,%ebx
  imul   $0x209f,0x74(%rax),%edi
  sub    %edi,%ebx
  imul   $0x8b0a,0x7c(%rax),%edi
  sub    %edi,%ebx
  imul   $0x7d86,-0x14(%rsp),%edi
  sub    %edi,%r8d
  imul   $0x18f8,-0x10(%rsp),%edi
  add    %r8d,%edi
  imul   $0xffffe57f,0x28(%rax),%r8d
  add    %edi,%r12d
  mov    0x68(%rax),%edi
  add    0x38(%rax),%edi
  imul   $0x3ffe,%edi,%edi
  add    %edi,%r8d
  imul   $0x9a7e,0x78(%rax),%edi
  sub    %edi,%r8d
  mov    0x20(%rax),%edi
  cmp    %ebp,%edi
  je     L342
  sub    %ebp,%edi
  imul   $0x30fa,%edi,%edi
  add    %edi,%r8d
L342:
  mov    0x60(%rax),%edi
  mov    0x70(%rax),%ebp
  cmp    %ebp,%edi
  je     L113
  sub    %ebp,%edi
  imul   $0x763e,%edi,%edi
  sub    %edi,%r8d
L113:
  lea    (%rcx,%rbx,1),%edi
  lea    (%rdi,%r12,1),%ebp
  add    %r8d,%ebp
  sar    $0x11,%ebp
  mov    %ebp,%r13d
  test   $0xffffff00,%ebp
  je     L81
  not    %ebp
  sar    $0x1f,%ebp
  mov    %ebp,%r13d
L81:
  sub    %ebx,%ecx
  mov    %r13b,0xa(%rdx)
  mov    %ecx,%ebx
  sub    %r12d,%ebx
  add    %r8d,%ebx
  add    %r9d,%ebx
  add    %r10d,%ebx
  sub    %esi,%ebx
  sar    $0x11,%ebx
  mov    %ebx,%ebp
  test   $0xffffff00,%ebx
  je     L341
  not    %ebx
  sar    $0x1f,%ebx
  mov    %ebx,%ebp
L341:
  add    %r12d,%ecx
  mov    %bpl,0xd(%rdx)
  sub    %r8d,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%ebx
  test   $0xffffff00,%ecx
  je     L330
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%ebx
L330:
  sub    %r12d,%edi
  mov    %bl,0x12(%rdx)
  sub    %r8d,%edi
  add    %r9d,%edi
  sar    $0x11,%edi
  mov    %edi,%ecx
  test   $0xffffff00,%edi
  je     L26
  not    %edi
  sar    $0x1f,%edi
  mov    %edi,%ecx
L26:
  mov    %cl,0x15(%rdx)
  imul   $0x18f8,%r11d,%r11d
  mov    0x78(%rax),%ebp
  imul   $0x267b,0x2c(%rax),%edi
  mov    0x10(%rax),%ecx
  imul   $0xd83,0x24(%rax),%r8d
  add    (%rax),%ecx
  imul   $0x5ce7,0x6c(%rax),%ebx
  sub    0x40(%rax),%ecx
  sub    0x50(%rax),%ecx
  sub    %edi,%r8d
  imul   $0x3997,0x34(%rax),%edi
  add    $0x1000000,%ecx
  sub    -0x8(%rsp),%ecx
  sub    -0x4(%rsp),%ecx
  add    %r8d,%edi
  imul   $0x209f,0x64(%rax),%r8d
  sub    %r8d,%edi
  xor    %r8d,%r8d
  add    %edi,%ebx
  imul   $0x8b0a,0x74(%rax),%edi
  sub    %edi,%ebx
  imul   $0x471a,-0x14(%rsp),%edi
  sub    %edi,%r11d
  imul   $0x6a6a,-0x10(%rsp),%edi
  add    %edi,%r11d
  mov    0x28(%rax),%edi
  cmp    %ebp,%edi
  je     L39
  sub    %ebp,%edi
  mov    %edi,%r8d
  shl    $0xd,%r8d
  sub    %r8d,%edi
  lea    (%rdi,%rdi,1),%r8d
L39:
  imul   $0x1a81,0x38(%rax),%ebp
  mov    %r8d,%edi
  imul   $0x9a7e,0x68(%rax),%r8d
  imul   $0x7d86,-0xc(%rsp),%r12d
  sub    %ebp,%edi
  imul   $0xffffbc11,0x3c(%rax),%ebp
  add    %edi,%r8d
  mov    0x70(%rax),%edi
  add    0x60(%rax),%edi
  imul   $0x763e,%edi,%edi
  sub    %edi,%r8d
  mov    0x30(%rax),%edi
  add    0x20(%rax),%edi
  imul   $0x30fa,%edi,%edi
  imul   $0xa402,0x7c(%rax),%eax
  add    %r8d,%edi
  lea    (%rcx,%rbx,1),%r8d
  add    %eax,%ebp
  lea    (%r8,%r11,1),%eax
  add    %edi,%eax
  sub    %r12d,%eax
  add    %ebp,%eax
  add    %r10d,%eax
  add    %esi,%eax
  sar    $0x11,%eax
  mov    %eax,%r13d
  test   $0xffffff00,%eax
  je     L368
  not    %eax
  sar    $0x1f,%eax
  mov    %eax,%r13d
L368:
  mov    %ecx,%eax
  mov    %r13b,0xb(%rdx)
  sub    %ebx,%eax
  mov    %eax,%ecx
  sub    %r11d,%ecx
  add    %edi,%ecx
  add    %r10d,%ecx
  add    %esi,%ecx
  sar    $0x11,%ecx
  mov    %ecx,%r10d
  test   $0xffffff00,%ecx
  je     L195
  not    %ecx
  sar    $0x1f,%ecx
  mov    %ecx,%r10d
L195:
  add    %r11d,%eax
  mov    %r10b,0xc(%rdx)
  sub    %edi,%eax
  sub    %r12d,%eax
  sub    %ebp,%eax
  sub    %r9d,%eax
  add    %esi,%eax
  sar    $0x11,%eax
  mov    %eax,%ecx
  test   $0xffffff00,%eax
  je     L332
  not    %eax
  sar    $0x1f,%eax
  mov    %eax,%ecx
L332:
  sub    %r11d,%r8d
  mov    %cl,0x13(%rdx)
  sub    %edi,%r8d
  sar    $0x11,%r8d
  mov    %r8d,%eax
  test   $0xffffff00,%r8d
  je     L213
  not    %r8d
  sar    $0x1f,%r8d
  mov    %r8d,%eax
L213:
  pop    %rbx
  pop    %rbp
  mov    %al,0x14(%rdx)
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void DCT_8x4(int *coeff, unsigned char *out) {
  register int base, val1, val2, val3;
  int tmp1, tmp2;
  int C0, C4, C16, C20;
  int C2_18, C6_22, C1_17, C3_19, C5_21, C7_23;
  register int t;
  C0 = coeff[0];
  C4 = coeff[4];
  C16 = coeff[16];
  C20 = coeff[20];
  coeff[0] = ((coeff[0]) ? 23168 * (coeff[0]) : 0);
  coeff[4] = ((coeff[4]) ? 23168 * (coeff[4]) : 0);
  coeff[16] = ((coeff[16]) ? 23168 * (coeff[16]) : 0);
  coeff[20] = ((coeff[20]) ? 23168 * (coeff[20]) : 0);
  C2_18 = coeff[2] + coeff[18];
  C6_22 = coeff[6] + coeff[22];
  C1_17 = coeff[1] + coeff[17];
  C3_19 = coeff[3] + coeff[19];
  C5_21 = coeff[5] + coeff[21];
  C7_23 = coeff[7] + coeff[23];
  base = 0x1000000;
  base += coeff[0] + coeff[4] + coeff[16] + coeff[20];
  base += ((C2_18) ? 30270 * (C2_18) : 0);
  base += ((C6_22) ? 12538 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 41986 * (coeff[9]) : 0);
  val1 += ((coeff[11]) ? 35594 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 23783 * (coeff[13]) : 0);
  val1 += ((coeff[15]) ? 8351 * (coeff[15]) : 0);
  val1 += ((coeff[25]) ? 17391 * (coeff[25]) : 0);
  val1 += ((coeff[27]) ? 14743 * (coeff[27]) : 0);
  val1 += ((coeff[29]) ? 9851 * (coeff[29]) : 0);
  val1 += ((coeff[31]) ? 3459 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 32134 * (C1_17) : 0);
  val2 += ((C3_19) ? 27242 * (C3_19) : 0);
  val2 += ((C5_21) ? 18202 * (C5_21) : 0);
  val2 += ((C7_23) ? 6392 * (C7_23) : 0);
  val3 = ((coeff[10]) ? 39550 * (coeff[10]) : 0);
  val3 += ((coeff[14] + coeff[26]) ? 16382 * (coeff[14] + coeff[26]) : 0);
  val3 += ((coeff[30]) ? 6785 * (coeff[30]) : 0);
  val3 += ((coeff[8] + coeff[12]) ? 30270 * (coeff[8] + coeff[12]) : 0);
  val3 += ((coeff[24] + coeff[28]) ? 12538 * (coeff[24] + coeff[28]) : 0);
  t = (base + val1 + val2 + val3) >> 17;
  out[0] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3 - C4 - C20) >> 17;
  out[7] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 - C16 - C20) >> 17;
  out[24] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 - C4 - C16 - C20) >> 17;
  out[31] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] - coeff[4] + coeff[16] - coeff[20];
  base += ((C2_18) ? 12538 * (C2_18) : 0);
  base -= ((C6_22) ? 30270 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 35594 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 8351 * (coeff[11]) : 0);
  val1 -= ((coeff[13]) ? 41986 * (coeff[13]) : 0);
  val1 -= ((coeff[15]) ? 23783 * (coeff[15]) : 0);
  val1 -= ((coeff[25]) ? 14743 * (coeff[25]) : 0);
  val1 -= ((coeff[27]) ? 3459 * (coeff[27]) : 0);
  val1 -= ((coeff[29]) ? 17391 * (coeff[29]) : 0);
  val1 -= ((coeff[31]) ? 9851 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 27242 * (C1_17) : 0);
  val2 -= ((C3_19) ? 6392 * (C3_19) : 0);
  val2 -= ((C5_21) ? 32134 * (C5_21) : 0);
  val2 -= ((C7_23) ? 18202 * (C7_23) : 0);
  val3 = ((coeff[10] - coeff[30]) ? 16382 * (coeff[10] - coeff[30]) : 0);
  val3 -= ((coeff[14]) ? 39550 * (coeff[14]) : 0);
  val3 += ((coeff[26]) ? 6785 * (coeff[26]) : 0);
  val3 += ((coeff[24] - coeff[28]) ? 12538 * (coeff[24] - coeff[28]) : 0);
  val3 += ((coeff[8] - coeff[12]) ? 30270 * (coeff[8] - coeff[12]) : 0);
  t = (base + val1 + val2 + val3 + C4 + C20) >> 17;
  out[1] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3) >> 17;
  out[6] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 + C4 - C16 + C20) >> 17;
  out[25] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 + C20) >> 17;
  out[30] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] - coeff[4] + coeff[16] - coeff[20];
  base -= ((C2_18) ? 12538 * (C2_18) : 0);
  base += ((C6_22) ? 30270 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 23783 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 41986 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 8351 * (coeff[13]) : 0);
  val1 += ((coeff[15]) ? 35594 * (coeff[15]) : 0);
  val1 += ((coeff[25]) ? 9851 * (coeff[25]) : 0);
  val1 -= ((coeff[27]) ? 17391 * (coeff[27]) : 0);
  val1 += ((coeff[29]) ? 3459 * (coeff[29]) : 0);
  val1 += ((coeff[31]) ? 14743 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 18202 * (C1_17) : 0);
  val2 -= ((C3_19) ? 32134 * (C3_19) : 0);
  val2 += ((C5_21) ? 6392 * (C5_21) : 0);
  val2 += ((C7_23) ? 27242 * (C7_23) : 0);
  val3 = -((coeff[10] - coeff[30]) ? 16382 * (coeff[10] - coeff[30]) : 0);
  val3 += ((coeff[14]) ? 39550 * (coeff[14]) : 0);
  val3 -= ((coeff[26]) ? 6785 * (coeff[26]) : 0);
  val3 += ((coeff[24] - coeff[28]) ? 12538 * (coeff[24] - coeff[28]) : 0);
  val3 += ((coeff[8] - coeff[12]) ? 30270 * (coeff[8] - coeff[12]) : 0);
  t = (base + val1 + val2 + val3) >> 17;
  out[2] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3) >> 17;
  out[5] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 - C16) >> 17;
  out[26] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 + C4 - C16 + C20) >> 17;
  out[29] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] + coeff[4] + coeff[16] + coeff[20];
  base -= ((C2_18) ? 30270 * (C2_18) : 0);
  base -= ((C6_22) ? 12538 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 8351 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 23783 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 35594 * (coeff[13]) : 0);
  val1 += ((coeff[25]) ? 3459 * (coeff[25]) : 0);
  val1 -= ((coeff[27]) ? 9851 * (coeff[27]) : 0);
  val1 += ((coeff[29]) ? 14743 * (coeff[29]) : 0);
  val2 = ((C1_17) ? 6392 * (C1_17) : 0);
  val2 -= ((C3_19) ? 18202 * (C3_19) : 0);
  val2 += ((C5_21) ? 27242 * (C5_21) : 0);
  val3 = -((coeff[10]) ? 39550 * (coeff[10]) : 0);
  val3 += ((coeff[14] + coeff[26]) ? 16382 * (coeff[14] + coeff[26]) : 0);
  val3 -= ((coeff[30]) ? 6785 * (coeff[30]) : 0);
  val3 += ((coeff[8] + coeff[12]) ? 30270 * (coeff[8] + coeff[12]) : 0);
  val3 += ((coeff[24] + coeff[28]) ? 12538 * (coeff[24] + coeff[28]) : 0);
  tmp1 = ((C7_23) ? 32134 * (C7_23) : 0);
  tmp2 = ((coeff[15]) ? 41986 * (coeff[15]) : 0) + ((coeff[31]) ? 17391 * (coeff[31]) : 0);
  t = (base + val1 + val2 + val3 - tmp1 - tmp2 - C4 - C20) >> 17;
  out[3] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3) >> 17;
  out[4] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 - tmp1 + tmp2) >> 17;
  out[27] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 - C16 - C20) >> 17;
  out[28] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  C2_18 = coeff[2] - coeff[18];
  C6_22 = coeff[6] - coeff[22];
  C1_17 = coeff[1] - coeff[17];
  C3_19 = coeff[3] - coeff[19];
  C5_21 = coeff[5] - coeff[21];
  C7_23 = coeff[7] - coeff[23];
  base = 0x1000000;
  base += coeff[0] + coeff[4] - coeff[16] - coeff[20];
  base += ((C2_18) ? 30270 * (C2_18) : 0);
  base += ((C6_22) ? 12538 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 17391 * (coeff[9]) : 0);
  val1 += ((coeff[11]) ? 14743 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 9851 * (coeff[13]) : 0);
  val1 += ((coeff[15]) ? 3459 * (coeff[15]) : 0);
  val1 -= ((coeff[25]) ? 41986 * (coeff[25]) : 0);
  val1 -= ((coeff[27]) ? 35594 * (coeff[27]) : 0);
  val1 -= ((coeff[29]) ? 23783 * (coeff[29]) : 0);
  val1 -= ((coeff[31]) ? 8351 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 32134 * (C1_17) : 0);
  val2 += ((C3_19) ? 27242 * (C3_19) : 0);
  val2 += ((C5_21) ? 18202 * (C5_21) : 0);
  val2 += ((C7_23) ? 6392 * (C7_23) : 0);
  val3 = ((coeff[10] - coeff[30]) ? 16382 * (coeff[10] - coeff[30]) : 0);
  val3 += ((coeff[14]) ? 6785 * (coeff[14]) : 0);
  val3 -= ((coeff[26]) ? 39550 * (coeff[26]) : 0);
  val3 -= ((coeff[24] + coeff[28]) ? 30270 * (coeff[24] + coeff[28]) : 0);
  val3 += ((coeff[8] + coeff[12]) ? 12538 * (coeff[8] + coeff[12]) : 0);
  t = (base + val1 + val2 + val3) >> 17;
  out[8] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3 - C4 + C16 + C20) >> 17;
  out[15] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3) >> 17;
  out[16] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 - C4 + C20) >> 17;
  out[23] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] - coeff[4] - coeff[16] + coeff[20];
  base += ((C2_18) ? 12538 * (C2_18) : 0);
  base -= ((C6_22) ? 30270 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 14743 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 3459 * (coeff[11]) : 0);
  val1 -= ((coeff[13]) ? 17391 * (coeff[13]) : 0);
  val1 -= ((coeff[15]) ? 9851 * (coeff[15]) : 0);
  val1 -= ((coeff[25]) ? 35594 * (coeff[25]) : 0);
  val1 += ((coeff[27]) ? 8351 * (coeff[27]) : 0);
  val1 += ((coeff[29]) ? 41986 * (coeff[29]) : 0);
  val1 += ((coeff[31]) ? 23783 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 27242 * (C1_17) : 0);
  val2 -= ((C3_19) ? 6392 * (C3_19) : 0);
  val2 -= ((C5_21) ? 32134 * (C5_21) : 0);
  val2 -= ((C7_23) ? 18202 * (C7_23) : 0);
  val3 = ((coeff[10]) ? 6785 * (coeff[10]) : 0);
  val3 -= ((coeff[14] + coeff[26]) ? 16382 * (coeff[14] + coeff[26]) : 0);
  val3 += ((coeff[30]) ? 39550 * (coeff[30]) : 0);
  val3 += ((coeff[8] - coeff[12]) ? 12538 * (coeff[8] - coeff[12]) : 0);
  val3 -= ((coeff[24] - coeff[28]) ? 30270 * (coeff[24] - coeff[28]) : 0);
  t = (base + val1 + val2 + val3 + C4 + C16 - C20) >> 17;
  out[9] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3 + C16) >> 17;
  out[14] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 + C4) >> 17;
  out[17] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3) >> 17;
  out[22] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] - coeff[4] - coeff[16] + coeff[20];
  base -= ((C2_18) ? 12538 * (C2_18) : 0);
  base += ((C6_22) ? 30270 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 9851 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 17391 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 3459 * (coeff[13]) : 0);
  val1 += ((coeff[15]) ? 14743 * (coeff[15]) : 0);
  val1 -= ((coeff[25]) ? 23783 * (coeff[25]) : 0);
  val1 += ((coeff[27]) ? 41986 * (coeff[27]) : 0);
  val1 -= ((coeff[29]) ? 8351 * (coeff[29]) : 0);
  val1 -= ((coeff[31]) ? 35594 * (coeff[31]) : 0);
  val2 = ((C1_17) ? 18202 * (C1_17) : 0);
  val2 -= ((C3_19) ? 32134 * (C3_19) : 0);
  val2 += ((C5_21) ? 6392 * (C5_21) : 0);
  val2 += ((C7_23) ? 27242 * (C7_23) : 0);
  val3 = -((coeff[10]) ? 6785 * (coeff[10]) : 0);
  val3 += ((coeff[14] + coeff[26]) ? 16382 * (coeff[14] + coeff[26]) : 0);
  val3 -= ((coeff[30]) ? 39550 * (coeff[30]) : 0);
  val3 += ((coeff[8] - coeff[12]) ? 12538 * (coeff[8] - coeff[12]) : 0);
  val3 -= ((coeff[24] - coeff[28]) ? 30270 * (coeff[24] - coeff[28]) : 0);
  t = (base + val1 + val2 + val3) >> 17;
  out[10] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3 + C4 + C16 - C20) >> 17;
  out[13] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3) >> 17;
  out[18] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3 + C4) >> 17;
  out[21] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  base = 0x1000000;
  base += coeff[0] + coeff[4] - coeff[16] - coeff[20];
  base -= ((C2_18) ? 30270 * (C2_18) : 0);
  base -= ((C6_22) ? 12538 * (C6_22) : 0);
  val1 = ((coeff[9]) ? 3459 * (coeff[9]) : 0);
  val1 -= ((coeff[11]) ? 9851 * (coeff[11]) : 0);
  val1 += ((coeff[13]) ? 14743 * (coeff[13]) : 0);
  val1 -= ((coeff[25]) ? 8351 * (coeff[25]) : 0);
  val1 += ((coeff[27]) ? 23783 * (coeff[27]) : 0);
  val1 -= ((coeff[29]) ? 35594 * (coeff[29]) : 0);
  val2 = ((C1_17) ? 6392 * (C1_17) : 0);
  val2 -= ((C3_19) ? 18202 * (C3_19) : 0);
  val2 += ((C5_21) ? 27242 * (C5_21) : 0);
  val3 = -((coeff[10] - coeff[30]) ? 16382 * (coeff[10] - coeff[30]) : 0);
  val3 -= ((coeff[14]) ? 6785 * (coeff[14]) : 0);
  val3 += ((coeff[26]) ? 39550 * (coeff[26]) : 0);
  val3 -= ((coeff[24] + coeff[28]) ? 30270 * (coeff[24] + coeff[28]) : 0);
  val3 += ((coeff[8] + coeff[12]) ? 12538 * (coeff[8] + coeff[12]) : 0);
  tmp1 = ((C7_23) ? 32134 * (C7_23) : 0);
  tmp2 = -((coeff[15]) ? 17391 * (coeff[15]) : 0) + ((coeff[31]) ? 41986 * (coeff[31]) : 0);
  t = (base + val1 + val2 + val3 - tmp1 + tmp2 + C16 + C20) >> 17;
  out[11] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 - val2 + val3 + C16 + C20) >> 17;
  out[12] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base - val1 + val2 - val3 - tmp1 - tmp2 - C4 + C20) >> 17;
  out[19] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
  t = (base + val1 - val2 - val3) >> 17;
  out[20] = t & 0xFFFFFF00 ? t < 0 ? 0 : 255 : (unsigned char)t;
}
```