#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 EXIT_SUCCESS;
int /*<<< orphan*/ printf(char *);
int sub_help(void) {
  printf(
      "nelsc command summary:\n"
      "\n"
      "  help - show this helpscreen.\n"
      "\n"
      "  to24pair [i] - convert signed decimal integer i into a base-24\n"
      "  pair in signed style.\n"
      "\n"
      "  from24pair [p] - convert base-24 pair i in signed style into a\n"
      "  signed decimal integer.  p must have exactly two base-24 digits.\n"
      "\n"
      "  to24digit [i] - convert integer i into an unsigned base-24 digit.\n"
      "  i must be in range 0-23.\n"
      "\n"
      "  from24digit [d] - convert base-24 digit d into a decimal integer.\n"
      "  d must contain only one base-24 digit.\n"
      "\n"
      "  day [d] - provide information about the day indicated by NELSC\n"
      "  absolute day offset d.\n"
      "\n"
      "  month [m] - provide information about the first day of the month\n"
      "  indicated by NELSC absolute month offset m.\n"
      "\n"
      "  date [d] - provide information about a particular calendar date.\n"
      "  The parameter d must be a NELSC date in 3T:C4-7 format, or a\n"
      "  Gregorian date in YYYY-MM-DD format.\n"
      "\n"
      "  fullmoon [m1] [m2] - return the Gregorian dates of the full moon\n"
      "  weeks in NELSC from NELSC absolute month offset m1 up to m2.  The\n"
      "  full moon does not always actually happen in the full moon week.\n"
      "\n"
      "  newyear - create a chart of all NELSC years and the Gregorian date\n"
      "  of the first day of the year for each year, along with minimum and\n"
      "  maximum Gregorian month and day for the first day of the year, and\n"
      "  for each year the offset from the first month that March 20\n"
      "  (an approximation of the equinox) happens.\n"
      "\n");
  return EXIT_SUCCESS;
}


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

x86 assembly (clang, -O2):
<sub_help>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
mov    0x2ebc(%rip),%rax
mov    (%rax),%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [1379 x i8] c"nelsc command summary:\0A\0A help - show this helpscreen.\0A\0A to24pair [i] - convert signed decimal integer i into a base-24\0A pair in signed style.\0A\0A from24pair [p] - convert base-24 pair i in signed style into a\0A signed decimal integer. p must have exactly two base-24 digits.\0A\0A to24digit [i] - convert integer i into an unsigned base-24 digit.\0A i must be in range 0-23.\0A\0A from24digit [d] - convert base-24 digit d into a decimal integer.\0A d must contain only one base-24 digit.\0A\0A day [d] - provide information about the day indicated by NELSC\0A absolute day offset d.\0A\0A month [m] - provide information about the first day of the month\0A indicated by NELSC absolute month offset m.\0A\0A date [d] - provide information about a particular calendar date.\0A The parameter d must be a NELSC date in 3T:C4-7 format, or a\0A Gregorian date in YYYY-MM-DD format.\0A\0A fullmoon [m1] [m2] - return the Gregorian dates of the full moon\0A weeks in NELSC from NELSC absolute month offset m1 up to m2. The\0A full moon does not always actually happen in the full moon week.\0A\0A newyear - create a chart of all NELSC years and the Gregorian date\0A of the first day of the year for each year, along with minimum and\0A maximum Gregorian month and day for the first day of the year, and\0A for each year the offset from the first month that March 20\0A (an approximation of the equinox) happens.\0A\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @sub_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1379 x i8], [1379 x i8]* @.str, i64 0, i64 0))
%2 = load i32, i32* @EXIT_SUCCESS
ret i32 %2
}

LLVM IR (-O2):
@EXIT_SUCCESS = global i32 0
@str = [1378 x i8] c"nelsc command summary:\0A\0A help - show this helpscreen.\0A\0A to24pair [i] - convert signed decimal integer i into a base-24\0A pair in signed style.\0A\0A from24pair [p] - convert base-24 pair i in signed style into a\0A signed decimal integer. p must have exactly two base-24 digits.\0A\0A to24digit [i] - convert integer i into an unsigned base-24 digit.\0A i must be in range 0-23.\0A\0A from24digit [d] - convert base-24 digit d into a decimal integer.\0A d must contain only one base-24 digit.\0A\0A day [d] - provide information about the day indicated by NELSC\0A absolute day offset d.\0A\0A month [m] - provide information about the first day of the month\0A indicated by NELSC absolute month offset m.\0A\0A date [d] - provide information about a particular calendar date.\0A The parameter d must be a NELSC date in 3T:C4-7 format, or a\0A Gregorian date in YYYY-MM-DD format.\0A\0A fullmoon [m1] [m2] - return the Gregorian dates of the full moon\0A weeks in NELSC from NELSC absolute month offset m1 up to m2. The\0A full moon does not always actually happen in the full moon week.\0A\0A newyear - create a chart of all NELSC years and the Gregorian date\0A of the first day of the year for each year, along with minimum and\0A maximum Gregorian month and day for the first day of the year, and\0A for each year the offset from the first month that March 20\0A (an approximation of the equinox) happens.\0A\00"
define i32 @sub_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1378 x i8], [1378 x i8]* @str, i64 0, i64 0))
%2 = load i32, i32* @EXIT_SUCCESS
ret i32 %2
}