#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 *);
void readA() {
  printf("\n\n*************************************************\n");
  printf("{|} Aristote's Metaphysics 350 B.C. Book VIII {|}\n");
  printf("*************************************************\n\n");
  printf("To return to the difficulty which has been stated with respect both "
         "to definitions and to numbers, what is the cause of their unity? In "
         "the case of all things which have several parts and in which the "
         "totality is not, as it were, a mere heap, but the whole is something "
         "beside the parts, there is a cause; for even in bodies contact is "
         "the cause of unity in some cases, and in others viscosity or some "
         "other such quality. And a definition is a set of words which is one "
         "not by being connected together, like the Iliad, but by dealing with "
         "one object.-What then, is it that makes man one; why is he one and "
         "not many, e.g. animal + biped, especially if there are, as some say, "
         "an animal-itself and a biped-itself? Why are not those Forms "
         "themselves the man, so that men would exist by participation not in "
         "man, nor in-one Form, but in two, animal and biped, and in general "
         "man would be not one but more than one thing, animal and biped? \n");
}


x86 assembly (clang, -O0):
<readA>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf0e(%rip),%rdi
call   1030 <printf@plt>
lea    0xf35(%rip),%rdi
call   1030 <printf@plt>
lea    0xf5d(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<readA>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xf10(%rip),%rdi
call   1030 <puts@plt>
lea    0xf36(%rip),%rdi
call   1030 <puts@plt>
lea    0xf5d(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [53 x i8] c"\0A\0A*************************************************\0A\00"
@.str.1 = [51 x i8] c"{|} Aristote's Metaphysics 350 B.C. Book VIII {|}\0A\00"
@.str.2 = [52 x i8] c"*************************************************\0A\0A\00"
@.str.3 = [937 x i8] c"To return to the difficulty which has been stated with respect both to definitions and to numbers, what is the cause of their unity? In the case of all things which have several parts and in which the totality is not, as it were, a mere heap, but the whole is something beside the parts, there is a cause; for even in bodies contact is the cause of unity in some cases, and in others viscosity or some other such quality. And a definition is a set of words which is one not by being connected together, like the Iliad, but by dealing with one object.-What then, is it that makes man one; why is he one and not many, e.g. animal + biped, especially if there are, as some say, an animal-itself and a biped-itself? Why are not those Forms themselves the man, so that men would exist by participation not in man, nor in-one Form, but in two, animal and biped, and in general man would be not one but more than one thing, animal and biped? \0A\00"
define void @readA() {
%1 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([937 x i8], [937 x i8]* @.str.3, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [52 x i8] c"\0A\0A*************************************************\00"
@str.4 = [50 x i8] c"{|} Aristote's Metaphysics 350 B.C. Book VIII {|}\00"
@str.5 = [51 x i8] c"*************************************************\0A\00"
@str.6 = [936 x i8] c"To return to the difficulty which has been stated with respect both to definitions and to numbers, what is the cause of their unity? In the case of all things which have several parts and in which the totality is not, as it were, a mere heap, but the whole is something beside the parts, there is a cause; for even in bodies contact is the cause of unity in some cases, and in others viscosity or some other such quality. And a definition is a set of words which is one not by being connected together, like the Iliad, but by dealing with one object.-What then, is it that makes man one; why is he one and not many, e.g. animal + biped, especially if there are, as some say, an animal-itself and a biped-itself? Why are not those Forms themselves the man, so that men would exist by participation not in man, nor in-one Form, but in two, animal and biped, and in general man would be not one but more than one thing, animal and biped? \00"
define void @readA() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.4, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.5, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([936 x i8], [936 x i8]* @str.6, i64 0, i64 0))
ret void
}