#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 *, int);
int /*<<< orphan*/ puts(char *);
int t1();
int t10();
int t11();
int t12();
int t13();
int t14();
int t15();
int t16();
int t17();
int t18();
int t19();
int t2();
int t20();
int t21();
int t22();
int t3();
int t4();
int t5();
int t6();
int t7();
int t8();
int t9();
void runTests() {
  puts("Running tests...");
  printf("t1:  %i\n", t1());
  printf("t2:  %i\n", t2());
  printf("t3:  %i\n", t3());
  printf("t4:  %i\n", t4());
  printf("t5:  %i\n", t5());
  printf("t6:  %i\n", t6());
  printf("t7:  %i\n", t7());
  printf("t8:  %i\n", t8());
  printf("t9:  %i\n", t9());
  printf("t10: %i\n", t10());
  printf("t11: %i\n", t11());
  printf("t12: %i\n", t12());
  printf("t13: %i\n", t13());
  printf("t14: %i\n", t14());
  printf("t15: %i\n", t15());
  printf("t16: %i\n", t16());
  printf("t17: %i\n", t17());
  printf("t18: %i\n", t18());
  printf("t19: %i\n", t19());
  printf("t20: %i\n", t20());
  printf("t21: %i\n", t21());
  printf("t22: %i\n", t22());
}


