#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *);
int /*<<< orphan*/ printf(char *);
void example_files() {
  FILE *test;
  FILE *age;
  test = fopen("test.tre", "w");
  age = fopen("age.dat", "w");
  fprintf(test, "66 :  19  8  1  0\n");
  fprintf(test, " 8 :  12 19  8  1  0\n");
  fprintf(test, " 1 :   5 19  8  1  0\n");
  fprintf(test, " 9 :   1  0\n");
  fprintf(test, " 3 :  18  0\n");
  fprintf(test, " 1 :  17 18  0\n");
  fprintf(test, "18 :   0\n");
  fprintf(test, "71 :  16  1  0\n");
  fprintf(test, " 2 :  11 16  1  0\n");
  fprintf(test, " 1 :  15  1  0\n");
  fprintf(test, "24 :  10  6  3 15  1  0\n");
  fprintf(test, " 5 :   7 10  6  3 15  1  0\n");
  fprintf(test, " 5 :   2  7 10  6  3 15  1  0\n");
  fprintf(test, "15 :  14  7 10  6  3 15  1  0\n");
  fprintf(test, " 1 :   9  7 10  6  3 15  1  0\n");
  fprintf(test, "12 :  13  9  7 10  6  3 15  1  0\n");
  fprintf(age, "19 3.54\n");
  fprintf(age, "18 1.75\n");
  fprintf(age, "17 0.268\n");
  fprintf(age, "16 3.72\n");
  fprintf(age, "15 7.09\n");
  fprintf(age, "14 0.933\n");
  fprintf(age, "13 0.588\n");
  fprintf(age, "12 0.579\n");
  fprintf(age, "11 0.303\n");
  fprintf(age, "10 3.78\n");
  fprintf(age, "9 1.22\n");
  fprintf(age, "8 5.06\n");
  fprintf(age, "7 2.46\n");
  fprintf(age, "6 4.49\n");
  fprintf(age, "5 0.143\n");
  fprintf(age, "3 5.18\n");
  fprintf(age, "2 0.685\n");
  fprintf(age, "1 10.14\n");
  fprintf(age, "0 13.84\n");
  fprintf(age, "4  -1.0\n");
  fclose(age);
  fclose(test);
  printf("\tExample files test.tre and age.dat written\n");
}


