#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*/ fprintf(int /*<<< orphan*/, char *, int);
int /*<<< orphan*/ fwt97(double *, int);
int /*<<< orphan*/ iwt97(double *, int);
int /*<<< orphan*/ stderr;
int main() {
  double x[16], y[16];
  int i, j;
  for (j = 0; j < 50; j++) {
    for (i = 0; i < 16; i++) {
      x[i] = 5 + i + 0.4 * i * i - 0.02 * i * i * i;
      y[i] = x[i];
    }
    fwt97(x, 16);
    iwt97(x, 16);
    for (i = 0; i < 16; i++) {
      if (x[i] < y[i] * 0.99 || x[i] > y[i] * 1.01)
        return -1;
    }
    fprintf(stderr, "done iteration %d\n", j);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x118(%rbp)
cmpl   $0x32,-0x118(%rbp)
jge    131d <main+0x1ed>
movl   $0x0,-0x114(%rbp)
cmpl   $0x10,-0x114(%rbp)
jge    122c <main+0xfc>
mov    -0x114(%rbp),%eax
add    $0x5,%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x114(%rbp),%xmm2
ff
movsd  0xe8b(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvtsi2sdl -0x114(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
cvtsi2sdl -0x114(%rbp),%xmm2
ff
movsd  0xe5f(%rip),%xmm0
mulsd  %xmm2,%xmm0
cvtsi2sdl -0x114(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
cvtsi2sdl -0x114(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x114(%rbp),%rax
movsd  %xmm0,-0x90(%rbp,%rax,8)
ff ff
movslq -0x114(%rbp),%rax
movsd  -0x90(%rbp,%rax,8),%xmm0
ff ff
movslq -0x114(%rbp),%rax
movsd  %xmm0,-0x110(%rbp,%rax,8)
ff ff
mov    -0x114(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    1163 <main+0x33>
lea    -0x90(%rbp),%rdi
mov    $0x10,%esi
call   1050 <fwt97@plt>
lea    -0x90(%rbp),%rdi
mov    $0x10,%esi
call   1030 <iwt97@plt>
movl   $0x0,-0x114(%rbp)
cmpl   $0x10,-0x114(%rbp)
jge    12ee <main+0x1be>
movslq -0x114(%rbp),%rax
movsd  -0x90(%rbp,%rax,8),%xmm1
ff ff
movslq -0x114(%rbp),%rax
movsd  0xd7c(%rip),%xmm0
mulsd  -0x110(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
ja     12c9 <main+0x199>
movslq -0x114(%rbp),%rax
movsd  -0x90(%rbp,%rax,8),%xmm0
ff ff
movslq -0x114(%rbp),%rax
movsd  0xd52(%rip),%xmm1
mulsd  -0x110(%rbp,%rax,8),%xmm1
ff ff
ucomisd %xmm1,%xmm0
jbe    12d5 <main+0x1a5>
movl   $0xffffffff,-0x4(%rbp)
jmp    1324 <main+0x1f4>
jmp    12da <main+0x1aa>
mov    -0x114(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    1258 <main+0x128>
mov    0x2ceb(%rip),%rax
mov    (%rax),%edi
mov    -0x118(%rbp),%edx
lea    0xd1c(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x118(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x118(%rbp)
jmp    114c <main+0x1c>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x108,%rsp
xor    %ebx,%ebx
movaps 0xeb9(%rip),%xmm0
movaps 0xec2(%rip),%xmm1
movaps 0xecb(%rip),%xmm2
movaps 0xed4(%rip),%xmm3
movaps 0xedd(%rip),%xmm4
movaps 0xee6(%rip),%xmm5
movaps 0xeef(%rip),%xmm6
movaps 0xef8(%rip),%xmm7
mov    %rsp,%r14
mov    0x2e5e(%rip),%r12
lea    0xf07(%rip),%r15
movaps %xmm0,(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm1,0x10(%rsp)
movaps %xmm1,0x90(%rsp)
movaps %xmm2,0x20(%rsp)
movaps %xmm2,0xa0(%rsp)
movaps %xmm3,0x30(%rsp)
movaps %xmm3,0xb0(%rsp)
movaps %xmm4,0x40(%rsp)
movaps %xmm4,0xc0(%rsp)
movaps %xmm5,0x50(%rsp)
movaps %xmm5,0xd0(%rsp)
movaps %xmm6,0x60(%rsp)
movaps %xmm6,0xe0(%rsp)
movaps %xmm7,0x70(%rsp)
movaps %xmm7,0xf0(%rsp)
mov    %r14,%rdi
mov    $0x10,%esi
call   1050 <fwt97@plt>
mov    %r14,%rdi
mov    $0x10,%esi
call   1030 <iwt97@plt>
movsd  (%rsp),%xmm0
movsd  0x80(%rsp),%xmm1
movapd %xmm1,%xmm2
movsd  0xe5c(%rip),%xmm3
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
movsd  0xe54(%rip),%xmm2
mulsd  %xmm2,%xmm1
mov    $0xffffffff,%eax
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movapd %xmm2,%xmm4
movsd  0x8(%rsp),%xmm0
movsd  0x88(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x10(%rsp),%xmm0
movsd  0x90(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x18(%rsp),%xmm0
movsd  0x98(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x20(%rsp),%xmm0
movsd  0xa0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x28(%rsp),%xmm0
movsd  0xa8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x30(%rsp),%xmm0
movsd  0xb0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x38(%rsp),%xmm0
movsd  0xb8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x40(%rsp),%xmm0
movsd  0xc0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x48(%rsp),%xmm0
movsd  0xc8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x50(%rsp),%xmm0
movsd  0xd0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x58(%rsp),%xmm0
movsd  0xd8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x60(%rsp),%xmm0
movsd  0xe0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x68(%rsp),%xmm0
movsd  0xe8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x70(%rsp),%xmm0
movsd  0xf0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
movsd  0x78(%rsp),%xmm0
movsd  0xf8(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm0,%xmm2
mulsd  %xmm4,%xmm1
ja     155a <main+0x42a>
ucomisd %xmm1,%xmm0
ja     155a <main+0x42a>
mov    (%r12),%edi
mov    %r15,%rsi
mov    %ebx,%edx
call   1040 <fprintf@plt>
add    $0x1,%ebx
cmp    $0x32,%ebx
movaps 0xadf(%rip),%xmm0
movaps 0xae8(%rip),%xmm1
movaps 0xaf1(%rip),%xmm2
movaps 0xafa(%rip),%xmm3
movaps 0xb03(%rip),%xmm4
movaps 0xb0c(%rip),%xmm5
movaps 0xb15(%rip),%xmm6
movaps 0xb1e(%rip),%xmm7
jne    1189 <main+0x59>
xor    %eax,%eax
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [19 x i8] c"done iteration %d\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [16 x double]
%3 = alloca [16 x double]
%4 = alloca i32
%5 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %5
br label %6
6: ; preds = %85, %0
%7 = load i32, i32* %5
%8 = icmp slt i32 %7, 50
br i1 %8, label %9, label %88
9: ; preds = %6
store i32 0, i32* %4
br label %10
10: ; preds = %43, %9
%11 = load i32, i32* %4
%12 = icmp slt i32 %11, 16
br i1 %12, label %13, label %46
13: ; preds = %10
%14 = load i32, i32* %4
%15 = add nsw i32 5, %14
%16 = sitofp i32 %15 to double
%17 = load i32, i32* %4
%18 = sitofp i32 %17 to double
%19 = fmul double 4.000000e-01, %18
%20 = load i32, i32* %4
%21 = sitofp i32 %20 to double
%22 = call double @llvm.fmuladd.f64(double %19, double %21, double %16)
%23 = load i32, i32* %4
%24 = sitofp i32 %23 to double
%25 = fmul double 2.000000e-02, %24
%26 = load i32, i32* %4
%27 = sitofp i32 %26 to double
%28 = fmul double %25, %27
%29 = load i32, i32* %4
%30 = sitofp i32 %29 to double
%31 = fneg double %28
%32 = call double @llvm.fmuladd.f64(double %31, double %30, double %22)
%33 = load i32, i32* %4
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 %34
store double %32, double* %35
%36 = load i32, i32* %4
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 %37
%39 = load double, double* %38
%40 = load i32, i32* %4
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %41
store double %39, double* %42
br label %43
43: ; preds = %13
%44 = load i32, i32* %4
%45 = add nsw i32 %44, 1
store i32 %45, i32* %4
br label %10
46: ; preds = %10
%47 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 0
%48 = call i32 @fwt97(double* %47, i32 16)
%49 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 0
%50 = call i32 @iwt97(double* %49, i32 16)
store i32 0, i32* %4
br label %51
51: ; preds = %78, %46
%52 = load i32, i32* %4
%53 = icmp slt i32 %52, 16
br i1 %53, label %54, label %81
54: ; preds = %51
%55 = load i32, i32* %4
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 %56
%58 = load double, double* %57
%59 = load i32, i32* %4
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %60
%62 = load double, double* %61
%63 = fmul double %62, 0x3FEFAE147AE147AE
%64 = fcmp olt double %58, %63
br i1 %64, label %76, label %65
65: ; preds = %54
%66 = load i32, i32* %4
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 %67
%69 = load double, double* %68
%70 = load i32, i32* %4
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [16 x double], [16 x double]* %3, i64 0, i64 %71
%73 = load double, double* %72
%74 = fmul double %73, 1.010000e+00
%75 = fcmp ogt double %69, %74
br i1 %75, label %76, label %77
76: ; preds = %65, %54
store i32 -1, i32* %1
br label %89
77: ; preds = %65
br label %78
78: ; preds = %77
%79 = load i32, i32* %4
%80 = add nsw i32 %79, 1
store i32 %80, i32* %4
br label %51
81: ; preds = %51
%82 = load i32, i32* @stderr
%83 = load i32, i32* %5
%84 = call i32 @fprintf(i32 %82, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %83)
br label %85
85: ; preds = %81
%86 = load i32, i32* %5
%87 = add nsw i32 %86, 1
store i32 %87, i32* %5
br label %6
88: ; preds = %6
store i32 0, i32* %1
br label %89
89: ; preds = %88, %76
%90 = load i32, i32* %1
ret i32 %90
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [19 x i8] c"done iteration %d\0A\00"
define i32 @main() {
%1 = alloca [16 x double]
%2 = alloca [16 x double]
%3 = bitcast [16 x double]* %1 to i8*
%4 = bitcast [16 x double]* %2 to i8*
%5 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 0
%6 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 0
%7 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 1
%8 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 1
%9 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 2
%10 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 2
%11 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 3
%12 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 3
%13 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 4
%14 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 4
%15 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 5
%16 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 5
%17 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 6
%18 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 6
%19 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 7
%20 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 7
%21 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 8
%22 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 8
%23 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 9
%24 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 9
%25 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 10
%26 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 10
%27 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 11
%28 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 11
%29 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 12
%30 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 12
%31 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 13
%32 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 13
%33 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 14
%34 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 14
%35 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 15
%36 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 15
%37 = bitcast [16 x double]* %1 to <2 x double>*
%38 = bitcast [16 x double]* %2 to <2 x double>*
%39 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 2
%40 = bitcast double* %39 to <2 x double>*
%41 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 2
%42 = bitcast double* %41 to <2 x double>*
%43 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 4
%44 = bitcast double* %43 to <2 x double>*
%45 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 4
%46 = bitcast double* %45 to <2 x double>*
%47 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 6
%48 = bitcast double* %47 to <2 x double>*
%49 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 6
%50 = bitcast double* %49 to <2 x double>*
%51 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 8
%52 = bitcast double* %51 to <2 x double>*
%53 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 8
%54 = bitcast double* %53 to <2 x double>*
%55 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 10
%56 = bitcast double* %55 to <2 x double>*
%57 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 10
%58 = bitcast double* %57 to <2 x double>*
%59 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 12
%60 = bitcast double* %59 to <2 x double>*
%61 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 12
%62 = bitcast double* %61 to <2 x double>*
%63 = getelementptr inbounds [16 x double], [16 x double]* %1, i64 0, i64 14
%64 = bitcast double* %63 to <2 x double>*
%65 = getelementptr inbounds [16 x double], [16 x double]* %2, i64 0, i64 14
%66 = bitcast double* %65 to <2 x double>*
br label %67
67: ; preds = %198, %0
%68 = phi i32 [ 0, %0 ], [ %201, %198 ]
store <2 x double> <double 5.000000e+00, double 0x4019851EB851EB86>, <2 x double>* %37
store <2 x double> <double 5.000000e+00, double 0x4019851EB851EB86>, <2 x double>* %38
store <2 x double> <double 8.440000e+00, double 0x40261EB851EB8520>, <2 x double>* %40
store <2 x double> <double 8.440000e+00, double 0x40261EB851EB8520>, <2 x double>* %42
store <2 x double> <double 0x402C3D70A3D70A3E, double 1.750000e+01>, <2 x double>* %44
store <2 x double> <double 0x402C3D70A3D70A3E, double 1.750000e+01>, <2 x double>* %46
store <2 x double> <double 0x4035147AE147AE15, double 0x4038BD70A3D70A3E>, <2 x double>* %48
store <2 x double> <double 0x4035147AE147AE15, double 0x4038BD70A3D70A3E>, <2 x double>* %50
store <2 x double> <double 2.836000e+01, double 3.182000e+01>, <2 x double>* %52
store <2 x double> <double 2.836000e+01, double 3.182000e+01>, <2 x double>* %54
store <2 x double> <double 3.500000e+01, double 0x4042E3D70A3D70A5>, <2 x double>* %56
store <2 x double> <double 3.500000e+01, double 0x4042E3D70A3D70A5>, <2 x double>* %58
store <2 x double> <double 0x4044051EB851EB86, double 0x4044D47AE147AE16>, <2 x double>* %60
store <2 x double> <double 0x4044051EB851EB86, double 0x4044D47AE147AE16>, <2 x double>* %62
store <2 x double> <double 4.252000e+01, double 4.250000e+01>, <2 x double>* %64
store <2 x double> <double 4.252000e+01, double 4.250000e+01>, <2 x double>* %66
%69 = call i32 @fwt97(double* %5, i32 16)
%70 = call i32 @iwt97(double* %5, i32 16)
%71 = load double, double* %5
%72 = load double, double* %6
%73 = fmul double %72, 0x3FEFAE147AE147AE
%74 = fcmp olt double %71, %73
%75 = fmul double %72, 1.010000e+00
%76 = fcmp ogt double %71, %75
%77 = or i1 %74, %76
br i1 %77, label %203, label %78
78: ; preds = %67
%79 = load double, double* %7
%80 = load double, double* %8
%81 = fmul double %80, 0x3FEFAE147AE147AE
%82 = fcmp olt double %79, %81
%83 = fmul double %80, 1.010000e+00
%84 = fcmp ogt double %79, %83
%85 = or i1 %82, %84
br i1 %85, label %203, label %86
86: ; preds = %78
%87 = load double, double* %9
%88 = load double, double* %10
%89 = fmul double %88, 0x3FEFAE147AE147AE
%90 = fcmp olt double %87, %89
%91 = fmul double %88, 1.010000e+00
%92 = fcmp ogt double %87, %91
%93 = or i1 %90, %92
br i1 %93, label %203, label %94
94: ; preds = %86
%95 = load double, double* %11
%96 = load double, double* %12
%97 = fmul double %96, 0x3FEFAE147AE147AE
%98 = fcmp olt double %95, %97
%99 = fmul double %96, 1.010000e+00
%100 = fcmp ogt double %95, %99
%101 = or i1 %98, %100
br i1 %101, label %203, label %102
102: ; preds = %94
%103 = load double, double* %13
%104 = load double, double* %14
%105 = fmul double %104, 0x3FEFAE147AE147AE
%106 = fcmp olt double %103, %105
%107 = fmul double %104, 1.010000e+00
%108 = fcmp ogt double %103, %107
%109 = or i1 %106, %108
br i1 %109, label %203, label %110
110: ; preds = %102
%111 = load double, double* %15
%112 = load double, double* %16
%113 = fmul double %112, 0x3FEFAE147AE147AE
%114 = fcmp olt double %111, %113
%115 = fmul double %112, 1.010000e+00
%116 = fcmp ogt double %111, %115
%117 = or i1 %114, %116
br i1 %117, label %203, label %118
118: ; preds = %110
%119 = load double, double* %17
%120 = load double, double* %18
%121 = fmul double %120, 0x3FEFAE147AE147AE
%122 = fcmp olt double %119, %121
%123 = fmul double %120, 1.010000e+00
%124 = fcmp ogt double %119, %123
%125 = or i1 %122, %124
br i1 %125, label %203, label %126
126: ; preds = %118
%127 = load double, double* %19
%128 = load double, double* %20
%129 = fmul double %128, 0x3FEFAE147AE147AE
%130 = fcmp olt double %127, %129
%131 = fmul double %128, 1.010000e+00
%132 = fcmp ogt double %127, %131
%133 = or i1 %130, %132
br i1 %133, label %203, label %134
134: ; preds = %126
%135 = load double, double* %21
%136 = load double, double* %22
%137 = fmul double %136, 0x3FEFAE147AE147AE
%138 = fcmp olt double %135, %137
%139 = fmul double %136, 1.010000e+00
%140 = fcmp ogt double %135, %139
%141 = or i1 %138, %140
br i1 %141, label %203, label %142
142: ; preds = %134
%143 = load double, double* %23
%144 = load double, double* %24
%145 = fmul double %144, 0x3FEFAE147AE147AE
%146 = fcmp olt double %143, %145
%147 = fmul double %144, 1.010000e+00
%148 = fcmp ogt double %143, %147
%149 = or i1 %146, %148
br i1 %149, label %203, label %150
150: ; preds = %142
%151 = load double, double* %25
%152 = load double, double* %26
%153 = fmul double %152, 0x3FEFAE147AE147AE
%154 = fcmp olt double %151, %153
%155 = fmul double %152, 1.010000e+00
%156 = fcmp ogt double %151, %155
%157 = or i1 %154, %156
br i1 %157, label %203, label %158
158: ; preds = %150
%159 = load double, double* %27
%160 = load double, double* %28
%161 = fmul double %160, 0x3FEFAE147AE147AE
%162 = fcmp olt double %159, %161
%163 = fmul double %160, 1.010000e+00
%164 = fcmp ogt double %159, %163
%165 = or i1 %162, %164
br i1 %165, label %203, label %166
166: ; preds = %158
%167 = load double, double* %29
%168 = load double, double* %30
%169 = fmul double %168, 0x3FEFAE147AE147AE
%170 = fcmp olt double %167, %169
%171 = fmul double %168, 1.010000e+00
%172 = fcmp ogt double %167, %171
%173 = or i1 %170, %172
br i1 %173, label %203, label %174
174: ; preds = %166
%175 = load double, double* %31
%176 = load double, double* %32
%177 = fmul double %176, 0x3FEFAE147AE147AE
%178 = fcmp olt double %175, %177
%179 = fmul double %176, 1.010000e+00
%180 = fcmp ogt double %175, %179
%181 = or i1 %178, %180
br i1 %181, label %203, label %182
182: ; preds = %174
%183 = load double, double* %33
%184 = load double, double* %34
%185 = fmul double %184, 0x3FEFAE147AE147AE
%186 = fcmp olt double %183, %185
%187 = fmul double %184, 1.010000e+00
%188 = fcmp ogt double %183, %187
%189 = or i1 %186, %188
br i1 %189, label %203, label %190
190: ; preds = %182
%191 = load double, double* %35
%192 = load double, double* %36
%193 = fmul double %192, 0x3FEFAE147AE147AE
%194 = fcmp olt double %191, %193
%195 = fmul double %192, 1.010000e+00
%196 = fcmp ogt double %191, %195
%197 = or i1 %194, %196
br i1 %197, label %203, label %198
198: ; preds = %190
%199 = load i32, i32* @stderr
%200 = call i32 @fprintf(i32 %199, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %68)
%201 = add nuw nsw i32 %68, 1
%202 = icmp eq i32 %201, 50
br i1 %202, label %203, label %67
203: ; preds = %198, %67, %78, %86, %94, %102, %110, %118, %126, %134, %142, %150, %158, %166, %174, %182, %190
%204 = phi i32 [ -1, %190 ], [ -1, %182 ], [ -1, %174 ], [ -1, %166 ], [ -1, %158 ], [ -1, %150 ], [ -1, %142 ], [ -1, %134 ], [ -1, %126 ], [ -1, %118 ], [ -1, %110 ], [ -1, %102 ], [ -1, %94 ], [ -1, %86 ], [ -1, %78 ], [ -1, %67 ], [ 0, %198 ]
ret i32 %204
}