#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 *, char *, char *, char *, char *, char *,
                          char *, char *);
int main(void) {
  char lastName[20] = "Zelioli";
  char firstName[20] = "Luca";
  char studentNumber[20] = "1005936";
  char programmingExp[20] = "C C C++";
  char motivationToLearn[20] = "super High";
  char grade[20] = "5";
  char myPlane[30] = "studing hard";
  printf("Student:\n\nLast name:\t\t\t\t %s\nFirst name:\t\t\t\t %s\nStudent "
         "number:\t\t\t\t %s\nProgramming experience:\t\t\t %s\nMotivation to "
         "learn C:\t\t\t %s\nGrade I aim at:\t\t\t\t %s\nMy plan to achieve "
         "that grade:\t\t %s\n",
         lastName, firstName, studentNumber, programmingExp, motivationToLearn,
         grade, myPlane);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movl   $0x0,-0x4(%rbp)
mov    0xed7(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xed4(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    0xed2(%rip),%eax
mov    %eax,-0x10(%rbp)
mov    0xed8(%rip),%rax
mov    %rax,-0x40(%rbp)
mov    0xed5(%rip),%rax
mov    %rax,-0x38(%rbp)
mov    0xed3(%rip),%eax
mov    %eax,-0x30(%rbp)
mov    0xed9(%rip),%rax
mov    %rax,-0x60(%rbp)
mov    0xed6(%rip),%rax
mov    %rax,-0x58(%rbp)
mov    0xed4(%rip),%eax
mov    %eax,-0x50(%rbp)
mov    0xeda(%rip),%rax
mov    %rax,-0x80(%rbp)
mov    0xed7(%rip),%rax
mov    %rax,-0x78(%rbp)
mov    0xed5(%rip),%eax
mov    %eax,-0x70(%rbp)
mov    0xedb(%rip),%rax
mov    %rax,-0xa0(%rbp)
mov    0xed5(%rip),%rax
mov    %rax,-0x98(%rbp)
mov    0xed0(%rip),%eax
mov    %eax,-0x90(%rbp)
mov    0xed3(%rip),%rax
mov    %rax,-0xc0(%rbp)
mov    0xecd(%rip),%rax
mov    %rax,-0xb8(%rbp)
mov    0xec8(%rip),%eax
mov    %eax,-0xb0(%rbp)
mov    0xecb(%rip),%rax
mov    %rax,-0xe0(%rbp)
mov    0xec5(%rip),%rax
mov    %rax,-0xd8(%rbp)
mov    0xebf(%rip),%rax
mov    %rax,-0xd0(%rbp)
mov    0xeba(%rip),%eax
mov    %eax,-0xc8(%rbp)
mov    0xeb1(%rip),%ax
mov    %ax,-0xc4(%rbp)
lea    -0x20(%rbp),%rsi
lea    -0x40(%rbp),%rdx
lea    -0x60(%rbp),%rcx
lea    -0x80(%rbp),%r8
lea    -0xa0(%rbp),%r9
lea    -0xc0(%rbp),%r10
lea    -0xe0(%rbp),%rax
lea    0xe80(%rip),%rdi
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0xe8,%rsp
movaps 0xee2(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movl   $0x0,0xb0(%rsp)
movaps 0xee8(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movl   $0x0,0x90(%rsp)
movaps 0xeee(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movl   $0x0,0x70(%rsp)
movaps 0xefa(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movl   $0x0,0x50(%rsp)
movaps 0xf06(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movl   $0x0,0x30(%rsp)
movaps 0xf12(%rip),%xmm0
movaps %xmm0,(%rsp)
movl   $0x0,0x10(%rsp)
movups 0xf2d(%rip),%xmm0
movups %xmm0,0xce(%rsp)
movaps 0xf10(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
lea    0xc0(%rsp),%rax
mov    %rsp,%r10
lea    0xf14(%rip),%rdi
lea    0xa0(%rsp),%rsi
lea    0x80(%rsp),%rdx
lea    0x60(%rsp),%rcx
lea    0x40(%rsp),%r8
lea    0x20(%rsp),%r9
push   %rax
push   %r10
call   1030 <printf@plt>
add    $0x10,%rsp
xor    %eax,%eax
add    $0xe8,%rsp
ret

LLVM IR (-O0):
@__const.main.lastName = [20 x i8] c"Zelioli\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.firstName = [20 x i8] c"Luca\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.studentNumber = [20 x i8] c"1005936\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.programmingExp = [20 x i8] c"C C C++\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.motivationToLearn = [20 x i8] c"super High\00\00\00\00\00\00\00\00\00\00"
@__const.main.grade = [20 x i8] c"5\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.myPlane = [30 x i8] c"studing hard\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@.str = [189 x i8] c"Student:\0A\0ALast name:\09\09\09\09 %s\0AFirst name:\09\09\09\09 %s\0AStudent number:\09\09\09\09 %s\0AProgramming experience:\09\09\09 %s\0AMotivation to learn C:\09\09\09 %s\0AGrade I aim at:\09\09\09\09 %s\0AMy plan to achieve that grade:\09\09 %s\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [20 x i8]
%3 = alloca [20 x i8]
%4 = alloca [20 x i8]
%5 = alloca [20 x i8]
%6 = alloca [20 x i8]
%7 = alloca [20 x i8]
%8 = alloca [30 x i8]
store i32 0, i32* %1
%9 = bitcast [20 x i8]* %2 to i8*
%10 = bitcast [20 x i8]* %3 to i8*
%11 = bitcast [20 x i8]* %4 to i8*
%12 = bitcast [20 x i8]* %5 to i8*
%13 = bitcast [20 x i8]* %6 to i8*
%14 = bitcast [20 x i8]* %7 to i8*
%15 = bitcast [30 x i8]* %8 to i8*
%16 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%17 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%18 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%19 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%20 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%21 = getelementptr inbounds [20 x i8], [20 x i8]* %7, i64 0, i64 0
%22 = getelementptr inbounds [30 x i8], [30 x i8]* %8, i64 0, i64 0
%23 = call i32 @printf(i8* getelementptr inbounds ([189 x i8], [189 x i8]* @.str, i64 0, i64 0), i8* %16, i8* %17, i8* %18, i8* %19, i8* %20, i8* %21, i8* %22)
ret i32 0
}

LLVM IR (-O2):
@__const.main.lastName = [20 x i8] c"Zelioli\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.firstName = [20 x i8] c"Luca\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.studentNumber = [20 x i8] c"1005936\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.programmingExp = [20 x i8] c"C C C++\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.motivationToLearn = [20 x i8] c"super High\00\00\00\00\00\00\00\00\00\00"
@__const.main.grade = [20 x i8] c"5\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.myPlane = [30 x i8] c"studing hard\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@.str = [189 x i8] c"Student:\0A\0ALast name:\09\09\09\09 %s\0AFirst name:\09\09\09\09 %s\0AStudent number:\09\09\09\09 %s\0AProgramming experience:\09\09\09 %s\0AMotivation to learn C:\09\09\09 %s\0AGrade I aim at:\09\09\09\09 %s\0AMy plan to achieve that grade:\09\09 %s\0A\00"
define i32 @main() {
%1 = alloca [20 x i8]
%2 = alloca [20 x i8]
%3 = alloca [20 x i8]
%4 = alloca [20 x i8]
%5 = alloca [20 x i8]
%6 = alloca [20 x i8]
%7 = alloca [30 x i8]
%8 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%9 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%10 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%11 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%12 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%14 = getelementptr inbounds [30 x i8], [30 x i8]* %7, i64 0, i64 0
%15 = call i32 @printf(i8* getelementptr inbounds ([189 x i8], [189 x i8]* @.str, i64 0, i64 0), i8* %8, i8* %9, i8* %10, i8* %11, i8* %12, i8* %13, i8* %14)
ret i32 0
}