#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 printcmds() {
  printf(
      "try: \t ./vfs ARCHIVE OPERATION [PARAMETERS]\n"
      "ARCHIVE \t\t Pfad und Dateiname (ohne Endung) zu den Dateien, die das\n"
      "\t\t\t VFS enthalten/verwalten\n"
      "OPERATION:\n"
      "\t create [BLOCKSIZE] [BLOCKCOUNT] \t ein neues VFS anlegen\n"
      "\t add [SOURCE] [TARGET] \t\t\t eine Datei mit Namen [TARGET] zum VFS "
      "hinzufugen\n"
      "\t del [TARGET] \t\t\t\t Datei mit dem Index [TARGET] aus dem VFS "
      "loschen\n"
      "\t defrag \t\t\t\t Defragmentierung des VFS\n"
      "\t free \t\t\t\t\t den freien Speicher (in Byte) des VFS ausgeben\n"
      "\t get [SOURCE] [OUTPUT] \t\t\t Datei mit dem Index [SOURCE] aus dem "
      "VFS lesen\n"
      "\t list \t\t\t\t\t eine Liste der gespeicherten Dateien ausgeben\n"
      "\t used \t\t\t\t\t den belegten Speicher (in Byte) des VFS ausgeben\n"
      "PARAMETERS \t\t Parameter, die von der ausgewahlten Operation benotigt "
      "werden\n");
}


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

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

LLVM IR (-O0):
@.str = [727 x i8] c"try: \09 ./vfs ARCHIVE OPERATION [PARAMETERS]\0AARCHIVE \09\09 Pfad und Dateiname (ohne Endung) zu den Dateien, die das\0A\09\09\09 VFS enthalten/verwalten\0AOPERATION:\0A\09 create [BLOCKSIZE] [BLOCKCOUNT] \09 ein neues VFS anlegen\0A\09 add [SOURCE] [TARGET] \09\09\09 eine Datei mit Namen [TARGET] zum VFS hinzufugen\0A\09 del [TARGET] \09\09\09\09 Datei mit dem Index [TARGET] aus dem VFS loschen\0A\09 defrag \09\09\09\09 Defragmentierung des VFS\0A\09 free \09\09\09\09\09 den freien Speicher (in Byte) des VFS ausgeben\0A\09 get [SOURCE] [OUTPUT] \09\09\09 Datei mit dem Index [SOURCE] aus dem VFS lesen\0A\09 list \09\09\09\09\09 eine Liste der gespeicherten Dateien ausgeben\0A\09 used \09\09\09\09\09 den belegten Speicher (in Byte) des VFS ausgeben\0APARAMETERS \09\09 Parameter, die von der ausgewahlten Operation benotigt werden\0A\00"
define void @printcmds() {
%1 = call i32 @printf(i8* getelementptr inbounds ([727 x i8], [727 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [726 x i8] c"try: \09 ./vfs ARCHIVE OPERATION [PARAMETERS]\0AARCHIVE \09\09 Pfad und Dateiname (ohne Endung) zu den Dateien, die das\0A\09\09\09 VFS enthalten/verwalten\0AOPERATION:\0A\09 create [BLOCKSIZE] [BLOCKCOUNT] \09 ein neues VFS anlegen\0A\09 add [SOURCE] [TARGET] \09\09\09 eine Datei mit Namen [TARGET] zum VFS hinzufugen\0A\09 del [TARGET] \09\09\09\09 Datei mit dem Index [TARGET] aus dem VFS loschen\0A\09 defrag \09\09\09\09 Defragmentierung des VFS\0A\09 free \09\09\09\09\09 den freien Speicher (in Byte) des VFS ausgeben\0A\09 get [SOURCE] [OUTPUT] \09\09\09 Datei mit dem Index [SOURCE] aus dem VFS lesen\0A\09 list \09\09\09\09\09 eine Liste der gespeicherten Dateien ausgeben\0A\09 used \09\09\09\09\09 den belegten Speicher (in Byte) des VFS ausgeben\0APARAMETERS \09\09 Parameter, die von der ausgewahlten Operation benotigt werden\00"
define void @printcmds() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([726 x i8], [726 x i8]* @str, i64 0, i64 0))
ret void
}