// File: /workspace/github_c_makefile_star2_O2/YunyiQian[P]multitel3/fft.c
// Function: fftr
void	fftr(complex *x, int n, float dt) {
  int	i, j, n2;
  float	delw, w;
  complex t, g, h, isg;
  n2 = n/2;
  delw = PI/n;
  isg = IMAGE;
  if (dt>0.) {
     delw = -delw;
     isg = cngtv(isg);
     fft(x, n, dt);
  }
  x[0] = cmplx(x[0].x+x[0].y, x[0].x-x[0].y);
  for (i=1, w=delw; i<n2; i++, w+=delw) {
    j = n-i;
    t = conjg(x[j]);
    g = cplus(x[i], t);
    h = cplus(x[i], cngtv(t));
    h = cmltp(cmplx(cos(w), sin(w)), h);
    x[i] = dmltp(0.5, cplus(g, cmltp(isg,h)));
    x[j] = dmltp(0.5, cplus(conjg(g), cmltp(isg, conjg(h))));
  }
  x[n2] = conjg(x[n2]);
  if (dt<0.) {
    x[0] = dmltp(0.5, x[0]);
    fft(x, n, dt);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movss %xmm0, 0x4(%rsp)
movl %esi, %ebx
movq %rdi, %r14
pushq $0x2
popq %rcx
movl %esi, %eax
cltd
idivl %ecx
movl %eax, %ebp
cvtsi2sd %esi, %xmm0
movsd 0x474d(%rip), %xmm1     # 0x69f0
divsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm0
movaps %xmm0, 0x10(%rsp)
movss 0x472c(%rip), %xmm1     # 0x69e4
xorps %xmm0, %xmm0
callq 0x3596
movss 0x4(%rsp), %xmm1
ucomiss 0x3d83(%rip), %xmm1     # 0x6050
jbe 0x22fc
movaps 0x10(%rsp), %xmm2
xorps 0x3d95(%rip), %xmm2     # 0x6070
movaps %xmm2, 0x10(%rsp)
callq 0x349f
movaps %xmm0, 0x40(%rsp)
movq %r14, %rdi
movl %ebx, %esi
movss 0x4(%rsp), %xmm0
callq 0x2080
jmp 0x2301
movaps %xmm0, 0x40(%rsp)
movss (%r14), %xmm1
movss 0x4(%r14), %xmm2
movaps %xmm1, %xmm0
addss %xmm2, %xmm0
subss %xmm2, %xmm1
callq 0x3596
movlps %xmm0, (%r14)
movslq %ebp, %r15
movslq %ebx, %r12
decq %r12
pushq $0x1
popq %r13
movaps 0x10(%rsp), %xmm0
movss %xmm0, 0x8(%rsp)
movaps %xmm0, 0x10(%rsp)
cmpq %r15, %r13
jge 0x2461
movsd (%r14,%r12,8), %xmm0
callq 0x34e7
movaps %xmm0, %xmm1
movaps %xmm0, 0x20(%rsp)
movsd (%r14,%r13,8), %xmm0
callq 0x3474
movaps %xmm0, 0x30(%rsp)
movaps 0x20(%rsp), %xmm0
callq 0x349f
movaps %xmm0, %xmm1
movsd (%r14,%r13,8), %xmm0
callq 0x3474
movaps %xmm0, 0x20(%rsp)
cvtss2sd 0x8(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
callq 0x10d0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc(%rsp)
movsd 0x50(%rsp), %xmm0
callq 0x11d0
cvtsd2ss %xmm0, %xmm1
movss 0xc(%rsp), %xmm0
callq 0x3596
movaps 0x20(%rsp), %xmm1
callq 0x3478
movaps %xmm0, %xmm1
movaps %xmm0, 0x20(%rsp)
movaps 0x40(%rsp), %xmm0
callq 0x3478
movaps %xmm0, %xmm1
movaps 0x30(%rsp), %xmm0
callq 0x3474
movaps %xmm0, %xmm1
movss 0x45f9(%rip), %xmm0     # 0x69e8
callq 0x34df
movlps %xmm0, (%r14,%r13,8)
movaps 0x30(%rsp), %xmm0
callq 0x34e7
movaps %xmm0, 0x30(%rsp)
movaps 0x20(%rsp), %xmm0
callq 0x34e7
movaps %xmm0, %xmm1
movaps 0x40(%rsp), %xmm0
callq 0x3478
movaps %xmm0, %xmm1
movaps 0x30(%rsp), %xmm0
callq 0x3474
movaps %xmm0, %xmm1
movss 0x45b1(%rip), %xmm0     # 0x69e8
callq 0x34df
movlps %xmm0, (%r14,%r12,8)
movaps 0x10(%rsp), %xmm0
incq %r13
movss 0x8(%rsp), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x8(%rsp)
decq %r12
jmp 0x233d
movsd (%r14,%r15,8), %xmm0
callq 0x34e7
movlps %xmm0, (%r14,%r15,8)
xorps %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
ucomiss %xmm1, %xmm0
jbe 0x24b3
movsd (%r14), %xmm1
movss 0x455c(%rip), %xmm0     # 0x69e8
callq 0x34df
movlps %xmm0, (%r14)
movq %r14, %rdi
movl %ebx, %esi
movss 0x4(%rsp), %xmm0
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2080
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq