user: 请从给定的汇编指令推导出C源代码：

```asm
<cftf162>:
  endbr64
  sub    $0x38,%rsp
  movsd  0x40(%rdi),%xmm1
  movsd  (%rdi),%xmm5
  movsd  0x48(%rdi),%xmm2
  movsd  0xc0(%rdi),%xmm7
  movapd %xmm1,%xmm3
  movsd  0x8(%rdi),%xmm4
  movapd %xmm5,%xmm12
  movsd  0xc8(%rdi),%xmm8
  movapd %xmm2,%xmm13
  subsd  %xmm7,%xmm2
  movsd  D9(%rip),%xmm0
  movsd  0x80(%rdi),%xmm9
  addsd  %xmm7,%xmm13
  subsd  %xmm8,%xmm3
  movapd %xmm4,%xmm11
  movsd  0x88(%rdi),%xmm10
  addsd  %xmm9,%xmm11
  addsd  %xmm8,%xmm1
  movsd  0x98(%rdi),%xmm8
  addsd  %xmm10,%xmm5
  subsd  %xmm9,%xmm4
  movsd  0xd0(%rdi),%xmm9
  movapd %xmm3,%xmm6
  addsd  %xmm13,%xmm3
  subsd  %xmm10,%xmm12
  movsd  0x90(%rdi),%xmm10
  movapd %xmm11,%xmm14
  subsd  %xmm13,%xmm6
  movapd %xmm5,%xmm7
  movapd %xmm4,%xmm13
  mulsd  %xmm0,%xmm3
  movapd %xmm12,%xmm15
  mulsd  %xmm0,%xmm6
  addsd  %xmm3,%xmm14
  subsd  %xmm3,%xmm11
  movapd %xmm1,%xmm3
  addsd  %xmm2,%xmm1
  subsd  %xmm2,%xmm3
  movsd  0x18(%rdi),%xmm2
  subsd  %xmm6,%xmm12
  addsd  %xmm6,%xmm15
  movsd  D37(%rip),%xmm6
  movsd  %xmm14,-0x70(%rsp)
  movsd  0x10(%rdi),%xmm14
  addsd  %xmm2,%xmm10
  mulsd  %xmm0,%xmm1
  movsd  %xmm11,-0x40(%rsp)
  mulsd  %xmm0,%xmm3
  movsd  %xmm12,-0x48(%rsp)
  movsd  %xmm15,-0x78(%rsp)
  subsd  %xmm1,%xmm7
  addsd  %xmm1,%xmm5
  movapd %xmm14,%xmm1
  subsd  %xmm8,%xmm1
  addsd  %xmm3,%xmm13
  subsd  %xmm3,%xmm4
  addsd  %xmm14,%xmm8
  movsd  %xmm5,-0x28(%rsp)
  movsd  D43(%rip),%xmm5
  movapd %xmm1,%xmm3
  movsd  %xmm7,-0x38(%rsp)
  movsd  0x50(%rdi),%xmm7
  mulsd  %xmm5,%xmm3
  movsd  %xmm4,-0x20(%rsp)
  movsd  D68(%rip),%xmm4
  mulsd  %xmm6,%xmm1
  movsd  %xmm13,-0x30(%rsp)
  movapd %xmm3,%xmm12
  movapd %xmm10,%xmm3
  mulsd  %xmm6,%xmm3
  mulsd  %xmm5,%xmm10
  subsd  %xmm3,%xmm12
  movapd %xmm7,%xmm3
  subsd  0xd8(%rdi),%xmm3
  addsd  %xmm1,%xmm10
  movsd  0x58(%rdi),%xmm1
  movapd %xmm3,%xmm13
  addsd  %xmm1,%xmm9
  mulsd  %xmm4,%xmm3
  movapd %xmm9,%xmm15
  mulsd  %xmm4,%xmm9
  movapd %xmm3,%xmm11
  movsd  D35(%rip),%xmm3
  mulsd  %xmm3,%xmm15
  mulsd  %xmm3,%xmm13
  subsd  %xmm15,%xmm11
  addsd  %xmm13,%xmm9
  movapd %xmm12,%xmm13
  addsd  %xmm11,%xmm13
  subsd  %xmm11,%xmm12
  movsd  %xmm13,-0x68(%rsp)
  movapd %xmm10,%xmm13
  subsd  %xmm9,%xmm10
  addsd  %xmm9,%xmm13
  movapd %xmm8,%xmm9
  mulsd  %xmm4,%xmm8
  mulsd  %xmm3,%xmm9
  movsd  %xmm13,-0x60(%rsp)
  movsd  %xmm12,-0x18(%rsp)
  subsd  0x90(%rdi),%xmm2
  addsd  0xd8(%rdi),%xmm7
  movsd  %xmm10,-0x10(%rsp)
  subsd  0xd0(%rdi),%xmm1
  movapd %xmm2,%xmm10
  mulsd  %xmm3,%xmm2
  mulsd  %xmm4,%xmm10
  addsd  %xmm8,%xmm2
  movapd %xmm7,%xmm8
  mulsd  %xmm5,%xmm8
  subsd  %xmm10,%xmm9
  mulsd  %xmm6,%xmm7
  movapd %xmm9,%xmm11
  movapd %xmm8,%xmm10
  movapd %xmm1,%xmm8
  mulsd  %xmm5,%xmm1
  mulsd  %xmm6,%xmm8
  subsd  %xmm7,%xmm1
  movapd %xmm2,%xmm7
  addsd  %xmm10,%xmm8
  addsd  %xmm1,%xmm2
  subsd  %xmm1,%xmm7
  movsd  0x20(%rdi),%xmm1
  subsd  %xmm8,%xmm11
  addsd  %xmm8,%xmm9
  movsd  0xa0(%rdi),%xmm8
  subsd  0xa8(%rdi),%xmm1
  movsd  %xmm2,0x10(%rsp)
  movsd  0x28(%rdi),%xmm2
  movsd  %xmm11,-0x8(%rsp)
  addsd  %xmm2,%xmm8
  movapd %xmm1,%xmm10
  movsd  %xmm7,(%rsp)
  movsd  D57(%rip),%xmm7
  movsd  %xmm9,0x8(%rsp)
  movsd  0x68(%rdi),%xmm9
  subsd  0xa0(%rdi),%xmm2
  mulsd  %xmm7,%xmm1
  movapd %xmm8,%xmm11
  movsd  D66(%rip),%xmm8
  mulsd  %xmm8,%xmm10
  movapd %xmm10,%xmm13
  movapd %xmm11,%xmm10
  mulsd  %xmm8,%xmm11
  mulsd  %xmm7,%xmm10
  addsd  %xmm1,%xmm11
  movsd  0x60(%rdi),%xmm1
  subsd  %xmm10,%xmm13
  movapd %xmm1,%xmm10
  addsd  0xe8(%rdi),%xmm1
  subsd  0xe8(%rdi),%xmm10
  movapd %xmm10,%xmm14
  movsd  0xe0(%rdi),%xmm10
  movapd %xmm14,%xmm12
  addsd  %xmm9,%xmm10
  mulsd  %xmm8,%xmm14
  subsd  0xe0(%rdi),%xmm9
  mulsd  %xmm7,%xmm12
  movapd %xmm10,%xmm15
  mulsd  %xmm7,%xmm10
  mulsd  %xmm8,%xmm15
  addsd  %xmm14,%xmm10
  movapd %xmm11,%xmm14
  subsd  %xmm15,%xmm12
  movapd %xmm13,%xmm15
  addsd  %xmm10,%xmm14
  subsd  %xmm10,%xmm11
  movsd  0x20(%rdi),%xmm10
  addsd  0xa8(%rdi),%xmm10
  addsd  %xmm12,%xmm15
  subsd  %xmm12,%xmm13
  movapd %xmm2,%xmm12
  movsd  %xmm11,-0x50(%rsp)
  mulsd  %xmm8,%xmm12
  mulsd  %xmm7,%xmm2
  movapd %xmm10,%xmm11
  mulsd  %xmm7,%xmm11
  movsd  %xmm13,-0x58(%rsp)
  mulsd  %xmm8,%xmm10
  subsd  %xmm12,%xmm11
  movapd %xmm9,%xmm12
  addsd  %xmm10,%xmm2
  mulsd  %xmm7,%xmm12
  movapd %xmm1,%xmm10
  mulsd  %xmm8,%xmm10
  mulsd  %xmm8,%xmm9
  movapd %xmm11,%xmm8
  mulsd  %xmm7,%xmm1
  movapd %xmm11,%xmm7
  subsd  %xmm12,%xmm10
  addsd  %xmm9,%xmm1
  subsd  %xmm10,%xmm8
  addsd  %xmm10,%xmm7
  movsd  %xmm8,0x18(%rsp)
  movapd %xmm2,%xmm8
  addsd  %xmm1,%xmm2
  subsd  %xmm1,%xmm8
  movsd  %xmm7,0x28(%rsp)
  movsd  0x30(%rdi),%xmm1
  subsd  0xb8(%rdi),%xmm1
  movsd  %xmm2,0x30(%rsp)
  movsd  0x38(%rdi),%xmm2
  movsd  %xmm8,0x20(%rsp)
  movapd %xmm1,%xmm8
  movsd  0xb0(%rdi),%xmm9
  mulsd  %xmm4,%xmm1
  addsd  %xmm2,%xmm9
  mulsd  %xmm3,%xmm8
  subsd  0xb0(%rdi),%xmm2
  movapd %xmm9,%xmm7
  mulsd  %xmm3,%xmm9
  mulsd  %xmm4,%xmm7
  movapd %xmm8,%xmm11
  addsd  %xmm1,%xmm9
  movsd  0x70(%rdi),%xmm1
  subsd  0xf8(%rdi),%xmm1
  subsd  %xmm7,%xmm11
  movsd  0x78(%rdi),%xmm7
  movapd %xmm1,%xmm12
  movsd  0xf0(%rdi),%xmm1
  addsd  %xmm7,%xmm1
  subsd  0xf0(%rdi),%xmm7
  movapd %xmm1,%xmm8
  movapd %xmm12,%xmm1
  mulsd  %xmm6,%xmm1
  mulsd  %xmm5,%xmm12
  movapd %xmm1,%xmm10
  movapd %xmm8,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm6,%xmm8
  subsd  %xmm1,%xmm10
  movapd %xmm11,%xmm1
  addsd  %xmm12,%xmm8
  addsd  %xmm10,%xmm1
  subsd  %xmm10,%xmm11
  movapd %xmm1,%xmm13
  movapd %xmm9,%xmm1
  addsd  %xmm8,%xmm1
  movapd %xmm1,%xmm12
  movapd %xmm9,%xmm1
  subsd  %xmm8,%xmm1
  movapd %xmm1,%xmm10
  movsd  0x30(%rdi),%xmm1
  addsd  0xb8(%rdi),%xmm1
  movapd %xmm1,%xmm8
  mulsd  %xmm6,%xmm1
  mulsd  %xmm5,%xmm8
  movapd %xmm1,%xmm9
  movapd %xmm2,%xmm1
  mulsd  %xmm5,%xmm1
  mulsd  %xmm6,%xmm2
  movapd %xmm7,%xmm6
  mulsd  %xmm3,%xmm6
  mulsd  %xmm4,%xmm7
  addsd  %xmm1,%xmm9
  movsd  0x70(%rdi),%xmm1
  addsd  0xf8(%rdi),%xmm1
  subsd  %xmm8,%xmm2
  movapd %xmm1,%xmm5
  movapd %xmm9,%xmm8
  mulsd  %xmm4,%xmm5
  movapd %xmm2,%xmm4
  mulsd  %xmm3,%xmm1
  movapd %xmm9,%xmm3
  movsd  -0x68(%rsp),%xmm9
  addsd  %xmm13,%xmm9
  subsd  %xmm6,%xmm5
  movsd  -0x70(%rsp),%xmm6
  addsd  %xmm7,%xmm1
  addsd  %xmm14,%xmm6
  addsd  %xmm5,%xmm3
  subsd  %xmm5,%xmm8
  movapd %xmm2,%xmm5
  movsd  -0x78(%rsp),%xmm2
  subsd  %xmm1,%xmm5
  addsd  %xmm1,%xmm4
  addsd  %xmm15,%xmm2
  movapd %xmm6,%xmm1
  movapd %xmm9,%xmm6
  movapd %xmm5,%xmm7
  movsd  -0x60(%rsp),%xmm5
  movapd %xmm2,%xmm9
  subsd  %xmm6,%xmm2
  addsd  %xmm6,%xmm9
  addsd  %xmm12,%xmm5
  movsd  -0x60(%rsp),%xmm6
  subsd  %xmm12,%xmm6
  movsd  %xmm2,0x10(%rdi)
  movsd  -0x70(%rsp),%xmm2
  movsd  -0x18(%rsp),%xmm12
  movsd  %xmm9,(%rdi)
  movapd %xmm1,%xmm9
  subsd  %xmm5,%xmm1
  addsd  %xmm5,%xmm9
  subsd  %xmm14,%xmm2
  movsd  -0x40(%rsp),%xmm14
  movsd  %xmm1,0x18(%rdi)
  movsd  -0x78(%rsp),%xmm1
  movsd  %xmm9,0x8(%rdi)
  movsd  -0x68(%rsp),%xmm9
  subsd  %xmm15,%xmm1
  movsd  -0x48(%rsp),%xmm15
  subsd  %xmm13,%xmm9
  movapd %xmm9,%xmm5
  movapd %xmm1,%xmm9
  addsd  %xmm6,%xmm1
  subsd  %xmm6,%xmm9
  movsd  %xmm1,0x30(%rdi)
  movapd %xmm12,%xmm1
  movsd  %xmm9,0x20(%rdi)
  movapd %xmm2,%xmm9
  subsd  %xmm5,%xmm2
  subsd  %xmm10,%xmm1
  addsd  %xmm5,%xmm9
  movapd %xmm15,%xmm5
  subsd  -0x50(%rsp),%xmm5
  movsd  %xmm2,0x38(%rdi)
  movsd  -0x58(%rsp),%xmm2
  movapd %xmm1,%xmm6
  movsd  %xmm9,0x28(%rdi)
  movsd  -0x10(%rsp),%xmm13
  addsd  %xmm14,%xmm2
  movapd %xmm13,%xmm9
  addsd  %xmm11,%xmm9
  subsd  %xmm9,%xmm6
  addsd  %xmm9,%xmm1
  movapd %xmm5,%xmm9
  mulsd  %xmm0,%xmm6
  mulsd  %xmm0,%xmm1
  addsd  %xmm6,%xmm9
  subsd  %xmm6,%xmm5
  movapd %xmm13,%xmm6
  movsd  0x20(%rsp),%xmm13
  subsd  %xmm11,%xmm6
  movsd  -0x8(%rsp),%xmm11
  movsd  %xmm9,0x40(%rdi)
  movapd %xmm2,%xmm9
  subsd  %xmm1,%xmm2
  addsd  %xmm1,%xmm9
  movapd %xmm12,%xmm1
  movsd  %xmm5,0x50(%rdi)
  movapd %xmm14,%xmm5
  addsd  %xmm10,%xmm1
  subsd  -0x58(%rsp),%xmm5
  movsd  0x18(%rsp),%xmm10
  movsd  %xmm2,0x58(%rdi)
  movsd  -0x50(%rsp),%xmm2
  movsd  -0x30(%rsp),%xmm14
  movsd  %xmm9,0x48(%rdi)
  movsd  (%rsp),%xmm12
  movapd %xmm1,%xmm9
  addsd  %xmm6,%xmm1
  addsd  %xmm15,%xmm2
  movsd  -0x38(%rsp),%xmm15
  subsd  %xmm6,%xmm9
  mulsd  %xmm0,%xmm1
  movapd %xmm2,%xmm6
  mulsd  %xmm0,%xmm9
  subsd  %xmm1,%xmm6
  addsd  %xmm1,%xmm2
  movapd %xmm14,%xmm1
  addsd  %xmm13,%xmm1
  movsd  %xmm6,0x60(%rdi)
  movapd %xmm5,%xmm6
  subsd  %xmm9,%xmm5
  addsd  %xmm9,%xmm6
  movsd  %xmm2,0x70(%rdi)
  movapd %xmm15,%xmm2
  addsd  %xmm10,%xmm2
  movsd  %xmm5,0x78(%rdi)
  movapd %xmm12,%xmm5
  movsd  %xmm6,0x68(%rdi)
  movapd %xmm11,%xmm6
  subsd  %xmm4,%xmm5
  addsd  %xmm12,%xmm4
  subsd  %xmm3,%xmm6
  movapd %xmm2,%xmm9
  addsd  %xmm11,%xmm3
  movsd  0x30(%rsp),%xmm11
  movsd  0x28(%rsp),%xmm12
  addsd  %xmm6,%xmm9
  subsd  %xmm6,%xmm2
  movsd  -0x28(%rsp),%xmm6
  movsd  %xmm9,0x80(%rdi)
  movapd %xmm1,%xmm9
  subsd  %xmm5,%xmm1
  addsd  %xmm5,%xmm9
  movsd  %xmm2,0x90(%rdi)
  movapd %xmm14,%xmm2
  movsd  0x8(%rsp),%xmm14
  subsd  %xmm13,%xmm2
  movsd  0x10(%rsp),%xmm13
  movsd  %xmm1,0x98(%rdi)
  movapd %xmm15,%xmm1
  movsd  -0x20(%rsp),%xmm15
  movsd  %xmm9,0x88(%rdi)
  subsd  %xmm10,%xmm1
  movapd %xmm1,%xmm5
  addsd  %xmm4,%xmm1
  subsd  %xmm4,%xmm5
  movsd  %xmm1,0xb0(%rdi)
  movapd %xmm14,%xmm1
  movsd  %xmm5,0xa0(%rdi)
  movapd %xmm2,%xmm5
  addsd  %xmm7,%xmm1
  subsd  %xmm3,%xmm2
  addsd  %xmm3,%xmm5
  movapd %xmm6,%xmm3
  addsd  %xmm11,%xmm6
  subsd  %xmm11,%xmm3
  movapd %xmm1,%xmm4
  movsd  %xmm2,0xb8(%rdi)
  movapd %xmm15,%xmm2
  movsd  %xmm5,0xa8(%rdi)
  movapd %xmm13,%xmm5
  addsd  %xmm12,%xmm2
  subsd  %xmm8,%xmm5
  subsd  %xmm5,%xmm4
  addsd  %xmm5,%xmm1
  movapd %xmm3,%xmm5
  mulsd  %xmm0,%xmm4
  mulsd  %xmm0,%xmm1
  addsd  %xmm4,%xmm5
  subsd  %xmm4,%xmm3
  movapd %xmm15,%xmm4
  subsd  %xmm12,%xmm4
  movsd  %xmm5,0xc0(%rdi)
  movapd %xmm2,%xmm5
  subsd  %xmm1,%xmm2
  addsd  %xmm1,%xmm5
  movapd %xmm14,%xmm1
  subsd  %xmm7,%xmm1
  movsd  %xmm5,0xc8(%rdi)
  movsd  %xmm2,0xd8(%rdi)
  movapd %xmm13,%xmm2
  addsd  %xmm8,%xmm2
  movsd  %xmm3,0xd0(%rdi)
  movapd %xmm1,%xmm3
  subsd  %xmm2,%xmm3
  addsd  %xmm2,%xmm1
  mulsd  %xmm0,%xmm3
  mulsd  %xmm1,%xmm0
  movapd %xmm6,%xmm1
  subsd  %xmm0,%xmm1
  addsd  %xmm6,%xmm0
  movsd  %xmm1,0xe0(%rdi)
  movapd %xmm4,%xmm1
  subsd  %xmm3,%xmm4
  addsd  %xmm3,%xmm1
  movsd  %xmm0,0xf0(%rdi)
  movsd  %xmm4,0xf8(%rdi)
  movsd  %xmm1,0xe8(%rdi)
  add    $0x38,%rsp
  ret
```

tool_calls: name: unpack_data
arguments: label: D9
type_infered: f64
name: unpack_data
arguments: label: D37
type_infered: f64
name: unpack_data
arguments: label: D43
type_infered: f64
name: unpack_data
arguments: label: D68
type_infered: f64
name: unpack_data
arguments: label: D35
type_infered: f64
name: unpack_data
arguments: label: D57
type_infered: f64
name: unpack_data
arguments: label: D66
type_infered: f64

tool: D9: 0.7071067811865476

tool: D37: 0.19509032201612828

tool: D43: 0.9807852804032304

tool: D68: 0.5555702330196022

tool: D35: 0.8314696123025452

tool: D57: 0.3826834323650898

tool: D66: 0.9238795325112867

assistant: ```c
void cftf162(double *a) {
  double wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, x0r, x0i, x1r, x1i, x2r, x2i, y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i;
  wn4r = 0.707106781186547524400844362104849039284835937688;
  wk1r = 0.980785280403230449126182236134239036973933730893;
  wk1i = 0.195090322016128267848284868477022240927691617751;
  wk2r = 0.923879532511286756128183189396788286822416625863;
  wk2i = 0.382683432365089771728459984030398866761344562485;
  wk3r = 0.831469612302545237078788377617905756738560811987;
  wk3i = 0.555570233019602224742830813948532874374937190754;
  x1r = a[0] - a[17];
  x1i = a[1] + a[16];
  x0r = a[8] - a[25];
  x0i = a[9] + a[24];
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  y0r = x1r + x2r;
  y0i = x1i + x2i;
  y4r = x1r - x2r;
  y4i = x1i - x2i;
  x1r = a[0] + a[17];
  x1i = a[1] - a[16];
  x0r = a[8] + a[25];
  x0i = a[9] - a[24];
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  y8r = x1r - x2i;
  y8i = x1i + x2r;
  y12r = x1r + x2i;
  y12i = x1i - x2r;
  x0r = a[2] - a[19];
  x0i = a[3] + a[18];
  x1r = wk1r * x0r - wk1i * x0i;
  x1i = wk1r * x0i + wk1i * x0r;
  x0r = a[10] - a[27];
  x0i = a[11] + a[26];
  x2r = wk3i * x0r - wk3r * x0i;
  x2i = wk3i * x0i + wk3r * x0r;
  y1r = x1r + x2r;
  y1i = x1i + x2i;
  y5r = x1r - x2r;
  y5i = x1i - x2i;
  x0r = a[2] + a[19];
  x0i = a[3] - a[18];
  x1r = wk3r * x0r - wk3i * x0i;
  x1i = wk3r * x0i + wk3i * x0r;
  x0r = a[10] + a[27];
  x0i = a[11] - a[26];
  x2r = wk1r * x0r + wk1i * x0i;
  x2i = wk1r * x0i - wk1i * x0r;
  y9r = x1r - x2r;
  y9i = x1i - x2i;
  y13r = x1r + x2r;
  y13i = x1i + x2i;
  x0r = a[4] - a[21];
  x0i = a[5] + a[20];
  x1r = wk2r * x0r - wk2i * x0i;
  x1i = wk2r * x0i + wk2i * x0r;
  x0r = a[12] - a[29];
  x0i = a[13] + a[28];
  x2r = wk2i * x0r - wk2r * x0i;
  x2i = wk2i * x0i + wk2r * x0r;
  y2r = x1r + x2r;
  y2i = x1i + x2i;
  y6r = x1r - x2r;
  y6i = x1i - x2i;
  x0r = a[4] + a[21];
  x0i = a[5] - a[20];
  x1r = wk2i * x0r - wk2r * x0i;
  x1i = wk2i * x0i + wk2r * x0r;
  x0r = a[12] + a[29];
  x0i = a[13] - a[28];
  x2r = wk2r * x0r - wk2i * x0i;
  x2i = wk2r * x0i + wk2i * x0r;
  y10r = x1r - x2r;
  y10i = x1i - x2i;
  y14r = x1r + x2r;
  y14i = x1i + x2i;
  x0r = a[6] - a[23];
  x0i = a[7] + a[22];
  x1r = wk3r * x0r - wk3i * x0i;
  x1i = wk3r * x0i + wk3i * x0r;
  x0r = a[14] - a[31];
  x0i = a[15] + a[30];
  x2r = wk1i * x0r - wk1r * x0i;
  x2i = wk1i * x0i + wk1r * x0r;
  y3r = x1r + x2r;
  y3i = x1i + x2i;
  y7r = x1r - x2r;
  y7i = x1i - x2i;
  x0r = a[6] + a[23];
  x0i = a[7] - a[22];
  x1r = wk1i * x0r + wk1r * x0i;
  x1i = wk1i * x0i - wk1r * x0r;
  x0r = a[14] + a[31];
  x0i = a[15] - a[30];
  x2r = wk3i * x0r - wk3r * x0i;
  x2i = wk3i * x0i + wk3r * x0r;
  y11r = x1r + x2r;
  y11i = x1i + x2i;
  y15r = x1r - x2r;
  y15i = x1i - x2i;
  x1r = y0r + y2r;
  x1i = y0i + y2i;
  x2r = y1r + y3r;
  x2i = y1i + y3i;
  a[0] = x1r + x2r;
  a[1] = x1i + x2i;
  a[2] = x1r - x2r;
  a[3] = x1i - x2i;
  x1r = y0r - y2r;
  x1i = y0i - y2i;
  x2r = y1r - y3r;
  x2i = y1i - y3i;
  a[4] = x1r - x2i;
  a[5] = x1i + x2r;
  a[6] = x1r + x2i;
  a[7] = x1i - x2r;
  x1r = y4r - y6i;
  x1i = y4i + y6r;
  x0r = y5r - y7i;
  x0i = y5i + y7r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[8] = x1r + x2r;
  a[9] = x1i + x2i;
  a[10] = x1r - x2r;
  a[11] = x1i - x2i;
  x1r = y4r + y6i;
  x1i = y4i - y6r;
  x0r = y5r + y7i;
  x0i = y5i - y7r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[12] = x1r - x2i;
  a[13] = x1i + x2r;
  a[14] = x1r + x2i;
  a[15] = x1i - x2r;
  x1r = y8r + y10r;
  x1i = y8i + y10i;
  x2r = y9r - y11r;
  x2i = y9i - y11i;
  a[16] = x1r + x2r;
  a[17] = x1i + x2i;
  a[18] = x1r - x2r;
  a[19] = x1i - x2i;
  x1r = y8r - y10r;
  x1i = y8i - y10i;
  x2r = y9r + y11r;
  x2i = y9i + y11i;
  a[20] = x1r - x2i;
  a[21] = x1i + x2r;
  a[22] = x1r + x2i;
  a[23] = x1i - x2r;
  x1r = y12r - y14i;
  x1i = y12i + y14r;
  x0r = y13r + y15i;
  x0i = y13i - y15r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[24] = x1r + x2r;
  a[25] = x1i + x2i;
  a[26] = x1r - x2r;
  a[27] = x1i - x2i;
  x1r = y12r + y14i;
  x1i = y12i - y14r;
  x0r = y13r - y15i;
  x0i = y13i + y15r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[28] = x1r - x2i;
  a[29] = x1i + x2r;
  a[30] = x1r + x2i;
  a[31] = x1i - x2r;
}
```