#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*/ fn_dirFDaubechiesWT2p2(float *, float *, int, int);
int /*<<< orphan*/ fn_dirFDaubechiesWT2p2oneStage(float *, float *, int);
int /*<<< orphan*/ fn_invFDaubechiesWT2p2(float *, float *, int, int);
int /*<<< orphan*/ fn_invFDaubechiesWT2p2oneStage(float *, float *, int);
int log(int);
int /*<<< orphan*/ printf(char *, ...);
int rand();
int main() {
  int i;
  float a_data[8] = {16., 8., 12., 16., 18., 14., 4., 8.};
  float a_k[8];
  int i_step = (int)(log(8) / log(2));
  float a_Rdata[16];
  float a_Rk[16];
  int i_Rstep = (int)(log(16) / log(2));
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" determining test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" one stage ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  fn_dirFDaubechiesWT2p2oneStage(a_k, a_data, 8);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_k[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2oneStage(a_data, a_k, 8);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" determining test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" one level ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  fn_dirFDaubechiesWT2p2(a_k, a_data, 8, 1);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_k[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2(a_data, a_k, 8, 1);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" full level ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  printf("\n");
  printf("i_step = %i ", i_step);
  printf("\n");
  printf("\n");
  fn_dirFDaubechiesWT2p2(a_k, a_data, 8, i_step);
  for (i = 0; i < 4; i++) {
    printf(" W3: %f ", a_k[i]);
    printf("\n");
  }
  for (i = 4; i < 6; i++) {
    printf(" W2: %f ", a_k[i]);
    printf("\n");
  }
  printf(" W1: %f ", a_k[6]);
  printf("\n");
  printf(" W0: %f ", a_k[7]);
  printf("\n");
  fn_invFDaubechiesWT2p2(a_data, a_k, 8, i_step);
  printf(" input, again: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_data[i]);
    printf("\n");
  }
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" random test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input random: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    a_Rdata[i] = (float)(rand() % 16);
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  fn_dirFDaubechiesWT2p2(a_Rk, a_Rdata, 16, i_Rstep);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    printf("%f ", a_Rk[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2(a_Rdata, a_Rk, 16, i_Rstep);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  printf(" Well? Seems to be true? ))) ");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" random semi-full test ");
  printf("\n");
  printf("-----------------------------------------------------------------");
  printf("\n");
  printf(" input random: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    a_Rdata[i] = (float)(rand() % 16);
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  fn_dirFDaubechiesWT2p2(a_Rk, a_Rdata, 16, 3);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    printf("%f ", a_Rk[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2(a_Rdata, a_Rk, 16, 3);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 16; i++) {
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  printf(" Well? Seems to be true? ))) ");
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movl   $0x0,-0x4(%rbp)
mov    0xe77(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xe74(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xe71(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xe6e(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    $0x8,%edi
call   1070 <log@plt>
mov    %eax,-0xec(%rbp)
mov    $0x2,%edi
call   1070 <log@plt>
mov    %eax,%ecx
mov    -0xec(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,-0x54(%rbp)
mov    $0x10,%edi
call   1070 <log@plt>
mov    %eax,-0xe8(%rbp)
mov    $0x2,%edi
call   1070 <log@plt>
mov    %eax,%ecx
mov    -0xe8(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,-0xe4(%rbp)
lea    0xe18(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe4c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe40(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe30(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xde0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe1b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdf8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xda8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xddc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdef(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdc0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    12f2 <main+0x182>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe1d(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xd85(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12b0 <main+0x140>
lea    -0x50(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x8,%edx
call   1060 <fn_dirFDaubechiesWT2p2oneStage@plt>
lea    0xd81(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1369 <main+0x1f9>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xda6(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xd0e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1327 <main+0x1b7>
lea    -0x30(%rbp),%rdi
lea    -0x50(%rbp),%rsi
mov    $0x8,%edx
call   1080 <fn_invFDaubechiesWT2p2oneStage@plt>
lea    0xd14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xcd2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    13e0 <main+0x270>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd2f(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xc97(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    139e <main+0x22e>
lea    0xc39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc6d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc61(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc51(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc01(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc35(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbe5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc19(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc4f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbfd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbad(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbe1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbf4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbc5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    14ed <main+0x37d>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc22(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xb8a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14ab <main+0x33b>
lea    -0x50(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1050 <fn_dirFDaubechiesWT2p2@plt>
lea    0xb81(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xb49(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1569 <main+0x3f9>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xba6(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xb0e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1527 <main+0x3b7>
lea    -0x30(%rbp),%rdi
lea    -0x50(%rbp),%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1040 <fn_invFDaubechiesWT2p2@plt>
lea    0xb0f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xacd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    15e5 <main+0x475>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb2a(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xa92(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    15a3 <main+0x433>
lea    0xa34(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa68(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xaaa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa4c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x9fc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa30(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa43(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    169e <main+0x52e>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xa71(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x9d9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    165c <main+0x4ec>
lea    0x9bd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x54(%rbp),%esi
lea    0xa09(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x99e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x990(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    -0x54(%rbp),%ecx
mov    $0x8,%edx
call   1050 <fn_dirFDaubechiesWT2p2@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    1737 <main+0x5c7>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9b8(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x940(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16f5 <main+0x585>
movl   $0x4,-0x8(%rbp)
cmpl   $0x6,-0x8(%rbp)
jge    1780 <main+0x610>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x978(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x8f7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    173e <main+0x5ce>
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x94e(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x8c4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x932(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x89f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0x30(%rbp),%rdi
lea    -0x50(%rbp),%rsi
mov    -0x54(%rbp),%ecx
mov    $0x8,%edx
call   1040 <fn_invFDaubechiesWT2p2@plt>
lea    0x8b0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x86e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1844 <main+0x6d4>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x8cb(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x833(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1802 <main+0x692>
lea    0x7d5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x809(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x889(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x7ed(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x79d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x7d1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x85f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x7b5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1920 <main+0x7b0>
mov    $0x0,%al
call   1090 <rand@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0xa0(%rbp,%rax,4)
ff ff
movslq -0x8(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x7ef(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x757(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    18bb <main+0x74b>
lea    -0xe0(%rbp),%rdi
lea    -0xa0(%rbp),%rsi
mov    -0xe4(%rbp),%ecx
mov    $0x10,%edx
call   1050 <fn_dirFDaubechiesWT2p2@plt>
lea    0x7c9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x70f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    19a6 <main+0x836>
movslq -0x8(%rbp),%rax
movss  -0xe0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x769(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x6d1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1961 <main+0x7f1>
lea    -0xa0(%rbp),%rdi
lea    -0xe0(%rbp),%rsi
mov    -0xe4(%rbp),%ecx
mov    $0x10,%edx
call   1040 <fn_invFDaubechiesWT2p2@plt>
lea    0x754(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x689(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1a2c <main+0x8bc>
movslq -0x8(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x6e3(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x64b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    19e7 <main+0x877>
lea    0x703(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5df(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x613(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x6f7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5f7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5a7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5db(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x669(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x5bf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1b16 <main+0x9a6>
mov    $0x0,%al
call   1090 <rand@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0xa0(%rbp,%rax,4)
ff ff
movslq -0x8(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x5f9(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x561(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1ab1 <main+0x941>
lea    -0xe0(%rbp),%rdi
lea    -0xa0(%rbp),%rsi
mov    $0x10,%edx
mov    $0x3,%ecx
call   1050 <fn_dirFDaubechiesWT2p2@plt>
lea    0x5d4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x51a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1b9b <main+0xa2b>
movslq -0x8(%rbp),%rax
movss  -0xe0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x574(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x4dc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1b56 <main+0x9e6>
lea    -0xa0(%rbp),%rdi
lea    -0xe0(%rbp),%rsi
mov    $0x10,%edx
mov    $0x3,%ecx
call   1040 <fn_invFDaubechiesWT2p2@plt>
lea    0x560(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x495(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1c20 <main+0xab0>
movslq -0x8(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x4ef(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x457(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1bdb <main+0xa6b>
lea    0x50f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x42d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
movaps 0x1ea8(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x1e8c(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    $0x8,%edi
call   1080 <log@plt>
mov    %eax,%r14d
mov    $0x2,%edi
call   1080 <log@plt>
mov    %eax,%ebx
mov    $0x10,%edi
call   1080 <log@plt>
mov    %eax,0xc4(%rsp)
mov    $0x2,%edi
call   1080 <log@plt>
mov    %eax,0xc0(%rsp)
lea    0x1e66(%rip),%r15
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1e8d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1e74(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1e54(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1ea5(%rip),%rbp
movsd  0x1d83(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d6f(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d5b(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
movsd  0x1d2c(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d2b(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d17(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d03(%rip),%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
movsd  0x1cc4(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14d,%eax
cltd
idiv   %ebx
mov    %eax,%r12d
lea    0x20(%rsp),%r13
mov    %rsp,%r14
mov    %r13,%rdi
mov    %r14,%rsi
mov    $0x8,%edx
call   1070 <fn_dirFDaubechiesWT2p2oneStage@plt>
lea    0x1d3d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
mov    %r13,%rsi
mov    $0x8,%edx
call   1090 <fn_invFDaubechiesWT2p2oneStage@plt>
lea    0x1c2f(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1ae2(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1ae4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1a95(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r13,%rdi
mov    %r14,%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1060 <fn_dirFDaubechiesWT2p2@plt>
lea    0x197f(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
mov    %r13,%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1050 <fn_invFDaubechiesWT2p2@plt>
lea    0x186c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x176d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1641(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r13,%rdi
mov    %r14,%rsi
mov    $0x8,%edx
mov    %r12d,%ecx
call   1060 <fn_dirFDaubechiesWT2p2@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x160c(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x1596(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x155c(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x1543(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
mov    %r13,%rsi
mov    $0x8,%edx
mov    %r12d,%ecx
call   1050 <fn_invFDaubechiesWT2p2@plt>
lea    0x14c7(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1406(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x13e8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
xor    %eax,%eax
call   10a0 <rand@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
and    $0xfffffff0,%ecx
sub    %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x40(%rsp,%rbx,4)
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    $0x10,%rbx
jne    1d60 <main+0xbe0>
mov    0xc4(%rsp),%eax
cltd
idivl  0xc0(%rsp)
mov    %eax,%ebp
lea    0x80(%rsp),%r14
lea    0x40(%rsp),%r15
mov    %r14,%rdi
mov    %r15,%rsi
mov    $0x10,%edx
mov    %eax,%ecx
call   1060 <fn_dirFDaubechiesWT2p2@plt>
lea    0x1362(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x80(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x131b(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x84(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x88(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x90(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x94(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x98(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x9c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa0(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xac(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb0(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xbc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
mov    %r14,%rsi
mov    $0x10,%edx
mov    %ebp,%ecx
call   1050 <fn_invFDaubechiesWT2p2@plt>
lea    0x1132(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x40(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x44(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x48(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x50(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x54(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x58(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x5c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x60(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x64(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x68(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x6c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x70(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x74(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x78(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x7c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xf51(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe2f(%rip),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xf46(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xec4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   10a0 <rand@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
and    $0xfffffff0,%ecx
sub    %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x40(%rsp,%rbp,4)
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x10,%rbp
jne    2280 <main+0x1100>
lea    0x80(%rsp),%r14
lea    0x40(%rsp),%rbp
mov    %r14,%rdi
mov    %rbp,%rsi
mov    $0x10,%edx
mov    $0x3,%ecx
call   1060 <fn_dirFDaubechiesWT2p2@plt>
lea    0xe50(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x80(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe09(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x84(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x88(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x90(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x94(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x98(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x9c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa0(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xa8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xac(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb0(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xb8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xbc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    %r14,%rsi
mov    $0x10,%edx
mov    $0x3,%ecx
call   1050 <fn_invFDaubechiesWT2p2@plt>
lea    0xc1d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x40(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x44(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x48(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x50(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x54(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x58(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x5c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x60(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x64(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x68(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x6c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x70(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x74(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x78(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x7c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xa3c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@__const.main.a_data = [8 x float] [float 1.600000e+01, float 8.000000e+00, float 1.200000e+01, float 1.600000e+01, float 1.800000e+01, float 1.400000e+01, float 4.000000e+00, float 8.000000e+00]
@.str = [66 x i8] c"-----------------------------------------------------------------\00"
@.str.2 = [19 x i8] c" determining test \00"
@.str.3 = [12 x i8] c" one stage \00"
@.str.4 = [9 x i8] c" input: \00"
@.str.5 = [4 x i8] c"%f \00"
@.str.6 = [10 x i8] c" output: \00"
@.str.7 = [16 x i8] c" input, again: \00"
@.str.8 = [12 x i8] c" one level \00"
@.str.9 = [13 x i8] c" full level \00"
@.str.10 = [13 x i8] c"i_step = %i \00"
@.str.11 = [9 x i8] c" W3: %f \00"
@.str.12 = [9 x i8] c" W2: %f \00"
@.str.13 = [9 x i8] c" W1: %f \00"
@.str.14 = [9 x i8] c" W0: %f \00"
@.str.15 = [14 x i8] c" random test \00"
@.str.16 = [16 x i8] c" input random: \00"
@.str.17 = [17 x i8] c" output random: \00"
@.str.18 = [23 x i8] c" input random, again: \00"
@.str.19 = [30 x i8] c" Well? Seems to be true? ))) \00"
@.str.20 = [24 x i8] c" random semi-full test \00"
define i32 @main() {
%1 = alloca [8 x float]
%2 = alloca [8 x float]
%3 = alloca [16 x float]
%4 = alloca [16 x float]
%5 = bitcast [8 x float]* %1 to i8*
%6 = bitcast [8 x float]* %2 to i8*
%7 = tail call i32 @log(i32 8)
%8 = tail call i32 @log(i32 2)
%9 = bitcast [16 x float]* %3 to i8*
%10 = bitcast [16 x float]* %4 to i8*
%11 = tail call i32 @log(i32 16)
%12 = tail call i32 @log(i32 2)
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%14 = tail call i32 @putchar(i32 10)
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
%16 = tail call i32 @putchar(i32 10)
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%18 = tail call i32 @putchar(i32 10)
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
%20 = tail call i32 @putchar(i32 10)
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%22 = tail call i32 @putchar(i32 10)
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%24 = tail call i32 @putchar(i32 10)
%25 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 0
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 1.600000e+01)
%27 = tail call i32 @putchar(i32 10)
%28 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 1
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 8.000000e+00)
%30 = tail call i32 @putchar(i32 10)
%31 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 2
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 1.200000e+01)
%33 = tail call i32 @putchar(i32 10)
%34 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 3
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 1.600000e+01)
%36 = tail call i32 @putchar(i32 10)
%37 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 4
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 1.800000e+01)
%39 = tail call i32 @putchar(i32 10)
%40 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 5
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 1.400000e+01)
%42 = tail call i32 @putchar(i32 10)
%43 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 6
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 4.000000e+00)
%45 = tail call i32 @putchar(i32 10)
%46 = getelementptr inbounds [8 x float], [8 x float]* %1, i64 0, i64 7
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double 8.000000e+00)
%48 = tail call i32 @putchar(i32 10)
%49 = sdiv i32 %7, %8
%50 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 0
%51 = call i32 @fn_dirFDaubechiesWT2p2oneStage(float* %50, float* %25, i32 8)
%52 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%53 = call i32 @putchar(i32 10)
%54 = load float, float* %50
%55 = fpext float %54 to double
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %55)
%57 = call i32 @putchar(i32 10)
%58 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 1
%59 = load float, float* %58
%60 = fpext float %59 to double
%61 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %60)
%62 = call i32 @putchar(i32 10)
%63 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 2
%64 = load float, float* %63
%65 = fpext float %64 to double
%66 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %65)
%67 = call i32 @putchar(i32 10)
%68 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 3
%69 = load float, float* %68
%70 = fpext float %69 to double
%71 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %70)
%72 = call i32 @putchar(i32 10)
%73 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 4
%74 = load float, float* %73
%75 = fpext float %74 to double
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %75)
%77 = call i32 @putchar(i32 10)
%78 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 5
%79 = load float, float* %78
%80 = fpext float %79 to double
%81 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %80)
%82 = call i32 @putchar(i32 10)
%83 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 6
%84 = load float, float* %83
%85 = fpext float %84 to double
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %85)
%87 = call i32 @putchar(i32 10)
%88 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 7
%89 = load float, float* %88
%90 = fpext float %89 to double
%91 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %90)
%92 = call i32 @putchar(i32 10)
%93 = call i32 @fn_invFDaubechiesWT2p2oneStage(float* %25, float* %50, i32 8)
%94 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%95 = call i32 @putchar(i32 10)
%96 = load float, float* %25
%97 = fpext float %96 to double
%98 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %97)
%99 = call i32 @putchar(i32 10)
%100 = load float, float* %28
%101 = fpext float %100 to double
%102 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %101)
%103 = call i32 @putchar(i32 10)
%104 = load float, float* %31
%105 = fpext float %104 to double
%106 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %105)
%107 = call i32 @putchar(i32 10)
%108 = load float, float* %34
%109 = fpext float %108 to double
%110 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %109)
%111 = call i32 @putchar(i32 10)
%112 = load float, float* %37
%113 = fpext float %112 to double
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %113)
%115 = call i32 @putchar(i32 10)
%116 = load float, float* %40
%117 = fpext float %116 to double
%118 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %117)
%119 = call i32 @putchar(i32 10)
%120 = load float, float* %43
%121 = fpext float %120 to double
%122 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %121)
%123 = call i32 @putchar(i32 10)
%124 = load float, float* %46
%125 = fpext float %124 to double
%126 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %125)
%127 = call i32 @putchar(i32 10)
%128 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%129 = call i32 @putchar(i32 10)
%130 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
%131 = call i32 @putchar(i32 10)
%132 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%133 = call i32 @putchar(i32 10)
%134 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%135 = call i32 @putchar(i32 10)
%136 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%137 = call i32 @putchar(i32 10)
%138 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%139 = call i32 @putchar(i32 10)
%140 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%141 = call i32 @putchar(i32 10)
%142 = load float, float* %25
%143 = fpext float %142 to double
%144 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %143)
%145 = call i32 @putchar(i32 10)
%146 = load float, float* %28
%147 = fpext float %146 to double
%148 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %147)
%149 = call i32 @putchar(i32 10)
%150 = load float, float* %31
%151 = fpext float %150 to double
%152 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %151)
%153 = call i32 @putchar(i32 10)
%154 = load float, float* %34
%155 = fpext float %154 to double
%156 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %155)
%157 = call i32 @putchar(i32 10)
%158 = load float, float* %37
%159 = fpext float %158 to double
%160 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %159)
%161 = call i32 @putchar(i32 10)
%162 = load float, float* %40
%163 = fpext float %162 to double
%164 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %163)
%165 = call i32 @putchar(i32 10)
%166 = load float, float* %43
%167 = fpext float %166 to double
%168 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %167)
%169 = call i32 @putchar(i32 10)
%170 = load float, float* %46
%171 = fpext float %170 to double
%172 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %171)
%173 = call i32 @putchar(i32 10)
%174 = call i32 @fn_dirFDaubechiesWT2p2(float* %50, float* %25, i32 8, i32 1)
%175 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%176 = call i32 @putchar(i32 10)
%177 = load float, float* %50
%178 = fpext float %177 to double
%179 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %178)
%180 = call i32 @putchar(i32 10)
%181 = load float, float* %58
%182 = fpext float %181 to double
%183 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %182)
%184 = call i32 @putchar(i32 10)
%185 = load float, float* %63
%186 = fpext float %185 to double
%187 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %186)
%188 = call i32 @putchar(i32 10)
%189 = load float, float* %68
%190 = fpext float %189 to double
%191 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %190)
%192 = call i32 @putchar(i32 10)
%193 = load float, float* %73
%194 = fpext float %193 to double
%195 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %194)
%196 = call i32 @putchar(i32 10)
%197 = load float, float* %78
%198 = fpext float %197 to double
%199 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %198)
%200 = call i32 @putchar(i32 10)
%201 = load float, float* %83
%202 = fpext float %201 to double
%203 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %202)
%204 = call i32 @putchar(i32 10)
%205 = load float, float* %88
%206 = fpext float %205 to double
%207 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %206)
%208 = call i32 @putchar(i32 10)
%209 = call i32 @fn_invFDaubechiesWT2p2(float* %25, float* %50, i32 8, i32 1)
%210 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%211 = call i32 @putchar(i32 10)
%212 = load float, float* %25
%213 = fpext float %212 to double
%214 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %213)
%215 = call i32 @putchar(i32 10)
%216 = load float, float* %28
%217 = fpext float %216 to double
%218 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %217)
%219 = call i32 @putchar(i32 10)
%220 = load float, float* %31
%221 = fpext float %220 to double
%222 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %221)
%223 = call i32 @putchar(i32 10)
%224 = load float, float* %34
%225 = fpext float %224 to double
%226 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %225)
%227 = call i32 @putchar(i32 10)
%228 = load float, float* %37
%229 = fpext float %228 to double
%230 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %229)
%231 = call i32 @putchar(i32 10)
%232 = load float, float* %40
%233 = fpext float %232 to double
%234 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %233)
%235 = call i32 @putchar(i32 10)
%236 = load float, float* %43
%237 = fpext float %236 to double
%238 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %237)
%239 = call i32 @putchar(i32 10)
%240 = load float, float* %46
%241 = fpext float %240 to double
%242 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %241)
%243 = call i32 @putchar(i32 10)
%244 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%245 = call i32 @putchar(i32 10)
%246 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%247 = call i32 @putchar(i32 10)
%248 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%249 = call i32 @putchar(i32 10)
%250 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%251 = call i32 @putchar(i32 10)
%252 = load float, float* %25
%253 = fpext float %252 to double
%254 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %253)
%255 = call i32 @putchar(i32 10)
%256 = load float, float* %28
%257 = fpext float %256 to double
%258 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %257)
%259 = call i32 @putchar(i32 10)
%260 = load float, float* %31
%261 = fpext float %260 to double
%262 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %261)
%263 = call i32 @putchar(i32 10)
%264 = load float, float* %34
%265 = fpext float %264 to double
%266 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %265)
%267 = call i32 @putchar(i32 10)
%268 = load float, float* %37
%269 = fpext float %268 to double
%270 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %269)
%271 = call i32 @putchar(i32 10)
%272 = load float, float* %40
%273 = fpext float %272 to double
%274 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %273)
%275 = call i32 @putchar(i32 10)
%276 = load float, float* %43
%277 = fpext float %276 to double
%278 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %277)
%279 = call i32 @putchar(i32 10)
%280 = load float, float* %46
%281 = fpext float %280 to double
%282 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %281)
%283 = call i32 @putchar(i32 10)
%284 = call i32 @putchar(i32 10)
%285 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), i32 %49)
%286 = call i32 @putchar(i32 10)
%287 = call i32 @putchar(i32 10)
%288 = call i32 @fn_dirFDaubechiesWT2p2(float* %50, float* %25, i32 8, i32 %49)
%289 = load float, float* %50
%290 = fpext float %289 to double
%291 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %290)
%292 = call i32 @putchar(i32 10)
%293 = load float, float* %58
%294 = fpext float %293 to double
%295 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %294)
%296 = call i32 @putchar(i32 10)
%297 = load float, float* %63
%298 = fpext float %297 to double
%299 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %298)
%300 = call i32 @putchar(i32 10)
%301 = load float, float* %68
%302 = fpext float %301 to double
%303 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %302)
%304 = call i32 @putchar(i32 10)
%305 = load float, float* %73
%306 = fpext float %305 to double
%307 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), double %306)
%308 = call i32 @putchar(i32 10)
%309 = load float, float* %78
%310 = fpext float %309 to double
%311 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), double %310)
%312 = call i32 @putchar(i32 10)
%313 = load float, float* %83
%314 = fpext float %313 to double
%315 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), double %314)
%316 = call i32 @putchar(i32 10)
%317 = load float, float* %88
%318 = fpext float %317 to double
%319 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), double %318)
%320 = call i32 @putchar(i32 10)
%321 = call i32 @fn_invFDaubechiesWT2p2(float* %25, float* %50, i32 8, i32 %49)
%322 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%323 = call i32 @putchar(i32 10)
%324 = load float, float* %25
%325 = fpext float %324 to double
%326 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %325)
%327 = call i32 @putchar(i32 10)
%328 = load float, float* %28
%329 = fpext float %328 to double
%330 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %329)
%331 = call i32 @putchar(i32 10)
%332 = load float, float* %31
%333 = fpext float %332 to double
%334 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %333)
%335 = call i32 @putchar(i32 10)
%336 = load float, float* %34
%337 = fpext float %336 to double
%338 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %337)
%339 = call i32 @putchar(i32 10)
%340 = load float, float* %37
%341 = fpext float %340 to double
%342 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %341)
%343 = call i32 @putchar(i32 10)
%344 = load float, float* %40
%345 = fpext float %344 to double
%346 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %345)
%347 = call i32 @putchar(i32 10)
%348 = load float, float* %43
%349 = fpext float %348 to double
%350 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %349)
%351 = call i32 @putchar(i32 10)
%352 = load float, float* %46
%353 = fpext float %352 to double
%354 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %353)
%355 = call i32 @putchar(i32 10)
%356 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%357 = call i32 @putchar(i32 10)
%358 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%359 = call i32 @putchar(i32 10)
%360 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%361 = call i32 @putchar(i32 10)
%362 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%363 = call i32 @putchar(i32 10)
br label %364
364: ; preds = %0, %364
%365 = phi i64 [ 0, %0 ], [ %373, %364 ]
%366 = call i32 (...) @rand()
%367 = srem i32 %366, 16
%368 = sitofp i32 %367 to float
%369 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 %365
store float %368, float* %369
%370 = fpext float %368 to double
%371 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %370)
%372 = call i32 @putchar(i32 10)
%373 = add nuw nsw i64 %365, 1
%374 = icmp eq i64 %373, 16
br i1 %374, label %375, label %364
375: ; preds = %364
%376 = sdiv i32 %11, %12
%377 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 0
%378 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 0
%379 = call i32 @fn_dirFDaubechiesWT2p2(float* %377, float* %378, i32 16, i32 %376)
%380 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%381 = call i32 @putchar(i32 10)
%382 = load float, float* %377
%383 = fpext float %382 to double
%384 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %383)
%385 = call i32 @putchar(i32 10)
%386 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 1
%387 = load float, float* %386
%388 = fpext float %387 to double
%389 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %388)
%390 = call i32 @putchar(i32 10)
%391 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 2
%392 = load float, float* %391
%393 = fpext float %392 to double
%394 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %393)
%395 = call i32 @putchar(i32 10)
%396 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 3
%397 = load float, float* %396
%398 = fpext float %397 to double
%399 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %398)
%400 = call i32 @putchar(i32 10)
%401 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 4
%402 = load float, float* %401
%403 = fpext float %402 to double
%404 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %403)
%405 = call i32 @putchar(i32 10)
%406 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 5
%407 = load float, float* %406
%408 = fpext float %407 to double
%409 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %408)
%410 = call i32 @putchar(i32 10)
%411 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 6
%412 = load float, float* %411
%413 = fpext float %412 to double
%414 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %413)
%415 = call i32 @putchar(i32 10)
%416 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 7
%417 = load float, float* %416
%418 = fpext float %417 to double
%419 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %418)
%420 = call i32 @putchar(i32 10)
%421 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 8
%422 = load float, float* %421
%423 = fpext float %422 to double
%424 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %423)
%425 = call i32 @putchar(i32 10)
%426 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 9
%427 = load float, float* %426
%428 = fpext float %427 to double
%429 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %428)
%430 = call i32 @putchar(i32 10)
%431 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 10
%432 = load float, float* %431
%433 = fpext float %432 to double
%434 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %433)
%435 = call i32 @putchar(i32 10)
%436 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 11
%437 = load float, float* %436
%438 = fpext float %437 to double
%439 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %438)
%440 = call i32 @putchar(i32 10)
%441 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 12
%442 = load float, float* %441
%443 = fpext float %442 to double
%444 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %443)
%445 = call i32 @putchar(i32 10)
%446 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 13
%447 = load float, float* %446
%448 = fpext float %447 to double
%449 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %448)
%450 = call i32 @putchar(i32 10)
%451 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 14
%452 = load float, float* %451
%453 = fpext float %452 to double
%454 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %453)
%455 = call i32 @putchar(i32 10)
%456 = getelementptr inbounds [16 x float], [16 x float]* %4, i64 0, i64 15
%457 = load float, float* %456
%458 = fpext float %457 to double
%459 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %458)
%460 = call i32 @putchar(i32 10)
%461 = call i32 @fn_invFDaubechiesWT2p2(float* %378, float* %377, i32 16, i32 %376)
%462 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%463 = call i32 @putchar(i32 10)
%464 = load float, float* %378
%465 = fpext float %464 to double
%466 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %465)
%467 = call i32 @putchar(i32 10)
%468 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 1
%469 = load float, float* %468
%470 = fpext float %469 to double
%471 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %470)
%472 = call i32 @putchar(i32 10)
%473 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 2
%474 = load float, float* %473
%475 = fpext float %474 to double
%476 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %475)
%477 = call i32 @putchar(i32 10)
%478 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 3
%479 = load float, float* %478
%480 = fpext float %479 to double
%481 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %480)
%482 = call i32 @putchar(i32 10)
%483 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 4
%484 = load float, float* %483
%485 = fpext float %484 to double
%486 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %485)
%487 = call i32 @putchar(i32 10)
%488 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 5
%489 = load float, float* %488
%490 = fpext float %489 to double
%491 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %490)
%492 = call i32 @putchar(i32 10)
%493 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 6
%494 = load float, float* %493
%495 = fpext float %494 to double
%496 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %495)
%497 = call i32 @putchar(i32 10)
%498 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 7
%499 = load float, float* %498
%500 = fpext float %499 to double
%501 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %500)
%502 = call i32 @putchar(i32 10)
%503 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 8
%504 = load float, float* %503
%505 = fpext float %504 to double
%506 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %505)
%507 = call i32 @putchar(i32 10)
%508 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 9
%509 = load float, float* %508
%510 = fpext float %509 to double
%511 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %510)
%512 = call i32 @putchar(i32 10)
%513 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 10
%514 = load float, float* %513
%515 = fpext float %514 to double
%516 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %515)
%517 = call i32 @putchar(i32 10)
%518 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 11
%519 = load float, float* %518
%520 = fpext float %519 to double
%521 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %520)
%522 = call i32 @putchar(i32 10)
%523 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 12
%524 = load float, float* %523
%525 = fpext float %524 to double
%526 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %525)
%527 = call i32 @putchar(i32 10)
%528 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 13
%529 = load float, float* %528
%530 = fpext float %529 to double
%531 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %530)
%532 = call i32 @putchar(i32 10)
%533 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 14
%534 = load float, float* %533
%535 = fpext float %534 to double
%536 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %535)
%537 = call i32 @putchar(i32 10)
%538 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 15
%539 = load float, float* %538
%540 = fpext float %539 to double
%541 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %540)
%542 = call i32 @putchar(i32 10)
%543 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%544 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%545 = call i32 @putchar(i32 10)
%546 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0))
%547 = call i32 @putchar(i32 10)
%548 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%549 = call i32 @putchar(i32 10)
%550 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%551 = call i32 @putchar(i32 10)
br label %552
552: ; preds = %375, %552
%553 = phi i64 [ 0, %375 ], [ %561, %552 ]
%554 = call i32 (...) @rand()
%555 = srem i32 %554, 16
%556 = sitofp i32 %555 to float
%557 = getelementptr inbounds [16 x float], [16 x float]* %3, i64 0, i64 %553
store float %556, float* %557
%558 = fpext float %556 to double
%559 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %558)
%560 = call i32 @putchar(i32 10)
%561 = add nuw nsw i64 %553, 1
%562 = icmp eq i64 %561, 16
br i1 %562, label %563, label %552
563: ; preds = %552
%564 = call i32 @fn_dirFDaubechiesWT2p2(float* %377, float* %378, i32 16, i32 3)
%565 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%566 = call i32 @putchar(i32 10)
%567 = load float, float* %377
%568 = fpext float %567 to double
%569 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %568)
%570 = call i32 @putchar(i32 10)
%571 = load float, float* %386
%572 = fpext float %571 to double
%573 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %572)
%574 = call i32 @putchar(i32 10)
%575 = load float, float* %391
%576 = fpext float %575 to double
%577 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %576)
%578 = call i32 @putchar(i32 10)
%579 = load float, float* %396
%580 = fpext float %579 to double
%581 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %580)
%582 = call i32 @putchar(i32 10)
%583 = load float, float* %401
%584 = fpext float %583 to double
%585 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %584)
%586 = call i32 @putchar(i32 10)
%587 = load float, float* %406
%588 = fpext float %587 to double
%589 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %588)
%590 = call i32 @putchar(i32 10)
%591 = load float, float* %411
%592 = fpext float %591 to double
%593 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %592)
%594 = call i32 @putchar(i32 10)
%595 = load float, float* %416
%596 = fpext float %595 to double
%597 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %596)
%598 = call i32 @putchar(i32 10)
%599 = load float, float* %421
%600 = fpext float %599 to double
%601 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %600)
%602 = call i32 @putchar(i32 10)
%603 = load float, float* %426
%604 = fpext float %603 to double
%605 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %604)
%606 = call i32 @putchar(i32 10)
%607 = load float, float* %431
%608 = fpext float %607 to double
%609 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %608)
%610 = call i32 @putchar(i32 10)
%611 = load float, float* %436
%612 = fpext float %611 to double
%613 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %612)
%614 = call i32 @putchar(i32 10)
%615 = load float, float* %441
%616 = fpext float %615 to double
%617 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %616)
%618 = call i32 @putchar(i32 10)
%619 = load float, float* %446
%620 = fpext float %619 to double
%621 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %620)
%622 = call i32 @putchar(i32 10)
%623 = load float, float* %451
%624 = fpext float %623 to double
%625 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %624)
%626 = call i32 @putchar(i32 10)
%627 = load float, float* %456
%628 = fpext float %627 to double
%629 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %628)
%630 = call i32 @putchar(i32 10)
%631 = call i32 @fn_invFDaubechiesWT2p2(float* %378, float* %377, i32 16, i32 3)
%632 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%633 = call i32 @putchar(i32 10)
%634 = load float, float* %378
%635 = fpext float %634 to double
%636 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %635)
%637 = call i32 @putchar(i32 10)
%638 = load float, float* %468
%639 = fpext float %638 to double
%640 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %639)
%641 = call i32 @putchar(i32 10)
%642 = load float, float* %473
%643 = fpext float %642 to double
%644 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %643)
%645 = call i32 @putchar(i32 10)
%646 = load float, float* %478
%647 = fpext float %646 to double
%648 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %647)
%649 = call i32 @putchar(i32 10)
%650 = load float, float* %483
%651 = fpext float %650 to double
%652 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %651)
%653 = call i32 @putchar(i32 10)
%654 = load float, float* %488
%655 = fpext float %654 to double
%656 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %655)
%657 = call i32 @putchar(i32 10)
%658 = load float, float* %493
%659 = fpext float %658 to double
%660 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %659)
%661 = call i32 @putchar(i32 10)
%662 = load float, float* %498
%663 = fpext float %662 to double
%664 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %663)
%665 = call i32 @putchar(i32 10)
%666 = load float, float* %503
%667 = fpext float %666 to double
%668 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %667)
%669 = call i32 @putchar(i32 10)
%670 = load float, float* %508
%671 = fpext float %670 to double
%672 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %671)
%673 = call i32 @putchar(i32 10)
%674 = load float, float* %513
%675 = fpext float %674 to double
%676 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %675)
%677 = call i32 @putchar(i32 10)
%678 = load float, float* %518
%679 = fpext float %678 to double
%680 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %679)
%681 = call i32 @putchar(i32 10)
%682 = load float, float* %523
%683 = fpext float %682 to double
%684 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %683)
%685 = call i32 @putchar(i32 10)
%686 = load float, float* %528
%687 = fpext float %686 to double
%688 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %687)
%689 = call i32 @putchar(i32 10)
%690 = load float, float* %533
%691 = fpext float %690 to double
%692 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %691)
%693 = call i32 @putchar(i32 10)
%694 = load float, float* %538
%695 = fpext float %694 to double
%696 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %695)
%697 = call i32 @putchar(i32 10)
%698 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%699 = call i32 @putchar(i32 10)
ret i32 0
}