#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 help() {
  printf(
      "Possible Commands:\n   help - displays help\n   mkdir <pathname> - "
      "makes a new directory in under pathname\n   rmdir <pathname> - removes "
      "the specified directory\n   cd [pathname] - moves cwd to the specified "
      "directory. If no pathname is given, returns cwd to route.\n   ls "
      "[pathname] - displays all contents of the directory listed (or cwd if "
      "no directory is listed)\n   pwd - print the absolute path of the cwd\n  "
      " creat <pathname> - creates a file at the specified directory\n   rm "
      "<pathname> removes a file at the specified directory\n   save "
      "<filename> - save the current file system tree to a file\n   reload "
      "<filename> - load a file system tree from a file\n   reint - clears the "
      "current file tree\n   quit - quits the program\n");
}


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

x86 assembly (clang, -O2):
<help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [723 x i8] c"Possible Commands:\0A help - displays help\0A mkdir <pathname> - makes a new directory in under pathname\0A rmdir <pathname> - removes the specified directory\0A cd [pathname] - moves cwd to the specified directory. If no pathname is given, returns cwd to route.\0A ls [pathname] - displays all contents of the directory listed (or cwd if no directory is listed)\0A pwd - print the absolute path of the cwd\0A creat <pathname> - creates a file at the specified directory\0A rm <pathname> removes a file at the specified directory\0A save <filename> - save the current file system tree to a file\0A reload <filename> - load a file system tree from a file\0A reint - clears the current file tree\0A quit - quits the program\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([723 x i8], [723 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [722 x i8] c"Possible Commands:\0A help - displays help\0A mkdir <pathname> - makes a new directory in under pathname\0A rmdir <pathname> - removes the specified directory\0A cd [pathname] - moves cwd to the specified directory. If no pathname is given, returns cwd to route.\0A ls [pathname] - displays all contents of the directory listed (or cwd if no directory is listed)\0A pwd - print the absolute path of the cwd\0A creat <pathname> - creates a file at the specified directory\0A rm <pathname> removes a file at the specified directory\0A save <filename> - save the current file system tree to a file\0A reload <filename> - load a file system tree from a file\0A reint - clears the current file tree\0A quit - quits the program\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([722 x i8], [722 x i8]* @str, i64 0, i64 0))
ret void
}