#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ radb2(int, int, double *, double *, double const *);
int /*<<< orphan*/ radb3(int, int, double *, double *, double const *,
                         double const *);
int /*<<< orphan*/ radb4(int, int, double *, double *, double const *,
                         double const *, double const *);
int /*<<< orphan*/ radb5(int, int, double *, double *, double const *,
                         double const *, double const *, double const *);
int /*<<< orphan*/ radbg(int, int, int, int, double *, double *, double *,
                         double *, double *, double const *);
void rfftb1(int n, double c[], double ch[], const double wa[],
            const int ifac[]) {
  int i;
  int k1, l1, l2, na, nf, ip, iw, ix2, ix3, ix4, ido, idl1;
  nf = ifac[1];
  na = 0;
  l1 = 1;
  iw = 0;
  for (k1 = 1; k1 <= nf; k1++) {
    ip = ifac[k1 + 1];
    l2 = ip * l1;
    ido = n / l2;
    idl1 = ido * l1;
    if (ip == 4) {
      ix2 = iw + ido;
      ix3 = ix2 + ido;
      if (na == 0)
        radb4(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3]);
      else
        radb4(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3]);
      na = 1 - na;
    } else if (ip == 2) {
      if (na == 0)
        radb2(ido, l1, c, ch, &wa[iw]);
      else
        radb2(ido, l1, ch, c, &wa[iw]);
      na = 1 - na;
    } else if (ip == 3) {
      ix2 = iw + ido;
      if (na == 0)
        radb3(ido, l1, c, ch, &wa[iw], &wa[ix2]);
      else
        radb3(ido, l1, ch, c, &wa[iw], &wa[ix2]);
      na = 1 - na;
    } else if (ip == 5) {
      ix2 = iw + ido;
      ix3 = ix2 + ido;
      ix4 = ix3 + ido;
      if (na == 0)
        radb5(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4]);
      else
        radb5(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4]);
      na = 1 - na;
    } else {
      if (na == 0)
        radbg(ido, ip, l1, idl1, c, c, c, ch, ch, &wa[iw]);
      else
        radbg(ido, ip, l1, idl1, ch, ch, ch, c, c, &wa[iw]);
      if (ido == 1)
        na = 1 - na;
    }
    l1 = l2;
    iw += (ip - 1) * ido;
  }
  if (na == 0)
    return;
  for (i = 0; i < n; i++)
    c[i] = ch[i];
}


