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

```asm
<ddct8x8s>:
  endbr64
  push   %rbp
  mov    %rsi,%rcx
  mov    %edi,%ebp
  xor    %edx,%edx
  push   %rbx
  mov    0x8(%rsi),%rsi
  mov    0x38(%rcx),%rdi
  mov    0x18(%rcx),%r8
  mov    0x28(%rcx),%r9
  mov    0x10(%rcx),%r10
  mov    0x30(%rcx),%r11
  mov    (%rcx),%rax
  mov    0x20(%rcx),%rbx
  test   %ebp,%ebp
  js     L21
  movsd  D145(%rip),%xmm5
  movsd  D49(%rip),%xmm6
  movsd  D72(%rip),%xmm4
  movsd  D81(%rip),%xmm7
  movsd  D31(%rip),%xmm8
  movsd  %xmm5,-0x18(%rsp)
  movsd  D40(%rip),%xmm9
  movsd  %xmm6,-0x10(%rsp)
  movsd  D17(%rip),%xmm5
  movsd  D8(%rip),%xmm6
  nopw   0x0(%rax,%rax,1)
L20:
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  pxor   %xmm14,%xmm14
  movsd  -0x10(%rsp),%xmm15
  cvtss2sd (%rsi,%rdx,1),%xmm1
  cvtss2sd (%rdi,%rdx,1),%xmm0
  movapd %xmm1,%xmm10
  movapd %xmm0,%xmm2
  mulsd  %xmm7,%xmm2
  cvtss2sd (%r10,%rdx,1),%xmm14
  mulsd  %xmm7,%xmm1
  mulsd  %xmm6,%xmm10
  mulsd  %xmm6,%xmm0
  addsd  %xmm2,%xmm10
  pxor   %xmm2,%xmm2
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%r8,%rdx,1),%xmm2
  movapd %xmm2,%xmm11
  cvtss2sd (%r9,%rdx,1),%xmm1
  mulsd  %xmm8,%xmm11
  movapd %xmm1,%xmm3
  mulsd  %xmm9,%xmm3
  cvtsd2ss %xmm10,%xmm10
  mulsd  %xmm9,%xmm2
  cvtsd2ss %xmm0,%xmm0
  mulsd  %xmm8,%xmm1
  addsd  %xmm11,%xmm3
  movaps %xmm0,%xmm11
  subsd  %xmm2,%xmm1
  movaps %xmm10,%xmm2
  cvtsd2ss %xmm3,%xmm3
  subss  %xmm3,%xmm2
  addss  %xmm3,%xmm10
  movapd %xmm15,%xmm3
  mulsd  %xmm14,%xmm3
  cvtsd2ss %xmm1,%xmm1
  addss  %xmm1,%xmm11
  subss  %xmm0,%xmm1
  mulsd  %xmm4,%xmm14
  movaps %xmm2,%xmm12
  addss  %xmm11,%xmm12
  subss  %xmm11,%xmm2
  pxor   %xmm11,%xmm11
  cvtss2sd (%r11,%rdx,1),%xmm11
  movapd %xmm11,%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  %xmm15,%xmm11
  movsd  -0x18(%rsp),%xmm15
  cvtss2sd %xmm12,%xmm12
  cvtss2sd %xmm2,%xmm2
  mulsd  %xmm5,%xmm12
  mulsd  %xmm5,%xmm2
  addsd  %xmm0,%xmm3
  movss  (%rax,%rdx,1),%xmm0
  subsd  %xmm14,%xmm11
  movss  (%rbx,%rdx,1),%xmm14
  movaps %xmm0,%xmm13
  cvtsd2ss %xmm12,%xmm12
  addss  %xmm14,%xmm13
  subss  %xmm14,%xmm0
  cvtsd2ss %xmm3,%xmm3
  cvtsd2ss %xmm2,%xmm2
  cvtsd2ss %xmm11,%xmm11
  cvtss2sd %xmm13,%xmm13
  mulsd  %xmm15,%xmm13
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm15,%xmm0
  cvtsd2ss %xmm13,%xmm13
  movaps %xmm13,%xmm15
  subss  %xmm3,%xmm15
  addss  %xmm13,%xmm3
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm0,%xmm14
  subss  %xmm11,%xmm14
  addss  %xmm11,%xmm0
  movaps %xmm10,%xmm11
  addss  %xmm3,%xmm11
  subss  %xmm10,%xmm3
  movss  %xmm11,(%rax,%rdx,1)
  movss  %xmm3,(%rdi,%rdx,1)
  movaps %xmm12,%xmm3
  addss  %xmm0,%xmm3
  subss  %xmm12,%xmm0
  movss  %xmm3,(%r10,%rdx,1)
  movss  %xmm0,(%r9,%rdx,1)
  movaps %xmm15,%xmm0
  subss  %xmm1,%xmm0
  addss  %xmm15,%xmm1
  movss  %xmm0,(%rbx,%rdx,1)
  movaps %xmm14,%xmm0
  subss  %xmm2,%xmm0
  addss  %xmm14,%xmm2
  movss  %xmm1,(%r8,%rdx,1)
  movss  %xmm0,(%r11,%rdx,1)
  movss  %xmm2,(%rsi,%rdx,1)
  add    $0x4,%rdx
  cmp    $0x20,%rdx
  jne    L20
  lea    0x8(%rcx),%rdx
  add    $0x40,%rcx
  jmp    L42
  nopl   0x0(%rax)
L51:
  mov    (%rdx),%rax
  add    $0x8,%rdx
L42:
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  pxor   %xmm14,%xmm14
  movsd  -0x10(%rsp),%xmm15
  cvtss2sd 0x4(%rax),%xmm1
  cvtss2sd 0x1c(%rax),%xmm0
  movapd %xmm1,%xmm10
  movapd %xmm0,%xmm2
  mulsd  %xmm7,%xmm2
  cvtss2sd 0x8(%rax),%xmm14
  mulsd  %xmm7,%xmm1
  mulsd  %xmm6,%xmm10
  mulsd  %xmm6,%xmm0
  addsd  %xmm2,%xmm10
  pxor   %xmm2,%xmm2
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0xc(%rax),%xmm2
  movapd %xmm2,%xmm11
  cvtss2sd 0x14(%rax),%xmm1
  mulsd  %xmm8,%xmm11
  movapd %xmm1,%xmm3
  mulsd  %xmm9,%xmm3
  cvtsd2ss %xmm10,%xmm10
  mulsd  %xmm9,%xmm2
  cvtsd2ss %xmm0,%xmm0
  mulsd  %xmm8,%xmm1
  addsd  %xmm11,%xmm3
  movaps %xmm0,%xmm11
  subsd  %xmm2,%xmm1
  movaps %xmm10,%xmm2
  cvtsd2ss %xmm3,%xmm3
  subss  %xmm3,%xmm2
  addss  %xmm3,%xmm10
  movapd %xmm15,%xmm3
  mulsd  %xmm14,%xmm3
  cvtsd2ss %xmm1,%xmm1
  addss  %xmm1,%xmm11
  subss  %xmm0,%xmm1
  mulsd  %xmm4,%xmm14
  movaps %xmm2,%xmm12
  addss  %xmm11,%xmm12
  subss  %xmm11,%xmm2
  pxor   %xmm11,%xmm11
  cvtss2sd 0x18(%rax),%xmm11
  movapd %xmm11,%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  %xmm15,%xmm11
  movsd  -0x18(%rsp),%xmm15
  cvtss2sd %xmm12,%xmm12
  cvtss2sd %xmm2,%xmm2
  mulsd  %xmm5,%xmm12
  mulsd  %xmm5,%xmm2
  addsd  %xmm0,%xmm3
  movss  (%rax),%xmm0
  subsd  %xmm14,%xmm11
  movss  0x10(%rax),%xmm14
  movaps %xmm0,%xmm13
  cvtsd2ss %xmm12,%xmm12
  addss  %xmm14,%xmm13
  subss  %xmm14,%xmm0
  cvtsd2ss %xmm3,%xmm3
  cvtsd2ss %xmm2,%xmm2
  cvtsd2ss %xmm11,%xmm11
  cvtss2sd %xmm13,%xmm13
  mulsd  %xmm15,%xmm13
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm15,%xmm0
  cvtsd2ss %xmm13,%xmm13
  movaps %xmm13,%xmm15
  subss  %xmm3,%xmm15
  addss  %xmm13,%xmm3
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm0,%xmm14
  subss  %xmm11,%xmm14
  addss  %xmm11,%xmm0
  movaps %xmm10,%xmm11
  addss  %xmm3,%xmm11
  subss  %xmm10,%xmm3
  movss  %xmm3,0x1c(%rax)
  movaps %xmm12,%xmm3
  addss  %xmm0,%xmm3
  subss  %xmm12,%xmm0
  movss  %xmm11,(%rax)
  movss  %xmm0,0x14(%rax)
  movaps %xmm15,%xmm0
  subss  %xmm1,%xmm0
  addss  %xmm15,%xmm1
  movss  %xmm3,0x8(%rax)
  movss  %xmm0,0x10(%rax)
  movaps %xmm14,%xmm0
  subss  %xmm2,%xmm0
  addss  %xmm14,%xmm2
  movss  %xmm1,0xc(%rax)
  movss  %xmm0,0x18(%rax)
  movss  %xmm2,0x4(%rax)
  cmp    %rdx,%rcx
  jne    L51
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax)
L21:
  movsd  D145(%rip),%xmm7
  movsd  D72(%rip),%xmm4
  movsd  D17(%rip),%xmm5
  movsd  D8(%rip),%xmm6
  movsd  D31(%rip),%xmm8
  movsd  %xmm7,-0x18(%rsp)
  movsd  D49(%rip),%xmm7
  movsd  D40(%rip),%xmm9
  movsd  %xmm4,-0x8(%rsp)
  movsd  %xmm7,-0x10(%rsp)
  movsd  D81(%rip),%xmm7
  nopl   0x0(%rax)
L65:
  movss  (%rax,%rdx,1),%xmm2
  movss  (%rbx,%rdx,1),%xmm11
  movss  (%rdi,%rdx,1),%xmm1
  movss  (%r8,%rdx,1),%xmm0
  movss  (%r10,%rdx,1),%xmm12
  movss  (%r9,%rdx,1),%xmm3
  movaps %xmm2,%xmm10
  movaps %xmm11,%xmm14
  addss  %xmm0,%xmm14
  addss  %xmm1,%xmm10
  subss  %xmm1,%xmm2
  subss  %xmm0,%xmm11
  movaps %xmm12,%xmm1
  movss  (%r11,%rdx,1),%xmm0
  subss  %xmm3,%xmm12
  addss  %xmm3,%xmm1
  movss  (%rsi,%rdx,1),%xmm3
  movaps %xmm0,%xmm13
  addss  %xmm3,%xmm13
  subss  %xmm3,%xmm0
  movaps %xmm10,%xmm3
  addss  %xmm14,%xmm3
  movaps %xmm1,%xmm15
  subss  %xmm14,%xmm10
  movsd  -0x10(%rsp),%xmm14
  addss  %xmm13,%xmm15
  subss  %xmm13,%xmm1
  movaps %xmm3,%xmm4
  cvtss2sd %xmm10,%xmm10
  addss  %xmm15,%xmm4
  subss  %xmm15,%xmm3
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm13
  mulsd  %xmm14,%xmm1
  cvtss2sd %xmm4,%xmm4
  mulsd  -0x18(%rsp),%xmm4
  cvtss2sd %xmm3,%xmm3
  mulsd  -0x18(%rsp),%xmm3
  cvtsd2ss %xmm4,%xmm4
  movss  %xmm4,(%rax,%rdx,1)
  movsd  -0x8(%rsp),%xmm4
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%rbx,%rdx,1)
  movapd %xmm14,%xmm3
  mulsd  %xmm10,%xmm3
  mulsd  %xmm4,%xmm13
  mulsd  %xmm4,%xmm10
  subsd  %xmm13,%xmm3
  addsd  %xmm10,%xmm1
  movaps %xmm2,%xmm10
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%r10,%rdx,1)
  movaps %xmm12,%xmm3
  subss  %xmm0,%xmm3
  addss  %xmm12,%xmm0
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%r11,%rdx,1)
  movaps %xmm11,%xmm1
  cvtss2sd %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm5,%xmm3
  mulsd  %xmm5,%xmm0
  cvtsd2ss %xmm3,%xmm3
  addss  %xmm3,%xmm10
  subss  %xmm3,%xmm2
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm0,%xmm1
  subss  %xmm11,%xmm0
  cvtss2sd %xmm10,%xmm10
  movapd %xmm10,%xmm12
  cvtss2sd %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm13
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm3
  mulsd  %xmm6,%xmm12
  mulsd  %xmm7,%xmm13
  mulsd  %xmm6,%xmm1
  mulsd  %xmm7,%xmm10
  mulsd  %xmm9,%xmm3
  mulsd  %xmm8,%xmm0
  subsd  %xmm13,%xmm12
  addsd  %xmm10,%xmm1
  cvtsd2ss %xmm12,%xmm12
  movss  %xmm12,(%rsi,%rdx,1)
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rdi,%rdx,1)
  movapd %xmm2,%xmm1
  mulsd  %xmm8,%xmm1
  mulsd  %xmm9,%xmm2
  subsd  %xmm3,%xmm1
  addsd  %xmm2,%xmm0
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%r8,%rdx,1)
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%r9,%rdx,1)
  add    $0x4,%rdx
  cmp    $0x20,%rdx
  jne    L65
  lea    0x8(%rcx),%rdx
  add    $0x40,%rcx
  jmp    L50
  xchg   %ax,%ax
L39:
  mov    (%rdx),%rax
  add    $0x8,%rdx
L50:
  movss  (%rax),%xmm2
  movss  0x10(%rax),%xmm11
  movss  0x1c(%rax),%xmm1
  movss  0xc(%rax),%xmm0
  movss  0x8(%rax),%xmm12
  movss  0x14(%rax),%xmm3
  movaps %xmm2,%xmm10
  movaps %xmm11,%xmm14
  addss  %xmm0,%xmm14
  addss  %xmm1,%xmm10
  subss  %xmm1,%xmm2
  subss  %xmm0,%xmm11
  movaps %xmm12,%xmm1
  movss  0x18(%rax),%xmm0
  subss  %xmm3,%xmm12
  addss  %xmm3,%xmm1
  movss  0x4(%rax),%xmm3
  movaps %xmm0,%xmm13
  addss  %xmm3,%xmm13
  subss  %xmm3,%xmm0
  movaps %xmm10,%xmm3
  addss  %xmm14,%xmm3
  movaps %xmm1,%xmm15
  subss  %xmm14,%xmm10
  movsd  -0x10(%rsp),%xmm14
  addss  %xmm13,%xmm15
  subss  %xmm13,%xmm1
  movaps %xmm3,%xmm4
  cvtss2sd %xmm10,%xmm10
  addss  %xmm15,%xmm4
  subss  %xmm15,%xmm3
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm13
  mulsd  %xmm14,%xmm1
  cvtss2sd %xmm4,%xmm4
  mulsd  -0x18(%rsp),%xmm4
  cvtss2sd %xmm3,%xmm3
  mulsd  -0x18(%rsp),%xmm3
  cvtsd2ss %xmm4,%xmm4
  movss  %xmm4,(%rax)
  movsd  -0x8(%rsp),%xmm4
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,0x10(%rax)
  movapd %xmm14,%xmm3
  mulsd  %xmm10,%xmm3
  mulsd  %xmm4,%xmm13
  mulsd  %xmm4,%xmm10
  subsd  %xmm13,%xmm3
  addsd  %xmm10,%xmm1
  movaps %xmm2,%xmm10
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,0x8(%rax)
  movaps %xmm12,%xmm3
  subss  %xmm0,%xmm3
  addss  %xmm12,%xmm0
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x18(%rax)
  movaps %xmm11,%xmm1
  cvtss2sd %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm5,%xmm3
  mulsd  %xmm5,%xmm0
  cvtsd2ss %xmm3,%xmm3
  addss  %xmm3,%xmm10
  subss  %xmm3,%xmm2
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm0,%xmm1
  subss  %xmm11,%xmm0
  cvtss2sd %xmm10,%xmm10
  movapd %xmm10,%xmm12
  cvtss2sd %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm1
  mulsd  %xmm7,%xmm10
  movapd %xmm1,%xmm13
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm6,%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm6,%xmm12
  mulsd  %xmm7,%xmm13
  mulsd  %xmm9,%xmm3
  mulsd  %xmm8,%xmm0
  addsd  %xmm10,%xmm1
  subsd  %xmm13,%xmm12
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x1c(%rax)
  movapd %xmm2,%xmm1
  mulsd  %xmm8,%xmm1
  mulsd  %xmm9,%xmm2
  cvtsd2ss %xmm12,%xmm12
  movss  %xmm12,0x4(%rax)
  subsd  %xmm3,%xmm1
  addsd  %xmm2,%xmm0
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0xc(%rax)
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x14(%rax)
  cmp    %rdx,%rcx
  jne    L39
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D145
datatype: f64
name: unpack_data
arguments: data_label: D49
datatype: f64
name: unpack_data
arguments: data_label: D72
datatype: f64
name: unpack_data
arguments: data_label: D81
datatype: f64
name: unpack_data
arguments: data_label: D31
datatype: f64
name: unpack_data
arguments: data_label: D40
datatype: f64
name: unpack_data
arguments: data_label: D17
datatype: f64
name: unpack_data
arguments: data_label: D8
datatype: f64

tool: D145: 0.3535533905932738

tool: D49: 0.46193976625564337

tool: D72: 0.1913417161825449

tool: D81: 0.09754516100806414

tool: D31: 0.4157348061512726

tool: D40: 0.2777851165098011

tool: D17: 0.7071067811865476

tool: D8: 0.4903926402016152

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