#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void print_program_history(void) {
  printf("\n");
  printf("        -------------------------- PROGRAM HISTORY "
         "---------------------------\n");
  printf("        |                            date order                      "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        |                     CURRENT VERSION = v3.0.0               "
         "        |\n");
  printf("        |                          28 / Feb / 2012                   "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.1.0 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Initial development of program modules.                 "
         "        |\n");
  printf("        | 2) Initial creation of routines for reading job control "
         "and data   |\n");
  printf("        |    files.                                                  "
         "        |\n");
  printf("        | 3) Initial implementation of the Simplex algorithm for     "
         "        |\n");
  printf("        |    minimisation.                                           "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.1.1 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Completed implementation of simplex minimiser.          "
         "        |\n");
  printf("        |    Minimisation is available for BONDS, ANGLES and "
         "DIHEDRALS.      |\n");
  printf("        | 2) Completed implementation of sum of squares minimisation "
         "for     |\n");
  printf("        |    standard amber force field equation.                    "
         "        |\n");
  printf("        | 3) Added extra options to job control file:                "
         "        |\n");
  printf("        |    CONV_LIMIT, BONDFC_dx, BONDEQ_dx, ANGLEFC_dx, "
         "ANGLEEQ_dx,       |\n");
  printf("        |    DIHEDRALBH_dx, DIHEDRALN_dx and DIHEDRALG_dx            "
         "        |\n");
  printf("        | 4) Added routines to calculate the R squared value of the "
         "fit.     |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.1.2 Beta 1                                       "
         "        |\n");
  printf("        | --------------------                                       "
         "        |\n");
  printf("        | 1) Created 3 test cases to test bond, angle and dihedral "
         "fits.     |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.0 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Updated entire minimisation system to handle 3 "
         "different options|\n");
  printf("        |    for K - K can now be set to a float value in the job "
         "control    |\n");
  printf("        |    file which means K will be kept constant throughout. It "
         "can be  |\n");
  printf("        |    set to READ in which case K is expected after the QM "
         "energy.    |\n");
  printf("        |    In this situation K can be different for each structure "
         "but will|\n");
  printf("        |    not be changed during the fitting procedure. Finally K "
         "can also |\n");
  printf("        |    be set to FIT in which case a starting guess should be "
         "given as |\n");
  printf("        |    the first float in the start point file. K will then be "
         "adjusted|\n");
  printf("        |    during the fitting.                                     "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.1 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Modified convergence checking to now test how many "
         "cycles it has|\n");
  printf("        |    been since the minimum value found changed. If this is "
         "more than|\n");
  printf("        |    100 outer cycles (restarts) convergence is assumed.     "
         "        |\n");
  printf("        | 2) Minor changes to dx variable defaults                   "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.2 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Formalised the testing procedure and introduced several "
         "new test|\n");
  printf("        |    cases that fully test bond, angle and dihedral fitting. "
         "        |\n");
  printf("        | 2) Created utility program called proc_g98_output that "
         "will take a |\n");
  printf("        |    series of gaussian files and extract the specified "
         "energy, bond |\n");
  printf("        |    lenghts, angles sizes and dihedral values etc. This "
         "program will|\n");
  printf("        |    then print to standard out the data required for the -q "
         "QM_data |\n");
  printf("        |    file used by the parameter fitter.                      "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.2 Alpha 2                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Fixed bug in angle fitting that was leading to the "
         "angle force  |\n");
  printf("        |    constant being treated as being in KCal/(mol deg)^2 "
         "instead of  |\n");
  printf("        |    KCal/(mol rad)^2.                                       "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.2 Alpha 3                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Modifications to proc_g98_output to improve numerical "
         "stability |\n");
  printf("        |    in dihedral calculations. Minor tweaks to try and avoid "
         "        |\n");
  printf("        |    situations that result in divide by zero errors.        "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 0.2.2 Alpha 4                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Fixed bug in mishandling of dihedralBH_dx, dihedralN_dx "
         "and     |\n");
  printf("        |    dihedralG_dx parameters by simplex routine.             "
         "        |\n");
  printf("        | 2) Fixed minor bugs concerning the use of K=FIT in simplex "
         "routine.|\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.0 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Work commenced on a completely new version of the code "
         "that     |\n");
  printf("        |    will be much more closely coupled to amber. Reading "
         "prmtop and  |\n");
  printf("        |    mdcrd files. In this way the concept of an atom type "
         "should     |\n");
  printf("        |    be much better preserved.                               "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.1 Beta 1                                       "
         "        |\n");
  printf("        | --------------------                                       "
         "        |\n");
  printf("        | 1) Commenced testing of parameter fitting with the simplex "
         "routine |\n");
  printf("        |    and the amber standard force field. Started creating a "
         "test     |\n");
  printf("        |    suite of example runs for checking that the program is "
         "behaving |\n");
  printf("        |    as expected.                                            "
         "        |\n");
  printf("        | 2) Added routine to print the amber energy generated from "
         "the final|\n");
  printf("        |    parameters.                                             "
         "        |\n");
  printf("        | 3) Changed the default parameters fitting to include: For "
         "Bonds Kr |\n");
  printf("        |    and Req are fit. For Angles Kt and THeq are fit. For "
         "Dihedrals  |\n");
  printf("        |    only Kp is fit by default.                              "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.2 Beta 1                                       "
         "        |\n");
  printf("        | --------------------                                       "
         "        |\n");
  printf("        | 1) Completed the first set of test routines and confirmed "
         "that     |\n");
  printf("        |    basic fitting of bond, angle and dihedral fitting "
         "works.        |\n");
  printf("        | 2) Introduced a system whereby the use can manually "
         "specify what   |\n");
  printf("        |    what parameters they want fitted and which they want to "
         "keep    |\n");
  printf("        |    constant.                                               "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.3 Alpha 1                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Started development of MPI version of code. Currently "
         "only      |\n");
  printf("        |    the evaluation of the eval_sum_squares_amber_std "
         "routine is     |\n");
  printf("        |    parallelised.                                           "
         "        |\n");
  printf("        | 2) Minor code clean up and portability improvement.        "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.3 Alpha 2                                      "
         "        |\n");
  printf("        | ---------------------                                      "
         "        |\n");
  printf("        | 1) Minor bug fixes and continued testing of parallel code. "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.3                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) MPI Code now passes all tests and appears to work well. "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.4                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) Fixed overflow bug in create input. Program will now no "
         "longer  |\n");
  printf("        |    spuriously quit with an error claiming the filename to "
         "be       |\n");
  printf("        |    written would exceed 1023 characters.                   "
         "        |\n");
  printf("        | 2) Fixed incorrect error message in read_qm_energy.        "
         "        |\n");
  printf("        | 3) Changed the calc_r_squared routine to now use the "
         "Pearson       |\n");
  printf("        |    correlation formula to find R and then square it.       "
         "        |\n");
  printf("        | 4) Fixed minor bug in the calculation of the average "
         "function value|\n");
  printf("        |    in the simplex routine.                                 "
         "        |\n");
  printf("        | 5) Fixed bug involving the testing of simplex convergence. "
         "In some |\n");
  printf("        |    cases func_hi could actually contain parameters lower "
         "than      |\n");
  printf("        |    func_low. This has been fixed by adding a sort routine "
         "prior to |\n");
  printf("        |    checking for convergence.                               "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.5                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) Migrated code to Amber CVS tree.                        "
         "        |\n");
  printf("        | 2) Modified output slightly to make it compatible with "
         "amber's     |\n");
  printf("        |    dacdif.                                                 "
         "        |\n");
  printf("        | 3) Added 1 to the printing of the number of simplex outer "
         "cycles   |\n");
  printf("        |    since the program counts from zero internally but it "
         "makes more |\n");
  printf("        |    sense to count from 1 when printing info to the output "
         "file.    |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.0.6                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) Reduced the precision to which some numbers are printed "
         "in the  |\n");
  printf("        |    output file to make automated testing on different "
         "platforms    |\n");
  printf("        |    easier.                                                 "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 2.1.0                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) Added the option to load or save the dimensions to be "
         "fit to a  |\n");
  printf("        |    file so that they do not have to be typed in for each "
         "run.      |\n");
  printf("        | 2) Added the genetic algorithm fitting function as an "
         "alternative  |\n");
  printf("        |    to simplex for fitting.                                 "
         "        |\n");
  printf("        | 3) Set the random number generator to seed on each run.    "
         "        |\n");
  printf("        |                                                            "
         "        |\n");
  printf("        | Version 3.0.0                                              "
         "        |\n");
  printf("        | -------------                                              "
         "        |\n");
  printf("        | 1) Added bounds checking on input structures that can warn "
         "when    |\n");
  printf("        |    input structures do not properly span the parameters to "
         "be      |\n");
  printf("        |    optimised.                                              "
         "        |\n");
  printf("        | 2) Numerous improvements to the genetic algorithm          "
         "        |\n");
  printf("        | 3) Implemented parallel version for genetic algorithm and "
         "fixed    |\n");
  printf("        |    problems with the simplex one.                          "
         "        |\n");
  printf("        | 4) Rewrote test cases                                      "
         "        |\n");
  printf("        "
         "---------------------------------------------------------------------"
         "-\n");
  printf("\n\n");
}


x86 assembly (clang, -O0):
<print_program_history>:
push   %rbp
mov    %rsp,%rbp
lea    0x3736(%rip),%rdi
call   1030 <printf@plt>
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1d(%rip),%rdi
call   1030 <printf@plt>
lea    0xf61(%rip),%rdi
call   1030 <printf@plt>
lea    0xfa5(%rip),%rdi
call   1030 <printf@plt>
lea    0xfe9(%rip),%rdi
call   1030 <printf@plt>
lea    0xf3d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1021(%rip),%rdi
call   1030 <printf@plt>
lea    0x1065(%rip),%rdi
call   1030 <printf@plt>
lea    0x10a9(%rip),%rdi
call   1030 <printf@plt>
lea    0x10ed(%rip),%rdi
call   1030 <printf@plt>
lea    0x1131(%rip),%rdi
call   1030 <printf@plt>
lea    0x1175(%rip),%rdi
call   1030 <printf@plt>
lea    0x11b9(%rip),%rdi
call   1030 <printf@plt>
lea    0xedd(%rip),%rdi
call   1030 <printf@plt>
lea    0x11f1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1005(%rip),%rdi
call   1030 <printf@plt>
lea    0x1229(%rip),%rdi
call   1030 <printf@plt>
lea    0x126d(%rip),%rdi
call   1030 <printf@plt>
lea    0x12b1(%rip),%rdi
call   1030 <printf@plt>
lea    0x12f5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1339(%rip),%rdi
call   1030 <printf@plt>
lea    0x137d(%rip),%rdi
call   1030 <printf@plt>
lea    0x13c1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1405(%rip),%rdi
call   1030 <printf@plt>
lea    0xe59(%rip),%rdi
call   1030 <printf@plt>
lea    0x143d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1481(%rip),%rdi
call   1030 <printf@plt>
lea    0x14c5(%rip),%rdi
call   1030 <printf@plt>
lea    0xe29(%rip),%rdi
call   1030 <printf@plt>
lea    0x14fd(%rip),%rdi
call   1030 <printf@plt>
lea    0xf51(%rip),%rdi
call   1030 <printf@plt>
lea    0x1535(%rip),%rdi
call   1030 <printf@plt>
lea    0x1579(%rip),%rdi
call   1030 <printf@plt>
lea    0x15bd(%rip),%rdi
call   1030 <printf@plt>
lea    0x1601(%rip),%rdi
call   1030 <printf@plt>
lea    0x1645(%rip),%rdi
call   1030 <printf@plt>
lea    0x1689(%rip),%rdi
call   1030 <printf@plt>
lea    0x16cd(%rip),%rdi
call   1030 <printf@plt>
lea    0x1711(%rip),%rdi
call   1030 <printf@plt>
lea    0x1755(%rip),%rdi
call   1030 <printf@plt>
lea    0xd99(%rip),%rdi
call   1030 <printf@plt>
lea    0x178d(%rip),%rdi
call   1030 <printf@plt>
lea    0xec1(%rip),%rdi
call   1030 <printf@plt>
lea    0x17c5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1809(%rip),%rdi
call   1030 <printf@plt>
lea    0x184d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1891(%rip),%rdi
call   1030 <printf@plt>
lea    0xd45(%rip),%rdi
call   1030 <printf@plt>
lea    0x18c9(%rip),%rdi
call   1030 <printf@plt>
lea    0xe6d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1901(%rip),%rdi
call   1030 <printf@plt>
lea    0x1945(%rip),%rdi
call   1030 <printf@plt>
lea    0x1989(%rip),%rdi
call   1030 <printf@plt>
lea    0x19cd(%rip),%rdi
call   1030 <printf@plt>
lea    0x1a11(%rip),%rdi
call   1030 <printf@plt>
lea    0x1a55(%rip),%rdi
call   1030 <printf@plt>
lea    0x1a99(%rip),%rdi
call   1030 <printf@plt>
lea    0xccd(%rip),%rdi
call   1030 <printf@plt>
lea    0x1ad1(%rip),%rdi
call   1030 <printf@plt>
lea    0xdf5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1b09(%rip),%rdi
call   1030 <printf@plt>
lea    0x1b4d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1b91(%rip),%rdi
call   1030 <printf@plt>
lea    0xc85(%rip),%rdi
call   1030 <printf@plt>
lea    0x1bc9(%rip),%rdi
call   1030 <printf@plt>
lea    0xdad(%rip),%rdi
call   1030 <printf@plt>
lea    0x1c01(%rip),%rdi
call   1030 <printf@plt>
lea    0x1c45(%rip),%rdi
call   1030 <printf@plt>
lea    0x1c89(%rip),%rdi
call   1030 <printf@plt>
lea    0xc3d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1cc1(%rip),%rdi
call   1030 <printf@plt>
lea    0xd65(%rip),%rdi
call   1030 <printf@plt>
lea    0x1cf9(%rip),%rdi
call   1030 <printf@plt>
lea    0x1d3d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1d81(%rip),%rdi
call   1030 <printf@plt>
lea    0xbf5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1db9(%rip),%rdi
call   1030 <printf@plt>
lea    0xd1d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1df1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1e35(%rip),%rdi
call   1030 <printf@plt>
lea    0x1e79(%rip),%rdi
call   1030 <printf@plt>
lea    0x1ebd(%rip),%rdi
call   1030 <printf@plt>
lea    0xba1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1ef5(%rip),%rdi
call   1030 <printf@plt>
lea    0x11c9(%rip),%rdi
call   1030 <printf@plt>
lea    0x1f2d(%rip),%rdi
call   1030 <printf@plt>
lea    0x1f71(%rip),%rdi
call   1030 <printf@plt>
lea    0x1fb5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1ff9(%rip),%rdi
call   1030 <printf@plt>
lea    0x203d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2081(%rip),%rdi
call   1030 <printf@plt>
lea    0x20c5(%rip),%rdi
call   1030 <printf@plt>
lea    0x2109(%rip),%rdi
call   1030 <printf@plt>
lea    0x214d(%rip),%rdi
call   1030 <printf@plt>
lea    0xb11(%rip),%rdi
call   1030 <printf@plt>
lea    0x2185(%rip),%rdi
call   1030 <printf@plt>
lea    0x1139(%rip),%rdi
call   1030 <printf@plt>
lea    0x21bd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2201(%rip),%rdi
call   1030 <printf@plt>
lea    0x2245(%rip),%rdi
call   1030 <printf@plt>
lea    0x2289(%rip),%rdi
call   1030 <printf@plt>
lea    0x22cd(%rip),%rdi
call   1030 <printf@plt>
lea    0xab1(%rip),%rdi
call   1030 <printf@plt>
lea    0x2305(%rip),%rdi
call   1030 <printf@plt>
lea    0xbd9(%rip),%rdi
call   1030 <printf@plt>
lea    0x233d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2381(%rip),%rdi
call   1030 <printf@plt>
lea    0x23c5(%rip),%rdi
call   1030 <printf@plt>
lea    0x2409(%rip),%rdi
call   1030 <printf@plt>
lea    0xa5d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2441(%rip),%rdi
call   1030 <printf@plt>
lea    0xb85(%rip),%rdi
call   1030 <printf@plt>
lea    0x2479(%rip),%rdi
call   1030 <printf@plt>
lea    0xa2d(%rip),%rdi
call   1030 <printf@plt>
lea    0x24b1(%rip),%rdi
call   1030 <printf@plt>
lea    0x24f5(%rip),%rdi
call   1030 <printf@plt>
lea    0x2539(%rip),%rdi
call   1030 <printf@plt>
lea    0x9fd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2571(%rip),%rdi
call   1030 <printf@plt>
lea    0x24c5(%rip),%rdi
call   1030 <printf@plt>
lea    0x25a9(%rip),%rdi
call   1030 <printf@plt>
lea    0x25ed(%rip),%rdi
call   1030 <printf@plt>
lea    0x2631(%rip),%rdi
call   1030 <printf@plt>
lea    0x2675(%rip),%rdi
call   1030 <printf@plt>
lea    0x26b9(%rip),%rdi
call   1030 <printf@plt>
lea    0x26fd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2741(%rip),%rdi
call   1030 <printf@plt>
lea    0x2785(%rip),%rdi
call   1030 <printf@plt>
lea    0x27c9(%rip),%rdi
call   1030 <printf@plt>
lea    0x280d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2851(%rip),%rdi
call   1030 <printf@plt>
lea    0x2895(%rip),%rdi
call   1030 <printf@plt>
lea    0x949(%rip),%rdi
call   1030 <printf@plt>
lea    0x28cd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2411(%rip),%rdi
call   1030 <printf@plt>
lea    0x2905(%rip),%rdi
call   1030 <printf@plt>
lea    0x2949(%rip),%rdi
call   1030 <printf@plt>
lea    0x298d(%rip),%rdi
call   1030 <printf@plt>
lea    0x29d1(%rip),%rdi
call   1030 <printf@plt>
lea    0x2a15(%rip),%rdi
call   1030 <printf@plt>
lea    0x2a59(%rip),%rdi
call   1030 <printf@plt>
lea    0x8dd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2a91(%rip),%rdi
call   1030 <printf@plt>
lea    0x23a5(%rip),%rdi
call   1030 <printf@plt>
lea    0x2ac9(%rip),%rdi
call   1030 <printf@plt>
lea    0x2b0d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2b51(%rip),%rdi
call   1030 <printf@plt>
lea    0x895(%rip),%rdi
call   1030 <printf@plt>
lea    0x2b89(%rip),%rdi
call   1030 <printf@plt>
lea    0x235d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2bc1(%rip),%rdi
call   1030 <printf@plt>
lea    0x2c05(%rip),%rdi
call   1030 <printf@plt>
lea    0x2c49(%rip),%rdi
call   1030 <printf@plt>
lea    0x2c8d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2cd1(%rip),%rdi
call   1030 <printf@plt>
lea    0x835(%rip),%rdi
call   1030 <printf@plt>
lea    0x2d09(%rip),%rdi
call   1030 <printf@plt>
lea    0x22fd(%rip),%rdi
call   1030 <printf@plt>
lea    0x2d41(%rip),%rdi
call   1030 <printf@plt>
lea    0x2d85(%rip),%rdi
call   1030 <printf@plt>
lea    0x2dc9(%rip),%rdi
call   1030 <printf@plt>
lea    0x2e0d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2e51(%rip),%rdi
call   1030 <printf@plt>
lea    0x2e95(%rip),%rdi
call   1030 <printf@plt>
lea    0x2ed9(%rip),%rdi
call   1030 <printf@plt>
lea    0x2f1d(%rip),%rdi
call   1030 <printf@plt>
lea    0x2f61(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_program_history>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xec7(%rip),%rdi
call   1040 <puts@plt>
lea    0xf0a(%rip),%rdi
call   1040 <puts@plt>
lea    0x3319(%rip),%r12
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0xf3e(%rip),%rdi
call   1040 <puts@plt>
lea    0xf81(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0xfbc(%rip),%rdi
call   1040 <puts@plt>
lea    0x2860(%rip),%r14
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0xff0(%rip),%rdi
call   1040 <puts@plt>
lea    0x1033(%rip),%rdi
call   1040 <puts@plt>
lea    0x1076(%rip),%rdi
call   1040 <puts@plt>
lea    0x10b9(%rip),%rdi
call   1040 <puts@plt>
lea    0x10fc(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1137(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1172(%rip),%rdi
call   1040 <puts@plt>
lea    0x11b5(%rip),%rdi
call   1040 <puts@plt>
lea    0x11f8(%rip),%rdi
call   1040 <puts@plt>
lea    0x123b(%rip),%rdi
call   1040 <puts@plt>
lea    0x127e(%rip),%rdi
call   1040 <puts@plt>
lea    0x12c1(%rip),%rdi
call   1040 <puts@plt>
lea    0x1304(%rip),%rdi
call   1040 <puts@plt>
lea    0x1347(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1382(%rip),%rdi
call   1040 <puts@plt>
lea    0x23d1(%rip),%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x13b6(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x13f1(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x142c(%rip),%rdi
call   1040 <puts@plt>
lea    0x146f(%rip),%rdi
call   1040 <puts@plt>
lea    0x14b2(%rip),%rdi
call   1040 <puts@plt>
lea    0x14f5(%rip),%rdi
call   1040 <puts@plt>
lea    0x1538(%rip),%rdi
call   1040 <puts@plt>
lea    0x157b(%rip),%rdi
call   1040 <puts@plt>
lea    0x15be(%rip),%rdi
call   1040 <puts@plt>
lea    0x1601(%rip),%rdi
call   1040 <puts@plt>
lea    0x1644(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x167f(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x16ba(%rip),%rdi
call   1040 <puts@plt>
lea    0x16fd(%rip),%rdi
call   1040 <puts@plt>
lea    0x1740(%rip),%rdi
call   1040 <puts@plt>
lea    0x1783(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x17be(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x17f9(%rip),%rdi
call   1040 <puts@plt>
lea    0x183c(%rip),%rdi
call   1040 <puts@plt>
lea    0x187f(%rip),%rdi
call   1040 <puts@plt>
lea    0x18c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1905(%rip),%rdi
call   1040 <puts@plt>
lea    0x1948(%rip),%rdi
call   1040 <puts@plt>
lea    0x198b(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x19c6(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1a01(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a44(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a87(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1ac2(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1afd(%rip),%rdi
call   1040 <puts@plt>
lea    0x1b40(%rip),%rdi
call   1040 <puts@plt>
lea    0x1b83(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1bbe(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1bf9(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c3c(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c7f(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1cba(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1cf5(%rip),%rdi
call   1040 <puts@plt>
lea    0x1d38(%rip),%rdi
call   1040 <puts@plt>
lea    0x1d7b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1dbe(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x1df9(%rip),%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x1e34(%rip),%rdi
call   1040 <puts@plt>
lea    0x1e77(%rip),%rdi
call   1040 <puts@plt>
lea    0x1eba(%rip),%rdi
call   1040 <puts@plt>
lea    0x1efd(%rip),%rdi
call   1040 <puts@plt>
lea    0x1f40(%rip),%rdi
call   1040 <puts@plt>
lea    0x1f83(%rip),%rdi
call   1040 <puts@plt>
lea    0x1fc6(%rip),%rdi
call   1040 <puts@plt>
lea    0x2009(%rip),%rdi
call   1040 <puts@plt>
lea    0x204c(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2087(%rip),%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x2111(%rip),%rdi
call   1040 <puts@plt>
lea    0x2154(%rip),%rdi
call   1040 <puts@plt>
lea    0x2197(%rip),%rdi
call   1040 <puts@plt>
lea    0x21da(%rip),%rdi
call   1040 <puts@plt>
lea    0x221d(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2258(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x2293(%rip),%rdi
call   1040 <puts@plt>
lea    0x22d6(%rip),%rdi
call   1040 <puts@plt>
lea    0x2319(%rip),%rdi
call   1040 <puts@plt>
lea    0x235c(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2397(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x2421(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x245c(%rip),%rdi
call   1040 <puts@plt>
lea    0x2ece(%rip),%rbx
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x2490(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x24cb(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x2506(%rip),%rdi
call   1040 <puts@plt>
lea    0x2549(%rip),%rdi
call   1040 <puts@plt>
lea    0x258c(%rip),%rdi
call   1040 <puts@plt>
lea    0x25cf(%rip),%rdi
call   1040 <puts@plt>
lea    0x2612(%rip),%rdi
call   1040 <puts@plt>
lea    0x2655(%rip),%rdi
call   1040 <puts@plt>
lea    0x2698(%rip),%rdi
call   1040 <puts@plt>
lea    0x26db(%rip),%rdi
call   1040 <puts@plt>
lea    0x271e(%rip),%rdi
call   1040 <puts@plt>
lea    0x2761(%rip),%rdi
call   1040 <puts@plt>
lea    0x27a4(%rip),%rdi
call   1040 <puts@plt>
lea    0x27e7(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2822(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x285d(%rip),%rdi
call   1040 <puts@plt>
lea    0x28a0(%rip),%rdi
call   1040 <puts@plt>
lea    0x28e3(%rip),%rdi
call   1040 <puts@plt>
lea    0x2926(%rip),%rdi
call   1040 <puts@plt>
lea    0x2969(%rip),%rdi
call   1040 <puts@plt>
lea    0x29ac(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x29e7(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x2a22(%rip),%rdi
call   1040 <puts@plt>
lea    0x2a65(%rip),%rdi
call   1040 <puts@plt>
lea    0x2aa8(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2ae3(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x2b1e(%rip),%rdi
call   1040 <puts@plt>
lea    0x2b61(%rip),%rdi
call   1040 <puts@plt>
lea    0x2ba4(%rip),%rdi
call   1040 <puts@plt>
lea    0x2be7(%rip),%rdi
call   1040 <puts@plt>
lea    0x2c2a(%rip),%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x2cb4(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0x2d3e(%rip),%rdi
call   1040 <puts@plt>
lea    0x2d81(%rip),%rdi
call   1040 <puts@plt>
lea    0x2dc4(%rip),%rdi
call   1040 <puts@plt>
lea    0x2e07(%rip),%rdi
call   1040 <puts@plt>
lea    0x2e4a(%rip),%rdi
call   1040 <puts@plt>
lea    0x2e8d(%rip),%rdi
call   1040 <puts@plt>
lea    0x2ed0(%rip),%rdi
call   1040 <puts@plt>
lea    0x2f13(%rip),%rdi
call   1040 <puts@plt>
lea    0x2f56(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [2 x i8] c"\0A\00"
@.str.1 = [80 x i8] c" -------------------------- PROGRAM HISTORY ---------------------------\0A\00"
@.str.2 = [80 x i8] c" | date order |\0A\00"
@.str.3 = [80 x i8] c" | |\0A\00"
@.str.4 = [80 x i8] c" | CURRENT VERSION = v3.0.0 |\0A\00"
@.str.5 = [80 x i8] c" | 28 / Feb / 2012 |\0A\00"
@.str.6 = [80 x i8] c" | Version 0.1.0 Alpha 1 |\0A\00"
@.str.7 = [80 x i8] c" | --------------------- |\0A\00"
@.str.8 = [80 x i8] c" | 1) Initial development of program modules. |\0A\00"
@.str.9 = [80 x i8] c" | 2) Initial creation of routines for reading job control and data |\0A\00"
@.str.10 = [80 x i8] c" | files. |\0A\00"
@.str.11 = [80 x i8] c" | 3) Initial implementation of the Simplex algorithm for |\0A\00"
@.str.12 = [80 x i8] c" | minimisation. |\0A\00"
@.str.13 = [80 x i8] c" | Version 0.1.1 Alpha 1 |\0A\00"
@.str.14 = [80 x i8] c" | 1) Completed implementation of simplex minimiser. |\0A\00"
@.str.15 = [80 x i8] c" | Minimisation is available for BONDS, ANGLES and DIHEDRALS. |\0A\00"
@.str.16 = [80 x i8] c" | 2) Completed implementation of sum of squares minimisation for |\0A\00"
@.str.17 = [80 x i8] c" | standard amber force field equation. |\0A\00"
@.str.18 = [80 x i8] c" | 3) Added extra options to job control file: |\0A\00"
@.str.19 = [80 x i8] c" | CONV_LIMIT, BONDFC_dx, BONDEQ_dx, ANGLEFC_dx, ANGLEEQ_dx, |\0A\00"
@.str.20 = [80 x i8] c" | DIHEDRALBH_dx, DIHEDRALN_dx and DIHEDRALG_dx |\0A\00"
@.str.21 = [80 x i8] c" | 4) Added routines to calculate the R squared value of the fit. |\0A\00"
@.str.22 = [80 x i8] c" | Version 0.1.2 Beta 1 |\0A\00"
@.str.23 = [80 x i8] c" | -------------------- |\0A\00"
@.str.24 = [80 x i8] c" | 1) Created 3 test cases to test bond, angle and dihedral fits. |\0A\00"
@.str.25 = [80 x i8] c" | Version 0.2.0 Alpha 1 |\0A\00"
@.str.26 = [80 x i8] c" | 1) Updated entire minimisation system to handle 3 different options|\0A\00"
@.str.27 = [80 x i8] c" | for K - K can now be set to a float value in the job control |\0A\00"
@.str.28 = [80 x i8] c" | file which means K will be kept constant throughout. It can be |\0A\00"
@.str.29 = [80 x i8] c" | set to READ in which case K is expected after the QM energy. |\0A\00"
@.str.30 = [80 x i8] c" | In this situation K can be different for each structure but will|\0A\00"
@.str.31 = [80 x i8] c" | not be changed during the fitting procedure. Finally K can also |\0A\00"
@.str.32 = [80 x i8] c" | be set to FIT in which case a starting guess should be given as |\0A\00"
@.str.33 = [80 x i8] c" | the first float in the start point file. K will then be adjusted|\0A\00"
@.str.34 = [80 x i8] c" | during the fitting. |\0A\00"
@.str.35 = [80 x i8] c" | Version 0.2.1 Alpha 1 |\0A\00"
@.str.36 = [80 x i8] c" | 1) Modified convergence checking to now test how many cycles it has|\0A\00"
@.str.37 = [80 x i8] c" | been since the minimum value found changed. If this is more than|\0A\00"
@.str.38 = [80 x i8] c" | 100 outer cycles (restarts) convergence is assumed. |\0A\00"
@.str.39 = [80 x i8] c" | 2) Minor changes to dx variable defaults |\0A\00"
@.str.40 = [80 x i8] c" | Version 0.2.2 Alpha 1 |\0A\00"
@.str.41 = [80 x i8] c" | 1) Formalised the testing procedure and introduced several new test|\0A\00"
@.str.42 = [80 x i8] c" | cases that fully test bond, angle and dihedral fitting. |\0A\00"
@.str.43 = [80 x i8] c" | 2) Created utility program called proc_g98_output that will take a |\0A\00"
@.str.44 = [80 x i8] c" | series of gaussian files and extract the specified energy, bond |\0A\00"
@.str.45 = [80 x i8] c" | lenghts, angles sizes and dihedral values etc. This program will|\0A\00"
@.str.46 = [80 x i8] c" | then print to standard out the data required for the -q QM_data |\0A\00"
@.str.47 = [80 x i8] c" | file used by the parameter fitter. |\0A\00"
@.str.48 = [80 x i8] c" | Version 0.2.2 Alpha 2 |\0A\00"
@.str.49 = [80 x i8] c" | 1) Fixed bug in angle fitting that was leading to the angle force |\0A\00"
@.str.50 = [80 x i8] c" | constant being treated as being in KCal/(mol deg)^2 instead of |\0A\00"
@.str.51 = [80 x i8] c" | KCal/(mol rad)^2. |\0A\00"
@.str.52 = [80 x i8] c" | Version 0.2.2 Alpha 3 |\0A\00"
@.str.53 = [80 x i8] c" | 1) Modifications to proc_g98_output to improve numerical stability |\0A\00"
@.str.54 = [80 x i8] c" | in dihedral calculations. Minor tweaks to try and avoid |\0A\00"
@.str.55 = [80 x i8] c" | situations that result in divide by zero errors. |\0A\00"
@.str.56 = [80 x i8] c" | Version 0.2.2 Alpha 4 |\0A\00"
@.str.57 = [80 x i8] c" | 1) Fixed bug in mishandling of dihedralBH_dx, dihedralN_dx and |\0A\00"
@.str.58 = [80 x i8] c" | dihedralG_dx parameters by simplex routine. |\0A\00"
@.str.59 = [80 x i8] c" | 2) Fixed minor bugs concerning the use of K=FIT in simplex routine.|\0A\00"
@.str.60 = [80 x i8] c" | Version 2.0.0 Alpha 1 |\0A\00"
@.str.61 = [80 x i8] c" | 1) Work commenced on a completely new version of the code that |\0A\00"
@.str.62 = [80 x i8] c" | will be much more closely coupled to amber. Reading prmtop and |\0A\00"
@.str.63 = [80 x i8] c" | mdcrd files. In this way the concept of an atom type should |\0A\00"
@.str.64 = [80 x i8] c" | be much better preserved. |\0A\00"
@.str.65 = [80 x i8] c" | Version 2.0.1 Beta 1 |\0A\00"
@.str.66 = [80 x i8] c" | 1) Commenced testing of parameter fitting with the simplex routine |\0A\00"
@.str.67 = [80 x i8] c" | and the amber standard force field. Started creating a test |\0A\00"
@.str.68 = [80 x i8] c" | suite of example runs for checking that the program is behaving |\0A\00"
@.str.69 = [80 x i8] c" | as expected. |\0A\00"
@.str.70 = [80 x i8] c" | 2) Added routine to print the amber energy generated from the final|\0A\00"
@.str.71 = [80 x i8] c" | parameters. |\0A\00"
@.str.72 = [80 x i8] c" | 3) Changed the default parameters fitting to include: For Bonds Kr |\0A\00"
@.str.73 = [80 x i8] c" | and Req are fit. For Angles Kt and THeq are fit. For Dihedrals |\0A\00"
@.str.74 = [80 x i8] c" | only Kp is fit by default. |\0A\00"
@.str.75 = [80 x i8] c" | Version 2.0.2 Beta 1 |\0A\00"
@.str.76 = [80 x i8] c" | 1) Completed the first set of test routines and confirmed that |\0A\00"
@.str.77 = [80 x i8] c" | basic fitting of bond, angle and dihedral fitting works. |\0A\00"
@.str.78 = [80 x i8] c" | 2) Introduced a system whereby the use can manually specify what |\0A\00"
@.str.79 = [80 x i8] c" | what parameters they want fitted and which they want to keep |\0A\00"
@.str.80 = [80 x i8] c" | constant. |\0A\00"
@.str.81 = [80 x i8] c" | Version 2.0.3 Alpha 1 |\0A\00"
@.str.82 = [80 x i8] c" | 1) Started development of MPI version of code. Currently only |\0A\00"
@.str.83 = [80 x i8] c" | the evaluation of the eval_sum_squares_amber_std routine is |\0A\00"
@.str.84 = [80 x i8] c" | parallelised. |\0A\00"
@.str.85 = [80 x i8] c" | 2) Minor code clean up and portability improvement. |\0A\00"
@.str.86 = [80 x i8] c" | Version 2.0.3 Alpha 2 |\0A\00"
@.str.87 = [80 x i8] c" | 1) Minor bug fixes and continued testing of parallel code. |\0A\00"
@.str.88 = [80 x i8] c" | Version 2.0.3 |\0A\00"
@.str.89 = [80 x i8] c" | ------------- |\0A\00"
@.str.90 = [80 x i8] c" | 1) MPI Code now passes all tests and appears to work well. |\0A\00"
@.str.91 = [80 x i8] c" | Version 2.0.4 |\0A\00"
@.str.92 = [80 x i8] c" | 1) Fixed overflow bug in create input. Program will now no longer |\0A\00"
@.str.93 = [80 x i8] c" | spuriously quit with an error claiming the filename to be |\0A\00"
@.str.94 = [80 x i8] c" | written would exceed 1023 characters. |\0A\00"
@.str.95 = [80 x i8] c" | 2) Fixed incorrect error message in read_qm_energy. |\0A\00"
@.str.96 = [80 x i8] c" | 3) Changed the calc_r_squared routine to now use the Pearson |\0A\00"
@.str.97 = [80 x i8] c" | correlation formula to find R and then square it. |\0A\00"
@.str.98 = [80 x i8] c" | 4) Fixed minor bug in the calculation of the average function value|\0A\00"
@.str.99 = [80 x i8] c" | in the simplex routine. |\0A\00"
@.str.100 = [80 x i8] c" | 5) Fixed bug involving the testing of simplex convergence. In some |\0A\00"
@.str.101 = [80 x i8] c" | cases func_hi could actually contain parameters lower than |\0A\00"
@.str.102 = [80 x i8] c" | func_low. This has been fixed by adding a sort routine prior to |\0A\00"
@.str.103 = [80 x i8] c" | checking for convergence. |\0A\00"
@.str.104 = [80 x i8] c" | Version 2.0.5 |\0A\00"
@.str.105 = [80 x i8] c" | 1) Migrated code to Amber CVS tree. |\0A\00"
@.str.106 = [80 x i8] c" | 2) Modified output slightly to make it compatible with amber's |\0A\00"
@.str.107 = [80 x i8] c" | dacdif. |\0A\00"
@.str.108 = [80 x i8] c" | 3) Added 1 to the printing of the number of simplex outer cycles |\0A\00"
@.str.109 = [80 x i8] c" | since the program counts from zero internally but it makes more |\0A\00"
@.str.110 = [80 x i8] c" | sense to count from 1 when printing info to the output file. |\0A\00"
@.str.111 = [80 x i8] c" | Version 2.0.6 |\0A\00"
@.str.112 = [80 x i8] c" | 1) Reduced the precision to which some numbers are printed in the |\0A\00"
@.str.113 = [80 x i8] c" | output file to make automated testing on different platforms |\0A\00"
@.str.114 = [80 x i8] c" | easier. |\0A\00"
@.str.115 = [80 x i8] c" | Version 2.1.0 |\0A\00"
@.str.116 = [80 x i8] c" | 1) Added the option to load or save the dimensions to be fit to a |\0A\00"
@.str.117 = [80 x i8] c" | file so that they do not have to be typed in for each run. |\0A\00"
@.str.118 = [80 x i8] c" | 2) Added the genetic algorithm fitting function as an alternative |\0A\00"
@.str.119 = [80 x i8] c" | to simplex for fitting. |\0A\00"
@.str.120 = [80 x i8] c" | 3) Set the random number generator to seed on each run. |\0A\00"
@.str.121 = [80 x i8] c" | Version 3.0.0 |\0A\00"
@.str.122 = [80 x i8] c" | 1) Added bounds checking on input structures that can warn when |\0A\00"
@.str.123 = [80 x i8] c" | input structures do not properly span the parameters to be |\0A\00"
@.str.124 = [80 x i8] c" | optimised. |\0A\00"
@.str.125 = [80 x i8] c" | 2) Numerous improvements to the genetic algorithm |\0A\00"
@.str.126 = [80 x i8] c" | 3) Implemented parallel version for genetic algorithm and fixed |\0A\00"
@.str.127 = [80 x i8] c" | problems with the simplex one. |\0A\00"
@.str.128 = [80 x i8] c" | 4) Rewrote test cases |\0A\00"
@.str.129 = [80 x i8] c" ----------------------------------------------------------------------\0A\00"
@.str.130 = [3 x i8] c"\0A\0A\00"
define void @print_program_history() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.6, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.8, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.9, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.10, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.11, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.12, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.13, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.14, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.15, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.16, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.17, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.18, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.19, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.20, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.21, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.22, i64 0, i64 0))
%28 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.23, i64 0, i64 0))
%29 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.24, i64 0, i64 0))
%30 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%31 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.25, i64 0, i64 0))
%32 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%33 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.26, i64 0, i64 0))
%34 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.27, i64 0, i64 0))
%35 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.28, i64 0, i64 0))
%36 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.29, i64 0, i64 0))
%37 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.30, i64 0, i64 0))
%38 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.31, i64 0, i64 0))
%39 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.32, i64 0, i64 0))
%40 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.33, i64 0, i64 0))
%41 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.34, i64 0, i64 0))
%42 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%43 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.35, i64 0, i64 0))
%44 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%45 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.36, i64 0, i64 0))
%46 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.37, i64 0, i64 0))
%47 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.38, i64 0, i64 0))
%48 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.39, i64 0, i64 0))
%49 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%50 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.40, i64 0, i64 0))
%51 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%52 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.41, i64 0, i64 0))
%53 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.42, i64 0, i64 0))
%54 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.43, i64 0, i64 0))
%55 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.44, i64 0, i64 0))
%56 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.45, i64 0, i64 0))
%57 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.46, i64 0, i64 0))
%58 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.47, i64 0, i64 0))
%59 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%60 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.48, i64 0, i64 0))
%61 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%62 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.49, i64 0, i64 0))
%63 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.50, i64 0, i64 0))
%64 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.51, i64 0, i64 0))
%65 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%66 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.52, i64 0, i64 0))
%67 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%68 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.53, i64 0, i64 0))
%69 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.54, i64 0, i64 0))
%70 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.55, i64 0, i64 0))
%71 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%72 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.56, i64 0, i64 0))
%73 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%74 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.57, i64 0, i64 0))
%75 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.58, i64 0, i64 0))
%76 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.59, i64 0, i64 0))
%77 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%78 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.60, i64 0, i64 0))
%79 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%80 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.61, i64 0, i64 0))
%81 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.62, i64 0, i64 0))
%82 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.63, i64 0, i64 0))
%83 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.64, i64 0, i64 0))
%84 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%85 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.65, i64 0, i64 0))
%86 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.23, i64 0, i64 0))
%87 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.66, i64 0, i64 0))
%88 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.67, i64 0, i64 0))
%89 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.68, i64 0, i64 0))
%90 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.69, i64 0, i64 0))
%91 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.70, i64 0, i64 0))
%92 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.71, i64 0, i64 0))
%93 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.72, i64 0, i64 0))
%94 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.73, i64 0, i64 0))
%95 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.74, i64 0, i64 0))
%96 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%97 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.75, i64 0, i64 0))
%98 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.23, i64 0, i64 0))
%99 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.76, i64 0, i64 0))
%100 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.77, i64 0, i64 0))
%101 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.78, i64 0, i64 0))
%102 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.79, i64 0, i64 0))
%103 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.80, i64 0, i64 0))
%104 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%105 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.81, i64 0, i64 0))
%106 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%107 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.82, i64 0, i64 0))
%108 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.83, i64 0, i64 0))
%109 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.84, i64 0, i64 0))
%110 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.85, i64 0, i64 0))
%111 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%112 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.86, i64 0, i64 0))
%113 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.7, i64 0, i64 0))
%114 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.87, i64 0, i64 0))
%115 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%116 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.88, i64 0, i64 0))
%117 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%118 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.90, i64 0, i64 0))
%119 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%120 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.91, i64 0, i64 0))
%121 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%122 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.92, i64 0, i64 0))
%123 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.93, i64 0, i64 0))
%124 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.94, i64 0, i64 0))
%125 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.95, i64 0, i64 0))
%126 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.96, i64 0, i64 0))
%127 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.97, i64 0, i64 0))
%128 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.98, i64 0, i64 0))
%129 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.99, i64 0, i64 0))
%130 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.100, i64 0, i64 0))
%131 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.101, i64 0, i64 0))
%132 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.102, i64 0, i64 0))
%133 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.103, i64 0, i64 0))
%134 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%135 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.104, i64 0, i64 0))
%136 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%137 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.105, i64 0, i64 0))
%138 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.106, i64 0, i64 0))
%139 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.107, i64 0, i64 0))
%140 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.108, i64 0, i64 0))
%141 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.109, i64 0, i64 0))
%142 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.110, i64 0, i64 0))
%143 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%144 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.111, i64 0, i64 0))
%145 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%146 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.112, i64 0, i64 0))
%147 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.113, i64 0, i64 0))
%148 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.114, i64 0, i64 0))
%149 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%150 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.115, i64 0, i64 0))
%151 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%152 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.116, i64 0, i64 0))
%153 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.117, i64 0, i64 0))
%154 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.118, i64 0, i64 0))
%155 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.119, i64 0, i64 0))
%156 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.120, i64 0, i64 0))
%157 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%158 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.121, i64 0, i64 0))
%159 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.89, i64 0, i64 0))
%160 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.122, i64 0, i64 0))
%161 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.123, i64 0, i64 0))
%162 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.124, i64 0, i64 0))
%163 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.125, i64 0, i64 0))
%164 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.126, i64 0, i64 0))
%165 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.127, i64 0, i64 0))
%166 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.128, i64 0, i64 0))
%167 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.129, i64 0, i64 0))
%168 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.130, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [79 x i8] c" -------------------------- PROGRAM HISTORY ---------------------------\00"
@str.131 = [79 x i8] c" | date order |\00"
@str.133 = [79 x i8] c" | CURRENT VERSION = v3.0.0 |\00"
@str.134 = [79 x i8] c" | 28 / Feb / 2012 |\00"
@str.136 = [79 x i8] c" | Version 0.1.0 Alpha 1 |\00"
@str.138 = [79 x i8] c" | 1) Initial development of program modules. |\00"
@str.139 = [79 x i8] c" | 2) Initial creation of routines for reading job control and data |\00"
@str.140 = [79 x i8] c" | files. |\00"
@str.141 = [79 x i8] c" | 3) Initial implementation of the Simplex algorithm for |\00"
@str.142 = [79 x i8] c" | minimisation. |\00"
@str.144 = [79 x i8] c" | Version 0.1.1 Alpha 1 |\00"
@str.146 = [79 x i8] c" | 1) Completed implementation of simplex minimiser. |\00"
@str.147 = [79 x i8] c" | Minimisation is available for BONDS, ANGLES and DIHEDRALS. |\00"
@str.148 = [79 x i8] c" | 2) Completed implementation of sum of squares minimisation for |\00"
@str.149 = [79 x i8] c" | standard amber force field equation. |\00"
@str.150 = [79 x i8] c" | 3) Added extra options to job control file: |\00"
@str.151 = [79 x i8] c" | CONV_LIMIT, BONDFC_dx, BONDEQ_dx, ANGLEFC_dx, ANGLEEQ_dx, |\00"
@str.152 = [79 x i8] c" | DIHEDRALBH_dx, DIHEDRALN_dx and DIHEDRALG_dx |\00"
@str.153 = [79 x i8] c" | 4) Added routines to calculate the R squared value of the fit. |\00"
@str.155 = [79 x i8] c" | Version 0.1.2 Beta 1 |\00"
@str.157 = [79 x i8] c" | 1) Created 3 test cases to test bond, angle and dihedral fits. |\00"
@str.159 = [79 x i8] c" | Version 0.2.0 Alpha 1 |\00"
@str.161 = [79 x i8] c" | 1) Updated entire minimisation system to handle 3 different options|\00"
@str.162 = [79 x i8] c" | for K - K can now be set to a float value in the job control |\00"
@str.163 = [79 x i8] c" | file which means K will be kept constant throughout. It can be |\00"
@str.164 = [79 x i8] c" | set to READ in which case K is expected after the QM energy. |\00"
@str.165 = [79 x i8] c" | In this situation K can be different for each structure but will|\00"
@str.166 = [79 x i8] c" | not be changed during the fitting procedure. Finally K can also |\00"
@str.167 = [79 x i8] c" | be set to FIT in which case a starting guess should be given as |\00"
@str.168 = [79 x i8] c" | the first float in the start point file. K will then be adjusted|\00"
@str.169 = [79 x i8] c" | during the fitting. |\00"
@str.171 = [79 x i8] c" | Version 0.2.1 Alpha 1 |\00"
@str.173 = [79 x i8] c" | 1) Modified convergence checking to now test how many cycles it has|\00"
@str.174 = [79 x i8] c" | been since the minimum value found changed. If this is more than|\00"
@str.175 = [79 x i8] c" | 100 outer cycles (restarts) convergence is assumed. |\00"
@str.176 = [79 x i8] c" | 2) Minor changes to dx variable defaults |\00"
@str.178 = [79 x i8] c" | Version 0.2.2 Alpha 1 |\00"
@str.180 = [79 x i8] c" | 1) Formalised the testing procedure and introduced several new test|\00"
@str.181 = [79 x i8] c" | cases that fully test bond, angle and dihedral fitting. |\00"
@str.182 = [79 x i8] c" | 2) Created utility program called proc_g98_output that will take a |\00"
@str.183 = [79 x i8] c" | series of gaussian files and extract the specified energy, bond |\00"
@str.184 = [79 x i8] c" | lenghts, angles sizes and dihedral values etc. This program will|\00"
@str.185 = [79 x i8] c" | then print to standard out the data required for the -q QM_data |\00"
@str.186 = [79 x i8] c" | file used by the parameter fitter. |\00"
@str.188 = [79 x i8] c" | Version 0.2.2 Alpha 2 |\00"
@str.190 = [79 x i8] c" | 1) Fixed bug in angle fitting that was leading to the angle force |\00"
@str.191 = [79 x i8] c" | constant being treated as being in KCal/(mol deg)^2 instead of |\00"
@str.192 = [79 x i8] c" | KCal/(mol rad)^2. |\00"
@str.194 = [79 x i8] c" | Version 0.2.2 Alpha 3 |\00"
@str.196 = [79 x i8] c" | 1) Modifications to proc_g98_output to improve numerical stability |\00"
@str.197 = [79 x i8] c" | in dihedral calculations. Minor tweaks to try and avoid |\00"
@str.198 = [79 x i8] c" | situations that result in divide by zero errors. |\00"
@str.200 = [79 x i8] c" | Version 0.2.2 Alpha 4 |\00"
@str.202 = [79 x i8] c" | 1) Fixed bug in mishandling of dihedralBH_dx, dihedralN_dx and |\00"
@str.203 = [79 x i8] c" | dihedralG_dx parameters by simplex routine. |\00"
@str.204 = [79 x i8] c" | 2) Fixed minor bugs concerning the use of K=FIT in simplex routine.|\00"
@str.206 = [79 x i8] c" | Version 2.0.0 Alpha 1 |\00"
@str.208 = [79 x i8] c" | 1) Work commenced on a completely new version of the code that |\00"
@str.209 = [79 x i8] c" | will be much more closely coupled to amber. Reading prmtop and |\00"
@str.210 = [79 x i8] c" | mdcrd files. In this way the concept of an atom type should |\00"
@str.211 = [79 x i8] c" | be much better preserved. |\00"
@str.213 = [79 x i8] c" | Version 2.0.1 Beta 1 |\00"
@str.215 = [79 x i8] c" | 1) Commenced testing of parameter fitting with the simplex routine |\00"
@str.216 = [79 x i8] c" | and the amber standard force field. Started creating a test |\00"
@str.217 = [79 x i8] c" | suite of example runs for checking that the program is behaving |\00"
@str.218 = [79 x i8] c" | as expected. |\00"
@str.219 = [79 x i8] c" | 2) Added routine to print the amber energy generated from the final|\00"
@str.220 = [79 x i8] c" | parameters. |\00"
@str.221 = [79 x i8] c" | 3) Changed the default parameters fitting to include: For Bonds Kr |\00"
@str.222 = [79 x i8] c" | and Req are fit. For Angles Kt and THeq are fit. For Dihedrals |\00"
@str.223 = [79 x i8] c" | only Kp is fit by default. |\00"
@str.225 = [79 x i8] c" | Version 2.0.2 Beta 1 |\00"
@str.226 = [79 x i8] c" | -------------------- |\00"
@str.227 = [79 x i8] c" | 1) Completed the first set of test routines and confirmed that |\00"
@str.228 = [79 x i8] c" | basic fitting of bond, angle and dihedral fitting works. |\00"
@str.229 = [79 x i8] c" | 2) Introduced a system whereby the use can manually specify what |\00"
@str.230 = [79 x i8] c" | what parameters they want fitted and which they want to keep |\00"
@str.231 = [79 x i8] c" | constant. |\00"
@str.233 = [79 x i8] c" | Version 2.0.3 Alpha 1 |\00"
@str.235 = [79 x i8] c" | 1) Started development of MPI version of code. Currently only |\00"
@str.236 = [79 x i8] c" | the evaluation of the eval_sum_squares_amber_std routine is |\00"
@str.237 = [79 x i8] c" | parallelised. |\00"
@str.238 = [79 x i8] c" | 2) Minor code clean up and portability improvement. |\00"
@str.240 = [79 x i8] c" | Version 2.0.3 Alpha 2 |\00"
@str.241 = [79 x i8] c" | --------------------- |\00"
@str.242 = [79 x i8] c" | 1) Minor bug fixes and continued testing of parallel code. |\00"
@str.244 = [79 x i8] c" | Version 2.0.3 |\00"
@str.246 = [79 x i8] c" | 1) MPI Code now passes all tests and appears to work well. |\00"
@str.248 = [79 x i8] c" | Version 2.0.4 |\00"
@str.250 = [79 x i8] c" | 1) Fixed overflow bug in create input. Program will now no longer |\00"
@str.251 = [79 x i8] c" | spuriously quit with an error claiming the filename to be |\00"
@str.252 = [79 x i8] c" | written would exceed 1023 characters. |\00"
@str.253 = [79 x i8] c" | 2) Fixed incorrect error message in read_qm_energy. |\00"
@str.254 = [79 x i8] c" | 3) Changed the calc_r_squared routine to now use the Pearson |\00"
@str.255 = [79 x i8] c" | correlation formula to find R and then square it. |\00"
@str.256 = [79 x i8] c" | 4) Fixed minor bug in the calculation of the average function value|\00"
@str.257 = [79 x i8] c" | in the simplex routine. |\00"
@str.258 = [79 x i8] c" | 5) Fixed bug involving the testing of simplex convergence. In some |\00"
@str.259 = [79 x i8] c" | cases func_hi could actually contain parameters lower than |\00"
@str.260 = [79 x i8] c" | func_low. This has been fixed by adding a sort routine prior to |\00"
@str.261 = [79 x i8] c" | checking for convergence. |\00"
@str.263 = [79 x i8] c" | Version 2.0.5 |\00"
@str.265 = [79 x i8] c" | 1) Migrated code to Amber CVS tree. |\00"
@str.266 = [79 x i8] c" | 2) Modified output slightly to make it compatible with amber's |\00"
@str.267 = [79 x i8] c" | dacdif. |\00"
@str.268 = [79 x i8] c" | 3) Added 1 to the printing of the number of simplex outer cycles |\00"
@str.269 = [79 x i8] c" | since the program counts from zero internally but it makes more |\00"
@str.270 = [79 x i8] c" | sense to count from 1 when printing info to the output file. |\00"
@str.272 = [79 x i8] c" | Version 2.0.6 |\00"
@str.274 = [79 x i8] c" | 1) Reduced the precision to which some numbers are printed in the |\00"
@str.275 = [79 x i8] c" | output file to make automated testing on different platforms |\00"
@str.276 = [79 x i8] c" | easier. |\00"
@str.278 = [79 x i8] c" | Version 2.1.0 |\00"
@str.280 = [79 x i8] c" | 1) Added the option to load or save the dimensions to be fit to a |\00"
@str.281 = [79 x i8] c" | file so that they do not have to be typed in for each run. |\00"
@str.282 = [79 x i8] c" | 2) Added the genetic algorithm fitting function as an alternative |\00"
@str.283 = [79 x i8] c" | to simplex for fitting. |\00"
@str.284 = [79 x i8] c" | 3) Set the random number generator to seed on each run. |\00"
@str.285 = [79 x i8] c" | |\00"
@str.286 = [79 x i8] c" | Version 3.0.0 |\00"
@str.287 = [79 x i8] c" | ------------- |\00"
@str.288 = [79 x i8] c" | 1) Added bounds checking on input structures that can warn when |\00"
@str.289 = [79 x i8] c" | input structures do not properly span the parameters to be |\00"
@str.290 = [79 x i8] c" | optimised. |\00"
@str.291 = [79 x i8] c" | 2) Numerous improvements to the genetic algorithm |\00"
@str.292 = [79 x i8] c" | 3) Implemented parallel version for genetic algorithm and fixed |\00"
@str.293 = [79 x i8] c" | problems with the simplex one. |\00"
@str.294 = [79 x i8] c" | 4) Rewrote test cases |\00"
@str.295 = [79 x i8] c" ----------------------------------------------------------------------\00"
@str.296 = [2 x i8] c"\0A\00"
define void @print_program_history() {
%1 = tail call i32 @putchar(i32 10)
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.131, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.133, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.134, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.136, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.138, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.139, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.140, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.141, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.142, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.144, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.146, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.147, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.148, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.149, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.150, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.151, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.152, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.153, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.155, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.226, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.157, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.159, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.161, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.162, i64 0, i64 0))
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.163, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.164, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.165, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.166, i64 0, i64 0))
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.167, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.168, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.169, i64 0, i64 0))
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.171, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.173, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.174, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.175, i64 0, i64 0))
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.176, i64 0, i64 0))
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.178, i64 0, i64 0))
%51 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%52 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.180, i64 0, i64 0))
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.181, i64 0, i64 0))
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.182, i64 0, i64 0))
%55 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.183, i64 0, i64 0))
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.184, i64 0, i64 0))
%57 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.185, i64 0, i64 0))
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.186, i64 0, i64 0))
%59 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%60 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.188, i64 0, i64 0))
%61 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%62 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.190, i64 0, i64 0))
%63 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.191, i64 0, i64 0))
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.192, i64 0, i64 0))
%65 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.194, i64 0, i64 0))
%67 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.196, i64 0, i64 0))
%69 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.197, i64 0, i64 0))
%70 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.198, i64 0, i64 0))
%71 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%72 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.200, i64 0, i64 0))
%73 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%74 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.202, i64 0, i64 0))
%75 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.203, i64 0, i64 0))
%76 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.204, i64 0, i64 0))
%77 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%78 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.206, i64 0, i64 0))
%79 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%80 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.208, i64 0, i64 0))
%81 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.209, i64 0, i64 0))
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.210, i64 0, i64 0))
%83 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.211, i64 0, i64 0))
%84 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%85 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.213, i64 0, i64 0))
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.226, i64 0, i64 0))
%87 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.215, i64 0, i64 0))
%88 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.216, i64 0, i64 0))
%89 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.217, i64 0, i64 0))
%90 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.218, i64 0, i64 0))
%91 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.219, i64 0, i64 0))
%92 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.220, i64 0, i64 0))
%93 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.221, i64 0, i64 0))
%94 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.222, i64 0, i64 0))
%95 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.223, i64 0, i64 0))
%96 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%97 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.225, i64 0, i64 0))
%98 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.226, i64 0, i64 0))
%99 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.227, i64 0, i64 0))
%100 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.228, i64 0, i64 0))
%101 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.229, i64 0, i64 0))
%102 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.230, i64 0, i64 0))
%103 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.231, i64 0, i64 0))
%104 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%105 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.233, i64 0, i64 0))
%106 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%107 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.235, i64 0, i64 0))
%108 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.236, i64 0, i64 0))
%109 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.237, i64 0, i64 0))
%110 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.238, i64 0, i64 0))
%111 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%112 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.240, i64 0, i64 0))
%113 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.241, i64 0, i64 0))
%114 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.242, i64 0, i64 0))
%115 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%116 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.244, i64 0, i64 0))
%117 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%118 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.246, i64 0, i64 0))
%119 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%120 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.248, i64 0, i64 0))
%121 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%122 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.250, i64 0, i64 0))
%123 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.251, i64 0, i64 0))
%124 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.252, i64 0, i64 0))
%125 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.253, i64 0, i64 0))
%126 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.254, i64 0, i64 0))
%127 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.255, i64 0, i64 0))
%128 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.256, i64 0, i64 0))
%129 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.257, i64 0, i64 0))
%130 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.258, i64 0, i64 0))
%131 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.259, i64 0, i64 0))
%132 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.260, i64 0, i64 0))
%133 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.261, i64 0, i64 0))
%134 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%135 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.263, i64 0, i64 0))
%136 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%137 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.265, i64 0, i64 0))
%138 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.266, i64 0, i64 0))
%139 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.267, i64 0, i64 0))
%140 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.268, i64 0, i64 0))
%141 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.269, i64 0, i64 0))
%142 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.270, i64 0, i64 0))
%143 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%144 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.272, i64 0, i64 0))
%145 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%146 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.274, i64 0, i64 0))
%147 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.275, i64 0, i64 0))
%148 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.276, i64 0, i64 0))
%149 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%150 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.278, i64 0, i64 0))
%151 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%152 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.280, i64 0, i64 0))
%153 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.281, i64 0, i64 0))
%154 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.282, i64 0, i64 0))
%155 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.283, i64 0, i64 0))
%156 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.284, i64 0, i64 0))
%157 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.285, i64 0, i64 0))
%158 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.286, i64 0, i64 0))
%159 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.287, i64 0, i64 0))
%160 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.288, i64 0, i64 0))
%161 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.289, i64 0, i64 0))
%162 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.290, i64 0, i64 0))
%163 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.291, i64 0, i64 0))
%164 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.292, i64 0, i64 0))
%165 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.293, i64 0, i64 0))
%166 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.294, i64 0, i64 0))
%167 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.295, i64 0, i64 0))
%168 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.296, i64 0, i64 0))
ret void
}