x86 assembly (clang, -O0):
<rfftb1>:
push   %rbp
mov    %rsp,%rbp
push   %r14
push   %rbx
sub    $0x80,%rsp
mov    %edi,-0x14(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    -0x38(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x50(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x0,-0x58(%rbp)
movl   $0x1,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x50(%rbp),%eax
jg     1576 <rfftb1+0x426>
mov    -0x38(%rbp),%rax
mov    -0x40(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
imul   -0x44(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x14(%rbp),%eax
cltd
idivl  -0x48(%rbp)
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
imul   -0x44(%rbp),%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x4,-0x54(%rbp)
jne    1297 <rfftb1+0x147>
mov    -0x58(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x4c(%rbp)
jne    1243 <rfftb1+0xf3>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
mov    -0x30(%rbp),%rax
movslq -0x60(%rbp),%r10
shl    $0x3,%r10
add    %r10,%rax
mov    %rax,(%rsp)
call   1050 <radb4@plt>
jmp    1287 <rfftb1+0x137>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x28(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
mov    -0x30(%rbp),%rax
movslq -0x60(%rbp),%r10
shl    $0x3,%r10
add    %r10,%rax
mov    %rax,(%rsp)
call   1050 <radb4@plt>
mov    $0x1,%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1552 <rfftb1+0x402>
cmpl   $0x2,-0x54(%rbp)
jne    1304 <rfftb1+0x1b4>
cmpl   $0x0,-0x4c(%rbp)
jne    12d2 <rfftb1+0x182>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
call   1030 <radb2@plt>
jmp    12f4 <rfftb1+0x1a4>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x28(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
call   1030 <radb2@plt>
mov    $0x1,%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    154d <rfftb1+0x3fd>
cmpl   $0x3,-0x54(%rbp)
jne    1398 <rfftb1+0x248>
mov    -0x58(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
jne    1357 <rfftb1+0x207>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
call   1060 <radb3@plt>
jmp    1388 <rfftb1+0x238>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x28(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
call   1060 <radb3@plt>
mov    $0x1,%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1548 <rfftb1+0x3f8>
cmpl   $0x5,-0x54(%rbp)
jne    148c <rfftb1+0x33c>
mov    -0x58(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x64(%rbp)
cmpl   $0x0,-0x4c(%rbp)
jne    1424 <rfftb1+0x2d4>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
mov    -0x30(%rbp),%r10
movslq -0x60(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r10
mov    -0x30(%rbp),%rax
movslq -0x64(%rbp),%r11
shl    $0x3,%r11
add    %r11,%rax
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
call   1070 <radb5@plt>
jmp    147c <rfftb1+0x32c>
mov    -0x68(%rbp),%edi
mov    -0x44(%rbp),%esi
mov    -0x28(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x30(%rbp),%r8
movslq -0x58(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x30(%rbp),%r9
movslq -0x5c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
mov    -0x30(%rbp),%r10
movslq -0x60(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r10
mov    -0x30(%rbp),%rax
movslq -0x64(%rbp),%r11
shl    $0x3,%r11
add    %r11,%rax
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
call   1070 <radb5@plt>
mov    $0x1,%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1543 <rfftb1+0x3f3>
cmpl   $0x0,-0x4c(%rbp)
jne    14e2 <rfftb1+0x392>
mov    -0x68(%rbp),%edi
mov    -0x54(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x6c(%rbp),%ecx
mov    -0x20(%rbp),%r8
mov    -0x20(%rbp),%r9
mov    -0x20(%rbp),%rbx
mov    -0x28(%rbp),%r11
mov    -0x28(%rbp),%r10
mov    -0x30(%rbp),%rax
movslq -0x58(%rbp),%r14
shl    $0x3,%r14
add    %r14,%rax
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
call   1040 <radbg@plt>
jmp    1529 <rfftb1+0x3d9>
mov    -0x68(%rbp),%edi
mov    -0x54(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x6c(%rbp),%ecx
mov    -0x28(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x28(%rbp),%rbx
mov    -0x20(%rbp),%r11
mov    -0x20(%rbp),%r10
mov    -0x30(%rbp),%rax
movslq -0x58(%rbp),%r14
shl    $0x3,%r14
add    %r14,%rax
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
call   1040 <radbg@plt>
cmpl   $0x1,-0x68(%rbp)
jne    153e <rfftb1+0x3ee>
mov    $0x1,%eax
sub    -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1543 <rfftb1+0x3f3>
jmp    1548 <rfftb1+0x3f8>
jmp    154d <rfftb1+0x3fd>
jmp    1552 <rfftb1+0x402>
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
imul   -0x68(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1197 <rfftb1+0x47>
cmpl   $0x0,-0x4c(%rbp)
jne    1585 <rfftb1+0x435>
jmp    15c0 <rfftb1+0x470>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    15c0 <rfftb1+0x470>
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    158c <rfftb1+0x43c>
add    $0x80,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

x86 assembly (clang, -O2):
<rfftb1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rcx,0x28(%rsp)
mov    %edi,0x1c(%rsp)
mov    %r8,0x40(%rsp)
mov    0x4(%r8),%eax
mov    %rax,0x38(%rsp)
test   %eax,%eax
jle    1589 <rfftb1+0x439>
mov    %rdx,%r11
mov    %rsi,%rbp
xor    %r14d,%r14d
mov    $0x1,%r13d
xor    %r12d,%r12d
xor    %r10d,%r10d
mov    %rdx,0x20(%rsp)
mov    %rsi,0x10(%rsp)
jmp    1211 <rfftb1+0xc1>
xchg   %ax,%ax
lea    (%r15,%r12,1),%eax
lea    (%rax,%r15,1),%ecx
movslq %r12d,%rdx
mov    0x28(%rsp),%rsi
lea    (%rsi,%rdx,8),%r8
cltq
lea    (%rsi,%rax,8),%r9
movslq %ecx,%rax
lea    (%rsi,%rax,8),%rax
sub    $0x8,%rsp
test   %r10d,%r10d
je     134f <rfftb1+0x1ff>
mov    %r15d,%edi
mov    %ebp,%esi
mov    %r11,%rdx
mov    0x18(%rsp),%rbp
mov    %rbp,%rcx
push   %rax
call   1050 <radb4@plt>
add    $0x10,%rsp
mov    $0x1,%r10d
sub    0xc(%rsp),%r10d
mov    0x20(%rsp),%r11
add    $0xffffffff,%ebx
imul   %r15d,%ebx
add    %ebx,%r12d
add    $0x1,%r14
cmp    %r14,0x38(%rsp)
je     13e1 <rfftb1+0x291>
mov    %r13d,%ebp
mov    0x40(%rsp),%rax
mov    0x8(%rax,%r14,4),%ebx
mov    %ebx,%r13d
imul   %ebp,%r13d
mov    0x1c(%rsp),%eax
cltd
idiv   %r13d
mov    %eax,%r15d
lea    -0x2(%rbx),%eax
cmp    $0x3,%eax
mov    %r10d,0xc(%rsp)
ja     1280 <rfftb1+0x130>
lea    0xdbc(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq %r12d,%rax
mov    0x28(%rsp),%rcx
lea    (%rcx,%rax,8),%r8
mov    %r15d,%edi
mov    %ebp,%esi
test   %r10d,%r10d
je     1364 <rfftb1+0x214>
mov    %r11,%rdx
mov    0x10(%rsp),%rbp
mov    %rbp,%rcx
call   1030 <radb2@plt>
jmp    11e8 <rfftb1+0x98>
nopl   0x0(%rax)
mov    %r15d,%ecx
imul   %ebp,%ecx
movslq %r12d,%rax
mov    0x28(%rsp),%rdx
lea    (%rdx,%rax,8),%rax
mov    %r15d,%edi
mov    %ebx,%esi
mov    %ebp,%edx
test   %r10d,%r10d
je     1379 <rfftb1+0x229>
mov    %r11,%r8
mov    %r11,%r9
push   %rax
mov    0x18(%rsp),%rbp
push   %rbp
push   %rbp
push   %r11
jmp    138a <rfftb1+0x23a>
nopw   0x0(%rax,%rax,1)
lea    (%r15,%r12,1),%eax
movslq %r12d,%rcx
mov    0x28(%rsp),%rdx
lea    (%rdx,%rcx,8),%r8
cltq
lea    (%rdx,%rax,8),%r9
mov    %r15d,%edi
mov    %ebp,%esi
test   %r10d,%r10d
je     13b2 <rfftb1+0x262>
mov    %r11,%rdx
mov    0x10(%rsp),%rbp
mov    %rbp,%rcx
call   1060 <radb3@plt>
jmp    11e8 <rfftb1+0x98>
nopl   0x0(%rax)
lea    (%r15,%r12,1),%eax
lea    (%rax,%r15,1),%ecx
lea    (%rcx,%r15,1),%edx
movslq %r12d,%rsi
mov    0x28(%rsp),%rdi
lea    (%rdi,%rsi,8),%r8
cltq
lea    (%rdi,%rax,8),%r9
movslq %ecx,%rax
lea    (%rdi,%rax,8),%rax
mov    %rax,0x30(%rsp)
movslq %edx,%rax
lea    (%rdi,%rax,8),%rax
mov    %r15d,%edi
mov    %ebp,%esi
test   %r10d,%r10d
je     13c7 <rfftb1+0x277>
mov    %r11,%rdx
mov    0x10(%rsp),%rbp
mov    %rbp,%rcx
jmp    13d2 <rfftb1+0x282>
mov    %r15d,%edi
mov    %ebp,%esi
mov    0x18(%rsp),%rbp
mov    %rbp,%rdx
mov    %r11,%rcx
jmp    11de <rfftb1+0x8e>
mov    0x10(%rsp),%rbp
mov    %rbp,%rdx
mov    %r11,%rcx
call   1030 <radb2@plt>
jmp    11e8 <rfftb1+0x98>
mov    0x10(%rsp),%rbp
mov    %rbp,%r8
mov    %rbp,%r9
push   %rax
push   %r11
push   %r11
push   %rbp
call   1040 <radbg@plt>
mov    0x2c(%rsp),%r10d
mov    0x40(%rsp),%r11
add    $0x20,%rsp
mov    $0x1,%eax
sub    %r10d,%eax
cmp    $0x1,%r15d
cmove  %eax,%r10d
jmp    11f8 <rfftb1+0xa8>
mov    0x10(%rsp),%rbp
mov    %rbp,%rdx
mov    %r11,%rcx
call   1060 <radb3@plt>
jmp    11e8 <rfftb1+0x98>
mov    0x10(%rsp),%rbp
mov    %rbp,%rdx
mov    %r11,%rcx
push   %rax
push   0x38(%rsp)
call   1070 <radb5@plt>
jmp    11e4 <rfftb1+0x94>
test   %r10d,%r10d
je     1589 <rfftb1+0x439>
cmpl   $0x0,0x1c(%rsp)
jle    1589 <rfftb1+0x439>
mov    0x1c(%rsp),%ecx
mov    %ecx,%eax
cmp    $0x4,%ecx
jb     1421 <rfftb1+0x2d1>
lea    (%r11,%rax,8),%rcx
cmp    %rbp,%rcx
jbe    14a1 <rfftb1+0x351>
lea    0x0(,%rax,8),%rcx
add    %rbp,%rcx
cmp    %r11,%rcx
jbe    14a1 <rfftb1+0x351>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %rax,%rdx
mov    %rax,%rsi
and    $0x3,%rsi
je     1456 <rfftb1+0x306>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%r11,%rcx,8),%xmm0
movsd  %xmm0,0x0(%rbp,%rcx,8)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1440 <rfftb1+0x2f0>
cmp    $0x3,%rdx
jb     1589 <rfftb1+0x439>
movsd  (%r11,%rcx,8),%xmm0
movsd  %xmm0,0x0(%rbp,%rcx,8)
movsd  0x8(%r11,%rcx,8),%xmm0
movsd  %xmm0,0x8(%rbp,%rcx,8)
movsd  0x10(%r11,%rcx,8),%xmm0
movsd  %xmm0,0x10(%rbp,%rcx,8)
movsd  0x18(%r11,%rcx,8),%xmm0
movsd  %xmm0,0x18(%rbp,%rcx,8)
add    $0x4,%rcx
cmp    %rcx,%rax
jne    1460 <rfftb1+0x310>
jmp    1589 <rfftb1+0x439>
mov    %eax,%ecx
and    $0xfffffffc,%ecx
lea    -0x4(%rcx),%rdi
mov    %rdi,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
mov    %esi,%edx
and    $0x3,%edx
cmp    $0xc,%rdi
jae    14c4 <rfftb1+0x374>
xor    %edi,%edi
jmp    1531 <rfftb1+0x3e1>
and    $0xfffffffffffffffc,%rsi
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
movups (%r11,%rdi,8),%xmm0
movups 0x10(%r11,%rdi,8),%xmm1
movups %xmm0,0x0(%rbp,%rdi,8)
movups %xmm1,0x10(%rbp,%rdi,8)
movups 0x20(%r11,%rdi,8),%xmm0
movups 0x30(%r11,%rdi,8),%xmm1
movups %xmm0,0x20(%rbp,%rdi,8)
movups %xmm1,0x30(%rbp,%rdi,8)
movups 0x40(%r11,%rdi,8),%xmm0
movups 0x50(%r11,%rdi,8),%xmm1
movups %xmm0,0x40(%rbp,%rdi,8)
movups %xmm1,0x50(%rbp,%rdi,8)
movups 0x60(%r11,%rdi,8),%xmm0
movups 0x70(%r11,%rdi,8),%xmm1
movups %xmm0,0x60(%rbp,%rdi,8)
movups %xmm1,0x70(%rbp,%rdi,8)
add    $0x10,%rdi
add    $0xfffffffffffffffc,%rsi
jne    14d0 <rfftb1+0x380>
test   %rdx,%rdx
je     157b <rfftb1+0x42b>
mov    0x10(%rsp),%rsi
lea    (%rsi,%rdi,8),%rsi
add    $0x10,%rsi
lea    (%r11,%rdi,8),%rdi
add    $0x10,%rdi
shl    $0x5,%rdx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movups -0x10(%rdi,%rbp,1),%xmm0
movups (%rdi,%rbp,1),%xmm1
movups %xmm0,-0x10(%rsi,%rbp,1)
movups %xmm1,(%rsi,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%rdx
jne    1560 <rfftb1+0x410>
cmp    %rax,%rcx
mov    0x10(%rsp),%rbp
jne    1423 <rfftb1+0x2d3>
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @rfftb1(i32 %0, double* %1, double* %2, double* %3, i32* %4) {
%6 = alloca i32
%7 = alloca double*
%8 = alloca double*
%9 = alloca double*
%10 = alloca i32*
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
store i32 %0, i32* %6
store double* %1, double** %7
store double* %2, double** %8
store double* %3, double** %9
store i32* %4, i32** %10
%24 = load i32*, i32** %10
%25 = getelementptr inbounds i32, i32* %24, i64 1
%26 = load i32, i32* %25
store i32 %26, i32* %16
store i32 0, i32* %15
store i32 1, i32* %13
store i32 0, i32* %18
store i32 1, i32* %12
br label %27
27: ; preds = %279, %5
%28 = load i32, i32* %12
%29 = load i32, i32* %16
%30 = icmp sle i32 %28, %29
br i1 %30, label %31, label %282
31: ; preds = %27
%32 = load i32*, i32** %10
%33 = load i32, i32* %12
%34 = add nsw i32 %33, 1
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds i32, i32* %32, i64 %35
%37 = load i32, i32* %36
store i32 %37, i32* %17
%38 = load i32, i32* %17
%39 = load i32, i32* %13
%40 = mul nsw i32 %38, %39
store i32 %40, i32* %14
%41 = load i32, i32* %6
%42 = load i32, i32* %14
%43 = sdiv i32 %41, %42
store i32 %43, i32* %22
%44 = load i32, i32* %22
%45 = load i32, i32* %13
%46 = mul nsw i32 %44, %45
store i32 %46, i32* %23
%47 = load i32, i32* %17
%48 = icmp eq i32 %47, 4
br i1 %48, label %49, label %97
49: ; preds = %31
%50 = load i32, i32* %18
%51 = load i32, i32* %22
%52 = add nsw i32 %50, %51
store i32 %52, i32* %19
%53 = load i32, i32* %19
%54 = load i32, i32* %22
%55 = add nsw i32 %53, %54
store i32 %55, i32* %20
%56 = load i32, i32* %15
%57 = icmp eq i32 %56, 0
br i1 %57, label %58, label %76
58: ; preds = %49
%59 = load i32, i32* %22
%60 = load i32, i32* %13
%61 = load double*, double** %7
%62 = load double*, double** %8
%63 = load double*, double** %9
%64 = load i32, i32* %18
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds double, double* %63, i64 %65
%67 = load double*, double** %9
%68 = load i32, i32* %19
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds double, double* %67, i64 %69
%71 = load double*, double** %9
%72 = load i32, i32* %20
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double, double* %71, i64 %73
%75 = call i32 @radb4(i32 %59, i32 %60, double* %61, double* %62, double* %66, double* %70, double* %74)
br label %94
76: ; preds = %49
%77 = load i32, i32* %22
%78 = load i32, i32* %13
%79 = load double*, double** %8
%80 = load double*, double** %7
%81 = load double*, double** %9
%82 = load i32, i32* %18
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds double, double* %81, i64 %83
%85 = load double*, double** %9
%86 = load i32, i32* %19
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double, double* %85, i64 %87
%89 = load double*, double** %9
%90 = load i32, i32* %20
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds double, double* %89, i64 %91
%93 = call i32 @radb4(i32 %77, i32 %78, double* %79, double* %80, double* %84, double* %88, double* %92)
br label %94
94: ; preds = %76, %58
%95 = load i32, i32* %15
%96 = sub nsw i32 1, %95
store i32 %96, i32* %15
br label %271
97: ; preds = %31
%98 = load i32, i32* %17
%99 = icmp eq i32 %98, 2
br i1 %99, label %100, label %126
100: ; preds = %97
%101 = load i32, i32* %15
%102 = icmp eq i32 %101, 0
br i1 %102, label %103, label %113
103: ; preds = %100
%104 = load i32, i32* %22
%105 = load i32, i32* %13
%106 = load double*, double** %7
%107 = load double*, double** %8
%108 = load double*, double** %9
%109 = load i32, i32* %18
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %108, i64 %110
%112 = call i32 @radb2(i32 %104, i32 %105, double* %106, double* %107, double* %111)
br label %123
113: ; preds = %100
%114 = load i32, i32* %22
%115 = load i32, i32* %13
%116 = load double*, double** %8
%117 = load double*, double** %7
%118 = load double*, double** %9
%119 = load i32, i32* %18
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds double, double* %118, i64 %120
%122 = call i32 @radb2(i32 %114, i32 %115, double* %116, double* %117, double* %121)
br label %123
123: ; preds = %113, %103
%124 = load i32, i32* %15
%125 = sub nsw i32 1, %124
store i32 %125, i32* %15
br label %270
126: ; preds = %97
%127 = load i32, i32* %17
%128 = icmp eq i32 %127, 3
br i1 %128, label %129, label %166
129: ; preds = %126
%130 = load i32, i32* %18
%131 = load i32, i32* %22
%132 = add nsw i32 %130, %131
store i32 %132, i32* %19
%133 = load i32, i32* %15
%134 = icmp eq i32 %133, 0
br i1 %134, label %135, label %149
135: ; preds = %129
%136 = load i32, i32* %22
%137 = load i32, i32* %13
%138 = load double*, double** %7
%139 = load double*, double** %8
%140 = load double*, double** %9
%141 = load i32, i32* %18
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds double, double* %140, i64 %142
%144 = load double*, double** %9
%145 = load i32, i32* %19
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds double, double* %144, i64 %146
%148 = call i32 @radb3(i32 %136, i32 %137, double* %138, double* %139, double* %143, double* %147)
br label %163
149: ; preds = %129
%150 = load i32, i32* %22
%151 = load i32, i32* %13
%152 = load double*, double** %8
%153 = load double*, double** %7
%154 = load double*, double** %9
%155 = load i32, i32* %18
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds double, double* %154, i64 %156
%158 = load double*, double** %9
%159 = load i32, i32* %19
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds double, double* %158, i64 %160
%162 = call i32 @radb3(i32 %150, i32 %151, double* %152, double* %153, double* %157, double* %161)
br label %163
163: ; preds = %149, %135
%164 = load i32, i32* %15
%165 = sub nsw i32 1, %164
store i32 %165, i32* %15
br label %269
166: ; preds = %126
%167 = load i32, i32* %17
%168 = icmp eq i32 %167, 5
br i1 %168, label %169, label %228
169: ; preds = %166
%170 = load i32, i32* %18
%171 = load i32, i32* %22
%172 = add nsw i32 %170, %171
store i32 %172, i32* %19
%173 = load i32, i32* %19
%174 = load i32, i32* %22
%175 = add nsw i32 %173, %174
store i32 %175, i32* %20
%176 = load i32, i32* %20
%177 = load i32, i32* %22
%178 = add nsw i32 %176, %177
store i32 %178, i32* %21
%179 = load i32, i32* %15
%180 = icmp eq i32 %179, 0
br i1 %180, label %181, label %203
181: ; preds = %169
%182 = load i32, i32* %22
%183 = load i32, i32* %13
%184 = load double*, double** %7
%185 = load double*, double** %8
%186 = load double*, double** %9
%187 = load i32, i32* %18
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds double, double* %186, i64 %188
%190 = load double*, double** %9
%191 = load i32, i32* %19
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds double, double* %190, i64 %192
%194 = load double*, double** %9
%195 = load i32, i32* %20
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds double, double* %194, i64 %196
%198 = load double*, double** %9
%199 = load i32, i32* %21
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds double, double* %198, i64 %200
%202 = call i32 @radb5(i32 %182, i32 %183, double* %184, double* %185, double* %189, double* %193, double* %197, double* %201)
br label %225
203: ; preds = %169
%204 = load i32, i32* %22
%205 = load i32, i32* %13
%206 = load double*, double** %8
%207 = load double*, double** %7
%208 = load double*, double** %9
%209 = load i32, i32* %18
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %208, i64 %210
%212 = load double*, double** %9
%213 = load i32, i32* %19
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds double, double* %212, i64 %214
%216 = load double*, double** %9
%217 = load i32, i32* %20
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds double, double* %216, i64 %218
%220 = load double*, double** %9
%221 = load i32, i32* %21
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %220, i64 %222
%224 = call i32 @radb5(i32 %204, i32 %205, double* %206, double* %207, double* %211, double* %215, double* %219, double* %223)
br label %225
225: ; preds = %203, %181
%226 = load i32, i32* %15
%227 = sub nsw i32 1, %226
store i32 %227, i32* %15
br label %268
228: ; preds = %166
%229 = load i32, i32* %15
%230 = icmp eq i32 %229, 0
br i1 %230, label %231, label %246
231: ; preds = %228
%232 = load i32, i32* %22
%233 = load i32, i32* %17
%234 = load i32, i32* %13
%235 = load i32, i32* %23
%236 = load double*, double** %7
%237 = load double*, double** %7
%238 = load double*, double** %7
%239 = load double*, double** %8
%240 = load double*, double** %8
%241 = load double*, double** %9
%242 = load i32, i32* %18
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds double, double* %241, i64 %243
%245 = call i32 @radbg(i32 %232, i32 %233, i32 %234, i32 %235, double* %236, double* %237, double* %238, double* %239, double* %240, double* %244)
br label %261
246: ; preds = %228
%247 = load i32, i32* %22
%248 = load i32, i32* %17
%249 = load i32, i32* %13
%250 = load i32, i32* %23
%251 = load double*, double** %8
%252 = load double*, double** %8
%253 = load double*, double** %8
%254 = load double*, double** %7
%255 = load double*, double** %7
%256 = load double*, double** %9
%257 = load i32, i32* %18
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds double, double* %256, i64 %258
%260 = call i32 @radbg(i32 %247, i32 %248, i32 %249, i32 %250, double* %251, double* %252, double* %253, double* %254, double* %255, double* %259)
br label %261
261: ; preds = %246, %231
%262 = load i32, i32* %22
%263 = icmp eq i32 %262, 1
br i1 %263, label %264, label %267
264: ; preds = %261
%265 = load i32, i32* %15
%266 = sub nsw i32 1, %265
store i32 %266, i32* %15
br label %267
267: ; preds = %264, %261
br label %268
268: ; preds = %267, %225
br label %269
269: ; preds = %268, %163
br label %270
270: ; preds = %269, %123
br label %271
271: ; preds = %270, %94
%272 = load i32, i32* %14
store i32 %272, i32* %13
%273 = load i32, i32* %17
%274 = sub nsw i32 %273, 1
%275 = load i32, i32* %22
%276 = mul nsw i32 %274, %275
%277 = load i32, i32* %18
%278 = add nsw i32 %277, %276
store i32 %278, i32* %18
br label %279
279: ; preds = %271
%280 = load i32, i32* %12
%281 = add nsw i32 %280, 1
store i32 %281, i32* %12
br label %27
282: ; preds = %27
%283 = load i32, i32* %15
%284 = icmp eq i32 %283, 0
br i1 %284, label %285, label %286
285: ; preds = %282
br label %304
286: ; preds = %282
store i32 0, i32* %11
br label %287
287: ; preds = %301, %286
%288 = load i32, i32* %11
%289 = load i32, i32* %6
%290 = icmp slt i32 %288, %289
br i1 %290, label %291, label %304
291: ; preds = %287
%292 = load double*, double** %8
%293 = load i32, i32* %11
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %292, i64 %294
%296 = load double, double* %295
%297 = load double*, double** %7
%298 = load i32, i32* %11
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds double, double* %297, i64 %299
store double %296, double* %300
br label %301
301: ; preds = %291
%302 = load i32, i32* %11
%303 = add nsw i32 %302, 1
store i32 %303, i32* %11
br label %287
304: ; preds = %285, %287
ret void
}

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