#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
void usage(FILE *stream, const char *progname) {
  fprintf(stream, "%s reads the dates either on the command line or in the\n",
          progname);
  fprintf(
      stream,
      "standard input if the command line contains no date. The following\n");
  fprintf(stream, "date formats are supported (hour, minutes and seconds are "
                  "always optional):\n");
  fprintf(stream, "\n");
  fprintf(stream, "iso       : 1999-12-31T23:59:59.999\n");
  fprintf(stream,
          "european  : 31/12/1999 23:59:59.999 or 31/12/99 23:59:59.999\n");
  fprintf(stream,
          "us        : 12/31/1999 23:59:59.999 or 12/31/99 23:59:59.999\n");
  fprintf(stream, "days      : 123456.789\n");
  fprintf(stream, "seconds   : 123456.789\n");
  fprintf(stream, "\n");
  fprintf(stream,
          "The formats are tried in the following order : users's choice,\n");
  fprintf(stream,
          "iso, european and us (there is no ambiguity between calendar\n");
  fprintf(
      stream,
      "formats and numerical formats and therefore no order is specified\n");
  fprintf(
      stream,
      "for them). The default user's choice (nohint) does nothing so the\n");
  fprintf(stream,
          "following formats of the list are used ; the main use of user's\n");
  fprintf(stream,
          "choice is to put another format before the other ones. The\n");
  fprintf(
      stream,
      "separators between various fields can be any characters in the set:\n");
  fprintf(stream, "\" :/.-T\". One or more spaces act as one separator, other "
                  "characters\n");
  fprintf(stream, "can not be repeated, the T separator is allowed only "
                  "between date and\n");
  fprintf(stream, "time, mainly for iso8601. So the string \"1999-12 "
                  "31:23-59\" is allowed\n");
  fprintf(stream,
          "(but not recommended).  The '-' character is used both as a\n");
  fprintf(
      stream,
      "separator (it is traditionally used in iso8601 format) and as the\n");
  fprintf(stream, "unary minus (for dates in the far past or for numerical\n");
  fprintf(
      stream,
      "dates). When the year is between 0 and 99 and is written with two\n");
  fprintf(
      stream,
      "or less digits, it is mapped to the era beginning at wrap year and\n");
  fprintf(stream, "ending at wrap year + 99 as follows :\n");
  fprintf(stream,
          "  [wy ; 99] -> [ wrap_year ; 100*(1 + wrap_year/100) - 1 ]\n");
  fprintf(stream,
          "  [00 ; wy-1] -> [ 100*(1 + wrap_year/100) ; wrap_year + 99]\n");
  fprintf(
      stream,
      "so for example if the wrap year is set to 1950 (which is the default\n");
  fprintf(stream, "value), then the mapping is :\n");
  fprintf(stream, "   range [00 ; 49] is mapped to [2000 ; 2049]\n");
  fprintf(stream, "   range [50 ; 99] is mapped to [1950 ; 1999]\n");
  fprintf(
      stream,
      "this is reasonably Y2K compliant and is consistent with current use.\n");
  fprintf(
      stream,
      "Specifying year 1 is still possible using more than two digits as\n");
  fprintf(stream, "follows : \"0001-03-04\" is unambiguously March the 4th, "
                  "year 1, even\n");
  fprintf(
      stream,
      "if the user's choice is us format. However using two digits only is\n");
  fprintf(stream,
          "not recommended (we introduce a 2050 bug here so this feature\n");
  fprintf(stream, "should be removed at some point in the future ;-)\n");
  fprintf(stream, "\n");
  fprintf(
      stream,
      "Numerical dates (days and seconds formats) can be specified using\n");
  fprintf(stream,
          "integral, real or exponential formats (the 'd' and 'D' exponant\n");
  fprintf(stream,
          "markers from fortran are supported in addition to 'e' and 'E').\n");
  fprintf(stream,
          "They are computed according to a customizable reference date.\n");
  fprintf(stream, "The default value is given by the REFDATE constant in the "
                  "source file.\n");
  fprintf(
      stream,
      "You can change this value as you want before compiling, and you can\n");
  fprintf(stream,
          "change it at will using the -r command line option. The default\n");
  fprintf(
      stream,
      "value in the distributed file is \"-4713-01-01T12:00:00\", it is a\n");
  fprintf(
      stream,
      "classical reference for astronomical events (note that the '-' is\n");
  fprintf(stream, "used here both as a unary minus and as a separator).\n");
  fprintf(stream, "\n");
  fprintf(stream, "The program can be used either for Denys's and gregorian\n");
  fprintf(stream,
          "calendars. It does not take into account leap seconds : you can\n");
  fprintf(
      stream,
      "think it works only in International Atomic Time (TAI) and not in\n");
  fprintf(
      stream,
      "Coordinated Unified Time (UTC) ...  Inexistant dates are detected,\n");
  fprintf(stream,
          "they include year 0, dates between 1582-10-05 and 1582-10-14,\n");
  fprintf(stream,
          "February 29th of non leap years, months below 1 or above 12, ...\n");
  fprintf(stream, "\n");
  fprintf(
      stream,
      "The following command line options are supported. Apart from the -h\n");
  fprintf(stream,
          "flag, all of these options can be used several times, each new\n");
  fprintf(stream, "value overriding the preceding one.\n");
  fprintf(stream, "\n");
  fprintf(stream, "-i format : set user's choice for input format, supported "
                  "formats are\n");
  fprintf(stream, "            iso, european, us, days, seconds and nohint.\n");
  fprintf(
      stream,
      "            At the beginning the input format is nohint, which means\n");
  fprintf(
      stream,
      "            the program try to guess the format by itself, if the\n");
  fprintf(
      stream,
      "            user's choice does not allow to parse the date, other\n");
  fprintf(stream, "            formats are tried\n");
  fprintf(stream, "-o format : force output format, supported formats are\n");
  fprintf(stream, "            iso, european, us, days, seconds and nohint.\n");
  fprintf(stream, "            At the beginning, the output format is nohint, "
                  "which means\n");
  fprintf(stream,
          "            the program uses days format for dates read in any\n");
  fprintf(stream,
          "            calendar format and uses iso8601 for dates read in\n");
  fprintf(stream, "            numerical format\n");
  fprintf(
      stream,
      "-r date   : set reference date (the date is read using the current\n");
  fprintf(stream,
          "            input format) at the beginning the reference is set\n");
  fprintf(stream, "            according to the REFDATE constant below.\n");
  fprintf(stream, "-w year   : set the wrap year to year\n");
  fprintf(stream, "-h        : prints this help message on stderr and exits "
                  "successfully\n");
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rdx
lea    0xec1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xee8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xf1a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x16e6(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xf43(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xf56(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xf82(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xfae(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xfb4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x167a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xfa8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xfd6(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1002(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1033(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1064(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1093(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x10bd(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x10f0(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1123(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1158(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x118d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x11b8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x11e9(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1210(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1241(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1273(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1288(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x12b2(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x12de(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1312(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x131f(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x133c(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1359(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x138d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x13be(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x13f1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1424(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1451(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1470(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1460(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1491(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x14c0(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x14ef(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x151c(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1552(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1585(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x15b4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x15e4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1615(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x13aa(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1627(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x164f(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x167e(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x16af(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x16e1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x170e(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x132c(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x172c(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x175f(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x178d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x12e4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x178e(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x17c3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x17eb(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x181f(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1850(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1881(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x188e(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1757(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x18a2(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x18d8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1906(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1934(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1940(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x1972(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x19a1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x19c5(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0x19da(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rdx
mov    %rdi,%rbx
lea    0xeaf(%rip),%rsi
xor    %eax,%eax
call   1040 <fprintf@plt>
lea    0xeda(%rip),%rdi
mov    $0x43,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf05(%rip),%rdi
mov    $0x4c,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0xf2c(%rip),%rdi
mov    $0x24,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf38(%rip),%rdi
mov    $0x3d,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf5d(%rip),%rdi
mov    $0x3d,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf82(%rip),%rdi
mov    $0x17,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf81(%rip),%rdi
mov    $0x17,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0xf73(%rip),%rdi
mov    $0x3f,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xf9a(%rip),%rdi
mov    $0x3d,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xfbf(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0xfe9(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1013(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x103b(%rip),%rdi
mov    $0x3b,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x105e(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x108a(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x10b6(%rip),%rdi
mov    $0x46,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x10e4(%rip),%rdi
mov    $0x46,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1112(%rip),%rdi
mov    $0x3c,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1136(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1160(%rip),%rdi
mov    $0x38,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1180(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x11aa(%rip),%rdi
mov    $0x43,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x11d5(%rip),%rdi
mov    $0x26,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x11e3(%rip),%rdi
mov    $0x3b,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1206(%rip),%rdi
mov    $0x3d,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x122b(%rip),%rdi
mov    $0x45,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1258(%rip),%rdi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x125e(%rip),%rdi
mov    $0x2e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1274(%rip),%rdi
mov    $0x2e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x128a(%rip),%rdi
mov    $0x45,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x12b7(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x12e1(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x130d(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1339(%rip),%rdi
mov    $0x3e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x135f(%rip),%rdi
mov    $0x32,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0x136c(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1396(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x13be(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x13e6(%rip),%rdi
mov    $0x3e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x140c(%rip),%rdi
mov    $0x47,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x143b(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1467(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x148f(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x14b8(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x14e2(%rip),%rdi
mov    $0x35,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0x14f2(%rip),%rdi
mov    $0x39,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1513(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x153b(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1565(%rip),%rdi
mov    $0x43,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1590(%rip),%rdi
mov    $0x3e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x15b6(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0x15d2(%rip),%rdi
mov    $0x44,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x15fe(%rip),%rdi
mov    $0x3f,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1625(%rip),%rdi
mov    $0x24,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1030 <fputc@plt>
lea    0x1624(%rip),%rdi
mov    $0x46,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1652(%rip),%r14
mov    $0x39,%esi
mov    $0x1,%edx
mov    %r14,%rdi
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1670(%rip),%rdi
mov    $0x45,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x169d(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x16c7(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x16f1(%rip),%rdi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x16f7(%rip),%rdi
mov    $0x37,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
mov    $0x39,%esi
mov    $0x1,%edx
mov    %r14,%rdi
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1701(%rip),%rdi
mov    $0x47,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1730(%rip),%rdi
mov    $0x3f,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1757(%rip),%rdi
mov    $0x3f,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x177e(%rip),%rdi
mov    $0x1d,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1783(%rip),%rdi
mov    $0x43,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x17ae(%rip),%rdi
mov    $0x40,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x17d6(%rip),%rdi
mov    $0x35,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x17f3(%rip),%rdi
mov    $0x26,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
lea    0x1801(%rip),%rdi
mov    $0x46,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1060 <fwrite@plt>
xor    %edi,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [57 x i8] c"%s reads the dates either on the command line or in the\0A\00"
@.str.1 = [68 x i8] c"standard input if the command line contains no date. The following\0A\00"
@.str.2 = [77 x i8] c"date formats are supported (hour, minutes and seconds are always optional):\0A\00"
@.str.3 = [2 x i8] c"\0A\00"
@.str.4 = [37 x i8] c"iso : 1999-12-31T23:59:59.999\0A\00"
@.str.5 = [62 x i8] c"european : 31/12/1999 23:59:59.999 or 31/12/99 23:59:59.999\0A\00"
@.str.6 = [62 x i8] c"us : 12/31/1999 23:59:59.999 or 12/31/99 23:59:59.999\0A\00"
@.str.7 = [24 x i8] c"days : 123456.789\0A\00"
@.str.8 = [24 x i8] c"seconds : 123456.789\0A\00"
@.str.9 = [64 x i8] c"The formats are tried in the following order : users's choice,\0A\00"
@.str.10 = [62 x i8] c"iso, european and us (there is no ambiguity between calendar\0A\00"
@.str.11 = [67 x i8] c"formats and numerical formats and therefore no order is specified\0A\00"
@.str.12 = [67 x i8] c"for them). The default user's choice (nohint) does nothing so the\0A\00"
@.str.13 = [65 x i8] c"following formats of the list are used ; the main use of user's\0A\00"
@.str.14 = [60 x i8] c"choice is to put another format before the other ones. The\0A\00"
@.str.15 = [69 x i8] c"separators between various fields can be any characters in the set:\0A\00"
@.str.16 = [69 x i8] c"\22 :/.-T\22. One or more spaces act as one separator, other characters\0A\00"
@.str.17 = [71 x i8] c"can not be repeated, the T separator is allowed only between date and\0A\00"
@.str.18 = [71 x i8] c"time, mainly for iso8601. So the string \221999-12 31:23-59\22 is allowed\0A\00"
@.str.19 = [61 x i8] c"(but not recommended). The '-' character is used both as a\0A\00"
@.str.20 = [67 x i8] c"separator (it is traditionally used in iso8601 format) and as the\0A\00"
@.str.21 = [57 x i8] c"unary minus (for dates in the far past or for numerical\0A\00"
@.str.22 = [67 x i8] c"dates). When the year is between 0 and 99 and is written with two\0A\00"
@.str.23 = [68 x i8] c"or less digits, it is mapped to the era beginning at wrap year and\0A\00"
@.str.24 = [39 x i8] c"ending at wrap year + 99 as follows :\0A\00"
@.str.25 = [60 x i8] c" [wy ; 99] -> [ wrap_year ; 100*(1 + wrap_year/100) - 1 ]\0A\00"
@.str.26 = [62 x i8] c" [00 ; wy-1] -> [ 100*(1 + wrap_year/100) ; wrap_year + 99]\0A\00"
@.str.27 = [70 x i8] c"so for example if the wrap year is set to 1950 (which is the default\0A\00"
@.str.28 = [31 x i8] c"value), then the mapping is :\0A\00"
@.str.29 = [47 x i8] c" range [00 ; 49] is mapped to [2000 ; 2049]\0A\00"
@.str.30 = [47 x i8] c" range [50 ; 99] is mapped to [1950 ; 1999]\0A\00"
@.str.31 = [70 x i8] c"this is reasonably Y2K compliant and is consistent with current use.\0A\00"
@.str.32 = [67 x i8] c"Specifying year 1 is still possible using more than two digits as\0A\00"
@.str.33 = [69 x i8] c"follows : \220001-03-04\22 is unambiguously March the 4th, year 1, even\0A\00"
@.str.34 = [69 x i8] c"if the user's choice is us format. However using two digits only is\0A\00"
@.str.35 = [63 x i8] c"not recommended (we introduce a 2050 bug here so this feature\0A\00"
@.str.36 = [51 x i8] c"should be removed at some point in the future ;-)\0A\00"
@.str.37 = [67 x i8] c"Numerical dates (days and seconds formats) can be specified using\0A\00"
@.str.38 = [65 x i8] c"integral, real or exponential formats (the 'd' and 'D' exponant\0A\00"
@.str.39 = [65 x i8] c"markers from fortran are supported in addition to 'e' and 'E').\0A\00"
@.str.40 = [63 x i8] c"They are computed according to a customizable reference date.\0A\00"
@.str.41 = [72 x i8] c"The default value is given by the REFDATE constant in the source file.\0A\00"
@.str.42 = [69 x i8] c"You can change this value as you want before compiling, and you can\0A\00"
@.str.43 = [65 x i8] c"change it at will using the -r command line option. The default\0A\00"
@.str.44 = [66 x i8] c"value in the distributed file is \22-4713-01-01T12:00:00\22, it is a\0A\00"
@.str.45 = [67 x i8] c"classical reference for astronomical events (note that the '-' is\0A\00"
@.str.46 = [54 x i8] c"used here both as a unary minus and as a separator).\0A\00"
@.str.47 = [58 x i8] c"The program can be used either for Denys's and gregorian\0A\00"
@.str.48 = [65 x i8] c"calendars. It does not take into account leap seconds : you can\0A\00"
@.str.49 = [67 x i8] c"think it works only in International Atomic Time (TAI) and not in\0A\00"
@.str.50 = [68 x i8] c"Coordinated Unified Time (UTC) ... Inexistant dates are detected,\0A\00"
@.str.51 = [63 x i8] c"they include year 0, dates between 1582-10-05 and 1582-10-14,\0A\00"
@.str.52 = [66 x i8] c"February 29th of non leap years, months below 1 or above 12, ...\0A\00"
@.str.53 = [69 x i8] c"The following command line options are supported. Apart from the -h\0A\00"
@.str.54 = [64 x i8] c"flag, all of these options can be used several times, each new\0A\00"
@.str.55 = [37 x i8] c"value overriding the preceding one.\0A\00"
@.str.56 = [71 x i8] c"-i format : set user's choice for input format, supported formats are\0A\00"
@.str.57 = [58 x i8] c" iso, european, us, days, seconds and nohint.\0A\00"
@.str.58 = [70 x i8] c" At the beginning the input format is nohint, which means\0A\00"
@.str.59 = [67 x i8] c" the program try to guess the format by itself, if the\0A\00"
@.str.60 = [67 x i8] c" user's choice does not allow to parse the date, other\0A\00"
@.str.61 = [31 x i8] c" formats are tried\0A\00"
@.str.62 = [56 x i8] c"-o format : force output format, supported formats are\0A\00"
@.str.63 = [72 x i8] c" At the beginning, the output format is nohint, which means\0A\00"
@.str.64 = [64 x i8] c" the program uses days format for dates read in any\0A\00"
@.str.65 = [64 x i8] c" calendar format and uses iso8601 for dates read in\0A\00"
@.str.66 = [30 x i8] c" numerical format\0A\00"
@.str.67 = [68 x i8] c"-r date : set reference date (the date is read using the current\0A\00"
@.str.68 = [65 x i8] c" input format) at the beginning the reference is set\0A\00"
@.str.69 = [54 x i8] c" according to the REFDATE constant below.\0A\00"
@.str.70 = [39 x i8] c"-w year : set the wrap year to year\0A\00"
@.str.71 = [71 x i8] c"-h : prints this help message on stderr and exits successfully\0A\00"
define void @usage(i32* %0, i8* %1) {
%3 = alloca i32*
%4 = alloca i8*
store i32* %0, i32** %3
store i8* %1, i8** %4
%5 = load i32*, i32** %3
%6 = load i8*, i8** %4
%7 = call i32 (i32*, i8*, ...) @fprintf(i32* %5, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i8* %6)
%8 = load i32*, i32** %3
%9 = call i32 (i32*, i8*, ...) @fprintf(i32* %8, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.1, i64 0, i64 0))
%10 = load i32*, i32** %3
%11 = call i32 (i32*, i8*, ...) @fprintf(i32* %10, i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.2, i64 0, i64 0))
%12 = load i32*, i32** %3
%13 = call i32 (i32*, i8*, ...) @fprintf(i32* %12, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%14 = load i32*, i32** %3
%15 = call i32 (i32*, i8*, ...) @fprintf(i32* %14, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0))
%16 = load i32*, i32** %3
%17 = call i32 (i32*, i8*, ...) @fprintf(i32* %16, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.5, i64 0, i64 0))
%18 = load i32*, i32** %3
%19 = call i32 (i32*, i8*, ...) @fprintf(i32* %18, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.6, i64 0, i64 0))
%20 = load i32*, i32** %3
%21 = call i32 (i32*, i8*, ...) @fprintf(i32* %20, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0))
%22 = load i32*, i32** %3
%23 = call i32 (i32*, i8*, ...) @fprintf(i32* %22, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.8, i64 0, i64 0))
%24 = load i32*, i32** %3
%25 = call i32 (i32*, i8*, ...) @fprintf(i32* %24, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%26 = load i32*, i32** %3
%27 = call i32 (i32*, i8*, ...) @fprintf(i32* %26, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.9, i64 0, i64 0))
%28 = load i32*, i32** %3
%29 = call i32 (i32*, i8*, ...) @fprintf(i32* %28, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.10, i64 0, i64 0))
%30 = load i32*, i32** %3
%31 = call i32 (i32*, i8*, ...) @fprintf(i32* %30, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.11, i64 0, i64 0))
%32 = load i32*, i32** %3
%33 = call i32 (i32*, i8*, ...) @fprintf(i32* %32, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.12, i64 0, i64 0))
%34 = load i32*, i32** %3
%35 = call i32 (i32*, i8*, ...) @fprintf(i32* %34, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.13, i64 0, i64 0))
%36 = load i32*, i32** %3
%37 = call i32 (i32*, i8*, ...) @fprintf(i32* %36, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.14, i64 0, i64 0))
%38 = load i32*, i32** %3
%39 = call i32 (i32*, i8*, ...) @fprintf(i32* %38, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.15, i64 0, i64 0))
%40 = load i32*, i32** %3
%41 = call i32 (i32*, i8*, ...) @fprintf(i32* %40, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.16, i64 0, i64 0))
%42 = load i32*, i32** %3
%43 = call i32 (i32*, i8*, ...) @fprintf(i32* %42, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.17, i64 0, i64 0))
%44 = load i32*, i32** %3
%45 = call i32 (i32*, i8*, ...) @fprintf(i32* %44, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.18, i64 0, i64 0))
%46 = load i32*, i32** %3
%47 = call i32 (i32*, i8*, ...) @fprintf(i32* %46, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.19, i64 0, i64 0))
%48 = load i32*, i32** %3
%49 = call i32 (i32*, i8*, ...) @fprintf(i32* %48, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.20, i64 0, i64 0))
%50 = load i32*, i32** %3
%51 = call i32 (i32*, i8*, ...) @fprintf(i32* %50, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.21, i64 0, i64 0))
%52 = load i32*, i32** %3
%53 = call i32 (i32*, i8*, ...) @fprintf(i32* %52, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.22, i64 0, i64 0))
%54 = load i32*, i32** %3
%55 = call i32 (i32*, i8*, ...) @fprintf(i32* %54, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.23, i64 0, i64 0))
%56 = load i32*, i32** %3
%57 = call i32 (i32*, i8*, ...) @fprintf(i32* %56, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.24, i64 0, i64 0))
%58 = load i32*, i32** %3
%59 = call i32 (i32*, i8*, ...) @fprintf(i32* %58, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.25, i64 0, i64 0))
%60 = load i32*, i32** %3
%61 = call i32 (i32*, i8*, ...) @fprintf(i32* %60, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.26, i64 0, i64 0))
%62 = load i32*, i32** %3
%63 = call i32 (i32*, i8*, ...) @fprintf(i32* %62, i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.27, i64 0, i64 0))
%64 = load i32*, i32** %3
%65 = call i32 (i32*, i8*, ...) @fprintf(i32* %64, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.28, i64 0, i64 0))
%66 = load i32*, i32** %3
%67 = call i32 (i32*, i8*, ...) @fprintf(i32* %66, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.29, i64 0, i64 0))
%68 = load i32*, i32** %3
%69 = call i32 (i32*, i8*, ...) @fprintf(i32* %68, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.30, i64 0, i64 0))
%70 = load i32*, i32** %3
%71 = call i32 (i32*, i8*, ...) @fprintf(i32* %70, i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.31, i64 0, i64 0))
%72 = load i32*, i32** %3
%73 = call i32 (i32*, i8*, ...) @fprintf(i32* %72, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.32, i64 0, i64 0))
%74 = load i32*, i32** %3
%75 = call i32 (i32*, i8*, ...) @fprintf(i32* %74, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.33, i64 0, i64 0))
%76 = load i32*, i32** %3
%77 = call i32 (i32*, i8*, ...) @fprintf(i32* %76, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.34, i64 0, i64 0))
%78 = load i32*, i32** %3
%79 = call i32 (i32*, i8*, ...) @fprintf(i32* %78, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.35, i64 0, i64 0))
%80 = load i32*, i32** %3
%81 = call i32 (i32*, i8*, ...) @fprintf(i32* %80, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.36, i64 0, i64 0))
%82 = load i32*, i32** %3
%83 = call i32 (i32*, i8*, ...) @fprintf(i32* %82, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%84 = load i32*, i32** %3
%85 = call i32 (i32*, i8*, ...) @fprintf(i32* %84, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.37, i64 0, i64 0))
%86 = load i32*, i32** %3
%87 = call i32 (i32*, i8*, ...) @fprintf(i32* %86, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.38, i64 0, i64 0))
%88 = load i32*, i32** %3
%89 = call i32 (i32*, i8*, ...) @fprintf(i32* %88, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.39, i64 0, i64 0))
%90 = load i32*, i32** %3
%91 = call i32 (i32*, i8*, ...) @fprintf(i32* %90, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.40, i64 0, i64 0))
%92 = load i32*, i32** %3
%93 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0))
%94 = load i32*, i32** %3
%95 = call i32 (i32*, i8*, ...) @fprintf(i32* %94, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.42, i64 0, i64 0))
%96 = load i32*, i32** %3
%97 = call i32 (i32*, i8*, ...) @fprintf(i32* %96, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.43, i64 0, i64 0))
%98 = load i32*, i32** %3
%99 = call i32 (i32*, i8*, ...) @fprintf(i32* %98, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.44, i64 0, i64 0))
%100 = load i32*, i32** %3
%101 = call i32 (i32*, i8*, ...) @fprintf(i32* %100, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.45, i64 0, i64 0))
%102 = load i32*, i32** %3
%103 = call i32 (i32*, i8*, ...) @fprintf(i32* %102, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.46, i64 0, i64 0))
%104 = load i32*, i32** %3
%105 = call i32 (i32*, i8*, ...) @fprintf(i32* %104, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%106 = load i32*, i32** %3
%107 = call i32 (i32*, i8*, ...) @fprintf(i32* %106, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.47, i64 0, i64 0))
%108 = load i32*, i32** %3
%109 = call i32 (i32*, i8*, ...) @fprintf(i32* %108, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.48, i64 0, i64 0))
%110 = load i32*, i32** %3
%111 = call i32 (i32*, i8*, ...) @fprintf(i32* %110, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.49, i64 0, i64 0))
%112 = load i32*, i32** %3
%113 = call i32 (i32*, i8*, ...) @fprintf(i32* %112, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.50, i64 0, i64 0))
%114 = load i32*, i32** %3
%115 = call i32 (i32*, i8*, ...) @fprintf(i32* %114, i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.51, i64 0, i64 0))
%116 = load i32*, i32** %3
%117 = call i32 (i32*, i8*, ...) @fprintf(i32* %116, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.52, i64 0, i64 0))
%118 = load i32*, i32** %3
%119 = call i32 (i32*, i8*, ...) @fprintf(i32* %118, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%120 = load i32*, i32** %3
%121 = call i32 (i32*, i8*, ...) @fprintf(i32* %120, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.53, i64 0, i64 0))
%122 = load i32*, i32** %3
%123 = call i32 (i32*, i8*, ...) @fprintf(i32* %122, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.54, i64 0, i64 0))
%124 = load i32*, i32** %3
%125 = call i32 (i32*, i8*, ...) @fprintf(i32* %124, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.55, i64 0, i64 0))
%126 = load i32*, i32** %3
%127 = call i32 (i32*, i8*, ...) @fprintf(i32* %126, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%128 = load i32*, i32** %3
%129 = call i32 (i32*, i8*, ...) @fprintf(i32* %128, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.56, i64 0, i64 0))
%130 = load i32*, i32** %3
%131 = call i32 (i32*, i8*, ...) @fprintf(i32* %130, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.57, i64 0, i64 0))
%132 = load i32*, i32** %3
%133 = call i32 (i32*, i8*, ...) @fprintf(i32* %132, i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.58, i64 0, i64 0))
%134 = load i32*, i32** %3
%135 = call i32 (i32*, i8*, ...) @fprintf(i32* %134, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.59, i64 0, i64 0))
%136 = load i32*, i32** %3
%137 = call i32 (i32*, i8*, ...) @fprintf(i32* %136, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.60, i64 0, i64 0))
%138 = load i32*, i32** %3
%139 = call i32 (i32*, i8*, ...) @fprintf(i32* %138, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.61, i64 0, i64 0))
%140 = load i32*, i32** %3
%141 = call i32 (i32*, i8*, ...) @fprintf(i32* %140, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.62, i64 0, i64 0))
%142 = load i32*, i32** %3
%143 = call i32 (i32*, i8*, ...) @fprintf(i32* %142, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.57, i64 0, i64 0))
%144 = load i32*, i32** %3
%145 = call i32 (i32*, i8*, ...) @fprintf(i32* %144, i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.63, i64 0, i64 0))
%146 = load i32*, i32** %3
%147 = call i32 (i32*, i8*, ...) @fprintf(i32* %146, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.64, i64 0, i64 0))
%148 = load i32*, i32** %3
%149 = call i32 (i32*, i8*, ...) @fprintf(i32* %148, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.65, i64 0, i64 0))
%150 = load i32*, i32** %3
%151 = call i32 (i32*, i8*, ...) @fprintf(i32* %150, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.66, i64 0, i64 0))
%152 = load i32*, i32** %3
%153 = call i32 (i32*, i8*, ...) @fprintf(i32* %152, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.67, i64 0, i64 0))
%154 = load i32*, i32** %3
%155 = call i32 (i32*, i8*, ...) @fprintf(i32* %154, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.68, i64 0, i64 0))
%156 = load i32*, i32** %3
%157 = call i32 (i32*, i8*, ...) @fprintf(i32* %156, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.69, i64 0, i64 0))
%158 = load i32*, i32** %3
%159 = call i32 (i32*, i8*, ...) @fprintf(i32* %158, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.70, i64 0, i64 0))
%160 = load i32*, i32** %3
%161 = call i32 (i32*, i8*, ...) @fprintf(i32* %160, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.71, i64 0, i64 0))
%162 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [57 x i8] c"%s reads the dates either on the command line or in the\0A\00"
@.str.1 = [68 x i8] c"standard input if the command line contains no date. The following\0A\00"
@.str.2 = [77 x i8] c"date formats are supported (hour, minutes and seconds are always optional):\0A\00"
@.str.4 = [37 x i8] c"iso : 1999-12-31T23:59:59.999\0A\00"
@.str.5 = [62 x i8] c"european : 31/12/1999 23:59:59.999 or 31/12/99 23:59:59.999\0A\00"
@.str.6 = [62 x i8] c"us : 12/31/1999 23:59:59.999 or 12/31/99 23:59:59.999\0A\00"
@.str.7 = [24 x i8] c"days : 123456.789\0A\00"
@.str.8 = [24 x i8] c"seconds : 123456.789\0A\00"
@.str.9 = [64 x i8] c"The formats are tried in the following order : users's choice,\0A\00"
@.str.10 = [62 x i8] c"iso, european and us (there is no ambiguity between calendar\0A\00"
@.str.11 = [67 x i8] c"formats and numerical formats and therefore no order is specified\0A\00"
@.str.12 = [67 x i8] c"for them). The default user's choice (nohint) does nothing so the\0A\00"
@.str.13 = [65 x i8] c"following formats of the list are used ; the main use of user's\0A\00"
@.str.14 = [60 x i8] c"choice is to put another format before the other ones. The\0A\00"
@.str.15 = [69 x i8] c"separators between various fields can be any characters in the set:\0A\00"
@.str.16 = [69 x i8] c"\22 :/.-T\22. One or more spaces act as one separator, other characters\0A\00"
@.str.17 = [71 x i8] c"can not be repeated, the T separator is allowed only between date and\0A\00"
@.str.18 = [71 x i8] c"time, mainly for iso8601. So the string \221999-12 31:23-59\22 is allowed\0A\00"
@.str.19 = [61 x i8] c"(but not recommended). The '-' character is used both as a\0A\00"
@.str.20 = [67 x i8] c"separator (it is traditionally used in iso8601 format) and as the\0A\00"
@.str.21 = [57 x i8] c"unary minus (for dates in the far past or for numerical\0A\00"
@.str.22 = [67 x i8] c"dates). When the year is between 0 and 99 and is written with two\0A\00"
@.str.23 = [68 x i8] c"or less digits, it is mapped to the era beginning at wrap year and\0A\00"
@.str.24 = [39 x i8] c"ending at wrap year + 99 as follows :\0A\00"
@.str.25 = [60 x i8] c" [wy ; 99] -> [ wrap_year ; 100*(1 + wrap_year/100) - 1 ]\0A\00"
@.str.26 = [62 x i8] c" [00 ; wy-1] -> [ 100*(1 + wrap_year/100) ; wrap_year + 99]\0A\00"
@.str.27 = [70 x i8] c"so for example if the wrap year is set to 1950 (which is the default\0A\00"
@.str.28 = [31 x i8] c"value), then the mapping is :\0A\00"
@.str.29 = [47 x i8] c" range [00 ; 49] is mapped to [2000 ; 2049]\0A\00"
@.str.30 = [47 x i8] c" range [50 ; 99] is mapped to [1950 ; 1999]\0A\00"
@.str.31 = [70 x i8] c"this is reasonably Y2K compliant and is consistent with current use.\0A\00"
@.str.32 = [67 x i8] c"Specifying year 1 is still possible using more than two digits as\0A\00"
@.str.33 = [69 x i8] c"follows : \220001-03-04\22 is unambiguously March the 4th, year 1, even\0A\00"
@.str.34 = [69 x i8] c"if the user's choice is us format. However using two digits only is\0A\00"
@.str.35 = [63 x i8] c"not recommended (we introduce a 2050 bug here so this feature\0A\00"
@.str.36 = [51 x i8] c"should be removed at some point in the future ;-)\0A\00"
@.str.37 = [67 x i8] c"Numerical dates (days and seconds formats) can be specified using\0A\00"
@.str.38 = [65 x i8] c"integral, real or exponential formats (the 'd' and 'D' exponant\0A\00"
@.str.39 = [65 x i8] c"markers from fortran are supported in addition to 'e' and 'E').\0A\00"
@.str.40 = [63 x i8] c"They are computed according to a customizable reference date.\0A\00"
@.str.41 = [72 x i8] c"The default value is given by the REFDATE constant in the source file.\0A\00"
@.str.42 = [69 x i8] c"You can change this value as you want before compiling, and you can\0A\00"
@.str.43 = [65 x i8] c"change it at will using the -r command line option. The default\0A\00"
@.str.44 = [66 x i8] c"value in the distributed file is \22-4713-01-01T12:00:00\22, it is a\0A\00"
@.str.45 = [67 x i8] c"classical reference for astronomical events (note that the '-' is\0A\00"
@.str.46 = [54 x i8] c"used here both as a unary minus and as a separator).\0A\00"
@.str.47 = [58 x i8] c"The program can be used either for Denys's and gregorian\0A\00"
@.str.48 = [65 x i8] c"calendars. It does not take into account leap seconds : you can\0A\00"
@.str.49 = [67 x i8] c"think it works only in International Atomic Time (TAI) and not in\0A\00"
@.str.50 = [68 x i8] c"Coordinated Unified Time (UTC) ... Inexistant dates are detected,\0A\00"
@.str.51 = [63 x i8] c"they include year 0, dates between 1582-10-05 and 1582-10-14,\0A\00"
@.str.52 = [66 x i8] c"February 29th of non leap years, months below 1 or above 12, ...\0A\00"
@.str.53 = [69 x i8] c"The following command line options are supported. Apart from the -h\0A\00"
@.str.54 = [64 x i8] c"flag, all of these options can be used several times, each new\0A\00"
@.str.55 = [37 x i8] c"value overriding the preceding one.\0A\00"
@.str.56 = [71 x i8] c"-i format : set user's choice for input format, supported formats are\0A\00"
@.str.57 = [58 x i8] c" iso, european, us, days, seconds and nohint.\0A\00"
@.str.58 = [70 x i8] c" At the beginning the input format is nohint, which means\0A\00"
@.str.59 = [67 x i8] c" the program try to guess the format by itself, if the\0A\00"
@.str.60 = [67 x i8] c" user's choice does not allow to parse the date, other\0A\00"
@.str.61 = [31 x i8] c" formats are tried\0A\00"
@.str.62 = [56 x i8] c"-o format : force output format, supported formats are\0A\00"
@.str.63 = [72 x i8] c" At the beginning, the output format is nohint, which means\0A\00"
@.str.64 = [64 x i8] c" the program uses days format for dates read in any\0A\00"
@.str.65 = [64 x i8] c" calendar format and uses iso8601 for dates read in\0A\00"
@.str.66 = [30 x i8] c" numerical format\0A\00"
@.str.67 = [68 x i8] c"-r date : set reference date (the date is read using the current\0A\00"
@.str.68 = [65 x i8] c" input format) at the beginning the reference is set\0A\00"
@.str.69 = [54 x i8] c" according to the REFDATE constant below.\0A\00"
@.str.70 = [39 x i8] c"-w year : set the wrap year to year\0A\00"
@.str.71 = [71 x i8] c"-h : prints this help message on stderr and exits successfully\0A\00"
define void @usage(i32* %0, i8* %1) {
%3 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i8* %1)
%4 = tail call i64 @fwrite(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.1, i64 0, i64 0), i64 67, i64 1, i32* %0)
%5 = tail call i64 @fwrite(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.2, i64 0, i64 0), i64 76, i64 1, i32* %0)
%6 = tail call i32 @fputc(i32 10, i32* %0)
%7 = tail call i64 @fwrite(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0), i64 36, i64 1, i32* %0)
%8 = tail call i64 @fwrite(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.5, i64 0, i64 0), i64 61, i64 1, i32* %0)
%9 = tail call i64 @fwrite(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.6, i64 0, i64 0), i64 61, i64 1, i32* %0)
%10 = tail call i64 @fwrite(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), i64 23, i64 1, i32* %0)
%11 = tail call i64 @fwrite(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.8, i64 0, i64 0), i64 23, i64 1, i32* %0)
%12 = tail call i32 @fputc(i32 10, i32* %0)
%13 = tail call i64 @fwrite(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.9, i64 0, i64 0), i64 63, i64 1, i32* %0)
%14 = tail call i64 @fwrite(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.10, i64 0, i64 0), i64 61, i64 1, i32* %0)
%15 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.11, i64 0, i64 0), i64 66, i64 1, i32* %0)
%16 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.12, i64 0, i64 0), i64 66, i64 1, i32* %0)
%17 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.13, i64 0, i64 0), i64 64, i64 1, i32* %0)
%18 = tail call i64 @fwrite(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.14, i64 0, i64 0), i64 59, i64 1, i32* %0)
%19 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.15, i64 0, i64 0), i64 68, i64 1, i32* %0)
%20 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.16, i64 0, i64 0), i64 68, i64 1, i32* %0)
%21 = tail call i64 @fwrite(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.17, i64 0, i64 0), i64 70, i64 1, i32* %0)
%22 = tail call i64 @fwrite(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.18, i64 0, i64 0), i64 70, i64 1, i32* %0)
%23 = tail call i64 @fwrite(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.19, i64 0, i64 0), i64 60, i64 1, i32* %0)
%24 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.20, i64 0, i64 0), i64 66, i64 1, i32* %0)
%25 = tail call i64 @fwrite(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.21, i64 0, i64 0), i64 56, i64 1, i32* %0)
%26 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.22, i64 0, i64 0), i64 66, i64 1, i32* %0)
%27 = tail call i64 @fwrite(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.23, i64 0, i64 0), i64 67, i64 1, i32* %0)
%28 = tail call i64 @fwrite(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.24, i64 0, i64 0), i64 38, i64 1, i32* %0)
%29 = tail call i64 @fwrite(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.25, i64 0, i64 0), i64 59, i64 1, i32* %0)
%30 = tail call i64 @fwrite(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.26, i64 0, i64 0), i64 61, i64 1, i32* %0)
%31 = tail call i64 @fwrite(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.27, i64 0, i64 0), i64 69, i64 1, i32* %0)
%32 = tail call i64 @fwrite(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.28, i64 0, i64 0), i64 30, i64 1, i32* %0)
%33 = tail call i64 @fwrite(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.29, i64 0, i64 0), i64 46, i64 1, i32* %0)
%34 = tail call i64 @fwrite(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.30, i64 0, i64 0), i64 46, i64 1, i32* %0)
%35 = tail call i64 @fwrite(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.31, i64 0, i64 0), i64 69, i64 1, i32* %0)
%36 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.32, i64 0, i64 0), i64 66, i64 1, i32* %0)
%37 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.33, i64 0, i64 0), i64 68, i64 1, i32* %0)
%38 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.34, i64 0, i64 0), i64 68, i64 1, i32* %0)
%39 = tail call i64 @fwrite(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.35, i64 0, i64 0), i64 62, i64 1, i32* %0)
%40 = tail call i64 @fwrite(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.36, i64 0, i64 0), i64 50, i64 1, i32* %0)
%41 = tail call i32 @fputc(i32 10, i32* %0)
%42 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.37, i64 0, i64 0), i64 66, i64 1, i32* %0)
%43 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.38, i64 0, i64 0), i64 64, i64 1, i32* %0)
%44 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.39, i64 0, i64 0), i64 64, i64 1, i32* %0)
%45 = tail call i64 @fwrite(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.40, i64 0, i64 0), i64 62, i64 1, i32* %0)
%46 = tail call i64 @fwrite(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0), i64 71, i64 1, i32* %0)
%47 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.42, i64 0, i64 0), i64 68, i64 1, i32* %0)
%48 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.43, i64 0, i64 0), i64 64, i64 1, i32* %0)
%49 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.44, i64 0, i64 0), i64 65, i64 1, i32* %0)
%50 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.45, i64 0, i64 0), i64 66, i64 1, i32* %0)
%51 = tail call i64 @fwrite(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.46, i64 0, i64 0), i64 53, i64 1, i32* %0)
%52 = tail call i32 @fputc(i32 10, i32* %0)
%53 = tail call i64 @fwrite(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.47, i64 0, i64 0), i64 57, i64 1, i32* %0)
%54 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.48, i64 0, i64 0), i64 64, i64 1, i32* %0)
%55 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.49, i64 0, i64 0), i64 66, i64 1, i32* %0)
%56 = tail call i64 @fwrite(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.50, i64 0, i64 0), i64 67, i64 1, i32* %0)
%57 = tail call i64 @fwrite(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.51, i64 0, i64 0), i64 62, i64 1, i32* %0)
%58 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.52, i64 0, i64 0), i64 65, i64 1, i32* %0)
%59 = tail call i32 @fputc(i32 10, i32* %0)
%60 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.53, i64 0, i64 0), i64 68, i64 1, i32* %0)
%61 = tail call i64 @fwrite(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.54, i64 0, i64 0), i64 63, i64 1, i32* %0)
%62 = tail call i64 @fwrite(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.55, i64 0, i64 0), i64 36, i64 1, i32* %0)
%63 = tail call i32 @fputc(i32 10, i32* %0)
%64 = tail call i64 @fwrite(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.56, i64 0, i64 0), i64 70, i64 1, i32* %0)
%65 = tail call i64 @fwrite(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.57, i64 0, i64 0), i64 57, i64 1, i32* %0)
%66 = tail call i64 @fwrite(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.58, i64 0, i64 0), i64 69, i64 1, i32* %0)
%67 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.59, i64 0, i64 0), i64 66, i64 1, i32* %0)
%68 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.60, i64 0, i64 0), i64 66, i64 1, i32* %0)
%69 = tail call i64 @fwrite(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.61, i64 0, i64 0), i64 30, i64 1, i32* %0)
%70 = tail call i64 @fwrite(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.62, i64 0, i64 0), i64 55, i64 1, i32* %0)
%71 = tail call i64 @fwrite(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.57, i64 0, i64 0), i64 57, i64 1, i32* %0)
%72 = tail call i64 @fwrite(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.63, i64 0, i64 0), i64 71, i64 1, i32* %0)
%73 = tail call i64 @fwrite(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.64, i64 0, i64 0), i64 63, i64 1, i32* %0)
%74 = tail call i64 @fwrite(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.65, i64 0, i64 0), i64 63, i64 1, i32* %0)
%75 = tail call i64 @fwrite(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.66, i64 0, i64 0), i64 29, i64 1, i32* %0)
%76 = tail call i64 @fwrite(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.67, i64 0, i64 0), i64 67, i64 1, i32* %0)
%77 = tail call i64 @fwrite(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.68, i64 0, i64 0), i64 64, i64 1, i32* %0)
%78 = tail call i64 @fwrite(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.69, i64 0, i64 0), i64 53, i64 1, i32* %0)
%79 = tail call i64 @fwrite(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.70, i64 0, i64 0), i64 38, i64 1, i32* %0)
%80 = tail call i64 @fwrite(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.71, i64 0, i64 0), i64 70, i64 1, i32* %0)
%81 = tail call i32 @exit(i32 0)
unreachable
}