// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movss %xmm0, -0x10(%rbp)
movl -0xc(%rbp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movl %eax, -0x1c(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm1
movsd 0x621d(%rip), %xmm0     # 0x89b0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
xorps %xmm0, %xmm0
movss 0x622d(%rip), %xmm1     # 0x89d8
callq 0x48c0
movlpd %xmm0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x48(%rbp)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x280c
movaps 0x621a(%rip), %xmm1     # 0x89f0
movss -0x20(%rbp), %xmm0
pxor %xmm1, %xmm0
movss %xmm0, -0x20(%rbp)
movsd -0x48(%rbp), %xmm0
callq 0x46a0
movlpd %xmm0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
movss -0x10(%rbp), %xmm0
callq 0x23f0
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movss (%rax), %xmm1
movss 0x4(%rax), %xmm2
movaps %xmm1, %xmm0
addss %xmm2, %xmm0
subss %xmm2, %xmm1
callq 0x48c0
movq -0xe8(%rbp), %rax
movlpd %xmm0, -0x60(%rbp)
movq -0x60(%rbp), %rcx
movq %rcx, (%rax)
movl $0x1, -0x14(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x2ab2
movl -0xc(%rbp), %eax
movl -0x14(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x47a0
movlpd %xmm0, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd -0x30(%rbp), %xmm1
callq 0x45f0
movlpd %xmm0, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x120(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x128(%rbp)
movsd -0x30(%rbp), %xmm0
callq 0x46a0
movq -0x128(%rbp), %rcx
movq -0x120(%rbp), %rax
movlpd %xmm0, -0x80(%rbp)
movsd (%rax,%rcx,8), %xmm0
movsd -0x80(%rbp), %xmm1
callq 0x45f0
movlpd %xmm0, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x40(%rbp)
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x10d0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x114(%rbp)
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1190
movaps %xmm0, %xmm1
movss -0x114(%rbp), %xmm0
cvtsd2ss %xmm1, %xmm1
callq 0x48c0
movlpd %xmm0, -0x90(%rbp)
movsd -0x90(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
callq 0x4640
movlpd %xmm0, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x108(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x110(%rbp)
movsd -0x48(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
callq 0x4640
movlpd %xmm0, -0xa8(%rbp)
movsd -0x38(%rbp), %xmm0
movsd -0xa8(%rbp), %xmm1
callq 0x45f0
movlpd %xmm0, -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm1
movss 0x5697(%rip), %xmm0     # 0x8054
movss %xmm0, -0xfc(%rbp)
callq 0x4750
movq -0x110(%rbp), %rcx
movq -0x108(%rbp), %rax
movlpd %xmm0, -0x98(%rbp)
movq -0x98(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movslq -0x18(%rbp), %rax
movq %rax, -0xf8(%rbp)
movsd -0x38(%rbp), %xmm0
callq 0x47a0
movlpd %xmm0, -0xc0(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x47a0
movlpd %xmm0, -0xd0(%rbp)
movsd -0x48(%rbp), %xmm0
movsd -0xd0(%rbp), %xmm1
callq 0x4640
movlpd %xmm0, -0xc8(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd -0xc8(%rbp), %xmm1
callq 0x45f0
movaps %xmm0, %xmm1
movss -0xfc(%rbp), %xmm0
movlpd %xmm1, -0xb8(%rbp)
movsd -0xb8(%rbp), %xmm1
callq 0x4750
movq -0xf8(%rbp), %rcx
movq -0xf0(%rbp), %rax
movlpd %xmm0, -0xb0(%rbp)
movq -0xb0(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movss -0x20(%rbp), %xmm0
addss -0x24(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
jmp 0x2854
movq -0x8(%rbp), %rax
movq %rax, -0x130(%rbp)
movslq -0x1c(%rbp), %rcx
movq %rcx, %rdx
movq %rdx, -0x138(%rbp)
movsd (%rax,%rcx,8), %xmm0
callq 0x47a0
movq -0x138(%rbp), %rcx
movq -0x130(%rbp), %rax
movlpd %xmm0, -0xd8(%rbp)
movq -0xd8(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x2b4e
movq -0x8(%rbp), %rax
movq %rax, -0x140(%rbp)
movsd (%rax), %xmm1
movss 0x5535(%rip), %xmm0     # 0x8054
callq 0x4750
movq -0x140(%rbp), %rax
movlpd %xmm0, -0xe0(%rbp)
movq -0xe0(%rbp), %rcx
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
movss -0x10(%rbp), %xmm0
callq 0x23f0
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopw (%rax,%rax)