#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*/ printf(char *);
scalar_t__ test_absImg();
scalar_t__ test_absVol();
scalar_t__ test_addImgs();
scalar_t__ test_addScalar2Img();
scalar_t__ test_addScalar2Vol();
scalar_t__ test_addVols();
scalar_t__ test_divideImgByScalar();
scalar_t__ test_divideImgs();
scalar_t__ test_flipImgLR();
scalar_t__ test_flipImgUD();
scalar_t__ test_multiplyImgs();
scalar_t__ test_rot180();
scalar_t__ test_rot270();
scalar_t__ test_rot90();
scalar_t__ test_sqrtImg();
scalar_t__ test_sqrtVol();
scalar_t__ test_sumImg();
scalar_t__ test_sumVol();
scalar_t__ test_transposeImg();
void cimpl_test() {
  if (test_absImg()) {
    printf("passed - cimpl_absImg\n");
  } else {
    printf("failed - cimpl_absImg\n");
  }
  if (test_absVol()) {
    printf("passed - cimpl_absVol\n");
  } else {
    printf("failed - cimpl_absVol\n");
  }
  if (test_addImgs()) {
    printf("passed - cimpl_addImgs\n");
  } else {
    printf("failed - cimpl_addImgs\n");
  }
  if (test_addVols()) {
    printf("passed - cimpl_addVols\n");
  } else {
    printf("failed - cimpl_addVols\n");
  }
  if (test_addScalar2Img()) {
    printf("passed - cimpl_addScalar2Img\n");
  } else {
    printf("failed - cimpl_addScalar2Img\n");
  }
  if (test_addScalar2Vol()) {
    printf("passed - cimpl_addScalar2Vol\n");
  } else {
    printf("failed - cimpl_addScalar2Vol\n");
  }
  if (test_divideImgs()) {
    printf("passed - cimpl_divideImgs\n");
  } else {
    printf("failed - cimpl_divideImgs\n");
  }
  if (test_divideImgByScalar()) {
    printf("passed - cimpl_divideImgByScalar\n");
  } else {
    printf("failed - cimpl_divideImgByScalar\n");
  }
  if (test_flipImgLR()) {
    printf("passed - cimpl_flipImgLR\n");
  } else {
    printf("failed - cimpl_flipImgLR\n");
  }
  if (test_flipImgUD()) {
    printf("passed - cimpl_flipImgUD\n");
  } else {
    printf("failed - cimpl_flipImgUD\n");
  }
  if (test_multiplyImgs()) {
    printf("passed - cimpl_multiplyImgs\n");
  } else {
    printf("failed - cimpl_multiplyImgs\n");
  }
  if (test_rot90()) {
    printf("passed - cimpl_rot90\n");
  } else {
    printf("failed - cimpl_rot90\n");
  }
  if (test_rot180()) {
    printf("passed - cimpl_rot180\n");
  } else {
    printf("failed - cimpl_rot180\n");
  }
  if (test_rot270()) {
    printf("passed - cimpl_rot270\n");
  } else {
    printf("failed - cimpl_rot270\n");
  }
  if (test_sqrtImg()) {
    printf("passed - cimpl_sqrtImg\n");
  } else {
    printf("failed - cimpl_sqrtImg\n");
  }
  if (test_sqrtVol()) {
    printf("passed - cimpl_sqrtVol\n");
  } else {
    printf("failed - cimpl_sqrtVol\n");
  }
  if (test_sumImg()) {
    printf("passed - cimpl_sumImg\n");
  } else {
    printf("failed - cimpl_sumImg\n");
  }
  if (test_sumVol()) {
    printf("passed - cimpl_sumVol\n");
  } else {
    printf("failed - cimpl_sumVol\n");
  }
  if (test_transposeImg()) {
    printf("passed - cimpl_transposeImg\n");
  } else {
    printf("failed - cimpl_transposeImg\n");
  }
}


