void twiddleFFT_7(int sofarRadix, int radix, int remainRadix, int groupOffset,
                  double twiddleRe[], double twiddleIm[], double yRe[],
                  double yIm[]) {
  int yIndx[7];
  int groupNo, blockNo, adr, i;
  double yr, yi, twr, twi;
  double are0, aim0, aRe[7], aIm[7];
  double are16add, are61sub, aim16sub, aim16add, are25add, are52sub, aim25sub,
      aim25add;
  double are34add, are43sub, aim34sub, aim34add;
  double ax, ay;
  adr = groupOffset;
  for (groupNo = 0; groupNo < remainRadix; groupNo++) {
    for (blockNo = 0; blockNo < radix; blockNo++) {
      yIndx[blockNo] = adr;
      adr = adr + sofarRadix;
    }
    aRe[0] = yRe[yIndx[0]];
    aIm[0] = yIm[yIndx[0]];
    i = 1;
    for (blockNo = 1; blockNo < radix; blockNo += 1) {
      yr = yRe[yIndx[blockNo]];
      yi = yIm[yIndx[blockNo]];
      twr = twiddleRe[blockNo];
      twi = twiddleIm[blockNo];
      aRe[blockNo] = twr * yr - twi * yi;
      aIm[blockNo] = twr * yi + twi * yr;
    }
    are0 = aRe[0];
    aim0 = aIm[0];
    ax = aRe[1];
    ay = aRe[6];
    are16add = ax + ay;
    are61sub = ay - ax;
    ax = aIm[1];
    ay = aIm[6];
    aim16sub = ax - ay;
    aim16add = ax + ay;
    ax = aRe[2];
    ay = aRe[5];
    are25add = ax + ay;
    are52sub = ay - ax;
    ax = aIm[2];
    ay = aIm[5];
    aim25sub = ax - ay;
    aim25add = ax + ay;
    ax = aRe[3];
    ay = aRe[4];
    are34add = ax + ay;
    are43sub = ay - ax;
    ax = aIm[3];
    ay = aIm[4];
    aim34sub = ax - ay;
    aim34add = ax + ay;
    ax = 0.974927912181823607018131682993931217232785801 * aim16sub -
         0.781831482468029808708444526674057750232334519 * aim34sub -
         0.433883739117558120475768332848358754609990728 * aim25sub;
    ay = 0.623489801858733530525004884004239810632274731 * are34add -
         0.900968867902419126236102319507445051165919162 * are25add -
         0.222520933956314404288902564496794759466355569 * are16add + are0;
    yRe[yIndx[5]] = ay - ax;
    yRe[yIndx[2]] = ay + ax;
    ax = 0.974927912181823607018131682993931217232785801 * are61sub -
         0.781831482468029808708444526674057750232334519 * are43sub -
         0.433883739117558120475768332848358754609990728 * are52sub;
    ay = 0.623489801858733530525004884004239810632274731 * aim34add -
         0.900968867902419126236102319507445051165919162 * aim25add -
         0.222520933956314404288902564496794759466355569 * aim16add + aim0;
    yIm[yIndx[2]] = ax + ay;
    yIm[yIndx[5]] = ay - ax;
    ax = 0.781831482468029808708444526674057750232334519 * aim16sub +
         0.974927912181823607018131682993931217232785801 * aim25sub +
         0.433883739117558120475768332848358754609990728 * aim34sub;
    ay = 0.623489801858733530525004884004239810632274731 * are16add -
         0.222520933956314404288902564496794759466355569 * are25add -
         0.900968867902419126236102319507445051165919162 * are34add + are0;
    yRe[yIndx[6]] = ay - ax;
    yRe[yIndx[1]] = ay + ax;
    ax = 0.781831482468029808708444526674057750232334519 * are61sub +
         0.974927912181823607018131682993931217232785801 * are52sub +
         0.433883739117558120475768332848358754609990728 * are43sub;
    ay = 0.623489801858733530525004884004239810632274731 * aim16add -
         0.222520933956314404288902564496794759466355569 * aim25add -
         0.900968867902419126236102319507445051165919162 * aim34add + aim0;
    yIm[yIndx[1]] = ax + ay;
    yIm[yIndx[6]] = ay - ax;
    ax = 0.433883739117558120475768332848358754609990728 * aim16sub +
         0.974927912181823607018131682993931217232785801 * aim34sub -
         0.781831482468029808708444526674057750232334519 * aim25sub;
    ay = 0.623489801858733530525004884004239810632274731 * are25add -
         0.222520933956314404288902564496794759466355569 * are34add -
         0.900968867902419126236102319507445051165919162 * are16add + are0;
    yRe[yIndx[4]] = ay - ax;
    yRe[yIndx[3]] = ay + ax;
    ax = 0.433883739117558120475768332848358754609990728 * are61sub +
         0.974927912181823607018131682993931217232785801 * are43sub -
         0.781831482468029808708444526674057750232334519 * are52sub;
    ay = 0.623489801858733530525004884004239810632274731 * aim25add -
         0.222520933956314404288902564496794759466355569 * aim34add -
         0.900968867902419126236102319507445051165919162 * aim16add + aim0;
    yIm[yIndx[3]] = ax + ay;
    yIm[yIndx[4]] = ay - ax;
    yRe[yIndx[0]] = are0 + are16add + are25add + are34add;
    yIm[yIndx[0]] = aim0 + aim16add + aim25add + aim34add;
    groupOffset = groupOffset + sofarRadix * radix;
    adr = groupOffset;
  }
}


