#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(void) {
  printf(
      "Usage: mbox-helper [action] [options] -f filename [header1 [header2 "
      "...]]\n"
      "Actions: only the last action given is applied\n"
      "    -c               compute the number of messages. If -p is given, "
      "process the file starting à the given offset\n"
      "    -d               return the headers of the messages given with the "
      "-m option. If no header is given in the\n"
      "                     command line options, all the headers are "
      "returned. The headers are return with the format:\n"
      "                        MSG1_ID\\n\n"
      "                        MSG1_OFFSET\\n\n"
      "                        MSG1_HEADER1_NAME\\n\n"
      "                        MSG1_HEADER1_VALUE\\n\n"
      "                        MSG1_HEADER2_NAME\\n\n"
      "                        MSG2_HEADER2_VALUE\\n\n"
      "                        ...\n"
      "                     Messages are separated by a blank line\n"
      "    -b               return the body of the message given by -m (only 1 "
      "message is returned)\n"
      "Options:\n"
      "    -m begin[:end]   id or range of messages to process\n"
      "    -p id:pos        indicate that message `id` begins at offset `pos`\n"
      "    -h               print this help\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 = [1065 x i8] c"Usage: mbox-helper [action] [options] -f filename [header1 [header2 ...]]\0AActions: only the last action given is applied\0A -c compute the number of messages. If -p is given, process the file starting \C3\A0 the given offset\0A -d return the headers of the messages given with the -m option. If no header is given in the\0A command line options, all the headers are returned. The headers are return with the format:\0A MSG1_ID\\n\0A MSG1_OFFSET\\n\0A MSG1_HEADER1_NAME\\n\0A MSG1_HEADER1_VALUE\\n\0A MSG1_HEADER2_NAME\\n\0A MSG2_HEADER2_VALUE\\n\0A ...\0A Messages are separated by a blank line\0A -b return the body of the message given by -m (only 1 message is returned)\0AOptions:\0A -m begin[:end] id or range of messages to process\0A -p id:pos indicate that message `id` begins at offset `pos`\0A -h print this help\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1065 x i8], [1065 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1064 x i8] c"Usage: mbox-helper [action] [options] -f filename [header1 [header2 ...]]\0AActions: only the last action given is applied\0A -c compute the number of messages. If -p is given, process the file starting \C3\A0 the given offset\0A -d return the headers of the messages given with the -m option. If no header is given in the\0A command line options, all the headers are returned. The headers are return with the format:\0A MSG1_ID\\n\0A MSG1_OFFSET\\n\0A MSG1_HEADER1_NAME\\n\0A MSG1_HEADER1_VALUE\\n\0A MSG1_HEADER2_NAME\\n\0A MSG2_HEADER2_VALUE\\n\0A ...\0A Messages are separated by a blank line\0A -b return the body of the message given by -m (only 1 message is returned)\0AOptions:\0A -m begin[:end] id or range of messages to process\0A -p id:pos indicate that message `id` begins at offset `pos`\0A -h print this help\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1064 x i8], [1064 x i8]* @str, i64 0, i64 0))
ret void
}