#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*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *);
int /*<<< orphan*/ stderr;
void print_help() {
  fprintf(
      stderr, "%s",
      "webbymain -c <cfg_file> [ -v <vhost_definition> ] * [ -f "
      "<filter_definition> ] * [ -s <servlet_definition> ] *\n"
      "\n"
      "Starts webby http server.\n"
      "\n"
      "OPTIONS:\n"
      "\n"
      "-c <cfg_file>\n"
      "  the configuration file. This parameter is mandatory,\n"
      "  it also has to be the first command line option.\n"
      "  for format of file see CONFIGURATION FILE section\n"
      "\n"
      "-v <hostname>[,<port number>]\n"
      "  defines a new virtual host. This parameter is optional\n"
      "  If no virtual hosts are defined, then all values of HTTP header Host "
      "are accepted.\n"
      "  If there are virtual hosts, the nonly those values that match a "
      "virtual host definition\n"
      "  are accepted.\n"
      "  The first virtual host will be refered to as virtual host Id 0, the "
      "second as\n"
      "  virtual host Id 1, etc.\n"
      "\n"
      "-f [<virtual host id>],<shared library name>[,<filter factory "
      "function>]\n"
      "  instantiate a filter object from shared library and add it to the "
      "processing chain.\n"
      "\n"
      "  <virtual host id>	    - (optional) the virutal host id that the "
      "filter will be added to.\n"
      "  <shared library name>     - file name of shared library that hosts "
      "this filter.\n"
      "  <filter factory function> - (optional) the exported function name "
      "that creates the filter.\n"
      "    If this parameter is ommited then factory function load_filter is "
      "assumed.\n"
      "\n"
      "-s <shared library name>[,<servlet factory function>]\n"
      "  instantiate a servlet object from shared library and add it to the "
      "processing chain.\n"
      "\n"
      "  <shared library name>     - file name of shared library that hosts "
      "this shared library\n"
      "  <filter factory function> - (optional) the exported function name "
      "that creates the servlet.\n"
      "\n"
      "  If this parameter is ommited then factory function load_servlet is "
      "assumed.\n"
      "\n"
      "\n"
      "CONFIGURATION FILE\n"
      "\n"
      "An example configuration file:\n"
      "\n"
      "-------------------------------------------------------------------\n"
      "\n"
      "#  listening on the following interface (0.0.0.0 on all interfaces)\n"
      "host=0.0.0.0\n"
      "\n"
      "# listening address\n"
      "port=12321\n"
      "\n"
      "# backlog of accepted connections (accept(2) parameter)\n"
      "listen_backlog=30\n"
      "\n"
      "# read and write buffer sizes of connections\n"
      "socket_buffer_size=8192\n"
      "\n"
      "# maximum number of serviced connections.\n"
      "max_connections=300\n"
      "\n"
      "# read / write timeout (in seconds)\n"
      "io_timeout=30\n"
      "\n"
      "# connection idle timeout (in seconds)\n"
      "idle_timeout=300\n"
      "\n"
      "# size of the thread stack in memory pages.\n"
      "stack_pages_per_thread=8\n"
      "\n"
      "\n"
      "\n"
      "\n");
  exit(1);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
lea    0xec8(%rip),%rdx
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<print_help>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
lea    0xecb(%rip),%rdx
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [3 x i8] c"%s\00"
@.str.1 = [2244 x i8] c"webbymain -c <cfg_file> [ -v <vhost_definition> ] * [ -f <filter_definition> ] * [ -s <servlet_definition> ] *\0A\0AStarts webby http server.\0A\0AOPTIONS:\0A\0A-c <cfg_file>\0A the configuration file. This parameter is mandatory,\0A it also has to be the first command line option.\0A for format of file see CONFIGURATION FILE section\0A\0A-v <hostname>[,<port number>]\0A defines a new virtual host. This parameter is optional\0A If no virtual hosts are defined, then all values of HTTP header Host are accepted.\0A If there are virtual hosts, the nonly those values that match a virtual host definition\0A are accepted.\0A The first virtual host will be refered to as virtual host Id 0, the second as\0A virtual host Id 1, etc.\0A\0A-f [<virtual host id>],<shared library name>[,<filter factory function>]\0A instantiate a filter object from shared library and add it to the processing chain.\0A\0A <virtual host id>\09 - (optional) the virutal host id that the filter will be added to.\0A <shared library name> - file name of shared library that hosts this filter.\0A <filter factory function> - (optional) the exported function name that creates the filter.\0A If this parameter is ommited then factory function load_filter is assumed.\0A\0A-s <shared library name>[,<servlet factory function>]\0A instantiate a servlet object from shared library and add it to the processing chain.\0A\0A <shared library name> - file name of shared library that hosts this shared library\0A <filter factory function> - (optional) the exported function name that creates the servlet.\0A\0A If this parameter is ommited then factory function load_servlet is assumed.\0A\0A\0ACONFIGURATION FILE\0A\0AAn example configuration file:\0A\0A-------------------------------------------------------------------\0A\0A# listening on the following interface (0.0.0.0 on all interfaces)\0Ahost=0.0.0.0\0A\0A# listening address\0Aport=12321\0A\0A# backlog of accepted connections (accept(2) parameter)\0Alisten_backlog=30\0A\0A# read and write buffer sizes of connections\0Asocket_buffer_size=8192\0A\0A# maximum number of serviced connections.\0Amax_connections=300\0A\0A# read / write timeout (in seconds)\0Aio_timeout=30\0A\0A# connection idle timeout (in seconds)\0Aidle_timeout=300\0A\0A# size of the thread stack in memory pages.\0Astack_pages_per_thread=8\0A\0A\0A\0A\0A\00"
define void @print_help() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2244 x i8], [2244 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [3 x i8] c"%s\00"
@.str.1 = [2244 x i8] c"webbymain -c <cfg_file> [ -v <vhost_definition> ] * [ -f <filter_definition> ] * [ -s <servlet_definition> ] *\0A\0AStarts webby http server.\0A\0AOPTIONS:\0A\0A-c <cfg_file>\0A the configuration file. This parameter is mandatory,\0A it also has to be the first command line option.\0A for format of file see CONFIGURATION FILE section\0A\0A-v <hostname>[,<port number>]\0A defines a new virtual host. This parameter is optional\0A If no virtual hosts are defined, then all values of HTTP header Host are accepted.\0A If there are virtual hosts, the nonly those values that match a virtual host definition\0A are accepted.\0A The first virtual host will be refered to as virtual host Id 0, the second as\0A virtual host Id 1, etc.\0A\0A-f [<virtual host id>],<shared library name>[,<filter factory function>]\0A instantiate a filter object from shared library and add it to the processing chain.\0A\0A <virtual host id>\09 - (optional) the virutal host id that the filter will be added to.\0A <shared library name> - file name of shared library that hosts this filter.\0A <filter factory function> - (optional) the exported function name that creates the filter.\0A If this parameter is ommited then factory function load_filter is assumed.\0A\0A-s <shared library name>[,<servlet factory function>]\0A instantiate a servlet object from shared library and add it to the processing chain.\0A\0A <shared library name> - file name of shared library that hosts this shared library\0A <filter factory function> - (optional) the exported function name that creates the servlet.\0A\0A If this parameter is ommited then factory function load_servlet is assumed.\0A\0A\0ACONFIGURATION FILE\0A\0AAn example configuration file:\0A\0A-------------------------------------------------------------------\0A\0A# listening on the following interface (0.0.0.0 on all interfaces)\0Ahost=0.0.0.0\0A\0A# listening address\0Aport=12321\0A\0A# backlog of accepted connections (accept(2) parameter)\0Alisten_backlog=30\0A\0A# read and write buffer sizes of connections\0Asocket_buffer_size=8192\0A\0A# maximum number of serviced connections.\0Amax_connections=300\0A\0A# read / write timeout (in seconds)\0Aio_timeout=30\0A\0A# connection idle timeout (in seconds)\0Aidle_timeout=300\0A\0A# size of the thread stack in memory pages.\0Astack_pages_per_thread=8\0A\0A\0A\0A\0A\00"
define void @print_help() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2244 x i8], [2244 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}