x86 assembly (clang, -O0):
<twiddleFFT_7>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%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    1a85 <twiddleFFT_7+0x985>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1175 <twiddleFFT_7+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_7+0x47>
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movl   $0x1,-0x50(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1282 <twiddleFFT_7+0x182>
mov    0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movslq -0x40(%rbp,%rcx,4),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rax
movslq -0x48(%rbp),%rcx
movslq -0x40(%rbp,%rcx,4),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x48(%rbp),%rax
movsd  %xmm0,-0xc0(%rbp,%rax,8)
ff ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x48(%rbp),%rax
movsd  %xmm0,-0x100(%rbp,%rax,8)
ff ff
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    11ad <twiddleFFT_7+0xad>
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  0xba4(%rip),%xmm0
mulsd  -0x158(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xb75(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
movsd  0xb7d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x148(%rbp),%xmm1
ff
movsd  0xb55(%rip),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xaf6(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
movsd  0xb0e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm1
ff
movsd  0xaa7(%rip),%xmm0
mulsd  -0x150(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xa78(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
movsd  0xa80(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x160(%rbp),%xmm1
ff
movsd  0xa58(%rip),%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x9f9(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
movsd  0xa11(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm1
ff
movsd  0x9a2(%rip),%xmm0
mulsd  -0x138(%rbp),%xmm0
ff
movsd  0x99a(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
movsd  0x972(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x108(%rbp),%xmm1
ff
movsd  0x942(%rip),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x913(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x8f3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm1
ff
movsd  0x8bc(%rip),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  0x8b4(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x150(%rbp),%xmm0
ff
movsd  0x88c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x120(%rbp),%xmm1
ff
movsd  0x85c(%rip),%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x82d(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
movsd  0x80d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm1
ff
movsd  0x7d6(%rip),%xmm0
mulsd  -0x158(%rbp),%xmm0
ff
movsd  0x7be(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
movsd  0x79e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x128(%rbp),%xmm1
ff
movsd  0x776(%rip),%xmm0
mulsd  -0x148(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x747(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x727(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm1
ff
movsd  0x6f0(%rip),%xmm0
mulsd  -0x150(%rbp),%xmm0
ff
movsd  0x6d8(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
movsd  0x6b8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x140(%rbp),%xmm1
ff
movsd  0x690(%rip),%xmm0
mulsd  -0x160(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x661(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
movsd  0x641(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x78(%rbp),%xmm0
addsd  -0x108(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
addsd  -0x120(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
movslq -0x40(%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_7+0x34>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<twiddleFFT_7>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %edx,-0x4c(%rsp)
test   %edx,%edx
jle    1785 <twiddleFFT_7+0x685>
mov    0xd8(%rsp),%r10
mov    0xd0(%rsp),%r11
mov    %esi,%edx
imul   %edi,%edx
mov    %esi,%ebx
mov    %ebx,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rbp
mov    %rbp,-0x8(%rsp)
shr    $0x3,%rbp
add    $0x1,%rbp
mov    %rax,-0x48(%rsp)
imul   %edi,%eax
mov    %rax,-0x20(%rsp)
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm13
movdqa 0xe97(%rip),%xmm1
pmuludq %xmm13,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movdqa 0xe95(%rip),%xmm2
pmuludq %xmm13,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm1,%xmm0
movdqa %xmm0,0x10(%rsp)
pslld  $0x2,%xmm13
mov    %ebp,%r14d
and    $0x3,%r14d
and    $0xfffffffffffffffc,%rbp
mov    %rbp,-0x18(%rsp)
mov    %r14,-0x10(%rsp)
shl    $0x5,%r14
lea    -0x4(,%rbx,4),%r13
ff
xor    %r15d,%r15d
jmp    1608 <twiddleFFT_7+0x508>
xchg   %ax,%ax
movsd  (%r11,%r12,8),%xmm8
movsd  0x90(%rsp),%xmm9
movsd  0x68(%rsp),%xmm2
movsd  0x70(%rsp),%xmm5
movapd %xmm2,%xmm4
addsd  %xmm9,%xmm4
subsd  %xmm2,%xmm9
movsd  0x50(%rsp),%xmm6
movsd  0x28(%rsp),%xmm3
movsd  0x30(%rsp),%xmm0
movapd %xmm3,%xmm14
subsd  %xmm6,%xmm14
addsd  %xmm6,%xmm3
movsd  0x88(%rsp),%xmm6
movapd %xmm5,%xmm1
addsd  %xmm6,%xmm1
movapd %xmm1,%xmm2
movsd  %xmm1,-0x28(%rsp)
subsd  %xmm5,%xmm6
movsd  0x48(%rsp),%xmm7
movapd %xmm0,%xmm5
subsd  %xmm7,%xmm5
addsd  %xmm7,%xmm0
movsd  %xmm0,-0x58(%rsp)
movsd  0x78(%rsp),%xmm7
movsd  0x80(%rsp),%xmm1
movapd %xmm7,%xmm12
addsd  %xmm1,%xmm12
movsd  %xmm12,-0x30(%rsp)
subsd  %xmm7,%xmm1
movapd %xmm1,%xmm11
movsd  %xmm1,-0x40(%rsp)
movsd  0x38(%rsp),%xmm0
movsd  0x40(%rsp),%xmm7
movapd %xmm0,%xmm10
subsd  %xmm7,%xmm10
addsd  %xmm7,%xmm0
movapd %xmm0,%xmm15
movsd  %xmm0,(%rsp)
movapd %xmm10,%xmm7
movsd  0xd7f(%rip),%xmm0
mulsd  %xmm0,%xmm7
movapd %xmm14,%xmm0
movsd  0xd76(%rip),%xmm1
mulsd  %xmm1,%xmm0
addsd  %xmm7,%xmm0
movapd %xmm5,%xmm7
movsd  0xd6a(%rip),%xmm1
mulsd  %xmm1,%xmm7
addsd  %xmm0,%xmm7
movapd %xmm2,%xmm0
movsd  0xd5e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd5a(%rip),%xmm1
mulsd  %xmm1,%xmm12
addsd  %xmm0,%xmm12
movapd %xmm4,%xmm1
movsd  0xd4c(%rip),%xmm0
mulsd  %xmm0,%xmm1
addsd  %xmm12,%xmm1
movsd  %xmm8,0x8(%rsp)
addsd  %xmm8,%xmm1
movapd %xmm1,%xmm0
subsd  %xmm7,%xmm0
movslq -0x6c(%rsp),%rax
movsd  (%r10,%r12,8),%xmm2
movsd  %xmm2,-0x38(%rsp)
movsd  %xmm0,(%r11,%rax,8)
addsd  %xmm7,%xmm1
movslq -0x78(%rsp),%rbp
movsd  %xmm1,(%r11,%rbp,8)
movapd %xmm11,%xmm0
mulsd  0xcd4(%rip),%xmm0
movapd %xmm9,%xmm1
movsd  0xcce(%rip),%xmm12
mulsd  %xmm12,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm6,%xmm0
mulsd  0xcc1(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  -0x58(%rsp),%xmm1
mulsd  0xcb7(%rip),%xmm1
movapd %xmm15,%xmm7
movsd  0xcb1(%rip),%xmm15
mulsd  %xmm15,%xmm7
addsd  %xmm1,%xmm7
movapd %xmm3,%xmm1
movsd  0xca3(%rip),%xmm11
mulsd  %xmm11,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm0,%xmm7
addsd  %xmm1,%xmm7
movsd  %xmm7,(%r10,%rbp,8)
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r10,%rax,8)
movapd %xmm5,%xmm0
mulsd  %xmm12,%xmm0
movapd %xmm14,%xmm1
movsd  0xc70(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm10,%xmm0
movsd  0xc63(%rip),%xmm7
mulsd  %xmm7,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rsp),%xmm1
mulsd  %xmm11,%xmm1
movapd %xmm4,%xmm7
mulsd  %xmm15,%xmm7
addsd  %xmm1,%xmm7
movsd  -0x30(%rsp),%xmm1
movsd  0xc14(%rip),%xmm12
mulsd  %xmm12,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm8,%xmm1
movapd %xmm1,%xmm7
subsd  %xmm0,%xmm7
movslq -0x68(%rsp),%rax
movsd  %xmm7,(%r11,%rax,8)
addsd  %xmm0,%xmm1
movslq -0x7c(%rsp),%rbp
movsd  %xmm1,(%r11,%rbp,8)
movapd %xmm6,%xmm0
movsd  0xbc7(%rip),%xmm8
mulsd  %xmm8,%xmm0
movapd %xmm9,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rsp),%xmm0
movsd  0xbd7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x58(%rsp),%xmm1
mulsd  %xmm11,%xmm1
movapd %xmm3,%xmm7
mulsd  %xmm15,%xmm7
addsd  %xmm1,%xmm7
movsd  (%rsp),%xmm15
movapd %xmm15,%xmm1
mulsd  %xmm12,%xmm1
addsd  %xmm7,%xmm1
addsd  -0x38(%rsp),%xmm1
movapd %xmm0,%xmm7
addsd  %xmm1,%xmm7
movsd  %xmm7,(%r10,%rbp,8)
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r10,%rax,8)
mulsd  %xmm8,%xmm10
movapd %xmm8,%xmm12
mulsd  %xmm2,%xmm14
addsd  %xmm10,%xmm14
movsd  0xb30(%rip),%xmm11
mulsd  %xmm11,%xmm5
addsd  %xmm14,%xmm5
movapd %xmm4,%xmm2
movsd  0x8(%rsp),%xmm1
addsd  %xmm1,%xmm4
movsd  -0x28(%rsp),%xmm0
addsd  %xmm0,%xmm4
movsd  -0x30(%rsp),%xmm8
addsd  %xmm8,%xmm4
movsd  0xb21(%rip),%xmm10
mulsd  %xmm10,%xmm8
movsd  0xb0b(%rip),%xmm14
mulsd  %xmm14,%xmm0
addsd  %xmm8,%xmm0
movsd  0xaf1(%rip),%xmm7
mulsd  %xmm7,%xmm2
addsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm2,%xmm0
subsd  %xmm5,%xmm0
movslq -0x70(%rsp),%rax
movsd  %xmm0,(%r11,%rax,8)
addsd  %xmm5,%xmm2
movslq -0x74(%rsp),%rbp
movsd  %xmm2,(%r11,%rbp,8)
movsd  -0x40(%rsp),%xmm0
mulsd  %xmm12,%xmm0
mulsd  0xacf(%rip),%xmm9
addsd  %xmm0,%xmm9
mulsd  %xmm11,%xmm6
addsd  %xmm9,%xmm6
movapd %xmm3,%xmm0
movsd  -0x38(%rsp),%xmm1
addsd  %xmm1,%xmm3
movsd  -0x58(%rsp),%xmm9
addsd  %xmm9,%xmm3
addsd  %xmm15,%xmm3
mulsd  %xmm10,%xmm15
mulsd  %xmm14,%xmm9
addsd  %xmm15,%xmm9
mulsd  %xmm7,%xmm0
addsd  %xmm9,%xmm0
addsd  %xmm1,%xmm0
movapd %xmm6,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%r10,%rbp,8)
subsd  %xmm6,%xmm0
movsd  %xmm0,(%r10,%rax,8)
movsd  %xmm4,(%r11,%r12,8)
movsd  %xmm3,(%r10,%r12,8)
add    %edx,%ecx
add    $0x1,%r15d
cmp    -0x4c(%rsp),%r15d
je     1785 <twiddleFFT_7+0x685>
test   %esi,%esi
jle    171f <twiddleFFT_7+0x61f>
cmp    $0x8,%esi
jae    1620 <twiddleFFT_7+0x520>
xor    %eax,%eax
mov    %ecx,%ebp
jmp    1710 <twiddleFFT_7+0x610>
xchg   %ax,%ax
movd   %ecx,%xmm1
pshufd $0x0,%xmm1,%xmm1
paddd  0x10(%rsp),%xmm1
cmpq   $0x18,-0x8(%rsp)
jae    163b <twiddleFFT_7+0x53b>
xor    %ebp,%ebp
jmp    16b2 <twiddleFFT_7+0x5b2>
mov    -0x18(%rsp),%rax
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqa %xmm1,-0x80(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x70(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x60(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x50(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x40(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x30(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x20(%rsp,%rbp,4)
paddd  %xmm13,%xmm1
movdqa %xmm1,-0x10(%rsp,%rbp,4)
add    $0x20,%rbp
paddd  %xmm13,%xmm1
add    $0xfffffffffffffffc,%rax
jne    1650 <twiddleFFT_7+0x550>
cmpq   $0x0,-0x10(%rsp)
je     16ee <twiddleFFT_7+0x5ee>
lea    -0x70(%rsp),%rax
lea    (%rax,%rbp,4),%rax
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm1,-0x10(%rax,%rbp,1)
paddd  %xmm13,%xmm1
movdqa %xmm1,(%rax,%rbp,1)
paddd  %xmm13,%xmm1
add    $0x20,%rbp
cmp    %rbp,%r14
jne    16d0 <twiddleFFT_7+0x5d0>
cmp    %rbx,-0x48(%rsp)
je     171f <twiddleFFT_7+0x61f>
mov    -0x20(%rsp),%rax
lea    (%rcx,%rax,1),%ebp
mov    -0x48(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,-0x80(%rsp,%rax,4)
add    %edi,%ebp
add    $0x1,%rax
cmp    %rax,%rbx
jne    1710 <twiddleFFT_7+0x610>
movslq -0x80(%rsp),%r12
cmp    $0x2,%esi
jl     11c0 <twiddleFFT_7+0xc0>
xor    %eax,%eax
nop
movslq -0x7c(%rsp,%rax,1),%rbp
movsd  (%r11,%rbp,8),%xmm1
movsd  (%r10,%rbp,8),%xmm2
movsd  0x8(%r8,%rax,2),%xmm3
movsd  0x8(%r9,%rax,2),%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm2,%xmm3
mulsd  %xmm4,%xmm2
mulsd  %xmm1,%xmm5
subsd  %xmm2,%xmm5
movsd  %xmm5,0x68(%rsp,%rax,2)
mulsd  %xmm4,%xmm1
addsd  %xmm1,%xmm3
movsd  %xmm3,0x28(%rsp,%rax,2)
add    $0x4,%rax
cmp    %rax,%r13
jne    1730 <twiddleFFT_7+0x630>
jmp    11c0 <twiddleFFT_7+0xc0>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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