x86 assembly (clang, -O0):
<cimpl_test>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1100 <test_absImg@plt>
cmp    $0x0,%rax
je     1266 <cimpl_test+0x26>
lea    0xda4(%rip),%rdi
call   1080 <printf@plt>
jmp    1272 <cimpl_test+0x32>
lea    0xdaa(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1160 <test_absVol@plt>
cmp    $0x0,%rax
je     1294 <cimpl_test+0x54>
lea    0xda4(%rip),%rdi
call   1080 <printf@plt>
jmp    12a0 <cimpl_test+0x60>
lea    0xdaa(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1050 <test_addImgs@plt>
cmp    $0x0,%rax
je     12c2 <cimpl_test+0x82>
lea    0xda4(%rip),%rdi
call   1080 <printf@plt>
jmp    12ce <cimpl_test+0x8e>
lea    0xdab(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1090 <test_addVols@plt>
cmp    $0x0,%rax
je     12f0 <cimpl_test+0xb0>
lea    0xda6(%rip),%rdi
call   1080 <printf@plt>
jmp    12fc <cimpl_test+0xbc>
lea    0xdad(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1060 <test_addScalar2Img@plt>
cmp    $0x0,%rax
je     131e <cimpl_test+0xde>
lea    0xda8(%rip),%rdi
call   1080 <printf@plt>
jmp    132a <cimpl_test+0xea>
lea    0xdb5(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1030 <test_addScalar2Vol@plt>
cmp    $0x0,%rax
je     134c <cimpl_test+0x10c>
lea    0xdb6(%rip),%rdi
call   1080 <printf@plt>
jmp    1358 <cimpl_test+0x118>
lea    0xdc3(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1110 <test_divideImgs@plt>
cmp    $0x0,%rax
je     137a <cimpl_test+0x13a>
lea    0xdc4(%rip),%rdi
call   1080 <printf@plt>
jmp    1386 <cimpl_test+0x146>
lea    0xdce(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1070 <test_divideImgByScalar@plt>
cmp    $0x0,%rax
je     13a8 <cimpl_test+0x168>
lea    0xdcc(%rip),%rdi
call   1080 <printf@plt>
jmp    13b4 <cimpl_test+0x174>
lea    0xddd(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1120 <test_flipImgLR@plt>
cmp    $0x0,%rax
je     13d6 <cimpl_test+0x196>
lea    0xde2(%rip),%rdi
call   1080 <printf@plt>
jmp    13e2 <cimpl_test+0x1a2>
lea    0xdeb(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10b0 <test_flipImgUD@plt>
cmp    $0x0,%rax
je     1404 <cimpl_test+0x1c4>
lea    0xde8(%rip),%rdi
call   1080 <printf@plt>
jmp    1410 <cimpl_test+0x1d0>
lea    0xdf1(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10f0 <test_multiplyImgs@plt>
cmp    $0x0,%rax
je     1432 <cimpl_test+0x1f2>
lea    0xdee(%rip),%rdi
call   1080 <printf@plt>
jmp    143e <cimpl_test+0x1fe>
lea    0xdfa(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10d0 <test_rot90@plt>
cmp    $0x0,%rax
je     1460 <cimpl_test+0x220>
lea    0xdfa(%rip),%rdi
call   1080 <printf@plt>
jmp    146c <cimpl_test+0x22c>
lea    0xdff(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10a0 <test_rot180@plt>
cmp    $0x0,%rax
je     148e <cimpl_test+0x24e>
lea    0xdf8(%rip),%rdi
call   1080 <printf@plt>
jmp    149a <cimpl_test+0x25a>
lea    0xdfe(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1130 <test_rot270@plt>
cmp    $0x0,%rax
je     14bc <cimpl_test+0x27c>
lea    0xdf8(%rip),%rdi
call   1080 <printf@plt>
jmp    14c8 <cimpl_test+0x288>
lea    0xdfe(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1150 <test_sqrtImg@plt>
cmp    $0x0,%rax
je     14ea <cimpl_test+0x2aa>
lea    0xdf8(%rip),%rdi
call   1080 <printf@plt>
jmp    14f6 <cimpl_test+0x2b6>
lea    0xdff(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10c0 <test_sqrtVol@plt>
cmp    $0x0,%rax
je     1518 <cimpl_test+0x2d8>
lea    0xdfa(%rip),%rdi
call   1080 <printf@plt>
jmp    1524 <cimpl_test+0x2e4>
lea    0xe01(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   10e0 <test_sumImg@plt>
cmp    $0x0,%rax
je     1546 <cimpl_test+0x306>
lea    0xdfc(%rip),%rdi
call   1080 <printf@plt>
jmp    1552 <cimpl_test+0x312>
lea    0xe02(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1040 <test_sumVol@plt>
cmp    $0x0,%rax
je     1574 <cimpl_test+0x334>
lea    0xdfc(%rip),%rdi
call   1080 <printf@plt>
jmp    1580 <cimpl_test+0x340>
lea    0xe02(%rip),%rdi
call   1080 <printf@plt>
mov    $0x0,%al
call   1140 <test_transposeImg@plt>
cmp    $0x0,%rax
je     15a2 <cimpl_test+0x362>
lea    0xdfc(%rip),%rdi
call   1080 <printf@plt>
jmp    15ae <cimpl_test+0x36e>
lea    0xe08(%rip),%rdi
call   1080 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<cimpl_test>:
push   %rax
xor    %eax,%eax
call   1100 <test_absImg@plt>
test   %rax,%rax
lea    0xdae(%rip),%rax
lea    0x1139(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1160 <test_absVol@plt>
test   %rax,%rax
lea    0xda3(%rip),%rax
lea    0x1102(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1050 <test_addImgs@plt>
test   %rax,%rax
lea    0xd98(%rip),%rax
lea    0x10ca(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1090 <test_addVols@plt>
test   %rax,%rax
lea    0xd8e(%rip),%rax
lea    0x1092(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1070 <test_addScalar2Img@plt>
test   %rax,%rax
lea    0xd84(%rip),%rax
lea    0x1054(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1030 <test_addScalar2Vol@plt>
test   %rax,%rax
lea    0xd80(%rip),%rax
lea    0x1016(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1110 <test_divideImgs@plt>
test   %rax,%rax
lea    0xd7c(%rip),%rax
lea    0xfdb(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1080 <test_divideImgByScalar@plt>
test   %rax,%rax
lea    0xd75(%rip),%rax
lea    0xf99(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1120 <test_flipImgLR@plt>
test   %rax,%rax
lea    0xd75(%rip),%rax
lea    0xf5f(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10b0 <test_flipImgUD@plt>
test   %rax,%rax
lea    0xd6d(%rip),%rax
lea    0xf25(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10f0 <test_multiplyImgs@plt>
test   %rax,%rax
lea    0xd65(%rip),%rax
lea    0xee8(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10d0 <test_rot90@plt>
test   %rax,%rax
lea    0xd60(%rip),%rax
lea    0xeb2(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10a0 <test_rot180@plt>
test   %rax,%rax
lea    0xd54(%rip),%rax
lea    0xe7b(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1130 <test_rot270@plt>
test   %rax,%rax
lea    0xd49(%rip),%rax
lea    0xe44(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1150 <test_sqrtImg@plt>
test   %rax,%rax
lea    0xd3e(%rip),%rax
lea    0xe0c(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10c0 <test_sqrtVol@plt>
test   %rax,%rax
lea    0xd34(%rip),%rax
lea    0xdd4(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10e0 <test_sumImg@plt>
test   %rax,%rax
lea    0xd2a(%rip),%rax
lea    0xd9d(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1040 <test_sumVol@plt>
test   %rax,%rax
lea    0xd1f(%rip),%rax
lea    0xd66(%rip),%rdi
cmove  %rax,%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   1140 <test_transposeImg@plt>
test   %rax,%rax
lea    0xd14(%rip),%rax
lea    0xd29(%rip),%rdi
cmove  %rax,%rdi
pop    %rax
jmp    1060 <puts@plt>

LLVM IR (-O0):
@.str = [23 x i8] c"passed - cimpl_absImg\0A\00"
@.str.1 = [23 x i8] c"failed - cimpl_absImg\0A\00"
@.str.2 = [23 x i8] c"passed - cimpl_absVol\0A\00"
@.str.3 = [23 x i8] c"failed - cimpl_absVol\0A\00"
@.str.4 = [24 x i8] c"passed - cimpl_addImgs\0A\00"
@.str.5 = [24 x i8] c"failed - cimpl_addImgs\0A\00"
@.str.6 = [24 x i8] c"passed - cimpl_addVols\0A\00"
@.str.7 = [24 x i8] c"failed - cimpl_addVols\0A\00"
@.str.8 = [30 x i8] c"passed - cimpl_addScalar2Img\0A\00"
@.str.9 = [30 x i8] c"failed - cimpl_addScalar2Img\0A\00"
@.str.10 = [30 x i8] c"passed - cimpl_addScalar2Vol\0A\00"
@.str.11 = [30 x i8] c"failed - cimpl_addScalar2Vol\0A\00"
@.str.12 = [27 x i8] c"passed - cimpl_divideImgs\0A\00"
@.str.13 = [27 x i8] c"failed - cimpl_divideImgs\0A\00"
@.str.14 = [34 x i8] c"passed - cimpl_divideImgByScalar\0A\00"
@.str.15 = [34 x i8] c"failed - cimpl_divideImgByScalar\0A\00"
@.str.16 = [26 x i8] c"passed - cimpl_flipImgLR\0A\00"
@.str.17 = [26 x i8] c"failed - cimpl_flipImgLR\0A\00"
@.str.18 = [26 x i8] c"passed - cimpl_flipImgUD\0A\00"
@.str.19 = [26 x i8] c"failed - cimpl_flipImgUD\0A\00"
@.str.20 = [29 x i8] c"passed - cimpl_multiplyImgs\0A\00"
@.str.21 = [29 x i8] c"failed - cimpl_multiplyImgs\0A\00"
@.str.22 = [22 x i8] c"passed - cimpl_rot90\0A\00"
@.str.23 = [22 x i8] c"failed - cimpl_rot90\0A\00"
@.str.24 = [23 x i8] c"passed - cimpl_rot180\0A\00"
@.str.25 = [23 x i8] c"failed - cimpl_rot180\0A\00"
@.str.26 = [23 x i8] c"passed - cimpl_rot270\0A\00"
@.str.27 = [23 x i8] c"failed - cimpl_rot270\0A\00"
@.str.28 = [24 x i8] c"passed - cimpl_sqrtImg\0A\00"
@.str.29 = [24 x i8] c"failed - cimpl_sqrtImg\0A\00"
@.str.30 = [24 x i8] c"passed - cimpl_sqrtVol\0A\00"
@.str.31 = [24 x i8] c"failed - cimpl_sqrtVol\0A\00"
@.str.32 = [23 x i8] c"passed - cimpl_sumImg\0A\00"
@.str.33 = [23 x i8] c"failed - cimpl_sumImg\0A\00"
@.str.34 = [23 x i8] c"passed - cimpl_sumVol\0A\00"
@.str.35 = [23 x i8] c"failed - cimpl_sumVol\0A\00"
@.str.36 = [29 x i8] c"passed - cimpl_transposeImg\0A\00"
@.str.37 = [29 x i8] c"failed - cimpl_transposeImg\0A\00"
define void @cimpl_test() {
%1 = call i64 (...) @test_absImg()
%2 = icmp ne i64 %1, 0
br i1 %2, label %3, label %5
3: ; preds = %0
%4 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0))
br label %7
5: ; preds = %0
%6 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0))
br label %7
7: ; preds = %5, %3
%8 = call i64 (...) @test_absVol()
%9 = icmp ne i64 %8, 0
br i1 %9, label %10, label %12
10: ; preds = %7
%11 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0))
br label %14
12: ; preds = %7
%13 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0))
br label %14
14: ; preds = %12, %10
%15 = call i64 (...) @test_addImgs()
%16 = icmp ne i64 %15, 0
br i1 %16, label %17, label %19
17: ; preds = %14
%18 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.4, i64 0, i64 0))
br label %21
19: ; preds = %14
%20 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.5, i64 0, i64 0))
br label %21
21: ; preds = %19, %17
%22 = call i64 (...) @test_addVols()
%23 = icmp ne i64 %22, 0
br i1 %23, label %24, label %26
24: ; preds = %21
%25 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0))
br label %28
26: ; preds = %21
%27 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0))
br label %28
28: ; preds = %26, %24
%29 = call i64 (...) @test_addScalar2Img()
%30 = icmp ne i64 %29, 0
br i1 %30, label %31, label %33
31: ; preds = %28
%32 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.8, i64 0, i64 0))
br label %35
33: ; preds = %28
%34 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.9, i64 0, i64 0))
br label %35
35: ; preds = %33, %31
%36 = call i64 (...) @test_addScalar2Vol()
%37 = icmp ne i64 %36, 0
br i1 %37, label %38, label %40
38: ; preds = %35
%39 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.10, i64 0, i64 0))
br label %42
40: ; preds = %35
%41 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.11, i64 0, i64 0))
br label %42
42: ; preds = %40, %38
%43 = call i64 (...) @test_divideImgs()
%44 = icmp ne i64 %43, 0
br i1 %44, label %45, label %47
45: ; preds = %42
%46 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
br label %49
47: ; preds = %42
%48 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.13, i64 0, i64 0))
br label %49
49: ; preds = %47, %45
%50 = call i64 (...) @test_divideImgByScalar()
%51 = icmp ne i64 %50, 0
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.14, i64 0, i64 0))
br label %56
54: ; preds = %49
%55 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.15, i64 0, i64 0))
br label %56
56: ; preds = %54, %52
%57 = call i64 (...) @test_flipImgLR()
%58 = icmp ne i64 %57, 0
br i1 %58, label %59, label %61
59: ; preds = %56
%60 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.16, i64 0, i64 0))
br label %63
61: ; preds = %56
%62 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.17, i64 0, i64 0))
br label %63
63: ; preds = %61, %59
%64 = call i64 (...) @test_flipImgUD()
%65 = icmp ne i64 %64, 0
br i1 %65, label %66, label %68
66: ; preds = %63
%67 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.18, i64 0, i64 0))
br label %70
68: ; preds = %63
%69 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.19, i64 0, i64 0))
br label %70
70: ; preds = %68, %66
%71 = call i64 (...) @test_multiplyImgs()
%72 = icmp ne i64 %71, 0
br i1 %72, label %73, label %75
73: ; preds = %70
%74 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.20, i64 0, i64 0))
br label %77
75: ; preds = %70
%76 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.21, i64 0, i64 0))
br label %77
77: ; preds = %75, %73
%78 = call i64 (...) @test_rot90()
%79 = icmp ne i64 %78, 0
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.22, i64 0, i64 0))
br label %84
82: ; preds = %77
%83 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.23, i64 0, i64 0))
br label %84
84: ; preds = %82, %80
%85 = call i64 (...) @test_rot180()
%86 = icmp ne i64 %85, 0
br i1 %86, label %87, label %89
87: ; preds = %84
%88 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.24, i64 0, i64 0))
br label %91
89: ; preds = %84
%90 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0))
br label %91
91: ; preds = %89, %87
%92 = call i64 (...) @test_rot270()
%93 = icmp ne i64 %92, 0
br i1 %93, label %94, label %96
94: ; preds = %91
%95 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.26, i64 0, i64 0))
br label %98
96: ; preds = %91
%97 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0))
br label %98
98: ; preds = %96, %94
%99 = call i64 (...) @test_sqrtImg()
%100 = icmp ne i64 %99, 0
br i1 %100, label %101, label %103
101: ; preds = %98
%102 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.28, i64 0, i64 0))
br label %105
103: ; preds = %98
%104 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.29, i64 0, i64 0))
br label %105
105: ; preds = %103, %101
%106 = call i64 (...) @test_sqrtVol()
%107 = icmp ne i64 %106, 0
br i1 %107, label %108, label %110
108: ; preds = %105
%109 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.30, i64 0, i64 0))
br label %112
110: ; preds = %105
%111 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0))
br label %112
112: ; preds = %110, %108
%113 = call i64 (...) @test_sumImg()
%114 = icmp ne i64 %113, 0
br i1 %114, label %115, label %117
115: ; preds = %112
%116 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.32, i64 0, i64 0))
br label %119
117: ; preds = %112
%118 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.33, i64 0, i64 0))
br label %119
119: ; preds = %117, %115
%120 = call i64 (...) @test_sumVol()
%121 = icmp ne i64 %120, 0
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.34, i64 0, i64 0))
br label %126
124: ; preds = %119
%125 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.35, i64 0, i64 0))
br label %126
126: ; preds = %124, %122
%127 = call i64 (...) @test_transposeImg()
%128 = icmp ne i64 %127, 0
br i1 %128, label %129, label %131
129: ; preds = %126
%130 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.36, i64 0, i64 0))
br label %133
131: ; preds = %126
%132 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.37, i64 0, i64 0))
br label %133
133: ; preds = %131, %129
ret void
}

