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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %esi, %eax
imull %edi, %eax
testl %eax, %eax
jle 0x6051
movslq %edi, %r12
movl %eax, %r9d
movq %r9, %r10
shlq $0x4, %r10
addq %rcx, %r10
movq %r12, %r11
shlq $0x4, %r11
movq %r12, %rbx
shlq $0x5, %rbx
addq %rdx, %rbx
addq $-0x10, %rbx
xorl %r14d, %r14d
xorl %r15d, %r15d
movaps (%rdx,%r14,2), %xmm0
addq %r12, %r15
movaps (%rbx,%r14,2), %xmm1
movaps %xmm0, %xmm2
addps %xmm1, %xmm2
movaps %xmm2, (%rcx,%r14)
subps %xmm1, %xmm0
movaps %xmm0, (%r10,%r14)
addq %r11, %r14
cmpq %r9, %r15
jl 0x6029
cmpl $0x2, %edi
jl 0x61bc
jne 0x6069
testl %eax, %eax
jg 0x6164
jmp 0x61bc
testl %eax, %eax
jle 0x61bc
movq %rsi, -0x18(%rsp)
movl %eax, %esi
movl %edi, %r10d
movq %r10, %r9
shlq $0x5, %r9
movq %r9, -0x10(%rsp)
movq %rsi, -0x8(%rsp)
shlq $0x4, %rsi
leaq (%rcx,%rsi), %rbx
addq $0x20, %rbx
movq %r10, %r14
shlq $0x4, %r14
leaq 0x20(%rcx), %r15
leaq -0x8(,%r10,8), %r11
xorl %r13d, %r13d
movq %rdx, %rbp
addq %r10, %r13
movl $0x2, %r9d
movq %r11, %r12
xorl %esi, %esi
movaps 0x10(%rbp,%rsi,4), %xmm0
movaps 0x20(%rbp,%rsi,4), %xmm1
movaps -0x10(%rbp,%r12,4), %xmm2
movaps (%rbp,%r12,4), %xmm3
movaps %xmm0, %xmm4
addps %xmm2, %xmm4
movaps %xmm4, -0x10(%r15,%rsi,4)
subps %xmm2, %xmm0
movaps %xmm1, %xmm2
subps %xmm3, %xmm2
movaps %xmm2, (%r15,%rsi,4)
addps %xmm3, %xmm1
movss (%r8,%rsi), %xmm2
movss 0x4(%r8,%rsi), %xmm3
shufps $0x0, %xmm3, %xmm3      # xmm3 = xmm3[0,0,0,0]
movaps %xmm0, %xmm4
mulps %xmm3, %xmm4
shufps $0x0, %xmm2, %xmm2      # xmm2 = xmm2[0,0,0,0]
mulps %xmm2, %xmm0
mulps %xmm1, %xmm3
subps %xmm3, %xmm0
mulps %xmm1, %xmm2
addps %xmm4, %xmm2
movaps %xmm0, -0x10(%rbx,%rsi,4)
movaps %xmm2, (%rbx,%rsi,4)
addq $0x2, %r9
addq $0x8, %rsi
addq $-0x8, %r12
cmpq %r10, %r9
jb 0x60bf
addq -0x10(%rsp), %rbp
addq %r14, %rbx
addq %r14, %r15
cmpq -0x8(%rsp), %r13
jb 0x60b1
testl %eax, %eax
setg %sil
testb $0x1, %dil
sete %r8b
testb %sil, %r8b
movq -0x18(%rsp), %rsi
je 0x61bc
movl %edi, %r11d
movq %r11, %r8
shlq $0x4, %r8
addq %r8, %rdx
shlq $0x5, %r11
incl %esi
imull %edi, %esi
decl %esi
leal -0x1(%rdi), %r8d
xorl %r9d, %r9d
movaps 0x2096(%rip), %xmm0     # 0x8220
movaps -0x10(%rdx), %xmm1
movaps (%rdx), %xmm2
addps %xmm1, %xmm1
leal (%r8,%r9), %r10d
shlq $0x4, %r10
movaps %xmm1, (%rcx,%r10)
mulps %xmm0, %xmm2
leal (%rsi,%r9), %r10d
shlq $0x4, %r10
movaps %xmm2, (%rcx,%r10)
addq %r11, %rdx
addl %edi, %r9d
cmpl %r9d, %eax
jg 0x618a
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop