#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_NoaK(float **, float *, int, int);
int /*<<< orphan*/ fn_dirFDaubechiesWT2p2oneStage_NoaK(float *, float *,
                                                       float *, int);
int /*<<< orphan*/ fn_invFDaubechiesWT2p2_NoaK(float *, float **, int, int);
int /*<<< orphan*/ fn_invFDaubechiesWT2p2oneStage_NoaK(float *, float *,
                                                       float *, int);
int /*<<< orphan*/ ifn_array2wk(float *, unsigned int, int, float **);
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];
  float *a4p2wki[4];
  unsigned int i_step = 3;
  float a_Rdata[32];
  float a_Rk[32];
  float *a4p2wkiR[6];
  unsigned int i_Rstep = 5;
  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_NoaK(a_k, &a_k[4], a_data, 8);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_k[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2oneStage_NoaK(a_data, a_k, &a_k[4], 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");
  }
  ifn_array2wk(a_k, 1, 8, a4p2wki);
  fn_dirFDaubechiesWT2p2_NoaK(a4p2wki, a_data, 8, 1);
  printf(" output: ");
  printf("\n");
  for (i = 0; i < 8; i++) {
    printf("%f ", a_k[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2_NoaK(a_data, a4p2wki, 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");
  ifn_array2wk(a_k, i_step, 8, a4p2wki);
  fn_dirFDaubechiesWT2p2_NoaK(a4p2wki, 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_NoaK(a_data, a4p2wki, 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 < 32; i++) {
    a_Rdata[i] = (float)(rand() % 32);
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  ifn_array2wk(a_Rk, i_Rstep, 32, a4p2wkiR);
  fn_dirFDaubechiesWT2p2_NoaK(a4p2wkiR, a_Rdata, 32, i_Rstep);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%f ", a_Rk[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2_NoaK(a_Rdata, a4p2wkiR, 32, i_Rstep);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 32; 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 < 32; i++) {
    a_Rdata[i] = (float)(rand() % 32);
    printf("%f ", a_Rdata[i]);
    printf("\n");
  }
  fn_dirFDaubechiesWT2p2_NoaK(a4p2wkiR, a_Rdata, 32, 3);
  printf(" output random: ");
  printf("\n");
  for (i = 0; i < 32; i++) {
    printf("%f ", a_Rk[i]);
    printf("\n");
  }
  fn_invFDaubechiesWT2p2_NoaK(a_Rdata, a4p2wkiR, 32, 3);
  printf(" input random, again: ");
  printf("\n");
  for (i = 0; i < 32; 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    $0x1c0,%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)
movl   $0x3,-0x74(%rbp)
movl   $0x5,-0x1b4(%rbp)
lea    0xe5a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe8e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe82(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe72(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe22(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe56(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe5d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe3a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xdea(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe1e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe31(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe02(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    12b0 <main+0x140>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe5f(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xdc7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    126e <main+0xfe>
lea    -0x50(%rbp),%rdi
lea    -0x50(%rbp),%rsi
add    $0x10,%rsi
lea    -0x30(%rbp),%rdx
mov    $0x8,%ecx
call   1070 <fn_dirFDaubechiesWT2p2oneStage_NoaK@plt>
lea    0xdbb(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xd83(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    132f <main+0x1bf>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xde0(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xd48(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12ed <main+0x17d>
lea    -0x30(%rbp),%rdi
lea    -0x50(%rbp),%rsi
lea    -0x50(%rbp),%rdx
add    $0x10,%rdx
mov    $0x8,%ecx
call   1030 <fn_invFDaubechiesWT2p2oneStage_NoaK@plt>
lea    0xd46(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xd04(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    13ae <main+0x23e>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd61(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xcc9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    136c <main+0x1fc>
lea    0xc6b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc9f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc93(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc83(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc33(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc67(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc17(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc4b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc81(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc2f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xbdf(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc13(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc26(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xbf7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    14bb <main+0x34b>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc54(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xbbc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1479 <main+0x309>
lea    -0x50(%rbp),%rdi
lea    -0x70(%rbp),%rcx
mov    $0x1,%esi
mov    $0x8,%edx
call   1080 <ifn_array2wk@plt>
lea    -0x70(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1050 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0xb9c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xb64(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    154e <main+0x3de>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xbc1(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xb29(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    150c <main+0x39c>
lea    -0x30(%rbp),%rdi
lea    -0x70(%rbp),%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1040 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0xb2a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xae8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    15ca <main+0x45a>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb45(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0xaad(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1588 <main+0x418>
lea    0xa4f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa83(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xac5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa67(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa17(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa4b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa5e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xa2f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1683 <main+0x513>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xa8c(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x9f4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1641 <main+0x4d1>
lea    0x9d8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x74(%rbp),%esi
lea    0xa24(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x9b9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x9ab(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    -0x50(%rbp),%rdi
mov    -0x74(%rbp),%esi
lea    -0x70(%rbp),%rcx
mov    $0x8,%edx
call   1080 <ifn_array2wk@plt>
lea    -0x70(%rbp),%rdi
lea    -0x30(%rbp),%rsi
mov    -0x74(%rbp),%ecx
mov    $0x8,%edx
call   1050 <fn_dirFDaubechiesWT2p2_NoaK@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    1731 <main+0x5c1>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9be(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x946(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16ef <main+0x57f>
movl   $0x4,-0x8(%rbp)
cmpl   $0x6,-0x8(%rbp)
jge    177a <main+0x60a>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x97e(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x8fd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1738 <main+0x5c8>
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x954(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x8ca(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x938(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x8a5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    -0x30(%rbp),%rdi
lea    -0x70(%rbp),%rsi
mov    -0x74(%rbp),%ecx
mov    $0x8,%edx
call   1040 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x8b6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x874(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    183e <main+0x6ce>
movslq -0x8(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x8d1(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x839(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    17fc <main+0x68c>
lea    0x7db(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x80f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x88f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x7f3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x7a3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x7d7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x865(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x7bb(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    191a <main+0x7aa>
mov    $0x0,%al
call   1090 <rand@plt>
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x100(%rbp,%rax,4)
ff ff
movslq -0x8(%rbp),%rax
movss  -0x100(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x7f5(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x75d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    18b5 <main+0x745>
lea    -0x180(%rbp),%rdi
mov    -0x1b4(%rbp),%esi
lea    -0x1b0(%rbp),%rcx
mov    $0x20,%edx
call   1080 <ifn_array2wk@plt>
lea    -0x1b0(%rbp),%rdi
lea    -0x100(%rbp),%rsi
mov    -0x1b4(%rbp),%ecx
mov    $0x20,%edx
call   1050 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0x7b1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x6f7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    19be <main+0x84e>
movslq -0x8(%rbp),%rax
movss  -0x180(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x751(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x6b9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1979 <main+0x809>
lea    -0x100(%rbp),%rdi
lea    -0x1b0(%rbp),%rsi
mov    -0x1b4(%rbp),%ecx
mov    $0x20,%edx
call   1040 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x73c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x671(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    1a44 <main+0x8d4>
movslq -0x8(%rbp),%rax
movss  -0x100(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x6cb(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x633(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    19ff <main+0x88f>
lea    0x6eb(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x5c7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x5fb(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x6df(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x5df(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x58f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x5c3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x651(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x5a7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    1b2e <main+0x9be>
mov    $0x0,%al
call   1090 <rand@plt>
mov    $0x20,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x100(%rbp,%rax,4)
ff ff
movslq -0x8(%rbp),%rax
movss  -0x100(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x5e1(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x549(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1ac9 <main+0x959>
lea    -0x1b0(%rbp),%rdi
lea    -0x100(%rbp),%rsi
mov    $0x20,%edx
mov    $0x3,%ecx
call   1050 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0x5bc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x502(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    1bb3 <main+0xa43>
movslq -0x8(%rbp),%rax
movss  -0x180(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x55c(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x4c4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1b6e <main+0x9fe>
lea    -0x100(%rbp),%rdi
lea    -0x1b0(%rbp),%rsi
mov    $0x20,%edx
mov    $0x3,%ecx
call   1040 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x548(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x47d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    1c38 <main+0xac8>
movslq -0x8(%rbp),%rax
movss  -0x100(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
lea    0x4d7(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x43f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1bf3 <main+0xa83>
lea    0x4f7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x415(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x1c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x198,%rsp
movaps 0x1ea8(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x1e8c(%rip),%xmm0
movaps %xmm0,(%rsp)
lea    0x1ea1(%rip),%r14
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1ec8(%rip),%r13
mov    %r13,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1eac(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1e8c(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1edd(%rip),%rbx
movsd  0x1dbb(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1da7(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d93(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbx,%rdi
movsd  0x1d64(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d63(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d4f(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x1d3b(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbx,%rdi
movsd  0x1cfc(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x30(%rsp),%rbp
lea    0x20(%rsp),%r12
mov    %rsp,%r15
mov    %r12,%rdi
mov    %rbp,%rsi
mov    %r15,%rdx
mov    $0x8,%ecx
call   1080 <fn_dirFDaubechiesWT2p2oneStage_NoaK@plt>
lea    0x1d76(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
mov    %r12,%rsi
mov    %rbp,%rdx
mov    $0x8,%ecx
call   1040 <fn_invFDaubechiesWT2p2oneStage_NoaK@plt>
lea    0x1c65(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r13,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1b1e(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1acf(%rip),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xf0(%rsp),%r13
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x8,%edx
mov    %r13,%rcx
call   1090 <ifn_array2wk@plt>
mov    %r13,%rdi
mov    %r15,%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1060 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0x199c(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
mov    %r13,%rsi
mov    $0x8,%edx
mov    $0x1,%ecx
call   1050 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x1889(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x178a(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x165e(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r12,%rdi
mov    $0x3,%esi
mov    $0x8,%edx
mov    %r13,%rcx
call   1090 <ifn_array2wk@plt>
mov    %r13,%rdi
mov    %r15,%rsi
mov    $0x8,%edx
mov    $0x3,%ecx
call   1060 <fn_dirFDaubechiesWT2p2_NoaK@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x1610(%rip),%rbp
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x2c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x159a(%rip),%rbp
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x34(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x1560(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x1547(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r15,%rdi
mov    %r13,%rsi
mov    $0x8,%edx
mov    $0x3,%ecx
call   1050 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x14c9(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x14(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1408(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x13ea(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
xor    %eax,%eax
call   10a0 <rand@plt>
lea    0x1f(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
and    $0xffffffe0,%ecx
sub    %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x70(%rsp,%rbp,4)
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    1d60 <main+0xbe0>
lea    0x110(%rsp),%rdi
lea    0x40(%rsp),%rbx
mov    $0x5,%esi
mov    $0x20,%edx
mov    %rbx,%rcx
call   1090 <ifn_array2wk@plt>
lea    0x70(%rsp),%rsi
mov    %rbx,%rdi
mov    $0x20,%edx
mov    $0x5,%ecx
call   1060 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0x135c(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1320(%rip),%rbx
nopw   0x0(%rax,%rax,1)
movss  0x110(%rsp,%rbp,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    1e00 <main+0xc80>
lea    0x70(%rsp),%rdi
lea    0x40(%rsp),%rsi
mov    $0x20,%edx
mov    $0x5,%ecx
call   1050 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x1302(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x12b5(%rip),%rbx
cs nopw 0x0(%rax,%rax,1)
nop
movss  0x70(%rsp,%rbp,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    1e70 <main+0xcf0>
lea    0x12c5(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x11a3(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x12ba(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1238(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x120e(%rip),%rbx
xor    %ebp,%ebp
xchg   %ax,%ax
xor    %eax,%eax
call   10a0 <rand@plt>
lea    0x1f(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
and    $0xffffffe0,%ecx
sub    %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x70(%rsp,%rbp,4)
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    1f10 <main+0xd90>
lea    0x40(%rsp),%rdi
lea    0x70(%rsp),%rsi
mov    $0x20,%edx
mov    $0x3,%ecx
call   1060 <fn_dirFDaubechiesWT2p2_NoaK@plt>
lea    0x11c9(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x118d(%rip),%rbx
nopl   (%rax)
movss  0x110(%rsp,%rbp,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    1f90 <main+0xe10>
lea    0x70(%rsp),%rdi
lea    0x40(%rsp),%rsi
mov    $0x20,%edx
mov    $0x3,%ecx
call   1050 <fn_invFDaubechiesWT2p2_NoaK@plt>
lea    0x1172(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1125(%rip),%rbx
cs nopw 0x0(%rax,%rax,1)
nop
movss  0x70(%rsp,%rbp,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x20,%rbp
jne    2000 <main+0xe80>
lea    0x1135(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x198,%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 [4 x float*]
%6 = alloca i32
%7 = alloca [32 x float]
%8 = alloca [32 x float]
%9 = alloca [6 x float*]
%10 = alloca i32
store i32 0, i32* %1
%11 = bitcast [8 x float]* %3 to i8*
store i32 3, i32* %6
store i32 5, i32* %10
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%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 ([12 x i8], [12 x i8]* @.str.3, 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 ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%23 = 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 %24
24: ; preds = %35, %0
%25 = load i32, i32* %2
%26 = icmp slt i32 %25, 8
br i1 %26, label %27, label %38
27: ; preds = %24
%28 = load i32, i32* %2
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %29
%31 = load float, float* %30
%32 = fpext float %31 to double
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %32)
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %35
35: ; preds = %27
%36 = load i32, i32* %2
%37 = add nsw i32 %36, 1
store i32 %37, i32* %2
br label %24
38: ; preds = %24
%39 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 0
%40 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 4
%41 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%42 = call i32 @fn_dirFDaubechiesWT2p2oneStage_NoaK(float* %39, float* %40, float* %41, i32 8)
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%44 = 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 %45
45: ; preds = %56, %38
%46 = load i32, i32* %2
%47 = icmp slt i32 %46, 8
br i1 %47, label %48, label %59
48: ; preds = %45
%49 = load i32, i32* %2
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 %50
%52 = load float, float* %51
%53 = fpext float %52 to double
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %53)
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %56
56: ; preds = %48
%57 = load i32, i32* %2
%58 = add nsw i32 %57, 1
store i32 %58, i32* %2
br label %45
59: ; preds = %45
%60 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%61 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 0
%62 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 4
%63 = call i32 @fn_invFDaubechiesWT2p2oneStage_NoaK(float* %60, float* %61, float* %62, i32 8)
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%65 = 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 %66
66: ; preds = %77, %59
%67 = load i32, i32* %2
%68 = icmp slt i32 %67, 8
br i1 %68, label %69, label %80
69: ; preds = %66
%70 = load i32, i32* %2
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %71
%73 = load float, float* %72
%74 = fpext float %73 to double
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %74)
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %77
77: ; preds = %69
%78 = load i32, i32* %2
%79 = add nsw i32 %78, 1
store i32 %79, i32* %2
br label %66
80: ; preds = %66
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, 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 ([66 x i8], [66 x i8]* @.str, 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 ([12 x i8], [12 x i8]* @.str.8, 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 ([66 x i8], [66 x i8]* @.str, 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 ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%94 = 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 %95
95: ; preds = %106, %80
%96 = load i32, i32* %2
%97 = icmp slt i32 %96, 8
br i1 %97, label %98, label %109
98: ; preds = %95
%99 = load i32, i32* %2
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %100
%102 = load float, float* %101
%103 = fpext float %102 to double
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %103)
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %106
106: ; preds = %98
%107 = load i32, i32* %2
%108 = add nsw i32 %107, 1
store i32 %108, i32* %2
br label %95
109: ; preds = %95
%110 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 0
%111 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%112 = call i32 @ifn_array2wk(float* %110, i32 1, i32 8, float** %111)
%113 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%114 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%115 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %113, float* %114, i32 8, i32 1)
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%117 = 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 %118
118: ; preds = %129, %109
%119 = load i32, i32* %2
%120 = icmp slt i32 %119, 8
br i1 %120, label %121, label %132
121: ; preds = %118
%122 = load i32, i32* %2
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 %123
%125 = load float, float* %124
%126 = fpext float %125 to double
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %126)
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %129
129: ; preds = %121
%130 = load i32, i32* %2
%131 = add nsw i32 %130, 1
store i32 %131, i32* %2
br label %118
132: ; preds = %118
%133 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%134 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%135 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %133, float** %134, i32 8, i32 1)
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%137 = 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 %138
138: ; preds = %149, %132
%139 = load i32, i32* %2
%140 = icmp slt i32 %139, 8
br i1 %140, label %141, label %152
141: ; preds = %138
%142 = load i32, i32* %2
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %143
%145 = load float, float* %144
%146 = fpext float %145 to double
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %146)
%148 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %149
149: ; preds = %141
%150 = load i32, i32* %2
%151 = add nsw i32 %150, 1
store i32 %151, i32* %2
br label %138
152: ; preds = %138
%153 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%156 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%158 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%160 = 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 %161
161: ; preds = %172, %152
%162 = load i32, i32* %2
%163 = icmp slt i32 %162, 8
br i1 %163, label %164, label %175
164: ; preds = %161
%165 = load i32, i32* %2
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %166
%168 = load float, float* %167
%169 = fpext float %168 to double
%170 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %169)
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %172
172: ; preds = %164
%173 = load i32, i32* %2
%174 = add nsw i32 %173, 1
store i32 %174, i32* %2
br label %161
175: ; preds = %161
%176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%177 = load i32, i32* %6
%178 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), i32 %177)
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%181 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 0
%182 = load i32, i32* %6
%183 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%184 = call i32 @ifn_array2wk(float* %181, i32 %182, i32 8, float** %183)
%185 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%186 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%187 = load i32, i32* %6
%188 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %185, float* %186, i32 8, i32 %187)
store i32 0, i32* %2
br label %189
189: ; preds = %200, %175
%190 = load i32, i32* %2
%191 = icmp slt i32 %190, 4
br i1 %191, label %192, label %203
192: ; preds = %189
%193 = load i32, i32* %2
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 %194
%196 = load float, float* %195
%197 = fpext float %196 to double
%198 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %197)
%199 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %200
200: ; preds = %192
%201 = load i32, i32* %2
%202 = add nsw i32 %201, 1
store i32 %202, i32* %2
br label %189
203: ; preds = %189
store i32 4, i32* %2
br label %204
204: ; preds = %215, %203
%205 = load i32, i32* %2
%206 = icmp slt i32 %205, 6
br i1 %206, label %207, label %218
207: ; preds = %204
%208 = load i32, i32* %2
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 %209
%211 = load float, float* %210
%212 = fpext float %211 to double
%213 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), double %212)
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %215
215: ; preds = %207
%216 = load i32, i32* %2
%217 = add nsw i32 %216, 1
store i32 %217, i32* %2
br label %204
218: ; preds = %204
%219 = getelementptr inbounds [8 x float], [8 x float]* %4, i64 0, i64 6
%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.13, 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]* %4, i64 0, i64 7
%225 = load float, float* %224
%226 = fpext float %225 to double
%227 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), double %226)
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%229 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 0
%230 = getelementptr inbounds [4 x float*], [4 x float*]* %5, i64 0, i64 0
%231 = load i32, i32* %6
%232 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %229, float** %230, i32 8, i32 %231)
%233 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%234 = 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 %235
235: ; preds = %246, %218
%236 = load i32, i32* %2
%237 = icmp slt i32 %236, 8
br i1 %237, label %238, label %249
238: ; preds = %235
%239 = load i32, i32* %2
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [8 x float], [8 x float]* %3, i64 0, i64 %240
%242 = load float, float* %241
%243 = fpext float %242 to double
%244 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %243)
%245 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %246
246: ; preds = %238
%247 = load i32, i32* %2
%248 = add nsw i32 %247, 1
store i32 %248, i32* %2
br label %235
249: ; preds = %235
%250 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%252 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%253 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%254 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%255 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%256 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%257 = 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 %258
258: ; preds = %275, %249
%259 = load i32, i32* %2
%260 = icmp slt i32 %259, 32
br i1 %260, label %261, label %278
261: ; preds = %258
%262 = call i32 (...) @rand()
%263 = srem i32 %262, 32
%264 = sitofp i32 %263 to float
%265 = load i32, i32* %2
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %266
store float %264, float* %267
%268 = load i32, i32* %2
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %269
%271 = load float, float* %270
%272 = fpext float %271 to double
%273 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %272)
%274 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %275
275: ; preds = %261
%276 = load i32, i32* %2
%277 = add nsw i32 %276, 1
store i32 %277, i32* %2
br label %258
278: ; preds = %258
%279 = getelementptr inbounds [32 x float], [32 x float]* %8, i64 0, i64 0
%280 = load i32, i32* %10
%281 = getelementptr inbounds [6 x float*], [6 x float*]* %9, i64 0, i64 0
%282 = call i32 @ifn_array2wk(float* %279, i32 %280, i32 32, float** %281)
%283 = getelementptr inbounds [6 x float*], [6 x float*]* %9, i64 0, i64 0
%284 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 0
%285 = load i32, i32* %10
%286 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %283, float* %284, i32 32, i32 %285)
%287 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%288 = 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 %289
289: ; preds = %300, %278
%290 = load i32, i32* %2
%291 = icmp slt i32 %290, 32
br i1 %291, label %292, label %303
292: ; preds = %289
%293 = load i32, i32* %2
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds [32 x float], [32 x float]* %8, i64 0, i64 %294
%296 = load float, float* %295
%297 = fpext float %296 to double
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %297)
%299 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %300
300: ; preds = %292
%301 = load i32, i32* %2
%302 = add nsw i32 %301, 1
store i32 %302, i32* %2
br label %289
303: ; preds = %289
%304 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 0
%305 = getelementptr inbounds [6 x float*], [6 x float*]* %9, i64 0, i64 0
%306 = load i32, i32* %10
%307 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %304, float** %305, i32 32, i32 %306)
%308 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%309 = 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 %310
310: ; preds = %321, %303
%311 = load i32, i32* %2
%312 = icmp slt i32 %311, 32
br i1 %312, label %313, label %324
313: ; preds = %310
%314 = load i32, i32* %2
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %315
%317 = load float, float* %316
%318 = fpext float %317 to double
%319 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %318)
%320 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %321
321: ; preds = %313
%322 = load i32, i32* %2
%323 = add nsw i32 %322, 1
store i32 %323, i32* %2
br label %310
324: ; preds = %310
%325 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%326 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%327 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%328 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0))
%329 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%330 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%331 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%332 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%333 = 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 %334
334: ; preds = %351, %324
%335 = load i32, i32* %2
%336 = icmp slt i32 %335, 32
br i1 %336, label %337, label %354
337: ; preds = %334
%338 = call i32 (...) @rand()
%339 = srem i32 %338, 32
%340 = sitofp i32 %339 to float
%341 = load i32, i32* %2
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %342
store float %340, float* %343
%344 = load i32, i32* %2
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %345
%347 = load float, float* %346
%348 = fpext float %347 to double
%349 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %348)
%350 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %351
351: ; preds = %337
%352 = load i32, i32* %2
%353 = add nsw i32 %352, 1
store i32 %353, i32* %2
br label %334
354: ; preds = %334
%355 = getelementptr inbounds [6 x float*], [6 x float*]* %9, i64 0, i64 0
%356 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 0
%357 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %355, float* %356, i32 32, i32 3)
%358 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%359 = 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 %360
360: ; preds = %371, %354
%361 = load i32, i32* %2
%362 = icmp slt i32 %361, 32
br i1 %362, label %363, label %374
363: ; preds = %360
%364 = load i32, i32* %2
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds [32 x float], [32 x float]* %8, i64 0, i64 %365
%367 = load float, float* %366
%368 = fpext float %367 to double
%369 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %368)
%370 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %371
371: ; preds = %363
%372 = load i32, i32* %2
%373 = add nsw i32 %372, 1
store i32 %373, i32* %2
br label %360
374: ; preds = %360
%375 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 0
%376 = getelementptr inbounds [6 x float*], [6 x float*]* %9, i64 0, i64 0
%377 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %375, float** %376, i32 32, i32 3)
%378 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%379 = 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 %380
380: ; preds = %391, %374
%381 = load i32, i32* %2
%382 = icmp slt i32 %381, 32
br i1 %382, label %383, label %394
383: ; preds = %380
%384 = load i32, i32* %2
%385 = sext i32 %384 to i64
%386 = getelementptr inbounds [32 x float], [32 x float]* %7, i64 0, i64 %385
%387 = load float, float* %386
%388 = fpext float %387 to double
%389 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %388)
%390 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %391
391: ; preds = %383
%392 = load i32, i32* %2
%393 = add nsw i32 %392, 1
store i32 %393, i32* %2
br label %380
394: ; preds = %380
%395 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%396 = 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 [4 x float*]
%4 = alloca [32 x float]
%5 = alloca [32 x float]
%6 = alloca [6 x float*]
%7 = bitcast [8 x float]* %1 to i8*
%8 = bitcast [8 x float]* %2 to i8*
%9 = bitcast [4 x float*]* %3 to i8*
%10 = bitcast [32 x float]* %4 to i8*
%11 = bitcast [32 x float]* %5 to i8*
%12 = bitcast [6 x float*]* %6 to i8*
%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 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 0
%50 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 4
%51 = call i32 @fn_dirFDaubechiesWT2p2oneStage_NoaK(float* %49, 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* %49
%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 = load float, float* %50
%74 = fpext float %73 to double
%75 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %74)
%76 = call i32 @putchar(i32 10)
%77 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 5
%78 = load float, float* %77
%79 = fpext float %78 to double
%80 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %79)
%81 = call i32 @putchar(i32 10)
%82 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 6
%83 = load float, float* %82
%84 = fpext float %83 to double
%85 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %84)
%86 = call i32 @putchar(i32 10)
%87 = getelementptr inbounds [8 x float], [8 x float]* %2, i64 0, i64 7
%88 = load float, float* %87
%89 = fpext float %88 to double
%90 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %89)
%91 = call i32 @putchar(i32 10)
%92 = call i32 @fn_invFDaubechiesWT2p2oneStage_NoaK(float* %25, float* %49, float* %50, i32 8)
%93 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%94 = call i32 @putchar(i32 10)
%95 = load float, float* %25
%96 = fpext float %95 to double
%97 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %96)
%98 = call i32 @putchar(i32 10)
%99 = load float, float* %28
%100 = fpext float %99 to double
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %100)
%102 = call i32 @putchar(i32 10)
%103 = load float, float* %31
%104 = fpext float %103 to double
%105 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %104)
%106 = call i32 @putchar(i32 10)
%107 = load float, float* %34
%108 = fpext float %107 to double
%109 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %108)
%110 = call i32 @putchar(i32 10)
%111 = load float, float* %37
%112 = fpext float %111 to double
%113 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %112)
%114 = call i32 @putchar(i32 10)
%115 = load float, float* %40
%116 = fpext float %115 to double
%117 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %116)
%118 = call i32 @putchar(i32 10)
%119 = load float, float* %43
%120 = fpext float %119 to double
%121 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %120)
%122 = call i32 @putchar(i32 10)
%123 = load float, float* %46
%124 = fpext float %123 to double
%125 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %124)
%126 = call i32 @putchar(i32 10)
%127 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%128 = call i32 @putchar(i32 10)
%129 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
%130 = call i32 @putchar(i32 10)
%131 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%132 = call i32 @putchar(i32 10)
%133 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%134 = call i32 @putchar(i32 10)
%135 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%136 = call i32 @putchar(i32 10)
%137 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%138 = call i32 @putchar(i32 10)
%139 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%140 = call i32 @putchar(i32 10)
%141 = load float, float* %25
%142 = fpext float %141 to double
%143 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %142)
%144 = call i32 @putchar(i32 10)
%145 = load float, float* %28
%146 = fpext float %145 to double
%147 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %146)
%148 = call i32 @putchar(i32 10)
%149 = load float, float* %31
%150 = fpext float %149 to double
%151 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %150)
%152 = call i32 @putchar(i32 10)
%153 = load float, float* %34
%154 = fpext float %153 to double
%155 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %154)
%156 = call i32 @putchar(i32 10)
%157 = load float, float* %37
%158 = fpext float %157 to double
%159 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %158)
%160 = call i32 @putchar(i32 10)
%161 = load float, float* %40
%162 = fpext float %161 to double
%163 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %162)
%164 = call i32 @putchar(i32 10)
%165 = load float, float* %43
%166 = fpext float %165 to double
%167 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %166)
%168 = call i32 @putchar(i32 10)
%169 = load float, float* %46
%170 = fpext float %169 to double
%171 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %170)
%172 = call i32 @putchar(i32 10)
%173 = getelementptr inbounds [4 x float*], [4 x float*]* %3, i64 0, i64 0
%174 = call i32 @ifn_array2wk(float* %49, i32 1, i32 8, float** %173)
%175 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %173, float* %25, i32 8, i32 1)
%176 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%177 = call i32 @putchar(i32 10)
%178 = load float, float* %49
%179 = fpext float %178 to double
%180 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %179)
%181 = call i32 @putchar(i32 10)
%182 = load float, float* %58
%183 = fpext float %182 to double
%184 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %183)
%185 = call i32 @putchar(i32 10)
%186 = load float, float* %63
%187 = fpext float %186 to double
%188 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %187)
%189 = call i32 @putchar(i32 10)
%190 = load float, float* %68
%191 = fpext float %190 to double
%192 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %191)
%193 = call i32 @putchar(i32 10)
%194 = load float, float* %50
%195 = fpext float %194 to double
%196 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %195)
%197 = call i32 @putchar(i32 10)
%198 = load float, float* %77
%199 = fpext float %198 to double
%200 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %199)
%201 = call i32 @putchar(i32 10)
%202 = load float, float* %82
%203 = fpext float %202 to double
%204 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %203)
%205 = call i32 @putchar(i32 10)
%206 = load float, float* %87
%207 = fpext float %206 to double
%208 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %207)
%209 = call i32 @putchar(i32 10)
%210 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %25, float** %173, i32 8, i32 1)
%211 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%212 = call i32 @putchar(i32 10)
%213 = load float, float* %25
%214 = fpext float %213 to double
%215 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %214)
%216 = call i32 @putchar(i32 10)
%217 = load float, float* %28
%218 = fpext float %217 to double
%219 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %218)
%220 = call i32 @putchar(i32 10)
%221 = load float, float* %31
%222 = fpext float %221 to double
%223 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %222)
%224 = call i32 @putchar(i32 10)
%225 = load float, float* %34
%226 = fpext float %225 to double
%227 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %226)
%228 = call i32 @putchar(i32 10)
%229 = load float, float* %37
%230 = fpext float %229 to double
%231 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %230)
%232 = call i32 @putchar(i32 10)
%233 = load float, float* %40
%234 = fpext float %233 to double
%235 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %234)
%236 = call i32 @putchar(i32 10)
%237 = load float, float* %43
%238 = fpext float %237 to double
%239 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %238)
%240 = call i32 @putchar(i32 10)
%241 = load float, float* %46
%242 = fpext float %241 to double
%243 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %242)
%244 = call i32 @putchar(i32 10)
%245 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%246 = call i32 @putchar(i32 10)
%247 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%248 = call i32 @putchar(i32 10)
%249 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%250 = call i32 @putchar(i32 10)
%251 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%252 = call i32 @putchar(i32 10)
%253 = load float, float* %25
%254 = fpext float %253 to double
%255 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %254)
%256 = call i32 @putchar(i32 10)
%257 = load float, float* %28
%258 = fpext float %257 to double
%259 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %258)
%260 = call i32 @putchar(i32 10)
%261 = load float, float* %31
%262 = fpext float %261 to double
%263 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %262)
%264 = call i32 @putchar(i32 10)
%265 = load float, float* %34
%266 = fpext float %265 to double
%267 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %266)
%268 = call i32 @putchar(i32 10)
%269 = load float, float* %37
%270 = fpext float %269 to double
%271 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %270)
%272 = call i32 @putchar(i32 10)
%273 = load float, float* %40
%274 = fpext float %273 to double
%275 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %274)
%276 = call i32 @putchar(i32 10)
%277 = load float, float* %43
%278 = fpext float %277 to double
%279 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %278)
%280 = call i32 @putchar(i32 10)
%281 = load float, float* %46
%282 = fpext float %281 to double
%283 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %282)
%284 = call i32 @putchar(i32 10)
%285 = call i32 @putchar(i32 10)
%286 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i64 0, i64 0), i32 3)
%287 = call i32 @putchar(i32 10)
%288 = call i32 @putchar(i32 10)
%289 = call i32 @ifn_array2wk(float* %49, i32 3, i32 8, float** %173)
%290 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %173, float* %25, i32 8, i32 3)
%291 = load float, float* %49
%292 = fpext float %291 to double
%293 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %292)
%294 = call i32 @putchar(i32 10)
%295 = load float, float* %58
%296 = fpext float %295 to double
%297 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %296)
%298 = call i32 @putchar(i32 10)
%299 = load float, float* %63
%300 = fpext float %299 to double
%301 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %300)
%302 = call i32 @putchar(i32 10)
%303 = load float, float* %68
%304 = fpext float %303 to double
%305 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double %304)
%306 = call i32 @putchar(i32 10)
%307 = load float, float* %50
%308 = fpext float %307 to double
%309 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), double %308)
%310 = call i32 @putchar(i32 10)
%311 = load float, float* %77
%312 = fpext float %311 to double
%313 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), double %312)
%314 = call i32 @putchar(i32 10)
%315 = load float, float* %82
%316 = fpext float %315 to double
%317 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), double %316)
%318 = call i32 @putchar(i32 10)
%319 = load float, float* %87
%320 = fpext float %319 to double
%321 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), double %320)
%322 = call i32 @putchar(i32 10)
%323 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %25, float** %173, i32 8, i32 3)
%324 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%325 = call i32 @putchar(i32 10)
%326 = load float, float* %25
%327 = fpext float %326 to double
%328 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %327)
%329 = call i32 @putchar(i32 10)
%330 = load float, float* %28
%331 = fpext float %330 to double
%332 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %331)
%333 = call i32 @putchar(i32 10)
%334 = load float, float* %31
%335 = fpext float %334 to double
%336 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %335)
%337 = call i32 @putchar(i32 10)
%338 = load float, float* %34
%339 = fpext float %338 to double
%340 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %339)
%341 = call i32 @putchar(i32 10)
%342 = load float, float* %37
%343 = fpext float %342 to double
%344 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %343)
%345 = call i32 @putchar(i32 10)
%346 = load float, float* %40
%347 = fpext float %346 to double
%348 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %347)
%349 = call i32 @putchar(i32 10)
%350 = load float, float* %43
%351 = fpext float %350 to double
%352 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %351)
%353 = call i32 @putchar(i32 10)
%354 = load float, float* %46
%355 = fpext float %354 to double
%356 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %355)
%357 = call i32 @putchar(i32 10)
%358 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%359 = call i32 @putchar(i32 10)
%360 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%361 = call i32 @putchar(i32 10)
%362 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%363 = call i32 @putchar(i32 10)
%364 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%365 = call i32 @putchar(i32 10)
br label %366
366: ; preds = %0, %366
%367 = phi i64 [ 0, %0 ], [ %375, %366 ]
%368 = call i32 (...) @rand()
%369 = srem i32 %368, 32
%370 = sitofp i32 %369 to float
%371 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %367
store float %370, float* %371
%372 = fpext float %370 to double
%373 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %372)
%374 = call i32 @putchar(i32 10)
%375 = add nuw nsw i64 %367, 1
%376 = icmp eq i64 %375, 32
br i1 %376, label %377, label %366
377: ; preds = %366
%378 = getelementptr inbounds [32 x float], [32 x float]* %5, i64 0, i64 0
%379 = getelementptr inbounds [6 x float*], [6 x float*]* %6, i64 0, i64 0
%380 = call i32 @ifn_array2wk(float* %378, i32 5, i32 32, float** %379)
%381 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 0
%382 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %379, float* %381, i32 32, i32 5)
%383 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%384 = call i32 @putchar(i32 10)
br label %385
385: ; preds = %377, %385
%386 = phi i64 [ 0, %377 ], [ %392, %385 ]
%387 = getelementptr inbounds [32 x float], [32 x float]* %5, i64 0, i64 %386
%388 = load float, float* %387
%389 = fpext float %388 to double
%390 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %389)
%391 = call i32 @putchar(i32 10)
%392 = add nuw nsw i64 %386, 1
%393 = icmp eq i64 %392, 32
br i1 %393, label %394, label %385
394: ; preds = %385
%395 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %381, float** %379, i32 32, i32 5)
%396 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%397 = call i32 @putchar(i32 10)
br label %398
398: ; preds = %394, %398
%399 = phi i64 [ 0, %394 ], [ %405, %398 ]
%400 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %399
%401 = load float, float* %400
%402 = fpext float %401 to double
%403 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %402)
%404 = call i32 @putchar(i32 10)
%405 = add nuw nsw i64 %399, 1
%406 = icmp eq i64 %405, 32
br i1 %406, label %407, label %398
407: ; preds = %398
%408 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%409 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%410 = call i32 @putchar(i32 10)
%411 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0))
%412 = call i32 @putchar(i32 10)
%413 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0))
%414 = call i32 @putchar(i32 10)
%415 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.16, i64 0, i64 0))
%416 = call i32 @putchar(i32 10)
br label %417
417: ; preds = %407, %417
%418 = phi i64 [ 0, %407 ], [ %426, %417 ]
%419 = call i32 (...) @rand()
%420 = srem i32 %419, 32
%421 = sitofp i32 %420 to float
%422 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %418
store float %421, float* %422
%423 = fpext float %421 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 = add nuw nsw i64 %418, 1
%427 = icmp eq i64 %426, 32
br i1 %427, label %428, label %417
428: ; preds = %417
%429 = call i32 @fn_dirFDaubechiesWT2p2_NoaK(float** %379, float* %381, i32 32, i32 3)
%430 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%431 = call i32 @putchar(i32 10)
br label %432
432: ; preds = %428, %432
%433 = phi i64 [ 0, %428 ], [ %439, %432 ]
%434 = getelementptr inbounds [32 x float], [32 x float]* %5, i64 0, i64 %433
%435 = load float, float* %434
%436 = fpext float %435 to double
%437 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %436)
%438 = call i32 @putchar(i32 10)
%439 = add nuw nsw i64 %433, 1
%440 = icmp eq i64 %439, 32
br i1 %440, label %441, label %432
441: ; preds = %432
%442 = call i32 @fn_invFDaubechiesWT2p2_NoaK(float* %381, float** %379, i32 32, i32 3)
%443 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.18, i64 0, i64 0))
%444 = call i32 @putchar(i32 10)
br label %445
445: ; preds = %441, %445
%446 = phi i64 [ 0, %441 ], [ %452, %445 ]
%447 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %446
%448 = load float, float* %447
%449 = fpext float %448 to double
%450 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), double %449)
%451 = call i32 @putchar(i32 10)
%452 = add nuw nsw i64 %446, 1
%453 = icmp eq i64 %452, 32
br i1 %453, label %454, label %445
454: ; preds = %445
%455 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%456 = call i32 @putchar(i32 10)
ret i32 0
}