x86 assembly (clang, -O0):
<runTests>:
push   %rbp
mov    %rsp,%rbp
lea    0xd75(%rip),%rdi
call   1060 <puts@plt>
mov    $0x0,%al
call   10a0 <t1@plt>
mov    %eax,%esi
lea    0xd71(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1160 <t2@plt>
mov    %eax,%esi
lea    0xd65(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   10b0 <t3@plt>
mov    %eax,%esi
lea    0xd59(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1170 <t4@plt>
mov    %eax,%esi
lea    0xd4d(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   10c0 <t5@plt>
mov    %eax,%esi
lea    0xd41(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1180 <t6@plt>
mov    %eax,%esi
lea    0xd35(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   10e0 <t7@plt>
mov    %eax,%esi
lea    0xd29(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   11a0 <t8@plt>
mov    %eax,%esi
lea    0xd1d(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1100 <t9@plt>
mov    %eax,%esi
lea    0xd11(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1120 <t10@plt>
mov    %eax,%esi
lea    0xd05(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1070 <t11@plt>
mov    %eax,%esi
lea    0xcf9(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1130 <t12@plt>
mov    %eax,%esi
lea    0xced(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1030 <t13@plt>
mov    %eax,%esi
lea    0xce1(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1140 <t14@plt>
mov    %eax,%esi
lea    0xcd5(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1040 <t15@plt>
mov    %eax,%esi
lea    0xcc9(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1110 <t16@plt>
mov    %eax,%esi
lea    0xcbd(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1050 <t17@plt>
mov    %eax,%esi
lea    0xcb1(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1150 <t18@plt>
mov    %eax,%esi
lea    0xca5(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1080 <t19@plt>
mov    %eax,%esi
lea    0xc99(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   10d0 <t20@plt>
mov    %eax,%esi
lea    0xc8d(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1190 <t21@plt>
mov    %eax,%esi
lea    0xc81(%rip),%rdi
call   10f0 <printf@plt>
mov    $0x0,%al
call   1090 <t22@plt>
mov    %eax,%esi
lea    0xc75(%rip),%rdi
call   10f0 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<runTests>:
push   %rax
lea    0xd78(%rip),%rdi
call   1060 <puts@plt>
xor    %eax,%eax
call   10a0 <t1@plt>
lea    0xd76(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1160 <t2@plt>
lea    0xd6a(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   10b0 <t3@plt>
lea    0xd5e(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1170 <t4@plt>
lea    0xd52(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   10c0 <t5@plt>
lea    0xd46(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1180 <t6@plt>
lea    0xd3a(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   10e0 <t7@plt>
lea    0xd2e(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   11a0 <t8@plt>
lea    0xd22(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1100 <t9@plt>
lea    0xd16(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1120 <t10@plt>
lea    0xd0a(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1070 <t11@plt>
lea    0xcfe(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1130 <t12@plt>
lea    0xcf2(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1030 <t13@plt>
lea    0xce6(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1140 <t14@plt>
lea    0xcda(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1040 <t15@plt>
lea    0xcce(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1110 <t16@plt>
lea    0xcc2(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1050 <t17@plt>
lea    0xcb6(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1150 <t18@plt>
lea    0xcaa(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1080 <t19@plt>
lea    0xc9e(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   10d0 <t20@plt>
lea    0xc92(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1190 <t21@plt>
lea    0xc86(%rip),%rdi
mov    %eax,%esi
call   10f0 <printf@plt>
xor    %eax,%eax
call   1090 <t22@plt>
lea    0xc7a(%rip),%rdi
mov    %eax,%esi
pop    %rax
jmp    10f0 <printf@plt>

LLVM IR (-O0):
@.str = [17 x i8] c"Running tests...\00"
@.str.1 = [9 x i8] c"t1: %i\0A\00"
@.str.2 = [9 x i8] c"t2: %i\0A\00"
@.str.3 = [9 x i8] c"t3: %i\0A\00"
@.str.4 = [9 x i8] c"t4: %i\0A\00"
@.str.5 = [9 x i8] c"t5: %i\0A\00"
@.str.6 = [9 x i8] c"t6: %i\0A\00"
@.str.7 = [9 x i8] c"t7: %i\0A\00"
@.str.8 = [9 x i8] c"t8: %i\0A\00"
@.str.9 = [9 x i8] c"t9: %i\0A\00"
@.str.10 = [9 x i8] c"t10: %i\0A\00"
@.str.11 = [9 x i8] c"t11: %i\0A\00"
@.str.12 = [9 x i8] c"t12: %i\0A\00"
@.str.13 = [9 x i8] c"t13: %i\0A\00"
@.str.14 = [9 x i8] c"t14: %i\0A\00"
@.str.15 = [9 x i8] c"t15: %i\0A\00"
@.str.16 = [9 x i8] c"t16: %i\0A\00"
@.str.17 = [9 x i8] c"t17: %i\0A\00"
@.str.18 = [9 x i8] c"t18: %i\0A\00"
@.str.19 = [9 x i8] c"t19: %i\0A\00"
@.str.20 = [9 x i8] c"t20: %i\0A\00"
@.str.21 = [9 x i8] c"t21: %i\0A\00"
@.str.22 = [9 x i8] c"t22: %i\0A\00"
define void @runTests() {
%1 = call i32 @puts(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0))
%2 = call i32 (...) @t1()
%3 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i32 %2)
%4 = call i32 (...) @t2()
%5 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i32 %4)
%6 = call i32 (...) @t3()
%7 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %6)
%8 = call i32 (...) @t4()
%9 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %8)
%10 = call i32 (...) @t5()
%11 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0), i32 %10)
%12 = call i32 (...) @t6()
%13 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), i32 %12)
%14 = call i32 (...) @t7()
%15 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i32 %14)
%16 = call i32 (...) @t8()
%17 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0), i32 %16)
%18 = call i32 (...) @t9()
%19 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0), i32 %18)
%20 = call i32 (...) @t10()
%21 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 %20)
%22 = call i32 (...) @t11()
%23 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), i32 %22)
%24 = call i32 (...) @t12()
%25 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i32 %24)
%26 = call i32 (...) @t13()
%27 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), i32 %26)
%28 = call i32 (...) @t14()
%29 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), i32 %28)
%30 = call i32 (...) @t15()
%31 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0), i32 %30)
%32 = call i32 (...) @t16()
%33 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %32)
%34 = call i32 (...) @t17()
%35 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0), i32 %34)
%36 = call i32 (...) @t18()
%37 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0), i32 %36)
%38 = call i32 (...) @t19()
%39 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), i32 %38)
%40 = call i32 (...) @t20()
%41 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), i32 %40)
%42 = call i32 (...) @t21()
%43 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0), i32 %42)
%44 = call i32 (...) @t22()
%45 = call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0), i32 %44)
ret void
}

LLVM IR (-O2):
@.str = [17 x i8] c"Running tests...\00"
@.str.1 = [9 x i8] c"t1: %i\0A\00"
@.str.2 = [9 x i8] c"t2: %i\0A\00"
@.str.3 = [9 x i8] c"t3: %i\0A\00"
@.str.4 = [9 x i8] c"t4: %i\0A\00"
@.str.5 = [9 x i8] c"t5: %i\0A\00"
@.str.6 = [9 x i8] c"t6: %i\0A\00"
@.str.7 = [9 x i8] c"t7: %i\0A\00"
@.str.8 = [9 x i8] c"t8: %i\0A\00"
@.str.9 = [9 x i8] c"t9: %i\0A\00"
@.str.10 = [9 x i8] c"t10: %i\0A\00"
@.str.11 = [9 x i8] c"t11: %i\0A\00"
@.str.12 = [9 x i8] c"t12: %i\0A\00"
@.str.13 = [9 x i8] c"t13: %i\0A\00"
@.str.14 = [9 x i8] c"t14: %i\0A\00"
@.str.15 = [9 x i8] c"t15: %i\0A\00"
@.str.16 = [9 x i8] c"t16: %i\0A\00"
@.str.17 = [9 x i8] c"t17: %i\0A\00"
@.str.18 = [9 x i8] c"t18: %i\0A\00"
@.str.19 = [9 x i8] c"t19: %i\0A\00"
@.str.20 = [9 x i8] c"t20: %i\0A\00"
@.str.21 = [9 x i8] c"t21: %i\0A\00"
@.str.22 = [9 x i8] c"t22: %i\0A\00"
define void @runTests() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 (...) @t1()
%3 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i32 %2)
%4 = tail call i32 (...) @t2()
%5 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i32 %4)
%6 = tail call i32 (...) @t3()
%7 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %6)
%8 = tail call i32 (...) @t4()
%9 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %8)
%10 = tail call i32 (...) @t5()
%11 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0), i32 %10)
%12 = tail call i32 (...) @t6()
%13 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), i32 %12)
%14 = tail call i32 (...) @t7()
%15 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i32 %14)
%16 = tail call i32 (...) @t8()
%17 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0), i32 %16)
%18 = tail call i32 (...) @t9()
%19 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0), i32 %18)
%20 = tail call i32 (...) @t10()
%21 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 %20)
%22 = tail call i32 (...) @t11()
%23 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), i32 %22)
%24 = tail call i32 (...) @t12()
%25 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i32 %24)
%26 = tail call i32 (...) @t13()
%27 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), i32 %26)
%28 = tail call i32 (...) @t14()
%29 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), i32 %28)
%30 = tail call i32 (...) @t15()
%31 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0), i32 %30)
%32 = tail call i32 (...) @t16()
%33 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %32)
%34 = tail call i32 (...) @t17()
%35 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.17, i64 0, i64 0), i32 %34)
%36 = tail call i32 (...) @t18()
%37 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0), i32 %36)
%38 = tail call i32 (...) @t19()
%39 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), i32 %38)
%40 = tail call i32 (...) @t20()
%41 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), i32 %40)
%42 = tail call i32 (...) @t21()
%43 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0), i32 %42)
%44 = tail call i32 (...) @t22()
%45 = tail call i32 @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0), i32 %44)
ret void
}