user: 请将以下的汇编代码转换成C语言代码:

```asm
<ddct8x8s>:
  endbr64
  mov    %rsi,%rax
  mov    $0x0,%edx
  test   %edi,%edi
  js     L12
  movsd  D226(%rip),%xmm15
  movsd  D276(%rip),%xmm14
  movsd  D156(%rip),%xmm13
  movsd  D114(%rip),%xmm12
  movsd  D369(%rip),%xmm11
  movsd  D42(%rip),%xmm10
L27:
  mov    0x8(%rax),%rcx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rcx,%rdx,1),%xmm1
  mov    0x38(%rax),%rcx
  pxor   %xmm0,%xmm0
  cvtss2sd (%rcx,%rdx,1),%xmm0
  movapd %xmm1,%xmm4
  mulsd  %xmm15,%xmm4
  movapd %xmm0,%xmm2
  mulsd  %xmm14,%xmm2
  addsd  %xmm2,%xmm4
  cvtsd2ss %xmm4,%xmm4
  mulsd  %xmm15,%xmm0
  mulsd  %xmm14,%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  mov    0x18(%rax),%rcx
  pxor   %xmm2,%xmm2
  cvtss2sd (%rcx,%rdx,1),%xmm2
  mov    0x28(%rax),%rcx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rcx,%rdx,1),%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm13,%xmm3
  movapd %xmm1,%xmm5
  mulsd  %xmm12,%xmm5
  addsd  %xmm5,%xmm3
  cvtsd2ss %xmm3,%xmm3
  mulsd  %xmm13,%xmm1
  mulsd  %xmm12,%xmm2
  subsd  %xmm2,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movaps %xmm4,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm5
  addss  %xmm1,%xmm5
  addss  %xmm3,%xmm4
  movss  %xmm4,-0x4(%rsp)
  subss  %xmm0,%xmm1
  movaps %xmm2,%xmm6
  addss  %xmm5,%xmm6
  cvtss2sd %xmm6,%xmm6
  mulsd  %xmm11,%xmm6
  cvtsd2ss %xmm6,%xmm6
  subss  %xmm5,%xmm2
  cvtss2sd %xmm2,%xmm2
  mulsd  %xmm11,%xmm2
  cvtsd2ss %xmm2,%xmm2
  mov    0x10(%rax),%rcx
  pxor   %xmm7,%xmm7
  cvtss2sd (%rcx,%rdx,1),%xmm7
  mov    0x30(%rax),%rcx
  pxor   %xmm5,%xmm5
  cvtss2sd (%rcx,%rdx,1),%xmm5
  movapd %xmm7,%xmm3
  mulsd  %xmm10,%xmm3
  movapd %xmm3,%xmm4
  movsd  D411(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  %xmm3,%xmm4
  cvtsd2ss %xmm4,%xmm4
  mulsd  %xmm10,%xmm5
  mulsd  D411(%rip),%xmm7
  subsd  %xmm7,%xmm5
  cvtsd2ss %xmm5,%xmm5
  mov    %rdx,%rcx
  add    (%rax),%rcx
  movss  (%rcx),%xmm0
  mov    0x20(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm8
  movaps %xmm0,%xmm7
  addss  %xmm8,%xmm7
  cvtss2sd %xmm7,%xmm7
  mulsd  D131(%rip),%xmm7
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm7,%xmm3
  subss  %xmm8,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  D131(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm3,%xmm9
  subss  %xmm4,%xmm9
  movaps %xmm0,%xmm8
  subss  %xmm5,%xmm8
  addss  %xmm4,%xmm3
  addss  %xmm5,%xmm0
  movss  -0x4(%rsp),%xmm4
  movaps %xmm4,%xmm5
  addss  %xmm3,%xmm5
  movss  %xmm5,(%rcx)
  mov    0x38(%rax),%rcx
  subss  %xmm4,%xmm3
  movss  %xmm3,(%rcx,%rdx,1)
  mov    0x10(%rax),%rcx
  movaps %xmm6,%xmm3
  addss  %xmm0,%xmm3
  movss  %xmm3,(%rcx,%rdx,1)
  mov    0x28(%rax),%rcx
  subss  %xmm6,%xmm0
  movss  %xmm0,(%rcx,%rdx,1)
  mov    0x20(%rax),%rcx
  movaps %xmm9,%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rcx,%rdx,1)
  mov    0x18(%rax),%rcx
  addss  %xmm9,%xmm1
  movss  %xmm1,(%rcx,%rdx,1)
  mov    0x30(%rax),%rcx
  movaps %xmm8,%xmm0
  subss  %xmm2,%xmm0
  movss  %xmm0,(%rcx,%rdx,1)
  mov    0x8(%rax),%rcx
  addss  %xmm8,%xmm2
  movss  %xmm2,(%rcx,%rdx,1)
  add    $0x4,%rdx
  cmp    $0x20,%rdx
  jne    L27
  mov    %rax,%rdx
  add    $0x40,%rax
  movsd  D226(%rip),%xmm15
  movsd  D276(%rip),%xmm14
  movsd  D156(%rip),%xmm13
  movsd  D114(%rip),%xmm12
  movsd  D369(%rip),%xmm11
  movsd  D42(%rip),%xmm10
L8:
  mov    (%rdx),%rcx
  pxor   %xmm1,%xmm1
  cvtss2sd 0x4(%rcx),%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd 0x1c(%rcx),%xmm0
  movapd %xmm1,%xmm4
  mulsd  %xmm15,%xmm4
  movapd %xmm0,%xmm2
  mulsd  %xmm14,%xmm2
  addsd  %xmm2,%xmm4
  cvtsd2ss %xmm4,%xmm4
  mulsd  %xmm15,%xmm0
  mulsd  %xmm14,%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd 0xc(%rcx),%xmm2
  pxor   %xmm1,%xmm1
  cvtss2sd 0x14(%rcx),%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm13,%xmm3
  movapd %xmm1,%xmm5
  mulsd  %xmm12,%xmm5
  addsd  %xmm5,%xmm3
  cvtsd2ss %xmm3,%xmm3
  mulsd  %xmm13,%xmm1
  mulsd  %xmm12,%xmm2
  subsd  %xmm2,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movaps %xmm4,%xmm2
  subss  %xmm3,%xmm2
  movaps %xmm0,%xmm5
  addss  %xmm1,%xmm5
  addss  %xmm3,%xmm4
  subss  %xmm0,%xmm1
  movaps %xmm2,%xmm6
  addss  %xmm5,%xmm6
  cvtss2sd %xmm6,%xmm6
  mulsd  %xmm11,%xmm6
  cvtsd2ss %xmm6,%xmm6
  subss  %xmm5,%xmm2
  cvtss2sd %xmm2,%xmm2
  mulsd  %xmm11,%xmm2
  cvtsd2ss %xmm2,%xmm2
  pxor   %xmm7,%xmm7
  cvtss2sd 0x8(%rcx),%xmm7
  pxor   %xmm5,%xmm5
  cvtss2sd 0x18(%rcx),%xmm5
  movapd %xmm7,%xmm8
  mulsd  %xmm10,%xmm8
  movsd  D411(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  %xmm3,%xmm8
  cvtsd2ss %xmm8,%xmm8
  mulsd  %xmm10,%xmm5
  mulsd  D411(%rip),%xmm7
  subsd  %xmm7,%xmm5
  cvtsd2ss %xmm5,%xmm5
  movss  (%rcx),%xmm0
  movss  0x10(%rcx),%xmm9
  movaps %xmm0,%xmm7
  addss  %xmm9,%xmm7
  cvtss2sd %xmm7,%xmm7
  mulsd  D131(%rip),%xmm7
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm7,%xmm3
  subss  %xmm9,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  D131(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm3,%xmm7
  subss  %xmm8,%xmm7
  movaps %xmm0,%xmm9
  subss  %xmm5,%xmm9
  addss  %xmm8,%xmm3
  addss  %xmm5,%xmm0
  movaps %xmm4,%xmm5
  addss  %xmm3,%xmm5
  movss  %xmm5,(%rcx)
  mov    (%rdx),%rcx
  subss  %xmm4,%xmm3
  movss  %xmm3,0x1c(%rcx)
  mov    (%rdx),%rcx
  movaps %xmm6,%xmm3
  addss  %xmm0,%xmm3
  movss  %xmm3,0x8(%rcx)
  mov    (%rdx),%rcx
  subss  %xmm6,%xmm0
  movss  %xmm0,0x14(%rcx)
  mov    (%rdx),%rcx
  movaps %xmm7,%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,0x10(%rcx)
  mov    (%rdx),%rcx
  addss  %xmm7,%xmm1
  movss  %xmm1,0xc(%rcx)
  mov    (%rdx),%rcx
  movaps %xmm9,%xmm0
  subss  %xmm2,%xmm0
  movss  %xmm0,0x18(%rcx)
  mov    (%rdx),%rcx
  addss  %xmm9,%xmm2
  movss  %xmm2,0x4(%rcx)
  add    $0x8,%rdx
  cmp    %rax,%rdx
  jne    L8
  ret
L12:
  mov    $0x0,%edx
  movsd  D131(%rip),%xmm15
  movsd  D42(%rip),%xmm14
  movsd  D411(%rip),%xmm13
  movsd  D369(%rip),%xmm12
  movsd  D226(%rip),%xmm11
L37:
  mov    %rdx,%rcx
  add    (%rax),%rcx
  movss  (%rcx),%xmm4
  mov    0x38(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm0
  movaps %xmm4,%xmm1
  addss  %xmm0,%xmm1
  subss  %xmm0,%xmm4
  mov    0x10(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm0
  mov    0x28(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm3
  movaps %xmm0,%xmm2
  addss  %xmm3,%xmm2
  subss  %xmm3,%xmm0
  mov    0x20(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm6
  mov    0x18(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm3
  movaps %xmm6,%xmm8
  addss  %xmm3,%xmm8
  subss  %xmm3,%xmm6
  mov    0x30(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm7
  mov    0x8(%rax),%rsi
  movss  (%rsi,%rdx,1),%xmm3
  movaps %xmm7,%xmm9
  addss  %xmm3,%xmm9
  subss  %xmm3,%xmm7
  movaps %xmm1,%xmm3
  addss  %xmm8,%xmm3
  movaps %xmm2,%xmm10
  addss  %xmm9,%xmm10
  movaps %xmm3,%xmm5
  addss  %xmm10,%xmm5
  cvtss2sd %xmm5,%xmm5
  mulsd  %xmm15,%xmm5
  cvtsd2ss %xmm5,%xmm5
  movss  %xmm5,(%rcx)
  mov    0x20(%rax),%rcx
  subss  %xmm10,%xmm3
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm15,%xmm3
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%rcx,%rdx,1)
  subss  %xmm8,%xmm1
  cvtss2sd %xmm1,%xmm1
  subss  %xmm9,%xmm2
  cvtss2sd %xmm2,%xmm2
  mov    0x10(%rax),%rcx
  movapd %xmm1,%xmm3
  mulsd  %xmm14,%xmm3
  movapd %xmm2,%xmm5
  mulsd  %xmm13,%xmm5
  subsd  %xmm5,%xmm3
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%rcx,%rdx,1)
  mov    0x30(%rax),%rcx
  mulsd  %xmm14,%xmm2
  mulsd  %xmm13,%xmm1
  addsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm2,%xmm1
  movss  %xmm1,(%rcx,%rdx,1)
  movaps %xmm0,%xmm3
  subss  %xmm7,%xmm3
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm12,%xmm3
  cvtsd2ss %xmm3,%xmm3
  addss  %xmm7,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm12,%xmm0
  pxor   %xmm2,%xmm2
  cvtsd2ss %xmm0,%xmm2
  movaps %xmm4,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  movaps %xmm6,%xmm1
  addss  %xmm2,%xmm1
  cvtss2sd %xmm1,%xmm1
  mov    0x8(%rax),%rcx
  movapd %xmm0,%xmm5
  mulsd  %xmm11,%xmm5
  movsd  D276(%rip),%xmm7
  mulsd  %xmm1,%xmm7
  subsd  %xmm7,%xmm5
  cvtsd2ss %xmm5,%xmm5
  movss  %xmm5,(%rcx,%rdx,1)
  mov    0x38(%rax),%rcx
  mulsd  %xmm11,%xmm1
  mulsd  D276(%rip),%xmm0
  addsd  %xmm0,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rcx,%rdx,1)
  subss  %xmm3,%xmm4
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm4,%xmm0
  subss  %xmm6,%xmm2
  cvtss2sd %xmm2,%xmm2
  mov    0x18(%rax),%rcx
  movsd  D156(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D114(%rip),%xmm3
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rcx,%rdx,1)
  mov    0x28(%rax),%rcx
  mulsd  D156(%rip),%xmm2
  mulsd  D114(%rip),%xmm0
  addsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm2,%xmm0
  movss  %xmm0,(%rcx,%rdx,1)
  add    $0x4,%rdx
  cmp    $0x20,%rdx
  jne    L37
  mov    %rax,%rdx
  add    $0x40,%rax
  movsd  D131(%rip),%xmm15
  movsd  D42(%rip),%xmm14
  movsd  D411(%rip),%xmm13
  movsd  D369(%rip),%xmm12
  movsd  D226(%rip),%xmm11
L1:
  mov    (%rdx),%rcx
  movss  (%rcx),%xmm4
  movss  0x1c(%rcx),%xmm2
  movaps %xmm4,%xmm1
  addss  %xmm2,%xmm1
  subss  %xmm2,%xmm4
  movss  0x8(%rcx),%xmm7
  movss  0x14(%rcx),%xmm3
  movaps %xmm7,%xmm2
  addss  %xmm3,%xmm2
  subss  %xmm3,%xmm7
  movss  0x10(%rcx),%xmm6
  movss  0xc(%rcx),%xmm0
  movaps %xmm6,%xmm9
  addss  %xmm0,%xmm9
  subss  %xmm0,%xmm6
  movss  0x18(%rcx),%xmm0
  movss  0x4(%rcx),%xmm3
  movaps %xmm0,%xmm8
  addss  %xmm3,%xmm8
  subss  %xmm3,%xmm0
  movaps %xmm1,%xmm3
  addss  %xmm9,%xmm3
  movaps %xmm2,%xmm10
  addss  %xmm8,%xmm10
  movaps %xmm3,%xmm5
  addss  %xmm10,%xmm5
  cvtss2sd %xmm5,%xmm5
  mulsd  %xmm15,%xmm5
  cvtsd2ss %xmm5,%xmm5
  movss  %xmm5,(%rcx)
  mov    (%rdx),%rcx
  subss  %xmm10,%xmm3
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm15,%xmm3
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,0x10(%rcx)
  subss  %xmm9,%xmm1
  cvtss2sd %xmm1,%xmm1
  subss  %xmm8,%xmm2
  cvtss2sd %xmm2,%xmm2
  mov    (%rdx),%rcx
  movapd %xmm1,%xmm3
  mulsd  %xmm14,%xmm3
  movapd %xmm2,%xmm5
  mulsd  %xmm13,%xmm5
  subsd  %xmm5,%xmm3
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,0x8(%rcx)
  mov    (%rdx),%rcx
  mulsd  %xmm14,%xmm2
  mulsd  %xmm13,%xmm1
  addsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm2,%xmm1
  movss  %xmm1,0x18(%rcx)
  movaps %xmm7,%xmm3
  subss  %xmm0,%xmm3
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm12,%xmm3
  cvtsd2ss %xmm3,%xmm3
  addss  %xmm0,%xmm7
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm7,%xmm0
  mulsd  %xmm12,%xmm0
  pxor   %xmm2,%xmm2
  cvtsd2ss %xmm0,%xmm2
  movaps %xmm4,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  movaps %xmm6,%xmm1
  addss  %xmm2,%xmm1
  cvtss2sd %xmm1,%xmm1
  mov    (%rdx),%rcx
  movapd %xmm0,%xmm5
  mulsd  %xmm11,%xmm5
  movsd  D276(%rip),%xmm7
  mulsd  %xmm1,%xmm7
  subsd  %xmm7,%xmm5
  cvtsd2ss %xmm5,%xmm5
  movss  %xmm5,0x4(%rcx)
  mov    (%rdx),%rcx
  mulsd  %xmm11,%xmm1
  mulsd  D276(%rip),%xmm0
  addsd  %xmm0,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x1c(%rcx)
  subss  %xmm3,%xmm4
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm4,%xmm0
  subss  %xmm6,%xmm2
  cvtss2sd %xmm2,%xmm2
  mov    (%rdx),%rcx
  movsd  D156(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D114(%rip),%xmm3
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0xc(%rcx)
  mov    (%rdx),%rcx
  mulsd  D156(%rip),%xmm2
  mulsd  D114(%rip),%xmm0
  addsd  %xmm0,%xmm2
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm2,%xmm0
  movss  %xmm0,0x14(%rcx)
  add    $0x8,%rdx
  cmp    %rax,%rdx
  jne    L1
  ret
```

