// File: /workspace/github_c_makefile_star2_O3/pavel-demin[P]ft8d-c/pffft.c
// Function: radf2_ps
static NEVER_INLINE(void) radf2_ps(int ido, int l1, const v4sf * RESTRICT cc, v4sf * RESTRICT ch, const float *wa1) {
  static const float minus_one = -1.f;
  int i, k, l1ido = l1*ido;
  for (k=0; k < l1ido; k += ido) {
    v4sf a = cc[k], b = cc[k + l1ido];
    ch[2*k] = VADD(a, b);
    ch[2*(k+ido)-1] = VSUB(a, b);
  }
  if (ido < 2) return;
  if (ido != 2) {
    for (k=0; k < l1ido; k += ido) {
      for (i=2; i<ido; i+=2) {
        v4sf tr2 = cc[i - 1 + k + l1ido], ti2 = cc[i + k + l1ido];
        v4sf br = cc[i - 1 + k], bi = cc[i + k];
        VCPLXMULCONJ(tr2, ti2, LD_PS1(wa1[i - 2]), LD_PS1(wa1[i - 1]));
        ch[i + 2*k] = VADD(bi, ti2);
        ch[2*(k+ido) - i] = VSUB(ti2, bi);
        ch[i - 1 + 2*k] = VADD(br, tr2);
        ch[2*(k+ido) - i -1] = VSUB(br, tr2);
      }
    }
    if (ido % 2 == 1) return;
  }
  for (k=0; k < l1ido; k += ido) {
    ch[2*k + ido] = SVMUL(minus_one, cc[ido-1 + k + l1ido]);
    ch[2*k + ido-1] = cc[k + ido-1];
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %esi, %eax
imull %edi, %eax
testl %eax, %eax
jle 0x5a91
movslq %edi, %r9
movl %eax, %r10d
movq %r10, %r11
shlq $0x4, %r11
addq %rdx, %r11
movq %r9, %rbx
shlq $0x4, %rbx
movq %r9, %r14
shlq $0x5, %r14
addq %rcx, %r14
addq $-0x10, %r14
xorl %r15d, %r15d
xorl %r12d, %r12d
movaps (%rdx,%r15), %xmm0
movaps (%r11,%r15), %xmm1
movaps %xmm0, %xmm2
addps %xmm1, %xmm2
movaps %xmm2, (%rcx,%r15,2)
subps %xmm1, %xmm0
addq %r9, %r12
movaps %xmm0, (%r14,%r15,2)
addq %rbx, %r15
cmpq %r10, %r12
jl 0x5a69
cmpl $0x2, %edi
jl 0x5be3
je 0x5b8f
testl %eax, %eax
jle 0x5b89
movl %eax, %r9d
movl %edi, %r10d
movq %r10, %r11
shlq $0x5, %r11
movq %r11, -0x10(%rsp)
leaq -0x8(,%r10,8), %r11
movq %r11, -0x18(%rsp)
movq %r9, -0x8(%rsp)
shlq $0x4, %r9
leaq (%rdx,%r9), %r14
addq $0x20, %r14
movq %r10, %r15
shlq $0x4, %r15
leaq 0x20(%rdx), %r12
xorl %r13d, %r13d
movq %rcx, %rbp
addq %r10, %r13
movl $0x2, %r9d
movq -0x18(%rsp), %rbx
xorl %r11d, %r11d
movaps -0x10(%r14,%r11,4), %xmm0
movaps (%r14,%r11,4), %xmm1
movaps -0x10(%r12,%r11,4), %xmm2
movaps (%r12,%r11,4), %xmm3
movss (%r8,%r11), %xmm4
movss 0x4(%r8,%r11), %xmm5
shufps $0x0, %xmm5, %xmm5      # xmm5 = xmm5[0,0,0,0]
movaps %xmm0, %xmm6
mulps %xmm5, %xmm6
shufps $0x0, %xmm4, %xmm4      # xmm4 = xmm4[0,0,0,0]
mulps %xmm4, %xmm0
mulps %xmm1, %xmm5
addps %xmm0, %xmm5
mulps %xmm1, %xmm4
subps %xmm6, %xmm4
movaps %xmm3, %xmm0
addps %xmm4, %xmm0
movaps %xmm0, 0x20(%rbp,%r11,4)
subps %xmm3, %xmm4
movaps %xmm4, (%rbp,%rbx,4)
movaps %xmm2, %xmm0
addps %xmm5, %xmm0
movaps %xmm0, 0x10(%rbp,%r11,4)
subps %xmm5, %xmm2
movaps %xmm2, -0x10(%rbp,%rbx,4)
addq $0x2, %r9
addq $0x8, %r11
addq $-0x8, %rbx
cmpq %r10, %r9
jb 0x5afa
addq -0x10(%rsp), %rbp
addq %r15, %r14
addq %r15, %r12
cmpq -0x8(%rsp), %r13
jb 0x5ae9
testb $0x1, %dil
jne 0x5be3
testl %eax, %eax
jle 0x5be3
movl %edi, %r8d
shlq $0x4, %r8
addq %r8, %rcx
incl %esi
imull %edi, %esi
decl %esi
leaq (%r8,%rdx), %r9
addq $-0x10, %r9
xorl %r10d, %r10d
movaps 0x264a(%rip), %xmm0     # 0x8200
xorl %r11d, %r11d
leal (%rsi,%r10), %ebx
shlq $0x4, %rbx
movaps (%rdx,%rbx), %xmm1
xorps %xmm0, %xmm1
movaps %xmm1, (%rcx,%r11,2)
movaps (%r9,%r11), %xmm1
movaps %xmm1, -0x10(%rcx,%r11,2)
addq %r8, %r11
addl %edi, %r10d
cmpl %r10d, %eax
jg 0x5bb9
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq