#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 */
long pow(int, float);
void cford2(int m, float *b) {
  float t;
  long n, ij, ji, k, jj1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13,
      j14, j15, j16, j17, j18, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
      l12, l13, l14, l15, l16, l17, l18, l19, l[19];
  n = pow(2., (float)m);
  l[0] = n;
  for (k = 2; k <= m; k++)
    l[k - 1] = l[k - 2] / 2;
  for (k = m; k <= 18; k++)
    l[k] = 2;
  ij = 2;
  l1 = l[18];
  l2 = l[17];
  l3 = l[16];
  l4 = l[15];
  l5 = l[14];
  l6 = l[13];
  l7 = l[12];
  l8 = l[11];
  l9 = l[10];
  l10 = l[9];
  l11 = l[8];
  l12 = l[7];
  l13 = l[6];
  l14 = l[5];
  l15 = l[4];
  l16 = l[3];
  l17 = l[2];
  l18 = l[1];
  l19 = l[0];
  jj1 = 2;
loop1:
  j2 = jj1;
loop2:
  j3 = j2;
loop3:
  j4 = j3;
loop4:
  j5 = j4;
loop5:
  for (j6 = j5; j6 <= l6; j6 += l5) {
    for (j7 = j6; j7 <= l7; j7 += l6) {
      for (j8 = j7; j8 <= l8; j8 += l7) {
        for (j9 = j8; j9 <= l9; j9 += l8) {
          for (j10 = j9; j10 <= l10; j10 += l9) {
            for (j11 = j10; j11 <= l11; j11 += l10) {
              for (j12 = j11; j12 <= l12; j12 += l11) {
                for (j13 = j12; j13 <= l13; j13 += l12) {
                  for (j14 = j13; j14 <= l14; j14 += l13) {
                    for (j15 = j14; j15 <= l15; j15 += l14) {
                      for (j16 = j15; j16 <= l16; j16 += l15) {
                        for (j17 = j16; j17 <= l17; j17 += l16) {
                          for (j18 = j17; j18 <= l18; j18 += l17) {
                            for (ji = j18; ji <= l19; ji += l18) {
                              if (ij < ji) {
                                t = b[ij - 2];
                                b[ij - 2] = b[ji - 2];
                                b[ji - 2] = t;
                                t = b[ij - 1];
                                b[ij - 1] = b[ji - 1];
                                b[ji - 1] = t;
                              }
                              ij = ij + 2;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  j5 += l4;
  if (j5 <= l5)
    goto loop5;
  j4 += l3;
  if (j4 <= l4)
    goto loop4;
  j3 += l2;
  if (j3 <= l3)
    goto loop3;
  j2 += l1;
  if (j2 <= l2)
    goto loop2;
  jj1 += 2;
  if (jj1 <= l1)
    goto loop1;
}


x86 assembly (clang, -O0):
<cford2>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
cvtsi2ssl -0x4(%rbp),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x200(%rbp)
movq   $0x2,-0x38(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x4(%rbp),%rcx
cmp    %rcx,%rax
jg     1197 <cford2+0x87>
mov    -0x38(%rbp),%rax
sub    $0x2,%rax
mov    -0x200(%rbp,%rax,8),%rax
ff
mov    $0x2,%ecx
cqto
idiv   %rcx
mov    %rax,%rcx
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rcx,-0x200(%rbp,%rax,8)
ff
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1148 <cford2+0x38>
movslq -0x4(%rbp),%rax
mov    %rax,-0x38(%rbp)
cmpq   $0x12,-0x38(%rbp)
jg     11cb <cford2+0xbb>
mov    -0x38(%rbp),%rax
movq   $0x2,-0x200(%rbp,%rax,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    119f <cford2+0x8f>
movq   $0x2,-0x28(%rbp)
mov    -0x170(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x178(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0x180(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0x188(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0x190(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0x198(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0x1a0(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x1a8(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x1b0(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x1b8(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x1c0(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    -0x1c8(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x1d0(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x1d8(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0x1e0(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x1e8(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x1f0(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x1f8(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x200(%rbp),%rax
mov    %rax,-0x160(%rbp)
movq   $0x2,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmp    -0xf8(%rbp),%rax
jg     16f9 <cford2+0x5e9>
mov    -0x68(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
cmp    -0x100(%rbp),%rax
jg     16e0 <cford2+0x5d0>
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x108(%rbp),%rax
jg     16c7 <cford2+0x5b7>
mov    -0x78(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
cmp    -0x110(%rbp),%rax
jg     16ae <cford2+0x59e>
mov    -0x80(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
cmp    -0x118(%rbp),%rax
jg     1695 <cford2+0x585>
mov    -0x88(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
cmp    -0x120(%rbp),%rax
jg     1676 <cford2+0x566>
mov    -0x90(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
cmp    -0x128(%rbp),%rax
jg     1657 <cford2+0x547>
mov    -0x98(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
cmp    -0x130(%rbp),%rax
jg     1638 <cford2+0x528>
mov    -0xa0(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
cmp    -0x138(%rbp),%rax
jg     1619 <cford2+0x509>
mov    -0xa8(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
cmp    -0x140(%rbp),%rax
jg     15fa <cford2+0x4ea>
mov    -0xb0(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
cmp    -0x148(%rbp),%rax
jg     15db <cford2+0x4cb>
mov    -0xb8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
cmp    -0x150(%rbp),%rax
jg     15bc <cford2+0x4ac>
mov    -0xc0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
cmp    -0x158(%rbp),%rax
jg     159d <cford2+0x48d>
mov    -0xc8(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x160(%rbp),%rax
jg     157e <cford2+0x46e>
mov    -0x28(%rbp),%rax
cmp    -0x30(%rbp),%rax
jge    155e <cford2+0x44e>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
sub    $0x2,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    $0x2,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
sub    $0x2,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x14(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    $0x2,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
sub    $0x1,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
sub    $0x1,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x14(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x158(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    14a3 <cford2+0x393>
jmp    1583 <cford2+0x473>
mov    -0x150(%rbp),%rax
add    -0xc8(%rbp),%rax
mov    %rax,-0xc8(%rbp)
jmp    1484 <cford2+0x374>
jmp    15a2 <cford2+0x492>
mov    -0x148(%rbp),%rax
add    -0xc0(%rbp),%rax
mov    %rax,-0xc0(%rbp)
jmp    1462 <cford2+0x352>
jmp    15c1 <cford2+0x4b1>
mov    -0x140(%rbp),%rax
add    -0xb8(%rbp),%rax
mov    %rax,-0xb8(%rbp)
jmp    1440 <cford2+0x330>
jmp    15e0 <cford2+0x4d0>
mov    -0x138(%rbp),%rax
add    -0xb0(%rbp),%rax
mov    %rax,-0xb0(%rbp)
jmp    141e <cford2+0x30e>
jmp    15ff <cford2+0x4ef>
mov    -0x130(%rbp),%rax
add    -0xa8(%rbp),%rax
mov    %rax,-0xa8(%rbp)
jmp    13fc <cford2+0x2ec>
jmp    161e <cford2+0x50e>
mov    -0x128(%rbp),%rax
add    -0xa0(%rbp),%rax
mov    %rax,-0xa0(%rbp)
jmp    13da <cford2+0x2ca>
jmp    163d <cford2+0x52d>
mov    -0x120(%rbp),%rax
add    -0x98(%rbp),%rax
mov    %rax,-0x98(%rbp)
jmp    13b8 <cford2+0x2a8>
jmp    165c <cford2+0x54c>
mov    -0x118(%rbp),%rax
add    -0x90(%rbp),%rax
mov    %rax,-0x90(%rbp)
jmp    1396 <cford2+0x286>
jmp    167b <cford2+0x56b>
mov    -0x110(%rbp),%rax
add    -0x88(%rbp),%rax
mov    %rax,-0x88(%rbp)
jmp    1374 <cford2+0x264>
jmp    169a <cford2+0x58a>
mov    -0x108(%rbp),%rax
add    -0x80(%rbp),%rax
mov    %rax,-0x80(%rbp)
jmp    1358 <cford2+0x248>
jmp    16b3 <cford2+0x5a3>
mov    -0x100(%rbp),%rax
add    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
jmp    133f <cford2+0x22f>
jmp    16cc <cford2+0x5bc>
mov    -0xf8(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
jmp    1326 <cford2+0x216>
jmp    16e5 <cford2+0x5d5>
mov    -0xf0(%rbp),%rax
add    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
jmp    130d <cford2+0x1fd>
mov    -0xe8(%rbp),%rax
add    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0xf0(%rbp),%rax
jg     171e <cford2+0x60e>
jmp    1305 <cford2+0x1f5>
mov    -0xe0(%rbp),%rax
add    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0xe8(%rbp),%rax
jg     1743 <cford2+0x633>
jmp    12fd <cford2+0x1ed>
mov    -0xd8(%rbp),%rax
add    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0xe0(%rbp),%rax
jg     1768 <cford2+0x658>
jmp    12f5 <cford2+0x1e5>
mov    -0xd0(%rbp),%rax
add    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0xd8(%rbp),%rax
jg     178d <cford2+0x67d>
jmp    12ed <cford2+0x1dd>
mov    -0x40(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0xd0(%rbp),%rax
jg     17af <cford2+0x69f>
jmp    12e5 <cford2+0x1d5>
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cford2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x288,%rsp
mov    %rsi,%rbx
mov    %edi,%r14d
cvtsi2ss %edi,%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
mov    %rax,0x1f0(%rsp)
movslq %r14d,%rcx
cmp    $0x2,%ecx
jl     11d1 <cford2+0xc1>
lea    -0x1(%rcx),%r8
mov    $0x1,%edx
cmp    $0x2,%ecx
jne    115c <cford2+0x4c>
mov    %rax,%rbp
jmp    11ac <cford2+0x9c>
mov    %r8,%rdi
and    $0xfffffffffffffffe,%rdi
neg    %rdi
mov    $0x1,%edx
mov    %rax,%rbp
shr    $0x3f,%rbp
add    %rax,%rbp
sar    %rbp
mov    %rbp,0x1f0(%rsp,%rdx,8)
lea    0x3(%rax),%rbp
test   %rax,%rax
cmovns %rax,%rbp
sar    $0x2,%rbp
mov    %rbp,0x1f8(%rsp,%rdx,8)
lea    (%rdi,%rdx,1),%rsi
add    $0x2,%rsi
add    $0x2,%rdx
mov    %rbp,%rax
cmp    $0x1,%rsi
jne    116b <cford2+0x5b>
test   $0x1,%r8b
je     11c7 <cford2+0xb7>
mov    %rbp,%rax
shr    $0x3f,%rax
add    %rbp,%rax
sar    %rax
mov    %rax,0x1f0(%rsp,%rdx,8)
cmp    $0x12,%r14d
jg     12a0 <cford2+0x190>
mov    $0x13,%r8d
sub    %rcx,%r8
cmp    $0x4,%r8
jb     128a <cford2+0x17a>
mov    %r8,%rdx
and    $0xfffffffffffffffc,%rdx
lea    -0x4(%rdx),%rax
mov    %rax,%rdi
shr    $0x2,%rdi
add    $0x1,%rdi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0xc,%rax
jae    1209 <cford2+0xf9>
xor    %ebp,%ebp
jmp    1251 <cford2+0x141>
and    $0xfffffffffffffffc,%rdi
lea    (%rsp,%rcx,8),%rax
add    $0x260,%rax
xor    %ebp,%ebp
movaps 0xde0(%rip),%xmm0
movups %xmm0,-0x70(%rax,%rbp,8)
movups %xmm0,-0x60(%rax,%rbp,8)
movups %xmm0,-0x50(%rax,%rbp,8)
movups %xmm0,-0x40(%rax,%rbp,8)
movups %xmm0,-0x30(%rax,%rbp,8)
movups %xmm0,-0x20(%rax,%rbp,8)
movups %xmm0,-0x10(%rax,%rbp,8)
movups %xmm0,(%rax,%rbp,8)
add    $0x10,%rbp
add    $0xfffffffffffffffc,%rdi
jne    1220 <cford2+0x110>
test   %rsi,%rsi
je     1282 <cford2+0x172>
add    %rcx,%rbp
lea    (%rsp,%rbp,8),%rax
add    $0x200,%rax
shl    $0x5,%rsi
xor    %edi,%edi
movaps 0xd90(%rip),%xmm0
movups %xmm0,-0x10(%rax,%rdi,1)
movups %xmm0,(%rax,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rsi
jne    1270 <cford2+0x160>
cmp    %rdx,%r8
je     12a0 <cford2+0x190>
add    %rdx,%rcx
movq   $0x2,0x1f0(%rsp,%rcx,8)
add    $0x1,%rcx
cmp    $0x13,%rcx
jne    128a <cford2+0x17a>
mov    0x280(%rsp),%rax
mov    0x278(%rsp),%rcx
mov    0x270(%rsp),%r8
mov    0x268(%rsp),%rdx
mov    %rdx,0x30(%rsp)
mov    0x260(%rsp),%rdi
mov    0x258(%rsp),%rbp
mov    0x250(%rsp),%rdx
mov    %rdx,(%rsp)
mov    0x248(%rsp),%r9
mov    0x240(%rsp),%r15
mov    0x238(%rsp),%r12
mov    0x230(%rsp),%r13
mov    0x228(%rsp),%rdx
mov    %rdx,0x8(%rsp)
mov    0x220(%rsp),%rdx
mov    %rdx,0x10(%rsp)
mov    0x218(%rsp),%rdx
mov    %rdx,0x18(%rsp)
mov    0x210(%rsp),%rdx
mov    %rdx,0x20(%rsp)
mov    0x208(%rsp),%rdx
mov    %rdx,0x28(%rsp)
mov    0x200(%rsp),%r10
mov    0x1f0(%rsp),%r11
mov    0x1f8(%rsp),%r14
lea    0x4(%rbx),%rdx
lea    0x0(,%rax,4),%rsi
mov    %rsi,0xa0(%rsp)
lea    0x0(,%rcx,4),%rsi
mov    %rsi,0x98(%rsp)
mov    %r8,0x60(%rsp)
lea    0x0(,%r8,4),%rsi
mov    %rsi,0xc0(%rsp)
mov    %rdx,%r8
mov    0x30(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0xd8(%rsp)
mov    %rdi,0x68(%rsp)
lea    0x0(,%rdi,4),%rsi
mov    %rsi,0xf0(%rsp)
mov    %rbp,0x38(%rsp)
lea    0x0(,%rbp,4),%rsi
mov    %rsi,0x108(%rsp)
mov    (%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x120(%rsp)
mov    %r9,0x40(%rsp)
lea    0x0(,%r9,4),%rsi
mov    %rsi,0x138(%rsp)
mov    %r15,0x48(%rsp)
lea    0x0(,%r15,4),%rsi
mov    %rsi,0x150(%rsp)
mov    %r12,0x50(%rsp)
lea    0x0(,%r12,4),%rsi
mov    %rsi,0x168(%rsp)
mov    %r13,0x58(%rsp)
lea    0x0(,%r13,4),%rsi
mov    %rsi,0x180(%rsp)
mov    0x8(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x198(%rsp)
mov    0x10(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x1b0(%rsp)
mov    0x18(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x1c8(%rsp)
mov    0x20(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x1e0(%rsp)
mov    0x28(%rsp),%rdx
lea    0x0(,%rdx,4),%rsi
mov    %rsi,0x1e8(%rsp)
lea    0x0(,%r10,4),%rdi
mov    $0x2,%ebp
mov    $0x2,%r12d
mov    %r8,%r9
mov    %rbp,%rsi
mov    %rbp,0x90(%rsp)
mov    %r8,0xa8(%rsp)
mov    %rax,0xb8(%rsp)
mov    %r9,0x88(%rsp)
mov    %rsi,0x80(%rsp)
mov    %rcx,0xb0(%rsp)
mov    %r9,0x78(%rsp)
mov    %rsi,0x70(%rsp)
jmp    1528 <cford2+0x418>
nopl   0x0(%rax,%rax,1)
mov    0xc8(%rsp),%rsi
add    0x60(%rsp),%rsi
mov    0xd0(%rsp),%r9
add    0xc0(%rsp),%r9
cmp    0x30(%rsp),%rsi
jg     18d0 <cford2+0x7c0>
mov    %r9,0xd0(%rsp)
mov    %rsi,0xc8(%rsp)
jmp    1564 <cford2+0x454>
nopw   0x0(%rax,%rax,1)
mov    0xe0(%rsp),%rsi
add    0x30(%rsp),%rsi
mov    0xe8(%rsp),%r9
add    0xd8(%rsp),%r9
cmp    0x68(%rsp),%rsi
jg     1500 <cford2+0x3f0>
cmp    0x38(%rsp),%rsi
mov    %r9,0xe8(%rsp)
mov    %rsi,0xe0(%rsp)
jle    15a4 <cford2+0x494>
jmp    1540 <cford2+0x430>
nopl   (%rax)
mov    0xf8(%rsp),%rsi
add    0x68(%rsp),%rsi
mov    0x100(%rsp),%r9
add    0xf0(%rsp),%r9
cmp    0x38(%rsp),%rsi
jg     1540 <cford2+0x430>
cmp    (%rsp),%rsi
mov    %r9,0x100(%rsp)
mov    %rsi,0xf8(%rsp)
jle    15e3 <cford2+0x4d3>
jmp    1580 <cford2+0x470>
nopl   0x0(%rax)
mov    0x110(%rsp),%rsi
add    0x38(%rsp),%rsi
mov    0x118(%rsp),%r9
add    0x108(%rsp),%r9
cmp    (%rsp),%rsi
jg     1580 <cford2+0x470>
cmp    0x40(%rsp),%rsi
mov    %r9,0x118(%rsp)
mov    %rsi,0x110(%rsp)
jle    1623 <cford2+0x513>
jmp    15c0 <cford2+0x4b0>
nopl   0x0(%rax)
mov    0x128(%rsp),%rsi
add    (%rsp),%rsi
mov    0x130(%rsp),%r9
add    0x120(%rsp),%r9
cmp    0x40(%rsp),%rsi
jg     15c0 <cford2+0x4b0>
cmp    0x48(%rsp),%rsi
mov    %r9,0x130(%rsp)
mov    %rsi,0x128(%rsp)
jle    1664 <cford2+0x554>
jmp    1600 <cford2+0x4f0>
nopl   0x0(%rax)
mov    0x140(%rsp),%rsi
add    0x40(%rsp),%rsi
mov    0x148(%rsp),%r9
add    0x138(%rsp),%r9
cmp    0x48(%rsp),%rsi
jg     1600 <cford2+0x4f0>
cmp    0x50(%rsp),%rsi
mov    %r9,0x148(%rsp)
mov    %rsi,0x140(%rsp)
jle    16a4 <cford2+0x594>
jmp    1640 <cford2+0x530>
nopl   (%rax)
mov    0x158(%rsp),%rsi
add    0x48(%rsp),%rsi
mov    0x160(%rsp),%r9
add    0x150(%rsp),%r9
cmp    0x50(%rsp),%rsi
jg     1640 <cford2+0x530>
cmp    0x58(%rsp),%rsi
mov    %r9,0x160(%rsp)
mov    %rsi,0x158(%rsp)
jle    16e4 <cford2+0x5d4>
jmp    1680 <cford2+0x570>
nopl   (%rax)
mov    0x170(%rsp),%rsi
add    0x50(%rsp),%rsi
mov    0x178(%rsp),%r9
add    0x168(%rsp),%r9
cmp    0x58(%rsp),%rsi
jg     1680 <cford2+0x570>
cmp    0x8(%rsp),%rsi
mov    %r9,0x178(%rsp)
mov    %rsi,0x170(%rsp)
jle    1724 <cford2+0x614>
jmp    16c0 <cford2+0x5b0>
nopl   (%rax)
mov    0x188(%rsp),%rsi
add    0x58(%rsp),%rsi
mov    0x190(%rsp),%r9
add    0x180(%rsp),%r9
cmp    0x8(%rsp),%rsi
jg     16c0 <cford2+0x5b0>
cmp    0x10(%rsp),%rsi
mov    %r9,0x190(%rsp)
mov    %rsi,0x188(%rsp)
jle    1764 <cford2+0x654>
jmp    1700 <cford2+0x5f0>
nopl   (%rax)
mov    0x1a0(%rsp),%rsi
add    0x8(%rsp),%rsi
mov    0x1a8(%rsp),%r9
add    0x198(%rsp),%r9
cmp    0x10(%rsp),%rsi
jg     1700 <cford2+0x5f0>
cmp    0x18(%rsp),%rsi
mov    %r9,0x1a8(%rsp)
mov    %rsi,0x1a0(%rsp)
jle    17a4 <cford2+0x694>
jmp    1740 <cford2+0x630>
nopl   (%rax)
mov    0x1b8(%rsp),%rsi
add    0x10(%rsp),%rsi
mov    0x1c0(%rsp),%r9
add    0x1b0(%rsp),%r9
cmp    0x18(%rsp),%rsi
jg     1740 <cford2+0x630>
cmp    0x20(%rsp),%rsi
mov    %r9,0x1c0(%rsp)
mov    %rsi,0x1b8(%rsp)
jle    17e4 <cford2+0x6d4>
jmp    1780 <cford2+0x670>
nopl   (%rax)
mov    0x1d0(%rsp),%rsi
add    0x18(%rsp),%rsi
mov    0x1d8(%rsp),%r9
add    0x1c8(%rsp),%r9
cmp    0x20(%rsp),%rsi
jg     1780 <cford2+0x670>
cmp    0x28(%rsp),%rsi
mov    %r9,0x1d8(%rsp)
mov    %rsi,0x1d0(%rsp)
jle    1814 <cford2+0x704>
jmp    17c0 <cford2+0x6b0>
nopl   (%rax)
add    0x20(%rsp),%rsi
add    0x1e0(%rsp),%r9
cmp    0x28(%rsp),%rsi
jg     17c0 <cford2+0x6b0>
cmp    %r10,%rsi
jg     1800 <cford2+0x6f0>
mov    %r9,%rax
mov    %rsi,%r15
jmp    1842 <cford2+0x732>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    0x28(%rsp),%r15
add    0x1e8(%rsp),%rax
cmp    %r10,%r15
jg     1800 <cford2+0x6f0>
cmp    %r14,%r15
jg     1830 <cford2+0x720>
mov    %rax,%rdx
mov    %r15,%rbp
jmp    185b <cford2+0x74b>
nop
add    %r10,%rbp
add    %rdi,%rdx
cmp    %r14,%rbp
jg     1830 <cford2+0x720>
cmp    %r11,%rbp
jg     1850 <cford2+0x740>
xor    %r8d,%r8d
jmp    1880 <cford2+0x770>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x2,%r12
add    %r14,%r8
lea    (%r8,%rbp,1),%rcx
cmp    %r11,%rcx
jg     1850 <cford2+0x740>
lea    (%r8,%rbp,1),%r13
cmp    %r13,%r12
jge    1870 <cford2+0x760>
movss  -0x8(%rbx,%r12,4),%xmm0
movss  -0x4(%rdx,%r8,4),%xmm1
movss  %xmm1,-0x8(%rbx,%r12,4)
movss  %xmm0,-0x4(%rdx,%r8,4)
movss  -0x4(%rbx,%r12,4),%xmm0
movss  (%rdx,%r8,4),%xmm1
movss  %xmm1,-0x4(%rbx,%r12,4)
movss  %xmm0,(%rdx,%r8,4)
jmp    1870 <cford2+0x760>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0xb0(%rsp),%rcx
mov    0x70(%rsp),%rsi
add    %rcx,%rsi
mov    0x78(%rsp),%r9
add    0x98(%rsp),%r9
cmp    0x60(%rsp),%rsi
jle    14e7 <cford2+0x3d7>
nopl   0x0(%rax,%rax,1)
mov    0xb8(%rsp),%rax
mov    0x80(%rsp),%rsi
add    %rax,%rsi
mov    0x88(%rsp),%r9
add    0xa0(%rsp),%r9
cmp    %rcx,%rsi
mov    0xa8(%rsp),%r8
mov    0x90(%rsp),%rbp
jle    14bf <cford2+0x3af>
nopl   0x0(%rax)
add    $0x2,%rbp
add    $0x8,%r8
cmp    %rax,%rbp
jle    14b9 <cford2+0x3a9>
add    $0x288,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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