LLVM IR (-O2):
@str = [22 x i8] c"failed - cimpl_absImg\00"
@str.38 = [22 x i8] c"failed - cimpl_absVol\00"
@str.39 = [23 x i8] c"failed - cimpl_addImgs\00"
@str.40 = [23 x i8] c"failed - cimpl_addVols\00"
@str.41 = [29 x i8] c"failed - cimpl_addScalar2Img\00"
@str.42 = [29 x i8] c"failed - cimpl_addScalar2Vol\00"
@str.43 = [26 x i8] c"failed - cimpl_divideImgs\00"
@str.44 = [33 x i8] c"failed - cimpl_divideImgByScalar\00"
@str.45 = [25 x i8] c"failed - cimpl_flipImgLR\00"
@str.46 = [25 x i8] c"failed - cimpl_flipImgUD\00"
@str.47 = [28 x i8] c"failed - cimpl_multiplyImgs\00"
@str.48 = [21 x i8] c"failed - cimpl_rot90\00"
@str.49 = [22 x i8] c"failed - cimpl_rot180\00"
@str.50 = [22 x i8] c"failed - cimpl_rot270\00"
@str.51 = [23 x i8] c"failed - cimpl_sqrtImg\00"
@str.52 = [23 x i8] c"failed - cimpl_sqrtVol\00"
@str.53 = [22 x i8] c"failed - cimpl_sumImg\00"
@str.54 = [22 x i8] c"failed - cimpl_sumVol\00"
@str.55 = [28 x i8] c"failed - cimpl_transposeImg\00"
@str.56 = [28 x i8] c"passed - cimpl_transposeImg\00"
@str.57 = [22 x i8] c"passed - cimpl_sumVol\00"
@str.58 = [22 x i8] c"passed - cimpl_sumImg\00"
@str.59 = [23 x i8] c"passed - cimpl_sqrtVol\00"
@str.60 = [23 x i8] c"passed - cimpl_sqrtImg\00"
@str.61 = [22 x i8] c"passed - cimpl_rot270\00"
@str.62 = [22 x i8] c"passed - cimpl_rot180\00"
@str.63 = [21 x i8] c"passed - cimpl_rot90\00"
@str.64 = [28 x i8] c"passed - cimpl_multiplyImgs\00"
@str.65 = [25 x i8] c"passed - cimpl_flipImgUD\00"
@str.66 = [25 x i8] c"passed - cimpl_flipImgLR\00"
@str.67 = [33 x i8] c"passed - cimpl_divideImgByScalar\00"
@str.68 = [26 x i8] c"passed - cimpl_divideImgs\00"
@str.69 = [29 x i8] c"passed - cimpl_addScalar2Vol\00"
@str.70 = [29 x i8] c"passed - cimpl_addScalar2Img\00"
@str.71 = [23 x i8] c"passed - cimpl_addVols\00"
@str.72 = [23 x i8] c"passed - cimpl_addImgs\00"
@str.73 = [22 x i8] c"passed - cimpl_absVol\00"
@str.74 = [22 x i8] c"passed - cimpl_absImg\00"
define void @cimpl_test() {
%1 = tail call i64 (...) @test_absImg()
%2 = icmp eq i64 %1, 0
%3 = select i1 %2, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.74, i64 0, i64 0)
%4 = tail call i32 @puts(i8* dereferenceable(1) %3)
%5 = tail call i64 (...) @test_absVol()
%6 = icmp eq i64 %5, 0
%7 = select i1 %6, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.38, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.73, i64 0, i64 0)
%8 = tail call i32 @puts(i8* dereferenceable(1) %7)
%9 = tail call i64 (...) @test_addImgs()
%10 = icmp eq i64 %9, 0
%11 = select i1 %10, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.39, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.72, i64 0, i64 0)
%12 = tail call i32 @puts(i8* dereferenceable(1) %11)
%13 = tail call i64 (...) @test_addVols()
%14 = icmp eq i64 %13, 0
%15 = select i1 %14, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.40, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.71, i64 0, i64 0)
%16 = tail call i32 @puts(i8* dereferenceable(1) %15)
%17 = tail call i64 (...) @test_addScalar2Img()
%18 = icmp eq i64 %17, 0
%19 = select i1 %18, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str.41, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str.70, i64 0, i64 0)
%20 = tail call i32 @puts(i8* dereferenceable(1) %19)
%21 = tail call i64 (...) @test_addScalar2Vol()
%22 = icmp eq i64 %21, 0
%23 = select i1 %22, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str.42, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str.69, i64 0, i64 0)
%24 = tail call i32 @puts(i8* dereferenceable(1) %23)
%25 = tail call i64 (...) @test_divideImgs()
%26 = icmp eq i64 %25, 0
%27 = select i1 %26, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.43, i64 0, i64 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @str.68, i64 0, i64 0)
%28 = tail call i32 @puts(i8* dereferenceable(1) %27)
%29 = tail call i64 (...) @test_divideImgByScalar()
%30 = icmp eq i64 %29, 0
%31 = select i1 %30, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.44, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @str.67, i64 0, i64 0)
%32 = tail call i32 @puts(i8* dereferenceable(1) %31)
%33 = tail call i64 (...) @test_flipImgLR()
%34 = icmp eq i64 %33, 0
%35 = select i1 %34, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str.45, i64 0, i64 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str.66, i64 0, i64 0)
%36 = tail call i32 @puts(i8* dereferenceable(1) %35)
%37 = tail call i64 (...) @test_flipImgUD()
%38 = icmp eq i64 %37, 0
%39 = select i1 %38, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str.46, i64 0, i64 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @str.65, i64 0, i64 0)
%40 = tail call i32 @puts(i8* dereferenceable(1) %39)
%41 = tail call i64 (...) @test_multiplyImgs()
%42 = icmp eq i64 %41, 0
%43 = select i1 %42, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.47, i64 0, i64 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.64, i64 0, i64 0)
%44 = tail call i32 @puts(i8* dereferenceable(1) %43)
%45 = tail call i64 (...) @test_rot90()
%46 = icmp eq i64 %45, 0
%47 = select i1 %46, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @str.48, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @str.63, i64 0, i64 0)
%48 = tail call i32 @puts(i8* dereferenceable(1) %47)
%49 = tail call i64 (...) @test_rot180()
%50 = icmp eq i64 %49, 0
%51 = select i1 %50, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.49, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.62, i64 0, i64 0)
%52 = tail call i32 @puts(i8* dereferenceable(1) %51)
%53 = tail call i64 (...) @test_rot270()
%54 = icmp eq i64 %53, 0
%55 = select i1 %54, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.50, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.61, i64 0, i64 0)
%56 = tail call i32 @puts(i8* dereferenceable(1) %55)
%57 = tail call i64 (...) @test_sqrtImg()
%58 = icmp eq i64 %57, 0
%59 = select i1 %58, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.51, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.60, i64 0, i64 0)
%60 = tail call i32 @puts(i8* dereferenceable(1) %59)
%61 = tail call i64 (...) @test_sqrtVol()
%62 = icmp eq i64 %61, 0
%63 = select i1 %62, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.52, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @str.59, i64 0, i64 0)
%64 = tail call i32 @puts(i8* dereferenceable(1) %63)
%65 = tail call i64 (...) @test_sumImg()
%66 = icmp eq i64 %65, 0
%67 = select i1 %66, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.53, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.58, i64 0, i64 0)
%68 = tail call i32 @puts(i8* dereferenceable(1) %67)
%69 = tail call i64 (...) @test_sumVol()
%70 = icmp eq i64 %69, 0
%71 = select i1 %70, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.54, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @str.57, i64 0, i64 0)
%72 = tail call i32 @puts(i8* dereferenceable(1) %71)
%73 = tail call i64 (...) @test_transposeImg()
%74 = icmp eq i64 %73, 0
%75 = select i1 %74, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.55, i64 0, i64 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @str.56, i64 0, i64 0)
%76 = tail call i32 @puts(i8* dereferenceable(1) %75)
ret void
}