#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 /*<<< orphan*/ sleep(int);
int /*<<< orphan*/ system(char *);
void printSplash() {
  system("clear");
  printf("\n\n\n\n\n\n##          ###    ##    ## ##     ## ########  ######   "
         "######     ###    ##    ##  ######   ######## ########  \n##         "
         "## ##   ###   ## ###   ### ##       ##    ## ##    ##   ## ##   ###  "
         " ## ##    ##  ##       ##     ## \n##        ##   ##  ####  ## #### "
         "#### ##       ##       ##        ##   ##  ####  ## ##        ##      "
         " ##     ## \n##       ##     ## ## ## ## ## ### ## ######    ######  "
         " ######  ##     ## ## ## ## ##   #### ######   ########  \n##       "
         "######### ##  #### ##     ## ##             ##       ## ######### ## "
         " #### ##    ##  ##       ##   ##   \n##       ##     ## ##   ### ##  "
         "   ## ##       ##    ## ##    ## ##     ## ##   ### ##    ##  ##     "
         "  ##    ##  \n######## ##     ## ##    ## ##     ## ########  ###### "
         "  ######  ##     ## ##    ##  ######   ######## ##     ## \n\n\n\n");
  sleep(1);
  system("clear");
}


x86 assembly (clang, -O0):
<printSplash>:
push   %rbp
mov    %rsp,%rbp
lea    0xec5(%rip),%rdi
call   1030 <system@plt>
lea    0xebf(%rip),%rdi
call   1040 <printf@plt>
mov    $0x1,%edi
call   1050 <sleep@plt>
lea    0xea3(%rip),%rdi
call   1030 <system@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<printSplash>:
push   %rbx
lea    0xec8(%rip),%rbx
mov    %rbx,%rdi
call   1040 <system@plt>
lea    0xebf(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1050 <sleep@plt>
mov    %rbx,%rdi
pop    %rbx
jmp    1040 <system@plt>

LLVM IR (-O0):
@.str = [6 x i8] c"clear\00"
@.str.1 = [808 x i8] c"\0A\0A\0A\0A\0A\0A## ### ## ## ## ## ######## ###### ###### ### ## ## ###### ######## ######## \0A## ## ## ### ## ### ### ## ## ## ## ## ## ## ### ## ## ## ## ## ## \0A## ## ## #### ## #### #### ## ## ## ## ## #### ## ## ## ## ## \0A## ## ## ## ## ## ## ### ## ###### ###### ###### ## ## ## ## ## ## #### ###### ######## \0A## ######### ## #### ## ## ## ## ## ######### ## #### ## ## ## ## ## \0A## ## ## ## ### ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## ## \0A######## ## ## ## ## ## ## ######## ###### ###### ## ## ## ## ###### ######## ## ## \0A\0A\0A\0A\00"
define void @printSplash() {
%1 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([808 x i8], [808 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @sleep(i32 1)
%4 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [6 x i8] c"clear\00"
@str = [807 x i8] c"\0A\0A\0A\0A\0A\0A## ### ## ## ## ## ######## ###### ###### ### ## ## ###### ######## ######## \0A## ## ## ### ## ### ### ## ## ## ## ## ## ## ### ## ## ## ## ## ## \0A## ## ## #### ## #### #### ## ## ## ## ## #### ## ## ## ## ## \0A## ## ## ## ## ## ## ### ## ###### ###### ###### ## ## ## ## ## ## #### ###### ######## \0A## ######### ## #### ## ## ## ## ## ######### ## #### ## ## ## ## ## \0A## ## ## ## ### ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## ## \0A######## ## ## ## ## ## ## ######## ###### ###### ## ## ## ## ###### ######## ## ## \0A\0A\0A\00"
define void @printSplash() {
%1 = tail call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([807 x i8], [807 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @sleep(i32 1)
%4 = tail call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
ret void
}