tool_calls: name: disassemble_data
arguments: label: D226
type: f64
name: disassemble_data
arguments: label: D276
type: f64
name: disassemble_data
arguments: label: D156
type: f64
name: disassemble_data
arguments: label: D114
type: f64
name: disassemble_data
arguments: label: D369
type: f64
name: disassemble_data
arguments: label: D42
type: f64
name: disassemble_data
arguments: label: D411
type: f64
name: disassemble_data
arguments: label: D131
type: f64

tool: D226: 0.4903926402016152

tool: D276: 0.09754516100806414

tool: D156: 0.4157348061512726

tool: D114: 0.2777851165098011

tool: D369: 0.7071067811865476

tool: D42: 0.46193976625564337

tool: D411: 0.1913417161825449

tool: D131: 0.3535533905932738

assistant: ```c
void ddct8x8s(int isgn, float **a) {
  int j;
  float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
  float xr, xi;
  if (isgn < 0) {
    for (j = 0; j <= 7; j++) {
      x0r = a[0][j] + a[7][j];
      x1r = a[0][j] - a[7][j];
      x0i = a[2][j] + a[5][j];
      x1i = a[2][j] - a[5][j];
      x2r = a[4][j] + a[3][j];
      x3r = a[4][j] - a[3][j];
      x2i = a[6][j] + a[1][j];
      x3i = a[6][j] - a[1][j];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[0][j] = 0.35355339059327376220 * (xr + xi);
      a[4][j] = 0.35355339059327376220 * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[2][j] = 0.46193976625564337806 * xr - 0.19134171618254488586 * xi;
      a[6][j] = 0.46193976625564337806 * xi + 0.19134171618254488586 * xr;
      xr = 0.70710678118654752440 * (x1i - x3i);
      x1i = 0.70710678118654752440 * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[1][j] = 0.49039264020161522456 * x1r - 0.09754516100806413392 * x1i;
      a[7][j] = 0.49039264020161522456 * x1i + 0.09754516100806413392 * x1r;
      a[3][j] = 0.41573480615127261854 * x3r - 0.27778511650980111237 * x3i;
      a[5][j] = 0.41573480615127261854 * x3i + 0.27778511650980111237 * x3r;
    }
    for (j = 0; j <= 7; j++) {
      x0r = a[j][0] + a[j][7];
      x1r = a[j][0] - a[j][7];
      x0i = a[j][2] + a[j][5];
      x1i = a[j][2] - a[j][5];
      x2r = a[j][4] + a[j][3];
      x3r = a[j][4] - a[j][3];
      x2i = a[j][6] + a[j][1];
      x3i = a[j][6] - a[j][1];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[j][0] = 0.35355339059327376220 * (xr + xi);
      a[j][4] = 0.35355339059327376220 * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[j][2] = 0.46193976625564337806 * xr - 0.19134171618254488586 * xi;
      a[j][6] = 0.46193976625564337806 * xi + 0.19134171618254488586 * xr;
      xr = 0.70710678118654752440 * (x1i - x3i);
      x1i = 0.70710678118654752440 * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[j][1] = 0.49039264020161522456 * x1r - 0.09754516100806413392 * x1i;
      a[j][7] = 0.49039264020161522456 * x1i + 0.09754516100806413392 * x1r;
      a[j][3] = 0.41573480615127261854 * x3r - 0.27778511650980111237 * x3i;
      a[j][5] = 0.41573480615127261854 * x3i + 0.27778511650980111237 * x3r;
    }
  } else {
    for (j = 0; j <= 7; j++) {
      x1r = 0.49039264020161522456 * a[1][j] + 0.09754516100806413392 * a[7][j];
      x1i = 0.49039264020161522456 * a[7][j] - 0.09754516100806413392 * a[1][j];
      x3r = 0.41573480615127261854 * a[3][j] + 0.27778511650980111237 * a[5][j];
      x3i = 0.41573480615127261854 * a[5][j] - 0.27778511650980111237 * a[3][j];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = 0.70710678118654752440 * (xr + xi);
      x3r = 0.70710678118654752440 * (xr - xi);
      xr = 0.46193976625564337806 * a[2][j] + 0.19134171618254488586 * a[6][j];
      xi = 0.46193976625564337806 * a[6][j] - 0.19134171618254488586 * a[2][j];
      x0r = 0.35355339059327376220 * (a[0][j] + a[4][j]);
      x0i = 0.35355339059327376220 * (a[0][j] - a[4][j]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[0][j] = x0r + x1r;
      a[7][j] = x0r - x1r;
      a[2][j] = x0i + x1i;
      a[5][j] = x0i - x1i;
      a[4][j] = x2r - x3i;
      a[3][j] = x2r + x3i;
      a[6][j] = x2i - x3r;
      a[1][j] = x2i + x3r;
    }
    for (j = 0; j <= 7; j++) {
      x1r = 0.49039264020161522456 * a[j][1] + 0.09754516100806413392 * a[j][7];
      x1i = 0.49039264020161522456 * a[j][7] - 0.09754516100806413392 * a[j][1];
      x3r = 0.41573480615127261854 * a[j][3] + 0.27778511650980111237 * a[j][5];
      x3i = 0.41573480615127261854 * a[j][5] - 0.27778511650980111237 * a[j][3];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = 0.70710678118654752440 * (xr + xi);
      x3r = 0.70710678118654752440 * (xr - xi);
      xr = 0.46193976625564337806 * a[j][2] + 0.19134171618254488586 * a[j][6];
      xi = 0.46193976625564337806 * a[j][6] - 0.19134171618254488586 * a[j][2];
      x0r = 0.35355339059327376220 * (a[j][0] + a[j][4]);
      x0i = 0.35355339059327376220 * (a[j][0] - a[j][4]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[j][0] = x0r + x1r;
      a[j][7] = x0r - x1r;
      a[j][2] = x0i + x1i;
      a[j][5] = x0i - x1i;
      a[j][4] = x2r - x3i;
      a[j][3] = x2r + x3i;
      a[j][6] = x2i - x3r;
      a[j][1] = x2i + x3r;
    }
  }
}
```