void twiddleFFT_5(int sofarRadix, int radix, int remainRadix, int groupOffset,
                  double twiddleRe[], double twiddleIm[], double yRe[],
                  double yIm[]) {
  int yIndx[5];
  int groupNo, blockNo, adr;
  double t1_re, t1_im, t2_re, t2_im, t3_re, t3_im;
  double t4_re, t4_im, t5_re, t5_im;
  double m2_re, m2_im, m3_re, m3_im, m4_re, m4_im;
  double m1_re, m1_im, m5_re, m5_im;
  double s1_re, s1_im, s2_re, s2_im, s3_re, s3_im;
  double s4_re, s4_im, s5_re, s5_im;
  double yr, yi, twr, twi;
  double ar0, ar1, ar2, ar3, ar4;
  double ai0, ai1, ai2, ai3, ai4;
  adr = groupOffset;
  for (groupNo = 0; groupNo < remainRadix; groupNo++) {
    for (blockNo = 0; blockNo < radix; blockNo++) {
      yIndx[blockNo] = adr;
      adr = adr + sofarRadix;
    }
    ar0 = yRe[yIndx[0]];
    ai0 = yIm[yIndx[0]];
    yr = yRe[yIndx[1]];
    yi = yIm[yIndx[1]];
    twr = twiddleRe[1];
    twi = twiddleIm[1];
    ar1 = twr * yr - twi * yi;
    ai1 = twr * yi + twi * yr;
    yr = yRe[yIndx[2]];
    yi = yIm[yIndx[2]];
    twr = twiddleRe[2];
    twi = twiddleIm[2];
    ar2 = twr * yr - twi * yi;
    ai2 = twr * yi + twi * yr;
    yr = yRe[yIndx[3]];
    yi = yIm[yIndx[3]];
    twr = twiddleRe[3];
    twi = twiddleIm[3];
    ar3 = twr * yr - twi * yi;
    ai3 = twr * yi + twi * yr;
    yr = yRe[yIndx[4]];
    yi = yIm[yIndx[4]];
    twr = twiddleRe[4];
    twi = twiddleIm[4];
    ar4 = twr * yr - twi * yi;
    ai4 = twr * yi + twi * yr;
    t1_re = ar1 + ar4;
    t1_im = ai1 + ai4;
    t2_re = ar2 + ar3;
    t2_im = ai2 + ai3;
    t3_re = ar1 - ar4;
    t3_im = ai1 - ai4;
    t4_re = ar3 - ar2;
    t4_im = ai3 - ai2;
    t5_re = t1_re + t2_re;
    t5_im = t1_im + t2_im;
    ar0 = ar0 + t5_re;
    ai0 = ai0 + t5_im;
    m1_re = -1.25 * t5_re;
    m1_im = -1.25 * t5_im;
    m2_re = 0.5590169943749474241022934171 * (t1_re - t2_re);
    m2_im = 0.5590169943749474241022934171 * (t1_im - t2_im);
    m3_re = - -0.9510565162951535721164393334 * (t3_im + t4_im);
    m3_im = -0.9510565162951535721164393334 * (t3_re + t4_re);
    m4_re = - -1.538841768587626701285145288 * t4_im;
    m4_im = -1.538841768587626701285145288 * t4_re;
    m5_re = -0.3632712640026804429477333787 * t3_im;
    m5_im = 0.3632712640026804429477333787 * t3_re;
    s3_re = m3_re - m4_re;
    s3_im = m3_im - m4_im;
    s5_re = m3_re + m5_re;
    s5_im = m3_im + m5_im;
    s1_re = ar0 + m1_re;
    s1_im = ai0 + m1_im;
    s2_re = s1_re + m2_re;
    s2_im = s1_im + m2_im;
    s4_re = s1_re - m2_re;
    s4_im = s1_im - m2_im;
    yRe[yIndx[0]] = ar0;
    yIm[yIndx[0]] = ai0;
    yRe[yIndx[1]] = s2_re + s3_re;
    yIm[yIndx[1]] = s2_im + s3_im;
    yRe[yIndx[2]] = s4_re + s5_re;
    yIm[yIndx[2]] = s4_im + s5_im;
    yRe[yIndx[3]] = s4_re - s5_re;
    yIm[yIndx[3]] = s4_im - s5_im;
    yRe[yIndx[4]] = s2_re - s3_re;
    yIm[yIndx[4]] = s2_im - s3_im;
    groupOffset = groupOffset + sofarRadix * radix;
    adr = groupOffset;
  }
}


x86 assembly (clang, -O0):
<twiddleFFT_5>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x4c(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    18da <twiddleFFT_5+0x7da>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1175 <twiddleFFT_5+0x75>
mov    -0x4c(%rbp),%ecx
movslq -0x48(%rbp),%rax
mov    %ecx,-0x40(%rbp,%rax,4)
mov    -0x4c(%rbp),%eax
add    -0x4(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1147 <twiddleFFT_5+0x47>
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x198(%rbp),%xmm0
ff
addsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
addsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x1a0(%rbp),%xmm0
ff
addsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x198(%rbp),%xmm0
ff
subsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x1a8(%rbp),%xmm0
ff
subsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0xa83(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xa6b(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x58(%rbp),%xmm1
subsd  -0x68(%rbp),%xmm1
movsd  0xa41(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x60(%rbp),%xmm1
subsd  -0x70(%rbp),%xmm1
movsd  0xa23(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
addsd  -0x90(%rbp),%xmm1
ff
movsd  0x9fa(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
addsd  -0x88(%rbp),%xmm1
ff
movsd  0x9d1(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x9b5(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x995(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x975(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x958(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x190(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x108(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x120(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x138(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x108(%rbp),%xmm0
ff
subsd  -0x118(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x120(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
mov    -0x4(%rbp),%ecx
imul   -0x8(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1134 <twiddleFFT_5+0x34>
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<twiddleFFT_5>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %esi,-0x6c(%rsp)
mov    %edx,-0x4c(%rsp)
test   %edx,%edx
jle    1564 <twiddleFFT_5+0x464>
mov    0x40(%rsp),%r10
mov    0x38(%rsp),%rax
mov    -0x6c(%rsp),%edx
mov    %edx,%esi
imul   %edi,%esi
mov    %esi,-0x50(%rsp)
mov    %edx,%ebx
mov    %ebx,%edx
and    $0xfffffff8,%edx
lea    -0x8(%rdx),%rsi
mov    %rsi,-0x20(%rsp)
shr    $0x3,%rsi
add    $0x1,%rsi
mov    %rdx,-0x40(%rsp)
imul   %edi,%edx
mov    %rdx,-0x38(%rsp)
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa 0xe99(%rip),%xmm1
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movdqa 0xe98(%rip),%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm1,%xmm2
movdqa %xmm2,-0x18(%rsp)
pslld  $0x2,%xmm0
mov    %esi,%ebp
and    $0x3,%ebp
and    $0xfffffffffffffffc,%rsi
mov    %rsi,-0x30(%rsp)
mov    %rbp,-0x28(%rsp)
shl    $0x5,%rbp
xor    %r13d,%r13d
movsd  0xe6d(%rip),%xmm11
movsd  0xe6c(%rip),%xmm12
movsd  0xe7b(%rip),%xmm13
movsd  0xe7a(%rip),%xmm14
jmp    1452 <twiddleFFT_5+0x352>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x60(%rsp),%edx
mov    %edx,-0x48(%rsp)
mov    -0x5c(%rsp),%r12d
mov    -0x58(%rsp),%edx
mov    %edx,-0x44(%rsp)
movslq -0x64(%rsp),%r11
movsd  (%rax,%r11,8),%xmm1
movsd  (%r10,%r11,8),%xmm2
movsd  0x8(%r9),%xmm3
movsd  0x10(%r9),%xmm4
movsd  0x8(%r8),%xmm5
movapd %xmm5,%xmm6
mulsd  %xmm2,%xmm5
mulsd  %xmm3,%xmm2
movsd  0x10(%r8),%xmm7
mulsd  %xmm1,%xmm6
subsd  %xmm2,%xmm6
mulsd  %xmm3,%xmm1
addsd  %xmm1,%xmm5
movslq -0x48(%rsp),%rdx
movsd  (%rax,%rdx,8),%xmm1
movsd  (%r10,%rdx,8),%xmm2
movapd %xmm7,%xmm15
mulsd  %xmm2,%xmm7
mulsd  %xmm4,%xmm2
mulsd  %xmm1,%xmm15
subsd  %xmm2,%xmm15
mulsd  %xmm4,%xmm1
addsd  %xmm1,%xmm7
movslq %r12d,%r14
movsd  (%rax,%r14,8),%xmm1
movsd  (%r10,%r14,8),%xmm3
movsd  0x18(%r8),%xmm2
movsd  0x18(%r9),%xmm4
movapd %xmm2,%xmm8
mulsd  %xmm3,%xmm2
mulsd  %xmm4,%xmm3
mulsd  %xmm1,%xmm8
subsd  %xmm3,%xmm8
mulsd  %xmm4,%xmm1
addsd  %xmm1,%xmm2
movslq -0x44(%rsp),%rsi
movsd  (%rax,%rsi,8),%xmm1
movsd  (%r10,%rsi,8),%xmm3
movsd  0x20(%r8),%xmm4
movsd  0x20(%r9),%xmm9
movapd %xmm4,%xmm10
mulsd  %xmm3,%xmm4
mulsd  %xmm9,%xmm3
mulsd  %xmm1,%xmm10
subsd  %xmm3,%xmm10
movslq -0x68(%rsp),%r15
mulsd  %xmm9,%xmm1
addsd  %xmm1,%xmm4
movapd %xmm6,%xmm3
addsd  %xmm10,%xmm3
movapd %xmm5,%xmm1
addsd  %xmm4,%xmm1
subsd  %xmm10,%xmm6
movapd %xmm15,%xmm9
addsd  %xmm8,%xmm9
subsd  %xmm4,%xmm5
movapd %xmm7,%xmm4
addsd  %xmm2,%xmm4
subsd  %xmm15,%xmm8
subsd  %xmm7,%xmm2
movapd %xmm9,%xmm15
addsd  %xmm3,%xmm15
movapd %xmm4,%xmm7
addsd  %xmm1,%xmm7
subsd  %xmm9,%xmm3
subsd  %xmm4,%xmm1
movapd %xmm2,%xmm10
addsd  %xmm5,%xmm10
mulsd  0xce8(%rip),%xmm10
mulsd  %xmm13,%xmm2
movapd %xmm10,%xmm9
subsd  %xmm2,%xmm9
movsd  (%rax,%r15,8),%xmm2
addsd  %xmm15,%xmm2
mulsd  %xmm14,%xmm5
subsd  %xmm5,%xmm10
movapd %xmm8,%xmm5
addsd  %xmm6,%xmm5
mulsd  0xcbb(%rip),%xmm5
mulsd  %xmm13,%xmm8
mulsd  %xmm14,%xmm6
addsd  %xmm5,%xmm8
addsd  %xmm5,%xmm6
movsd  (%r10,%r15,8),%xmm5
addsd  %xmm7,%xmm5
movsd  %xmm2,(%rax,%r15,8)
movsd  %xmm5,(%r10,%r15,8)
mulsd  %xmm11,%xmm15
mulsd  %xmm11,%xmm7
mulsd  %xmm12,%xmm3
mulsd  %xmm12,%xmm1
subsd  %xmm15,%xmm2
subsd  %xmm7,%xmm5
movapd %xmm3,%xmm7
addsd  %xmm2,%xmm7
movapd %xmm1,%xmm4
addsd  %xmm5,%xmm4
subsd  %xmm3,%xmm2
movapd %xmm9,%xmm3
addsd  %xmm7,%xmm3
movsd  %xmm3,(%rax,%r11,8)
movapd %xmm8,%xmm3
addsd  %xmm4,%xmm3
movsd  %xmm3,(%r10,%r11,8)
subsd  %xmm1,%xmm5
movapd %xmm10,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,(%rax,%rdx,8)
movapd %xmm6,%xmm1
addsd  %xmm5,%xmm1
movsd  %xmm1,(%r10,%rdx,8)
subsd  %xmm10,%xmm2
movsd  %xmm2,(%rax,%r14,8)
subsd  %xmm6,%xmm5
movsd  %xmm5,(%r10,%r14,8)
subsd  %xmm9,%xmm7
movsd  %xmm7,(%rax,%rsi,8)
subsd  %xmm8,%xmm4
movsd  %xmm4,(%r10,%rsi,8)
add    -0x50(%rsp),%ecx
add    $0x1,%r13d
cmp    -0x4c(%rsp),%r13d
je     1564 <twiddleFFT_5+0x464>
cmpl   $0x0,-0x6c(%rsp)
jle    11f5 <twiddleFFT_5+0xf5>
cmpl   $0x8,-0x6c(%rsp)
jae    1470 <twiddleFFT_5+0x370>
xor    %edx,%edx
mov    %ecx,%esi
jmp    1550 <twiddleFFT_5+0x450>
nopl   (%rax)
movd   %ecx,%xmm1
pshufd $0x0,%xmm1,%xmm1
paddd  -0x18(%rsp),%xmm1
cmpq   $0x18,-0x20(%rsp)
jae    148b <twiddleFFT_5+0x38b>
xor    %edx,%edx
jmp    14fa <twiddleFFT_5+0x3fa>
mov    -0x30(%rsp),%rsi
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqa %xmm1,-0x68(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x58(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x48(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x38(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x28(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x18(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x8(%rsp,%rdx,4)
paddd  %xmm0,%xmm1
movdqa %xmm1,0x8(%rsp,%rdx,4)
add    $0x20,%rdx
paddd  %xmm0,%xmm1
add    $0xfffffffffffffffc,%rsi
jne    14a0 <twiddleFFT_5+0x3a0>
cmpq   $0x0,-0x28(%rsp)
je     152c <twiddleFFT_5+0x42c>
lea    -0x58(%rsp),%rsi
lea    (%rsi,%rdx,4),%rdx
xor    %esi,%esi
nopl   (%rax)
movdqa %xmm1,-0x10(%rdx,%rsi,1)
paddd  %xmm0,%xmm1
movdqa %xmm1,(%rdx,%rsi,1)
paddd  %xmm0,%xmm1
add    $0x20,%rsi
cmp    %rsi,%rbp
jne    1510 <twiddleFFT_5+0x410>
cmp    %rbx,-0x40(%rsp)
je     11e0 <twiddleFFT_5+0xe0>
mov    -0x38(%rsp),%rdx
lea    (%rcx,%rdx,1),%esi
mov    -0x40(%rsp),%rdx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %esi,-0x68(%rsp,%rdx,4)
add    %edi,%esi
add    $0x1,%rdx
cmp    %rdx,%rbx
jne    1550 <twiddleFFT_5+0x450>
jmp    11e0 <twiddleFFT_5+0xe0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @twiddleFFT_5(i32 %0, i32 %1, i32 %2, i32 %3, double* %4, double* %5, double* %6, double* %7) {
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca [5 x i32]
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca double
%61 = alloca double
%62 = alloca double
%63 = alloca double
%64 = alloca double
store i32 %0, i32* %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store i32 %3, i32* %12
store double* %4, double** %13
store double* %5, double** %14
store double* %6, double** %15
store double* %7, double** %16
%65 = load i32, i32* %12
store i32 %65, i32* %20
store i32 0, i32* %18
br label %66
66: ; preds = %399, %8
%67 = load i32, i32* %18
%68 = load i32, i32* %11
%69 = icmp slt i32 %67, %68
br i1 %69, label %70, label %402
70: ; preds = %66
store i32 0, i32* %19
br label %71
71: ; preds = %83, %70
%72 = load i32, i32* %19
%73 = load i32, i32* %10
%74 = icmp slt i32 %72, %73
br i1 %74, label %75, label %86
75: ; preds = %71
%76 = load i32, i32* %20
%77 = load i32, i32* %19
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 %78
store i32 %76, i32* %79
%80 = load i32, i32* %20
%81 = load i32, i32* %9
%82 = add nsw i32 %80, %81
store i32 %82, i32* %20
br label %83
83: ; preds = %75
%84 = load i32, i32* %19
%85 = add nsw i32 %84, 1
store i32 %85, i32* %19
br label %71
86: ; preds = %71
%87 = load double*, double** %15
%88 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 0
%89 = load i32, i32* %88
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds double, double* %87, i64 %90
%92 = load double, double* %91
store double %92, double* %55
%93 = load double*, double** %16
%94 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 0
%95 = load i32, i32* %94
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds double, double* %93, i64 %96
%98 = load double, double* %97
store double %98, double* %60
%99 = load double*, double** %15
%100 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 1
%101 = load i32, i32* %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %99, i64 %102
%104 = load double, double* %103
store double %104, double* %51
%105 = load double*, double** %16
%106 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 1
%107 = load i32, i32* %106
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %105, i64 %108
%110 = load double, double* %109
store double %110, double* %52
%111 = load double*, double** %13
%112 = getelementptr inbounds double, double* %111, i64 1
%113 = load double, double* %112
store double %113, double* %53
%114 = load double*, double** %14
%115 = getelementptr inbounds double, double* %114, i64 1
%116 = load double, double* %115
store double %116, double* %54
%117 = load double, double* %53
%118 = load double, double* %51
%119 = load double, double* %54
%120 = load double, double* %52
%121 = fmul double %119, %120
%122 = fneg double %121
%123 = call double @llvm.fmuladd.f64(double %117, double %118, double %122)
store double %123, double* %56
%124 = load double, double* %53
%125 = load double, double* %52
%126 = load double, double* %54
%127 = load double, double* %51
%128 = fmul double %126, %127
%129 = call double @llvm.fmuladd.f64(double %124, double %125, double %128)
store double %129, double* %61
%130 = load double*, double** %15
%131 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 2
%132 = load i32, i32* %131
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %130, i64 %133
%135 = load double, double* %134
store double %135, double* %51
%136 = load double*, double** %16
%137 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 2
%138 = load i32, i32* %137
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds double, double* %136, i64 %139
%141 = load double, double* %140
store double %141, double* %52
%142 = load double*, double** %13
%143 = getelementptr inbounds double, double* %142, i64 2
%144 = load double, double* %143
store double %144, double* %53
%145 = load double*, double** %14
%146 = getelementptr inbounds double, double* %145, i64 2
%147 = load double, double* %146
store double %147, double* %54
%148 = load double, double* %53
%149 = load double, double* %51
%150 = load double, double* %54
%151 = load double, double* %52
%152 = fmul double %150, %151
%153 = fneg double %152
%154 = call double @llvm.fmuladd.f64(double %148, double %149, double %153)
store double %154, double* %57
%155 = load double, double* %53
%156 = load double, double* %52
%157 = load double, double* %54
%158 = load double, double* %51
%159 = fmul double %157, %158
%160 = call double @llvm.fmuladd.f64(double %155, double %156, double %159)
store double %160, double* %62
%161 = load double*, double** %15
%162 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 3
%163 = load i32, i32* %162
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double, double* %161, i64 %164
%166 = load double, double* %165
store double %166, double* %51
%167 = load double*, double** %16
%168 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 3
%169 = load i32, i32* %168
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds double, double* %167, i64 %170
%172 = load double, double* %171
store double %172, double* %52
%173 = load double*, double** %13
%174 = getelementptr inbounds double, double* %173, i64 3
%175 = load double, double* %174
store double %175, double* %53
%176 = load double*, double** %14
%177 = getelementptr inbounds double, double* %176, i64 3
%178 = load double, double* %177
store double %178, double* %54
%179 = load double, double* %53
%180 = load double, double* %51
%181 = load double, double* %54
%182 = load double, double* %52
%183 = fmul double %181, %182
%184 = fneg double %183
%185 = call double @llvm.fmuladd.f64(double %179, double %180, double %184)
store double %185, double* %58
%186 = load double, double* %53
%187 = load double, double* %52
%188 = load double, double* %54
%189 = load double, double* %51
%190 = fmul double %188, %189
%191 = call double @llvm.fmuladd.f64(double %186, double %187, double %190)
store double %191, double* %63
%192 = load double*, double** %15
%193 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 4
%194 = load i32, i32* %193
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds double, double* %192, i64 %195
%197 = load double, double* %196
store double %197, double* %51
%198 = load double*, double** %16
%199 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 4
%200 = load i32, i32* %199
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds double, double* %198, i64 %201
%203 = load double, double* %202
store double %203, double* %52
%204 = load double*, double** %13
%205 = getelementptr inbounds double, double* %204, i64 4
%206 = load double, double* %205
store double %206, double* %53
%207 = load double*, double** %14
%208 = getelementptr inbounds double, double* %207, i64 4
%209 = load double, double* %208
store double %209, double* %54
%210 = load double, double* %53
%211 = load double, double* %51
%212 = load double, double* %54
%213 = load double, double* %52
%214 = fmul double %212, %213
%215 = fneg double %214
%216 = call double @llvm.fmuladd.f64(double %210, double %211, double %215)
store double %216, double* %59
%217 = load double, double* %53
%218 = load double, double* %52
%219 = load double, double* %54
%220 = load double, double* %51
%221 = fmul double %219, %220
%222 = call double @llvm.fmuladd.f64(double %217, double %218, double %221)
store double %222, double* %64
%223 = load double, double* %56
%224 = load double, double* %59
%225 = fadd double %223, %224
store double %225, double* %21
%226 = load double, double* %61
%227 = load double, double* %64
%228 = fadd double %226, %227
store double %228, double* %22
%229 = load double, double* %57
%230 = load double, double* %58
%231 = fadd double %229, %230
store double %231, double* %23
%232 = load double, double* %62
%233 = load double, double* %63
%234 = fadd double %232, %233
store double %234, double* %24
%235 = load double, double* %56
%236 = load double, double* %59
%237 = fsub double %235, %236
store double %237, double* %25
%238 = load double, double* %61
%239 = load double, double* %64
%240 = fsub double %238, %239
store double %240, double* %26
%241 = load double, double* %58
%242 = load double, double* %57
%243 = fsub double %241, %242
store double %243, double* %27
%244 = load double, double* %63
%245 = load double, double* %62
%246 = fsub double %244, %245
store double %246, double* %28
%247 = load double, double* %21
%248 = load double, double* %23
%249 = fadd double %247, %248
store double %249, double* %29
%250 = load double, double* %22
%251 = load double, double* %24
%252 = fadd double %250, %251
store double %252, double* %30
%253 = load double, double* %55
%254 = load double, double* %29
%255 = fadd double %253, %254
store double %255, double* %55
%256 = load double, double* %60
%257 = load double, double* %30
%258 = fadd double %256, %257
store double %258, double* %60
%259 = load double, double* %29
%260 = fmul double -1.250000e+00, %259
store double %260, double* %37
%261 = load double, double* %30
%262 = fmul double -1.250000e+00, %261
store double %262, double* %38
%263 = load double, double* %21
%264 = load double, double* %23
%265 = fsub double %263, %264
%266 = fmul double 0x3FE1E3779B97F4A8, %265
store double %266, double* %31
%267 = load double, double* %22
%268 = load double, double* %24
%269 = fsub double %267, %268
%270 = fmul double 0x3FE1E3779B97F4A8, %269
store double %270, double* %32
%271 = load double, double* %26
%272 = load double, double* %28
%273 = fadd double %271, %272
%274 = fmul double 0x3FEE6F0E134454FF, %273
store double %274, double* %33
%275 = load double, double* %25
%276 = load double, double* %27
%277 = fadd double %275, %276
%278 = fmul double 0xBFEE6F0E134454FF, %277
store double %278, double* %34
%279 = load double, double* %28
%280 = fmul double 0x3FF89F188BDCD7AF, %279
store double %280, double* %35
%281 = load double, double* %27
%282 = fmul double 0xBFF89F188BDCD7AF, %281
store double %282, double* %36
%283 = load double, double* %26
%284 = fmul double 0xBFD73FD61D9DF543, %283
store double %284, double* %39
%285 = load double, double* %25
%286 = fmul double 0x3FD73FD61D9DF543, %285
store double %286, double* %40
%287 = load double, double* %33
%288 = load double, double* %35
%289 = fsub double %287, %288
store double %289, double* %45
%290 = load double, double* %34
%291 = load double, double* %36
%292 = fsub double %290, %291
store double %292, double* %46
%293 = load double, double* %33
%294 = load double, double* %39
%295 = fadd double %293, %294
store double %295, double* %49
%296 = load double, double* %34
%297 = load double, double* %40
%298 = fadd double %296, %297
store double %298, double* %50
%299 = load double, double* %55
%300 = load double, double* %37
%301 = fadd double %299, %300
store double %301, double* %41
%302 = load double, double* %60
%303 = load double, double* %38
%304 = fadd double %302, %303
store double %304, double* %42
%305 = load double, double* %41
%306 = load double, double* %31
%307 = fadd double %305, %306
store double %307, double* %43
%308 = load double, double* %42
%309 = load double, double* %32
%310 = fadd double %308, %309
store double %310, double* %44
%311 = load double, double* %41
%312 = load double, double* %31
%313 = fsub double %311, %312
store double %313, double* %47
%314 = load double, double* %42
%315 = load double, double* %32
%316 = fsub double %314, %315
store double %316, double* %48
%317 = load double, double* %55
%318 = load double*, double** %15
%319 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 0
%320 = load i32, i32* %319
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds double, double* %318, i64 %321
store double %317, double* %322
%323 = load double, double* %60
%324 = load double*, double** %16
%325 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 0
%326 = load i32, i32* %325
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds double, double* %324, i64 %327
store double %323, double* %328
%329 = load double, double* %43
%330 = load double, double* %45
%331 = fadd double %329, %330
%332 = load double*, double** %15
%333 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 1
%334 = load i32, i32* %333
%335 = sext i32 %334 to i64
%336 = getelementptr inbounds double, double* %332, i64 %335
store double %331, double* %336
%337 = load double, double* %44
%338 = load double, double* %46
%339 = fadd double %337, %338
%340 = load double*, double** %16
%341 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 1
%342 = load i32, i32* %341
%343 = sext i32 %342 to i64
%344 = getelementptr inbounds double, double* %340, i64 %343
store double %339, double* %344
%345 = load double, double* %47
%346 = load double, double* %49
%347 = fadd double %345, %346
%348 = load double*, double** %15
%349 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 2
%350 = load i32, i32* %349
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds double, double* %348, i64 %351
store double %347, double* %352
%353 = load double, double* %48
%354 = load double, double* %50
%355 = fadd double %353, %354
%356 = load double*, double** %16
%357 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 2
%358 = load i32, i32* %357
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds double, double* %356, i64 %359
store double %355, double* %360
%361 = load double, double* %47
%362 = load double, double* %49
%363 = fsub double %361, %362
%364 = load double*, double** %15
%365 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 3
%366 = load i32, i32* %365
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds double, double* %364, i64 %367
store double %363, double* %368
%369 = load double, double* %48
%370 = load double, double* %50
%371 = fsub double %369, %370
%372 = load double*, double** %16
%373 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 3
%374 = load i32, i32* %373
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds double, double* %372, i64 %375
store double %371, double* %376
%377 = load double, double* %43
%378 = load double, double* %45
%379 = fsub double %377, %378
%380 = load double*, double** %15
%381 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 4
%382 = load i32, i32* %381
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds double, double* %380, i64 %383
store double %379, double* %384
%385 = load double, double* %44
%386 = load double, double* %46
%387 = fsub double %385, %386
%388 = load double*, double** %16
%389 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 4
%390 = load i32, i32* %389
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds double, double* %388, i64 %391
store double %387, double* %392
%393 = load i32, i32* %12
%394 = load i32, i32* %9
%395 = load i32, i32* %10
%396 = mul nsw i32 %394, %395
%397 = add nsw i32 %393, %396
store i32 %397, i32* %12
%398 = load i32, i32* %12
store i32 %398, i32* %20
br label %399
399: ; preds = %86
%400 = load i32, i32* %18
%401 = add nsw i32 %400, 1
store i32 %401, i32* %18
br label %66
402: ; preds = %66
ret void
}

LLVM IR (-O2):
define void @twiddleFFT_5(i32 %0, i32 %1, i32 %2, i32 %3, double* nocapture %4, double* nocapture %5, double* nocapture %6, double* nocapture %7) {
%9 = alloca [5 x i32]
%10 = bitcast [5 x i32]* %9 to i8*
%11 = icmp sgt i32 %2, 0
br i1 %11, label %12, label %231
12: ; preds = %8
%13 = icmp sgt i32 %1, 0
%14 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 0
%15 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 1
%16 = getelementptr inbounds double, double* %4, i64 1
%17 = getelementptr inbounds double, double* %5, i64 1
%18 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 2
%19 = getelementptr inbounds double, double* %4, i64 2
%20 = getelementptr inbounds double, double* %5, i64 2
%21 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 3
%22 = getelementptr inbounds double, double* %4, i64 3
%23 = getelementptr inbounds double, double* %5, i64 3
%24 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 4
%25 = getelementptr inbounds double, double* %4, i64 4
%26 = getelementptr inbounds double, double* %5, i64 4
%27 = mul nsw i32 %1, %0
%28 = zext i32 %1 to i64
%29 = and i64 %28, 4294967288
%30 = add nsw i64 %29, -8
%31 = lshr exact i64 %30, 3
%32 = add nuw nsw i64 %31, 1
%33 = icmp ult i32 %1, 8
%34 = and i64 %28, 4294967288
%35 = trunc i64 %34 to i32
%36 = mul i32 %35, %0
%37 = insertelement <4 x i32> poison, i32 %0, i64 0
%38 = shufflevector <4 x i32> %37, <4 x i32> poison, <4 x i32> zeroinitializer
%39 = mul <4 x i32> %38, <i32 0, i32 1, i32 2, i32 3>
%40 = shl i32 %0, 2
%41 = insertelement <4 x i32> poison, i32 %40, i64 0
%42 = shufflevector <4 x i32> %41, <4 x i32> poison, <4 x i32> zeroinitializer
%43 = and i64 %32, 3
%44 = icmp ult i64 %30, 24
%45 = and i64 %32, 4611686018427387900
%46 = icmp eq i64 %43, 0
%47 = icmp eq i64 %34, %28
br label %48
48: ; preds = %12, %125
%49 = phi i32 [ undef, %12 ], [ %126, %125 ]
%50 = phi i32 [ undef, %12 ], [ %127, %125 ]
%51 = phi i32 [ undef, %12 ], [ %128, %125 ]
%52 = phi i32 [ %3, %12 ], [ %228, %125 ]
%53 = phi i32 [ 0, %12 ], [ %229, %125 ]
br i1 %13, label %54, label %125
54: ; preds = %48
br i1 %33, label %111, label %55
55: ; preds = %54
%56 = add i32 %52, %36
%57 = insertelement <4 x i32> poison, i32 %52, i64 0
%58 = shufflevector <4 x i32> %57, <4 x i32> poison, <4 x i32> zeroinitializer
%59 = add <4 x i32> %58, %39
br i1 %44, label %94, label %60
60: ; preds = %55, %60
%61 = phi i64 [ %90, %60 ], [ 0, %55 ]
%62 = phi <4 x i32> [ %91, %60 ], [ %59, %55 ]
%63 = phi i64 [ %92, %60 ], [ 0, %55 ]
%64 = add <4 x i32> %62, %42
%65 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %61
%66 = bitcast i32* %65 to <4 x i32>*
store <4 x i32> %62, <4 x i32>* %66
%67 = getelementptr inbounds i32, i32* %65, i64 4
%68 = bitcast i32* %67 to <4 x i32>*
store <4 x i32> %64, <4 x i32>* %68
%69 = or i64 %61, 8
%70 = add <4 x i32> %64, %42
%71 = add <4 x i32> %70, %42
%72 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %69
%73 = bitcast i32* %72 to <4 x i32>*
store <4 x i32> %70, <4 x i32>* %73
%74 = getelementptr inbounds i32, i32* %72, i64 4
%75 = bitcast i32* %74 to <4 x i32>*
store <4 x i32> %71, <4 x i32>* %75
%76 = or i64 %61, 16
%77 = add <4 x i32> %71, %42
%78 = add <4 x i32> %77, %42
%79 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %76
%80 = bitcast i32* %79 to <4 x i32>*
store <4 x i32> %77, <4 x i32>* %80
%81 = getelementptr inbounds i32, i32* %79, i64 4
%82 = bitcast i32* %81 to <4 x i32>*
store <4 x i32> %78, <4 x i32>* %82
%83 = or i64 %61, 24
%84 = add <4 x i32> %78, %42
%85 = add <4 x i32> %84, %42
%86 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %83
%87 = bitcast i32* %86 to <4 x i32>*
store <4 x i32> %84, <4 x i32>* %87
%88 = getelementptr inbounds i32, i32* %86, i64 4
%89 = bitcast i32* %88 to <4 x i32>*
store <4 x i32> %85, <4 x i32>* %89
%90 = add nuw i64 %61, 32
%91 = add <4 x i32> %85, %42
%92 = add i64 %63, 4
%93 = icmp eq i64 %92, %45
br i1 %93, label %94, label %60
94: ; preds = %60, %55
%95 = phi i64 [ 0, %55 ], [ %90, %60 ]
%96 = phi <4 x i32> [ %59, %55 ], [ %91, %60 ]
br i1 %46, label %110, label %97
97: ; preds = %94, %97
%98 = phi i64 [ %106, %97 ], [ %95, %94 ]
%99 = phi <4 x i32> [ %107, %97 ], [ %96, %94 ]
%100 = phi i64 [ %108, %97 ], [ 0, %94 ]
%101 = add <4 x i32> %99, %42
%102 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %98
%103 = bitcast i32* %102 to <4 x i32>*
store <4 x i32> %99, <4 x i32>* %103
%104 = getelementptr inbounds i32, i32* %102, i64 4
%105 = bitcast i32* %104 to <4 x i32>*
store <4 x i32> %101, <4 x i32>* %105
%106 = add nuw i64 %98, 8
%107 = add <4 x i32> %101, %42
%108 = add i64 %100, 1
%109 = icmp eq i64 %108, %43
br i1 %109, label %110, label %97
110: ; preds = %97, %94
br i1 %47, label %121, label %111
111: ; preds = %54, %110
%112 = phi i64 [ 0, %54 ], [ %34, %110 ]
%113 = phi i32 [ %52, %54 ], [ %56, %110 ]
br label %114
114: ; preds = %111, %114
%115 = phi i64 [ %119, %114 ], [ %112, %111 ]
%116 = phi i32 [ %118, %114 ], [ %113, %111 ]
%117 = getelementptr inbounds [5 x i32], [5 x i32]* %9, i64 0, i64 %115
store i32 %116, i32* %117
%118 = add nsw i32 %116, %0
%119 = add nuw nsw i64 %115, 1
%120 = icmp eq i64 %119, %28
br i1 %120, label %121, label %114
121: ; preds = %114, %110
%122 = load i32, i32* %18
%123 = load i32, i32* %21
%124 = load i32, i32* %24
br label %125
125: ; preds = %121, %48
%126 = phi i32 [ %124, %121 ], [ %49, %48 ]
%127 = phi i32 [ %123, %121 ], [ %50, %48 ]
%128 = phi i32 [ %122, %121 ], [ %51, %48 ]
%129 = load i32, i32* %14
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds double, double* %6, i64 %130
%132 = load double, double* %131
%133 = getelementptr inbounds double, double* %7, i64 %130
%134 = load double, double* %133
%135 = load i32, i32* %15
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds double, double* %6, i64 %136
%138 = load double, double* %137
%139 = getelementptr inbounds double, double* %7, i64 %136
%140 = load double, double* %139
%141 = load double, double* %16
%142 = load double, double* %17
%143 = fneg double %142
%144 = fmul double %140, %143
%145 = tail call double @llvm.fmuladd.f64(double %141, double %138, double %144)
%146 = fmul double %138, %142
%147 = tail call double @llvm.fmuladd.f64(double %141, double %140, double %146)
%148 = sext i32 %128 to i64
%149 = getelementptr inbounds double, double* %6, i64 %148
%150 = load double, double* %149
%151 = getelementptr inbounds double, double* %7, i64 %148
%152 = load double, double* %151
%153 = load double, double* %19
%154 = load double, double* %20
%155 = fneg double %154
%156 = fmul double %152, %155
%157 = tail call double @llvm.fmuladd.f64(double %153, double %150, double %156)
%158 = fmul double %150, %154
%159 = tail call double @llvm.fmuladd.f64(double %153, double %152, double %158)
%160 = sext i32 %127 to i64
%161 = getelementptr inbounds double, double* %6, i64 %160
%162 = load double, double* %161
%163 = getelementptr inbounds double, double* %7, i64 %160
%164 = load double, double* %163
%165 = load double, double* %22
%166 = load double, double* %23
%167 = fneg double %166
%168 = fmul double %164, %167
%169 = tail call double @llvm.fmuladd.f64(double %165, double %162, double %168)
%170 = fmul double %162, %166
%171 = tail call double @llvm.fmuladd.f64(double %165, double %164, double %170)
%172 = sext i32 %126 to i64
%173 = getelementptr inbounds double, double* %6, i64 %172
%174 = load double, double* %173
%175 = getelementptr inbounds double, double* %7, i64 %172
%176 = load double, double* %175
%177 = load double, double* %25
%178 = load double, double* %26
%179 = fneg double %178
%180 = fmul double %176, %179
%181 = tail call double @llvm.fmuladd.f64(double %177, double %174, double %180)
%182 = fmul double %174, %178
%183 = tail call double @llvm.fmuladd.f64(double %177, double %176, double %182)
%184 = fadd double %145, %181
%185 = fadd double %147, %183
%186 = fadd double %157, %169
%187 = fadd double %159, %171
%188 = fsub double %145, %181
%189 = fsub double %147, %183
%190 = fsub double %169, %157
%191 = fsub double %171, %159
%192 = fadd double %186, %184
%193 = fadd double %187, %185
%194 = fadd double %132, %192
%195 = fadd double %134, %193
%196 = fmul double %192, 1.250000e+00
%197 = fmul double %193, 1.250000e+00
%198 = fsub double %184, %186
%199 = fmul double %198, 0x3FE1E3779B97F4A8
%200 = fsub double %185, %187
%201 = fmul double %200, 0x3FE1E3779B97F4A8
%202 = fadd double %191, %189
%203 = fmul double %202, 0x3FEE6F0E134454FF
%204 = fadd double %190, %188
%205 = fmul double %204, 0xBFEE6F0E134454FF
%206 = fmul double %191, 0x3FF89F188BDCD7AF
%207 = fmul double %190, 0x3FF89F188BDCD7AF
%208 = fmul double %189, 0x3FD73FD61D9DF543
%209 = fmul double %188, 0x3FD73FD61D9DF543
%210 = fsub double %203, %206
%211 = fadd double %205, %207
%212 = fsub double %203, %208
%213 = fadd double %209, %205
%214 = fsub double %194, %196
%215 = fsub double %195, %197
%216 = fadd double %199, %214
%217 = fadd double %201, %215
%218 = fsub double %214, %199
%219 = fsub double %215, %201
store double %194, double* %131
store double %195, double* %133
%220 = fadd double %210, %216
store double %220, double* %137
%221 = fadd double %211, %217
store double %221, double* %139
%222 = fadd double %212, %218
store double %222, double* %149
%223 = fadd double %213, %219
store double %223, double* %151
%224 = fsub double %218, %212
store double %224, double* %161
%225 = fsub double %219, %213
store double %225, double* %163
%226 = fsub double %216, %210
store double %226, double* %173
%227 = fsub double %217, %211
store double %227, double* %175
%228 = add nsw i32 %52, %27
%229 = add nuw nsw i32 %53, 1
%230 = icmp eq i32 %229, %2
br i1 %230, label %231, label %48
231: ; preds = %125, %8
ret void
}