// File: /workspace/github_cpp_makefile_star2_O2/Sleepwalking[P]world-octave/fft.cpp
// Function: cftf161(double*, double*)
void cftf161(double *a, double *w) {
  double wn4r, wk1r, wk1i,
    x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i,
    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 = w[1];
  wk1r = w[2];
  wk1i = w[3];
  x0r = a[0] + a[16];
  x0i = a[1] + a[17];
  x1r = a[0] - a[16];
  x1i = a[1] - a[17];
  x2r = a[8] + a[24];
  x2i = a[9] + a[25];
  x3r = a[8] - a[24];
  x3i = a[9] - a[25];
  y0r = x0r + x2r;
  y0i = x0i + x2i;
  y4r = x0r - x2r;
  y4i = x0i - x2i;
  y8r = x1r - x3i;
  y8i = x1i + x3r;
  y12r = x1r + x3i;
  y12i = x1i - x3r;
  x0r = a[2] + a[18];
  x0i = a[3] + a[19];
  x1r = a[2] - a[18];
  x1i = a[3] - a[19];
  x2r = a[10] + a[26];
  x2i = a[11] + a[27];
  x3r = a[10] - a[26];
  x3i = a[11] - a[27];
  y1r = x0r + x2r;
  y1i = x0i + x2i;
  y5r = x0r - x2r;
  y5i = x0i - x2i;
  x0r = x1r - x3i;
  x0i = x1i + x3r;
  y9r = wk1r * x0r - wk1i * x0i;
  y9i = wk1r * x0i + wk1i * x0r;
  x0r = x1r + x3i;
  x0i = x1i - x3r;
  y13r = wk1i * x0r - wk1r * x0i;
  y13i = wk1i * x0i + wk1r * x0r;
  x0r = a[4] + a[20];
  x0i = a[5] + a[21];
  x1r = a[4] - a[20];
  x1i = a[5] - a[21];
  x2r = a[12] + a[28];
  x2i = a[13] + a[29];
  x3r = a[12] - a[28];
  x3i = a[13] - a[29];
  y2r = x0r + x2r;
  y2i = x0i + x2i;
  y6r = x0r - x2r;
  y6i = x0i - x2i;
  x0r = x1r - x3i;
  x0i = x1i + x3r;
  y10r = wn4r * (x0r - x0i);
  y10i = wn4r * (x0i + x0r);
  x0r = x1r + x3i;
  x0i = x1i - x3r;
  y14r = wn4r * (x0r + x0i);
  y14i = wn4r * (x0i - x0r);
  x0r = a[6] + a[22];
  x0i = a[7] + a[23];
  x1r = a[6] - a[22];
  x1i = a[7] - a[23];
  x2r = a[14] + a[30];
  x2i = a[15] + a[31];
  x3r = a[14] - a[30];
  x3i = a[15] - a[31];
  y3r = x0r + x2r;
  y3i = x0i + x2i;
  y7r = x0r - x2r;
  y7i = x0i - x2i;
  x0r = x1r - x3i;
  x0i = x1i + x3r;
  y11r = wk1i * x0r - wk1r * x0i;
  y11i = wk1i * x0i + wk1r * x0r;
  x0r = x1r + x3i;
  x0i = x1i - x3r;
  y15r = wk1r * x0r - wk1i * x0i;
  y15i = wk1r * x0i + wk1i * x0r;
  x0r = y12r - y14r;
  x0i = y12i - y14i;
  x1r = y12r + y14r;
  x1i = y12i + y14i;
  x2r = y13r - y15r;
  x2i = y13i - y15i;
  x3r = y13r + y15r;
  x3i = y13i + y15i;
  a[24] = x0r + x2r;
  a[25] = x0i + x2i;
  a[26] = x0r - x2r;
  a[27] = x0i - x2i;
  a[28] = x1r - x3i;
  a[29] = x1i + x3r;
  a[30] = x1r + x3i;
  a[31] = x1i - x3r;
  x0r = y8r + y10r;
  x0i = y8i + y10i;
  x1r = y8r - y10r;
  x1i = y8i - y10i;
  x2r = y9r + y11r;
  x2i = y9i + y11i;
  x3r = y9r - y11r;
  x3i = y9i - y11i;
  a[16] = x0r + x2r;
  a[17] = x0i + x2i;
  a[18] = x0r - x2r;
  a[19] = x0i - x2i;
  a[20] = x1r - x3i;
  a[21] = x1i + x3r;
  a[22] = x1r + x3i;
  a[23] = x1i - x3r;
  x0r = y5r - y7i;
  x0i = y5i + y7r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  x0r = y5r + y7i;
  x0i = y5i - y7r;
  x3r = wn4r * (x0r - x0i);
  x3i = wn4r * (x0i + x0r);
  x0r = y4r - y6i;
  x0i = y4i + y6r;
  x1r = y4r + y6i;
  x1i = y4i - y6r;
  a[8] = x0r + x2r;
  a[9] = x0i + x2i;
  a[10] = x0r - x2r;
  a[11] = x0i - x2i;
  a[12] = x1r - x3i;
  a[13] = x1i + x3r;
  a[14] = x1r + x3i;
  a[15] = x1i - x3r;
  x0r = y0r + y2r;
  x0i = y0i + y2i;
  x1r = y0r - y2r;
  x1i = y0i - y2i;
  x2r = y1r + y3r;
  x2i = y1i + y3i;
  x3r = y1r - y3r;
  x3i = y1i - y3i;
  a[0] = x0r + x2r;
  a[1] = x0i + x2i;
  a[2] = x0r - x2r;
  a[3] = x0i - x2i;
  a[4] = x1r - x3i;
  a[5] = x1i + x3r;
  a[6] = x1r + x3i;
  a[7] = x1i - x3r;
}

// Assembly:
subq $0x38, %rsp
movupd 0x10(%rdi), %xmm10
movupd 0x20(%rdi), %xmm3
movupd 0x30(%rdi), %xmm13
movupd 0x90(%rdi), %xmm1
movapd %xmm10, %xmm0
addpd %xmm1, %xmm0
movupd 0x50(%rdi), %xmm2
movupd 0xd0(%rdi), %xmm9
movapd %xmm2, %xmm4
addpd %xmm9, %xmm4
movupd 0xa0(%rdi), %xmm5
movupd 0x60(%rdi), %xmm7
movapd %xmm7, %xmm6
movapd %xmm3, %xmm12
shufpd $0x1, %xmm7, %xmm12     # xmm12 = xmm12[1],xmm7[0]
movsd %xmm3, %xmm7            # xmm7 = xmm3[0],xmm7[1]
addpd %xmm5, %xmm3
movapd %xmm3, (%rsp)
movupd 0xe0(%rdi), %xmm3
addpd %xmm3, %xmm6
movapd %xmm6, -0x10(%rsp)
movapd %xmm5, %xmm6
shufpd $0x1, %xmm3, %xmm6      # xmm6 = xmm6[1],xmm3[0]
subpd %xmm6, %xmm12
movsd %xmm5, %xmm3            # xmm3 = xmm5[0],xmm3[1]
subpd %xmm3, %xmm7
movapd %xmm7, %xmm6
unpckhpd %xmm7, %xmm6            # xmm6 = xmm6[1],xmm7[1]
movapd %xmm7, %xmm5
subsd %xmm6, %xmm5
movapd %xmm12, %xmm8
unpckhpd %xmm12, %xmm8           # xmm8 = xmm8[1],xmm12[1]
movapd %xmm12, %xmm3
addsd %xmm8, %xmm3
addsd %xmm7, %xmm6
subsd %xmm8, %xmm12
movupd 0xb0(%rdi), %xmm7
movapd %xmm7, -0x60(%rsp)
movapd %xmm13, %xmm15
addpd %xmm7, %xmm15
movupd 0x70(%rdi), %xmm14
movupd 0xf0(%rdi), %xmm8
movapd %xmm8, -0x70(%rsp)
movapd %xmm14, %xmm7
addpd %xmm8, %xmm7
movapd %xmm0, %xmm11
shufpd $0x1, %xmm15, %xmm11    # xmm11 = xmm11[1],xmm15[0]
movapd %xmm4, %xmm8
shufpd $0x1, %xmm7, %xmm8      # xmm8 = xmm8[1],xmm7[0]
subpd %xmm8, %xmm11
movapd %xmm11, -0x40(%rsp)
movapd %xmm15, %xmm8
movsd %xmm0, %xmm15           # xmm15 = xmm0[0],xmm15[1]
addpd %xmm4, %xmm0
movapd %xmm0, 0x20(%rsp)
addpd %xmm7, %xmm8
movapd %xmm8, 0x10(%rsp)
movsd %xmm4, %xmm7            # xmm7 = xmm4[0],xmm7[1]
subpd %xmm7, %xmm15
movupd 0x80(%rdi), %xmm0
movupd (%rdi), %xmm4
movapd %xmm4, %xmm7
addpd %xmm0, %xmm7
movapd %xmm7, -0x20(%rsp)
subpd %xmm0, %xmm4
movupd 0x40(%rdi), %xmm7
movupd 0xc0(%rdi), %xmm0
movapd %xmm7, %xmm8
addpd %xmm0, %xmm8
movapd %xmm8, -0x30(%rsp)
subpd %xmm0, %xmm7
shufpd $0x1, %xmm7, %xmm7      # xmm7 = xmm7[1,0]
movapd %xmm4, %xmm0
subpd %xmm7, %xmm0
movapd %xmm0, -0x80(%rsp)
addpd %xmm4, %xmm7
subpd %xmm1, %xmm10
subpd %xmm9, %xmm2
shufpd $0x1, %xmm2, %xmm2      # xmm2 = xmm2[1,0]
movapd %xmm10, %xmm9
subpd %xmm2, %xmm9
addpd %xmm10, %xmm2
movapd 0x3ccc(%rip), %xmm0     # 0xd060
movsd 0x18(%rsi), %xmm4
movapd %xmm4, %xmm8
xorpd %xmm0, %xmm8
movsd 0x10(%rsi), %xmm1
xorpd %xmm1, %xmm0
movapd %xmm2, %xmm10
movsd %xmm9, %xmm10           # xmm10 = xmm9[0],xmm10[1]
movapd %xmm2, %xmm11
shufpd $0x1, %xmm9, %xmm11     # xmm11 = xmm11[1],xmm9[0]
unpcklpd %xmm4, %xmm8            # xmm8 = xmm8[0],xmm4[0]
mulpd %xmm8, %xmm11
unpcklpd %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
mulpd %xmm1, %xmm10
addpd %xmm11, %xmm10
movapd %xmm5, %xmm11
subsd %xmm3, %xmm11
addsd %xmm5, %xmm3
unpcklpd %xmm3, %xmm11           # xmm11 = xmm11[0],xmm3[0]
movapd %xmm11, -0x50(%rsp)
subpd -0x60(%rsp), %xmm13
subpd -0x70(%rsp), %xmm14
shufpd $0x1, %xmm14, %xmm14    # xmm14 = xmm14[1,0]
movapd %xmm13, %xmm11
subpd %xmm14, %xmm11
addpd %xmm13, %xmm14
movapd %xmm14, %xmm13
movsd %xmm11, %xmm13          # xmm13 = xmm11[0],xmm13[1]
movapd %xmm14, %xmm3
shufpd $0x1, %xmm11, %xmm3     # xmm3 = xmm3[1],xmm11[0]
mulpd %xmm0, %xmm3
unpcklpd %xmm4, %xmm4            # xmm4 = xmm4[0,0]
mulpd %xmm4, %xmm13
addpd %xmm3, %xmm13
movapd %xmm12, %xmm5
addsd %xmm6, %xmm5
subsd %xmm6, %xmm12
unpcklpd %xmm12, %xmm5           # xmm5 = xmm5[0],xmm12[0]
movapd %xmm7, %xmm12
movapd -0x80(%rsp), %xmm3
movsd %xmm3, %xmm12           # xmm12 = xmm3[0],xmm12[1]
shufpd $0x2, %xmm3, %xmm7      # xmm7 = xmm7[0],xmm3[1]
movapd %xmm9, %xmm3
movsd %xmm2, %xmm3            # xmm3 = xmm2[0],xmm3[1]
shufpd $0x1, %xmm2, %xmm9      # xmm9 = xmm9[1],xmm2[0]
mulpd %xmm0, %xmm9
mulpd %xmm4, %xmm3
addpd %xmm9, %xmm3
movapd %xmm11, %xmm6
movsd %xmm14, %xmm6           # xmm6 = xmm14[0],xmm6[1]
shufpd $0x1, %xmm14, %xmm11    # xmm11 = xmm11[1],xmm14[0]
mulpd %xmm8, %xmm11
mulpd %xmm1, %xmm6
addpd %xmm11, %xmm6
movapd %xmm15, %xmm4
unpckhpd %xmm15, %xmm4           # xmm4 = xmm4[1],xmm15[1]
movapd %xmm15, %xmm1
subsd %xmm4, %xmm1
addsd %xmm15, %xmm4
movapd -0x40(%rsp), %xmm9
movapd %xmm9, %xmm8
unpckhpd %xmm9, %xmm8            # xmm8 = xmm8[1],xmm9[1]
movapd %xmm9, %xmm2
subsd %xmm8, %xmm9
movapd %xmm4, %xmm0
subsd %xmm9, %xmm0
addsd %xmm4, %xmm9
movsd 0x8(%rsi), %xmm4
mulsd %xmm4, %xmm0
mulsd %xmm4, %xmm9
movapd %xmm9, %xmm15
unpcklpd %xmm4, %xmm4            # xmm4 = xmm4[0,0]
mulpd %xmm4, %xmm5
movapd %xmm7, %xmm9
subpd %xmm5, %xmm9
movapd %xmm3, %xmm11
subpd %xmm6, %xmm11
movapd %xmm9, %xmm14
addpd %xmm11, %xmm14
movupd %xmm14, 0xc0(%rdi)
subpd %xmm11, %xmm9
movupd %xmm9, 0xd0(%rdi)
addpd %xmm5, %xmm7
addpd %xmm3, %xmm6
shufpd $0x1, %xmm6, %xmm6      # xmm6 = xmm6[1,0]
movapd %xmm7, %xmm3
subpd %xmm6, %xmm3
addpd %xmm7, %xmm6
movapd %xmm6, %xmm5
movsd %xmm3, %xmm5            # xmm5 = xmm3[0],xmm5[1]
movupd %xmm5, 0xe0(%rdi)
shufpd $0x2, %xmm3, %xmm6      # xmm6 = xmm6[0],xmm3[1]
movupd %xmm6, 0xf0(%rdi)
movapd -0x50(%rsp), %xmm5
mulpd %xmm4, %xmm5
movapd %xmm12, %xmm3
addpd %xmm5, %xmm3
movapd %xmm5, %xmm7
movapd %xmm10, %xmm5
addpd %xmm13, %xmm5
movapd %xmm3, %xmm6
addpd %xmm5, %xmm6
movupd %xmm6, 0x80(%rdi)
subpd %xmm5, %xmm3
movupd %xmm3, 0x90(%rdi)
subpd %xmm7, %xmm12
subpd %xmm13, %xmm10
shufpd $0x1, %xmm10, %xmm10    # xmm10 = xmm10[1,0]
movapd %xmm12, %xmm3
subpd %xmm10, %xmm3
addpd %xmm12, %xmm10
movapd %xmm10, %xmm5
movsd %xmm3, %xmm5            # xmm5 = xmm3[0],xmm5[1]
movupd %xmm5, 0xa0(%rdi)
shufpd $0x2, %xmm3, %xmm10     # xmm10 = xmm10[0],xmm3[1]
movupd %xmm10, 0xb0(%rdi)
addsd %xmm8, %xmm2
movapd -0x20(%rsp), %xmm5
movapd %xmm5, %xmm3
movapd -0x30(%rsp), %xmm6
addpd %xmm6, %xmm3
subpd %xmm6, %xmm5
movapd %xmm5, %xmm8
movapd (%rsp), %xmm7
movapd %xmm7, %xmm5
movapd -0x10(%rsp), %xmm6
addpd %xmm6, %xmm5
subpd %xmm6, %xmm7
movapd %xmm1, %xmm6
subsd %xmm2, %xmm6
addsd %xmm1, %xmm2
shufpd $0x1, %xmm7, %xmm7      # xmm7 = xmm7[1,0]
unpcklpd %xmm2, %xmm6            # xmm6 = xmm6[0],xmm2[0]
mulpd %xmm4, %xmm6
movapd %xmm8, %xmm1
subpd %xmm7, %xmm1
addpd %xmm8, %xmm7
movapd %xmm7, %xmm2
movsd %xmm1, %xmm2            # xmm2 = xmm1[0],xmm2[1]
movapd %xmm2, %xmm4
addpd %xmm6, %xmm4
movupd %xmm4, 0x40(%rdi)
subpd %xmm6, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
movupd %xmm2, 0x50(%rdi)
movapd %xmm7, %xmm2
subsd %xmm15, %xmm2
movsd %xmm2, 0x60(%rdi)
movapd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, 0x68(%rdi)
addsd %xmm15, %xmm7
movsd %xmm7, 0x70(%rdi)
subsd %xmm0, %xmm1
movsd %xmm1, 0x78(%rdi)
movapd %xmm3, %xmm0
addpd %xmm5, %xmm0
movapd 0x20(%rsp), %xmm4
movapd %xmm4, %xmm1
movapd 0x10(%rsp), %xmm6
addpd %xmm6, %xmm1
movapd %xmm0, %xmm2
addpd %xmm1, %xmm2
movupd %xmm2, (%rdi)
subpd %xmm1, %xmm0
movupd %xmm0, 0x10(%rdi)
subpd %xmm5, %xmm3
movapd %xmm4, %xmm2
subpd %xmm6, %xmm2
shufpd $0x1, %xmm2, %xmm2      # xmm2 = xmm2[1,0]
movapd %xmm3, %xmm0
subpd %xmm2, %xmm0
addpd %xmm3, %xmm2
movapd %xmm2, %xmm1
movsd %xmm0, %xmm1            # xmm1 = xmm0[0],xmm1[1]
movupd %xmm1, 0x20(%rdi)
shufpd $0x2, %xmm0, %xmm2      # xmm2 = xmm2[0],xmm0[1]
movupd %xmm2, 0x30(%rdi)
addq $0x38, %rsp
retq