x86 assembly (clang, -O0):
<example_files>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0xeb1(%rip),%rdi
lea    0xeb3(%rip),%rsi
call   1060 <fopen@plt>
mov    %rax,-0x8(%rbp)
lea    0xea5(%rip),%rdi
lea    0xe9c(%rip),%rsi
call   1060 <fopen@plt>
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xe92(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe95(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe9b(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xea1(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe9e(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe9b(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe9b(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe95(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe95(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe98(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xe98(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xea1(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xead(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xebc(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xecb(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xeda(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xeec(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xee5(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xede(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xed8(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xed1(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xeca(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xec4(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xebe(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xeb8(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xeb2(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xeab(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xea3(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe9b(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe93(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe8b(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe84(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe7c(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe75(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe6e(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
lea    0xe67(%rip),%rsi
call   1050 <fprintf@plt>
mov    -0x10(%rbp),%rdi
call   1030 <fclose@plt>
mov    -0x8(%rbp),%rdi
call   1030 <fclose@plt>
lea    0xe52(%rip),%rdi
call   1040 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<example_files>:
push   %r14
push   %rbx
push   %rax
lea    0xeb5(%rip),%rdi
lea    0xeb7(%rip),%rbx
mov    %rbx,%rsi
call   1050 <fopen@plt>
mov    %rax,%r14
lea    0xea7(%rip),%rdi
mov    %rbx,%rsi
call   1050 <fopen@plt>
mov    %rax,%rbx
lea    0xe9d(%rip),%rdi
mov    $0x12,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe97(%rip),%rdi
mov    $0x15,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe94(%rip),%rdi
mov    $0x15,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe91(%rip),%rdi
mov    $0xc,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe85(%rip),%rdi
mov    $0xc,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe79(%rip),%rdi
mov    $0xf,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe70(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe61(%rip),%rdi
mov    $0xf,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe58(%rip),%rdi
mov    $0x12,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe52(%rip),%rdi
mov    $0xf,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe49(%rip),%rdi
mov    $0x18,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe49(%rip),%rdi
mov    $0x1b,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe4c(%rip),%rdi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe52(%rip),%rdi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe58(%rip),%rdi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe5e(%rip),%rdi
mov    $0x21,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1060 <fwrite@plt>
lea    0xe67(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe57(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe47(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe38(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe28(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe18(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xe09(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xdfa(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xdeb(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xddc(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xdcc(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xdbb(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xdaa(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd99(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd88(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd78(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd67(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd57(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd47(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xd37(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    %rbx,%rdi
call   1040 <fclose@plt>
mov    %r14,%rdi
call   1040 <fclose@plt>
lea    0xd17(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r14
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [9 x i8] c"test.tre\00"
@.str.1 = [2 x i8] c"w\00"
@.str.2 = [8 x i8] c"age.dat\00"
@.str.3 = [19 x i8] c"66 : 19 8 1 0\0A\00"
@.str.4 = [22 x i8] c" 8 : 12 19 8 1 0\0A\00"
@.str.5 = [22 x i8] c" 1 : 5 19 8 1 0\0A\00"
@.str.6 = [13 x i8] c" 9 : 1 0\0A\00"
@.str.7 = [13 x i8] c" 3 : 18 0\0A\00"
@.str.8 = [16 x i8] c" 1 : 17 18 0\0A\00"
@.str.9 = [10 x i8] c"18 : 0\0A\00"
@.str.10 = [16 x i8] c"71 : 16 1 0\0A\00"
@.str.11 = [19 x i8] c" 2 : 11 16 1 0\0A\00"
@.str.12 = [16 x i8] c" 1 : 15 1 0\0A\00"
@.str.13 = [25 x i8] c"24 : 10 6 3 15 1 0\0A\00"
@.str.14 = [28 x i8] c" 5 : 7 10 6 3 15 1 0\0A\00"
@.str.15 = [31 x i8] c" 5 : 2 7 10 6 3 15 1 0\0A\00"
@.str.16 = [31 x i8] c"15 : 14 7 10 6 3 15 1 0\0A\00"
@.str.17 = [31 x i8] c" 1 : 9 7 10 6 3 15 1 0\0A\00"
@.str.18 = [34 x i8] c"12 : 13 9 7 10 6 3 15 1 0\0A\00"
@.str.19 = [9 x i8] c"19 3.54\0A\00"
@.str.20 = [9 x i8] c"18 1.75\0A\00"
@.str.21 = [10 x i8] c"17 0.268\0A\00"
@.str.22 = [9 x i8] c"16 3.72\0A\00"
@.str.23 = [9 x i8] c"15 7.09\0A\00"
@.str.24 = [10 x i8] c"14 0.933\0A\00"
@.str.25 = [10 x i8] c"13 0.588\0A\00"
@.str.26 = [10 x i8] c"12 0.579\0A\00"
@.str.27 = [10 x i8] c"11 0.303\0A\00"
@.str.28 = [9 x i8] c"10 3.78\0A\00"
@.str.29 = [8 x i8] c"9 1.22\0A\00"
@.str.30 = [8 x i8] c"8 5.06\0A\00"
@.str.31 = [8 x i8] c"7 2.46\0A\00"
@.str.32 = [8 x i8] c"6 4.49\0A\00"
@.str.33 = [9 x i8] c"5 0.143\0A\00"
@.str.34 = [8 x i8] c"3 5.18\0A\00"
@.str.35 = [9 x i8] c"2 0.685\0A\00"
@.str.36 = [9 x i8] c"1 10.14\0A\00"
@.str.37 = [9 x i8] c"0 13.84\0A\00"
@.str.38 = [9 x i8] c"4 -1.0\0A\00"
@.str.39 = [45 x i8] c"\09Example files test.tre and age.dat written\0A\00"
define void @example_files() {
%1 = alloca i32*
%2 = alloca i32*
%3 = call i32* @fopen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %3, i32** %1
%4 = call i32* @fopen(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %4, i32** %2
%5 = load i32*, i32** %1
%6 = call i32 @fprintf(i32* %5, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
%7 = load i32*, i32** %1
%8 = call i32 @fprintf(i32* %7, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
%9 = load i32*, i32** %1
%10 = call i32 @fprintf(i32* %9, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
%11 = load i32*, i32** %1
%12 = call i32 @fprintf(i32* %11, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0))
%13 = load i32*, i32** %1
%14 = call i32 @fprintf(i32* %13, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
%15 = load i32*, i32** %1
%16 = call i32 @fprintf(i32* %15, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0))
%17 = load i32*, i32** %1
%18 = call i32 @fprintf(i32* %17, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
%19 = load i32*, i32** %1
%20 = call i32 @fprintf(i32* %19, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%21 = load i32*, i32** %1
%22 = call i32 @fprintf(i32* %21, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0))
%23 = load i32*, i32** %1
%24 = call i32 @fprintf(i32* %23, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.12, i64 0, i64 0))
%25 = load i32*, i32** %1
%26 = call i32 @fprintf(i32* %25, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0))
%27 = load i32*, i32** %1
%28 = call i32 @fprintf(i32* %27, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0))
%29 = load i32*, i32** %1
%30 = call i32 @fprintf(i32* %29, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0))
%31 = load i32*, i32** %1
%32 = call i32 @fprintf(i32* %31, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.16, i64 0, i64 0))
%33 = load i32*, i32** %1
%34 = call i32 @fprintf(i32* %33, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.17, i64 0, i64 0))
%35 = load i32*, i32** %1
%36 = call i32 @fprintf(i32* %35, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.18, i64 0, i64 0))
%37 = load i32*, i32** %2
%38 = call i32 @fprintf(i32* %37, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
%39 = load i32*, i32** %2
%40 = call i32 @fprintf(i32* %39, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0))
%41 = load i32*, i32** %2
%42 = call i32 @fprintf(i32* %41, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0))
%43 = load i32*, i32** %2
%44 = call i32 @fprintf(i32* %43, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0))
%45 = load i32*, i32** %2
%46 = call i32 @fprintf(i32* %45, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.23, i64 0, i64 0))
%47 = load i32*, i32** %2
%48 = call i32 @fprintf(i32* %47, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.24, i64 0, i64 0))
%49 = load i32*, i32** %2
%50 = call i32 @fprintf(i32* %49, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.25, i64 0, i64 0))
%51 = load i32*, i32** %2
%52 = call i32 @fprintf(i32* %51, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.26, i64 0, i64 0))
%53 = load i32*, i32** %2
%54 = call i32 @fprintf(i32* %53, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.27, i64 0, i64 0))
%55 = load i32*, i32** %2
%56 = call i32 @fprintf(i32* %55, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.28, i64 0, i64 0))
%57 = load i32*, i32** %2
%58 = call i32 @fprintf(i32* %57, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0))
%59 = load i32*, i32** %2
%60 = call i32 @fprintf(i32* %59, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0))
%61 = load i32*, i32** %2
%62 = call i32 @fprintf(i32* %61, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
%63 = load i32*, i32** %2
%64 = call i32 @fprintf(i32* %63, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0))
%65 = load i32*, i32** %2
%66 = call i32 @fprintf(i32* %65, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0))
%67 = load i32*, i32** %2
%68 = call i32 @fprintf(i32* %67, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.34, i64 0, i64 0))
%69 = load i32*, i32** %2
%70 = call i32 @fprintf(i32* %69, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0))
%71 = load i32*, i32** %2
%72 = call i32 @fprintf(i32* %71, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0))
%73 = load i32*, i32** %2
%74 = call i32 @fprintf(i32* %73, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.37, i64 0, i64 0))
%75 = load i32*, i32** %2
%76 = call i32 @fprintf(i32* %75, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.38, i64 0, i64 0))
%77 = load i32*, i32** %2
%78 = call i32 @fclose(i32* %77)
%79 = load i32*, i32** %1
%80 = call i32 @fclose(i32* %79)
%81 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [9 x i8] c"test.tre\00"
@.str.1 = [2 x i8] c"w\00"
@.str.2 = [8 x i8] c"age.dat\00"
@.str.3 = [19 x i8] c"66 : 19 8 1 0\0A\00"
@.str.4 = [22 x i8] c" 8 : 12 19 8 1 0\0A\00"
@.str.5 = [22 x i8] c" 1 : 5 19 8 1 0\0A\00"
@.str.6 = [13 x i8] c" 9 : 1 0\0A\00"
@.str.7 = [13 x i8] c" 3 : 18 0\0A\00"
@.str.8 = [16 x i8] c" 1 : 17 18 0\0A\00"
@.str.9 = [10 x i8] c"18 : 0\0A\00"
@.str.10 = [16 x i8] c"71 : 16 1 0\0A\00"
@.str.11 = [19 x i8] c" 2 : 11 16 1 0\0A\00"
@.str.12 = [16 x i8] c" 1 : 15 1 0\0A\00"
@.str.13 = [25 x i8] c"24 : 10 6 3 15 1 0\0A\00"
@.str.14 = [28 x i8] c" 5 : 7 10 6 3 15 1 0\0A\00"
@.str.15 = [31 x i8] c" 5 : 2 7 10 6 3 15 1 0\0A\00"
@.str.16 = [31 x i8] c"15 : 14 7 10 6 3 15 1 0\0A\00"
@.str.17 = [31 x i8] c" 1 : 9 7 10 6 3 15 1 0\0A\00"
@.str.18 = [34 x i8] c"12 : 13 9 7 10 6 3 15 1 0\0A\00"
@.str.19 = [9 x i8] c"19 3.54\0A\00"
@.str.20 = [9 x i8] c"18 1.75\0A\00"
@.str.21 = [10 x i8] c"17 0.268\0A\00"
@.str.22 = [9 x i8] c"16 3.72\0A\00"
@.str.23 = [9 x i8] c"15 7.09\0A\00"
@.str.24 = [10 x i8] c"14 0.933\0A\00"
@.str.25 = [10 x i8] c"13 0.588\0A\00"
@.str.26 = [10 x i8] c"12 0.579\0A\00"
@.str.27 = [10 x i8] c"11 0.303\0A\00"
@.str.28 = [9 x i8] c"10 3.78\0A\00"
@.str.29 = [8 x i8] c"9 1.22\0A\00"
@.str.30 = [8 x i8] c"8 5.06\0A\00"
@.str.31 = [8 x i8] c"7 2.46\0A\00"
@.str.32 = [8 x i8] c"6 4.49\0A\00"
@.str.33 = [9 x i8] c"5 0.143\0A\00"
@.str.34 = [8 x i8] c"3 5.18\0A\00"
@.str.35 = [9 x i8] c"2 0.685\0A\00"
@.str.36 = [9 x i8] c"1 10.14\0A\00"
@.str.37 = [9 x i8] c"0 13.84\0A\00"
@.str.38 = [9 x i8] c"4 -1.0\0A\00"
@str = [44 x i8] c"\09Example files test.tre and age.dat written\00"
define void @example_files() {
%1 = tail call i32* @fopen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32* @fopen(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i64 @fwrite(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0), i64 18, i64 1, i32* %1)
%4 = tail call i64 @fwrite(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0), i64 21, i64 1, i32* %1)
%5 = tail call i64 @fwrite(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i64 21, i64 1, i32* %1)
%6 = tail call i64 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), i64 12, i64 1, i32* %1)
%7 = tail call i64 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i64 12, i64 1, i32* %1)
%8 = tail call i64 @fwrite(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0), i64 15, i64 1, i32* %1)
%9 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i64 9, i64 1, i32* %1)
%10 = tail call i64 @fwrite(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), i64 15, i64 1, i32* %1)
%11 = tail call i64 @fwrite(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), i64 18, i64 1, i32* %1)
%12 = tail call i64 @fwrite(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.12, i64 0, i64 0), i64 15, i64 1, i32* %1)
%13 = tail call i64 @fwrite(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0), i64 24, i64 1, i32* %1)
%14 = tail call i64 @fwrite(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0), i64 27, i64 1, i32* %1)
%15 = tail call i64 @fwrite(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0), i64 30, i64 1, i32* %1)
%16 = tail call i64 @fwrite(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.16, i64 0, i64 0), i64 30, i64 1, i32* %1)
%17 = tail call i64 @fwrite(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.17, i64 0, i64 0), i64 30, i64 1, i32* %1)
%18 = tail call i64 @fwrite(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.18, i64 0, i64 0), i64 33, i64 1, i32* %1)
%19 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), i64 8, i64 1, i32* %2)
%20 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.20, i64 0, i64 0), i64 8, i64 1, i32* %2)
%21 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0), i64 9, i64 1, i32* %2)
%22 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0), i64 8, i64 1, i32* %2)
%23 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.23, i64 0, i64 0), i64 8, i64 1, i32* %2)
%24 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.24, i64 0, i64 0), i64 9, i64 1, i32* %2)
%25 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.25, i64 0, i64 0), i64 9, i64 1, i32* %2)
%26 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.26, i64 0, i64 0), i64 9, i64 1, i32* %2)
%27 = tail call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.27, i64 0, i64 0), i64 9, i64 1, i32* %2)
%28 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.28, i64 0, i64 0), i64 8, i64 1, i32* %2)
%29 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.29, i64 0, i64 0), i64 7, i64 1, i32* %2)
%30 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0), i64 7, i64 1, i32* %2)
%31 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0), i64 7, i64 1, i32* %2)
%32 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), i64 7, i64 1, i32* %2)
%33 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0), i64 8, i64 1, i32* %2)
%34 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.34, i64 0, i64 0), i64 7, i64 1, i32* %2)
%35 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0), i64 8, i64 1, i32* %2)
%36 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i64 8, i64 1, i32* %2)
%37 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.37, i64 0, i64 0), i64 8, i64 1, i32* %2)
%38 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.38, i64 0, i64 0), i64 8, i64 1, i32* %2)
%39 = tail call i32 @fclose(i32* %2)
%40 = tail call i32 @fclose(i32* %1)
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str, i64 0, i64 0))
ret void
}