#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 /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ sprintf(char *, char *, double);
int /*<<< orphan*/ strcat(char *, char *);
void print_help(char **argv) {
  char help[8192];
  sprintf(help,
          "-----------------------------------------------------------------\n"
          "Gar2rnx (Garmin to Rinex) generates rinex2 compliant files from  \n"
          "data obtained with some Garmin handhelds using the async logger  \n"
          "-----------------------------------------------------------------\n"
          "Version 1.48, Copyright 2000-2002 Antonio Tabernero Galan        \n"
          "Version %4.2f, Copyright 2016-2017 Norm Moulton                  \n"
          "-----------------------------------------------------------------\n",
          1.50);
  strcat(help,
         "\nUSAGE: gar2rnx g12file [-stat]\n                       [-parse "
         "options]\n                       [-rinex options]\n                  "
         "     [-nav]\n                       [-monitor option]\n\n  g12file "
         "is a file generated using the async logger utility.\n          It's "
         "the only mandatory argument. If this argument is\n          stdin, "
         "gar2rnx will expect the data coming from the\n          standard "
         "input.\n          On the data contained in such file, gar2rnx can "
         "perform\n          several basic functions, each one with their own "
         "options\n\n\n********************************************************"
         "**********\n\n  -stat : shows statistics about the number, Identity "
         "byte and\n          length of received packets\n\n");
  strcat(
      help,
      "******************************************************************\n\n  "
      "-parse: this was the original functionality, designed to help us\n      "
      "    interprete the async messages sent by the GPS12.\n\n   List of "
      "options that can be activated along with -parse:\n\n  -sats: shows "
      "records 0x1a (Track status, signal, elevation, etc.)\n         "
      "Default\n  -all : displays info about all sats. Default.\n  -s nn: for "
      "those fields with a SV ID field, displays only\n         those records "
      "regarding the satellite with PRN nn\n  -r 0xr1 0xr2 ... : displays info "
      "about records 0xr1 0xr2 (hexadecimal)\n         The fields (more or "
      "less) known are interpreted.\n         Unknown bytes are simply "
      "listed.\n  -dif : presents some additional info about the increment of "
      "several\n         fields in records 0x38 and 0x16 (Obsolete)\n\n");
  strcat(help,
         "******************************************************************"
         "\n\n  -rinex: this is the default functionality (hence the change "
         "of\n          name of the program from parser to gar2rnx).\n         "
         " Since it's the default you actually don't have to type it.\n\n   "
         "List of options that can be used along with -rinex:\n\n  -etrex    : "
         "when using an Etrex (or Emap) to log your data, you\n               "
         "should use this option to obtain a proper Rinex file.\n  -reset    : "
         "reset the time-tags to the nearest full second\n               "
         "modifying the observables accordingly\n  -f        : Instead of "
         "sending the RINEX file to standard output\n               (default) "
         "it creates a file using the RINEX "
         "conventions\n\n------------------------------------------------------"
         "------------\n\n   -start tow: starts the generation of the RINEX "
         "file from tow\n               (week_seconds). By default, it starts "
         "from the first\n               record logged in g12file\n   -stop  "
         "tow: don't include in the RINEX file those records with a\n          "
         "     time-tag later than tow (week_seconds)\n   -time  tt : only tt "
         "seconds of observations go into the RINEX file\n   -int   tt : only "
         "those records from g12file that are time-tagged\n               with "
         "a multiple of tt seconds go into the RINEX "
         "file\n\n-------------------------------------------------------------"
         "-----\n");
  strcat(help,
         "\n   Observables dumped into the RINEX file:\n   By default, gar2rnx "
         "will output pseudoranges and L1 phases.\n   These observables can be "
         "modified using the following options:\n\n   -code -phase -doppler: "
         "eliminate the corresponding observables\n                          "
         "from the default set (code+phase)\n   +code +phase +doppler: add  "
         "the corresponding observables\n                          to the "
         "default set (code+phase)\n   For instance: -phase   : will output "
         "only pseudoranges\n                 +doppler : will dump code, phase "
         "and doppler\n                 -code +doppler: will output phase and "
         "doppler\n");
  strcat(help,
         "------------------------------------------------------------------\n "
         "  -date YYYY MM DD: date of the first observation (year month day)\n "
         "                    You should only use this option if you get\n     "
         "                an error message telling you that the date\n         "
         "            couldn't be obtained from the binary file.\n\n   -xyz X "
         "Y Z : our approximate position in ECEF XYZ coordinates (meters).\n   "
         "-llh lat long height: same but using lat-long (deg) and height (mt) "
         "(WGS84)\n\n   There are two situations where the above options are "
         "to be used:\n     * When no proper position could be obtained from "
         "the binary file.\n       Wait until you see an error message telling "
         "you so when running gar2rnx\n     * When you want to use that rinex "
         "file as data from a reference station\n       and you know the "
         "coordinates of your observing site with\n       a better precision "
         "than a navigation solution (+/- 10 mt)\n");
  strcat(help,
         "\n---------------------------------------------------------------\n  "
         " -area name: Name of the station or area where observations are "
         "taken.\n               If the option -f is given, the first 4 chars "
         "of this name\n               are used to create the RINEX "
         "filename.\n\n   -mark name: Marker name in the Rinex file. Name used "
         "to identify\n               a particular point of measurement.\n\n");
  strcat(help,
         "******************************************************************"
         "\n\n  -nav: (new with version 1.45)  creates a Rinex ephemeris file "
         "from\n        the binary data captured in the g12bin file.\n\n       "
         " gar2rnx g12bin -nav\n\n        will dump a Rinex ephemeris file, "
         "corresponding to the\n        session logged in g12bin to the "
         "standard output.\n        If we add the -f option, a properly named "
         "rinex\n        ephemeris file will be created, tipically "
         "brdcDDD1.YYN\n        We can change its name using the -area "
         "option:\n\n        gar2rnx g12bin -nav -f -area IUPM\n\n        will "
         "create a Rinex navigation file named IUPMDDD1.YYN\n\n");
  strcat(
      help,
      "******************************************************************\n\n  "
      "-monitor prn : (new with version 1.45)  This option followed by \n      "
      "           a prn number will monitor the navigation message \n          "
      "       coming from a particular satellite, check the \n                 "
      "parity of the received words, group them in a \n                 "
      "subframe, and identify the subframe type and page,\n                 "
      "indicating the contents of the data.\n\n   List of options that can be "
      "used along with -rinex:\n\n    -V     :   gar2rnx will interprete and "
      "present the information\n               received in the different "
      "subframes. Sure enough,\n               only those fields documented in "
      "the unclassified\n               documents will be shown.\n    -sf   N: "
      "  only subframes with id N (1 to 5) will be displayed\n    -page P:   "
      "only page number P out of subframe N will be "
      "shown\n\n***************************************************************"
      "***\n\n");
  printf("%s", help);
  exit(0);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2010,%rsp
mov    %rdi,-0x8(%rbp)
lea    -0x2010(%rbp),%rdi
lea    0xeab(%rip),%rsi
movsd  0xe9b(%rip),%xmm0
call   1050 <sprintf@plt>
lea    -0x2010(%rbp),%rdi
lea    0x105f(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x130b(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x161d(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x1b45(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x1d8d(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x2106(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x2275(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rdi
lea    0x24d1(%rip),%rsi
call   1040 <strcat@plt>
lea    -0x2010(%rbp),%rsi
lea    0x2872(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1060 <exit@plt>

x86 assembly (clang, -O2):
<print_help>:
push   %rbx
sub    $0x2000,%rsp
lea    0xeb9(%rip),%rsi
mov    %rsp,%rbx
movsd  0xea6(%rip),%xmm0
mov    %rbx,%rdi
call   1050 <sprintf@plt>
lea    0x106e(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x131e(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x1634(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x1b60(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x1dac(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x2129(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x229c(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x24fc(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcat@plt>
lea    0x28a1(%rip),%rdi
mov    %rbx,%rsi
call   1030 <printf@plt>
xor    %edi,%edi
call   1060 <exit@plt>

LLVM IR (-O0):
@.str = [463 x i8] c"-----------------------------------------------------------------\0AGar2rnx (Garmin to Rinex) generates rinex2 compliant files from \0Adata obtained with some Garmin handhelds using the async logger \0A-----------------------------------------------------------------\0AVersion 1.48, Copyright 2000-2002 Antonio Tabernero Galan \0AVersion %4.2f, Copyright 2016-2017 Norm Moulton \0A-----------------------------------------------------------------\0A\00"
@.str.1 = [703 x i8] c"\0AUSAGE: gar2rnx g12file [-stat]\0A [-parse options]\0A [-rinex options]\0A [-nav]\0A [-monitor option]\0A\0A g12file is a file generated using the async logger utility.\0A It's the only mandatory argument. If this argument is\0A stdin, gar2rnx will expect the data coming from the\0A standard input.\0A On the data contained in such file, gar2rnx can perform\0A several basic functions, each one with their own options\0A\0A\0A******************************************************************\0A\0A -stat : shows statistics about the number, Identity byte and\0A length of received packets\0A\0A\00"
@.str.2 = [805 x i8] c"******************************************************************\0A\0A -parse: this was the original functionality, designed to help us\0A interprete the async messages sent by the GPS12.\0A\0A List of options that can be activated along with -parse:\0A\0A -sats: shows records 0x1a (Track status, signal, elevation, etc.)\0A Default\0A -all : displays info about all sats. Default.\0A -s nn: for those fields with a SV ID field, displays only\0A those records regarding the satellite with PRN nn\0A -r 0xr1 0xr2 ... : displays info about records 0xr1 0xr2 (hexadecimal)\0A The fields (more or less) known are interpreted.\0A Unknown bytes are simply listed.\0A -dif : presents some additional info about the increment of several\0A fields in records 0x38 and 0x16 (Obsolete)\0A\0A\00"
@.str.3 = [1339 x i8] c"******************************************************************\0A\0A -rinex: this is the default functionality (hence the change of\0A name of the program from parser to gar2rnx).\0A Since it's the default you actually don't have to type it.\0A\0A List of options that can be used along with -rinex:\0A\0A -etrex : when using an Etrex (or Emap) to log your data, you\0A should use this option to obtain a proper Rinex file.\0A -reset : reset the time-tags to the nearest full second\0A modifying the observables accordingly\0A -f : Instead of sending the RINEX file to standard output\0A (default) it creates a file using the RINEX conventions\0A\0A------------------------------------------------------------------\0A\0A -start tow: starts the generation of the RINEX file from tow\0A (week_seconds). By default, it starts from the first\0A record logged in g12file\0A -stop tow: don't include in the RINEX file those records with a\0A time-tag later than tow (week_seconds)\0A -time tt : only tt seconds of observations go into the RINEX file\0A -int tt : only those records from g12file that are time-tagged\0A with a multiple of tt seconds go into the RINEX file\0A\0A------------------------------------------------------------------\0A\00"
@.str.4 = [603 x i8] c"\0A Observables dumped into the RINEX file:\0A By default, gar2rnx will output pseudoranges and L1 phases.\0A These observables can be modified using the following options:\0A\0A -code -phase -doppler: eliminate the corresponding observables\0A from the default set (code+phase)\0A +code +phase +doppler: add the corresponding observables\0A to the default set (code+phase)\0A For instance: -phase : will output only pseudoranges\0A +doppler : will dump code, phase and doppler\0A -code +doppler: will output phase and doppler\0A\00"
@.str.5 = [908 x i8] c"------------------------------------------------------------------\0A -date YYYY MM DD: date of the first observation (year month day)\0A You should only use this option if you get\0A an error message telling you that the date\0A couldn't be obtained from the binary file.\0A\0A -xyz X Y Z : our approximate position in ECEF XYZ coordinates (meters).\0A -llh lat long height: same but using lat-long (deg) and height (mt) (WGS84)\0A\0A There are two situations where the above options are to be used:\0A * When no proper position could be obtained from the binary file.\0A Wait until you see an error message telling you so when running gar2rnx\0A * When you want to use that rinex file as data from a reference station\0A and you know the coordinates of your observing site with\0A a better precision than a navigation solution (+/- 10 mt)\0A\00"
@.str.6 = [386 x i8] c"\0A---------------------------------------------------------------\0A -area name: Name of the station or area where observations are taken.\0A If the option -f is given, the first 4 chars of this name\0A are used to create the RINEX filename.\0A\0A -mark name: Marker name in the Rinex file. Name used to identify\0A a particular point of measurement.\0A\0A\00"
@.str.7 = [623 x i8] c"******************************************************************\0A\0A -nav: (new with version 1.45) creates a Rinex ephemeris file from\0A the binary data captured in the g12bin file.\0A\0A gar2rnx g12bin -nav\0A\0A will dump a Rinex ephemeris file, corresponding to the\0A session logged in g12bin to the standard output.\0A If we add the -f option, a properly named rinex\0A ephemeris file will be created, tipically brdcDDD1.YYN\0A We can change its name using the -area option:\0A\0A gar2rnx g12bin -nav -f -area IUPM\0A\0A will create a Rinex navigation file named IUPMDDD1.YYN\0A\0A\00"
@.str.8 = [948 x i8] c"******************************************************************\0A\0A -monitor prn : (new with version 1.45) This option followed by \0A a prn number will monitor the navigation message \0A coming from a particular satellite, check the \0A parity of the received words, group them in a \0A subframe, and identify the subframe type and page,\0A indicating the contents of the data.\0A\0A List of options that can be used along with -rinex:\0A\0A -V : gar2rnx will interprete and present the information\0A received in the different subframes. Sure enough,\0A only those fields documented in the unclassified\0A documents will be shown.\0A -sf N: only subframes with id N (1 to 5) will be displayed\0A -page P: only page number P out of subframe N will be shown\0A\0A******************************************************************\0A\0A\00"
@.str.9 = [3 x i8] c"%s\00"
define void @print_help(i8** %0) {
%2 = alloca i8**
%3 = alloca [8192 x i8]
store i8** %0, i8*** %2
%4 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%5 = call i32 @sprintf(i8* %4, i8* getelementptr inbounds ([463 x i8], [463 x i8]* @.str, i64 0, i64 0), double 1.500000e+00)
%6 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%7 = call i32 @strcat(i8* %6, i8* getelementptr inbounds ([703 x i8], [703 x i8]* @.str.1, i64 0, i64 0))
%8 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%9 = call i32 @strcat(i8* %8, i8* getelementptr inbounds ([805 x i8], [805 x i8]* @.str.2, i64 0, i64 0))
%10 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%11 = call i32 @strcat(i8* %10, i8* getelementptr inbounds ([1339 x i8], [1339 x i8]* @.str.3, i64 0, i64 0))
%12 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%13 = call i32 @strcat(i8* %12, i8* getelementptr inbounds ([603 x i8], [603 x i8]* @.str.4, i64 0, i64 0))
%14 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%15 = call i32 @strcat(i8* %14, i8* getelementptr inbounds ([908 x i8], [908 x i8]* @.str.5, i64 0, i64 0))
%16 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%17 = call i32 @strcat(i8* %16, i8* getelementptr inbounds ([386 x i8], [386 x i8]* @.str.6, i64 0, i64 0))
%18 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%19 = call i32 @strcat(i8* %18, i8* getelementptr inbounds ([623 x i8], [623 x i8]* @.str.7, i64 0, i64 0))
%20 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%21 = call i32 @strcat(i8* %20, i8* getelementptr inbounds ([948 x i8], [948 x i8]* @.str.8, i64 0, i64 0))
%22 = getelementptr inbounds [8192 x i8], [8192 x i8]* %3, i64 0, i64 0
%23 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i8* %22)
%24 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [463 x i8] c"-----------------------------------------------------------------\0AGar2rnx (Garmin to Rinex) generates rinex2 compliant files from \0Adata obtained with some Garmin handhelds using the async logger \0A-----------------------------------------------------------------\0AVersion 1.48, Copyright 2000-2002 Antonio Tabernero Galan \0AVersion %4.2f, Copyright 2016-2017 Norm Moulton \0A-----------------------------------------------------------------\0A\00"
@.str.1 = [703 x i8] c"\0AUSAGE: gar2rnx g12file [-stat]\0A [-parse options]\0A [-rinex options]\0A [-nav]\0A [-monitor option]\0A\0A g12file is a file generated using the async logger utility.\0A It's the only mandatory argument. If this argument is\0A stdin, gar2rnx will expect the data coming from the\0A standard input.\0A On the data contained in such file, gar2rnx can perform\0A several basic functions, each one with their own options\0A\0A\0A******************************************************************\0A\0A -stat : shows statistics about the number, Identity byte and\0A length of received packets\0A\0A\00"
@.str.2 = [805 x i8] c"******************************************************************\0A\0A -parse: this was the original functionality, designed to help us\0A interprete the async messages sent by the GPS12.\0A\0A List of options that can be activated along with -parse:\0A\0A -sats: shows records 0x1a (Track status, signal, elevation, etc.)\0A Default\0A -all : displays info about all sats. Default.\0A -s nn: for those fields with a SV ID field, displays only\0A those records regarding the satellite with PRN nn\0A -r 0xr1 0xr2 ... : displays info about records 0xr1 0xr2 (hexadecimal)\0A The fields (more or less) known are interpreted.\0A Unknown bytes are simply listed.\0A -dif : presents some additional info about the increment of several\0A fields in records 0x38 and 0x16 (Obsolete)\0A\0A\00"
@.str.3 = [1339 x i8] c"******************************************************************\0A\0A -rinex: this is the default functionality (hence the change of\0A name of the program from parser to gar2rnx).\0A Since it's the default you actually don't have to type it.\0A\0A List of options that can be used along with -rinex:\0A\0A -etrex : when using an Etrex (or Emap) to log your data, you\0A should use this option to obtain a proper Rinex file.\0A -reset : reset the time-tags to the nearest full second\0A modifying the observables accordingly\0A -f : Instead of sending the RINEX file to standard output\0A (default) it creates a file using the RINEX conventions\0A\0A------------------------------------------------------------------\0A\0A -start tow: starts the generation of the RINEX file from tow\0A (week_seconds). By default, it starts from the first\0A record logged in g12file\0A -stop tow: don't include in the RINEX file those records with a\0A time-tag later than tow (week_seconds)\0A -time tt : only tt seconds of observations go into the RINEX file\0A -int tt : only those records from g12file that are time-tagged\0A with a multiple of tt seconds go into the RINEX file\0A\0A------------------------------------------------------------------\0A\00"
@.str.4 = [603 x i8] c"\0A Observables dumped into the RINEX file:\0A By default, gar2rnx will output pseudoranges and L1 phases.\0A These observables can be modified using the following options:\0A\0A -code -phase -doppler: eliminate the corresponding observables\0A from the default set (code+phase)\0A +code +phase +doppler: add the corresponding observables\0A to the default set (code+phase)\0A For instance: -phase : will output only pseudoranges\0A +doppler : will dump code, phase and doppler\0A -code +doppler: will output phase and doppler\0A\00"
@.str.5 = [908 x i8] c"------------------------------------------------------------------\0A -date YYYY MM DD: date of the first observation (year month day)\0A You should only use this option if you get\0A an error message telling you that the date\0A couldn't be obtained from the binary file.\0A\0A -xyz X Y Z : our approximate position in ECEF XYZ coordinates (meters).\0A -llh lat long height: same but using lat-long (deg) and height (mt) (WGS84)\0A\0A There are two situations where the above options are to be used:\0A * When no proper position could be obtained from the binary file.\0A Wait until you see an error message telling you so when running gar2rnx\0A * When you want to use that rinex file as data from a reference station\0A and you know the coordinates of your observing site with\0A a better precision than a navigation solution (+/- 10 mt)\0A\00"
@.str.6 = [386 x i8] c"\0A---------------------------------------------------------------\0A -area name: Name of the station or area where observations are taken.\0A If the option -f is given, the first 4 chars of this name\0A are used to create the RINEX filename.\0A\0A -mark name: Marker name in the Rinex file. Name used to identify\0A a particular point of measurement.\0A\0A\00"
@.str.7 = [623 x i8] c"******************************************************************\0A\0A -nav: (new with version 1.45) creates a Rinex ephemeris file from\0A the binary data captured in the g12bin file.\0A\0A gar2rnx g12bin -nav\0A\0A will dump a Rinex ephemeris file, corresponding to the\0A session logged in g12bin to the standard output.\0A If we add the -f option, a properly named rinex\0A ephemeris file will be created, tipically brdcDDD1.YYN\0A We can change its name using the -area option:\0A\0A gar2rnx g12bin -nav -f -area IUPM\0A\0A will create a Rinex navigation file named IUPMDDD1.YYN\0A\0A\00"
@.str.8 = [948 x i8] c"******************************************************************\0A\0A -monitor prn : (new with version 1.45) This option followed by \0A a prn number will monitor the navigation message \0A coming from a particular satellite, check the \0A parity of the received words, group them in a \0A subframe, and identify the subframe type and page,\0A indicating the contents of the data.\0A\0A List of options that can be used along with -rinex:\0A\0A -V : gar2rnx will interprete and present the information\0A received in the different subframes. Sure enough,\0A only those fields documented in the unclassified\0A documents will be shown.\0A -sf N: only subframes with id N (1 to 5) will be displayed\0A -page P: only page number P out of subframe N will be shown\0A\0A******************************************************************\0A\0A\00"
@.str.9 = [3 x i8] c"%s\00"
define void @print_help(i8** nocapture readnone %0) {
%2 = alloca [8192 x i8]
%3 = getelementptr inbounds [8192 x i8], [8192 x i8]* %2, i64 0, i64 0
%4 = call i32 @sprintf(i8* %3, i8* dereferenceable(1) getelementptr inbounds ([463 x i8], [463 x i8]* @.str, i64 0, i64 0), double 1.500000e+00)
%5 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([703 x i8], [703 x i8]* @.str.1, i64 0, i64 0))
%6 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([805 x i8], [805 x i8]* @.str.2, i64 0, i64 0))
%7 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([1339 x i8], [1339 x i8]* @.str.3, i64 0, i64 0))
%8 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([603 x i8], [603 x i8]* @.str.4, i64 0, i64 0))
%9 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([908 x i8], [908 x i8]* @.str.5, i64 0, i64 0))
%10 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([386 x i8], [386 x i8]* @.str.6, i64 0, i64 0))
%11 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([623 x i8], [623 x i8]* @.str.7, i64 0, i64 0))
%12 = call i32 @strcat(i8* %3, i8* getelementptr inbounds ([948 x i8], [948 x i8]* @.str.8, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i8* %3)
%14 = call i32 @exit(i32 0)
unreachable
}