//
//  main.cpp
//  DS
//
//  Created by Shubham Gupta on 31/03/17.
//  Copyright © 2017 Shubham Gupta. All rights reserved.
//  Modified by Utkarsh Aashu Mishra on 5/02/2014
//  Copyright © 2018 Utkarsh Aashu Mishra. All rights reserved.

#include <stdio.h>
#include <iostream>
#include <cmath>
#include <string.h>
#include <algorithm>
#include <fstream>
#include<sstream>
#include <iomanip>
#include <ctime>

using namespace std;

#define PI 3.1415926535897932
#define DPI 6.283185307179586
#define SPI 1.772453850905516
#define BOLTZ 1.380658e-23
#define AVOG 6.022169e26


void ALLOCATE_GAS();
void HARD_SPHERE();
void ARGON();
void IDEAL_NITROGEN();
void REAL_OXYGEN();
void IDEAL_AIR();
void REAL_AIR();
void HELIUM_ARGON_XENON();
void OXYGEN_HYDROGEN();
void INITIALISE_SAMPLES();
void DERIVED_GAS_DATA();
void SET_INITIAL_STATE_1D();
void MOLECULES_ENTER_1D();
void FIND_CELL_1D(double &,int &,int &);
void FIND_CELL_MB_1D(double &,int &,int &,double &);
void RVELC(double &,double &,double &);
void SROT(int &,double &,double &);
void SVIB(int &,double &,int &, int&);
void SELE(int &,double &,double &);
void CQAX(double&,double &,double&);
void LBS(double,double,double&);
void REFLECT_1D(int&,int,double&);
void RBC(double &, double &, double & , double &, double &,double &);
void AIFX(double & ,double &, double & , double &, double &, double&, double &, double&);
void REMOVE_MOL(int &);
void INDEX_MOLS();
void SAMPLE_FLOW();
void ADAPT_CELLS_1D();
void EXTEND_MNM(double);
void DISSOCIATION();
void ENERGY(int ,double &);
void COLLISIONS();
void SETXT();
void READ_RESTART();
void WRITE_RESTART();
void READ_DATA();
void OUTPUT_RESULTS();
void MOLECULES_MOVE_1D();


class Managed 
{
public:
  void *operator new(size_t len) {
    void *ptr;
    cudaMallocManaged(&ptr, len);
    cudaDeviceSynchronize();
    return ptr;
  }

  void operator delete(void *ptr) {
    cudaDeviceSynchronize();
    cudaFree(ptr);
  }
};

class CALC : public Managed
{
public:
    //declares the variables associated with the calculation
    int  NVER,MVER,IMEG,NREL,MOLSC,ISF,ISAD,ISECS,IGS,IREM,NNC,IMTS,ERROR,NLINE,ICLASS,NCLASS,NMCC,NMI,NMP,ICN;
    double FTIME,TLIM,FNUM,DTM,TREF,TSAMP,TOUT,SAMPRAT,OUTRAT,RANF,TOTCOLI,TOTMOVI,TENERGY,DTSAMP,DTOUT,TPOUT,FRACSAM,TOTMOV,TOTCOL,ENTMASS,ENTREM,CPDTM,TPDTM,TNORM,FNUMF;
    double *VNMAX,*TDISS,*TRECOMB,*ALOSS,*EME,*AJM;
    double **TCOL;
    void d_allocate(int x, double*&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double**&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(double));
    }
    //NVER.MVER.NREL the version number
    //IMEG the initial number of megabytes to be used by the program
    //MOLSC the target number of molecules per sampling cell
    //FTIME the flow time
    //TLIM the time at which the calculation stops
    //FNUM the number of real molecules represented by each simulated molecule
    //CPDTM the maximum number of collisions per time step (standard 0.2)
    //TPDTM the maximum number of sampling cell transit times of the flow per time step
    //TOTMOV total molecule moves
    //TOTCOL total collisions
    //TDISS(L) dissociations of species L since sample reset
    //TRECOMB(L) recombinations of species L since sample reset
    //ENTMASS the current entry mass of which a fraction FREM is to be removed
    //ENTREM the remainder (always negative) after molecule removal
    //VNMAX(L) the maximum normal velocity component of species L
    //TCOL species dependent collision counter
    //ISF 0,1 for steady, unsteady flow sampling
    //ISAD 0,1 to not automatically adapt cells each output interval in unsteady sampling, 1 to automatically adapt
    //ISECS 0,1 for no secondary stream,a secondary stream that applies for positive values of x
    //IREM data item to set type of molecule removal
    //NNC 0 for normal collisions, 1 for nearest neighbor collisions
    //IMTS 0 for uniform move time steps, 1 for time steps that vary over the cells, 2 for fixed time steps
    //IGS 0 for initial gas, 1 for stream(s) or reference gas
    //ICLASS class of flow
    //NCLASS the dimension of PX for the class of flow
    //NMCC desired number of molecules in a collision cell
    //NMI the initial number of molecules
    //TNORM normalizing time (may vary e.g. mean collision time , or a transit time)
    //ALOSS(L) number of molecules of speciel L lost in the move rourine
    //EME(L) number of species L that enter the front boundary
    //AJM(L) the adjustment number to allow for negative downstream entry numbers
    //NMP the number of molecules at the start of the move routine
    //ICN 0 if molecules with ITYPE(2)=4 are not kept constant, 1 to keep molecule number constant
    //FNUMF adjustment factor that is applied to automatically generated value
};

class MOLECS : public Managed
{
    //declares the variables associated with the molecules
public:
    int *IPCELL,*IPSP,*ICREF,*IPCP;
    int **IPVIB;
    
    void i_allocate(int x, int *&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
    }
    void i_allocate(int x, int y, int **&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(int));
    }
    
    double **PX,**PV;
    double *PTIM,*PROT,*PELE;
    
    void d_allocate(int x, double *&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        
    }
    void d_allocate(int x, int y, double **&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i){
            try{
                cudaMallocManaged(&arr[i], y*sizeof(double));
            }
            catch (std::bad_alloc& ba){
                std::cerr << "bad_alloc caught: " << ba.what() << '\n';
            }
        }
    }
    int NM,MNM;
    
    //PX(1,2 or 3,N) x,y,z position coordinates of molecule N
    //PTIM(N) molecule time
    //IPSP(N) the molecular species
    //IPCELL(N) the collision cell number
    //ICREF the cross-reference array (molecule numbers in order of collision cells)
    //IPCP(N) the code number of the last collision partner of molecule
    //PV(1-3,N) u,v,w velocity components
    //PROT(N) rotational energy
    //IPVIB(K,N) level of vibrational mode K of molecule N
    //PELE(N) electronic energy
    //NM number of molecules
    //MNM the maximum number of molecules
    
};

class GAS : public Managed
{
    
    //declares the variables associated with the molecular species and the stream definition
public:
    double RMAS,CXSS,RGFS,VMPM,FDEN,FPR,FMA,FPM,CTM;
    double FND[3],FTMP[3],FVTMP[3],VFX[3],VFY[3],TSURF[3],FSPEC[3],VSURF[3];
    double *ERS,*CR,*TNEX,*PSF,*SLER,*FP;
    double **FSP,**SP,**SPR,**SPV,**VMP;
    double ***SPM,***SPVM,***ENTR,***QELC,***SPRT;
    double ****SPEX,****SPRC,****SPRP;
    double *****SPREX;
    void d_allocate(int x, double *&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double **&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(double));
    }
    void d_allocate(int x, int y, int z, double***&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
                cudaMallocManaged(&arr[i][j], z*sizeof(double));
        }
        
    }
    void d_allocate(int x, int y, int z, int w, double ****&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                cudaMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                    cudaMallocManaged(&arr[i][j][k], w*sizeof(double));
            }
        }
        
    }
    void d_allocate(int x, int y, int z, int w, int v, double*****&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                cudaMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                {
                    cudaMallocManaged(&arr[i][j][k], w*sizeof(double));
                    for(int l=0; l<w; ++l)
                        cudaMallocManaged(&arr[i][j][k][l], v*sizeof(double));
                }
            }
        }
    }
    
    int MSP,MMVM,MMRM,MNSR,IGAS,MMEX,MEX,MELE,MVIBL;
    int *ISP,*ISPV,*NELL;
    int **ISPR,**LIS,**LRS,**ISRCD,**ISPRC,**ISPRK,**TREACG,**TREACL,**NSPEX,**NSLEV;
    int ***ISPVM,***NEX;
    int ****ISPEX;
    void i_allocate(int x, int *&arr){
        cudaMallocManaged(&arr, x);
    }
    void i_allocate(int x, int y, int **&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(int));
    }
    void i_allocate(int x, int y, int z, int ***&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(int));
            for (int j = 0; j < y; ++j)
                cudaMallocManaged(&arr[i][j], z*sizeof(int));
        }
        
    }
    void i_allocate(int x, int y, int z, int w, int ****&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(int));
            for (int j = 0; j < y; ++j)
            {
                cudaMallocManaged(&arr[i][j], z*sizeof(int));
                for(int k=0; k<z; ++k)
                    cudaMallocManaged(&arr[i][j][k], w*sizeof(int));
            }
        }
    }
    
    //MSP the number of molecular species
    //MMVM the maximum number of vibrational modes of any species
    //MEX number of exchange or chain reactions
    //MELE the maximum number of electronic states of any molecule
    //MVIBL the maximum number of vibrational levels for detailed balance lists
    //MMEX the maximum number of exchange reactions involving the same precollision pair of molecules
    //MMRM 0 if gass is completely monatomic, 1 if some species have rotation
    //MNSR the number oF surface reactions
    //SP(1,L) the reference diameter of species L
    //SP(2,L) the reference temperature of species L
    //SP(3,L) the viscosity-temperature power law of species L
    //SP(4,L) the reciprocal of the VSS scattering parameter
    //SP(5,L) molecular mass of species L
    //SP(6,L) the heat of formation at 273 K.
    //ISPR(1,L) number of rotational degrees of freedom of species L
    //ISPR(2,L) 0,1 for constant, polynomial rotational relaxation collision number
    //SPR(1,L) constant rotational relaxation collision number of species L
    //          or the constant in a second order polynomial in temperature
    //SPR(2,L) the coefficient of temperature in the polynomial
    //SPR(3,L) the coefficient of temperature squared in the polynomial
    //SPM(1,L,M) the reduced mass for species L,M
    //SPM(2,L,M) the reference collision cross-section for species L,M
    //SPM(3,L,M) the mean value of the viscosity-temperature power law
    //SPM(4,L,M) the reference diameter for L,M collisions
    //SPM(5,L,M) the reference temperature for species L,M
    //SPM(6,L,M) reciprocal of the gamma function of (5/2-w) for species L,M
    //SPM(7,L,M) rotational relaxation collision number for species L,M, or const in polynomial
    //SPM(8,L,M) reciprocal of VSS scattering parameter
    //ISPV(L) the number of vibrational modes
    //SPVM(1,K,L) the characteristic vibrational temperature
    //SPVM(2,K,L) constant Zv, or reference Zv for mode K
    //SPVM(3,K,L) -1. for constant Zv, or reference temperature
    //SPVM(4,K,L) the characteristic dissociation temperature
    //SPVM(5,K,L) the arbitrary rate reduction factor
    //ISPVM(1,K,L) the species code of the first dissociation product
    //ISPVM(2,K,L) the species code of the second dissociation product
    //NELL(L) the number of electronic levels of species L
    //QELC(N,M,L) for up to M levels of form g*exp(-a/T) in the electronic partition function for species L
    //            N=1 for the degeneracy g
    //            N=2 for the coefficient a
    //            N=3 for the ratio of the excitation cross-section to the elastic cross-section
    //ISPRC(L,M) the species of the recombined molecule from species L and M
    //ISPRK(L,M) the applicable vibrational mode of this species
    //SPRC(1,L,M,K) the constant a in the ternary collision volume
    //SPRC(2,L,M,K) the temperature exponent b in the ternary collision volume
    //SPRT(1,L,M) lower temperature value for SPRP
    //SPRT(2,L,M) higher temperature value for SPRP
    //SPRP(1,L,M,K) the cumulative dissociation distribution to level K for products L and M at the lower temperature
    //SPRP(2,L,M,K) ditto at higher temperature, for application to post-recombination molecule//
    //NSPEX(L,M) the number of exchange reactios with L,M as the pre-collision species
    //in the following variables, J is the reaction number (1 to NSPEX(L,M))
    //ISPEX(J,1,L,M) the species that splits in an exchange reaction
    //ISPEX(J,2,L,M) the other pre-reaction species (all ISPEX are set to 0 if no exchange reaction)
    //ISPEX(J,3,L,M) the post-reaction molecule that splits in the opposite reaction
    //ISPEX(J,4,L,M) the other post-reaction species
    //ISPEX(J,5,L,M) the vibrational mode of the molecule that splits
    //ISPEX(J,6,L,M) degeneracy of this reaction
    //ISPEX(J,7,L,M) the vibrational mode of the molecule that splits
    //SPEX(1,J,L,M) the constant a in the reaction probability for the reverse reaction
    //SPEX(2,J,L,M) the temperature exponent b in the reaction probability (reverse reaction only)
    //SPEX(3,J,L,M)  for the heat of reaction
    //SPEX(4,J,L,M)   the lower temperature for SPREX
    //SPEX(5,J,L,M)   the higher temperature for SPREX
    //SPEX(6,J,L,M)   the energy barrier
    //SPREX(1,J,L,M,K) at lower temperature, the Jth reverse exchange reaction of L,M cumulative level K viv. dist of post reac mol
    //SPREX(2,J,L,M,K) ditto at higher temperature
    //TNEX(N) total number of exchange reaction N
    //NEX(N,L,M) the code number of the Nth exchange or chain reaction in L,M collisions
    //RMAS reduced mass for single species case
    //CXSS reference cross-section for single species case
    //RGFS reciprocal of gamma function for single species case
    //for the following, J=1 for the reference gas and/or the minimum x boundary, J=2 for the secondary sream at maximum x boundary
    //FND(J) stream or reference gas number density
    //FTMP(J) stream temperature
    //FVTMP(J) the vibrational and any electronic temperature in the freestream
    //VFX(J)  the x velocity components of the stream
    //VFY(J) the y velocity component in the stream
    //FSP(N,J)) fraction of species N in the stream
    //FMA stream Mach number
    //VMP(N,J) most probable molecular velocity of species N at FTMP(J)
    //VMPM the maximum value of VMP in stream 1
    //ENTR(M,L,K) entry/removal information for species L at K=1 for 1, K=2 for XB(2)
    //    M=1 number per unut time
    //    M=2 remainder
    //    M=3 speed ratio
    //   M=4 first constant
    //    M=5 second constant
    //    M=6 the maxinum normal velocity component in the removal zone (> XREM)
    //LIS(1,N) the species code of the first incident molecule
    //LIS(2,N) the species code of the second incident molecule (0 if none)
    //LRS(1,N) the species code of the first reflected molecule
    //LRS(2,N) the species code of the second reflected molecule (0 if none)
    //LRS(3,N) the species code of the third reflected molecule (0 if none)
    //LRS(4,N) the species code of the fourth reflected molecule (0 if none)
    //LRS(5,N) the species code of the fifth reflected molecule (0 if none)
    //LRS(6,N) the species code of the sixth reflected molecule (0 if none)
    //ERS(N) the energy of the reaction (+ve for recombination, -ve for dissociation)
    //NSRSP(L) number of surface reactions that involve species L as incident molecule
    //ISRCD(N,L) code number of Nth surface reaction with species L as incident molecule
    //CTM mean collision time in stream
    //FPM mean free path in stream
    //FDEN stream 1 density
    //FPR stream 1 pressure
    //FMA stream 1 Mach number
    //RMAS reduced mass for single species case
    //CXSS reference cross-section for single species case
    //RGFS reciprocal of gamma function for single species case
    //CR(L) collision rate of species L
    //FP(L) mean free path of species L
    //TREACG(N,L) the total number of species L gained from reaction type N=1 for dissociation, 2 for recombination, 3 for forward exchange, 4 for reverse exchange
    //TREACL(N,L) the total number of species L lost from reaction type N=1 for dissociation, 2 for recombination, 3 for forward exchange, 4 for reverse exchange
    //NSLEV(2,L)  1 exo, 2 endo: vibrational levels to be made up for species L in detailed balance enforcement after reaction
    //SLER(L) rotational energy to be made up for species L in detailed balance enforcement after exothermic reaction
};
class OUTPUT : public Managed
{
public:
    //declares the variables associated with the sampling and output
    int NSAMP,NMISAMP,NOUT,NDISSOC,NRECOMB,NTSAMP;
    //int NDISSL[201];
    int *NDISSL;
    OUTPUT(){
        cudaMallocManaged(&NDISSL,201*sizeof(int));
    };
    double TISAMP,XVELS,YVELS,AVDTM;
    double *COLLS,*WCOLLS,*CLSEP,*SREAC,*STEMP,*TRANSTEMP,*ROTTEMP,*VIBTEMP,*ELTEMP;
    double **VAR,**VARS,**CSSS,**SUMVIB;
    double ***CS,***VARSP,***VIBFRAC;
    double ****CSS;
    void d_allocate(int x, double *&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double **&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(double));
    }
    void d_allocate(int x, int y, int z, double ***&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
                cudaMallocManaged(&arr[i][j], z*sizeof(double));
        }
    }
    void d_allocate(int x, int y, int z, int w, double ****&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            cudaMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                cudaMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                    cudaMallocManaged(&arr[i][j][k], w*sizeof(double));
            }
        }
    }
    //NSAMP the number of samples
    //TISAMP the time at which the sampling was last reset
    //MNISAMP the number of molecules at the last reset
    //AVDTM the average value of DTM in the cells
    //NOUT the number of output intervals
    //COLLS(N) total number of collisions in sampling cell N
    //WCOLLS(N) total weighted collisins in N
    //CLSEP(N) sum of collision pair separation in cell N
    //CS(0,N,L) sampled number of species L in cell N
    //CS(1,N,L) sampled weighted number of species L in cell N
    //--all the following CS are weighted sums
    //CS(2,N,L), CS(3,N,L), CS(4,N,L) sampled sum of u, v, w
    //CS(5,N,L), CS(6,N,L), CS(7,N,L) sampled sum of u*u, v*v, w*w
    //CS(8,N,L) sampled sum of rotational energy of species L in cell N
    //CS(9,N,L) sampled sum of electronic energy of species L in cell N
    //CS(9+K,N,L) sampled sum of vibrational level of species L in cell N
    //              K is the mode
    //
    //in CSS, M=1 for incident molecules and M=2 for reflected molecules
    //J=1 for surface at x=XB(1), 2 for surface at x=XB(2)
    //
    //CSS(0,J,L,M) number sum of molecules of species L
    //CSS(1,J,L,M) weighted number sum of molecules of species L
    //--all the following CSS are weighted
    //CSS(2,J,L,M) normal momentum sum to surface
    //CSS(3,J,L,M) y momentum sum to surface
    //CSS(4,J,L,M) z momentum sum to surface
    //CSS(5,J,L,M) tranlational energy sum to surface
    //CSS(6,J,L,M) rotational energy sum to surface
    //CSS(7,J,L,M) vibrational energy sum to the surface
    //CSS(8,J,L,M) electronic energy sum to the surface
    //
    //CSSS(1,J) weighted sum (over incident AND reflected molecules) of 1/normal vel. component
    //--all the following CSSS are weighted
    //CSSS(2,J) similar sum of molecular mass / normal vel. component
    //CSSS(3,J) similar sum of molecular mass * parallel vel. component / normal vel. component
    //CSSS(4,J) similar sum of molecular mass * speed squared / normal vel. component
    //CSSS(5,J) similar sum of rotational energy / normal vel. component
    //CSSS(6,J) similar sum of rotational degrees of freedom /normal velocity component
    //
    //SREAC(N) the number of type N surface reactions
    //
    //VAR(M,N) the flowfield properties in cell N
    //M=1 the x coordinate
    //M=2 sample size
    //M=3 number density
    //M=4 density
    //M=5 u velocity component
    //M=6 v velocity component
    //M=7 w velocity component
    //M=8 translational temperature
    //M=9 rotational temperature
    //M=10 vibrational temperature
    //M=11 temperature
    //M=12 Mach number
    //M=13 molecules per cell
    //M=14 mean collision time / rate
    //M=15 mean free path
    //M=16 ratio (mean collisional separation) / (mean free path)
    //M=17 flow speed
    //M=18 scalar pressure nkT
    //M=19 x component of translational temperature TTX
    //M=20 y component of translational temperature TTY
    //M=21 z component of translational temperature TTZ
    //M=22 electronic temperature
    //
    //VARSP(M,N,L) the flowfield properties for species L in cell N
    //M=0 the sample size
    //M=1 the fraction
    //M=2 the temperature component in the x direction
    //M=3 the temperature component in the y direction
    //M=4 the temperature component in the z direction
    //M=5 the translational temperature
    //M=6 the rotational temperature
    //M=7 the vibrational temperature
    //M=8 the temperature
    //M=9 the x component of the diffusion velocity
    //M=10 the y component of the diffusion velocity
    //M=11 the z component of the diffusion velocity
    //M=12 the electronic temperature
    //
    //VARS(N,M) surface property N on interval L of surface M
    //
    //N=0 the unweighted sample (remainder of variables are weighted for cyl. and sph. flows)
    //N=1 the incident sample
    //N=2 the reflected sample
    //N=3 the incident number flux
    //N=4 the reflected number flux
    //N=5 the incident pressure
    //N=6 the reflected pressure
    //N=7 the incident parallel shear tress
    //N=8 the reflected parallel shear stress
    //N=9 the incident normal-to-plane shear stress
    //N=10 the reflected normal shear stress
    //N=11 the incident translational heat flux
    //N=12 the reflected translational heat fluc
    //N=13 the incident rotational heat flux
    //N=14 the reflected rotational heat flux
    //N=15 the incident vibrational heat flux
    //N=16 the reflected vibrational heat flux
    //N=17 the incident heat flux from surface reactions
    //N=18 the reflected heat flux from surface reactions
    //N=19 slip velocity
    //N=20 temperature slip
    //N=21 rotational temperature slip
    //N=22 the net pressure
    //N=23 the net parallel in-plane shear
    //N=24 the net parallel normal-to-plane shear
    //N=25 the net translational energy flux
    //N=26 the net rotational heat flux
    //N=27 the net vibrational heat flux
    //N=28 the heat flux from reactions
    //N=29 total incident heat transfer
    //N=30 total reflected heat transfer
    //N=31 net heat transfer
    //N=32 surface temperature   --not implemented
    //N=33 incident electronic energy
    //N=34 reflected electronic energy
    //N=35 net electronic energy
    //N=35+K the percentage of species K
    //
    //COLLS(N) the number of collisions in sampling cell N
    //WCOLLS(N) weighted number
    //CLSEP(N) the total collision partner separation distance in sampling cell N
    //
    //VIBFRAC(L,K,M) the sum of species L mode K in level M
    //SUMVIB(L,K) the total sample in VIBFRAC
    //
    //THE following variables apply in the sampling of distribution functions
    //(some are especially for the dissociation of oxygen
    //
    //NDISSOC the number of dissociations
    //NRECOMB the number of recombinations
    //NDISSL(L) the number of dissociations from level
    //NTSAMP the number of temperature samples
    //STEMP(L) the temperature of species L
    //TRANSTEMP(L) the translational temperature of species N
    //ROTTEMP(L) rotational temperature of species N
    //VIBTEMP(L) vibrational temperature of species N
    //ELTEMP(L) electronic temperature of species N
    //
};

class GEOM_1D : public Managed
{
public:
    //declares the variables associated with the flowfield geometry and cell structure
    //for homogeneous gas and one-dimensional flow studies
    int NCELLS,NCCELLS,NCIS,NDIV,MDIV,ILEVEL,IFX,JFX,IVB,IWF;
    //int ITYPE[3];
    int *ITYPE;
    int *ICELL;
    int ** ICCELL,**JDIV;
    void i_allocate(int x, int *&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
    }
    void i_allocate(int x, int y, int **&arr){
        cudaMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(int));
    }
    double DDIV,XS,VELOB,WFM,AWF,FREM,XREM;
    //double XB[3];
    double *XB;
    double **CELL,**CCELL;
    void d_allocate(int x, int y, double**&arr){
        cudaMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            cudaMallocManaged(&arr[i], y*sizeof(double));
    }
    GEOM_1D(){
        cudaMallocManaged(&ITYPE, 3*sizeof(int));
        cudaMallocManaged(&XB, 3*sizeof(double));   
    }
    //
    //XB(1), XB(2) the minimum, maximum x coordinate
    //DDIV the width of a division
    //ITYPE(K) the tpe of boundary at the minimum x (K=1) and maximum x (K=2) boundaries
    //          0 for a stream boundary
    //          1 for a plane of symmetry
    //          2 for a solid surface
    //          3 for a vacuum
    //NCELLS the number of sampling cells
    //NCCELLS the number of collision cells
    //NCIS the number of collision cells in a sampling cell
    //  MDIV the maximum number of sampling cell divisions at any level of subdivision
    //IVB 0,1 for stationary, moving outer boundary
    //IWF 0 for no radial weighting factors, 1 for radial weighting factors
    //WFM, set in data as the maximum weighting factor, then divided by the maximum radius
    //AWF overall ratio of real to weighted molecules
    //VELOB the speed of the outer boundary
    //ILEV level of subdivision in adaption (0 before adaption)
    //JDIV(N,M) (-cell number) or (start address -1 in JDIV(N+1,M), where M is MDIV
    //IFX 0 for plane flow, 1 for cylindrical flow, 3 for spherical flow
    //JFX  IFX+1
    //CELL(M,N) information on sampling cell N
    //    M=1 x coordinate
    //    M=2 minimum x coordinate
    //    M=3 maximum x cooedinate
    //    M=4 volume
    //ICELL(N) number of collision cells preceding those in sampling cell N
    //CCELL(M,N) information on collision cell N
    //    M=1 volume
    //    M=2 remainder in collision counting
    //    M=3 half the allowed time step
    //    M=4 maximum value of product of cross-section and relative velocity
    //    M=5 collision cell time
    //ICCELL(M,N) integer information on collision cell N
    //    M=1 the (start address -1) in ICREF of molecules in collision cell N
    //    M=2 the number of molecules in collision cell N
    //    M=3 the sampling cell in which the collision cell lies
    //FREM fraction of molecule removal
    //XREM the coordinate at which removal commences
    //
};

clock_t start;
fstream file_9;
fstream file_18;
CALC *calc = new CALC;
GAS *gas = new GAS;
MOLECS *molecs = new MOLECS;
GEOM_1D *geom = new GEOM_1D;
OUTPUT *output =new OUTPUT;

template <typename T>
string to_string(T value)
{
    std::ostringstream os ;
    os << value ;
    return os.str() ;
}



int main()
{
    // //CALC calc;
    // //MOLECS molecs;
    // //GAS gas;
    // //OUTPUT output;
    // //GEOM_1D geom;
    //
    // IMPLICIT NONE\

    //


    int IRUN,ICONF,N,M,IADAPT,IRETREM,ISET;
    double A;
    //
    fstream file_7;
    
    calc->NVER=1;          //for major changes, e.g. to basic architecture
    calc->MVER=1 ;         //significant changes, but must change whenever the data in a DSnD.DAT file changes
    calc->NREL=1  ;        //the release number
    //
    //***********************
    //set constants
    // PI=3.1415926535897932D00
    // DPI=6.283185307179586D00
    // SPI=1.772453850905516D00
    // BOLTZ=1.380658D-23
    // AVOG=6.022169D26
    //***********************
    //
    //*************************************************
    //****  ADJUSTABLE COMPUTATIONAL PARAMETERS  ****
    //*************************************************
    //
    calc->NMCC=15;    //DEFAULT=15--desired number of simulated molecules in a collision cell
    //
    calc->CPDTM=0.2;   //DEFAULT=0.2--fraction of the local mean collision time that is the desired maximum time step
    //
    calc->TPDTM=0.5 ;  //DEFAULT=0.5--the fraction or multiple of a sampling cell transit time that is the desired maximum time step
    //
    calc->NNC=1;       //DEFAULT=0--0 to select collision partner randomly from collision cell, 1 for nearest-neighbor collisions
    //
    calc->SAMPRAT=5;   //DEFAULT=5--the number of time steps in a sampling interval
    //
    calc->OUTRAT=10;   //50   //DEFAULT=50--the number of flow samples in a file output interval
    //
    calc->FRACSAM=0.5; //0.5 //DEFAULT=0.5--fraction of the output interval interval over which a time-averaged sample is taken in an unsteady flow
    //
    calc->ISAD=0;      //DEFAULT=0--0,1 to not adapt, to adapt cells automatically at start of output interval in an unsteady flow (not yet implemented)
    //
    calc->IMTS=2;      //DEFAULT=0--0 to set the move time step to the instantaneous overall time step that changes with time
    //                         1 to use a cell dependent collision time
    //                         2 to keep the time step fixed at the initial value
    //
    calc->FNUMF=1;   //DEFAULT=1--adjustment factor to the automatically generated value for the number of real molecules
    //                                  that are represented by each simulated molecule.
    //          (The adjustment may be large because the automatic setting assumes that the whole flowfield is at the stream conditions.)
    //
    //automatic adjustments may be applied for some application classes (e.g homogeneous gas studies)
    //
    calc->TLIM=1.e-5;  //DEFAULT=1.D20 sets an indefinite run - set if a define STOP time is required
    //
    //************************************************
    //
    //open a diagnostic file and check whether an instance of the program is already running
    //
    //    fstream file_9;
    cout<<"DSMC PROGRAM"<<endl;
    file_9.open("DIAG.TXT", ios::trunc | ios::out);
    if(file_9.is_open()){
        file_9<<"File DIAG.TXT has been opened"<<endl;
        cout<<"File DIAG.TXT has been opened"<<endl;
    }
    else{
        cout<<"Stop the DS1.EXE that is already running and try again"<<endl;
        //return 0;
    }
    
    //    OPEN (9,FILE='DIAG.TXT',FORM='FORMATTED',STATUS='REPLACE')
    //    WRITE (9,*,IOSTAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'Stop the DS1.EXE that is already running and try again'
    //    STOP
    //    ELSE
    //    WRITE (9,*) 'File DIAG.TXT has been opened'
    //    END IF
    
    //
    //open a molecule number history file
    //OPEN (13,FILE='MolNum.DAT',FORM='FORMATTED',STATUS='REPLACE')
    //
    //initialise run variables
    IRUN=0;
    geom->IVB=0;  //will be reset to 1 by restart program if there is a moving wall
    //
    while((IRUN < 1) || (IRUN > 2)){
        cout<< "DSMC Version" <<calc->NVER<<'.'<<calc->MVER<<'.'<<calc->NREL<<endl;
        cout<< "enter 1 to continue a current run"<<endl;
        cout<< "enter 2 to start a new run :-"<<endl;
        //
        cin>>  IRUN;
    }
    if(IRUN == 1) file_9<< "Continuing an existing run"<<endl;//WRITE (9,*) 'Continuing an existing run'
    if(IRUN == 2) {
        cout<< "Enter 1 to confirm, 0 to continue current run :-"<<endl;
        cin>> ICONF;
        if(ICONF == 1)
            file_9<<"Starting a new run"<<endl;//WRITE (9,*) 'Starting a new run'
        else{
            IRUN=1;
            file_9<<"Continuing an existing run"<<endl;
            //WRITE (9,*) 'Continuing an existing run'
        }
    }
    //
    if(IRUN == 2){          //new run
        cout<< "Enter 0 for a homogeneous gas, or"<<endl;
        cout<< "Enter 1 for a one-dimensional flow, or"<<endl;
        cout<< "Enter 2 for a two-dimensional plane flow, or"<<endl;
        cout<< "Enter 3 for a three dimensional flow, or"<<endl;
        cout<< "enter 4 for an axially-symmetric flow :-"<<endl;
        cin>> calc->ICLASS;
        calc->NCLASS=2;      //default 2D
        if(calc->ICLASS < 2) calc->NCLASS=1;   //0D or 1D
        if(calc->ICLASS == 3) calc->NCLASS=3;  //3D
        cout<<"Enter 0 for an eventually steady flow, or"<<endl;
        cout<<"enter 1 for a continuing unsteady flow :-"<<endl;
        cin>> calc->ISF;
        
        
        file_7.open("RUN_CLASS.TXT", ios::trunc |ios::out);
        if(file_7.is_open()){
            cout<<"RUN_CLASS.TXT is opened"<<endl;
        }
        else{
            cout<<"RUN_CLASS.TXT not opened"<<endl;
            cin.get();
        }
        file_7<<calc->ICLASS<<calc->ISF;
        file_7.close();
        //        OPEN (7,FILE='RUN_CLASS.TXT',FORM='FORMATTED',STATUS='REPLACE')
        //        WRITE (7,*) ICLASS,ISF
        //        CLOSE (7)
        file_9<<"Starting a new run with ICLASS, ISF "<<calc->ICLASS<<" "<<calc->ISF<<endl;
        //        WRITE (9,*) 'Starting a new run with ICLASS, ISF',ICLASS,ISF
        cout<<"Starting a new run with ICLASS, ISF "<<calc->ICLASS<<" "<<calc->ISF<<endl;
    }
    //
    if(IRUN == 1){       //continued run
        file_7.open("RUN_CLASS.TXT" , ios::in );
        if(file_7.is_open()){
            cout<<"RUN_CLASS.TXT is opened"<<endl;
        }
        else{
            cout<<"RUN_CLASS.TXT not opened"<<endl;
            cin.get();
        }
        file_7 >>calc->ICLASS>>calc->ISF;
        file_7.close();
        //        OPEN (7,FILE='RUN_CLASS.TXT',FORM='FORMATTED',STATUS='OLD')
        //        READ (7,*) ICLASS,ISF
        //        CLOSE(7)
        READ_RESTART();
        //
        calc->TSAMP=calc->FTIME+calc->DTSAMP;
        calc->TOUT=calc->FTIME+calc->DTOUT;
        if((gas->MEX > 0) && (calc->ISF == 1)){
            cout<<"Enter 0 to continue the reaction sample or"<<endl;
            cout<<"enter 1 to continue with a new reaction sample :-"<<endl;
            cin>> N;
            if(N == 1){
                //memset(gas->TNEX,0.e00,sizeof(*gas->TNEX));
                //memset(calc->TDISS,0.e00,sizeof(*calc->TDISS));
                //memset(calc->TRECOMB,0.e00,sizeof(*calc->TRECOMB));
                for(int i=0;i<gas->MEX+1;i++)
                    gas->TNEX[i]= 0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->TDISS[i]=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->TRECOMB[i]=0.e00;
            }
        }
        //
        if((calc->ISAD == 0) && (calc->ISF == 0)){
            cout<<"Enter 0 to continue the current sample or"<<endl;
            cout<<"enter 1 to continue with a new sample :-"<<endl;
            cin>> N;
            if(N == 1){
                if((geom->ITYPE[2] == 4) && (calc->ICN == 0)){
                    cout<<"Enter 0 to continue to not enforce constant molecule number"<<endl;
                    cout<<"enter 1 to start to enforce constant molecule number :-"<<endl;
                    cin>> M;
                    if(M == 1) calc->ICN=1;
                }
                cout<<"Enter 1 to adapt the cells, or 0 to continue with current cells:-"<<endl;
                cin>>IADAPT;
                if(IADAPT == 1){
                    cout<<"Adapting cells"<<endl;
                    ADAPT_CELLS_1D() ;
                    INDEX_MOLS();
                    WRITE_RESTART();
                }
                else
                    cout<<"Continuing with existing cells"<<endl;
                //
                if(calc->IREM == 2){
                    cout<<"Enter 1 to reset the removal details, or 0 to continue with current details:-"<<endl;
                    cin>>IRETREM;
                    if(IRETREM == 1){
                        geom->FREM=-1.e00;
                        while((geom->FREM < -0.0001) || (geom->FREM > 5.0)){
                            cout<<"Enter the fraction of entering molecules that are removed:-"<<endl;
                            cin>>geom->FREM;
                            cout<<"The ratio of removed to entering mlecules is \t"<<geom->FREM<<endl;
                            //                            WRITE (*,999) FREM
                        }
                        file_9<<"The ratio of removed to entering mlecules is \t"<<geom->FREM<<endl;
                        //                        WRITE (9,999) FREM
                        //                        999       FORMAT (' The ratio of removed to entering molecules is ',G15.5)
                        if(geom->FREM > 1.e-10){
                            geom->XREM=geom->XB[1]-1.0;
                            while((geom->XREM < geom->XB[1]-0.0001) || (geom->XREM > geom->XB[2]+0.0001)){
                                cout<<"Enter x coordinate of the upstream removal limit:-"<<endl;
                                cin>>geom->XREM;
                                cout<<"The molecules are removed from \t"<<geom->XREM<<" to "<<geom->XB[2]<<endl; //988
                                //                                WRITE (*,998) XREM,XB(2)
                            }
                            file_9<<"The molecules are removed from \t"<<geom->XREM<<" to "<<geom->XB[2]<<endl;
                            //                            WRITE (9,998) XREM,XB(2)
                            //                            998         FORMAT (' The molecules are removed from ',G15.5,' to',G15.5)
                        }
                    }
                }
                //
                INITIALISE_SAMPLES();
            }
        }
    }
    //
    if(IRUN == 2){
        //
        READ_DATA();
        //
        if(calc->ICLASS < 2) SET_INITIAL_STATE_1D();
        //
        if(calc->ICLASS == 0) ENERGY(0,A);
        //
        WRITE_RESTART();
        //
    }
    //
    while(calc->FTIME < calc->TLIM){
        //
        //
        calc->FTIME=calc->FTIME+calc->DTM;
        //
        file_9<<"  TIME  "<<setw(20)<<setprecision(10)<<calc->FTIME<<"  NM  "<<molecs->NM<<"  COLLS  "<<std::left<<setw(20)<<setprecision(10)<<calc->TOTCOL<<endl;
        //        WRITE (9,*) 'TIME',FTIME,' NM',NM,' COLLS',TOTCOL
        cout<< "  TIME   "<<setw(20)<<setprecision(10)<<calc->FTIME<<"  NM  "<<molecs->NM<<"  COLLS  "<<std::left<<setw(20)<<setprecision(10)<<calc->TOTCOL<<endl;
        //
        //  WRITE (13,*) FTIME/TNORM,FLOAT(NM)/FLOAT(NMI)      //uncomment if a MOLFILE.DAT is to be generated
        //
        //  WRITE (*,*) 'MOVE'
        //cout<<"MOVE"<<endl;
        MOLECULES_MOVE_1D();
        //
        if((geom->ITYPE[1] == 0) || (geom->ITYPE[2] == 0) || (geom->ITYPE[2] == 4)) MOLECULES_ENTER_1D();
        //
        //  WRITE (*,*) 'INDEX'
        //ut<<"INDEX"<<endl;
        // cout<<calc->TOUT<<endl;
        // cin.get();
        INDEX_MOLS();
        //
         // WRITE (*,*) 'COLLISIONS'
        COLLISIONS();
        //
        // if(gas->MMVM > 0) {
        //     cout<<"DISSOCIATION"<<endl;
        //     DISSOCIATION();
        // }
        //
        if(calc->FTIME > calc->TSAMP){
            //    WRITE (*,*) 'SAMPLE'
            if(calc->ISF == 0) SAMPLE_FLOW();
            if((calc->ISF == 1) && (calc->FTIME < calc->TPOUT+(1.e00-calc->FRACSAM)*calc->DTOUT)){
                calc->TSAMP=calc->TSAMP+calc->DTSAMP;
                INITIALISE_SAMPLES();
            }
            if((calc->ISF == 1) && (calc->FTIME >= calc->TPOUT+(1.e00-calc->FRACSAM)*calc->DTOUT)) SAMPLE_FLOW();
        }
        //
        if(calc->FTIME > calc->TOUT){
            cout<<"writing OUTPUT"<<endl;
            //    WRITE (*,*) 'OUTPUT'
            WRITE_RESTART();
            //
            OUTPUT_RESULTS();
            calc->TPOUT=calc->FTIME;
        }
        //
    }
    return 0;
    //
}

void ALLOCATE_GAS()
{
    // //GAS gas;
    // //CALC calc;
    gas->d_allocate(gas->MSP+1,3,gas->FSP);
    gas->d_allocate(7,gas->MSP+1,gas->SP);
    gas->d_allocate(4,gas->MSP+1,gas->SPR);
    gas->d_allocate(9,gas->MSP+1,gas->MSP,gas->SPM);
    gas->i_allocate(3,gas->MSP+1,gas->ISPR);
    gas->i_allocate(gas->MSP+1,gas->ISPV);
    gas->d_allocate(7,gas->MSP+1,3,gas->ENTR);
    gas->d_allocate(gas->MSP+1,3,gas->VMP);
    calc->d_allocate(gas->MSP+1,calc->VNMAX);
    gas->d_allocate(gas->MSP+1,gas->CR);
    calc->d_allocate(gas->MSP+1,gas->MSP+1,calc->TCOL);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->ISPRC);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->ISPRK);
    gas->d_allocate(5,gas->MSP+1,gas->MSP+1,gas->MSP+1,gas->SPRC);
    gas->i_allocate(gas->MSP+1,gas->NELL);
    gas->d_allocate(4,gas->MELE+1,gas->MSP+1,gas->QELC);
    gas->d_allocate(3,gas->MSP+1,gas->MSP+1,gas->MVIBL+1,gas->SPRP);
    gas->d_allocate(3,gas->MSP+1,gas->MSP+1,gas->SPRT);
    calc->d_allocate(gas->MSP+1,calc->AJM);
    gas->d_allocate(gas->MSP+1,gas->FP);
    calc->d_allocate(gas->MSP+1,calc->ALOSS);
    calc->d_allocate(gas->MSP+1,calc->EME);
    
    /*ALLOCATE (FSP(MSP,2),SP(6,MSP),SPR(3,MSP),SPM(8,MSP,MSP),ISPR(2,MSP),ISPV(MSP),ENTR(6,MSP,2),      &
     VMP(MSP,2),VNMAX(MSP),CR(MSP),TCOL(MSP,MSP),ISPRC(MSP,MSP),ISPRK(MSP,MSP),SPRC(4,MSP,MSP,MSP),                        &
     NELL(MSP),QELC(3,MELE,MSP),SPRP(2,MSP,MSP,0:MVIBL),SPRT(2,MSP,MSP),AJM(MSP),FP(MSP),    &
     ALOSS(MSP),EME(MSP),STAT=ERROR)
     //
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SPECIES VARIABLES',ERROR
     END IF
     //*/
    gas->i_allocate(gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->NEX);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->NSPEX);
    gas->d_allocate(7,gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->SPEX);
    gas->i_allocate(gas->MMEX+1,8,gas->MSP+1,gas->MSP+1,gas->ISPEX);
    gas->i_allocate(5,gas->MSP+1,gas->TREACG);
    gas->d_allocate(gas->MMEX+1,gas->PSF);
    gas->i_allocate(5,gas->MSP+1,gas->TREACL);
    gas->d_allocate(gas->MEX+1,gas->TNEX);
    gas->d_allocate(3,gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->MVIBL+1,gas->SPREX);
    gas->i_allocate(3,gas->MSP+1,gas->NSLEV);
    gas->d_allocate(gas->MSP+1,gas->SLER);
    // ALLOCATE (NEX(MMEX,MSP,MSP),NSPEX(MSP,MSP),SPEX(6,MMEX,MSP,MSP),ISPEX(MMEX,7,MSP,MSP),TREACG(4,MSP),         &
    //           PSF(MMEX),TREACL(4,MSP),TNEX(MEX),SPREX(2,MMEX,MSP,MSP,0:MVIBL),NSLEV(2,MSP),SLER(MSP),STAT=ERROR)
    // //
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE Q-K REACTION VARIABLES',ERROR
    // END IF
    // //
    if(gas->MMVM >= 0){
        gas->d_allocate(6,gas->MMVM+1,gas->MSP+1,gas->SPVM);
        gas->i_allocate(3,gas->MMVM+1,gas->MSP+1,gas->ISPVM);
        calc->d_allocate(gas->MSP+1,calc->TDISS);
        calc->d_allocate(gas->MSP+1,calc->TRECOMB);
        //ALLOCATE (SPVM(5,MMVM,MSP),ISPVM(2,MMVM,MSP),TDISS(MSP),TRECOMB(MSP),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE VIBRATION VARIABLES',ERROR
    }
    
    //N.B. surface reactions are not yet implemented
    if(gas->MNSR > 0){
        gas->d_allocate(gas->MNSR+1,gas->ERS);
        gas->i_allocate(3,gas->MNSR+1,gas->LIS);
        gas->i_allocate(7,gas->MNSR+1,gas->LRS);
        gas->i_allocate(gas->MNSR+1,gas->MSP+1,gas->ISRCD);
        //ALLOCATE (ERS(MNSR),LIS(2,MNSR),LRS(6,MNSR),ISRCD(MNSR,MSP),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SURFACE REACTION VARIABLES',ERROR
    }
     //calc->AJM=0.e00;
    //memset(calc->AJM,0.e00,sizeof(*calc->AJM));
    for(int i=0;i<gas->MSP+1;i++){
        calc->AJM[i]=0.e00;
    }
    return;
    
}

void HARD_SPHERE()
{
    ////GAS gas;
    ////CALC calc;
    cout<<"Reading HARD_SPHERE Data"<<endl;
    gas->MSP=1;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    
    gas->SP[1][1]=4.0e-10;    //reference diameter
    gas->SP[2][1]=273.0;       //reference temperature
    gas->SP[3][1]=0.5;        //viscosity-temperature index
    gas->SP[4][1]=1.0;         //reciprocal of VSS scattering parameter (1 for VHS)
    gas->SP[5][1]=5.e-26;     //mass
    gas->ISPR[1][1]=0;        //number of rotational degrees of freedom
    cout<<"Hard Sphere data done"<<endl;
    return;
}


void ARGON()
{
    // //GAS gas;
    // //CALC calc;
    cout<<"Reading Argon Data"<<endl;
    gas->MSP=1;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    ALLOCATE_GAS();
    gas->SP[1][1]=4.17e-10;
    gas->SP[2][1]=273.15;
    gas->SP[3][1]=0.81;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=6.63e-26;
    gas->ISPR[1][1]=0;
    gas->ISPR[2][1]=0;
    cout<<"Argon Data done"<<endl;
    return;
}
//
void IDEAL_NITROGEN()
{
    // //GAS gas;
    // //CALC calc;
    cout<<"Reading IDEAL_NITROGEN data"<<endl;
    gas->MSP=1;
    gas->MMRM=1;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=0;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    gas->SP[1][1]=4.17e-10;
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.74;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=4.65e-26;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.0;
    return;
}
//
void REAL_OXYGEN()
{
    //
    //GAS gas;
    //CALC calc;
    cout<<"Reading Real_Oxygen data"<<endl;
    gas->MSP=2;
    gas->MMRM=1;
    gas->MMVM=1;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=5;
    gas->MVIBL=26;
    ALLOCATE_GAS();
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.00;
    gas->SP[3][1]=0.77e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=5.312e-26;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0 ;            //0,1 for constant,polynomial rotational relaxation collision number
    gas->SPR[1][1]=5.0;             // the collision number or the coefficient of temperature in the polynomial (if a polynomial, the coeff. of T^2 is in spr_db(3  )
    
    gas->ISPV[1]=1   ;            // the number of vibrational modes
    gas->SPVM[1][1][1]=2256.e00  ;        // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=90000.e00;        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][1]=2256.e00;        // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][1]=1.0;            //arbitrary reduction factor
    gas->ISPVM[1][1][1]=2;
    gas->ISPVM[2][1][1]=2;
    gas->NELL[1]=3;
    if(gas->MELE > 1){
        //******
        gas->QELC[1][1][1]=3.0;
        gas->QELC[2][1][1]=0.0;
        gas->QELC[3][1][1]=50.0;  //500.
        gas->QELC[1][2][1]=2.0;
        gas->QELC[2][2][1]=11393.0;
        gas->QELC[3][2][1]=50.0;  //500         //for equipartition, the cross-section ratios must be the same for all levels
        gas->QELC[1][3][1]=1.0;
        gas->QELC[2][3][1]=18985.0;
        gas->QELC[3][3][1]=50.0;  //500.
    }
    //
    //species 2 is atomic oxygen
    gas->SP[1][2]=3.e-10;
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.8e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=2.656e-26;
    gas->SP[6][2]=4.099e-19;
    gas->ISPR[1][2]=0;
    gas->ISPV[2]=0;     //must be set//
    //set electronic information
    if(gas->MELE > 1){
        gas->NELL[2]=5;
        gas->QELC[1][1][2]=5.0;
        gas->QELC[2][1][2]=0.0;
        gas->QELC[3][1][2]=50.0;
        gas->QELC[1][2][2]=3.0;
        gas->QELC[2][2][2]=228.9;
        gas->QELC[3][2][2]=50.0;
        gas->QELC[1][3][2]=1.0;
        gas->QELC[2][3][2]=325.9;
        gas->QELC[3][3][2]=50.0;
        gas->QELC[1][4][2]=5.0;
        gas->QELC[2][4][2]=22830.0;
        gas->QELC[3][4][2]=50.0;
        gas->QELC[1][5][2]=1.0;
        gas->QELC[2][5][2]=48621.0;
        gas->QELC[3][5][2]=50.0;
    }
    //set data needed for recombination
    //
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
            gas->ISPRK[i][j]=0;
        }
    }
    // gas->ISPRC=0;
    // gas->ISPRK=0;
    gas->ISPRC[2][2]=1;    //O+O -> O2  recombined species code for an O+O recombination
    gas->ISPRK[2][2]=1 ;     //the relevant vibrational mode of this species
    gas->SPRC[1][2][2][1]=0.04;
    gas->SPRC[2][2][2][1]=-1.3;
    gas->SPRC[1][2][2][2]=0.05;
    gas->SPRC[2][2][2][2]=-1.1;
    gas->SPRT[1][2][2]=5000.e00;
    gas->SPRT[2][2][2]=15000.e00;
    //
    //memset(gas->NSPEX,0,sizeof(**gas->NSPEX));
    //memset(gas->SPEX,0.e00,sizeof(****gas->SPEX));
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->NSPEX[i][j]=0;
        }
    }
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->SPEX=0.e00;
    gas->ISPEX=0;
    //
    DERIVED_GAS_DATA();
    //
    cout<<"Real_Oxygen data done"<<endl;
    return;
}
//
void IDEAL_AIR()
{
    //GAS gas;
    //CALC calc;
    cout<<"Reading IDEAL_AIR data"<<endl;
    gas->MSP=2;
    gas->MMRM=1;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    //
    ALLOCATE_GAS();
    //
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.77;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=5.312e-26;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.0;
    gas->SP[1][2]=4.17e-10;
    gas->SP[2][2]=273.0;
    gas->SP[3][2]=0.74;
    gas->SP[4][2]=1.0;
    gas->SP[5][2]=4.65e-26;
    gas->ISPR[1][2]=2;
    gas->ISPR[2][2]=0;
    gas->SPR[1][2]=5.0;
    cout<<"IDEAL_AIR data done"<<endl;
    return;
}
//
void REAL_AIR()
{
    //GAS gas;
    //CALC calc;
    cout<<"REAL_AIR data done"<<endl;
    gas->MSP=5;
    gas->MMRM=1;
    gas->MMVM=1;
    gas->MELE=5;
    gas->MVIBL=40;  //?
    //
    gas->MEX=4;
    gas->MMEX=1;
    //
    gas->MNSR=0;
    ALLOCATE_GAS();
    //species 1 is oxygen
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.e00;
    gas->SP[3][1]=0.77e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=5.312e-26;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.e00;
    gas->ISPV[1]=1;               // the number of vibrational modes
    gas->SPVM[1][1][1]=2256.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=18000.e00;  //90000.D00        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][1]=2256.e00;       // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][1]=1.0;
    gas->ISPVM[1][1][1]=3;
    gas->ISPVM[2][1][1]=3;
    gas->NELL[1]=3;
    gas->QELC[1][1][1]=3.0;
    gas->QELC[2][1][1]=0.0;
    gas->QELC[3][1][1]=50.0;
    gas->QELC[1][2][1]=2.0;
    gas->QELC[2][2][1]=11393.0;
    gas->QELC[3][2][1]=50.0;
    gas->QELC[1][3][1]=1.0;
    gas->QELC[2][3][1]=18985.0;
    gas->QELC[3][3][1]=50.0;
    //species 2 is nitrogen
    gas->SP[1][2]=4.17e-10;
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.74e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=4.65e-26;
    gas->SP[6][2]=0.e00;
    gas->ISPR[1][2]=2;
    gas->ISPR[2][2]=0;
    gas->SPR[1][2]=5.e00;
    gas->ISPV[2]=1;
    gas->SPVM[1][1][2]=3371.e00;
    gas->SPVM[2][1][2]=52000.e00;     //260000.D00
    gas->SPVM[3][1][2]=3371.e00;
    gas->SPVM[5][1][2]=0.3;
    gas->ISPVM[1][1][2]=4;
    gas->ISPVM[2][1][2]=4;
    gas->NELL[2]=1;
    gas->QELC[1][1][2]=1.0;
    gas->QELC[2][1][2]=0.0;
    gas->QELC[3][1][2]=100.0;
    //species 3 is atomic oxygen
    gas->SP[1][3]=3.e-10;
    gas->SP[2][3]=273.e00;
    gas->SP[3][3]=0.8e00;
    gas->SP[4][3]=1.e00;
    gas->SP[5][3]=2.656e-26;
    gas->SP[6][3]=4.099e-19;
    gas->ISPR[1][3]=0;
    gas->ISPV[3]=0;
    gas->NELL[3]=5;
    gas->QELC[1][1][3]=5.0;
    gas->QELC[2][1][3]=0.0;
    gas->QELC[3][1][3]=50.0;
    gas->QELC[1][2][3]=3.0;
    gas->QELC[2][2][3]=228.9;
    gas->QELC[3][2][3]=50.0;
    gas->QELC[1][3][3]=1.0;
    gas->QELC[2][3][3]=325.9;
    gas->QELC[3][3][3]=50.0;
    gas->QELC[1][4][3]=5.0;
    gas->QELC[2][4][3]=22830.0;
    gas->QELC[3][4][3]=50.0;
    gas->QELC[1][5][3]=1.0;
    gas->QELC[2][5][3]=48621.0;
    gas->QELC[3][5][3]=50.0;
    //species 4 is atomic nitrogen
    gas->SP[1][4]=3.e-10;
    gas->SP[2][4]=273.e00;
    gas->SP[3][4]=0.8e00;
    gas->SP[4][4]=1.0e00;
    gas->SP[5][4]=2.325e-26;
    gas->SP[6][4]=7.849e-19;
    gas->ISPR[1][4]=0;
    gas->ISPV[4]=0;
    gas->NELL[4]=3;
    gas->QELC[1][1][4]=4.0;
    gas->QELC[2][1][4]=0.0;
    gas->QELC[3][1][4]=50.0;
    gas->QELC[1][2][4]=10.0;
    gas->QELC[2][2][4]=27658.0;
    gas->QELC[3][2][4]=50.0;
    gas->QELC[1][3][4]=6.0;
    gas->QELC[2][3][4]=41495.0;
    gas->QELC[3][3][4]=50.0;
    //species 5 is NO
    gas->SP[1][5]=4.2e-10;
    gas->SP[2][5]=273.e00;
    gas->SP[3][5]=0.79e00;
    gas->SP[4][5]=1.0e00;
    gas->SP[5][5]=4.98e-26;
    gas->SP[6][5]=1.512e-19;
    gas->ISPR[1][5]=2;
    gas->ISPR[2][5]=0;
    gas->SPR[1][5]=5.e00;
    gas->ISPV[5]=1;
    gas->SPVM[1][1][5]=2719.e00;
    gas->SPVM[2][1][5]=14000.e00;   //70000.D00
    gas->SPVM[3][1][5]=2719.e00;
    gas->SPVM[5][1][5]=0.2;
    gas->ISPVM[1][1][5]=3;
    gas->ISPVM[2][1][5]=4;
    gas->NELL[5]=2;
    gas->QELC[1][1][5]=2.0;
    gas->QELC[2][1][5]=0.0;
    gas->QELC[3][1][5]=50.0;
    gas->QELC[1][2][5]=2.0;
    gas->QELC[2][2][5]=174.2;
    gas->QELC[3][2][5]=50.0;
    //set the recombination data for the molecule pairs
    //memset(gas->ISPRC,0,sizeof(**gas->ISPRC));//gas->ISPRC=0;    //data os zero unless explicitly set
    //memset(gas->ISPRK,0,sizeof(**gas->ISPRK));//gas->ISPRK=0;
    //memset(gas->SPRC,0,sizeof(****gas->SPRC));//gas->SPRC=0.e00;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
        }
    }
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRK[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    gas->ISPRC[3][3]=1; //O+O -> O2  recombined species code for an O+O recombination
    gas->ISPRK[3][3]=1;
    gas->SPRC[1][3][3][1]=0.04e00;
    gas->SPRC[2][3][3][1]=-1.3e00;
    gas->SPRC[1][3][3][2]=0.07e00;
    gas->SPRC[2][3][3][2]=-1.2e00;
    gas->SPRC[1][3][3][3]=0.08e00;
    gas->SPRC[2][3][3][3]=-1.2e00;
    gas->SPRC[1][3][3][4]=0.09e00;
    gas->SPRC[2][3][3][4]=-1.2e00;
    gas->SPRC[1][3][3][5]=0.065e00;
    gas->SPRC[2][3][3][5]=-1.2e00;
    gas->SPRT[1][3][3]=5000.e00;
    gas->SPRT[2][3][3]=15000.e00;
    gas->ISPRC[4][4]=2;  //N+N -> N2
    gas->ISPRK[4][4]=1;
    gas->SPRC[1][4][4][1]=0.15e00;
    gas->SPRC[2][4][4][1]=-2.05e00;
    gas->SPRC[1][4][4][2]=0.09e00;
    gas->SPRC[2][4][4][2]=-2.1e00;
    gas->SPRC[1][4][4][3]=0.16e00;
    gas->SPRC[2][4][4][3]=-2.0e00;
    gas->SPRC[1][4][4][4]=0.17e00;
    gas->SPRC[2][4][4][4]=-2.0e00;
    gas->SPRC[1][4][4][5]=0.17e00;
    gas->SPRC[2][4][4][5]=-2.1e00;
    gas->SPRT[1][4][4]=5000.e00;
    gas->SPRT[2][4][4]=15000.e00;
    gas->ISPRC[3][4]=5;
    gas->ISPRK[3][4]=1;
    gas->SPRC[1][3][4][1]=0.3e00;
    gas->SPRC[2][3][4][1]=-1.9e00;
    gas->SPRC[1][3][4][2]=0.4e00;
    gas->SPRC[2][3][4][2]=-2.0e00;
    gas->SPRC[1][3][4][3]=0.3e00;
    gas->SPRC[2][3][4][3]=-1.75e00;
    gas->SPRC[1][3][4][4]=0.3e00;
    gas->SPRC[2][3][4][4]=-1.75e00;
    gas->SPRC[1][3][4][5]=0.15e00;
    gas->SPRC[2][3][4][5]=-1.9e00;
    gas->SPRT[1][3][4]=5000.e00;
    gas->SPRT[2][3][4]=15000.e00;
    //set the exchange reaction data
    //memset(gas->SPEX,0,sizeof(****gas->SPEX));//gas->SPEX=0.e00;
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    gas->ISPEX=0;
    gas->NSPEX=0;
    gas->NSPEX[2][3]=1;
    gas->NSPEX[4][5]=1;
    gas->NSPEX[3][5]=1;
    gas->NSPEX[1][4]=1;
    //N2+O->NO+N
    gas->ISPEX[1][1][2][3]=2;
    gas->ISPEX[1][2][2][3]=3;
    gas->ISPEX[1][3][2][3]=5;
    gas->ISPEX[1][4][2][3]=4;
    gas->ISPEX[1][5][2][3]=1;
    gas->ISPEX[1][6][2][3]=1;
    gas->SPEX[6][1][2][3]=0.e00;
    gas->NEX[1][2][3]=1;
    //NO+N->N2+0
    gas->ISPEX[1][1][4][5]=5;
    gas->ISPEX[1][2][4][5]=4;
    gas->ISPEX[1][3][4][5]=2;
    gas->ISPEX[1][4][4][5]=3;
    gas->ISPEX[1][5][4][5]=1;
    gas->ISPEX[1][6][4][5]=1;
    gas->ISPEX[1][7][4][5]=1;
    gas->SPEX[1][1][4][5]=0.8e00;
    gas->SPEX[2][1][4][5]=-0.75e00;
    gas->SPEX[4][1][4][5]=5000.e00;
    gas->SPEX[5][1][4][5]=15000.e00;
    gas->SPEX[6][1][4][5]=0.e00;
    gas->NEX[1][4][5]=2;
    //NO+O->O2+N
    gas->ISPEX[1][1][3][5]=5;
    gas->ISPEX[1][2][3][5]=3;
    gas->ISPEX[1][3][3][5]=1;
    gas->ISPEX[1][4][3][5]=4;
    gas->ISPEX[1][5][3][5]=1;
    gas->ISPEX[1][6][3][5]=1;
    gas->SPEX[6][1][3][5]=2.e-19;
    gas->NEX[1][3][5]=3;
    //O2+N->NO+O
    gas->ISPEX[1][1][1][4]=1;
    gas->ISPEX[1][2][1][4]=4;
    gas->ISPEX[1][3][1][4]=5;
    gas->ISPEX[1][4][1][4]=3;
    gas->ISPEX[1][5][1][4]=1;
    gas->ISPEX[1][6][1][4]=1;
    gas->ISPEX[1][7][1][4]=1 ;
    gas->SPEX[1][1][1][4]=7.e00;
    gas->SPEX[2][1][1][4]=-0.85e00;
    gas->SPEX[4][1][1][4]=5000.e00;
    gas->SPEX[5][1][1][4]=15000.e00;
    gas->SPEX[6][1][1][4]=0.e00;
    gas->NEX[1][1][4]=4;
    
    DERIVED_GAS_DATA();
    cout<<"REAL_AIR data done"<<endl;
    return;
}
//
void HELIUM_ARGON_XENON()
{
    //GAS gas;
    //CALC calc;
    cout<<"Reading HELIUM_ARGON_XENON data"<<endl;
    gas->MSP=3;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    
    gas->SP[1][1]=2.30e-10;   //2.33D-10
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.66;
    gas->SP[4][1]=0.794;   //1.
    gas->SP[5][1]=6.65e-27;
    gas->ISPR[1][1]=0;
    gas->ISPR[2][1]=0;
    //
    gas->SP[1][2]=4.11e-10;   //4.17D-10
    gas->SP[2][2]=273.15;
    gas->SP[3][2]=0.81;
    gas->SP[4][2]=0.714;    //1.
    gas->SP[5][2]=6.63e-26;
    gas->ISPR[1][2]=0;
    gas->ISPR[2][2]=0;
    //
    gas->SP[1][3]=5.65e-10;   //5.74D-10
    gas->SP[2][3]=273.0;
    gas->SP[3][3]=0.85;
    gas->SP[4][3]=0.694;   //1.
    gas->SP[5][3]=21.8e-26;
    gas->ISPR[1][3]=0;
    gas->ISPR[2][3]=0;
    cout<<"HELIUM_ARGON_XENON data done"<<endl;
    return;
}
//
void OXYGEN_HYDROGEN()
{
    //
    //GAS gas;
    //CALC calc;
    cout<<"Reading OXYGEN_HYDROGEN data"<<endl;
    gas->MSP=8;
    gas->MMRM=3;
    gas->MMVM=3;
    gas->MELE=1;
    gas->MVIBL=40;  //the maximum number of vibrational levels before a cumulative level reaches 1
    //
    gas->MEX=16;
    gas->MMEX=3;
    //
    gas->MNSR=0;
    //
    ALLOCATE_GAS();
    //
    //species 1 is hydrogen H2
    gas->SP[1][1]=2.92e-10;
    gas->SP[2][1]=273.e00;
    gas->SP[3][1]=0.67e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=3.34e-27;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.e00;
    gas->ISPV[1]=1;         // the number of vibrational modes
    gas->SPVM[1][1][1]=6159.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=20000.e00;  //estimate
    gas->SPVM[3][1][1]=2000.e00; //estimate
    gas->SPVM[5][1][1]=1.0;
    gas->ISPVM[1][1][1]=2;
    gas->ISPVM[2][1][1]=2;
    //species 2 is atomic hydrogen H
    gas->SP[1][2]=2.5e-10;      //estimate
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.8e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=1.67e-27;
    gas->SP[6][2]=3.62e-19;
    gas->ISPR[1][2]=0;
    gas->ISPV[2]=0;
    //species 3 is oxygen O2
    gas->SP[1][3]=4.07e-10;
    gas->SP[2][3]=273.e00;
    gas->SP[3][3]=0.77e00;
    gas->SP[4][3]=1.e00;
    gas->SP[5][3]=5.312e-26;
    gas->SP[6][3]=0.e00;
    gas->ISPR[1][3]=2;
    gas->ISPR[2][3]=0;
    gas->SPR[1][3]=5.e00;
    gas->ISPV[3]=1;               // the number of vibrational modes
    gas->SPVM[1][1][3]=2256.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][3]=18000.e00;  //90000.D00        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][3]=2256.e00;       // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][3]=1.e00;
    gas->ISPVM[1][1][3]=4;
    gas->ISPVM[2][1][3]=4;
    //species 4 is atomic oxygen O
    gas->SP[1][4]=3.e-10;    //estimate
    gas->SP[2][4]=273.e00;
    gas->SP[3][4]=0.8e00;
    gas->SP[4][4]=1.e00;
    gas->SP[5][4]=2.656e-26;
    gas->SP[6][4]=4.099e-19;
    gas->ISPR[1][4]=0;
    gas->ISPV[4]=0;
    //species 5 is hydroxy OH
    gas->SP[1][5]=4.e-10;       //estimate
    gas->SP[2][5]=273.e00;
    gas->SP[3][5]=0.75e00;      //-estimate
    gas->SP[4][5]=1.0e00;
    gas->SP[5][5]=2.823e-26;
    gas->SP[6][5]=6.204e-20;
    gas->ISPR[1][5]=2;
    gas->ISPR[2][5]=0;
    gas->SPR[1][5]=5.e00;
    gas->ISPV[5]=1;
    gas->SPVM[1][1][5]=5360.e00;
    gas->SPVM[2][1][5]=20000.e00;   //estimate
    gas->SPVM[3][1][5]=2500.e00;    //estimate
    gas->SPVM[5][1][5]=1.0e00;
    gas->ISPVM[1][1][5]=2;
    gas->ISPVM[2][1][5]=4;
    //species 6 is water vapor H2O
    gas->SP[1][6]=4.5e-10;      //estimate
    gas->SP[2][6]=273.e00;
    gas->SP[3][6]=0.75e00 ;     //-estimate
    gas->SP[4][6]=1.0e00;
    gas->SP[5][6]=2.99e-26;
    gas->SP[6][6]=-4.015e-19;
    gas->ISPR[1][6]=3;
    gas->ISPR[2][6]=0;
    gas->SPR[1][6]=5.e00;
    gas->ISPV[6]=3;
    gas->SPVM[1][1][6]=5261.e00;  //symmetric stretch mode
    gas->SPVM[2][1][6]=20000.e00;   //estimate
    gas->SPVM[3][1][6]=2500.e00;    //estimate
    gas->SPVM[5][1][6]=1.e00;
    gas->SPVM[1][2][6]=2294.e00;  //bend mode
    gas->SPVM[2][2][6]=20000.e00;   //estimate
    gas->SPVM[3][2][6]=2500.e00;    //estimate
    gas->SPVM[5][2][6]=1.0e00;
    gas->SPVM[1][3][6]=5432.e00;  //asymmetric stretch mode
    gas->SPVM[2][3][6]=20000.e00;   //estimate
    gas->SPVM[3][3][6]=2500.e00 ;   //estimate
    gas->SPVM[5][3][6]=1.e00;
    gas->ISPVM[1][1][6]=2;
    gas->ISPVM[2][1][6]=5;
    gas->ISPVM[1][2][6]=2;
    gas->ISPVM[2][2][6]=5;
    gas->ISPVM[1][3][6]=2;
    gas->ISPVM[2][3][6]=5;
    //species 7 is hydroperoxy HO2
    gas->SP[1][7]=5.5e-10;       //estimate
    gas->SP[2][7]=273.e00;
    gas->SP[3][7]=0.75e00 ;     //-estimate
    gas->SP[4][7]=1.0e00;
    gas->SP[5][7]=5.479e-26;
    gas->SP[6][7]=2.04e-20;
    gas->ISPR[1][7]=2;    //assumes that HO2 is linear
    gas->ISPR[2][7]=0;
    gas->SPR[1][7]=5.e00;
    gas->ISPV[7]=3;
    gas->SPVM[1][1][7]=4950.e00;
    gas->SPVM[2][1][7]=20000.e00;   //estimate
    gas->SPVM[3][1][7]=2500.e00  ;  //estimate
    gas->SPVM[5][1][7]=1.e00;
    gas->SPVM[1][2][7]=2000.e00;
    gas->SPVM[2][2][7]=20000.e00;   //estimate
    gas->SPVM[3][2][7]=2500.e00;    //estimate
    gas->SPVM[5][2][7]=1.e00;
    gas->SPVM[1][3][7]=1580.e00;
    gas->SPVM[2][3][7]=20000.e00;   //estimate
    gas->SPVM[3][3][7]=2500.e00;    //estimate
    gas->SPVM[5][3][7]=1.e00;
    gas->ISPVM[1][1][7]=2;
    gas->ISPVM[2][1][7]=3;
    gas->ISPVM[1][2][7]=2;
    gas->ISPVM[2][2][7]=3;
    gas->ISPVM[1][3][7]=2;
    gas->ISPVM[2][3][7]=3;
    //Species 8 is argon
    gas->SP[1][8]=4.17e-10;
    gas->SP[2][8]=273.15;
    gas->SP[3][8]=0.81   ;
    gas->SP[4][8]=1.0;
    gas->SP[5][8]=6.63e-26;
    gas->SP[6][8]=0.e00;
    gas->ISPR[1][8]=0;
    gas->ISPV[8]=0;
    //
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
        }
    }
    //gas->ISPRC=0;    //data is zero unless explicitly set
    //
    gas->ISPRC[4][4]=3;    //O+O+M -> O2+M  recombined species code for an O+O recombination
    gas->ISPRK[4][4]=1;
    gas->SPRC[1][4][4][1]=0.26e00;
    gas->SPRC[2][4][4][1]=-1.3e00;
    gas->SPRC[1][4][4][2]=0.29e00;
    gas->SPRC[2][4][4][2]=-1.3e00;
    gas->SPRC[1][4][4][3]=0.04e00;
    gas->SPRC[2][4][4][3]=-1.5e00;
    gas->SPRC[1][4][4][4]=0.1e00;
    gas->SPRC[2][4][4][4]=-1.4e00;
    gas->SPRC[1][4][4][5]=0.1e00;
    gas->SPRC[2][4][4][5]=-1.4e00;
    gas->SPRC[1][4][4][6]=0.1e00;
    gas->SPRC[2][4][4][6]=-1.4e00;
    gas->SPRC[1][4][4][7]=0.07e00;
    gas->SPRC[2][4][4][7]=-1.5e00;
    gas->SPRC[1][4][4][8]=0.07e00;
    gas->SPRC[2][4][4][8]=-1.5e00;
    gas->SPRT[1][4][4]=1000.e00;
    gas->SPRT[2][4][4]=3000.e00;
    //
    gas->ISPRC[2][2]=1;   //H+H+M -> H2+M
    gas->ISPRK[2][2]=1;
    gas->SPRC[1][2][2][1]=0.07e00;
    gas->SPRC[2][2][2][1]=-2.e00;
    gas->SPRC[1][2][2][2]=0.11e00;
    gas->SPRC[2][2][2][2]=-2.2e00;
    gas->SPRC[1][2][2][3]=0.052e00;
    gas->SPRC[2][2][2][3]=-2.5e00;
    gas->SPRC[1][2][2][4]=0.052e00;
    gas->SPRC[2][2][2][4]=-2.5e00;
    gas->SPRC[1][2][2][5]=0.052e00;
    gas->SPRC[2][2][2][5]=-2.5e00;
    gas->SPRC[1][2][2][6]=0.052e00;
    gas->SPRC[2][2][2][6]=-2.5e00;
    gas->SPRC[1][2][2][7]=0.052e00;
    gas->SPRC[2][2][2][7]=-2.5e00;
    gas->SPRC[1][2][2][8]=0.04e00;
    gas->SPRC[2][2][2][7]=-2.5e00;
    gas->SPRT[1][2][2]=1000.e00;
    gas->SPRT[2][2][2]=3000.e00;
    //
    gas->ISPRC[2][4]=5;    //H+0+M -> OH+M
    gas->ISPRK[2][4]=1;
    gas->SPRC[1][2][4][1]=0.15e00;
    gas->SPRC[2][2][4][1]=-2.e00;
    gas->SPRC[1][2][4][2]=0.04e00;
    gas->SPRC[2][2][4][2]=-1.3e00;
    gas->SPRC[1][2][4][3]=0.04e00;
    gas->SPRC[2][2][4][3]=-1.3e00;
    gas->SPRC[1][2][4][4]=0.04e00;
    gas->SPRC[2][2][4][4]=-1.3e00;
    gas->SPRC[1][2][4][5]=0.04e00;
    gas->SPRC[2][2][4][5]=-1.3e00;
    gas->SPRC[1][2][4][6]=0.21e00;
    gas->SPRC[2][2][4][6]=-2.1e00;
    gas->SPRC[1][2][4][7]=0.18e00;
    gas->SPRC[2][2][4][7]=-2.3e00;
    gas->SPRC[1][2][4][8]=0.16e00;
    gas->SPRC[2][2][4][8]=-2.3e00;
    gas->SPRT[1][2][4]=1000.e00;
    gas->SPRT[2][2][4]=3000.e00;
    //
    gas->ISPRC[2][5]=6;    //H+OH+M -> H2O+M
    gas->ISPRK[2][5]=1;
    gas->SPRC[1][2][5][1]=0.1e00;
    gas->SPRC[2][2][5][1]=-2.0e00;
    gas->SPRC[1][2][5][2]=0.1e00;
    gas->SPRC[2][2][5][2]=-2.0e00;
    gas->SPRC[1][2][5][3]=0.0025e00;
    gas->SPRC[2][2][5][3]=-2.2e00;
    gas->SPRC[1][2][5][4]=0.0025e00;
    gas->SPRC[2][2][5][4]=-2.2e00;
    gas->SPRC[1][2][5][5]=0.0025e00;
    gas->SPRC[2][2][5][5]=-2.2e00;
    gas->SPRC[1][2][5][6]=0.0015e00;
    gas->SPRC[2][2][5][6]=-2.2e00;
    gas->SPRC[1][2][5][7]=0.0027e00;
    gas->SPRC[2][2][5][7]=-2.e00;
    gas->SPRC[1][2][5][8]=0.0025e00;
    gas->SPRC[2][2][5][8]=-2.e00;
    gas->SPRT[1][2][5]=1000.e00;
    gas->SPRT[2][2][5]=3000.e00;
    //
    gas->ISPRC[2][3]=7;   //H+O2+M -> H02+M
    gas->ISPRK[2][3]=1;
    gas->SPRC[1][2][3][1]=0.0001e00;
    gas->SPRC[2][2][3][1]=-1.7e00;
    gas->SPRC[1][2][3][2]=0.0001e00;
    gas->SPRC[2][2][3][2]=-1.7e00;
    gas->SPRC[1][2][3][3]=0.00003e00;
    gas->SPRC[2][2][3][3]=-1.5e00;
    gas->SPRC[1][2][3][4]=0.00003e00;
    gas->SPRC[2][2][3][4]=-1.7e00;
    gas->SPRC[1][2][3][5]=0.00003e00;
    gas->SPRC[2][2][3][5]=-1.7e00;
    gas->SPRC[1][2][3][6]=0.00003e00;
    gas->SPRC[2][2][3][6]=-1.7e00;
    gas->SPRC[1][2][3][7]=0.000012e00;
    gas->SPRC[2][2][3][7]=-1.7e00;
    gas->SPRC[1][2][3][8]=0.00002e00;
    gas->SPRC[2][2][3][8]=-1.7e00;
    gas->SPRT[1][2][3]=1000.e00;
    gas->SPRT[2][2][3]=3000.e00;
    //
    //set the exchange reaction data
    //  memset(gas->SPEX,0,sizeof(****gas->SPEX));//gas->SPEX=0.e00;    //all activation energies and heats of reaction are zero unless set otherwise
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->ISPEX=0;       // ISPEX is also zero unless set otherwise
    for(int i=0;i<gas->MMEX+1;i++){
        for(int j=0;j<8;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->ISPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->NSPEX=0;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->NSPEX[i][j]=0;
        }
    }
    //set the number of exchange reactions for each species pair
    gas->NSPEX[1][3]=1;
    gas->NSPEX[2][7]=3;
    gas->NSPEX[2][3]=1;
    gas->NSPEX[4][5]=1;
    gas->NSPEX[1][4]=1;
    gas->NSPEX[2][5]=1;
    gas->NSPEX[1][5]=1;
    gas->NSPEX[2][6]=1;
    gas->NSPEX[4][6]=2;
    gas->NSPEX[5][5]=2;
    gas->NSPEX[4][7]=1;
    gas->NSPEX[3][5]=1;
    //set the information on the chain reactions
    //
    //H2+O2 -> HO2+H
    gas->ISPEX[1][1][1][3]=1;
    gas->ISPEX[1][2][1][3]=3;
    gas->ISPEX[1][3][1][3]=7;
    gas->ISPEX[1][4][1][3]=2;
    gas->ISPEX[1][5][1][3]=1;
    gas->ISPEX[1][6][1][3]=1;
    gas->SPEX[6][1][1][3]=0.e00;
    gas->NEX[1][1][3]=1;
    //
    //HO2+H -> H2+02
    gas->ISPEX[1][1][2][7]=7;
    gas->ISPEX[1][2][2][7]=2;
    gas->ISPEX[1][3][2][7]=1;
    gas->ISPEX[1][4][2][7]=3;
    gas->ISPEX[1][5][2][7]=1;
    gas->ISPEX[1][6][2][7]=1;
    gas->ISPEX[1][7][2][7]=1;
    //H02 is H-O-O so that not all vibrational modes contribute to this reaction, but the numbers here are guesses//
    gas->SPEX[1][1][2][7]=20.e00;
    gas->SPEX[2][1][2][7]=0.4e00;
    gas->SPEX[4][1][2][7]=2000.e00;
    gas->SPEX[5][1][2][7]=3000.e00;
    gas->SPEX[6][1][2][7]=0.e00;
    gas->NEX[1][2][7]=2;
    //
    //O2+H -> OH+O
    gas->ISPEX[1][1][2][3]=3;
    gas->ISPEX[1][2][2][3]=2;
    gas->ISPEX[1][3][2][3]=5;
    gas->ISPEX[1][4][2][3]=4;
    gas->ISPEX[1][5][2][3]=1;
    gas->ISPEX[1][6][2][3]=1;
    gas->SPEX[6][1][2][3]=0.e00;
    gas->NEX[1][2][3]=3;
    //
    //OH+O -> O2+H
    gas->ISPEX[1][1][4][5]=5;
    gas->ISPEX[1][2][4][5]=4;
    gas->ISPEX[1][3][4][5]=3;
    gas->ISPEX[1][4][4][5]=2;
    gas->ISPEX[1][5][4][5]=1;
    gas->ISPEX[1][6][4][5]=1;
    gas->ISPEX[1][7][4][5]=1;
    gas->SPEX[1][1][4][5]=0.65e00;
    gas->SPEX[2][1][4][5]=-0.26;
    gas->SPEX[4][1][4][5]=2000.e00;
    gas->SPEX[5][1][4][5]=3000.e00;
    gas->SPEX[6][1][4][5]=0.e00;
    gas->NEX[1][4][5]=4;
    //
    //H2+O -> OH+H
    gas->ISPEX[1][1][1][4]=1;
    gas->ISPEX[1][2][1][4]=4;
    gas->ISPEX[1][3][1][4]=5;
    gas->ISPEX[1][4][1][4]=2;
    gas->ISPEX[1][5][1][4]=1;
    gas->ISPEX[1][6][1][4]=1;
    gas->SPEX[6][1][1][4]=0.e00;
    gas->NEX[1][1][4]=5;
    //
    //OH+H -> H2+O
    gas->ISPEX[1][1][2][5]=5;
    gas->ISPEX[1][2][2][5]=2;
    gas->ISPEX[1][3][2][5]=1;
    gas->ISPEX[1][4][2][5]=4;
    gas->ISPEX[1][5][2][5]=1;
    gas->ISPEX[1][6][2][5]=1;
    gas->ISPEX[1][7][2][5]=1;
    gas->SPEX[1][1][2][5]=0.5e00;
    gas->SPEX[2][1][2][5]=-0.2e00;
    gas->SPEX[4][1][2][5]=2000.e00;
    gas->SPEX[5][1][2][5]=3000.e00;
    gas->SPEX[6][1][2][5]=0.e00;
    gas->NEX[1][2][5]=6;
    //
    //H20+H -> OH+H2
    gas->ISPEX[1][1][2][6]=6;
    gas->ISPEX[1][2][2][6]=2;
    gas->ISPEX[1][3][2][6]=5;
    gas->ISPEX[1][4][2][6]=1;
    gas->ISPEX[1][5][2][6]=1;
    gas->ISPEX[1][6][2][6]=1;
    gas->SPEX[6][1][2][6]=2.0e-19;
    gas->NEX[1][2][6]=7;
    
    //OH+H2 -> H2O+H
    gas->ISPEX[1][1][1][5]=5;
    gas->ISPEX[1][2][1][5]=1;
    gas->ISPEX[1][3][1][5]=6;
    gas->ISPEX[1][4][1][5]=2;
    gas->ISPEX[1][5][1][5]=1;
    gas->ISPEX[1][6][1][5]=1;
    gas->ISPEX[1][7][1][5]=1;
    gas->SPEX[1][1][1][5]=0.5;
    gas->SPEX[2][1][1][5]=-0.2;
    gas->SPEX[4][1][1][5]=2000.e00;
    gas->SPEX[5][1][1][5]=3000.e00;
    gas->SPEX[6][1][1][5]=0.e00;
    gas->NEX[1][1][5]=8;
    //
    //H2O+O -> OH+OH
    gas->ISPEX[1][1][4][6]=6;
    gas->ISPEX[1][2][4][6]=4;
    gas->ISPEX[1][3][4][6]=5;
    gas->ISPEX[1][4][4][6]=5;
    gas->ISPEX[1][5][4][6]=1;
    gas->ISPEX[1][6][4][6]=1;
    gas->SPEX[6][1][4][6]=0.e00;
    gas->NEX[1][4][6]=9;
    //
    //0H+OH -> H2O+O
    gas->ISPEX[1][1][5][5]=5;
    gas->ISPEX[1][2][5][5]=5;
    gas->ISPEX[1][3][5][5]=6;
    gas->ISPEX[1][4][5][5]=4;
    gas->ISPEX[1][5][5][5]=1;
    gas->ISPEX[1][6][5][5]=1;
    gas->ISPEX[1][7][5][5]=1;
    gas->SPEX[1][1][5][5]=0.35;
    gas->SPEX[2][1][5][5]=-0.2 ;
    gas->SPEX[4][1][5][5]=2000.e00;
    gas->SPEX[5][1][5][5]=3000.e00;
    gas->SPEX[6][1][5][5]=0.e00;
    gas->NEX[1][5][5]=10;
    //
    //OH+OH  -> HO2+H
    //
    gas->ISPEX[2][1][5][5]=5;
    gas->ISPEX[2][2][5][5]=5;
    gas->ISPEX[2][3][5][5]=7;
    gas->ISPEX[2][4][5][5]=2;
    gas->ISPEX[2][5][5][5]=1;
    gas->ISPEX[2][6][5][5]=1;
    gas->SPEX[6][2][5][5]=0.e00;
    gas->NEX[2][5][5]=11;
    //
    //H02+H -> 0H+OH
    gas->ISPEX[2][1][2][7]=7;
    gas->ISPEX[2][2][2][7]=2;
    gas->ISPEX[2][3][2][7]=5;
    gas->ISPEX[2][4][2][7]=5;
    gas->ISPEX[2][5][2][7]=1;
    gas->ISPEX[2][6][2][7]=1;
    gas->ISPEX[2][7][2][7]=1;
    gas->SPEX[1][2][2][7]=120.e00;
    gas->SPEX[2][2][2][7]=-0.05e00;
    gas->SPEX[4][2][2][7]=2000.e00;
    gas->SPEX[5][2][2][7]=3000.e00;
    gas->SPEX[6][2][2][7]=0.e00;
    gas->NEX[2][2][7]=12;
    //
    //H2O+O -> HO2+H
    //
    gas->ISPEX[2][1][4][6]=6;
    gas->ISPEX[2][2][4][6]=4;
    gas->ISPEX[2][3][4][6]=7;
    gas->ISPEX[2][4][4][6]=2;
    gas->ISPEX[2][5][4][6]=1;
    gas->ISPEX[2][6][4][6]=1;
    gas->SPEX[6][2][4][6]=0.e00;
    gas->NEX[2][4][6]=13;
    //
    //H02+H -> H2O+O
    //
    gas->ISPEX[3][1][2][7]=7;
    gas->ISPEX[3][2][2][7]=2;
    gas->ISPEX[3][3][2][7]=6;
    gas->ISPEX[3][4][2][7]=4;
    gas->ISPEX[3][5][2][7]=1;
    gas->ISPEX[3][6][2][7]=1;
    gas->ISPEX[3][7][2][7]=1;
    gas->SPEX[1][3][2][7]=40.e00;
    gas->SPEX[2][3][2][7]=-1.e00;
    gas->SPEX[4][3][2][7]=2000.e00;
    gas->SPEX[5][3][2][7]=3000.e00;
    gas->SPEX[6][3][2][7]=0.e00;
    gas->NEX[3][2][7]=14;
    //
    //OH+O2 -> HO2+O
    //
    gas->ISPEX[1][1][3][5]=5;
    gas->ISPEX[1][2][3][5]=3;
    gas->ISPEX[1][3][3][5]=7;
    gas->ISPEX[1][4][3][5]=4;
    gas->ISPEX[1][5][3][5]=1;
    gas->ISPEX[1][6][3][5]=1;
    gas->SPEX[6][1][3][5]=0.e00;
    gas->NEX[1][3][5]=15;
    //
    //H02+0 -> OH+O2
    //
    gas->ISPEX[1][1][4][7]=7;
    gas->ISPEX[1][2][4][7]=4;
    gas->ISPEX[1][3][4][7]=5;
    gas->ISPEX[1][4][4][7]=3;
    gas->ISPEX[1][5][4][7]=1;
    gas->ISPEX[1][6][4][7]=1;
    gas->ISPEX[1][7][4][7]=1;
    gas->SPEX[1][1][4][7]=100.e00;
    gas->SPEX[2][1][4][7]=0.15e00;
    gas->SPEX[4][1][4][7]=2000.e00;
    gas->SPEX[5][1][4][7]=3000.e00;
    gas->SPEX[6][1][4][7]=0.e00;
    gas->NEX[1][4][7]=16;
    
    //
    DERIVED_GAS_DATA();
    //
    cout<<"OXYGEN_HYDROGEN data done"<<endl;
    return;
}
//***************************************************************************
//*************************END OF GAS DATABASE*******************************
//***************************************************************************
//
void DERIVED_GAS_DATA()
{
    //
    //GAS gas;
    //CALC calc;
    int I,II,J,JJ,K,L,M,MM,N,JMAX,MOLSP,MOLOF,NSTEP,IMAX;
    double A,B,BB,C,X,T,CUR,EAD,TVD,ZVT,ERD,PETD,DETD,PINT,ETD,SUMD,VAL;
    double **BFRAC,**TOT;
    double ****VRRD;
    double *****VRREX;
    //
    //VRRD(1,L,M,K) dissociation rate coefficient to species L,M for vibrational level K at 5,000 K
    //VRRD(2,L,M,K) similar for 15,000 K
    //VRREX(1,J,L,M,K)  Jth exchange rate coefficient to species L,M for vibrational level K at 1,000 K
    //VRREX(2,J,L,M,K) similar for 3,000 K
    //BFRAC(2,J) Boltzmann fraction
    //JMAX imax-1
    //T temperature
    //CUR sum of level resolved rates
    //
    
    VRRD = new double ***[3];
    for (int i = 0; i < 3; ++i)
    {
        VRRD[i] = new double **[gas->MSP+1];
        for (int j = 0; j < gas->MSP+1; ++j)
        {
            VRRD[i][j] = new double *[gas->MSP+1];
            for(int k=0; k<gas->MSP+1; ++k)
                VRRD[i][j][k]=new double [gas->MVIBL+1];
        }
    }
    
    BFRAC = new double*[gas->MVIBL+1];
    for(int i =0; i< (gas->MVIBL+1); ++i)
        BFRAC[i] = new double[3];
    
    VRREX = new double ****[3];
    for (int i = 0; i < 3; ++i)
    {
        VRREX[i] = new double ***[gas->MMEX+1];
        for (int j = 0; j < gas->MMEX+1; ++j)
        {
            VRREX[i][j] = new double **[gas->MSP+1];
            for(int k=0; k<gas->MSP+1; ++k)
            {
                VRREX[i][j][k]=new double *[gas->MSP+1];
                for(int l=0; l<gas->MSP+1; ++l)
                    VRREX[i][j][k][l]= new double[gas->MVIBL+1];
            }
        }
    }
    
    TOT = new double*[gas->MVIBL+1];
    for(int i =0; i< (gas->MVIBL+1); ++i)
        TOT[i] = new double[3];
    
    // ALLOCATE (VRRD(2,MSP,MSP,0:MVIBL),BFRAC(0:MVIBL,2),VRREX(2,MMEX,MSP,MSP,0:MVIBL),TOT(0:MVIBL,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE VIB. RES. DISS. RATES',ERROR
    // END IF
    //
    cout<<"Setting derived gas data"<<endl;
    //copy the L,M data that has been specified for L < M so that it applies also for M>L
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(L > M){
                gas->NSPEX[L][M]=gas->NSPEX[M][L];
                gas->ISPRC[L][M]=gas->ISPRC[M][L];
                gas->ISPRK[L][M]=gas->ISPRK[M][L];
                for(K=1;K<=gas->MSP;K++){
                    gas->SPRT[1][L][M]=gas->SPRT[1][M][L];
                    gas->SPRT[2][L][M]=gas->SPRT[2][M][L];
                    gas->SPRC[1][L][M][K]=gas->SPRC[1][M][L][K];
                    gas->SPRC[2][L][M][K]=gas->SPRC[2][M][L][K];
                }
                for(K=1;K<=gas->MMEX;K++){
                    gas->NEX[K][L][M]=gas->NEX[K][M][L];
                    for(J=1;J<=6;J++){
                        gas->SPEX[J][K][L][M]=gas->SPEX[J][K][M][L];
                    }
                    for(J=1;J<=7;J++){
                        gas->ISPEX[K][J][L][M]=gas->ISPEX[K][J][M][L];
                    }
                }
            }
        }
    }
    //
    if(gas->MMVM > 0){
        //set the characteristic dissociation temperatures
        for(L=1;L<=gas->MSP;L++){
            if(gas->ISPV[L] > 0){
                for(K=1;K<=gas->ISPV[L];K++)
                {
                    I=gas->ISPVM[1][K][L];
                    J=gas->ISPVM[2][K][L];
                    gas->SPVM[4][K][L]=(gas->SP[6][I]+gas->SP[6][J]-gas->SP[6][L])/BOLTZ;
                    //WRITE (9,*) 'Char. Diss temp of species',L,' is',SPVM(4,K,L)
                    file_9<<"Char. Diss temp of species "<<L<<" is "<<gas->SPVM[4][K][L]<<endl;
                }
            }
        }
    }
    //
    if(gas->MMEX > 0){
        //set the heats of reaction of the exchange and chain reactions
        for(L=1;L<=gas->MSP;L++){
            for(M=1;M<=gas->MSP;M++){
                for(J=1;J<=gas->MMEX;J++){
                    if((gas->ISPEX[J][3][L][M]> 0) && (gas->ISPEX[J][4][L][M]>0) && (gas->ISPEX[J][1][L][M]>0) && (gas->ISPEX[J][2][L][M]>0)){
                        gas->SPEX[3][J][L][M]=gas->SP[6][gas->ISPEX[J][1][L][M]]+gas->SP[6][gas->ISPEX[J][2][L][M]]-gas->SP[6][gas->ISPEX[J][3][L][M]]-gas->SP[6][gas->ISPEX[J][4][L][M]];
                        // WRITE (9,*) 'Reaction',NEX(J,L,M),' heat of reaction',SPEX(3,J,L,M)
                        file_9<<"Reaction "<<gas->NEX[J][L][M]<<" heat of reaction"<<gas->SPEX[3][J][L][M]<<endl;
                    }
                }
            }
        }
    }
    //
    if(gas->MELE > 1){
        //set the electronic cross-section ratios to a mean electronic relaxation collision number
        //(equipartition is not achieved unless there is a single number)
        for(L=1;L<=gas->MSP;L++){
            A=0.e00;
            for(K=1;K<=gas->NELL[L];K++){
                A=A+gas->QELC[3][K][L];
            }
            gas->QELC[3][1][L]=A/double(gas->NELL[L]);
        }
    }
    //
    //set the cumulative distributions of the post-recombination vibrational distributions for establishment of detailed balance
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(gas->ISPRC[L][M] > 0){
                N=gas->ISPRC[L][M];   //recombined species
                K=gas->ISPRK[L][M];   //relevant vibrational mode
                //WRITE (9,*) 'SPECIES',L,M,' RECOMBINE TO',N
                file_9<<"SPECIES "<<L<<" "<<M<<" RECOMBINE TO"<<N<<endl;
                JMAX=gas->SPVM[4][K][N]/gas->SPVM[1][K][N];
                if(JMAX > gas->MVIBL){
                    cout<<" The variable MVIBL="<<gas->MVIBL<<" in the gas database must be increased to"<<JMAX<<endl;
                    cout<<"Enter 0 ENTER to stop";
                    cin>> A;
                    return ;
                }
                A=2.5e00-gas->SP[3][N];
                for(I=1;I<=2;I++){
                    if(I == 1) T=gas->SPRT[1][L][M];
                    if(I == 2) T=gas->SPRT[2][L][M];
                    //WRITE (9,*) 'TEMPERATURE',T
                    file_9<<"TEMPERATURE "<<T<<endl;
                    CUR=0.e00;
                    for(J=0;J<=JMAX;J++){
                        X=double(JMAX+1-J)*gas->SPVM[1][K][N]/T;
                        CQAX(A,X,B);
                        VRRD[I][L][M][J]=B*exp(-double(J)*gas->SPVM[1][K][N]/T);
                        CUR=CUR+VRRD[I][L][M][J];
                    }
                    B=0.e00;
                    for(J=0;J<=JMAX;J++){
                        B=B+VRRD[I][L][M][J]/CUR;
                        gas->SPRP[I][L][M][J]=B;
                        //WRITE (9,*) 'CDF level dissoc',J,SPRP(I,L,M,J)
                        file_9<< "CDF level dissoc "<<J<<" "<<gas->SPRP[I][L][M][J];
                    }
                }
            }
        }
    }
    //
    //READ (*,*)  //optionally pause program to check cumulative distributions for exchange and chain reactions
    //
    //set the cumulative distributions of the post-reverse vibrational distributions for establishment of detailed balance
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(gas->NSPEX[L][M] > 0){
                for(K=1;K<=gas->NSPEX[L][M];K++){
                    if(gas->SPEX[3][K][L][M] > 0.e00){         //exothermic (reverse) exchange reaction
                        //L,M are the species in the reverse reaction, E_a of forward reaction is SPEX(3,K,L,M)
                        //WRITE (9,*) 'SPECIES',L,M,' REVERSE REACTION'
                        file_9<<"SPECIES "<<L<<" "<<M<<" REVERSE REACTION"<<endl;
                        MOLSP=gas->ISPEX[K][3][L][M];  //molecuke that splits in the forward reaction
                        MOLOF=gas->ISPEX[K][4][L][M];
                        JMAX=(gas->SPEX[3][K][L][M]+gas->SPEX[6][K][MOLSP][MOLOF])/(BOLTZ*gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP])+15;   //should always be less than the JMAX set by dissociation reactions
                        for(I=1;I<=2;I++){
                            if(I == 1) T=gas->SPEX[4][K][L][M];
                            if(I == 2) T=gas->SPEX[5][K][L][M];
                            for(J=0;J<=JMAX;J++){
                                EAD=(gas->SPEX[3][K][L][M]+gas->SPEX[6][K][MOLSP][MOLOF])/(BOLTZ*T);
                                TVD=gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T;
                                ZVT=1.e00/(1.e00-exp(-TVD));
                                C=ZVT/(tgamma(2.5e00-gas->SP[3][MOLSP])*exp(-EAD));  //coefficient of integral
                                ERD=EAD-double(J)*TVD;
                                if(ERD < 0.e00) ERD=0.e00;
                                PETD=ERD;
                                DETD=0.01e00;
                                PINT=0.e00;  //progressive value of integral
                                NSTEP=0;
                                A=1.e00;
                                while(A > 1.e-10){
                                    NSTEP=NSTEP+1;
                                    ETD=PETD+0.5e00*DETD;
                                    SUMD=0.e00;  //normalizing sum in the denominator
                                    IMAX=ETD/TVD+J;
                                    for(II=0;II<=IMAX;II++){
                                        SUMD=SUMD+pow((1.e00-double(II)*TVD/(ETD+double(J)*TVD)),(1.5e00-gas->SP[3][MOLSP]));
                                    }
                                    VAL=(pow((ETD*(1.e00-EAD/(ETD+double(J)*TVD))),(1.5e00-gas->SP[3][MOLSP]))/SUMD)*exp(-ETD);
                                    PINT=PINT+VAL*DETD;
                                    A=VAL/PINT;
                                    PETD=ETD+0.5e00*DETD;
                                }
                                VRREX[I][K][L][M][J]=C*PINT;
                                //              WRITE (*,*) 'Level ratio exch',I,J,VRREX(I,K,L,M,J)
                            }
                        }
                        //
                        //memset(TOT,0.e00,sizeof(**TOT));//TOT=0.e00;
                        for(int i=0;i<gas->MVIBL+1;i++){
                            for(int j=0;j<gas->MVIBL+1;j++){
                                TOT[i][j]=0;
                            }
                        }
                        for(I=1;I<=2;I++){
                            if(I == 1) T=gas->SPEX[4][K][L][M];
                            if(I == 2) T=gas->SPEX[5][K][L][M];
                            for(J=0;J<=JMAX;J++){
                                TVD=gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T;
                                ZVT=1.e00/(1.e00-exp(-TVD));
                                BFRAC[J][I]=exp(-J*gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T)/ZVT;    //Boltzmann fraction
                                VRREX[I][K][L][M][J]=VRREX[I][K][L][M][J]*BFRAC[J][I];
                                //              WRITE (*,*) 'Contribution',I,J,VRREX(I,K,L,M,J)
                                for(MM=0;MM<=J;MM++)
                                    TOT[J][I]=TOT[J][I]+VRREX[I][K][L][M][MM];
                            }
                        }
                        //
                        for(I=1;I<=2;I++){
                            for(J=0;J<=JMAX;J++){
                                gas->SPREX[I][K][L][M][J]=TOT[J][I];
                                if(J == JMAX) gas->SPREX[I][K][L][M][J]=1.e00;
                                //WRITE (9,*) 'Cumulative',I,J,SPREX(I,K,L,M,J)
                                file_9<<"Cumulative "<<I<<" "<<J<<" "<<gas->SPREX[I][K][L][M][J];
                            }
                        }
                    }
                }
                gas->NSLEV=0;
                //memset(gas->SLER,0.e00,sizeof(*gas->SLER));//gas->SLER=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    gas->SLER[i]=0.e00;
            }
        }
    }
    //
    //READ (*,*)  //optionally pause program to check cumulative distributions for exchange abd chain reactions
    return;
}

void READ_DATA()
{
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    fstream file_3;
    fstream file_4;
    
    int NVERD,MVERD,N,K;
    if(calc->ICLASS==0)
    {
        cout<<"Reading the data file DS0D.DAT"<<endl;
        file_4.open("DS0D.DAT", ios::in);
        file_3.open("DS0D.TXT", ios::out);
        file_3<<"Data summary for program DSMC"<<endl;
        
        // OPEN (4,FILE='DS0D.DAT')
        // OPEN (3,FILE='DS0D.TXT')
        // WRITE (3,*) 'Data summary for program DSMC'
    }
    if(calc->ICLASS==1)
    {
        cout<<"Reading the data file DS1D.DAT"<<endl;
        file_4.open("DS1D.DAT", ios::in);
        file_3.open("DS1D.TXT", ios::out );
        file_3<<"Data summary for program DSMC"<<endl;
        // OPEN (4,FILE='DS1D.DAT')
        // OPEN (3,FILE='DS1D.TXT')
        // WRITE (3,*) 'Data summary for program DSMC'
    }
    //the following items are common to all classes of flow
    file_4>>NVERD;
    file_3<<"The n in version number n.m is "<<NVERD<<endl;
    file_4>>MVERD;
    file_3<<"The m in version number n.m is "<<MVERD<<endl;
    file_4>>calc->IMEG;
    file_3<<"The approximate number of megabytes for the calculation is "<<calc->IMEG<<endl;
    file_4>>gas->IGAS;
    file_3<<gas->IGAS<<endl;//gas->IGAS=1;
    // READ (4,*) NVERD
    // WRITE (3,*) 'The n in version number n.m is',NVERD
    // READ (4,*) MVERD
    // WRITE (3,*) 'The m in version number n.m is',MVERD
    // READ (4,*) IMEG //calc->IMEG
    // WRITE (3,*) 'The approximate number of megabytes for the calculation is',IMEG //calc->IMEG
    // READ (4,*) IGAS //gas->IGAS
    // WRITE (3,*) IGAS //gas->IGAS
    if(gas->IGAS==1)
    {
        file_3<<" Hard sphere gas "<<endl;
        // WRITE (3,*) 'Hard sphere gas'
        HARD_SPHERE();
    }
    if(gas->IGAS==2)
    {
        file_3<<"Argon "<<endl;
        // WRITE (3,*) 'Argon'
        ARGON();
    }
    if(gas->IGAS==3)
    {
        file_3<<"Ideal nitrogen"<<endl;
        // WRITE (3,*) 'Ideal nitrogen'
        IDEAL_NITROGEN();
    }
    if(gas->IGAS==4)
    {
        file_3<<"Real oxygen "<<endl;
        // WRITE (3,*) 'Real oxygen'
        REAL_OXYGEN();
    }
    if(gas->IGAS==5)
    {
        file_3<<"Ideal air "<<endl;
        // TE (3,*) 'Ideal air'
        IDEAL_AIR();
    }
    if(gas->IGAS==6)
    {
        file_3<<"Real air @ 7.5 km/s "<<endl;
        // RITE (3,*) 'Real air @ 7.5 km/s'
        REAL_AIR();
    }
    if(gas->IGAS==7)
    {
        file_3<<"Helium-argon-xenon mixture "<<endl;
        // WRITE (3,*) 'Helium-argon-xenon mixture'
        HELIUM_ARGON_XENON();
    }
    if(gas->IGAS==8)
    {
        file_3<<"Oxygen-hydrogen "<<endl;
        // WRRITE (3,*) 'Oxygen-hydrogen'
        OXYGEN_HYDROGEN();
    }
    file_3<<"The gas properties are:- "<<endl;
    file_4>>gas->FND[1];
    file_3<<"The stream number density is "<<gas->FND[1]<<endl;
    file_4>>gas->FTMP[1];
    file_3<<"The stream temperature is "<<gas->FTMP[1]<<endl;
    // WRITE (3,*) 'The gas properties are:-'
    // READ (4,*) FND(1) //gas->FND[1]
    // WRITE (3,*) '    The stream number density is',FND(1) ////gas->FND[1]
    // READ (4,*) FTMP(1) //gas->FTMP[1]
    // WRITE (3,*) '    The stream temperature is',FTMP(1) //gas->FTMP[1]
    if(gas->MMVM>0)
    {
        file_4>>gas->FVTMP[1];
        file_3<<"The stream vibrational and electronic temperature is "<<gas->FVTMP[1]<<endl;
        // READ (4,*) FVTMP(1) //gas->FVTMP;
        // WRITE (3,*) '    The stream vibrational and electronic temperature is',FVTMP(1) //gas->FVTMP[1]
    }
    if(calc->ICLASS==1)
    {
        file_4>>gas->VFX[1];
        file_3<<"The stream velocity in the x direction is "<<gas->VFX[1]<<endl;
        file_4>>gas->VFY[1];
        file_3<<"The stream velocity in the y direction is "<<gas->VFY[1]<<endl;
        // READ (4,*) VFX(1) //gas->VFX[1]
        // WRITE (3,*) '    The stream velocity in the x direction is',VFX(1) //gas->VFX[1]
        // READ (4,*) VFY(1) ////gas->VFY[1]
        // WRITE (3,*) '    The stream velocity in the y direction is',VFY(1) ////gas->VFY[1]
    }
    if(gas->MSP>1)
    {
        for(N=1;N<=gas->MSP;N++)
        {
            file_4>>gas->FSP[N][1];
            file_3<<" The fraction of species "<<N<<" is "<<gas->FSP[N][1]<<endl;
            // READ (4,*) FSP(N,1) //gas->FSP[N][1]
            // WRITE (3,*) '    The fraction of species',N,' is',FSP(N,1) //gas->FSP[N][1]
        }
    }
    else
    {
        gas->FSP[1][1]=1.0; //simple gas
    }
    if(calc->ICLASS==0){
        //       !--a homogeneous gas case is calculated as a one-dimensional flow with a single sampling cell
        // !--set the items that are required in the DS1D.DAT specification
        geom->IFX=0;
        geom->JFX=1;
        geom->XB[1]=0.e00;
        geom->XB[2]=0.0001e00*1.e25/gas->FND[1];
        geom->ITYPE[1]=1;
        geom->ITYPE[2]=1;
        gas->VFX[1]=0.e00;
        calc->IGS=1;
        calc->ISECS=0;
        calc->IREM=0;
        calc->MOLSC=10000*calc->IMEG; //a single sampling cell
    }
    if(calc->ICLASS==1)
    {
        file_4>>geom->IFX;
        // READ (4,*) IFX //geom->IFX
        if(geom->IFX==0)
            file_3<<"Plane Flow"<<endl;
        // WRITE (3,*) 'Plane flow'
        if(geom->IFX==1)
            file_3<<"Cylindrical flow"<<endl;
        // WRITE (3,*) 'Cylindrical flow'
        if(geom->IFX==2)
            file_3<<"Spherical flow"<<endl;
        // WRITE (3,*) 'Spherical flow'
        geom->JFX=geom->IFX+1;
        file_4>>geom->XB[1];
        // READ (4,*) XB(1) //geom->XB[1]
        file_3<<"The minimum x coordinate is "<<geom->XB[1]<<endl;
        // WRITE (3,*) 'The minimum x coordinate is',XB(1) //geom->XB[1]
        file_4>>geom->ITYPE[1];
        // READ (4,*) ITYPE(1) //geom->ITYPE[1]
        if(geom->ITYPE[1]==0)
            file_3<<"The minimum x coordinate is a stream boundary"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a stream boundary'
        if(geom->ITYPE[1]==1)
            file_3<<"The minimum x coordinate is a plane of symmetry"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a plane of symmetry'
        if(geom->ITYPE[1]==2)
            file_3<<"The minimum x coordinate is a solid surface"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a solid surface'
        if(geom->ITYPE[1]==3)
            file_3<<"The minimum x coordinate is a vacuum"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a vacuum'
        if(geom->ITYPE[1]==4)
            file_3<<"The minimum x coordinate is an axis or center"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is an axis or center'
        if(geom->ITYPE[1]==2)
        {
            file_3<<"The minimum x boundary is a surface with the following properties"<<endl;
            file_4>>gas->TSURF[1];
            file_3<<"The temperature of the surface is "<<gas->TSURF[1]<<endl;
            file_4>>gas->FSPEC[1];
            file_3<<"The fraction of specular reflection is "<<gas->FSPEC[1]<<endl;
            file_4>>gas->VSURF[1];
            file_3<<"The velocity in the y direction of this surface is "<<gas->VSURF[1];
            // WRITE (3,*) 'The minimum x boundary is a surface with the following properties'
            // READ (4,*) TSURF(1) //gas->TSURF[1]
            // WRITE (3,*) '     The temperature of the surface is',TSURF(1) //gas->TSURF[1]
            // READ (4,*) FSPEC(1) //gas->FSPEC[1]
            // WRITE (3,*) '     The fraction of specular reflection is',FSPEC(1) //gas->FSPEC[1]
            // READ (4,*) VSURF(1) //gas->VSURF[1]
            // WRITE (3,*) '     The velocity in the y direction of this surface is',VSURF(1) //gas->VSURF[1]
        }
        file_4>>geom->XB[2];
        file_3<<"The maximum x coordinate is "<<geom->XB[2]<<endl;
        file_4>>geom->ITYPE[2];
        // READ (4,*) XB(2) //geom->XB[2]
        // WRITE (3,*) 'The maximum x coordinate is',XB(2)//geom->XB[2]
        // READ (4,*) ITYPE(2)//geom->ITYPE[2]
        if(geom->ITYPE[2]==0)
            file_3<<"The mmaximum  x coordinate is a stream boundary"<<endl;
        // WRITE (3,*) 'The mmaximum  x coordinate is a stream boundary'
        if(geom->ITYPE[2]==1)
            file_3<<"The maximum x coordinate is a plane of symmetry"<<endl;
        // WRITE (3,*) 'The maximum x coordinate is a plane of symmetry'
        if(geom->ITYPE[2]==2)
            file_3<<"The maximum  x coordinate is a solid surface"<<endl;
        // WRITE (3,*) 'The maximum  x coordinate is a solid surface'
        if(geom->ITYPE[2]==3)
            file_3<<"The maximum  x coordinate is a vacuum"<<endl;
        // WRITE (3,*) 'The maximum  x coordinate is a vacuum'
        calc->ICN=0;
        if(geom->ITYPE[2]==4)
        {
            file_3<<"The maximum x coordinate is a stream boundary with a fixed number of simulated molecules"<<endl;
            // WRITE (3,*) 'The maximum x coordinate is a stream boundary with a fixed number of simulated molecules'
            if(gas->MSP==1)
                calc->ICN=1;
        }
        if(geom->ITYPE[2]==2)
        {
            file_3<<"The maximum  x boundary is a surface with the following properties"<<endl;
            file_4>>gas->TSURF[1];
            file_3<<"The temperature of the surface is "<<gas->TSURF[1]<<endl;
            file_4>>gas->FSPEC[1];
            file_3<<"The fraction of specular reflection is "<<gas->FSPEC[1]<<endl;
            file_4>>gas->VSURF[1];
            file_3<<"The velocity in the y direction of this surface is "<<gas->VSURF[1]<<endl;
            // WRITE (3,*) 'The maximum  x boundary is a surface with the following properties'
            // READ (4,*) TSURF(1) //gas->TSURF[1]
            // WRITE (3,*) '     The temperature of the surface is',TSURF(1) //gas->TSURF[1]
            // READ (4,*) FSPEC(1) //gas->FSPEC[1]
            // WRITE (3,*) '     The fraction of specular reflection is',FSPEC(1) //gas->FSPEC[1]
            // READ (4,*) VSURF(1) //gas->VSURF[1]
            // WRITE (3,*) '     The velocity in the y direction of this surface is',VSURF(1) //gas->VSURF[1]
        }
        if(geom->IFX>0)
        {
            file_4>>geom->IWF;
            // READ (4,*) READ (4,*) IWF //geom->IWF
            if(geom->IWF==0)
                file_3<<"There are no radial weighting factors"<<endl;
            // WRITE (3,*) 'There are no radial weighting factors'
            if(geom->IWF==1)
                file_3<<"There are radial weighting factors"<<endl;
            // WRITE (3,*) 'There are radial weighting factors'
            if(geom->IWF==1)
            {
                file_4>>geom->WFM;
                file_3<<"The maximum value of the weighting factor is  "<<geom->WFM<<endl;
                // READ (4,*) WFM //geom->WFM
                // WRITE (3,*) 'The maximum value of the weighting factor is ',WFM //geom->WFM
                geom->WFM=(geom->WFM-1)/geom->XB[2];
            }
        }
        file_4>>calc->IGS;
        // READ (4,*) IGS //calc->IGS
        if(calc->IGS==0)
            file_3<<"The flowfield is initially a vacuum "<<endl;
        // WRITE (3,*) 'The flowfield is initially a vacuum'
        if(calc->IGS==1)
            file_3<<"The flowfield is initially the stream(s) or reference gas"<<endl;
        // WRITE (3,*) 'The flowfield is initially the stream(s) or reference gas'
        file_4>>calc->ISECS;
        // READ (4,*) ISECS //calc->ISECS
        if(calc->ISECS==0)
            file_3<<"There is no secondary stream initially at x > 0"<<endl;
        // WRITE (3,*) 'There is no secondary stream initially at x > 0'
        if(calc->ISECS==1 && geom->IFX==0)
            file_3<<"There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)"<<endl;
        // WRITE (3,*) 'There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)'
        if(calc->ISECS==1 && geom->IFX>0)
        {
            if(geom->IWF==1)
            {
                file_3<<"There cannot be a secondary stream when weighting factors are present"<<endl;
                // WRITE (3,*) 'There cannot be a secondary stream when weighting factors are present'
                return;//STOP//dout
            }
            file_3<<"There is a secondary stream"<<endl;
            // WRITE (3,*) 'There is a secondary stream'
            file_4>>geom->XS;
            // READ (4,*) XS //geom->XS
            file_3<<"The secondary stream boundary is at r= "<<geom->XS<<endl;
            // WRITE (3,*) 'The secondary stream boundary is at r=',XS //geom->XS
        }
        if(calc->ISECS==1)
        {
            file_3<<"The secondary stream (at x>0 or X>XS) properties are:-"<<endl;
            file_4>>gas->FND[2];
            file_3<<"The stream number density is "<<gas->FND[2]<<endl;
            file_4>>gas->FTMP[2];
            file_3<<"The stream temperature is "<<gas->FTMP[2]<<endl;
            // WRITE (3,*) 'The secondary stream (at x>0 or X>XS) properties are:-'
            // READ (4,*) FND(2) //gas->FND
            // WRITE (3,*) '    The stream number density is',FND(2) //gas->FND
            // READ (4,*) FTMP(2) //gas->FTMP
            // WRITE (3,*) '    The stream temperature is',FTMP(2) //gas->FTMP
            if(gas->MMVM>0)
            {
                file_4>>gas->FVTMP[2];
                file_3<<"The stream vibrational and electronic temperature is "<<gas->FVTMP[2]<<endl;
                // READ (4,*) FVTMP(2) //gas->FVTMP[2]
                // WRITE (3,*) '    The stream vibrational and electronic temperature is',FVTMP(2) //gas->FVTMP[2]
            }
            file_4>>gas->VFX[2];
            file_3<<"The stream velocity in the x direction is "<<gas->VFX[2]<<endl;
            file_4>>gas->VFY[2];
            file_3<<"The stream velocity in the y direction is "<<gas->VFY[2]<<endl;
            // READ (4,*) VFX(2) //gas->VFX
            // WRITE (3,*) '    The stream velocity in the x direction is',VFX(2) //gas->VFX
            // READ (4,*) VFY(2) //gas->VFY
            // WRITE (3,*) '    The stream velocity in the y direction is',VFY(2) //gas->VFY
            if(gas->MSP>1)
            {
                for(N=1;N<=gas->MSP;N++)
                {
                    file_4>>gas->FSP[N][2];
                    file_3<<"The fraction of species "<<N<<" is "<<gas->FSP[N][2]<<endl;
                    // READ (4,*) FSP(N,2) //gas->FSP
                    // WRITE (3,*) '    The fraction of species',N,' is',FSP(N,2) //gas->FSP
                }
            }
            else
            {
                gas->FSP[1][2]=1;
            }
        }
        if(geom->IFX==0 && geom->ITYPE[1]==0)
        {
            file_4>>calc->IREM;
            // READ (4,*) IREM //calc->IREM
            if(calc->IREM==0)
            {
                file_3<<"There is no molecule removal"<<endl;
                // WRITE (3,*) 'There is no molecule removal'
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
            else if(calc->IREM==1)
            {
                file_4>>geom->XREM;
                file_3<<"There is full removal of the entering (at XB(1)) molecules between "<<geom->XREM<<" and "<<geom->XB[2]<<endl;
                // READ (4,*) XREM //geom->XREM
                // WRITE (3,*) ' There is full removal of the entering (at XB(1)) molecules between',XREM,' and',XB(2) //geom->XREM ,geom->XB[2]
                geom->FREM=1.e00;
            }
            else if(calc->IREM==2)
            {
                file_3<<"Molecule removal is specified whenever the program is restarted"<<endl;
                // WRITE (3,*) ' Molecule removal is specified whenever the program is restarted'
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
            else
            {
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
        }
        geom->IVB=0;
        geom->VELOB=0.e00;
        if(geom->ITYPE[2]==1)
        {
            file_4>>geom->IVB;
            // READ (4,*) IVB
            if(geom->IVB==0)
                file_3<<"The outer boundary is stationary"<<endl;
            // WRITE (3,*) ' The outer boundary is stationary'
            if(geom->IVB==1)
            {
                file_3<<"The outer boundary moves with a constant speed"<<endl;
                file_4>>geom->VELOB;
                file_3<<" The speed of the outer boundary is "<<geom->VELOB<<endl;
                // WRITE (3,*) ' The outer boundary moves with a constant speed'
                // READ (4,*) VELOB //geom->VELOB
                // WRITE (3,*) ' The speed of the outer boundary is',VELOB //geom->VELOB
            }
        }
        file_4>>calc->MOLSC;
        file_3<<"The desired number of molecules in a sampling cell is "<<calc->MOLSC<<endl;
        // READ (4,*) MOLSC //calc->MOLSC
        // WRITE (3,*) 'The desired number of molecules in a sampling cell is',MOLSC ////calc->MOLSC
    }
    //set the speed of the outer boundary
    file_3.close();
    file_4.close();
    // CLOSE (3)
    // CLOSE (4)
    // set the stream at the maximum x boundary if there is no secondary stream
    if(calc->ISECS==0 && geom->ITYPE[2]==0)
    {
        gas->FND[2]=gas->FND[1];
        gas->FTMP[2]=gas->FTMP[1];
        if(gas->MMVM>0)
            gas->FVTMP[2]=gas->FVTMP[1];
        gas->VFX[2]=gas->VFX[1];
        if(gas->MSP>1)
        {
            for(N=1;N<=gas->MSP;N++)
            {
                gas->FSP[N][2]=gas->FSP[N][1];
            }
        }
        else
            gas->FSP[1][2]=1;
    }
    //dout
    //1234   CONTINUE;
    return;
}

void INITIALISE_SAMPLES()
{
    //start a new sample for all classes of flow
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //MOLECS molecs;
    
    int N;
    //
    output->NSAMP=0.0;
    output->TISAMP=calc->FTIME;
    output->NMISAMP=molecs->NM;
    //memset(output->COLLS,0.e00,sizeof(*output->COLLS));memset(output->WCOLLS,0.e00,sizeof(*output->WCOLLS));memset(output->CLSEP,0.e00,sizeof(*output->CLSEP));
   
    for(int i=0;i<geom->NCELLS+1;i++)
        output->COLLS[i]=0.e00;
    for(int i=0;i<geom->NCELLS+1;i++)
       output->WCOLLS[i]=0.e00;
    for(int i=0;i<geom->NCELLS+1;i++)
        output->CLSEP[i]=0.e00;
    //output->COLLS=0.e00 ; output->WCOLLS=0.e00 ; output->CLSEP=0.e00;
    //memset(calc->TCOL,0.0,sizeof(**calc->TCOL));//calc->TCOL=0.0;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            calc->TCOL[i][j]=0.0;
        }
    }
    //gas->TREACG=0;
    //gas->TREACL=0;
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACG[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACL[i][j]=0;
        }
    }
    //memset(output->CS,0.0,sizeof(***output->CS));memset(output->CSS,0.0,sizeof(****output->CSS));memset(output->CSSS,0.0,sizeof(**output->CSSS));
    for(int j=0;j<gas->MSP+10;j++){
        for(int k=0;k<geom->NCELLS+1;k++){
            for(int l=0;l<gas->MSP+1;l++)
                output->CS[j][k][l]=0.0;
        }
    }
    for(int i=0;i<9;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<3;l++)
                    output->CSS[i][j][k][l]=0.0;
            }
        }
    }
    for(int k=0;k<7;k++){
        for(int l=0;l<3;l++)
            output->CSSS[k][l]=0.0;
    }
    //output->CS=0.0 ; output->CSS=0.0 ; output->CSSS=0.0;
    //memset(output->VIBFRAC,0.e00,sizeof(***output->VIBFRAC));//output->VIBFRAC=0.e00;
    //memset(output->SUMVIB,0.e00,sizeof(**output->SUMVIB));//output->SUMVIB=0.e00;
    for(int j=0;j<gas->MSP+1;j++){
        for(int k=0;k<gas->MMVM+1;k++){
            for(int l=0;l<151;l++)
                output->VIBFRAC[j][k][l]=0.0;
        }
    }
    for(int k=0;k<gas->MSP+1;k++){
        for(int l=0;l<gas->MMVM+1;l++)
            output->SUMVIB[k][l]=0.0;
    }
    
}
////
//
void SET_INITIAL_STATE_1D()
{
    //set the initial state of a homogeneous or one-dimensional flow
    //
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    //
    //
    int J,L,K,KK,KN,II,III,INC,NSET,NSC;
    long long N,M;
    double A,B,AA,BB,BBB,SN,XMIN,XMAX,WFMIN,DENG,ELTI,EA,XPREV;
    double DMOM[4];
    double VB[4][3];
    double ROTE[3];
    //
    //NSET the alternative set numbers in the setting of exact initial state
    //DMOM(N) N=1,2,3 for x,y and z momentum sums of initial molecules
    //DENG the energy sum of the initial molecules
    //VB alternative sets of velocity components
    //ROTE alternative sets of rotational energy
    //EA entry area
    //INC counting increment
    //ELTI  initial electronic temperature
    //XPREV the pevious x coordinate
    //
    //memset(DMOM,0.e00,sizeof(DMOM));
    for(int i=0;i<4;i++)
        DMOM[i]=0.e00;
    DENG=0.e00;
    //set the number of molecules, divisions etc. based on stream 1
    //
    calc->NMI=10000*calc->IMEG+2;    //small changes in number for statistically independent runs
    geom->NDIV=calc->NMI/calc->MOLSC; //MOLSC molecules per division
    //WRITE (9,*) 'The number of divisions is',NDIV
    file_9<< "The number of divisions is "<<geom->NDIV<<endl;
    //
    geom->MDIV=geom->NDIV;
    geom->ILEVEL=0;
    //
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV+1,geom->JDIV);
    // ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY',ERROR
    // ENDIF
    //
    geom->DDIV=(geom->XB[2]-geom->XB[1])/double(geom->NDIV);
    geom->NCELLS=geom->NDIV;
    
    //WRITE (9,*) 'The number of sampling cells is',NCELLS
    file_9<<"The number of sampling cells is "<< geom->NCELLS<<endl;
    geom->NCIS=calc->MOLSC/calc->NMCC;
    geom->NCCELLS=geom->NCIS*geom->NDIV;
    //WRITE (9,*) 'The number of collision cells is',NCCELLS
    file_9<< "The number of collision cells is "<<geom->NCCELLS<<endl;
    //
    if(geom->IFX == 0) geom->XS=0.e00;
    //
    if(calc->ISECS == 0){
        if(geom->IFX == 0) calc->FNUM=((geom->XB[2]-geom->XB[1])*gas->FND[1])/double(calc->NMI);
        if(geom->IFX == 1) calc->FNUM=PI*(pow(geom->XB[2],2)-pow(geom->XB[1],2))*gas->FND[1]/double(calc->NMI);
        if(geom->IFX == 2) calc->FNUM=1.3333333333333333333333e00*PI*(pow(geom->XB[2],3)-pow(geom->XB[1],3))*gas->FND[1]/double(calc->NMI);
    }
    else{
        if(geom->IFX == 0) calc->FNUM=((geom->XS-geom->XB[1])*gas->FND[1]+(geom->XB[2]-geom->XS)*gas->FND[2])/double(calc->NMI);
        if(geom->IFX == 1) calc->FNUM=PI*((pow(geom->XS,2)-pow(geom->XB[1],2))*gas->FND[1]+(pow(geom->XB[2],2)-pow(geom->XS,2))*gas->FND[2])/double(calc->NMI);
        if(geom->IFX == 2) calc->FNUM=1.3333333333333333333333e00*PI*((pow(geom->XS,3)-pow(geom->XB[1],3))*gas->FND[1]+(pow(geom->XB[2],3)-pow(geom->XS,3))*gas->FND[2])/double(calc->NMI);
    }
    //
    calc->FNUM=calc->FNUM*calc->FNUMF;
    if(calc->FNUM < 1.e00) calc->FNUM=1.e00;
    //
    calc->FTIME=0.e00;
    //
    calc->TOTMOV=0.e00;
    calc->TOTCOL=0.e00;
    
    output->NDISSOC=0;
    //memset(calc->TCOL,0.e00,sizeof(**calc->TCOL));//calc->TCOL=0.e00;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            calc->TCOL[i][j]=0.e00;
        }
    }
    
    //memset(calc->TDISS,0.e00,sizeof(*calc->TDISS));//calc->TDISS=0.e00;
    //memset(calc->TRECOMB,0.e00,sizeof(*calc->TRECOMB));//calc->TRECOMB=0.e00;
    for(int i=0;i<gas->MSP+1;i++)
        calc->TDISS[i]=0.e00;
    for(int i=0;i<gas->MSP+1;i++)
        calc->TRECOMB[i]=0.e00;
    //gas->TREACG=0;
    //gas->TREACL=0;
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACG[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACL[i][j]=0;
        }
    }
    //memset(gas->TNEX,0.e00,sizeof(*gas->TNEX));//gas->TNEX=0.e00;
    for(int i=0;i<gas->MEX+1;i++)
        gas->TNEX[i]= 0.e00;
    for(N=1;N<=geom->NDIV;N++){
        geom->JDIV[0][N]=-N;
    }
    
    //
    geom->d_allocate(5,geom->NCELLS+1,geom->CELL);
    geom->i_allocate(geom->NCELLS+1,geom->ICELL);
    geom->d_allocate(6,geom->NCCELLS+1,geom->CCELL);
    geom->i_allocate(4,geom->NCCELLS+1,geom->ICCELL);
    // ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS',ERROR
    // ENDIF
    //
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1,output->WCOLLS);
    output->d_allocate(geom->NCELLS+1,output->CLSEP);
    output->d_allocate(gas->MNSR+1,output->SREAC);
    output->d_allocate(24,geom->NCELLS+1,output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1,output->VARSP);
    output->d_allocate(36+gas->MSP,3,output->VARS);
    output->d_allocate(10+gas->MSP,geom->NCELLS+1,gas->MSP+1,output->CS);
    output->d_allocate(9,3,gas->MSP+1,3,output->CSS);
    output->d_allocate(7,3,output->CSSS);
    
    // ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),SREAC(MNSR),VAR(23,NCELLS),VARSP(0:12,NCELLS,MSP),    &
    //           VARS(0:35+MSP,2),CS(0:9+MSP,NCELLS,MSP),CSS(0:8,2,MSP,2),CSSS(6,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS',ERROR
    // ENDIF
    //
    if(gas->MMVM >= 0){
        
        output->d_allocate(gas->MSP+1,gas->MMVM+1,151,output->VIBFRAC);
        output->d_allocate(gas->MSP+1,gas->MMVM+1,output->SUMVIB);
        // ALLOCATE (VIBFRAC(MSP,MMVM,0:150),SUMVIB(MSP,MMVM),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR RECOMBINATION ARRAYS',ERROR
        // ENDIF
    }
    //
    INITIALISE_SAMPLES();
    //
    //Set the initial cells
    
    for(N=1;N<=geom->NCELLS;N++){
        geom->CELL[2][N]=geom->XB[1]+double(N-1)*geom->DDIV;
        geom->CELL[3][N]=geom->CELL[2][N]+geom->DDIV;
        geom->CELL[1][N]=geom->CELL[2][N]+0.5e00*geom->DDIV;
        if(geom->IFX == 0) geom->CELL[4][N]=geom->CELL[3][N]-geom->CELL[2][N];    //calculation assumes unit cross-section
        if(geom->IFX == 1) geom->CELL[4][N]=PI*(pow(geom->CELL[3][N],2)-pow(geom->CELL[2][N],2));  //assumes unit length of full cylinder
        if(geom->IFX == 2) geom->CELL[4][N]=1.33333333333333333333e00*PI*(pow(geom->CELL[3][N],3)-pow(geom->CELL[2][N],3));    //flow is in the full sphere
        geom->ICELL[N]=geom->NCIS*(N-1);
        for(M=1;M<=geom->NCIS;M++){
            L=geom->ICELL[N]+M;
            XMIN=geom->CELL[2][N]+double(M-1)*geom->DDIV/double(geom->NCIS);
            XMAX=XMIN+geom->DDIV/double(geom->NCIS);
            if(geom->IFX == 0) geom->CCELL[1][L]=XMAX-XMIN;
            if(geom->IFX == 1) geom->CCELL[1][L]=PI*(pow(XMAX,2)-pow(XMIN,2));  //assumes unit length of full cylinder
            if(geom->IFX == 2) geom->CCELL[1][L]=1.33333333333333333333e00*PI*(pow(XMAX,3)-pow(XMIN,3));    //flow is in the full sphere
            geom->CCELL[2][L]=0.e00;
            geom->ICCELL[3][L]=N;
        }
        output->VAR[11][N]=gas->FTMP[1];
        output->VAR[8][N]=gas->FTMP[1];
    }
    //
    if(geom->IWF == 0) geom->AWF=1.e00;
    if(geom->IWF == 1){
        //FNUM must be reduced to allow for the weighting factors
        A=0.e00;
        B=0.e00;
        for(N=1;N<=geom->NCELLS;N++){
            A=A+geom->CELL[4][N];
            B=B+geom->CELL[4][N]/(1.0+geom->WFM*pow(geom->CELL[1][N],geom->IFX));
        }
        geom->AWF=A/B;
        calc->FNUM=calc->FNUM*B/A;
    }
    //
    //WRITE (9,*) 'FNUM is',FNUM
    file_9<<"FNUM is "<<calc->FNUM<<endl;
    //
    //set the information on the molecular species
    //
    A=0.e00;
    B=0.e00;
    for(L=1;L<=gas->MSP;L++){
        A=A+gas->SP[5][L]*gas->FSP[L][1];
        B=B+(3.0+gas->ISPR[1][L])*gas->FSP[L][1];
        gas->VMP[L][1]=sqrt(2.e00*BOLTZ*gas->FTMP[1]/gas->SP[5][L]);
        if((geom->ITYPE[2]== 0) || (calc->ISECS == 1)) gas->VMP[L][2]=sqrt(2.e00*BOLTZ*gas->FTMP[2]/gas->SP[5][L]);
        calc->VNMAX[L]=3.0*gas->VMP[L][1];
        if(L == 1)
            gas->VMPM=gas->VMP[L][1];
        else
            if(gas->VMP[L][1] > gas->VMPM) gas->VMPM=gas->VMP[L][1];
    }
    //WRITE (9,*) 'VMPM =',VMPM
    file_9<< "VMPM = "<<gas->VMPM<<endl;
    gas->FDEN=A*gas->FND[1];
    gas->FPR=gas->FND[1]*BOLTZ*gas->FTMP[1];
    gas->FMA=gas->VFX[1]/sqrt((B/(B+2.e00))*BOLTZ*gas->FTMP[1]/A);
    //set the molecular properties for collisions between unlike molecles
    //to the average of the molecules
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            gas->SPM[4][L][M]=0.5e00*(gas->SP[1][L]+gas->SP[1][M]);
            gas->SPM[3][L][M]=0.5e00*(gas->SP[3][L]+gas->SP[3][M]);
            gas->SPM[5][L][M]=0.5e00*(gas->SP[2][L]+gas->SP[2][M]);
            gas->SPM[1][L][M]=gas->SP[5][L]*(gas->SP[5][M]/(gas->SP[5][L]+gas->SP[5][M]));
            gas->SPM[2][L][M]=0.25e00*PI*pow((gas->SP[1][L]+gas->SP[1][M]),2);
            AA=2.5e00-gas->SPM[3][L][M];
            A=tgamma(AA);
            gas->SPM[6][L][M]=1.e00/A;
            gas->SPM[8][L][M]=0.5e00*(gas->SP[4][L]+gas->SP[4][M]);
            if((gas->ISPR[1][L] > 0) && (gas->ISPR[1][M] > 0))
                gas->SPM[7][L][M]=(gas->SPR[1][L]+gas->SPR[1][M])*0.5e00;
            if((gas->ISPR[1][L] > 0) && (gas->ISPR[1][M] == 0))
                gas->SPM[7][L][M]=gas->SPR[1][L];
            if((gas->ISPR[1][M] > 0) && (gas->ISPR[1][L] == 0))
                gas->SPM[7][L][M]=gas->SPR[1][M];
        }
    }
    if(gas->MSP == 1){   //set unscripted variables for the simple gas case
        gas->RMAS=gas->SPM[1][1][1];
        gas->CXSS=gas->SPM[2][1][1];
        gas->RGFS=gas->SPM[6][1][1];
    }
    //
    for(L=1;L<=gas->MSP;L++){
        gas->CR[L]=0.e00;
        for(M=1;M<=gas->MSP;M++){   //set the equilibrium collision rates
            gas->CR[L]=gas->CR[L]+2.e00*SPI*pow(gas->SPM[4][L][M],2)*gas->FND[1]*gas->FSP[M][1]*pow((gas->FTMP[1]/gas->SPM[5][L][M]),(1.0-gas->SPM[3][L][M]))*sqrt(2.0*BOLTZ*gas->SPM[5][L][M]/gas->SPM[1][L][M]);
        }
    }
    A=0.e00;
    for(L=1;L<=gas->MSP;L++)
        A=A+gas->FSP[L][1]*gas->CR[L];
    gas->CTM=1.e00/A;
    //WRITE (9,*) 'Collision time in the stream is',CTM
    file_9<< "Collision time in the stream is "<<gas->CTM;
    //
    for(L=1;L<=gas->MSP;L++){
        gas->FP[L]=0.e00;
        for(M=1;M<=gas->MSP;M++){
            gas->FP[L]=gas->FP[L]+PI*pow(gas->SPM[4][L][M],2)*gas->FND[1]*gas->FSP[M][1]*pow((gas->FTMP[1]/gas->SPM[5][L][M]),(1.0-gas->SPM[3][L][M]))*sqrt(1.e00+gas->SP[5][L]/gas->SP[5][M]);
        }
        gas->FP[L]=1.e00/gas->FP[L];
    }
    gas->FPM=0.e00;
    for(L=1;L<=gas->MSP;L++)
        gas->FPM=gas->FPM+gas->FSP[L][1]*gas->FP[L];
    //WRITE (9,*) 'Mean free path in the stream is',FPM
    file_9<<"Mean free path in the stream is "<<gas->FPM<<endl;
    //
    calc->TNORM=gas->CTM;
    if(calc->ICLASS == 1) calc->TNORM= (geom->XB[2]-geom->XB[1])/gas->VMPM;     //there may be alternative definitions
    //
    //set the initial time step
    calc->DTM=gas->CTM*calc->CPDTM;
    //
    if(fabs(gas->VFX[1]) > 1.e-6)
        A=(0.5e00*geom->DDIV/gas->VFX[1])*calc->TPDTM;
    else
        A=0.5e00*geom->DDIV/gas->VMPM;
    
    if(geom->IVB == 1){
        B=0.25e00*geom->DDIV/(fabs(geom->VELOB)+gas->VMPM);
        if(B < A) A=B;
    }
    if(calc->DTM > A) calc->DTM=A;
    //
    calc->DTM=0.1e00*calc->DTM;   //OPTIONAL MANUAL ADJUSTMENT that is generally used with a fixed time step (e.g for making x-t diagram)
    //
    calc->DTSAMP=calc->SAMPRAT*calc->DTM;
    calc->DTOUT=calc->OUTRAT*calc->DTSAMP;
    calc->TSAMP=calc->DTSAMP;
    calc->TOUT=calc->DTOUT;
    calc->ENTMASS=0.0;
    //
    //WRITE (9,*) 'The initial value of the overall time step is',DTM
    file_9<< "The initial value of the overall time step is "<<calc->DTM<<endl;
    //
    //initialise cell quantities associated with collisions
    //
    for(N=1;N<=geom->NCCELLS;N++){
        geom->CCELL[3][N]=calc->DTM/2.e00;
        geom->CCELL[4][N]=2.e00*gas->VMPM*gas->SPM[2][1][1];
        calc->RANF=((double)rand()/(double)RAND_MAX);
        // RANDOM_NUMBER(RANF)
        geom->CCELL[2][N]=calc->RANF;
        geom->CCELL[5][N]=0.e00;
    }
    //
    //set the entry quantities
    //
    for(K=1;K<=2;K++){
        if((geom->ITYPE[K] == 0) || ((K == 2) && (geom->ITYPE[K] == 4))){
            if(geom->IFX == 0) EA=1.e00;
            if(geom->IFX == 1) EA=2.e00*PI*geom->XB[K];
            if(geom->IFX == 2) EA=4.e00*PI*pow(geom->XB[K],2);
            for(L=1;L<=gas->MSP;L++){
                if(K == 1) SN=gas->VFX[1]/gas->VMP[L][1];
                if(K == 2) SN=-gas->VFX[2]/gas->VMP[L][2];
                AA=SN;
                A=1.e00+erf(AA);
                BB=exp(-pow(SN,2));
                gas->ENTR[3][L][K]=SN;
                gas->ENTR[4][L][K]=SN+sqrt(pow(SN,2)+2.e00);
                gas->ENTR[5][L][K]=0.5e00*(1.e00+SN*(2.e00*SN-gas->ENTR[4][L][K]));
                gas->ENTR[6][L][K]=3.e00*gas->VMP[L][K];
                B=BB+SPI*SN*A;
                gas->ENTR[1][L][K]=EA*gas->FND[K]*gas->FSP[L][K]*gas->VMP[L][K]*B/(calc->FNUM*2.e00*SPI);
                gas->ENTR[2][L][K]=0.e00;
            }
        }
    }
    //
    //Set the uniform stream
    //
    molecs->MNM=1.1e00*calc->NMI;
    //
    if(gas->MMVM > 0){
        molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
        molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
        molecs->d_allocate(molecs->MNM+1,molecs->PROT);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
        molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
        molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
        molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
        molecs->i_allocate(gas->MMVM+1,molecs->MNM+1,molecs->IPVIB);
        molecs->d_allocate(molecs->MNM+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),     &
        //      IPVIB(MMVM,MNM),PELE(MNM),STAT=ERROR)
    }
    
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->d_allocate(molecs->MNM+1,molecs->PROT);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR MOLECULE ARRAYS',ERROR
    // ENDIF
    //
    molecs->NM=0;
    if(calc->IGS == 1){
        cout<<"Setting the initial gas"<<endl;
        for(L=1;L<=gas->MSP;L++){
            //memset(ROTE,0.0,sizeof(ROTE));
            for(int i=0;i<3;i++)
                ROTE[i]=0.0;
            for(K=1;K<=calc->ISECS+1;K++){
                if(calc->ISECS == 0){         //no secondary stream
                    M=(double(calc->NMI)*gas->FSP[L][1]*geom->AWF);
                    XMIN=geom->XB[1];
                    XMAX=geom->XB[2];
                }
                else{
                    A=(pow(geom->XS,geom->JFX)-pow(geom->XB[1],geom->JFX))*gas->FND[1]+(pow(geom->XB[2],geom->JFX)-pow(geom->XS,geom->JFX))*gas->FND[2];
                    if(K == 1){
                        M=int(double(calc->NMI)*((pow(geom->XS,geom->JFX)-pow(geom->XB[1],geom->JFX))*gas->FND[1]/A)*gas->FSP[L][1]);
                        XMIN=geom->XB[1];
                        XMAX=geom->XS;
                    }
                    else{
                        M=int(double(calc->NMI)*((pow(geom->XB[2],geom->JFX)-pow(geom->XS,geom->JFX))*gas->FND[2]/A)*gas->FSP[L][2]);
                        XMIN=geom->XS;
                        XMAX=geom->XB[2];
                    }
                }
                if((K == 1) || (calc->ISECS == 1)){
                    III=0;
                    WFMIN=1.e00+geom->WFM*pow(geom->XB[1],geom->IFX);
                    N=1;
                    INC=1;
                    if((K== 2) && (geom->JFX > 1)){
                        BBB=(pow(XMAX,geom->JFX)-pow(XMIN,geom->JFX))/double(M);
                        XPREV=XMIN;
                    }
                    while(N < M){
                        if((geom->JFX == 1) || (K == 1))
                            A=pow((pow(XMIN,geom->JFX)+((double(N)-0.5e00)/double(M))*pow((XMAX-XMIN),geom->JFX)),(1.e00/double(geom->JFX)));
                        else{
                            A=pow((pow(XPREV,geom->JFX)+BBB),(1.e00/double(geom->JFX)));
                            XPREV=A;
                        }
                        if(geom->IWF == 0)
                            B=1.e00;
                        else{
                            B=WFMIN/(1.e00+geom->WFM*pow(A,geom->IFX));
                            if((B < 0.1e00) && (INC == 1)) INC=10;
                            if((B < 0.01e00) && (INC == 10)) INC=100;
                            if((B < 0.001e00) && (INC == 100)) INC=1000;
                            if((B < 0.0001e00) && (INC == 1000)) INC=10000;
                        }
                        calc->RANF=((double)rand()/(double)RAND_MAX);
                        // CALL RANDOM_NUMBER(RANF)
                        if(B*double(INC) > calc->RANF){
                            molecs->NM=molecs->NM+1;
                            molecs->PX[1][molecs->NM]=A;
                            molecs->IPSP[molecs->NM]=L;
                            molecs->PTIM[molecs->NM]=0.0;
                            if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[1][molecs->NM],molecs->IPCELL[molecs->NM],KK);
                            if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[1][molecs->NM],molecs->IPCELL[molecs->NM],KK,molecs->PTIM[molecs->NM]);
                            //
                            for(NSET=1;NSET<=2;NSET++){
                                for(KK=1;KK<=3;KK++){
                                    RVELC(A,B,gas->VMP[L][K]);
                                    if(A < B){
                                        if(DMOM[KK] < 0.e00)
                                            BB=B;
                                        else
                                            BB=A;
                                    }           
                                    else{
                                        if(DMOM[KK] < 0.e00)
                                            BB=A;
                                        else
                                            BB=B;
                                    }
                                    VB[KK][NSET]=BB;
                                }
                                if(gas->ISPR[1][L] > 0) SROT(L,gas->FTMP[K],ROTE[NSET]);
                            }
                            A=(0.5e00*gas->SP[5][L]*(pow(VB[1][1],2)+pow(VB[2][1],2)+pow(VB[3][1],2))+ROTE[1])/(0.5e00*BOLTZ*gas->FTMP[K])-3.e00-double(gas->ISPR[1][L]);
                            B=(0.5e00*gas->SP[5][L]*(pow(VB[1][2],2)+pow(VB[2][2],2)+pow(VB[3][2],2))+ROTE[2])/(0.5e00*BOLTZ*gas->FTMP[K])-3.e00-double(gas->ISPR[1][L]);
                            if(A < B){
                                if(DENG < 0.e00)
                                    KN=2;
                                else
                                    KN=1;
                            }
                            else{
                                if(DENG < 0.e00)
                                    KN=1;
                                else
                                    KN=2;
                            }
                            
                            for(KK=1;KK<=3;KK++){
                                molecs->PV[KK][molecs->NM]=VB[KK][KN];
                                DMOM[KK]=DMOM[KK]+VB[KK][KN];
                            }
                            molecs->PV[1][molecs->NM]=molecs->PV[1][molecs->NM]+gas->VFX[K];
                            molecs->PV[2][molecs->NM]=molecs->PV[2][molecs->NM]+gas->VFY[K];
                            if(gas->ISPR[1][L] > 0) molecs->PROT[molecs->NM]=ROTE[KN];
                            //           PROT(NM)=0.d00       //uncomment for zero initial rotational temperature (Figs. 6.1 and 6.2)
                            if(KN == 1) DENG=DENG+A;
                            if(KN == 2) DENG=DENG+B;
                            if(gas->MMVM > 0){
                                if(gas->ISPV[L] > 0){
                                    for(J=1;J<=gas->ISPV[L];J++)
                                        SVIB(L,gas->FVTMP[K],molecs->IPVIB[J][molecs->NM],J);
                                }
                                ELTI=gas->FVTMP[K];
                                if(gas->MELE > 1) SELE(L,ELTI,molecs->PELE[molecs->NM]);
                            }
                        }
                        N=N+INC;
                    }
                }
            }
        }
        //
        //WRITE (9,*) 'DMOM',DMOM
        //WRITE (9,*) 'DENG',DENG
        file_9<<"DMOM "<<DMOM<<endl;
        file_9<<"DENG "<<DENG<<endl;
    }
    //
    calc->NMI=molecs->NM;
    //
    
    //SPECIAL CODING FOR INITIATION OF COMBUSION IN H2-02 MIXTURE (FORCED IGNITION CASES in section 6.7)
    //set the vibrational levels of A% random molecules to 5
    //  A=0.05D00
    //  M=0.01D00*A*NM
    //  DO N=1,M
    //    CALL RANDOM_NUMBER(RANF)
    //    K=INT(RANF*DFLOAT(NM))+1
    //    IPVIB(1,K)=5
    //  END DO
    //
    SAMPLE_FLOW();
    OUTPUT_RESULTS();
    calc->TOUT=calc->TOUT-calc->DTOUT;
    return;
}

void MOLECULES_ENTER_1D()
{
    //molecules enter boundary at XB(1) and XB(2) and may be removed behind a wave
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //GEOM_1D geom;
    //OUTPUT output;
    //
    int K,L,M,N,NENT,II,J,JJ,KK,NTRY;
    double A,B,AA,BB,U,VN,XI,X,DX,DY,DZ;
    //
    //NENT number to enter in the time step
    //
    calc->ENTMASS=0.e00;
    //
    for(J=1;J<=2;J++){     //J is the end
        if((geom->ITYPE[J] == 0) || (geom->ITYPE[J] == 4)){
            KK=1;//the entry surface will normally use the reference gas (main stream) properties
            if((J == 2) && (calc->ISECS == 1) && (geom->XB[2] > 0.e00)) KK=2;    //KK is 1 for reference gas 2 for the secondary stream
            for(L=1;L<=gas->MSP;L++){
                A=gas->ENTR[1][L][J]*calc->DTM+gas->ENTR[2][L][J];
                if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
                    NENT=A;
                    if(J == 1) calc->EME[L]=NENT;
                    if(J == 2) {
                        A=calc->ALOSS[L]-calc->EME[L]-calc->AJM[L];
                        calc->AJM[L]=0.e00;
                        if(A < 0.e00){
                            calc->AJM[L]=-A;
                            A=0.e00;
                        }
                    }
                }
                NENT=A;
                gas->ENTR[2][L][J]=A-NENT;
                if((geom->ITYPE[2] == 4) && (J == 2) && (calc->ICN == 1)) gas->ENTR[2][L][J]=0.e00;
                if(NENT > 0){
                    for(M=1;M<=NENT;M++){
                        if(molecs->NM >= molecs->MNM){
                            cout<< "EXTEND_MNM from MOLECULES_ENTER "<<endl;
                            EXTEND_MNM(1.1);
                        }
                        molecs->NM=molecs->NM+1;
                        AA=max(0.e00,gas->ENTR[3][L][J]-3.e00);
                        BB=max(3.e00,gas->ENTR[3][L][J]+3.e00);
                        II=0;
                        while(II == 0){
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            // CALL RANDOM_NUMBER(RANF)
                            B=AA+(BB-AA)*calc->RANF;
                            U=B-gas->ENTR[3][L][J];
                            A=(2.e00*B/gas->ENTR[4][L][J])*exp(gas->ENTR[5][L][J]-U*U);
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            // CALL RANDOM_NUMBER(RANF)
                            if(A > calc->RANF) II=1;
                        }
                        molecs->PV[1][molecs->NM]=B*gas->VMP[L][KK];
                        if(J == 2) molecs->PV[1][molecs->NM]=-molecs->PV[1][molecs->NM];
                        //
                        RVELC(molecs->PV[2][molecs->NM],molecs->PV[3][molecs->NM],gas->VMP[L][KK]);
                        molecs->PV[2][molecs->NM]=molecs->PV[2][molecs->NM]+gas->VFY[J];
                        //
                        if(gas->ISPR[1][L] > 0) SROT(L,gas->FTMP[KK],molecs->PROT[molecs->NM]);
                        //
                        if(gas->MMVM > 0){
                            for(K=1;K<=gas->ISPV[L];K++)
                                SVIB(L,gas->FVTMP[KK],molecs->IPVIB[K][molecs->NM],K);
                        }
                        if(gas->MELE > 1) SELE(L,gas->FTMP[KK],molecs->PELE[molecs->NM]);
                        //
                        if(molecs->PELE[molecs->NM] > 0.e00)
                            continue;                     //DEBUG
                        //
                        molecs->IPSP[molecs->NM]=L;
                        //advance the molecule into the flow
                        calc->RANF=((double)rand()/(double)RAND_MAX);
                        // CALL RANDOM_NUMBER(RANF)
                        XI=geom->XB[J];
                        DX=calc->DTM*calc->RANF*molecs->PV[1][molecs->NM];
                        if((geom->IFX == 0) || (J == 2)) X=XI+DX;
                        if(J == 1){   //1-D move at outer boundary so molecule remains in flow
                            if(geom->IFX > 0) DY=calc->DTM*calc->RANF*molecs->PV[2][molecs->NM];
                            DZ=0.e00;
                            if(geom->IFX == 2) DZ=calc->DTM*calc->RANF*molecs->PV[3][molecs->NM];
                            if(geom->IFX > 0) AIFX(XI,DX,DY,DZ,X,molecs->PV[1][molecs->NM],molecs->PV[2][molecs->NM],molecs->PV[3][molecs->NM]);
                        }
                        molecs->PX[calc->NCLASS][molecs->NM]=X;
                        molecs->PTIM[molecs->NM]=calc->FTIME;
                        if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[calc->NCLASS][molecs->NM],molecs->IPCELL[molecs->NM],JJ);
                        if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[calc->NCLASS][molecs->NM],molecs->IPCELL[molecs->NM],JJ,molecs->PTIM[molecs->NM]);
                        molecs->IPCP[molecs->NM]=0;
                        if(geom->XREM > geom->XB[1]) calc->ENTMASS=calc->ENTMASS+gas->SP[5][L];
                    }
                }
            }
            if((geom->ITYPE[2] == 4) && (J==2) && (molecs->NM != calc->NMP) && (calc->ICN == 1))
                continue;
        }
    }
    //
    //stagnation streamline molecule removal
    if(geom->XREM > geom->XB[1]){
        calc->ENTMASS=geom->FREM*calc->ENTMASS;
        NTRY=0;
        calc->ENTMASS=calc->ENTMASS+calc->ENTREM;
        while((calc->ENTMASS > 0.e00) && (NTRY < 10000)){
            NTRY=NTRY+1;
            if(NTRY == 10000){
                cout<<"Unable to find molecule for removal"<<endl;
                calc->ENTMASS=0.e00;
                //memset(calc->VNMAX,0.e00,sizeof(*calc->VNMAX));//calc->VNMAX=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->VNMAX[i]=0.e00;
            }
            calc->RANF=((double)rand()/(double)RAND_MAX);
            // CALL RANDOM_NUMBER(RANF)
            N=molecs->NM*calc->RANF+0.9999999e00;
            if(molecs->PX[calc->NCLASS][N] > geom->XREM){
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                //IF (RANF < ((PX(N)-XREM)/(XB(2)-XREM))**2) THEN
                if(fabs(gas->VFY[1]) < 1.e-3)
                    VN=sqrt(molecs->PV[2][N]*molecs->PV[2][N]+molecs->PV[3][N]*molecs->PV[3][N]);   //AXIALLY SYMMETRIC STREAMLINE
                else
                    VN=fabs(molecs->PV[3][N]);   //TWO-DIMENSIONAL STREAMLINE
                
                L=molecs->IPSP[N];
                if(VN > calc->VNMAX[L]) calc->VNMAX[L]=VN;
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                if(calc->RANF < VN/calc->VNMAX[L]){
                    REMOVE_MOL(N);
                    calc->ENTMASS=calc->ENTMASS-gas->SP[5][L];
                    NTRY=0;
                }
                //END IF
            }
        }
        calc->ENTREM=calc->ENTMASS;
    }
}

void FIND_CELL_1D(double &X,int &NCC,int &NSC)
{
    //find the collision and sampling cells at a givem location in a 0D or 1D case
    //MOLECS molecs;
    //GEOM_1D geom;
    //CALC calc;
    
    int N,L,M,ND;
    double FRAC,DSC;
    //
    //NCC collision cell number
    //NSC sampling cell number
    //X location
    //ND division number
    //DSC the ratio of the sub-division width to the division width
    //
    ND=(X-geom->XB[1])/geom->DDIV+0.99999999999999e00;
    //
    if(geom->JDIV[0][ND] < 0){    //the division is a level 0 (no sub-division) sampling cell
        NSC=-geom->JDIV[0][ND];
        //  IF (IFX == 0)
        NCC=geom->NCIS*(X-geom->CELL[2][NSC])/(geom->CELL[3][NSC]-geom->CELL[2][NSC])+0.9999999999999999e00;
        NCC=NCC+geom->ICELL[NSC];
        //  IF (NCC == 0) NCC=1
        return;
    }
    else{  //the molecule is in a subdivided division
        FRAC=(X-geom->XB[1])/geom->DDIV-double(ND-1);
        M=ND;
        for(N=1;N<=geom->ILEVEL;N++){
            DSC=1.e00/double(N+1);
            for(L=1;L<=2;L++){  //over the two level 1 subdivisions
                if(((L == 1) && (FRAC < DSC)) || ((L == 2) || (FRAC >= DSC))){
                    M=geom->JDIV[N-1][M]+L;  //the address in JDIV
                    if(geom->JDIV[N][M] < 0){
                        NSC=-geom->JDIV[N][M];
                        NCC=geom->NCIS*(X-geom->CELL[2][NSC])/(geom->CELL[3][NSC]-geom->CELL[2][NSC])+0.999999999999999e00;
                        if(NCC == 0) NCC=1;
                        NCC=NCC+geom->ICELL[NSC];
                        return;
                    }
                }
            }
            FRAC=FRAC-DSC;
        }
    }
    file_9<<"No cell for molecule at x= "<<X<<endl;
    return ;
}

void FIND_CELL_MB_1D(double &X,int &NCC,int &NSC,double &TIM)
{
    //find the collision and sampling cells at a givem location in a 0D or 1D case
    //when there is a moving boundary
    //MOLECS molecs;
    //GEOM_1D geom;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int N,L,M,ND;
    double FRAC,DSC,A,B,C;
    //
    //NCC collision cell number
    //NSC sampling cell number
    //X location
    //ND division number
    //DSC the ratio of the sub-division width to the division width
    //TIM the time
    //
    A=(geom->XB[2]+geom->VELOB*TIM-geom->XB[1])/double(geom->NDIV);      //new DDIV
    ND=(X-geom->XB[1])/A+0.99999999999999e00;
    B=geom->XB[1]+double(ND-1)*A;
    //
    //the division is a level 0 sampling cell
    NSC=-geom->JDIV[0][ND];
    NCC=geom->NCIS*(X-B)/A+0.99999999999999e00;
    NCC=NCC+geom->ICELL[NSC];
    
    //WRITE (9,*) 'No cell for molecule at x=',X
    file_9<< "No cell for molecule at x= "<<X<<endl;
    return;
    //return ;
    //
}

void RVELC(double &U,double &V,double &VMP)
{
    //CALC calc;
    //generates two random velocity components U and V in an equilibrium
    //gas with most probable speed VMP
    //based on equations (4.4) and (4.5)
    double A,B;
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    A=sqrt(-log(calc->RANF));
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    B=DPI*calc->RANF;
    U=A*sin(B)*VMP;
    V=A*cos(B)*VMP;
    return;
}

void SROT(int &L,double &TEMP,double &ROTE)
{
    //sets a typical rotational energy ROTE of species L
    //CALC calc;
    //GAS gas;
    //
    // IMPLICIT NONE
    //
    int I;
    double A,B,ERM;
    //
    if(gas->ISPR[1][L] == 2){
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        ROTE=-log(calc->RANF)*BOLTZ*TEMP;   //equation (4.8)
    }
    else{
        A=0.5e00*gas->ISPR[1][L]-1.e00;
        I=0;
        while(I == 0){
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            ERM=calc->RANF*10.e00;
            //there is an energy cut-off at 10 kT
            B=(pow((ERM/A),A))*exp(A-ERM);      //equation (4.9)
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            if(B > calc->RANF) I=1;
        }
        ROTE=ERM*BOLTZ*TEMP;
    }
    return;
}

void SVIB(int &L,double &TEMP,int &IVIB, int &K)
{
    //sets a typical vibrational state at temp. TEMP of mode K of species L
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int N;
    //    double TEMP;
    //    int IVIB;
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    N=-log(calc->RANF)*TEMP/gas->SPVM[1][K][L];                 //eqn(4.10)
    //the state is truncated to an integer
    IVIB=N;
}

void SELE(int &L,double &TEMP, double &ELE)
{
    //sets a typical electronic energy at temp. TEMP of species L
    //employs direct sampling from the Boltzmann distribution
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,N;
    double EPF,A,B;
    double CTP[20];
    //
    //ELE electronic energy of a molecule
    //EPF electronic partition function
    //CTP(N) contribution of electronic level N to the electronic partition function
    //
    if(TEMP > 0.1){
        EPF=0.e00;
        for(N=1;N<=gas->NELL[L];N++)
            EPF=EPF+gas->QELC[1][N][L]*exp(-gas->QELC[2][N][L]/TEMP) ;
        //
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        //
        A=0.0;
        K=0; //becomes 1 when the energy is set
        N=0;  //level
        while(K == 0){
            N=N+1;
            A=A+gas->QELC[1][N][L]*exp(-gas->QELC[2][N][L]/TEMP);
            B=A/EPF;
            if(calc->RANF < B){
                K=1;
                ELE=BOLTZ*gas->QELC[2][N][L];
            }
        }
    }
    else
        ELE=0.e00;
    
    //
}

void CQAX(double &A,double &X,double &GAX)
{
    //calculates the function Q(a,x)=Gamma(a,x)/Gamma(a)
    //
    // IMPLICIT NONE
    double G,DT,T,PV,V;
    int NSTEP,N;
    //
    G=tgamma(A);
    //
    if(X < 10.e00){       //direct integration
        NSTEP=100000;
        DT=X/double(NSTEP);
        GAX=0.e00;
        PV=0.e00;
        for(N=1;N<=NSTEP;N++){
            T=double(N)*DT;
            V=exp(-T)*pow(T,(A-1));
            GAX=GAX+(PV+V)*DT/2.e00;
            PV=V;
        }
        GAX=1.e00-GAX/G;
    }
    else{      //asymptotic formula
        GAX=pow(X,(A-1.e00))*exp(-X)*(1.0+(A-1.e00)/X+(A-1.e00)*(A-2.e00)/pow(X,2)+(A-1.e00)*(A-2.e00)*(A-3.e00)/pow(X,3)+(A-1.e00)*(A-2.e00)*(A-3.e00)*(A-4.e00)/pow(X,4));
        GAX=GAX/G;
    }
    //
    return;
}
//*****************************************************************************
//
void LBS(double XMA,double XMB,double &ERM)
{
    //selects a Larsen-Borgnakke energy ratio using eqn (11.9)
    //
    double PROB,RANF;
    int I,N;
    //
    //I is an indicator
    //PROB is a probability
    //ERM ratio of rotational to collision energy
    //XMA degrees of freedom under selection-1
    //XMB remaining degrees of freedom-1
    //
    I=0;
    while(I == 0){
        // CALL RANDOM_NUMBER(RANF)
        RANF=((double)rand()/(double)RAND_MAX);
        ERM=RANF;
        if((XMA < 1.e-6) || (XMB < 1.e-6)){
            //    IF (XMA < 1.E-6.AND.XMB < 1.E-6) RETURN
            //above can never occur if one mode is translational
            if(XMA < 1.e-6) PROB=pow((1.e00-ERM),XMB);
            if(XMB < 1.e-6) PROB=pow((1.e00-ERM),XMA);
        }
        else
            PROB=pow(((XMA+XMB)*ERM/XMA),XMA)*pow(((XMA+XMB)*(1.e00-ERM)/XMB),XMB);
        
        // CALL RANDOM_NUMBER(RANF)
        RANF=((double)rand()/(double)RAND_MAX);
        if(PROB > RANF) I=1;
    }
    //
    return;
}

void REFLECT_1D(int &N,int J,double &X)
{
    //reflects molecule N and samples the surface J properties
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int L,K,M;
    double A,B,VMPS,DTR,XI,DX,DY,DZ,WF;
    //
    //VMPS most probable velocity at the surface temperature
    //DTR time remaining after molecule hits a surface
    //
    L=molecs->IPSP[N];
    WF=1.e00;
    if(geom->IWF == 1) WF=1.e00+geom->WFM*pow(X,geom->IFX);
    output->CSS[0][J][L][1]=output->CSS[0][J][L][1]+1.e00;
    output->CSS[1][J][L][1]=output->CSS[1][J][L][1]+WF;
    output->CSS[2][J][L][1]=output->CSS[2][J][L][1]+WF*molecs->PV[1][N]*gas->SP[5][L];
    output->CSS[3][J][L][1]=output->CSS[3][J][L][1]+WF*(molecs->PV[2][N]-gas->VSURF[J])*gas->SP[5][L];
    output->CSS[4][J][L][1]=output->CSS[4][J][L][1]+WF*molecs->PV[3][N]*gas->SP[5][L];
    A=pow(molecs->PV[1][N],2)+pow((molecs->PV[2][N]-gas->VSURF[J]),2)+pow(molecs->PV[3][N],2);
    output->CSS[5][J][L][1]=output->CSS[5][J][L][1]+WF*0.5e00*gas->SP[5][L]*A;
    if(gas->ISPR[1][L] > 0) output->CSS[6][J][L][1]=output->CSS[6][J][L][1]+WF*molecs->PROT[N];
    if(gas->MELE > 1) output->CSS[8][J][L][1]=output->CSS[8][J][L][1]+WF*molecs->PELE[N];
    if(gas->MMVM > 0){
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                output->CSS[7][J][L][1]=output->CSS[7][J][L][1]+WF*double(molecs->IPVIB[K][N])*BOLTZ*gas->SPVM[1][K][L];
        }
    }
    A=pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2);
    B=fabs(molecs->PV[1][N]);
    output->CSSS[1][J]=output->CSSS[1][J]+WF/B;
    output->CSSS[2][J]=output->CSSS[2][J]+WF*gas->SP[5][L]/B;
    output->CSSS[3][J]=output->CSSS[3][J]+WF*gas->SP[5][L]*molecs->PV[2][N]/B;
    //this assumes that any flow normal to the x direction is in the y direction
    output->CSSS[4][J]=output->CSSS[4][J]+WF*gas->SP[5][L]*A/B;
    if(gas->ISPR[1][L] > 0){
        output->CSSS[5][J]=output->CSSS[5][J]+WF*molecs->PROT[N]/B;
        output->CSSS[6][J]=output->CSSS[6][J]+WF*gas->ISPR[1][L]/B;
    }
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    if(gas->FSPEC[J] > calc->RANF){      //specular reflection
        X=2.e00*geom->XB[J]-X;
        molecs->PV[1][N]=-molecs->PV[1][N];
        DTR=(X-geom->XB[J])/molecs->PV[1][N];
    }
    else{                         //diffuse reflection
        VMPS=sqrt(2.e00*BOLTZ*gas->TSURF[J]/gas->SP[5][L]);
        DTR=(geom->XB[J]-molecs->PX[1][N])/molecs->PV[1][N];
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        molecs->PV[1][N]=sqrt(-log(calc->RANF))*VMPS;
        if(J == 2) molecs->PV[1][N]=-molecs->PV[1][N];
        RVELC(molecs->PV[2][N],molecs->PV[3][N],VMPS);
        molecs->PV[2][N]=molecs->PV[2][N]+gas->VSURF[J];
        if(gas->ISPR[1][L] > 0) SROT(L,gas->TSURF[J],molecs->PROT[N]);
        if(gas->MMVM > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                SVIB(L,gas->TSURF[J],molecs->IPVIB[K][N],K);
        }
        if(gas->MELE > 1) SELE(L,gas->TSURF[J],molecs->PELE[N]);
    }
    //
    output->CSS[2][J][L][2]=output->CSS[2][J][L][2]-WF*molecs->PV[1][N]*gas->SP[5][L];
    output->CSS[3][J][L][2]=output->CSS[3][J][L][2]-WF*(molecs->PV[2][N]-gas->VSURF[J])*gas->SP[5][L];
    output->CSS[4][J][L][2]=output->CSS[4][J][L][2]-WF*molecs->PV[3][N]*gas->SP[5][L];
    A=pow(molecs->PV[1][N],2)+pow((molecs->PV[2][N]-gas->VSURF[J]),2)+pow(molecs->PV[3][N],2);
    output->CSS[5][J][L][2]=output->CSS[5][J][L][2]-WF*0.5e00*gas->SP[5][L]*A;
    if(gas->ISPR[1][L] > 0) output->CSS[6][J][L][2]=output->CSS[6][J][L][2]-WF*molecs->PROT[N];
    if(gas->MELE > 1) output->CSS[8][J][L][2]=output->CSS[8][J][L][2]-WF*molecs->PELE[N];
    if(gas->MMVM > 0){
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                output->CSS[7][J][L][2]=output->CSS[7][J][L][2]-WF*double(molecs->IPVIB[K][N])*BOLTZ*gas->SPVM[1][K][L];
        }
    }
    A=pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2);
    B=fabs(molecs->PV[1][N]);
    output->CSSS[1][J]=output->CSSS[1][J]+WF/B;
    output->CSSS[2][J]=output->CSSS[2][J]+WF*gas->SP[5][L]/B;
    output->CSSS[3][J]=output->CSSS[3][J]+WF*gas->SP[5][L]*molecs->PV[2][N]/B;
    //this assumes that any flow normal to the x direction is in the y direction
    output->CSSS[4][J]=output->CSSS[4][J]+WF*gas->SP[5][L]*A/B;
    if(gas->ISPR[1][L] > 0){
        output->CSSS[5][J]=WF*output->CSSS[5][J]+molecs->PROT[N]/B;
        output->CSSS[6][J]=output->CSSS[6][J]+WF*gas->ISPR[1][L]/B;
    }
    //
    XI=geom->XB[J];
    DX=DTR*molecs->PV[1][N];
    DZ=0.e00;
    if(geom->IFX > 0) DY=DTR*molecs->PV[2][N];
    if(geom->IFX == 2) DZ=DTR*molecs->PV[3][N];
    if(geom->IFX == 0) X=XI+DX;
    if(geom->IFX > 0) AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
    //
    return;
}

void RBC(double &XI, double &DX, double &DY,double &DZ, double &R,double &S)
{
    //calculates the trajectory fraction S from a point at radius XI with
    //note that the axis is in the y direction
    //--displacements DX, DY, and DZ to a possible intersection with a
    //--surface of radius R, IFX=1, 2 for cylindrical, spherical geometry
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    double A,B,C,DD,S1,S2;
    //
    DD=DX*DX+DZ*DZ;
    if(geom->IFX == 2) DD=DD+DY*DY;
    B=XI*DX/DD;
    C=(XI*XI-R*R)/DD;
    A=B*B-C;
    if(A >= 0.e00){
        //find the least positive solution to the quadratic
        A=sqrt(A);
        S1=-B+A;
        S2=-B-A;
        if(S2 < 0.e00){
            if(S1 > 0.e00)
                S=S1;
            else
                S=2.e00;
        }
        else if(S1 < S2)
            S=S1;
        else
            S=S2;
    }
    else
        S=2.e00;
    //setting S to 2 indicates that there is no intersection
    return;
    //
}

void AIFX(double &XI,double &DX, double &DY, double &DZ, double &X, double &U, double &V, double &W)
{
    //
    //calculates the new radius and realigns the velocity components in
    //--cylindrical and spherical flows
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    //INTEGER ::
    double A,B,C,DR,VR,S;
    //
    if(geom->IFX == 1){
        DR=DZ;
        VR=W;
    }
    else if(geom->IFX == 2){
        DR=sqrt(DY*DY+DZ*DZ);
        VR=sqrt(V*V+W*W);
    }
    A=XI+DX;
    X=sqrt(A*A+DR*DR);
    S=DR/X;
    C=A/X;
    B=U;
    U=B*C+VR*S;
    W=-B*S+VR*C;
    if(geom->IFX == 2){
        VR=W;
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        A=DPI*calc->RANF;
        V=VR*sin(A);
        W=VR*cos(A);
    }
    //
    return;
    //
}

void REMOVE_MOL(int &N)
{
    //remove molecule N and replaces it by NM
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    // IMPLICIT NONE
    //
    int NC,M,K;
    
    //N the molecule number
    //M,K working integer
    //
    if(N != molecs->NM){
        for(M=1;M<=calc->NCLASS;M++)
            molecs->PX[M][N]=molecs->PX[M][molecs->NM];
        for(M=1;M<=3;M++)
            molecs->PV[M][N]=molecs->PV[M][molecs->NM];
        
        if(gas->MMRM > 0) molecs->PROT[N]=molecs->PROT[molecs->NM];
        molecs->IPCELL[N]=fabs(molecs->IPCELL[molecs->NM]);
        molecs->IPSP[N]=molecs->IPSP[molecs->NM];
        molecs->IPCP[N]=molecs->IPCP[molecs->NM];
        if(gas->MMVM > 0){
            for(M=1;M<=gas->MMVM;M++)
                molecs->IPVIB[M][N]=molecs->IPVIB[M][molecs->NM];
        }
        if(gas->MELE > 1) molecs->PELE[N]=molecs->PELE[molecs->NM];
        molecs->PTIM[N]=molecs->PTIM[molecs->NM];
    }
    molecs->NM=molecs->NM-1;
    //
    return;
    //
}

void INDEX_MOLS()
{
    //index the molecules to the collision cells
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    // IMPLICIT NONE
    //
    int N,M,K;
    //
    //N,M,K working integer
    //
    for(N=1;N<=geom->NCCELLS;N++)
        geom->ICCELL[2][N]=0;
    //
    if(molecs->NM != 0){
        for(N=1;N<=molecs->NM;N++){
            M=molecs->IPCELL[N];
            geom->ICCELL[2][M]=geom->ICCELL[2][M]+1;
        }
        //

        M=0;
        for(N=1;N<=geom->NCCELLS;N++){
            geom->ICCELL[1][N]=M;
            M=M+geom->ICCELL[2][N];
            geom->ICCELL[2][N]=0;
        }
        //

        for(N=1;N<=molecs->NM;N++){
            M=molecs->IPCELL[N];
            geom->ICCELL[2][M]=geom->ICCELL[2][M]+1;
            K=geom->ICCELL[1][M]+geom->ICCELL[2][M];
            molecs->ICREF[K]=N;
        }
        //cin.get();
        //
    }
    return;
}

void SAMPLE_FLOW()
{
    //sample the flow properties
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int NC,NCC,LS,N,M,K,L,I,KV;
    double A,TE,TT,WF;
    //
    //NC the sampling cell number
    //NCC the collision cell number
    //LS the species code
    //N,M,K working integers
    //TE total translational energy
    //
    output->NSAMP=output->NSAMP+1;
    cout<<"Sample \t"<<output->NSAMP<<endl<<endl;
    //WRITE (9,*) NM,'Mols. at sample',NSAMP
    file_9<<molecs->NM<<"  Mols. at sample  "<<output->NSAMP<<endl;
    //
    for(N=1;N<=molecs->NM;N++){
        
        NCC=molecs->IPCELL[N];
        NC=geom->ICCELL[3][NCC];
        WF=1.e00;
        if(geom->IWF == 1) WF=1.e00+geom->WFM*pow(molecs->PX[1][N],geom->IFX);
        if((NC > 0) && (NC <= geom->NCELLS)){
            if(gas->MSP > 1)
                LS=fabs(molecs->IPSP[N]);
            else
                LS=1;
            
            output->CS[0][NC][LS]=output->CS[0][NC][LS]+1.e00;
            output->CS[1][NC][LS]=output->CS[1][NC][LS]+WF;
            for(M=1;M<=3;M++){
                output->CS[M+1][NC][LS]=output->CS[M+1][NC][LS]+WF*molecs->PV[M][N];
                output->CS[M+4][NC][LS]=output->CS[M+4][NC][LS]+WF*pow(molecs->PV[M][N],2);
            }
            if(gas->MMRM > 0) output->CS[8][NC][LS]=output->CS[8][NC][LS]+WF*molecs->PROT[N];
            if(gas->MELE > 1) output->CS[9][NC][LS]=output->CS[9][NC][LS]+WF*molecs->PELE[N];
            if(gas->MMVM > 0){
                if(gas->ISPV[LS] > 0){
                    for(K=1;K<=gas->ISPV[LS];K++)
                        output->CS[K+9][NC][LS]=output->CS[K+9][NC][LS]+WF*double(molecs->IPVIB[K][N]);
                }
            }
        }
        else{
            cout<<"Illegal sampling cell  "<<NC<<"  "<<NCC<<"  for MOL  "<<N<<"  at  "<<molecs->PX[1][N]<<endl;
            return;
        }
        
    }
    //
    if(calc->FTIME > 0.5e00*calc->DTM) calc->TSAMP=calc->TSAMP+calc->DTSAMP;
    //
    return;
}

void ADAPT_CELLS_1D()
{
    //adapt the sampling cells through the splitting of the divisions into successive levels
    //the collision cells are divisions of the sampling cells
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int M,N,L,K,KK,I,J,JJ,MSEG,NSEG,NSEG1,NSEG2,MLEVEL;
    double A,B,DDE,DCRIT;
    int *KDIV,*NC;
    int **ISD;
    double *XMIN,*XMAX,*DRAT;
    // INTEGER, ALLOCATABLE, DIMENSION(:) :: KDIV,NC
    // INTEGER, ALLOCATABLE, DIMENSION(:,:) :: ISD
    // REAL(KIND=8), ALLOCATABLE, DIMENSION(:) :: XMIN,XMAX,DRAT
    //
    //DCRIT  the number density ratio that causes a cell to be subdivided
    //KDIV(N) the number of divisions/subdivisions (cells or further subdivisions) at level N
    //DRAT(N) the contriburion to the density ratio of element N
    //NC(I) the number of sampling cells at level I
    //DDE the width of an element
    //MSEG the maximum number of segments (a segment is the size of the smallest subdivision
    //NSEG1 the (first segment-1) in the subdivision
    //NSEG2 the final segment in the subdivision
    //ISD(N,M) 0,1 for cell,subdivided for level N subdivision
    //MLEVEL The maximum desired level ILEVEL of subdivision (cellS are proportional to 2**ILEVEL)
    //
    DCRIT=1.5e00;    //may be altered
    MLEVEL=2;    //may be altered
    //
    //determine the level to which the divisions are to be subdivided
    //
    A=1.e00;
    for(N=1;N<=geom->NCELLS;N++)
        if(output->VAR[3][N]/gas->FND[1] > A) A=output->VAR[3][N]/gas->FND[1];
    
    geom->ILEVEL=0;
    while(A > DCRIT){
        geom->ILEVEL=geom->ILEVEL+1;
        A=A/2.e00;
    }
    if(geom->ILEVEL > MLEVEL) geom->ILEVEL=MLEVEL;
    //WRITE (9,*) 'ILEVEL =',ILEVEL
    file_9<<"ILEVEL = "<<geom->ILEVEL<<endl;
    NSEG=pow(2,geom->ILEVEL);
    MSEG=geom->NDIV*NSEG;
    //
    
    KDIV = new int[geom->ILEVEL+1];
    DRAT = new double[MSEG+1];
    NC = new int[geom->ILEVEL+1];
    
    ISD = new int*[geom->ILEVEL+1];
    for(int i =0; i< (geom->ILEVEL+1); ++i)
        ISD[i] = new int[MSEG+1];
    
    
    // ALLOCATE (KDIV(0:ILEVEL),DRAT(MSEG),NC(0:ILEVEL),ISD(0:ILEVEL,MSEG),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR KDIV ARRAY',ERROR
    // ENDIF
    //
    DDE=(geom->XB[2]-geom->XB[1])/double(MSEG);
    for(N=1;N<=MSEG;N++){
        A=geom->XB[1]+(double(N)-0.5e00)*DDE;
        FIND_CELL_1D(A,M,L);
        DRAT[N]=output->VAR[3][L]/(gas->FND[1]*double(NSEG));
    }
    //
    //calculate the number of subdivisions at the various levels of subdivision
    KDIV=0;
    //also the number of sampling cells at each level
    NC=0;
    //
    for(N=1;N<=geom->NDIV;N++){  //divisions
        ISD=0;
        ISD[0][1]=1;
        KDIV[0]=KDIV[0]+1;
        //  WRITE (9,*) 'DIVISION',N
        for(I=0;I<=geom->ILEVEL;I++){  //level of subdivision
            //    WRITE (9,*) 'LEVEL',I
            J=pow(2,I);  //number of possible subdivisions at this level
            JJ=NSEG/J;  //number of segments in a subdivision
            for(M=1;M<=J;M++){
                //      WRITE (9,*) 'SUBDIVISION',M
                if(ISD[I][M] == 1){
                    NSEG1=(N-1)*NSEG+(M-1)*JJ+1;
                    NSEG2=NSEG1+JJ-1;
                    A=0.e00;
                    //        WRITE (9,*) 'NSEG RANGE',NSEG1,NSEG2
                    for(L=NSEG1;L<=NSEG2;L++)
                        A=A+DRAT[L];
                    
                    //        WRITE (9,*) 'DENS CONTRIB',A
                    if(A < DCRIT){
                        NC[I]=NC[I]+1;
                        //          WRITE (9,*) 'LEVEL',I,' CELLS TO', NC(I)
                    }
                    else{
                        KDIV[I+1]=KDIV[I+1]+2;
                        //          WRITE (9,*) 'LEVEL',I+1,' SUBDIVISIONS TO',KDIV(I+1)
                        for(L=NSEG1-(N-1)*NSEG;L<=NSEG2-(N-1)*NSEG;L++)
                            ISD[I+1][L]=1;
                        
                    }
                }
            }
        }
    }
    //
    //WRITE (9,*) 'KDIV',KDIV
    file_9<<"KDIV "<<KDIV<<endl;
    //
    //WRITE (9,*) 'NC',NC
    file_9<< "NC "<<NC<<endl;
    cin.get();
    //WRITE (9,*) 'Number of divisions',NDIV
    file_9<<"Number of divisions "<<geom->NDIV<<endl;
    A=0;
    geom->NCELLS=0;
    for(N=0;N<=geom->ILEVEL;N++){
        A=A+double(NC[N])/(pow(2.e00,N));
        geom->NCELLS=geom->NCELLS+NC[N];
    }
    //WRITE (9,*) 'Total divisions from sampling cells',A
    //WRITE (9,*) 'Adapted sampling cells',NCELLS
    file_9<< "Total divisions from sampling cells "<<A<<endl;
    file_9<< "Adapted sampling cells "<<geom->NCELLS<<endl;
    geom->NCCELLS=geom->NCELLS*geom->NCIS;
    //WRITE (9,*) 'Adapted collision cells',NCCELLS
    file_9<< "Adapted collision cells "<<geom->NCCELLS<<endl;
    //
    
    for (int i = 0; i < geom->ILEVEL+1; i++) {
        cudaFree(geom->JDIV[i]); //delete [] geom->JDIV[i];
    }
    cudaFree(geom->JDIV); //delete [] geom->JDIV;  // <- because they won't exist anymore after this
    
    for (int i = 0; i < 5; i++) {
        cudaFree(geom->CELL[i]); //delete [] geom->CELL[i];
    }
    cudaFree(geom->CELL); //delete [] geom->CELL;  // <- because they won't exist anymore after this
    
    
    cudaFree(geom->ICELL); //delete[] geom->ICELL;
    
    for (int i = 0; i < 6; i++) {
        cudaFree(geom->CCELL[i]); //delete [] geom->CCELL[i];
    }
    cudaFree(geom->CCELL); //delete [] geom->CCELL;  // <- because they won't exist anymore after this
    
    for (int i = 0; i < 4; i++) {
        cudaFree(geom->ICCELL[i]); //delete [] geom->ICCELL[i];
    }
    cudaFree(geom->ICCELL); //delete [] geom->ICCELL;  // <- because they won't exist anymore after this
    
    cudaFree(output->COLLS);  //delete[] output->COLLS;
    
    cudaFree(output->WCOLLS); //delete[] output->WCOLLS;
    
    cudaFree(output->CLSEP); //delete[] output->CLSEP;
    
    for (int i = 0; i < 24; i++) {
        cudaFree(output->VAR[i]); //delete [] output->VAR[i];
    }
    cudaFree(output->VAR); //delete [] output->VAR;  // <- because they won't exist anymore after this
    
    
    for(int i = 0; i < 13; i++)
    {
        for(int j = 0; j < geom->NCELLS+1; j++)
        {
            cudaFree(output->VARSP[i][j]); //delete [] output->VARSP[i][j];
        }
        cudaFree(output->VARSP[i]); //delete [] output->VARSP[i];
    }
    cudaFree(output->VARSP); //delete [] output->VARSP;
    
    for(int i = 0; i < (10+gas->MSP); i++)
    {
        for(int j = 0; j < geom->NCELLS+1; j++)
        {
            cudaFree(output->CS[i][j]); //delete [] output->CS[i][j];
        }
        cudaFree(output->CS[i]); //delete [] output->CS[i];
    }
    cudaFree(output->CS); //delete [] output->CS;
    /*DEALLOCATE (JDIV,CELL,ICELL,CCELL,ICCELL,COLLS,WCOLLS,CLSEP,VAR,VARSP,CS,STAT=ERROR)
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE ARRAYS IN ADAPT',ERROR
     END IF*/
    //
    for(N=0;N<=geom->ILEVEL;N++)
        if(KDIV[N] > geom->MDIV) geom->MDIV=KDIV[N];
    //
    
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV, geom->JDIV);
    //    ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY IN ADAPT',ERROR
    //    ENDIF
    //
    
    geom->d_allocate(5,geom->NCELLS+1, geom->CELL);
    geom->i_allocate(geom->NCELLS+1, geom->ICELL);
    geom->d_allocate(6, geom->NCCELLS+1, geom->CCELL);
    geom->i_allocate(4, geom->NCCELLS+1,geom->ICCELL);
    
    XMIN= new double[geom->NCCELLS+1];
    XMAX = new double[geom->NCCELLS+1];
    //
    //    ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),XMIN(NCCELLS),XMAX(NCCELLS),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS IN ADAPT',ERROR
    //    ENDIF
    //
    
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1, output->WCOLLS);
    output->d_allocate(geom->NCELLS+1, output->CLSEP);
    output->d_allocate(24, geom->NCELLS+1, output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1, output->VARSP);
    output->d_allocate(10+gas->MSP+1,geom->NCELLS+1,gas->MSP+1,output->CS);
    
    
    //    ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),VAR(23,NCELLS),VARSP(0:12,NCELLS,MSP),CS(0:9+MSP,NCELLS,MSP),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS IN ADAPT',ERROR
    //    ENDIF
    //
    geom->NCCELLS=0;
    geom->NCELLS=0;
    //
    //set the JDIV arrays and the sampling cells at the various levels of subdivision
    KDIV=0;
    geom->JDIV=0;
    //
    for(N=1;N<=geom->NDIV;N++){    //divisions
        ISD=0;
        ISD[0][1]=1;
        KDIV[0]=KDIV[0]+1;
        for(I=0;I<=geom->ILEVEL;I++){  //level of subdivision
            J=pow(2,I);  //number of possible subdivisions at this level
            JJ=NSEG/J;  //number of segments in a subdivision
            for(M=1;M<=J;M++){
                if(ISD[I][M] == 1){
                    NSEG1=(N-1)*NSEG+(M-1)*JJ+1;
                    NSEG2=NSEG1+JJ-1;
                    A=0.e00;
                    for(L=NSEG1;L<=NSEG2;L++)
                        A=A+DRAT[L];
                    
                    if(A < DCRIT){
                        geom->NCELLS=geom->NCELLS+1;
                        output->VAR[11][geom->NCELLS]=gas->FTMP[1];
                        XMIN[geom->NCELLS]=geom->XB[1]+double(NSEG1-1)*DDE;
                        XMAX[geom->NCELLS]=XMIN[geom->NCELLS]+double(NSEG2-NSEG1+1)*DDE;
                        //WRITE (9,*) NCELLS,I,' XMIN,XMAX',XMIN(NCELLS),XMAX(NCELLS)
                        file_9<< geom->NCELLS<<" "<<I<<" XMIN,XMAX "<<XMIN[geom->NCELLS]<<" , "<<XMAX[geom->NCELLS]<<endl;
                        geom->JDIV[I][KDIV[I]-(J-M)]=-geom->NCELLS;
                        //          WRITE (9,*) 'JDIV(',I,',',KDIV(I)-(J-M),')=',-NCELLS
                    }
                    else{
                        geom->JDIV[I][KDIV[I]-(J-M)]=KDIV[I+1];
                        //          WRITE (9,*) 'JDIV(',I,',',KDIV(I)-(J-M),')=',KDIV(I+1)
                        KDIV[I+1]=KDIV[I+1]+2;
                        for(L=NSEG1-(N-1)*NSEG;L<=NSEG2-(N-1)*NSEG;L++)
                            ISD[I+1][L]=1;
                    }
                }
            }
        }
    }
    //
    //set the other quantities associated with the sampling cells and the collision cells
    //
    geom->NCCELLS=0;
    for(N=1;N<=geom->NCELLS;N++){
        geom->CELL[1][N]=(XMIN[N]+XMAX[N])/2.e00;
        geom->CELL[2][N]=XMIN[N];
        geom->CELL[3][N]=XMAX[N];
        if(geom->IFX == 0) geom->CELL[4][N]=XMAX[N]-XMIN[N];    //calculation assumes unit cross-section
        if(geom->IFX == 1) geom->CELL[4][N]=PI*(pow(XMAX[N],2)-pow(XMIN[N],2));
        if(geom->IFX == 2) geom->CELL[4][N]=1.33333333333333333333e00*PI*(pow(XMAX[N],3)-pow(XMIN[N],3));
        geom->ICELL[N]=geom->NCCELLS;
        for(M=1;M<=geom->NCIS;M++){
            geom->NCCELLS=geom->NCCELLS+1;
            geom->ICCELL[3][geom->NCCELLS]=N;
            geom->CCELL[1][geom->NCCELLS]=geom->CELL[4][N]/double(geom->NCIS);
            geom->CCELL[3][geom->NCCELLS]=calc->DTM/2.e00;
            geom->CCELL[4][geom->NCCELLS]=2.e00*gas->VMPM*gas->SPM[2][1][1];
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            geom->CCELL[2][geom->NCCELLS]=calc->RANF;
            geom->CCELL[5][geom->NCCELLS]=calc->FTIME;
        }
    }
    //
    //assign the molecules to the cells
    //
    for(N=1;N<=molecs->NM;N++){
        FIND_CELL_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ);
        M=molecs->IPCELL[N];
    }
    //
    //deallocate the local variables
    for (int i = 0; i < geom->ILEVEL+1; i++) {
        delete [] ISD[i];
    }
    delete [] ISD;
    delete [] NC;
    delete[] KDIV;
    delete [] XMAX;
    delete [] XMIN;
    delete [] DRAT;
    /*DEALLOCATE (KDIV,NC,ISD,XMIN,XMAX,DRAT,STAT=ERROR)
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE LOCAL ARRAYS IN ADAPT',ERROR
     END IF*/
    //
    return;
}

void EXTEND_MNM(double FAC)
{  //
    //the maximum number of molecules is increased by a specified factor
    //the existing molecules are copied TO disk storage
    //MOLECS molecs;
    //CALC calc;
    //GAS gas;
    //
    // IMPLICIT NONE
    //
    int M,N,MNMN;
    fstream file_7;
    // REAL :: FAC
    //
    //M,N working integers
    //MNMN extended value of MNM
    //FAC the factor for the extension
    MNMN=FAC*molecs->MNM;
    cout<< "Maximum number of molecules is to be extended from "<<molecs->MNM<<" to "<<MNMN<<endl;
    cout<< "( if the additional memory is available //// )"<<endl;
    
    file_7.open("EXTMOLS.SCR", ios::binary | ios::out);
    if(file_7.is_open()){
        cout<<"EXTMOLS.SCR is opened"<<endl;
    }
    else{
        cout<<"EXTMOLS.SCR not opened"<<endl;
    }
    cout<<"Start write to disk storage"<<endl;
    //OPEN (7,FILE='EXTMOLS.SCR',FORM='BINARY')
    //WRITE (*,*) 'Start write to disk storage'
    
    for(N=1;N<=molecs->MNM;N++){
        if(gas->MMVM > 0){
            file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl<<molecs->PROT[N]<<endl;
            for(M=1;M<=3;M++)
                file_7<<molecs->PV[M][N]<<endl;
            file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl;
            for(M=1;M<=gas->MMVM;M++)
                file_7<<molecs->IPVIB[M][N]<<endl;
            file_7<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),(IPVIB(M,N),M=1,MMVM),PELE(N)
        }
        else{
            if(gas->MMRM > 0){
                file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl<<molecs->PROT[N]<<endl;
                for(M=1;M<=3;M++)
                    file_7<<molecs->PV[M][N]<<endl;
                file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            else{
                file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl;
                for(M=1;M<=3;M++)
                    file_7<<molecs->PV[M][N]<<endl;
                file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            
        }
    }
    cout<<"Disk write completed"<<endl;
    // WRITE (*,*) 'Disk write completed'
    // CLOSE (7)
    file_7.close();
    if(gas->MMVM > 0){
        for(int i=0;i<calc->NCLASS+1;i++){
                cudaFree(molecs->PX[i]); //delete [] molecs->PX[i];
        }
        cudaFree(molecs->PX); //delete [] molecs->PX;

        cudaFree(molecs->PTIM); //delete [] molecs->PTIM;

        cudaFree(molecs->PROT);

        for(int i=0;i<4;i++){
            cudaFree(molecs->PV[i]); //delete [] molecs->PV[i];
        }
        cudaFree(molecs->PV); //delete [] molecs->PV;

        cudaFree(molecs->IPSP);
        cudaFree(molecs->IPCELL);
        cudaFree(molecs->ICREF);
        cudaFree(molecs->IPCP);
        cudaFree(molecs->PELE);
        for(int i=0;i<gas->MMVM;i++){
            cudaFree(molecs->IPVIB[i]); //delete [] molecs->IPVIB[i];
        }
        cudaFree(molecs->IPVIB); //delete molecs->IPVIB;
        // for(int i=0;i<calc->NCLASS+1;i++){
        //     delete [] molecs->PX[i];
        // }
        // delete [] molecs->PX;
        // delete [] molecs->PTIM;
        // delete [] molecs->PROT;
        // for(int i=0;i<4;i++){
        //     delete [] molecs->PV[i];
        // }
        // delete [] molecs->PV;
        // delete [] molecs->IPSP;
        // delete [] molecs->IPCELL;
        // delete [] molecs->ICREF;
        // delete [] molecs->IPCP;
        // delete [] molecs->PELE;
        // for(int i=0;i<gas->MMVM;i++){
        //     delete [] molecs->IPVIB[i];
        // }
        // delete molecs->IPVIB;
        //DEALLOCATE (PX,PTIM,PROT,PV,IPSP,IPCELL,ICREF,IPCP,IPVIB,PELE,STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            for(int i=0;i<calc->NCLASS+1;i++){
                cudaFree(molecs->PX[i]); //delete [] molecs->PX[i];
            }
            cudaFree(molecs->PX); //delete [] molecs->PX;

            cudaFree(molecs->PTIM); //delete [] molecs->PTIM;

            cudaFree(molecs->PROT);

            for(int i=0;i<4;i++){
                cudaFree(molecs->PV[i]); //delete [] molecs->PV[i];
            }
            cudaFree(molecs->PV); //delete [] molecs->PV;

            cudaFree(molecs->IPSP);
            cudaFree(molecs->IPCELL);
            cudaFree(molecs->ICREF);
            cudaFree(molecs->IPCP);
            cudaFree(molecs->PELE);
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;//DEALLOCATE (PX,PTIM,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
            // for(int i=0;i<calc->NCLASS+1;i++){
            //     delete [] molecs->PX[i];
            // }
            // delete [] molecs->PX;
            // delete [] molecs->PTIM;
            // delete [] molecs->PROT;
            // for(int i=0;i<4;i++){
            //     delete [] molecs->PV[i];
            // }
            // delete [] molecs->PV;
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;
            //DEALLOCATE (PX,PTIM,PROT,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
        }
        else{
            for(int i=0;i<calc->NCLASS+1;i++){
                cudaFree(molecs->PX[i]); //delete [] molecs->PX[i];
            }
            cudaFree(molecs->PX); //delete [] molecs->PX;

            cudaFree(molecs->PTIM); //delete [] molecs->PTIM;

            for(int i=0;i<4;i++){
                cudaFree(molecs->PV[i]); //delete [] molecs->PV[i];
            }
            cudaFree(molecs->PV); //delete [] molecs->PV;

            cudaFree(molecs->IPSP);
            cudaFree(molecs->IPCELL);
            cudaFree(molecs->ICREF);
            cudaFree(molecs->IPCP);
            cudaFree(molecs->PELE);
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;//DEALLOCATE (PX,PTIM,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE MOLECULES',ERROR
    // !  STOP
    // END IF
    // !
    
    if(gas->MMVM > 0){
        molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
        molecs->d_allocate(MNMN+1,molecs->PTIM);
        molecs->d_allocate(MNMN+1,molecs->PROT);
        molecs->d_allocate(4,MNMN+1,molecs->PV);
        molecs->i_allocate(MNMN+1,molecs->IPSP);
        molecs->i_allocate(MNMN+1,molecs->IPCELL);
        molecs->i_allocate(MNMN+1,molecs->ICREF);
        molecs->i_allocate(MNMN+1,molecs->IPCP);
        molecs->i_allocate(gas->MMVM+1,MNMN+1,molecs->IPVIB);
        molecs->d_allocate(MNMN+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PROT(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),IPVIB(MMVM,MNMN),PELE(MNMN),STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
            molecs->d_allocate(MNMN+1,molecs->PTIM);
            molecs->d_allocate(MNMN+1,molecs->PROT);
            molecs->d_allocate(4,MNMN+1,molecs->PV);
            molecs->i_allocate(MNMN+1,molecs->IPSP);
            molecs->i_allocate(MNMN+1,molecs->IPCELL);
            molecs->i_allocate(MNMN+1,molecs->ICREF);
            molecs->i_allocate(MNMN+1,molecs->IPCP);
            molecs->d_allocate(MNMN+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PROT(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),PELE(MNMN),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
            molecs->d_allocate(MNMN+1,molecs->PTIM);
            molecs->d_allocate(4,MNMN+1,molecs->PV);
            molecs->i_allocate(MNMN+1,molecs->IPSP);
            molecs->i_allocate(MNMN+1,molecs->IPCELL);
            molecs->i_allocate(MNMN+1,molecs->ICREF);
            molecs->i_allocate(MNMN+1,molecs->IPCP);
            molecs->d_allocate(MNMN+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),PELE(MNMN),STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SPACE FOR EXTEND_MNM',ERROR
    // !  STOP
    // END IF
    // !
    //memset(molecs->PX,0.0,sizeof(**molecs->PX)); memset(molecs->PTIM,0.0,sizeof(*molecs->PTIM)); memset(molecs->PV,0.0,sizeof(**molecs->PV)); memset(molecs->IPSP,0,sizeof(*molecs->IPSP)); memset(molecs->IPCELL,0,sizeof(*molecs->IPCELL)); memset(molecs->ICREF,0,sizeof(*molecs->ICREF)); memset(molecs->IPCP,0,sizeof(*molecs->IPCP)); memset(molecs->PELE,0,sizeof(*molecs->PELE));
    
    for(int i=0;i<calc->NCLASS+1;i++){
        for(int j=0;j<MNMN+1;j++)
            molecs->PX[i][j]=0.0;
    }
    
    for(int i=0;i<4;i++){
        for(int j=0;j<MNMN+1;j++)
            molecs->PV[i][j]=0.0;
    }
    for(int i=0;i<MNMN+1;i++){
        molecs->PTIM[i]=0.0;
        molecs->IPSP[i]=0;
        molecs->IPCELL[i]=0;
        molecs->ICREF[i]=0;
        molecs->IPCP[i]=0;
        molecs->PELE[i]=0;
    }
        
    
    if(gas->MMRM > 0) {
        for(int i=0;i<MNMN+1;i++)
            molecs->PROT[i]=0.0;
        //memset(molecs->PROT,0.0,sizeof(*molecs->PROT));
    }
    if(gas->MMVM > 0) {
        for(int i=0;i<gas->MMVM+1;i++){
            for(int j=0;j<MNMN+1;j++)
                molecs->IPVIB[i][j]=0;
        }
        //memset(molecs->IPVIB,0,sizeof(**molecs->IPVIB));
    }
    //restore the original molecules
    // OPEN (7,FILE='EXTMOLS.SCR',FORM='BINARY')
    // WRITE (*,*) 'Start read back from disk storage'
    file_7.open("EXTMOLS.SCR", ios::binary | ios::in);
    if(file_7.is_open()){
        cout<<"EXTMOLS.SCR is opened"<<endl;
    }
    else{
        cout<<"EXTMOLS.SCR not opened"<<endl;
    }
    for(N=1;N<=molecs->MNM;N++){
        if(gas->MMVM > 0){
            file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N]>>molecs->PROT[N];
            for(M=1;M<=3;M++)
                file_7>>molecs->PV[M][N];
            file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N];
            for(M=1;M<=gas->MMVM;M++)
                file_7>>molecs->IPVIB[M][N];
            file_7>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),(IPVIB(M,N),M=1,MMVM),PELE(N)
        }
        else{
            if(gas->MMRM > 0){
                file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N]>>molecs->PROT[N];
                for(M=1;M<=3;M++)
                    file_7>>molecs->PV[M][N];
                file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N]>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            else{
                file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N];
                for(M=1;M<=3;M++)
                    file_7>>molecs->PV[M][N];
                file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N]>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
        }
    }
    cout<<"Disk read completed"<<endl;
    // WRITE (*,*) 'Disk read completed'
    // CLOSE (7,STATUS='DELETE')
    file_7.close();
    //
    molecs->MNM=MNMN;
    //
    return;
}

void DISSOCIATION()
{
    //dissociate diatomic molecules that have been marked for dissociation by -ve level or -99999 for ground state
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,KK,L,N,M,LS,MS,KV,IDISS;
    double A,B,C,EA,VRR,VR,RMM,RML;
    double VRC[4],VCM[4],VRCP[4];
    //
    N=0;
    while(N < molecs->NM){
        N=N+1;
        IDISS=0;
        L=molecs->IPSP[N];
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++){
                M=molecs->IPVIB[K][N];
                if(M < 0){
                    //dissociation
                    calc->TDISS[L]=calc->TDISS[L]+1.e00;
                    IDISS=1;
                }
            }
            if(IDISS == 1){
                EA=molecs->PROT[N];    //EA is energy available for relative translational motion of atoms
                if(gas->MELE > 1) EA=EA+molecs->PELE[N];
                if(molecs->NM >= molecs->MNM) EXTEND_MNM(1.1);
                molecs->NM=molecs->NM+1;
                //set center of mass velocity as that of molecule
                VCM[1]=molecs->PV[1][N];
                VCM[2]=molecs->PV[2][N];
                VCM[3]=molecs->PV[3][N];
                molecs->PX[calc->NCLASS][molecs->NM]=molecs->PX[calc->NCLASS][N];
                molecs->IPCELL[molecs->NM]=molecs->IPCELL[N];
                LS=molecs->IPSP[N];
                gas->TREACL[1][LS]=gas->TREACL[1][LS]-1;
                molecs->IPSP[molecs->NM]=gas->ISPVM[1][1][L];
                MS=molecs->IPSP[molecs->NM];
                molecs->IPSP[N]=gas->ISPVM[2][1][L];
                LS=molecs->IPSP[N];
                gas->TREACG[1][LS]=gas->TREACG[1][LS]+1;
                gas->TREACG[1][MS]=gas->TREACG[1][MS]+1;
                molecs->PTIM[molecs->NM]=molecs->PTIM[N];
                VRR=2.e00*EA/gas->SPM[1][LS][MS];
                VR=sqrt(VRR);
                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                B=2.e00*calc->RANF-1.e00;
                A=sqrt(1.e00-B*B);
                VRCP[1]=B*VR;
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                C=2.e00*PI*calc->RANF;
                VRCP[2]=A*cos(C)*VR;
                VRCP[3]=A*sin(C)*VR;
                for(KK=1;KK<=3;KK++){
                    molecs->PV[KK][N]=VCM[KK]+RMM*VRCP[KK];
                    molecs->PV[KK][molecs->NM]=VCM[KK]-RML*VRCP[KK];
                }
                
                if((fabs(molecs->PV[1][N]) > 100000.e00) || (fabs(molecs->PV[1][molecs->NM]) > 100000.e00)) {
                    cout<< "EXCESSIVE SPEED, DISS "<< N<< " "<<molecs->PV[1][N]<<" "<<molecs->NM<<" "<<molecs->PV[1][molecs->NM]<<endl;
                   
                }
                
                
                
                //set any internal modes to the ground state
                if(gas->ISPV[LS] > 0){
                    for(KV=1;KV<=gas->ISPV[LS];KV++)
                        molecs->IPVIB[KV][N]=0;
                }
                if(gas->ISPR[1][LS] > 0) molecs->PROT[N]=0.e00;
                if(gas->MELE > 1) molecs->PELE[N]=0.e00;
                if(gas->ISPV[MS] > 0){
                    for(KV=1;KV<=gas->ISPV[MS];KV++)
                        molecs->IPVIB[KV][molecs->NM]=0;
                }
                if(gas->ISPR[1][MS] > 0) molecs->PROT[molecs->NM]=0.0;
                if(gas->MELE > 1) molecs->PELE[molecs->NM]=0.e00;
            }
        }
    }
    return;
}
//************************************************************************************
//

void ENERGY(int I,double &TOTEN)
{
    //calculate the total energy (all molecules if I=0, otherwise molecule I)
    //I>0 used for dianostic purposes only
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,L,N,II,M,IV,KV,J;
    double TOTENI,TOTELE;
    //
    TOTEN=0.0;
    TOTELE=0;
    //
    
    if(I == 0){
        for(N=1;N<=molecs->NM;N++){
            if(molecs->IPCELL[N] > 0){
                L=molecs->IPSP[N];
                TOTENI=TOTEN;
                TOTEN=TOTEN+gas->SP[6][L];
                TOTEN=TOTEN+0.5e00*gas->SP[5][L]*(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
                if(gas->ISPR[1][L] > 0) TOTEN=TOTEN+molecs->PROT[N];
                if(gas->ISPV[L] > 0){
                    for(KV=1;KV<=gas->ISPV[L];KV++){
                        J=molecs->IPVIB[KV][N];
                        //         IF (J <0) THEN
                        //           J=-J
                        //           IF (J == 99999) J=0
                        //         END IF
                        TOTEN=TOTEN+double(J)*BOLTZ*gas->SPVM[1][KV][L];
                    }
                }
            }
            if(gas->MELE > 1){
                TOTEN=TOTEN+molecs->PELE[N];
                TOTELE=TOTELE+molecs->PELE[N];
            }
            if((TOTEN-TOTENI) > 1.e-16) cout<<"MOL "<<N<<" ENERGY "<<TOTEN-TOTENI<<endl;
        }
        //
        //WRITE (9,*) 'Total Energy =',TOTEN,NM
        //WRITE (*,*) 'Total Energy =',TOTEN,NM
        file_9<<"Total Energy =  "<<setprecision(25)<<TOTEN<<"\t"<<molecs->NM<<endl;
        cout<<"Total Energy =  "<<setprecision(20)<<TOTEN<<"\t"<<molecs->NM<<endl;
        //  WRITE (*,*) 'Electronic Energy =',TOTELE
    }
    else{
        N=I;
        if(molecs->IPCELL[N] > 0){
            L=molecs->IPSP[N];
            TOTEN=TOTEN+gas->SP[6][L];
            TOTEN=TOTEN+0.5e00*gas->SP[5][L]*(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
            if(gas->ISPR[1][L] > 0) TOTEN=TOTEN+molecs->PROT[N];
            if(gas->ISPV[L] > 0){
                for(KV=1;KV<=gas->ISPV[L];KV++){
                    J=molecs->IPVIB[KV][N];
                    //         IF (J <0) THEN
                    //           J=-J
                    //           IF (J == 99999) J=0
                    //         END IF
                    TOTEN=TOTEN+double(J)*BOLTZ*gas->SPVM[1][KV][L];
                }
            }
        }
    }
    
    //
    return;   //
}



void SETXT()
{
    //generate TECPLOT files for displaying an x-t diagram of an unsteady flow
    //this employs ordered data, therefore the cells MUST NOT BE ADAPTED
    //N.B. some custom coding for particular problems
    //
    //
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //
    
    // IMPLICIT NONE
    //
    int N,M,IOUT;
    double A,C;
    double **VALINT;
    // REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:) :: VALINT
    //
    //VALINT(N,M) the interpolated values at sampling cell M boundaries and extrapolated values at boundaries
    //    N=1 distance
    //    N=2 time
    //    N=3 number density
    //    N=4 radial velocity
    //    N=5 pressure (nkT)
    //    N=6 temperature
    //    N=7 h2o fraction (Sec. 7.9 only)
    //
    //the variables in VALINT may be altered for particular problems
    //
    VALINT = new double*[7];
    for(int i =0; i< 7; ++i)
        VALINT[i] = new double[geom->NCELLS+2];
    
    // ALLOCATE (VALINT(6,NCELLS+1),STAT=ERROR)
    //
    //777 FORMAT(12G14.6)
    //24[]
    
    //Internal options
    IOUT=0;    //0 for dimensioned output, 1 for non-dimensional output
    //
    A=1.e00;   //dt/dt for selection of v velocity component in TECPLOT to draw particle paths as "streamlines"
    //
    if(calc->FTIME < 0.5e00*calc->DTM){
        //Headings and zero time record
        //        IF (ERROR /= 0) THEN
        //        WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR VALINT ARRAY',ERROR
        //        ENDIF
        calc->NLINE=1;
        file_9<< "J in tecplot file = "<<calc->NLINE*(geom->NCELLS+1)<<endl;
        //  WRITE (18,*) 'VARIABLES = "Distance","Time","n","u","p","T","H2O","A"'   //for combustion wave output(Sec. 7.9)
        
        file_18<<"VARIABLES = 'Distance','Time','n','u','p','T','A' "<<endl;
        file_18<<"ZONE I= "<<geom->NCELLS+1<<", J=  (set to number of output intervals+1), F=POINT"<<endl;
        //
        for(N=1;N<=geom->NCELLS+1;N++){
            VALINT[1][N]=geom->XB[1]+(N-1)*geom->DDIV;    //distance
            VALINT[1][N]=VALINT[1][N];         //time
            VALINT[2][N]=0.0;
            VALINT[3][N]=gas->FND[1];
            VALINT[4][N]=0;
            VALINT[5][N]=gas->FND[1]*BOLTZ*gas->FTMP[1];
            VALINT[6][N]=gas->FTMP[1];
            //   VALINT(7,N)=FSP(6,1)   //FSP(6 for combustion wave
            if((VALINT[1][N] > geom->XS) && (calc->ISECS == 1)){
                VALINT[3][N]=gas->FND[2];
                VALINT[5][N]=gas->FND[2]*BOLTZ*gas->FTMP[2];
                VALINT[6][N]=gas->FTMP[2];
                //      VALINT(7,N)=FSP(6,2)
            }
            if(IOUT == 1){
                VALINT[3][N]=1.e00;
                VALINT[5][N]=1.e00;
                VALINT[6][N]=1.e00;
            }
            for(M=1;M<=6;M++)
                file_18<<VALINT[M][N]<<"\t";//WRITE (18,777) (VALINT(M,N),M=1,6),A
            file_18<<A<<endl;
        }
    }
    else{
        calc->NLINE=calc->NLINE+1;
        cout<<"J in tecplot file = "<<calc->NLINE<<endl;
        if(geom->IVB == 0) C=geom->DDIV;
        if(geom->IVB == 1) C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/double(geom->NDIV);
        for(N=1;N<=geom->NCELLS+1;N++){
            VALINT[1][N]=geom->XB[1]+(N-1)*C;
            VALINT[2][N]=calc->FTIME;
            if((N > 1) && (N < geom->NCELLS+1)){
                VALINT[3][N]=0.5e00*(output->VAR[3][N]+output->VAR[3][N-1]);
                VALINT[4][N]=0.5e00*(output->VAR[5][N]+output->VAR[5][N-1]);
                VALINT[5][N]=0.5e00*(output->VAR[18][N]+output->VAR[18][N-1]);
                VALINT[6][N]=0.5e00*(output->VAR[11][N]+output->VAR[11][N-1]);
                //     VALINT(7,N)=0.5D00*(VARSP(1,N,6)+VARSP(1,N-1,6))   //H2O fraction for Sec 7.9
            }
        }
        for(N=3;N<=6;N++)
            VALINT[N][1]=0.5e00*(3.e00*VALINT[N][2]-VALINT[N][3]);
        
        //
        for(N=3;N<=6;N++)
            VALINT[N][geom->NCELLS+1]=0.5e00*(3.e00*VALINT[N][geom->NCELLS]-VALINT[N][geom->NCELLS-1]);
        
        //
        for(N=1;N<=geom->NCELLS+1;N++){
            if(IOUT == 1){
                VALINT[1][N]=(VALINT[1][N]-geom->XB[1])/(geom->XB[2]-geom->XB[1]);
                VALINT[2][N]=VALINT[2][N]/calc->TNORM;
                VALINT[3][N]=VALINT[3][N]/gas->FND[1];
                VALINT[4][N]=VALINT[4][N]/gas->VMPM;
                VALINT[5][N]=VALINT[5][N]/(gas->FND[1]*BOLTZ*gas->FTMP[1]);
                VALINT[6][N]=VALINT[6][N]/gas->FTMP[1];
            }
            for(M=1;M<=6;M++)
                file_18<<VALINT[M][N]<<"\t";//WRITE (18,777) (VALINT[M][N],M=1,6),A       //
            file_18<<A<<endl;
        }
    }
    //
    return;
}


void MOLECULES_MOVE_1D()
{//
    //molecule moves appropriate to the time step
    //for homogeneous and one-dimensional flows
    //(homogeneous flows are calculated as one-dimensional)
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int N,L,M,K,NCI,J,II,JJ;
    double A,B,X,XI,XC,DX,DY,DZ,DTIM,S1,XM,R,TI,DTC,POB,UR,WFI,WFR,WFRI;
    //
    //N working integer
    //NCI initial cell time
    //DTIM time interval for the move
    //POB position of the outer boundary
    //TI initial time
    //DTC time interval to collision with surface
    //UR radial velocity component
    //WFI initial weighting factor
    //WFR weighting factor radius
    //WFRI initial weighting factor radius
    //
    if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
        //memset(calc->ALOSS,0.e00,sizeof(*calc->ALOSS));//calc->ALOSS=0.e00;
        for(int i=0;i<gas->MSP+1;i++)
            calc->ALOSS[i]=0.e00;
        
        calc->NMP=molecs->NM;
    }
    //
    N=1;

    while(N <= molecs->NM){
        //
        NCI=molecs->IPCELL[N];
        if((calc->IMTS == 0) || (calc->IMTS == 2)) DTIM=calc->DTM;
        if(calc->IMTS == 1) DTIM=2.e00*geom->CCELL[3][NCI];
        if(calc->FTIME-molecs->PTIM[N] > 0.5*DTIM){
            WFI=1.e00;
            if(geom->IWF == 1) WFI=1.e00+geom->WFM*pow(molecs->PX[1][N],geom->IFX);
            II=0; //becomes 1 if a molecule is removed
            TI=molecs->PTIM[N];
            molecs->PTIM[N]=TI+DTIM;
            calc->TOTMOV=calc->TOTMOV+1;
            //
            XI=molecs->PX[1][N];
            DX=DTIM*molecs->PV[1][N];
            X=XI+DX;
            //
            if(geom->IFX > 0){
                DY=0.e00;
                DZ=DTIM*molecs->PV[3][N];
                if(geom->IFX == 2) DY=DTIM*molecs->PV[2][N];
                R=sqrt(X*X+DY*DY+DZ*DZ);
            }
            //
            if(geom->IFX == 0){
                for(J=1;J<=2;J++){    // 1 for minimum x boundary, 2 for maximum x boundary
                    if(II == 0){
                        if(((J == 1) && (X < geom->XB[1])) || ((J == 2) && (X > (geom->XB[2]+geom->VELOB*molecs->PTIM[N])))){  //molecule crosses a boundary
                            if((geom->ITYPE[J] == 0) || (geom->ITYPE[J] == 3) || (geom->ITYPE[J] == 4)){
                                if(geom->XREM > geom->XB[1]){
                                    L=molecs->IPSP[N];
                                    calc->ENTMASS=calc->ENTMASS-gas->SP[5][L];
                                }
                                if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
                                    L=molecs->IPSP[N];
                                    calc->ALOSS[L]=calc->ALOSS[L]+1.e00;
                                }
                                REMOVE_MOL(N);
                                N=N-1;
                                II=1;
                            }
                            //
                            if(geom->ITYPE[J] == 1){
                                if((geom->IVB == 0) || (J == 1)){
                                    X=2.e00*geom->XB[J]-X;
                                    molecs->PV[1][N]=-molecs->PV[1][N];
                                }
                                else if((J == 2) && (geom->IVB == 1)){
                                    DTC=(geom->XB[2]+TI*geom->VELOB-XI)/(molecs->PV[1][N]-geom->VELOB);
                                    XC=XI+molecs->PV[1][N]*DTC;
                                    molecs->PV[1][N]=-molecs->PV[1][N]+2.*geom->VELOB;
                                    X=XC+molecs->PV[1][N]*(DTIM-DTC);
                                }
                            }
                            //
                            if(geom->ITYPE[J] == 2)
                                REFLECT_1D(N,J,X);
                            // END IF
                        }
                    }
                }
            }
            else{         //cylindrical or spherical flow
                //check boundaries
                if((X <geom-> XB[1]) && (geom->XB[1] > 0.e00)){
                    RBC(XI,DX,DY,DZ,geom->XB[1],S1);
                    if(S1 < 1.e00){     //intersection with inner boundary
                        if(geom->ITYPE[1] == 2){//solid surface
                            DX=S1*DX;
                            DY=S1*DY;
                            DZ=S1*DZ;
                            AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                            REFLECT_1D(N,1,X);
                        }
                        else{
                            REMOVE_MOL(N);
                            N=N-1;
                            II=1;
                        }
                    }
                }
                else if((geom->IVB == 0) && (R > geom->XB[2])){
                    RBC(XI,DX,DY,DZ,geom->XB[2],S1);
                    if(S1 < 1.e00){     //intersection with outer boundary
                        if(geom->ITYPE[2] == 2){ //solid surface
                            DX=S1*DX;
                            DY=S1*DY;
                            DZ=S1*DZ;
                            AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                            X=1.001e00*geom->XB[2];
                            while(X > geom->XB[2])
                                REFLECT_1D(N,2,X);
                            // END DO
                        }
                        else{
                            REMOVE_MOL(N);
                            N=N-1;
                            II=1;
                        }
                    }
                }
                else if((geom->IVB == 1) && (R > (geom->XB[2]+molecs->PTIM[N]*geom->VELOB))){
                    if(geom->IFX == 1) UR=sqrt(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2));
                    if(geom->IFX == 2) UR=sqrt(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
                    DTC=(geom->XB[2]+TI*geom->VELOB-XI)/(UR-geom->VELOB);
                    S1=DTC/DTIM;
                    DX=S1*DX;
                    DY=S1*DY;
                    DZ=S1*DZ;
                    AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                    molecs->PV[1][N]=-molecs->PV[1][N]+2.0*geom->VELOB;
                    X=X+molecs->PV[1][N]*(DTIM-DTC);
                }
                else
                    AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                
                
                //DIAGNOSTIC
                if(II == 0){
                    if(X > geom->XB[2]+molecs->PTIM[N]*geom->VELOB){
                        //WRITE (*,*) N,calc->FTIME,X,geom->XB[2]+molecs->PTIM[N]*geom->VELOB;
                        cout<<N<<" "<<calc->FTIME<<" "<<X<<" "<<(geom->XB[2]+molecs->PTIM[N]*geom->VELOB)<<endl;
                    }
                }
                
                //Take action on weighting factors
                if((geom->IWF == 1) && (II == 0)){
                    WFR=WFI/(1.e00+geom->WFM*pow(X,geom->IFX));
                    L=0;
                    WFRI=WFR;
                    if(WFR >= 1.e00){
                        while(WFR >= 1.e00){
                            L=L+1;
                            WFR=WFR-1.e00;
                        }
                    }
                    // CALL RANDOM_NUMBER(RANF)
                    calc->RANF=((double)rand()/(double)RAND_MAX);
                    if(calc->RANF <= WFR) L=L+1;
                    if(L == 0){
                        REMOVE_MOL(N);
                        N=N-1;
                        II=1;
                    }
                    L=L-1;
                    if(L > 0){
                        for(K=1;K<=L;K++){
                            if(molecs->NM >= molecs->MNM) EXTEND_MNM(1.1);
                            molecs->NM=molecs->NM+1;
                            molecs->PX[1][molecs->NM]=X;
                            for(M=1;M<=3;M++)
                                molecs->PV[M][molecs->NM]=molecs->PV[M][N];
                            
                            if(gas->MMRM > 0) molecs->PROT[molecs->NM]=molecs->PROT[N];
                            molecs->IPCELL[molecs->NM]=fabs(molecs->IPCELL[N]);
                            molecs->IPSP[molecs->NM]=molecs->IPSP[N];
                            molecs->IPCP[molecs->NM]=molecs->IPCP[N];
                            if(gas->MMVM > 0){
                                for(M=1;M<=gas->MMVM;M++)
                                    molecs->IPVIB[M][molecs->NM]=molecs->IPVIB[M][N];
                                
                            }
                            molecs->PTIM[molecs->NM]=molecs->PTIM[N];    //+5.D00*DFLOAT(K)*DTM
                            //note the possibility of a variable time advance that may take the place of the duplication buffer in earlier programs
                            
                            if(molecs->PX[1][molecs->NM] > geom->XB[2]+molecs->PTIM[molecs->NM]*geom->VELOB)
                                //WRITE (*,*) 'DUP',NM,FTIME,PX(1,NM),XB(2)+PTIM(NM)*VELOB
                                cout<<"DUP "<<molecs->NM<<" "<<calc->FTIME<<" "<<molecs->PX[1][molecs->NM]<<" "<<(geom->XB[2]+molecs->PTIM[molecs->NM]*geom->VELOB)<<endl;
                            
                        }
                    }
                }
            }
            //
            if(II == 0){
                molecs->PX[1][N]=X;
                
                if(molecs->PX[1][N] > geom->XB[1] && (molecs->PX[1][N] < geom->XB[2]))
                    continue;
                else{
                    cout<< N<<" OUTSIDE FLOWFIELD AT "<<molecs->PX[1][N]<<" VEL "<<molecs->PV[1][N]<<endl;
                    REMOVE_MOL(N);
                    N=N-1;
                    II=1;
                }
            }
            //
            if(II == 0){
                if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ);
                if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ,molecs->PTIM[N]);
            }
            //
        }
        //
        N=N+1;
    }
    //
    return;
}



void READ_RESTART()
{
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    // IMPLICIT NONE
    //
    fstream file_7;
    int ZCHECK;
    //
    //    101 CONTINUE
    _101:
    file_7.open("PARAMETERS.DAT", ios::in | ios::binary);
    if(file_7.is_open()){
        cout<<"PARAMETERS.DAT opened successfully"<<endl;
        file_7>>geom->NCCELLS>>geom->NCELLS>>gas->MMRM>>gas->MMVM>>molecs->MNM>>gas->MNSR>>gas->MSP>>geom->ILEVEL>>geom->MDIV>>gas->MMEX>>gas->MEX>>gas->MELE>>gas->MVIBL>>calc->NCLASS;
        file_7.close();
    }
    else{
        cout<<"PARAMETERS.DAT not opening"<<endl;
        goto _101;
    }
    //cout<<geom->NCCELLS<<endl<<geom->NCELLS<<endl<<gas->MMRM<<endl<<gas->MMVM<<endl<<molecs->MNM<<endl;
    // OPEN (7,FILE='PARAMETERS.DAT',FORM='BINARY',ERR=101)
    // READ (7) NCCELLS,NCELLS,MMRM,MMVM,MNM,MNSR,MSP,ILEVEL,MDIV,MMEX,MEX,MELE,MVIBL,NCLASS
    // CLOSE(7)
    //
    if(gas->MMVM > 0){
        
        molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
        molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
        molecs->d_allocate(molecs->MNM+1,molecs->PROT);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
        molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
        molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
        molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
        molecs->i_allocate(gas->MMVM+1,molecs->MNM+1,molecs->IPVIB);
        molecs->d_allocate(molecs->MNM+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),      &
        //      IPVIB(MMVM,MNM),PELE(MNM),STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->d_allocate(molecs->MNM+1,molecs->PROT);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        
    }
     
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR MOLECULE ARRAYS',ERROR
    // ENDIF
    //
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV+1,geom->JDIV);
    // ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY',ERROR
    // ENDIF
    geom->d_allocate(5,geom->NCELLS+1,geom->CELL);
    geom->i_allocate(geom->NCELLS+1,geom->ICELL);
    geom->d_allocate(6,geom->NCCELLS+1,geom->CCELL);
    geom->i_allocate(4,geom->NCCELLS+1,geom->ICCELL);
    // ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS',ERROR
    // ENDIF
    
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1,output->WCOLLS);
    output->d_allocate(geom->NCELLS+1,output->CLSEP);
    output->d_allocate(gas->MNSR+1,output->SREAC);
    output->d_allocate(24,geom->NCELLS+1,output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1,output->VARSP);
    output->d_allocate(36+gas->MSP,3,output->VARS);
    output->d_allocate(10+gas->MSP,geom->NCELLS+1,gas->MSP+1,output->CS);
    output->d_allocate(9,3,gas->MSP+1,3,output->CSS);
    output->d_allocate(7,3,output->CSSS);
    // ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),SREAC(MNSR),VAR(23,NCELLS),    &
    //           VARSP(0:12,NCELLS,MSP),VARS(0:35+MSP,2),CS(0:9+MSP,NCELLS,MSP),CSS(0:8,2,MSP,2),CSSS(6,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS',ERROR
    // ENDIF
    //

    if(gas->MMVM >= 0){
        output->d_allocate(gas->MSP+1,gas->MMVM+1,151,output->VIBFRAC);
        output->d_allocate(gas->MSP+1,gas->MMVM+1,output->SUMVIB);
        // ALLOCATE (VIBFRAC(MSP,MMVM,0:150),SUMVIB(MSP,MMVM),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR RECOMBINATION ARRAYS',ERROR
        // ENDIF
    }
    //
    ALLOCATE_GAS();
    //
    //102 CONTINU
_102:
    file_7.open("RESTART.DAT", ios::in | ios::binary);
    if(file_7.is_open()){
        cout<<"RESTART.DAT opened successfully"<<endl;
        /*file_7>>calc->AJM>>calc->ALOSS>>output->AVDTM>>BOLTZ>>geom->CCELL>>geom->CELL>>output->CLSEP>>output->COLLS>>calc->CPDTM>>gas->CR>>output->CS>>output->CSS>>output->CSSS>>gas->CTM>>gas->CXSS>>geom->DDIV>>DPI>>calc->DTM>>calc->DTSAMP>>calc->DTOUT>>calc->EME>>calc->ENTMASS>>gas->ENTR>>calc->ENTREM>>calc->ERROR>>gas->ERS>>gas->FDEN>>gas->FMA>>gas->FND>>calc->FNUM>>calc->FRACSAM>>gas->FSP>>gas->FP>>gas->FPM>>gas->FPR>>geom->FREM>>gas->FSPEC>>gas->FTMP>>calc->FTIME>>gas->FVTMP>>geom->ICCELL>>geom->ICELL>>calc->ICLASS>>calc->ICN>>molecs->ICREF>>geom->IFX>>gas->IGAS>>calc->IMTS>>molecs->IPCELL>>molecs->IPCP>>molecs->IPSP>>molecs->IPVIB>>calc->IREM>>calc->ISAD>>calc->ISECS>>calc->ISF>>gas->ISPEX>>gas->ISPR>>gas->ISPRC>>gas->ISPRK>>gas->ISPV>>gas->ISPVM>>gas->ISRCD>>geom->ITYPE>>geom->IVB>>geom->IWF>>geom->JDIV>>gas->LIS>>gas->LRS>>calc->MOLSC>>calc->MVER>>geom->NCCELLS>>geom->NCELLS>>geom->NCIS>>geom->NDIV>>gas->NELL>>gas->NEX>>calc->NLINE>>molecs->NM>>output->NMISAMP>>calc->NNC>>output->NOUT>>output->NSAMP>>gas->NSLEV>>gas->NSPEX>>calc->NREL>>calc->NVER>>molecs->PELE>>PI>>molecs->PROT>>molecs->PTIM>>molecs->PV>>molecs->PX>>gas->QELC>>gas->RGFS>>gas->RMAS>>gas->SLER>>gas->SP>>gas->SPEX>>SPI>>gas->SPM>>gas->SPR>>gas->SPRC>>gas->SPREX>>gas->SPRP>>gas->SPRT>>gas->SPV>>gas->SPVM>>output->SREAC>>output->SUMVIB>>calc->TCOL>>calc->TDISS>>calc->TRECOMB>>output->TISAMP>>calc->TPOUT>>calc->TREF>>calc->TLIM>>calc->TOTCOL>>calc->TOTMOV>>gas->TREACG>>gas->TREACL>>calc->TOUT>>calc->TPDTM>>calc->TREF>>calc->TSAMP>>gas->TSURF>>output->VAR>>output->VARS>>output->VARSP>>geom->VELOB>>gas->VFX>>gas->VFY>>output->VIBFRAC>>gas->VMP>>gas->VMPM>>calc->VNMAX>>gas->VSURF>>output->WCOLLS>>geom->WFM>>geom->XB>>geom->XREM>>output->XVELS>>output->YVELS>>gas->TNEX>>ZCHECK>>endl;*/
        file_7.read((char*)&calc,sizeof(calc));
        file_7.read((char*)&molecs,sizeof(molecs));
        file_7.read((char*)&gas,sizeof(gas));
        file_7.read((char*)&geom,sizeof(geom));
        file_7.read((char*)&output,sizeof(output));
        file_7.close();
    }
    else{
        cout<<"Restart.DAT not opening"<<endl;
        goto _102;
    }
    // OPEN (7,FILE='RESTART.DAT',FORM='BINARY',ERR=102)
    // READ (7) AJM,ALOSS,AVDTM,BOLTZ,CCELL,CELL,CLSEP,COLLS,    &
    //          CPDTM,CR,CS,CSS,CSSS,CTM,CXSS,DDIV,DPI,DTM,DTSAMP,DTOUT,EME,      &
    //          ENTMASS,ENTR,ENTREM,ERROR,ERS,FDEN,FMA,FND,FNUM,FRACSAM,FSP,FP,FPM,FPR,FREM,FSPEC,     &
    //          FTMP,FTIME,FVTMP,ICCELL,ICELL,ICLASS,ICN,ICREF,IFX,IGAS,IMTS,IPCELL,IPCP,     &
    //          IPSP,IPVIB,IREM,ISAD,ISECS,ISF,ISPEX,ISPR,ISPRC,ISPRK,ISPV,ISPVM,ISRCD,ITYPE,IVB,IWF,     &
    //          JDIV,LIS,LRS,MOLSC,MVER,NCCELLS,NCELLS,    &
    //          NCIS,NDIV,NELL,NEX,NLINE,NM,NMISAMP,NNC,NOUT,NSAMP,NSLEV,NSPEX,NREL,NVER,PELE,PI,PROT,PTIM,PV,PX,     &
    //          QELC,RGFS,RMAS,SLER,SP,SPEX,SPI,SPM,SPR,SPRC,SPREX,SPRP,SPRT,SPV,SPVM,SREAC,SUMVIB,    &
    //          TCOL,TDISS,TRECOMB,TISAMP,TPOUT,TREF,TLIM,TOTCOL,TOTMOV,     &
    //          TREACG,TREACL,TOUT,TPDTM,TREF,TSAMP,TSURF,VAR,VARS,VARSP,VELOB,VFX,VFY,VIBFRAC,VMP,     &
    //          VMPM,VNMAX,VSURF,WCOLLS,WFM,XB,XREM,XVELS,YVELS,TNEX,ZCHECK
    // //
    // CLOSE(7)
    //
    if(ZCHECK != 1234567){
        file_9<<molecs->NM<<" Molecules, Check integer = "<<ZCHECK<<endl;
        //WRITE (9,*) NM,' Molecules, Check integer =',ZCHECK
        return ;
    }
    else
        file_9<<"Restart file read, Check integer= "<<ZCHECK<<endl;
    //WRITE (9,*) 'Restart file read, Check integer=',ZCHECK
    
    //
    return;
    
    //
}
//*****************************************************************************

void WRITE_RESTART()
{
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    // IMPLICIT NONE
    //
    int ZCHECK;
    //
    fstream file_7;
    ZCHECK=1234567;
    //
    //101 CONTINUE
_101:
    file_7.open("PARAMETERS.DAT", ios::out | ios::binary);
    if(file_7.is_open()){
        file_7<<geom->NCCELLS<<endl<<geom->NCELLS<<endl<<gas->MMRM<<endl<<gas->MMVM<<endl<<molecs->MNM<<endl<<gas->MNSR<<endl<<gas->MSP<<endl<<geom->ILEVEL<<endl<<geom->MDIV<<endl<<gas->MMEX<<endl<<gas->MEX<<endl<<gas->MELE<<endl<<gas->MVIBL<<endl<<calc->NCLASS<<endl;
        file_7.close();
    }
    else{
        cout<<"Parameters.DAT file not opening(write)"<<endl;
        goto _101;
    }
    // OPEN (7,FILE='PARAMETERS.DAT',FORM='BINARY',ERR=101)
    // WRITE (7) NCCELLS,NCELLS,MMRM,MMVM,MNM,MNSR,MSP,ILEVEL,MDIV,MMEX,MEX,MELE,MVIBL,NCLASS
    // CLOSE(7)
    //
    //    102 CONTINUE
_102:
    file_7.open("RESTART.DAT", ios::out | ios::binary);
    if(file_7.is_open()){
        /*file_7<<calc->AJM<<calc->ALOSS<<output->AVDTM<<BOLTZ<<geom->CCELL<<geom->CELL<<output->CLSEP<<output->COLLS<<calc->CPDTM<<gas->CR<<output->CS<<output->CSS<<output->CSSS<<gas->CTM<<gas->CXSS<<geom->DDIV<<DPI<<calc->DTM<<calc->DTSAMP<<calc->DTOUT<<calc->EME<<calc->ENTMASS<<gas->ENTR<<calc->ENTREM<<calc->ERROR<<gas->ERS<<gas->FDEN<<gas->FMA<<gas->FND<<calc->FNUM<<calc->FRACSAM<<gas->FSP<<gas->FP<<gas->FPM<<gas->FPR<<geom->FREM<<gas->FSPEC<<gas->FTMP<<calc->FTIME<<gas->FVTMP<<geom->ICCELL<<geom->ICELL<<calc->ICLASS<<calc->ICN<<molecs->ICREF<<geom->IFX<<gas->IGAS<<calc->IMTS<<molecs->IPCELL<<molecs->IPCP<<molecs->IPSP<<molecs->IPVIB<<calc->IREM<<calc->ISAD<<calc->ISECS<<calc->ISF<<gas->ISPEX<<gas->ISPR<<gas->ISPRC<<gas->ISPRK<<gas->ISPV<<gas->ISPVM<<gas->ISRCD<<geom->ITYPE<<geom->IVB<<geom->IWF<<geom->JDIV<<gas->LIS<<gas->LRS<<calc->MOLSC<<calc->MVER<<geom->NCCELLS<<geom->NCELLS<<geom->NCIS<<geom->NDIV<<gas->NELL<<gas->NEX<<calc->NLINE<<molecs->NM<<output->NMISAMP<<calc->NNC<<output->NOUT<<output->NSAMP<<gas->NSLEV<<gas->NSPEX<<calc->NREL<<calc->NVER<<molecs->PELE<<PI<<molecs->PROT<<molecs->PTIM<<molecs->PV<<molecs->PX<<gas->QELC<<gas->RGFS<<gas->RMAS<<gas->SLER<<gas->SP<<gas->SPEX<<SPI<<gas->SPM<<gas->SPR<<gas->SPRC<<gas->SPREX<<gas->SPRP<<gas->SPRT<<gas->SPV<<gas->SPVM<<output->SREAC<<output->SUMVIB<<calc->TCOL<<calc->TDISS<<calc->TRECOMB<<output->TISAMP<<calc->TPOUT<<calc->TREF<<calc->TLIM<<calc->TOTCOL<<calc->TOTMOV<<gas->TREACG<<gas->TREACL<<calc->TOUT<<calc->TPDTM<<calc->TREF<<calc->TSAMP<<gas->TSURF<<output->VAR<<output->VARS<<output->VARSP<<geom->VELOB<<gas->VFX<<gas->VFY<<output->VIBFRAC<<gas->VMP<<gas->VMPM<<calc->VNMAX<<gas->VSURF<<output->WCOLLS<<geom->WFM<<geom->XB<<geom->XREM<<output->XVELS<<output->YVELS<<gas->TNEX<<ZCHECK<<endl;*/
        file_7.write((char*)&calc,sizeof(calc));
        file_7.write((char*)&molecs,sizeof(molecs));
        file_7.write((char*)&gas,sizeof(gas));
        file_7.write((char*)&geom,sizeof(geom));
        file_7.write((char*)&output,sizeof(output));
        file_7.close();
    }
    else{
        cout<<"Restart.DAT file not opening(write)"<<endl;
        goto _101;
    }
    // OPEN (7,FILE='RESTART.DAT',FORM='BINARY',ERR=102)
    // WRITE (7)AJM,ALOSS,AVDTM,BOLTZ,CCELL,CELL,CLSEP,COLLS,    &
    //          CPDTM,CR,CS,CSS,CSSS,CTM,CXSS,DDIV,DPI,DTM,DTSAMP,DTOUT,EME,      &
    //          ENTMASS,ENTR,ENTREM,ERROR,ERS,FDEN,FMA,FND,FNUM,FRACSAM,FSP,FP,FPM,FPR,FREM,FSPEC,     &
    //          FTMP,FTIME,FVTMP,ICCELL,ICELL,ICLASS,ICN,ICREF,IFX,IGAS,IMTS,IPCELL,IPCP,     &
    //          IPSP,IPVIB,IREM,ISAD,ISECS,ISF,ISPEX,ISPR,ISPRC,ISPRK,ISPV,ISPVM,ISRCD,ITYPE,IVB,IWF,     &
    //          JDIV,LIS,LRS,MOLSC,MVER,NCCELLS,NCELLS,    &
    //          NCIS,NDIV,NELL,NEX,NLINE,NM,NMISAMP,NNC,NOUT,NSAMP,NSLEV,NSPEX,NREL,NVER,PELE,PI,PROT,PTIM,PV,PX,     &
    //          QELC,RGFS,RMAS,SLER,SP,SPEX,SPI,SPM,SPR,SPRC,SPREX,SPRP,SPRT,SPV,SPVM,SREAC,SUMVIB,    &
    //          TCOL,TDISS,TRECOMB,TISAMP,TPOUT,TREF,TLIM,TOTCOL,TOTMOV,     &
    //          TREACG,TREACL,TOUT,TPDTM,TREF,TSAMP,TSURF,VAR,VARS,VARSP,VELOB,VFX,VFY,VIBFRAC,VMP,     &
    //          VMPM,VNMAX,VSURF,WCOLLS,WFM,XB,XREM,XVELS,YVELS,TNEX,ZCHECK
    // //
    // CLOSE(7)
    //
    file_9<<"Restart files written"<<endl;
    //WRITE (9,*) 'Restart files written'
    //
    return;
}

void OUTPUT_RESULTS()
{
    //--calculate the surface and flowfield properties
    //--generate TECPLOT files for displaying these properties
    //--calculate collisiion rates and flow transit times and reset time intervals
    //--add molecules to any flow plane molecule output files
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    
    fstream file_3;
    fstream file_10;
    fstream file_7;
    
    int IJ,J,JJ,K,L,LL,M,N,NN,NMCR,CTIME,II;
    long long NNN;
    double AS,AT,C1,C2,C3,C4,C5,C6,C7,C8,C9;
    double A,B,C,SDTM,SMCR,DOF,AVW,UU,VDOFM,TVIBM,VEL,DTMI,TT;
    //dout
    double SUM[14];
    double SUMS[10][3];
    double *TVIB,*VDOF,*PPA,*TEL,*ELDOF,*SDOF,*CDTM;
    double **TV,**THCOL;
    double ***DF;
    int *NMS;
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:) :: TVIB,VDOF,PPA,TEL,ELDOF,SDOF,CDTM
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:) :: TV,THCOL
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:,:) :: DF
    //    INTEGER, ALLOCATABLE, DIMENSION(:) :: NMS
    //INTEGER, ALLOCATABLE, DIMENSION(:,:) ::
    string F,E;
    //--CTIME  computer time (microseconds)
    //--SUMS(N,L) sum over species of CSS(N,J,L,M) for surface properties
    //
    //--For flowfield properties,where <> indicates sampled sum
    //--SUM(0) the molecular number sum over all species
    //--SUM(1) the weighted number sum over all species
    //--SUM(2) the weighted sum of molecular masses
    //--SUM(3),(4),(5) the weighted sum over species of m*<u>,<v>,<w>
    //--SUM(6) the weighted sum over species of m*(<u**2>+<v**2>+<w**2>)
    //--SUM(7) the weighted sum over species of <u**2>+<v**2>+<w**2>
    //--SUM(8) the weighted sum of rotational energy
    //--SUM(9) the weighted sum of rotational degrees of freedom
    //--SUM(10) the weighted sum over species of m*<u**2>
    //--SUM(11) the weighted sum over species of m*<v**2>
    //--SUM(12) sum over species of m*<w**2>
    //--SUM(13) the weighted sum of electronic energy
    //--UU velocity squared
    //--DOF degrees of freedom
    //--AVW the average value of the viscosity-temperature exponent
    //--DVEL velocity difference
    //--TVEL thermal speed
    //--SMCR sum of mcs/mfp over cells
    //--NMCR number in the sum
    //--VDOFM effective vibrational degrees of freedom of mixture
    //--TVIB(L)
    //--VDOF(L)
    //--TV(K,L) the temperature of vibrational mode K of species L
    //--PPA particles per atom
    //--NMS number per species
    //--SDOF(L) total degrees of freedom for species L
    //
    //
    //--calculate the flowfield properties in the cells
    //dout
    
    
    TV = new double*[gas->MMVM+1];
    for(int i =0; i< gas->MMVM+1; ++i)
        TV[i] = new double[gas->MSP+1];
    
    TVIB = new double[gas->MSP+1];
    
    DF = new double **[geom->NCELLS+1];
    for (int i = 0; i < geom->NCELLS+1; ++i)
    {
        DF[i] = new double *[gas->MMVM+1];
        for (int j = 0; j < gas->MMVM+1; ++j)
            DF[i][j] = new double [gas->MSP+1];
    }
    
    VDOF= new double[gas->MSP+1];
    
    TEL = new double[gas->MSP+1];
    
    ELDOF = new double[gas->MSP+1];
    
    PPA = new double[gas->MSP+1];
    
    NMS = new int[gas->MSP+1];
    
    THCOL = new double*[gas->MSP+1];
    for(int i =0; i< gas->MSP+1; ++i)
        THCOL[i] = new double[gas->MSP+1];
    
    SDOF = new double[gas->MSP+1];
    
    CDTM = new double[geom->NCELLS+1];
    
    
    //    ALLOCATE (TV(MMVM,MSP),TVIB(MSP),DF(NCELLS,MMVM,MSP),VDOF(MSP),TEL(MSP),ELDOF(MSP),PPA(MSP),NMS(MSP),THCOL(MSP,MSP)    &
    //              ,SDOF(MSP),CDTM(NCELLS),STAT=ERROR)
    //    if(calc->ERROR!=0)
    //    {
    //        cout<<"ROGRAM COULD NOT ALLOCATE OUTPUT VARIABLES"<<calc->ERROR<<endl;
    //    }
    if(calc->FTIME>0.5e00*calc->DTM)
    {
        output->NOUT+=1;
        if(output->NOUT>9999)
            output->NOUT=output->NOUT-9999;
        cout<<"Generating files for output interval"<<output->NOUT<<endl;
        if(calc->ISF==0)
        {
            //dout
            //OPEN (3,FILE='DS1OUT.DAT')
            file_3.open("DS1OUT.DAT" , ios::out);
            if(file_3.is_open()){
                cout<<"DS1OUT.DAT is opened"<<endl;
            }
            else{
                cout<<"DS1OUT.DAT not opened"<<endl;
            }
            //F='DS';//E//'.OUT'
        }
        else
        {
            //--the files are DS1n.DAT, where n is a four digit integer equal to NOUT
            //dout
            //500 FORMAT(I5)
            //ENCODE(5,500,E) 10000+NOUT
            int a=output->NOUT+10000;
            E=to_string(a);
            F="DS" + E + "OUT.DAT";
            //dout
            //file_3.open(F.c_str(), ios::out|ios::binary);
            if(file_3.is_open()){
                cout<<F<<" is opened"<<endl;
            }
            else{
                cout<<F<<" not opened"<<endl;
            }
            //OPEN (3,FILE=F)
        }
    }
    //dout
    //memset(output->VAR,0.e00,sizeof(**output->VAR));
    for(int i=0;i<24;i++){
        for(int j=0;j<geom->NCELLS+1;j++)
            output->VAR[i][j]=0.e00;
    }
    if(geom->IFX==0)
        A=calc->FNUM/(calc->FTIME-output->TISAMP);
    for(JJ=1;JJ<=2;JJ++)
    {
        if(geom->IFX==1)
            A=calc->FNUM/(2.e00*PI*geom->XB[JJ])*(calc->FTIME-output->TISAMP);
        if(geom->IFX==2)
            A=calc->FNUM/(4.e00*PI*geom->XB[JJ])*geom->XB[JJ]*(calc->FTIME-output->TISAMP);
        //--JJ=1 for surface at XB(1), JJ=2 for surface at XB(2)
        if(geom->ITYPE[JJ]==2)
        {
            //dout
            //memset(SUMS,0.e00,sizeof(SUMS));
            for(int i=0;i<10;i++){
                for(int j=0;j<3;j++)
                    SUMS[i][j]=0.e00;
            }
            for( L=1;L<=gas->MSP;L++)
            {
                for(J=0;J<=8;J++)
                {
                    for(IJ=1;IJ<=2;IJ++)
                    {
                        SUMS[J][IJ]=SUMS[J][IJ]+output->CSS[J][JJ][L][IJ];
                    }
                }
            }
            output->VARS[0][JJ]=SUMS[0][1];
            output->VARS[1][JJ]=SUMS[1][1];
            output->VARS[2][JJ]=SUMS[1][2];
            output->VARS[3][JJ]=SUMS[1][1]*A;
            output->VARS[4][JJ]=SUMS[1][2]*A;
            output->VARS[5][JJ]=SUMS[2][1]*A;
            output->VARS[6][JJ]=SUMS[2][2]*A;
            output->VARS[7][JJ]=SUMS[3][1]*A;
            output->VARS[8][JJ]=SUMS[3][2]*A;
            output->VARS[9][JJ]=SUMS[4][1]*A;
            output->VARS[10][JJ]=SUMS[4][2]*A;
            output->VARS[11][JJ]=SUMS[5][1]*A;
            output->VARS[12][JJ]=SUMS[5][2]*A;
            output->VARS[13][JJ]=SUMS[6][1]*A;
            output->VARS[14][JJ]=SUMS[6][2]*A;
            output->VARS[15][JJ]=SUMS[7][1]*A;
            output->VARS[16][JJ]=SUMS[7][2]*A;
            output->VARS[33][JJ]=SUMS[8][1]*A;
            output->VARS[34][JJ]=SUMS[8][2]*A;
            //   VARS(17,JJ)=SUMS(9,1)*A        //--SURFACE REACTIONS NOT YET IMPLEMENTED
            //   VARS(18,JJ)=SUMS(9,2)*A
            if(output->CSSS[1][JJ]>1.e-6)
            {
                output->VARS[19][JJ]=output->CSSS[3][JJ]/output->CSSS[2][JJ]; ////--n.b. must be modified to include second component in 3D
                output->VARS[20][JJ]=(output->CSSS[4][JJ]-output->CSSS[2][JJ]*output->VARS[19][JJ]*output->VARS[19][JJ])/(output->CSSS[1][JJ]*3.e00*BOLTZ)-gas->TSURF[JJ];
                output->VARS[19][JJ]=output->VARS[19][JJ]-gas->VSURF[JJ];
                if(output->CSSS[6][JJ]>1.e-6)
                {
                    output->VARS[21][JJ]=(2.e000/BOLTZ)*(output->CSSS[5][JJ]/output->CSSS[6][JJ])-gas->TSURF[JJ];
                }
                else
                {
                    output->VARS[21][JJ]=0.e00;
                }
            }
            else
            {
                output->VARS[19][JJ]=0.e00;
                output->VARS[20][JJ]=0.e00;
                output->VARS[21][JJ]=0.e00;
            }
            output->VARS[22][JJ]=(SUMS[2][1]+SUMS[2][2])*A;
            output->VARS[23][JJ]=(SUMS[3][1]+SUMS[3][2])*A;
            output->VARS[24][JJ]=(SUMS[4][1]+SUMS[4][2])*A;
            output->VARS[25][JJ]=(SUMS[5][1]+SUMS[5][2])*A;
            output->VARS[26][JJ]=(SUMS[6][1]+SUMS[6][2])*A;
            output->VARS[27][JJ]=(SUMS[7][1]+SUMS[7][2])*A;
            output->VARS[28][JJ]=(SUMS[9][1]+SUMS[9][2])*A;
            output->VARS[29][JJ]=output->VARS[11][JJ]+output->VARS[13][JJ]+output->VARS[15][JJ]+output->VARS[33][JJ];
            output->VARS[30][JJ]=output->VARS[12][JJ]+output->VARS[14][JJ]+output->VARS[16][JJ]+output->VARS[34][JJ];
            output->VARS[31][JJ]=output->VARS[29][JJ]+output->VARS[30][JJ];
            output->VARS[35][JJ]=output->VARS[33][JJ]+output->VARS[34][JJ];
            for(L=1;gas->MSP;L++)
            {
                if(SUMS[1][1]>0)
                {
                    output->VARS[35+L][JJ]=100*output->CSS[1][JJ][L][1]/SUMS[1][1];
                }
                else
                {
                    output->VARS[35+L][JJ]=0.0;
                }
            }
        }
    }
    //output->VARSP=0;
    for(int i=0;i<13;i++){
        for(int j=0;j<geom->NCELLS+1;j++){
            for(int k=0;k<gas->MSP+1;k++)
                output->VARSP[i][j][k]=0;
        }
    }
    SMCR=0;
    NMCR=0;
    for(N=1;N<=geom->NCELLS;N++)
    {
        if(N==120)
        {
            continue;
        }
        A=calc->FNUM/(geom->CELL[4][N])*output->NSAMP;
        if(geom->IVB==1)
            A=A*pow((geom->XB[2]-geom->XB[1])/(geom->XB[2]+geom->VELOB*0.5e00*(calc->FTIME-output->TISAMP)-geom->XB[1]),geom->IFX+1);
        //--check the above for non-zero XB(1)
        //dout
        //memset(SUM,0,sizeof(SUM));
        for(int i=0;i<14;i++)
            SUM[i]=0;
        
        NMCR+=1;
        for(L=1;L<=gas->MSP;L++)
        {
            SUM[0]=SUM[0]+output->CS[0][N][L];
            SUM[1]=SUM[1]+output->CS[1][N][L];
            SUM[2]=SUM[2]+gas->SP[5][L]*output->CS[0][N][L];
            for(K=1;K<=3;K++)
            {
                SUM[K+2]=SUM[K+2]+gas->SP[5][L]*output->CS[K+1][N][L];
                if(output->CS[1][N][L]>1.1e00)
                {
                    output->VARSP[K+1][N][L]=output->CS[K+4][N][L]/output->CS[1][N][L];
                    //--VARSP(2,3,4 are temporarily the mean of the squares of the velocities
                    output->VARSP[K+8][N][L]=output->CS[K+1][N][L]/output->CS[1][N][L];
                }
            }
            SUM[6]=SUM[6]+gas->SP[5][L]*(output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L]);
            SUM[10]=SUM[10]+gas->SP[5][L]*output->CS[5][N][L];
            SUM[12]=SUM[11]+gas->SP[5][L]*output->CS[6][N][L];
            SUM[12]=SUM[12]+gas->SP[5][L]*output->CS[7][N][L];
            SUM[13]=SUM[13]+output->CS[9][N][L];
            if(output->CS[1][N][L]>0.5e00)
                SUM[7]=SUM[7]+output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L];
            if(gas->ISPR[1][L]>0)
            {
                SUM[8]=SUM[8]+output->CS[8][N][L];
                SUM[9]=SUM[9]+output->CS[1][N][L]*gas->ISPR[1][L];
            }
        }
        AVW=0;
        for(L=1;L<=gas->MSP;L++)
        {
            output->VARSP[0][N][L]=output->CS[1][N][L];
            output->VARSP[1][N][L]=0.e00;
            output->VARSP[6][N][L]=0.0;
            output->VARSP[7][N][L]=0.0;
            output->VARSP[8][N][L]=0.0;
            if(SUM[1]>0.1)
            {
                output->VARSP[1][N][L]=output->CS[1][N][L]/SUM[1];
                AVW=AVW+gas->SP[3][L]*output->CS[1][N][L]/SUM[1];
                if(gas->ISPR[1][L]>0 && output->CS[1][N][L]>0.5)
                    output->VARSP[6][N][L]=(2.e00/BOLTZ)*output->CS[8][N][L]/((double)(gas->ISPR[1][L])*output->CS[1][N][L]);
            }
            output->VARSP[5][N][L]=0;
            for(K=1;K<=3;K++)
            {
                output->VARSP[K+1][N][L]=(gas->SP[5][L]/BOLTZ)*(output->VARSP[K+1][N][L]-pow(output->VARSP[K+8][N][L],2));
                output->VARSP[5][N][L]=output->VARSP[5][N][L]+output->VARSP[K+1][N][L];
            }
            output->VARSP[5][N][L]=output->VARSP[5][N][L]/3.e00;
            output->VARSP[8][N][L]=(3.e00*output->VARSP[5][N][L]+(double)gas->ISPR[1][L]*output->VARSP[6][N][L])/(3.e00+(double)(gas->ISPR[1][L]));
        }
        if(geom->IVB==0)
            output->VAR[1][N]=geom->CELL[1][N];
        if(geom->IVB==1)
        {
            C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/(double)(geom->NDIV); //new DDIV
            output->VAR[1][N]=geom->XB[1]+((double)(N-1)+0.5)*C;
        }
        output->VAR[2][N]=SUM[0];
        if(SUM[1]>0.5)
        {
            output->VAR[3][N]=SUM[1]*A;//--number density Eqn. (4.28)
            output->VAR[4][N]=output->VAR[3][N]*SUM[2]/SUM[1]; //--density  Eqn. (4.29)
            output->VAR[5][N]=SUM[3]/SUM[2];//--u velocity component  Eqn. (4.30)
            output->VAR[6][N]=SUM[4]/SUM[2]; //--v velocity component  Eqn. (4.30)
            output->VAR[7][N]=SUM[5]/SUM[2]; //--w velocity component  Eqn. (4.30)
            UU= pow(output->VAR[5][N],2)+pow(output->VAR[6][N],2)+pow(output->VAR[7][N],2);
            if(SUM[1]>1)
            {   
                output->VAR[8][N]=(fabs(SUM[6]-SUM[2]*UU))/(3.e00*BOLTZ*SUM[1]); //Eqn. (4.39)
                //--translational temperature
                output->VAR[19][N]=fabs(SUM[10]-SUM[2]*pow(output->VAR[5][N],2))/(BOLTZ*SUM[1]);
                output->VAR[20][N]=fabs(SUM[11]-SUM[2]*pow(output->VAR[6][N],2))/(BOLTZ*SUM[1]);
                output->VAR[21][N]=fabs(SUM[12]-SUM[2]*pow(output->VAR[7][N],2))/(BOLTZ*SUM[1]);
            }
            else
            {
                output->VAR[8][N]=1.0;
                output->VAR[19][N]=1.0;
                output->VAR[20][N]=1.0;
                output->VAR[21][N]=1.0;
            }
            if(SUM[9]>0.1e00)
            {
                output->VAR[9][N]=(2.e00/BOLTZ)*SUM[8]/SUM[9]; ////--rotational temperature Eqn. (4.36)
            }
            else
                output->VAR[9][N]=0.0;
            
            output->VAR[10][N]=gas->FTMP[1]; ////vibration default
            DOF=(3.e00+SUM[9])/SUM[1];
            output->VAR[11][N]=(3.0*output->VAR[8][N]+(SUM[9]/SUM[1]))*output->VAR[9][N]/DOF;
            //--overall temperature based on translation and rotation
            output->VAR[18][N]=output->VAR[3][N]*BOLTZ*output->VAR[8][N];
            //--scalar pressure (now (from V3) based on the translational temperature)
            if(gas->MMVM>0)
            {
                for(L=1;L<=gas->MSP;L++)
                {
                    VDOF[L]=0.0;
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        for(K=1;K<=gas->ISPV[L];K++)
                        {
                            if(output->CS[K+9][N][L]<BOLTZ)
                            {
                                TV[K][L]=0.0;
                                DF[N][K][L]=0.0;
                            }
                            else
                            {
                                TV[K][L]=gas->SPVM[1][K][L]/log(1.0+output->CS[1][N][L]/output->CS[K+9][N][L]) ;//--Eqn.(4.45)
                                DF[N][K][L]=2.0*(output->CS[K+9][N][L]/output->CS[1][N][L])*log(1.0+output->CS[1][N][L]/output->CS[K+9][N][L]); //--Eqn. (4.46)
                            }
                            VDOF[L]=VDOF[L]+DF[N][K][L];
                        }
                        //memset(TVIB,0.0,sizeof(*TVIB));
                        for(int i=0;i<gas->MSP+1;i++)
                            TVIB[i]=0.0;
                        
                        for(K=1;K<=gas->ISPV[L];K++)
                        {
                            if(VDOF[L]>1.e-6)
                            {
                                TVIB[L]=TVIB[L]+TV[K][L]*DF[N][K][L]/VDOF[L];
                            }
                            else
                                TVIB[L]=gas->FVTMP[1];
                        }
                    }
                    else
                    {
                        TVIB[L]=calc->TREF;
                        VDOF[L]=0.0;
                    }
                    output->VARSP[7][N][L]=TVIB[L];
                }
                VDOFM=0.0;
                TVIBM=0.0;
                A=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        A=A+output->CS[1][N][L];
                    }
                }
                for(L=1;L<=gas->MSP;L++)
                {
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        VDOFM=VDOFM+VDOF[L]-output->CS[1][N][L]/A;
                        TVIBM=TVIBM+TVIB[L]-output->CS[1][N][L]/A;
                    }
                }
                output->VAR[10][N]=TVIBM;
            }
            for(L=1;L<=gas->MSP;L++)
            {
                if(output->VARSP[0][N][L]>0.5)
                {
                    //--convert the species velocity components to diffusion velocities
                    for(K=1;K<=3;K++)
                    {
                        output->VARSP[K+8][N][L]=output->VARSP[K+8][N][L]-output->VAR[K+4][N];
                    }
                    if(gas->MELE>1)
                    {
                        //--calculate the electronic temperatures for the species
                        //memset(ELDOF,0.e00,sizeof(*ELDOF));
                        for(int i=0;i<gas->MSP+1;i++)
                            ELDOF[i] = 0.e00;
                        //dout
                        //memset(TEL,0.e00,sizeof(*TEL));
                        for(int i=0;i<gas->MSP+1;i++)
                            TEL[i] = 0.e00;
                        if(gas->MELE>1)
                        {
                            A=0.e00;
                            B=0.e00;
                            for(M=1;M<=gas->NELL[L];M++)
                            {
                                if(output->VARSP[5][N][L]>1.e00)
                                {
                                    C=gas->QELC[2][M][L]/output->VARSP[5][N][L];
                                    A=A+gas->QELC[1][M][L]*exp(-C);
                                    B=B+gas->QELC[1][M][L]*C*exp(-C);
                                }
                            }
                            if(B>1.e-10)
                            {
                                TEL[L]=output->CS[9][N][L]/output->CS[1][N][L]/(BOLTZ*B/A);
                            }
                            else
                                TEL[L]=output->VAR[11][N];
                            output->VARSP[12][N][L]=TEL[L];
                            ELDOF[L]=0.e00;
                            if(output->VARSP[5][N][L]>1.e00)
                                ELDOF[L]=2.e00*output->CS[9][N][L]/output->CS[1][N][L]/(BOLTZ*output->VARSP[5][N][L]);
                            if(ELDOF[L]<0.01)
                            {
                                output->VARSP[12][N][L]=output->VAR[11][N];
                            }
                        }
                        else
                        {
                            ELDOF[L]=0.0;
                        }
                    }
                }
                else
                {
                    for(K=8;K<=12;K++)
                    {
                        output->VARSP[K][N][L]=0.e00;
                    }
                }
            }
            //--set the overall electronic temperature
            if(gas->MELE>1)
            {
                C=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    if(ELDOF[L]>1.e-5)
                        C=C+output->CS[1][N][L];
                }
                if(C>0.e00)
                {
                    A=0.e00;
                    B=0.e00;
                    for(L=1;L<=gas->MSP;L++)
                    {
                        if(ELDOF[L]>1.e-5)
                        {
                            A=A+output->VARSP[12][N][L]*output->CS[1][N][L];
                            B=B+output->CS[1][N][L];
                        }
                    }
                    output->VAR[22][N]=A/B;
                }
                else{
                    output->VAR[22][N]=output->VAR[11][N];
                }
            }
            else{
                output->VAR[22][N]=gas->FTMP[1];
            }
            if(gas->MMVM>0)
            {
                //--set the overall temperature and degrees of freedom for the individual species
                for(L=1;L<=gas->MSP;L++)
                {
                    if(gas->MELE>1){
                        SDOF[L]=3.e00+gas->ISPR[1][L]+VDOF[L]+ELDOF[L];
                        output->VARSP[8][N][L]=(3.0*output->VARSP[5][N][L]+gas->ISPR[1][L]*output->VARSP[6][N][L]+VDOF[L]*output->VARSP[7][N][L]+ELDOF[L]*output->VARSP[12][N][L])/SDOF[L];
                    }
                    else{
                        SDOF[L]=3.e00+gas->ISPR[1][L]+VDOF[L]+ELDOF[L];
                        output->VARSP[8][N][L]=(3.0*output->VARSP[5][N][L]+gas->ISPR[1][L]*output->VARSP[6][N][L]+VDOF[L]*output->VARSP[7][N][L])/SDOF[L];
                    }
                }
                //--the overall species temperature now includes vibrational and electronic excitation
                //--the overall gas temperature can now be set
                A=0.e00;
                B=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    A=A+SDOF[L]+output->VARSP[8][N][L]*output->CS[1][N][L];
                    B=B+SDOF[L]*output->CS[1][N][L];
                }
                output->VAR[11][N]=A/B;
            }
            VEL=sqrt(pow(output->VAR[5][N],2)+pow(output->VAR[6][N],2)+pow(output->VAR[7][N],2));
            output->VAR[12][N]=VEL/sqrt((DOF+2.e00)*output->VAR[11][N]*(SUM[1]*BOLTZ/SUM[2]))/DOF;
            //--Mach number
            output->VAR[13][N]=SUM[0]/output->NSAMP; ////--average number of molecules in cell
            //dout
            if(output->COLLS[N] > 2.0)
            {
                output->VAR[14][N]=0.5e00*(calc->FTIME-output->TISAMP)*(SUM[1]/output->NSAMP)/output->WCOLLS[N];
                //--mean collision time
                output->VAR[15][N]=0.92132e00*sqrt(fabs(SUM[7]/SUM[1]-UU))*output->VAR[14][N];
                //--mean free path (based on r.m.s speed with correction factor based on equilibrium)
                output->VAR[16][N]=output->CLSEP[N]/(output->COLLS[N]*output->VAR[15][N]);
            }
            else{
                output->VAR[14][N]=1.e10;
                output->VAR[15][N]=1.e10/output->VAR[3][N];
                //--m.f.p set by nominal values
            }
        }
        else
        {
            for(L=3;L<=22;L++)
            {
                output->VAR[L][N]=0.0;
            }
        }
        output->VAR[17][N]=VEL;
    }
    if(calc->FTIME>0.e00*calc->DTM)
    {
        if(calc->ICLASS==1){
            if(geom->IFX==0)
                file_3<<"DSMC program for a one-dimensional plane flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
            if(geom->IFX==1)
                file_3<<"DSMC program for a cylindrical flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
            if(geom->IFX==2)
                file_3<<"DSMC program for a spherical flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
        }
        file_3<<endl;//WRITE (3,*)
        file_3<<"Interval "<<output->NOUT<<" Time "<<calc->FTIME<< " with "<<output->NSAMP<<" samples from "<<output->TISAMP<<endl;
        //WRITE (3,*) 'Interval',output->NOUT,'Time ',calc->FTIME, ' with',output->NSAMP,' samples from',output->TISAMP
        //990 FORMAT(I7,G13.5,I7,G13.5)
        //Dout
        NNN=calc->TOTMOV;
        cout<<"TOTAL MOLECULES = "<< molecs->NM<<endl;
        //dout
        //NMS=0;
        for(int i=0;i<gas->MSP+1;i++)
            NMS[i]=0;

        for(N=1;N<=molecs->NM;N++)
        {
            M=molecs->IPSP[N];
            NMS[M]+=1;
        }
        file_3<<"Total simulated molecules = "<<molecs->NM<<endl;
        for(N=1;N<=gas->MSP;N++)
        {
            cout<< " SPECIES "<<N<<" TOTAL = "<<NMS[N]<<endl;
            file_3<<"Species "<<N<<" total = "<<NMS[N]<<endl;
        }
        if(gas->MEX>0)
        {
            ENERGY(0,A);
            for(N=1;N<=gas->MSP;N++)
            {
                if(gas->ISPV[N]>0){
                    file_9<< "SP "<<N<<" DISSOCS "<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                    cout<<"SP"<<N<<"DISSOCS"<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                    file_3<<"SP "<<N<<" DISSOCS "<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                }
            }
            for(N=1;N<=gas->MSP;N++)
            {
                cout<<"EX,C reaction"<<N<<" number"<<gas->TNEX[N]<<endl;
                file_9<<"EX,C reaction "<<N<<" number "<<gas->TNEX[N]<<endl;
                file_3<<"EX,C reaction "<<N<<" number "<<gas->TNEX[N]<<endl;
                
            }
        }
        
        file_3<<"Total molecule moves   = "<<NNN<<endl;
        //dout
        NNN=calc->TOTCOL;
        file_3<<"Total collision events = "<<NNN<<endl;
        //
        file_3<<"Species dependent collision numbers in current sample"<<endl;
        for(N=1;N<=gas->MSP;N++)
        {
            if(gas->IGAS!=8){
                for(M=1;M<=gas->MSP;M++)
                    file_3<<calc->TCOL[N][M]<<"\t";
                file_3<<endl;
                //WRITE(3,901) (calc->TCOL[N][M],M=1,gas->MSP);
            }
            if(gas->IGAS==8){
                for(M=1;M<=gas->MSP;M++)
                    file_3<<calc->TCOL[N][M]<<"\t";
                file_3<<endl;
                // WRITE(3,902) (calc->TCOL[N][M],M=1,gas->MSP);
            }
        }
        //Dout
        //901 FORMAT(5G13.5)
        //902 FORMAT(8G13.5)
        //dout
        CTIME=clock();
        file_3<<"Computation time "<<(double)CTIME/1000.0<< "seconds"<<endl;
        file_3<<"Collision events per second "<<(calc->TOTCOL-calc->TOTCOLI)*1000.e00/(double)CTIME<<endl;
        file_3<<"Molecule moves per secon "<<(calc->TOTMOV-calc->TOTMOVI)*1000.e00/(double)CTIME<<endl;
        if(calc->ICLASS==0&& gas->MMVM==0&&calc->ISF==0){
            //--a homogeneous gas with no vibratioal modes - assume that it is a collision test run
            //******PRODUCES DATA FOR TABLES 6.1 AND 6.2 IN SECTION 6.2*******
            //
            A=0.e00;
            B=0.e00;
            C=0.e00;
            for(N=1;N<=geom->NCCELLS;N++)
            {
                A+=geom->CCELL[5][N];
                B+=geom->CCELL[4][N];
                C+=geom->CCELL[3][N];
            }
            file_3<<"Overall time step "<<calc->DTM<<endl;
            file_3<<"Molecules per collision cell "<<(double)(molecs->NM)/(double)(geom->NCCELLS)<<endl;
            file_3<<"Mean cell time ratio "<< A/((double)(geom->NCCELLS)*calc->FTIME)<<endl;
            file_3<<"Mean value of cross-section and relative speed "<<B/(double)(geom->NCCELLS)<<endl;
            file_3<<"Mean half collision cell time step "<<C/(double)(geom->NCCELLS)<<endl;
            if(gas->MSP==1){
                A=2.e00*SPI*output->VAR[3][1]  *(pow(gas->SP[1][1],2))*sqrt(4.e00*BOLTZ*gas->SP[2][1]/gas->SP[5][1])*pow((output->VAR[11][1])/gas->SP[2][1],(1.e00-gas->SP[3][1]));
                //--Eqn. (2.33) for equilibhrium collision rate
                file_3<<"Coll. rate ratio to equilib "<<calc->TCOL[1][1]/((double)(molecs->NM)*(calc->FTIME-output->TISAMP))/A<<endl;
            }
            else{
                file_3<<"Species collision rate ratios to equilibrium"<<endl;
                for(N=1;N<=gas->MSP;N++){
                    file_3<<"Collision rate for species "<<N<<endl;
                    for(M=1;M<=gas->MSP;M++)
                    {
                        THCOL[N][M]=2.e00*(1.e00/SPI)*output->VAR[3][1]*output->VARSP[1][1][M]*gas->SPM[2][N][M]*sqrt(2.e00*BOLTZ*gas->SPM[5][N][M]/gas->SPM[1][N][M])*pow(output->VAR[11][1]/gas->SPM[5][N][M],1.e00-gas->SPM[3][N][M]);
                        //--Eqn. (2.36) for equilibhrium collision rate of species N with species M
                        file_3<<"with species "<<M<<" "<<calc->TCOL[N][M]/((double)(molecs->NM)*gas->FSP[N][1]*(calc->FTIME-output->TISAMP))/THCOL[N][M]<<endl;
                    }
                }
                file_3<<endl;
                for(N=1;N<=gas->MSP;N++){
                    file_3<<"Collision numbers for species "<<N<<endl;
                    for(M=1;M<=gas->MSP;M++){
                        file_3<<"with species "<<M<<" "<<calc->TCOL[N][M]<<endl;
                    }
                }
            }
        }
        file_3<<endl;
        if(geom->ITYPE[1]==2|| geom->ITYPE[2]==1)
            file_3<<"Surface quantities"<<endl;
        for(JJ=1;JJ<=2;JJ++)
        {
            if(geom->ITYPE[JJ]==2){
                file_3<<endl;
                file_3<<"Surface at "<<geom->XB[JJ]<<endl;
                file_3<<"Incident sample "<<output->VARS[0][JJ]<<endl;
                file_3<<"Number flux "<<output->VARS[3][JJ]<<" /sq m/s"<<endl;
                file_3<<"Inc pressure "<<output->VARS[5][JJ]<<" Refl pressure "<<output->VARS[6][JJ]<<endl;
                file_3<<"Pressure "<< output->VARS[5][JJ]+output->VARS[6][JJ]<<" N/sq m"<<endl;
                file_3<<"Inc y shear "<<output->VARS[7][JJ]<<" Refl y shear "<<output->VARS[8][JJ]<<endl;
                file_3<<"Net y shear "<<output->VARS[7][JJ]-output->VARS[8][JJ]<<" N/sq m"<<endl;
                file_3<<"Net z shear "<<output->VARS[9][JJ]-output->VARS[10][JJ]<<" N/sq m"<<endl;
                file_3<<"Incident translational heat flux "<<output->VARS[11][JJ]<<" W/sq m"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Incident rotational heat flux "<<output->VARS[13][JJ]<<" W/sq m"<<endl;
                if(gas->MMVM>0)
                    file_3<<"Incident vibrational heat flux "<<output->VARS[15][JJ]<<" W/sq m"<<endl;
                if(gas->MELE>1)
                    file_3<<"Incident electronic heat flux "<<output->VARS[33][JJ]<<" W/sq m"<<endl;
                file_3<<"Total incident heat flux "<<output->VARS[29][JJ]<<" W/sq m"<<endl;
                file_3<<"Reflected translational heat flux "<<output->VARS[12][JJ]<<" W/sq m"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Reflected rotational heat flux "<<output->VARS[14][JJ]<<" W/sq m"<<endl;
                if(gas->MMVM>0)
                    file_3<<"Reflected vibrational heat flux "<<output->VARS[16][JJ]<<" W/sq m"<<endl;
                if(gas->MELE>1)
                    file_3<<"Reflected electronic heat flux "<<output->VARS[34][JJ]<<" W/sq m"<<endl;
                file_3<<"Total reflected heat flux "<<output->VARS[30][JJ]<<" W/sq m"<<endl;
                file_3<<"Net heat flux "<<output->VARS[31][JJ]<<" W/sq m"<<endl;
                file_3<<"Slip velocity (y direction) "<<output->VARS[19][JJ]<<" m/s"<<endl;
                file_3<<"Translational temperature slip"<<output->VARS[20][JJ]<<" K"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Rotational temperature slip "<<output->VARS[21][JJ]<<" K"<<endl;
                if(gas->MSP>1)
                {
                    for(L=1;L<=gas->MSP;L++)
                    {
                        file_3<<"Species "<<L<<" percentage "<<output->VARS[L+35][JJ]<<endl;
                    }
                }
            }
        }

        file_3<<endl;
        //PPA=0;
        for(int i=0;i<gas->MSP+1;i++)
            PPA[i]=0;

        for(N=1;N<=geom->NCELLS;N++)
        {
            for(M=1;M<=gas->MSP;M++){
                PPA[M]=PPA[M]+output->VARSP[0][N][M];
            }
        }
        // WRITE (*,*)
        //cin.get();
        if(gas->MSP>1)
        {
            file_3<<"GAINS FROM REACTIONS"<<endl;
            file_3<<"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                          SPECIES "<<M<<" "<<gas->TREACG[1][M]<<" "<<gas->TREACG[2][M]<<" "<<gas->TREACG[3][M]<<" "<<gas->TREACG[4][M]<<endl;
            }
            file_3<<endl;
            file_3<<"LOSSES FROM REACTIONS"<<endl;
            file_3<<"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                          SPECIES "<<M<<" "<<gas->TREACL[1][M]<<" "<<gas->TREACL[2][M]<<" "<<gas->TREACL[3][M]<<" "<<gas->TREACL[4][M]<<endl;
            }
            file_3<<endl;
            file_3<<"TOTALS"<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                        SPECIES "<<M<<" GAINS "<<gas->TREACG[1][M]+gas->TREACG[2][M]+gas->TREACG[3][M]+gas->TREACG[4][M]<<" LOSSES "<<gas->TREACL[1][M]+gas->TREACL[2][M]+gas->TREACL[3][M]+gas->TREACL[4][M]<<endl;
            }
        }
        file_3<<endl;
        file_3<<"Flowfield properties "<<endl;
        file_3<< output->NSAMP<<" Samples"<<endl;
        file_3<<"Overall gas"<<endl;
        file_3<<"Cell x coord.      Sample       Number Dens. Density      u velocity   v velocity   w velocity   Trans. Temp. Rot. Temp.   Vib. Temp.    El. Temp.  Temperature  Mach no.     Mols/cell    m.c.t        m.f.p        mcs/mfp        speed      Pressure      TTX         TTY         TTZ   Species Fractions "<<endl;
        for(N=1;N<=geom->NCELLS;N++)
        {
            file_3<< N<<" ";
            for(M=1;M<=10;M++){
                file_3<<output->VAR[M][N]<<" ";
            }
            file_3<<output->VAR[22][N]<<" ";
            for(M=11;M<=21;M++){
                file_3<<output->VAR[M][N]<<" ";
            }
            for(L=1;M<=gas->MSP;M++){
                file_3<<output->VARSP[1][N][L]<<" ";
            }
            file_3<<endl;
        }
        file_3<<"Individual molecular species"<<endl;
        for(L=1;L<=gas->MSP;L++){
            file_3<<"Species "<<L<<endl;
            file_3<<"Cell x coord.      Sample       Percentage   Species TTx   Species TTy  Species TTz  Trans. Temp.  Rot. Temp.  Vib. Temp.   Spec. Temp  u Diff. Vel. v Diff. Vel. w. Diff. Vel. Elec. Temp."<<endl;
            for(N=1;N<=geom->NCELLS;N++){
                file_3<< N<<" "<<output->VAR[1][N]<<" ";
                for(M=0;M<=12;M++)
                    file_3<<output->VARSP[M][N][L]<<" ";
                file_3<<endl;
            }
        }
        //dout
        //999 FORMAT (I5,30G13.5)
        //998 FORMAT (G280.0)
        // 997 FORMAT (G188.0)
        // CLOSE (3)
        file_3.close();
    }
    if(calc->ICLASS==0 && calc->ISF==1){
        //--a homogeneous gas and the "unsteady sampling" option has been chosen-ASSUME THAT IT IS A RELAXATION TEST CASE FOR SECTION 6.2
        INITIALISE_SAMPLES();
        //write a special output file for internal temperatures and temperature versus collision number
        //dout
        file_10.open("RELAX.DAT", ios::app | ios::out);
        if(file_10.is_open()){
            cout<<"RELAX.DAT is opened"<<endl;
        }
        else{
            cout<<"RELAX.DAT not opened"<<endl;
        }
        // OPEN (10,FILE='RELAX.DAT',ACCESS='APPEND')
        A=2.0*calc->TOTCOL/molecs->NM; //--mean collisions
        //--VAR(11,N)   //--overall
        //--VAR(8,N)    //--translational
        //--VAR(9,N)    //--rotational
        //--VAR(10,N)   //--vibrational
        //--VAR(22,N)   //--electronic
        file_10<<setw(15)<<A<<setw(15)<<output->VAR[8][1]<<setw(15)<<output->VAR[9][1]<<setw(15)<<output->VAR[8][1]-output->VAR[9][1]<<endl;
        //file_10<<A<<"\t"<<output->VAR[11][1]<<"\t"<<output->VAR[8][1]<<"\t"<<output->VAR[9][1]<<"\t"<<output->VAR[10][1]<<"\t"<<output->VAR[22][1]<<endl;
        //file_10<<A<<"\t"<<output->VAR[8][1]<<"\t"<<output->VAR[9][1]<<"\t"<<output->VAR[8][1]-output->VAR[9][1]<<endl;
        //  WRITE (10,950) A,VAR(8,1),VAR(9,1),VAR(8,1)-VAR(9,1)   //--Generates output for Figs. 6.1 and 6.2
        //  WRITE (10,950) A,VAR(11,1),VAR(8,1),VAR(9,1),VAR(10,1),VAR(22,1)   //--Generates output for modal temperatures in Figs. 6.3, 6.5 +
        //  WRITE (10,950) A,0.5D00*(VAR(8,1)+VAR(9,1)),VAR(10,1),0.5D00*(VAR(8,1)+VAR(9,1))-VAR(10,1)  //--Generates output for Figs. 6.4
        //
        //--VARSP(8,N,L) //--overall temperature of species L
        //  WRITE (10,950) A,VARSP(8,1,3),VARSP(8,1,2),VARSP(8,1,5),VARSP(8,1,4),A  //--output for Fig 6.17
        // CLOSE (10)
        file_10.close();
    }
    //dout
    // 950 FORMAT (6G13.5)
    if(gas->IGAS==8||gas->IGAS==6||gas->IGAS==4)
    {
        //--Write a special output file for the composition of a reacting gas as a function of time
        //dout
        //OPEN (10,FILE='COMPOSITION.DAT',ACCESS='APPEND')
        file_10.open("COMPOSITION.DAT", ios::app | ios::out);
        if(file_10.is_open()){
            cout<<"COMPOSITION.DAT is opened"<<endl;
        }
        else{
            cout<<"COMPOSITION.DAT not opened"<<endl;
        }
        AS=molecs->NM;
        //dout
        AT=calc->FTIME*1.e6;
        if (gas->IGAS == 4)
            file_10<< AT <<" "<<(double)(NMS[1])/1000000<<" "<<A<<" "<<output->VAR[11][1]<<endl;    //--Data for fig
        if (gas->IGAS == 8)
            file_10<<AT<<" "<<NMS[1]/AS<<" "<<NMS[2]/AS<<" "<<NMS[3]/AS<<" "<<NMS[4]/AS<<" "<<NMS[5]/AS<<" "<<NMS[6]/AS<<" "<<NMS[7]/AS<<" "<<NMS[8]/AS<<" "<<output->VAR[11][1]<<endl;
        if (gas->IGAS == 6)
            file_10<<AT<<" "<<NMS[1]/AS<<" "<<NMS[2]/AS<<" "<<NMS[3]/AS<<" "<<NMS[4]/AS<<" "<<NMS[5]/AS<<" "<<output->VAR[11][1]<<endl;
        //dout
        // 888 FORMAT(10G13.5)
        file_10.close();
    }
    if(calc->FTIME>0.5e00*calc->DTM){
        //
        //--reset collision and transit times etc.
        //
        cout<<"Output files written "<<endl;
        DTMI=calc->DTM;
        if(calc->IMTS<2){
            if(calc->ICLASS>0)
                calc->DTM*=2;
            //--this makes it possible for DTM to increase, it will be reduced as necessary
            for(NN=1;NN<=geom->NCELLS;NN++)
            {
                CDTM[NN]=calc->DTM;
                B=geom->CELL[3][NN]-geom->CELL[2][NN] ;//--sampling cell width
                if(output->VAR[13][NN]>20.e00){
                    //consider the local collision rate
                    CDTM[NN]=output->VAR[14][NN]*calc->CPDTM;
                    //look also at sampling cell transit time based on the local flow speed
                    A=(B/(fabs(output->VAR[5][NN])))*calc->TPDTM;
                    if(A<CDTM[NN])
                        CDTM[NN]=A;
                }
                else{
                    //-- base the time step on a sampling cell transit time at the refence vmp
                    A=calc->TPDTM*B/gas->VMPM;
                    if(A<CDTM[NN])
                        CDTM[NN]=A;
                }
                if(CDTM[NN]<calc->DTM)
                    calc->DTM=CDTM[NN];
            }
        }
        else
        {
            //dout
            //memset(CDTM, calc->DTM, sizeof(*CDTM));
            for(int i=0;i<geom->NCELLS+1;i++)
                CDTM[i]= calc->DTM;
            //CDTM=calc->DTM;
        }
        for(N=1;N<=geom->NCELLS;N++){
            NN=geom->ICCELL[3][N];
            geom->CCELL[3][N]=0.5*CDTM[NN];
        }
        file_9<<"DTM changes  from "<<DTMI<<" to "<<calc->DTM<<endl;
        calc->DTSAMP=calc->DTSAMP*calc->DTM/DTMI;
        calc->DTOUT=calc->DTOUT*calc->DTM/DTMI;
    }
    else
    {
        INITIALISE_SAMPLES();
    }
    if(calc->ICLASS==1&& calc->ISF==1)
    {
        //*************************************************************************
        //--write TECPLOT data files for x-t diagram (unsteady calculation only)
        //--comment out if not needed
        //dout
        file_18.open("DS1xt.DAT", ios::app | ios::out);
        if(file_18.is_open()){
            cout<<"DS1xt.DAT is opened"<<endl;
        }
        else
            cout<<"DS1xt.DAT not opened"<<endl;
        // OPEN (18,FILE='DS1xt.DAT',ACCESS='APPEND')
        //--make sure that it is empty at the stary of the run
        SETXT();
        // CLOSE (18)
        file_18.close();
        //**************************************************************************
    }
    //WRITE (19,*) calc->FTIME,-output->VARS[5][1],-output->VARS[5][1]-output->VARS[6][1]
    
    file_7.open("PROFILE.DAT" , ios::out);
    if(file_7.is_open()){
        cout<<"PROFILE.DAT is opened"<<endl;
    }
    else
        cout<<"PROFILE.DAT not opened"<<endl;
    // OPEN (7,FILE='PROFILE.DAT',FORM='FORMATTED')
    //
    //OPEN (8,FILE='ENERGYPROF.DAT',FORM='FORMATTED')
    //
    // 995 FORMAT (22G13.5)
    // 996 FORMAT (12G14.6)
    for(N=1;N<=geom->NCELLS;N++)
    {
        //
        //--the following line is the default output
        //  WRITE (7,995) VAR(1,N),VAR(4,N),VAR(3,N),VAR(11,N),VAR(18,N),VAR(5,N),VAR(12,N),VAR(8,N),VAR(9,N),VAR(10,N),VAR(22,N),     &
        //        (VARSP(8,N,M),M=1,MSP),(VARSP(1,N,M),M=1,MSP)
        //
        //--calculate energies per unit mass (employed for re-entry shock wave in Section 7.5)
        C1=0.5e00*pow(output->VAR[5][N],2);    //--Kinetic
        C2=0.e00;                 //--Thermal
        C3=0.e00;                //--Rotational
        C4=0.e00;               //--Vibrational
        C5=0.e00;              //--Electronic
        C6=0.e00;             //--Formation
        for(L=1;L<=gas->MSP;L++)
        {
            //    C2=C2+3.D00*BOLTZ*VARSP(5,N,L)*VARSP(1,N,L)/SP(5,L)
            A=(output->CS[1][N][L]/output->VARSP[1][N][L])*gas->SP[5][L];
            if(output->CS[1][N][L]>0.5e00){
                C2=C2+0.5e00*(output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L])*gas->SP[5][L]/A;
                if(gas->ISPR[1][L]>0)
                    C3=C3+output->CS[8][N][L];
                if(gas->ISPV[L]>0)
                    C4=C4+output->CS[10][N][L]*BOLTZ*gas->SPVM[1][1][L]/A;
                if(gas->NELL[L]>1)
                    C5=C5+output->CS[9][N][L]/A;
                C6=C6+gas->SP[6][L]*output->CS[1][N][L]/A;
            }
        }
        C2=C2-C1;
        //  A=0.5D00*VFX(1)**2+2.5D00*BOLTZ*FTMP(1)/(0.75*SP(5,2)+0.25*SP(5,1))
        C7=C1+C2+C3+C4+C5+C6;
        //
        //  WRITE (8,995) VAR(1,N),C1/A,C2/A,C3/A,C4/A,C5/A,C6/A,C7/A
        //
        //--the following lines are for normalised shock wave output in a simple gas (Sec 7.3)
        C1=gas->FND[2]-gas->FND[1];
        C2=gas->FTMP[2]-gas->FTMP[1];
        
        file_7<<output->VAR[1][N]<<" "<<output->VAR[2][N]<<" "<<(0.5*(output->VAR[20][N]+output->VAR[21][N])-gas->FTMP[1])/C2<<" "<<(output->VAR[19][N]-gas->FTMP[1])/C2<<" "<<(output->VAR[11][N]-gas->FTMP[1])/C2<<" "<<(output->VAR[3][N]-gas->FND[1])/C1<<endl;
        //--the following replaces sample size with density
        //C3=0.D00
        //DO L=1,MSP
        //  C3=C3+FND(1)*FSP(L,1)*SP(5,L)  //--upstream density
        //END DO
        //C4=0.D00
        //DO L=1,MSP
        //  C4=C4+FND(2)*FSP(L,2)*SP(5,L)  //--upstream density
        //END DO
        //
        //  WRITE (7,996) VAR(1,N),(VAR(4,N)-C3)/(C4-C3),(0.5*(VAR(20,N)+VAR(21,N))-FTMP(1))/C2,(VAR(19,N)-FTMP(1))/C2,(VAR(11,N)-FTMP(1))/C2,    &
        //        (VAR(3,N)-FND(1))/C1
        //--the following lines is for a single species in a gas mixture
        //  C1=C1*FSP(3,1)
        //  WRITE (7,996) VAR(1,N),VARSP(1,N,3),(0.5*(VARSP(3,N,3)+VARSP(4,N,3))-FTMP(1))/C2,(VARSP(2,N,3)-FTMP(1))/C2,(VARSP(5,N,3)-FTMP(1))/C2,(VAR(3,N)*VARSP(1,N,3)-FND(1)*FSP(3,1))/C1
        //
        //--the following line is for Couette flow (Sec 7.4)
        //  WRITE (7,996) VAR(1,N),VAR(2,N),VAR(5,N),VAR(6,N),VAR(7,N),VAR(11,N)
        //--the following line is for the breakdown of equilibrium in expansions (Sec 7.10)
        //  WRITE (7,996) VAR(1,N),VAR(2,N),VAR(12,N),VAR(4,N),VAR(5,N),VAR(8,N),VAR(9,N),VAR(10,N),VAR(11,N),VAR(19,N),VAR(20,N),VAR(21,N)
        //
    }
    if(calc->ISF==1)
        INITIALISE_SAMPLES();
    // CLOSE(7)
    file_7.close();
    //
    //--deallocate local variables
    //
    //dout
    for(int i=0;i<gas->MMVM+1;i++){
        delete [] TV[i];
    }
    delete [] TV;
    delete [] TVIB;
    delete [] VDOF;
    for(int i=0;i<gas->MSP+1;i++){
        delete [] THCOL[i];
    }
    delete [] THCOL;
    // DEALLOCATE (TV,TVIB,VDOF,THCOL,STAT=ERROR)
    // if(calc->ERROR)
    //     cout<<"PROGRAM COULD NOT DEALLOCATE OUTPUT VARIABLES"<<calc->ERROR;
    calc->TOUT=calc->TOUT+calc->DTOUT;
    return;
}

void COLLISIONS()
{
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    start= clock();
    double duration;
    int N,NN,M,MM,L,LL,K,KK,KT,J,I,II,III,NSP,MAXLEV,IV,NSEL,KV,LS,MS,KS,JS,IIII,LZ,KL,IS,IREC,NLOOP,IA,IDISS,IEX,NEL,NAS,NPS,
    JJ,LIMLEV,KVV,KW,INIL,INIM,JI,LV,IVM,NMC,NVM,LSI,JX,MOLA,KR,JKV,NSC,KKV,IAX,NSTEP,NTRY,NLEVEL,NSTATE,IK,NK,MSI ;
    double A,AA,AAA,AB,B,BB,BBB,ABA,ASEL,DTC,SEP,VR,VRR,ECT,EVIB,ECC,ZV,ERM,C,OC,SD,D,CVR,PROB,RML,RMM,ECTOT,ETI,EREC,ET2,
    XMIN,XMAX,WFC,CENI,CENF,VRRT,EA,DEN,E1,E2,VRI,VRA ;
    double VRC[4],VCM[4],VRCP[4],VRCT[4];
    //   //N,M,K working integer
    // //LS,MS,KS,JS molecular species
    // //VRC components of the relative velocity
    // //RML,RMM molecule mass parameters
    // //VCM components of the center of mass velocity
    // //VRCP post-collision components of the relative velocity
    // //SEP the collision partner separation
    // //VRR the square of the relative speed
    // //VR the relative speed
    // //ECT relative translational energy
    // //EVIB vibrational energy
    // //ECC collision energy (rel trans +vib)
    // //MAXLEV maximum vibrational level
    // //ZV vibration collision number
    // //SDF the number of degrees of freedom associated with the collision
    // //ERM rotational energy
    // //NSEL integer number of selections
    // //NTRY number of attempts to find a second molecule
    // //CVR product of collision cross-section and relative speed
    // //PROB a probability
    // //KT third body molecule code
    // //ECTOT energy added at recmbination
    // //IREC initially 0, becomes 1 of a recombination occurs
    // //WFC weighting factor in the cell
    // //IEX is the reaction that occurs (1 if only one is possible)
    // //EA activation energy
    // //NPS the number of possible electronic states
    // //NAS the number of available electronic states
    //cout<<"START COLLISIONS"<<endl;
    //    dout
	cout<<geom->XB[1]<<" "<<geom->XB[2]<<endl;
    for( N=1;N<=geom->NCCELLS;N++)
    {    
        if((calc->FTIME-geom->CCELL[5][N])>geom->CCELL[3][N])
        {   
 	   // cout<<N <<"  "<<geom->CCELL[3][N]<<endl;
            DTC=2.e00*geom->CCELL[3][N];
            //calculate collisions appropriate to  time DTC
            if(geom->ICCELL[2][N]>1)
            {
                //no collisions calculated if there are less than two molecules in collision cell
                NN=geom->ICCELL[3][N];
                WFC=1.e00;
                if(geom->IWF==1 && geom->IVB==0)
                {
                    //dout
                    WFC=1.e00+geom->WFM*pow(geom->CELL[1][NN],geom->IFX);
                }
                geom->CCELL[5][N]=geom->CCELL[5][N]+DTC;
                if(geom->IVB==0)
                {
                    AAA=geom->CCELL[1][N];
                }
                if(geom->IVB==1)
                {
                    C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/(double)(geom->NDIV*geom->NCIS);
                    //dout
                    XMIN=geom->XB[1]+(double)(N-1)*C;
                    XMAX=XMIN+C;
                    //dout
                    WFC=1.e00+geom->WFM*pow((0.5e00*(XMIN+XMAX)),geom->IFX);
                    if(geom->IFX==0)
                    {
                        AAA=XMAX-XMIN;
                    }
                    if(geom->IFX==1)
                    {
                        AAA=PI*(pow(XMAX,2)-pow(XMIN,2)); //assumes unit length of full cylinder
                    }
                    if(geom->IFX==2)
                    {
                        AAA=1.33333333333333333333e00*PI*(pow(XMAX,3)-pow(XMIN,3));    //flow is in the full sphere
                    }
                }
                //these statements implement the N(N-1) scheme
                ASEL=0.5e00*geom->ICCELL[2][N]*(geom->ICCELL[2][N]-1)*WFC*calc->FNUM*geom->CCELL[4][N]*DTC/AAA+geom->CCELL[2][N];
                NSEL=ASEL;
                //dout
                geom->CCELL[2][N]=ASEL-(double)(NSEL);
                if(NSEL>0)
                {
                    I=0; //counts the number of selections
                    KL=0; //becomes 1 if it is the last selection
                    IIII=0; //becomes 1 if there is a recombination
                    for(KL=1;KL<=NSEL;KL++)
                    {
                        I=I+1;
                        III=0; //becomes 1 if there is no valid collision partner
                        if(geom->ICCELL[2][N]==2)
                        {
                            K=1+geom->ICCELL[1][N];
                            //dout
                            L=molecs->ICREF[K];
                            K=2+geom->ICCELL[1][N];
                            //dout
                            M=molecs->ICREF[K];
                            if(M==molecs->IPCP[L])
                            {
                                III=1;
                                geom->CCELL[5][N]=geom->CCELL[5][N]-DTC;
                            }
                        }
                        else
                        {
                            //dout
                            //                            RANDOM_NUMBER(RANF);
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                            //dout
                            L=molecs->ICREF[K];
                            //one molecule has been selected at random
                            if(calc->NNC==0)
                            {
                                //select the collision partner at random
                                M=L;
                                NTRY=0;
                                while(M==L)
                                {
                                    //dout
                                    //                                    RANDOM_NUMBER(RANF);
                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                    K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                    M=molecs->ICREF[K];
                                    if(M==molecs->IPCP[L])
                                    {
                                        if(NTRY<5*geom->ICCELL[2][N])
                                        {
                                            M=L;
                                        }
                                        else
                                        {
                                            III = 1;
                                            geom->CCELL[5][N]=geom->CCELL[5][N]-DTC/ASEL;
                                            M=L+1;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //elect the nearest from the total number (< 30) or a random 30
                                if(geom->ICCELL[2][N]<30)
                                {
                                    LL=geom->ICCELL[2][N];
                                }
                                else
                                {
                                    LL=30;
                                }
                                SEP=1.0e10;
                                M=0;
                                for(J=1;J<=LL;J++)
                                {
                                    if(LL<30)
                                    {
                                        K=J+geom->ICCELL[1][N];
                                    }
                                    else
                                    {
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                    }
                                    MM=molecs->ICREF[K];
                                    if(MM != L)
                                    {
                                        //exclude the already selected molecule
                                        if(MM != molecs->IPCP[L])
                                        {
                                            //exclude the previous collision partner
                                            //dout
                                            A=fabs(molecs->PX[1][L]-molecs->PX[1][MM]);
                                            if(A<SEP&& A>1.e-8*geom->DDIV)
                                            {
                                                M=MM;
                                                SEP=A;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if(III==0)
                        {
                            for(KK=1;KK<=3;KK++)
                            {
                                VRC[KK]=molecs->PV[KK][L]-molecs->PV[KK][M];
                            }
                            VRR=VRC[1]*VRC[1]+VRC[2]*VRC[2]+VRC[3]*VRC[3];
                            VR=sqrt(VRR);
                            VRI=VR;
                            //Simple GAs
                            if(gas->MSP==1)
                            {
                                //dout
                                CVR=VR*gas->CXSS*pow(2.e00*BOLTZ*gas->SP[2][1]/(gas->RMAS*VRR),(gas->SP[3][1]-0.5e00))*gas->RGFS;
                                if(CVR>geom->CCELL[4][N])
                                {
                                    geom->CCELL[4][N]=CVR;
                                }
                                //dout
                                //                                RANDOM_NUMBER(RANF);
                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                if(calc->RANF<CVR/geom->CCELL[4][N])
                                {
                                    // the collision occurs
                                    if(M==molecs->IPCP[L]&& L==molecs->IPCP[M])
                                    {
                                        file_9<<"Duplicate collision"<<endl;
                                    }
                                    calc->TOTCOL=calc->TOTCOL+1.e00;
                                    calc->TCOL[1][1]=calc->TCOL[1][1]+2.e00;
                                    output->COLLS[NN]=output->COLLS[NN]+1.e000;
                                    output->WCOLLS[NN]=output->WCOLLS[NN]+WFC;
                                    //dout
                                    SEP=fabs(molecs->PX[1][L]-molecs->PX[1][M]);
                                    output->CLSEP[NN]=output->CLSEP[NN]+SEP;
                                    if(gas->ISPR[1][1]>0)
                                    {
                                        //Larsen-Borgnakke serial redistribution
                                        ECT=0.5e00*gas->RMAS*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            //consider the molecules in turn
                                            if(NSP==1)
                                            {
                                                K=L;
                                            }
                                            else
                                            {
                                                K=M;
                                            }
                                            if(gas->MMVM>0)
                                            {
                                                if(gas->ISPV[1]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[1];KV++)
                                                    {
                                                        EVIB=(double)(molecs->IPVIB[KV][K]*BOLTZ*gas->SPVM[1][KV][1]);
                                                        ECC=ECT+EVIB;
                                                        if(gas->SPVM[3][KV][1]>0.0)
                                                        {
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][1]);
                                                            B=gas->SPVM[4][KV][1]/gas->SPVM[3][KV][1]; //Tdiss/Tref
                                                            A= gas->SPVM[4][KV][1]/output->VAR[8][NN] ;//Tdiss/Ttrans
                                                            //ZV=(A**SPM(3,1,1))*(SPVM(3,KV,1)*(B**(-SPM(3,1,1))))**(((A**0.3333333D00)-1.D00)/((B**0.33333D00)-1.D00))
                                                            ZV=pow(A,gas->SPM[3][1][1])*pow(gas->SPVM[3][KV][1]*pow(B,-gas->SPM[3][1][1]),((pow(A,0.3333333e00)-1e00)/(pow(B,33333e00)-1.e00)));
                                                        }
                                                        else
                                                        {
                                                            ZV=gas->SPVM[2][KV][1];
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][1])+1;
                                                        }
                                                        //dout
                                                        //                                                        RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        if(1.e00/ZV>calc->RANF)
                                                        {
                                                            II=0;
                                                            while(II==0)
                                                            {
                                                                //dout
                                                                //                                                                RANDOM_NUMBER(RANF);
                                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                IV=calc->RANF*(MAXLEV+0.99999999e00);
                                                                molecs->IPVIB[KV][K]=IV;
                                                                EVIB=(double)(IV)*BOLTZ;
                                                                if(EVIB<ECC)
                                                                {
                                                                    PROB=pow((1.e00-EVIB/ECC),(1.5e00-gas->SPM[3][KV][1]));
                                                                    //PROB is the probability ratio of eqn (3.28)
                                                                    //dout
                                                                    //                                                                    RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    if(PROB>calc->RANF)
                                                                        II=1;
                                                                }
                                                            }
                                                            ECT=ECC-EVIB;
                                                        }
                                                    }
                                                }
                                            }
                                            //now rotation of this molecule
                                            //dout
                                            if(gas->ISPR[1][1] > 0)
                                            {
                                                if(gas->ISPR[2][1]==0)
                                                {
                                                    B=1.e00/gas->SPR[1][1];
                                                }
                                                else //use molecule rather than mean value
                                                {
                                                    B=1.e00/(gas->SPR[1][1]+gas->SPR[2][1]*output->VAR[8][NN]+gas->SPR[3][1]*pow(output->VAR[8][NN],2));
                                                }
                                                //dout
                                                //                                                RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF)
                                                {
                                                    ECC=ECT +molecs->PROT[K];
                                                    if(gas->ISPR[1][1]==2)
                                                    {
                                                        //dout
                                                        //                                                        RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        ERM=1.e00-pow(calc->RANF,1.e00/(2.5e00-gas->SP[3][1])); //eqn(5.46)
                                                    }
                                                    else
                                                    {
                                                        //dout
                                                        LBS(0.5e00*gas->ISPR[1][1]-1.e00,1.5e00-gas->SP[3][1],ERM);
                                                    }
                                                    molecs->PROT[K]=ERM*ECC;
                                                    ECT=ECC-molecs->PROT[K];
                                                }
                                            }
                                        }
                                        //adjust VR for the change in energy;
                                        VR=sqrt(2.e00*ECT/gas->SPM[1][1][1]);
                                    }
                                    //end of L-B redistribution
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        VCM[KK]=0.5e00*(molecs->PV[KK][L]+molecs->PV[KK][M]);
                                    }
                                    //dout
                                    if(fabs(gas->SP[4][1]-1.0) < 0.001)
                                    {
                                        //use the VHS logic //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*calc->RANF-1.e00;
                                        //B is the cosine of a random elevation angle
                                        A=sqrt(1.e00-B*B);
                                        VRCP[1]=B*VR;
                                        //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //C is a random azimuth angle
                                        //dout
                                        VRCP[2]=A*cos(C)*VR;
                                        VRCP[3]=A*sin(C)*VR;
                                    }
                                    else
                                    {
                                        //use the VSS logic //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*(pow(calc->RANF,gas->SP[4][1]))-1.e00;
                                        //B is the cosine of the deflection angle for the VSS model (Eqn. 11.8) of Bird(1994))
                                        A=sqrt(1.e00-B*B);
                                        //dout
                                        //                                                 RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //dout
                                        OC=(double)cos(C);
                                        SD=(double)sin(C);
                                        D=sqrt(pow(VRC[2],2)+pow(VRC[3],2));
                                        VRA=VR/VRI;
                                        VRCP[1]=(B*VRC[1]+A*SD*D)*VRA;
                                        VRCP[2]=(B*VRC[2]+A*(VRI*VRC[3]*OC-VRC[1]*VRC[2]*SD)/D)*VRA;
                                        VRCP[3]=(B*VRC[2]+A*(VRI*VRC[2]*OC-VRC[1]*VRC[3]*SD)/D)*VRA;
                                        //the post-collision rel. velocity components are based on eqn (3.18)
                                    }
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        molecs->PV[KK][L]=VCM[KK]+0.5e00*VRCP[KK];
                                        molecs->PV[KK][M]=VCM[KK]-0.5e00*VRCP[KK];
                                    }
                                    molecs->IPCP[L]=M;
                                    molecs->IPCP[M]=L;
                                }
                            } //collision occurrence
                            else
                            {
                                //Gas Mixture
                                LS=fabs(molecs->IPSP[L]);
                                MS=fabs(molecs->IPSP[M]);
                                CVR=VR*gas->SPM[2][LS][MS]*pow(((2.e00*BOLTZ*gas->SPM[5][LS][MS])/((gas->SPM[1][LS][MS])*VRR)),(gas->SPM[3][LS][MS]-0.5e00))*gas->SPM[6][LS][MS];
                                if(CVR>geom->CCELL[4][N])
                                {
                                    geom->CCELL[4][N]=CVR;
                                }
                                //dout
                                //                                    RANDOM_NUMBER(RANF);
                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                if(calc->RANF<CVR/geom->CCELL[4][N] && molecs->IPCELL[L]>0 && molecs->IPCELL[M]>0)
                                {
                                    //the collision occurs (-ve IPCELL indicates recombined molecule marled for removal)
                                    if(M==molecs->IPCP[L] && L==molecs->IPCP[M])
                                    {
                                        file_9<<"Duplicate collision";
                                    }
                                    calc->TOTCOL=calc->TOTCOL+1.e00;
                                    calc->TCOL[LS][MS]=calc->TCOL[LS][MS]+1.e00;
                                    calc->TCOL[MS][LS]=calc->TCOL[MS][LS]+1.e00;
                                    output->COLLS[NN]=output->COLLS[NN]+1.e00;
                                    output->WCOLLS[NN]=output->WCOLLS[NN]+WFC;
                                    SEP=fabs(molecs->PX[1][L]-molecs->PX[1][M]);
                                    output->CLSEP[NN]=output->CLSEP[NN]+SEP;
                                    RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                    RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        VCM[KK]=RML*molecs->PV[KK][L]+RMM*molecs->PV[KK][M];
                                    }
                                    IDISS=0;
                                    IREC=0;
                                    IEX=0;
                                    //check for dissociation
                                    if(gas->ISPR[1][LS]>0 || gas->ISPR[1][MS]>0)
                                    {
                                        ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            if(NSP==1)
                                            {
                                                K=L; KS=LS; JS=MS;
                                            }
                                            else
                                            {
                                                K=M ; KS=MS ; JS=LS;
                                            }
                                            if(gas->MMVM>0)
                                            {
                                                if(gas->ISPV[KS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[KS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][K]>=0 && IDISS==0)
                                                        {
                                                            //do not redistribute to a dissociating molecule marked for removal
                                                            EVIB=(double)(molecs->IPVIB[KV][K]*BOLTZ*gas->SPVM[1][KV][KS]);
                                                            ECC=ECT+EVIB;
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                            LIMLEV=gas->SPVM[4][KV][KS]/gas->SPVM[1][KV][KS];
                                                            if(MAXLEV > LIMLEV)
                                                            {
                                                                //dissociation occurs subject to reduction factor  -  reflects the infinity of levels past the dissociation limit
                                                                //dout
                                                                //                                                                    RANDOM_NUMBER(RANF)
                                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                if(calc->RANF<gas->SPVM[5][KV][KS])
                                                                {
                                                                    IDISS=1;
                                                                    LZ=molecs->IPVIB[KV][K];
                                                                    output->NDISSL[LZ]=output->NDISSL[LZ]+1;
                                                                    ECT=ECT-BOLTZ*gas->SPVM[4][KV][KS]+EVIB;
                                                                    //adjust VR for the change in energy
                                                                    VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                                    VR=sqrt(VRR);
                                                                    molecs->IPVIB[KV][K]=-1;
                                                                    //a negative IPVIB marks a molecule for dissociation
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    IEX=0;    //becomes the reaction number if a reaction occurs
                                    IREC=0;   //becomes 1 if a recombination occurs
                                    if(IDISS==0)
                                    {
                                        //dissociation has not occurred
                                        //consider possible recombinations
                                        if(gas->ISPRC[LS][MS]>0 && geom->ICCELL[2][N]>2)
                                        {
                                            //possible recombination using model based on collision volume for equilibrium
                                            KT=L;
                                            //NTRY=0
                                            while(KT==L||KT==M)
                                            {
                                                NTRY+=1;
                                                // if(NTRY>100)
                                                // {
                                                //  cout>>"NTRY 3rd body"<<NTRY;
                                                // }
                                                //RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);\
                                                K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                                KT=molecs->ICREF[K];
                                            }
                                            KS=molecs->IPSP[KT];
                                            //the potential third body is KT OF species KS
                                            AA=(PI/6.e00)*pow((gas->SP[1][LS]+gas->SP[1][MS]+gas->SP[1][KS]),3); //reference volume
                                            BB=AA*gas->SPRC[1][LS][MS][KS]*pow(output->VAR[8][NN]/gas->SPVM[1][gas->ISPRK[LS][MS]][gas->ISPRC[LS][MS]],gas->SPRC[2][LS][MS][KS]);//collision volume
                                            B=BB*geom->ICCELL[2][N]*calc->FNUM/AAA;
                                            if(B>1.e00)
                                            {
                                                cout<<"THREE BODY PROBABILITY"<<B;
                                                //for low density flows in which three-body collisions are very rare, it is advisable to consider recombinations in only a small
                                                //fraction of collisions and to increase the pribability by the inverse of this fraction.  This message provides a warning if this
                                                //factor has been set to an excessively large value
                                            }
                                            //dout
                                            //                                                RANDOM_NUMBER(RANF);
                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                            if(calc->RANF<B)
                                            {
                                                IREC=1;
                                                calc->TRECOMB[gas->ISPRC[LS][MS]]=calc->TRECOMB[gas->ISPRC[LS][MS]]+1.e00;
                                                //the collision now becomes a collision between these with L having the center of mass velocity
                                                A=0.5e00*gas->SPM[1][LS][MS]*VRR ;//the relative energy of the recombining molecules
                                                if(gas->ISPR[1][LS]>0)
                                                    A=A+molecs->PROT[L];
                                                if(gas->MELE>1)
                                                    A=A+molecs->PELE[L];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[LS];KVV++)
                                                    {
                                                        JI=molecs->IPVIB[KVV][L];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        A=A+(double)(JI)*BOLTZ*gas->SPVM[1][KVV][LS];
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    A+=molecs->PROT[M];
                                                if(gas->MELE>1)
                                                    A=A+molecs->PELE[M];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[MS];KVV++)
                                                    {
                                                        JI=molecs->IPVIB[KVV][M];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        A=A+(double)(JI)*BOLTZ*gas->SPVM[1][KVV][MS];
                                                    }
                                                }
                                                gas->TREACL[2][LS]=gas->TREACL[2][LS]-1;
                                                gas->TREACL[2][MS]=gas->TREACL[2][MS]-1;
                                                LSI=LS;
                                                MSI=MS;
                                                LS=gas->ISPRC[LS][MS];
                                                molecs->IPSP[L]=LS;
                                                //any additional vibrational modes must be set to zero
                                                IVM=gas->ISPV[LSI];
                                                NMC=molecs->IPSP[L];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][L]=0;
                                                    }
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[KV]=0.e00;

                                                molecs->IPCELL[M]=-molecs->IPCELL[M]; //recombining molecule M marked for removal
                                                M=KT; //third body molecule is set as molecule M
                                                MS=KS;
                                                gas->TREACG[2][LS]=gas->TREACG[2][LS]+1;
                                                if(gas->ISPR[1][LS]>0)
                                                {
                                                    molecs->PROT[L]=0.e00;
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[L]=0.e00;
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[LS];KVV++)
                                                    {
                                                        if(molecs->IPVIB[KVV][L]<0)
                                                        {
                                                            molecs->IPVIB[KVV][L]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KVV][L]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                {
                                                    molecs->PROT[M]=molecs->PROT[KT];
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[M]=molecs->PELE[KT];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[MS];KVV++)
                                                    {
                                                        molecs->IPVIB[KVV][M]=molecs->IPVIB[KVV][KT];
                                                    }
                                                }
                                                ECTOT=A+gas->SPVM[4][1][LS]*BOLTZ ; //the energy added to this collision
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    molecs->PV[KK][L]=VCM[KK];
                                                }
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    VRC[KK]=molecs->PV[KK][L]-molecs->PV[KK][M];
                                                }
                                                VRR=VRC[1]*VRC[1]+VRC[2]*VRC[2]+VRC[3]*VRC[3];
                                                ECT=0.5e00*gas->SPM[1][LS][MS]*VRR*ECTOT;
                                                //set the vibrational energy of the recombined molecule L to enforce detailed balance
                                                IK=-1;
                                                NK=-1;
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                //NTRY=0;
                                                while(IK<0)
                                                {
                                                    // NTRY+=1;
                                                    // if(NTRY>100)
                                                    //   cout<<"NTRY VibEn"<<NTRY;
                                                    NK=NK+1;
                                                    BB=(output->VAR[8][NN]-gas->SPRT[1][LSI][MSI])*(gas->SPRP[2][LSI][MSI][NK]-gas->SPRP[1][LSI][MSI][NK])/(gas->SPRT[2][LSI][MSI]-gas->SPRT[1][LSI][MSI])-gas->SPRP[1][LSI][MSI][NK];
                                                    if(calc->RANF<BB)
                                                        IK=NK;
                                                }
                                                molecs->IPVIB[1][L]=IK;
                                                ECT=ECT-(double)(IK)*BOLTZ*gas->SPVM[1][gas->ISPRK[LSI][MSI]][LS];
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                VR=sqrt(VRR);
                                                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    VCM[KK]=RML*molecs->PV[KK][L]+RMM*molecs->PV[KK][M];
                                                }
                                            }
                                        }
                                        //consider exchange and chain reactions
                                        if(gas->NSPEX[LS][MS]>0 && IREC==0 && IDISS==0)
                                        {
                                            //possible exchange reaction
                                            //memset(gas->PSF,0.e00,sizeof(*gas->PSF));//gas->PSF=0.e00; //PSF(MMEX) PSF is the probability that this reaction will occur in this collision
                                            for(int i=0;i<gas->MMEX+1;i++)
                                                gas->PSF[i]=0.e00;
                                            
                                            for(JJ=1;JJ<=gas->NSPEX[LS][MS];JJ++)
                                            {
                                                if(LS==gas->ISPEX[JJ][1][LS][MS])
                                                {
                                                    K=L; KS=LS;JS=MS;
                                                }
                                                else
                                                {
                                                    K=M; KS=MS; JS=LS;
                                                }
                                                //the pre-collision molecule that splits is K of species KS
                                                if(gas->SPEX[3][JJ][LS][MS]<0.e00)
                                                    KV=gas->ISPEX[JJ][5][LS][MS];
                                                if(gas->SPEX[3][JJ][LS][MS]>0.e00)
                                                {
                                                    KV=gas->ISPEX[JJ][7][LS][MS];
                                                }
                                                JI=molecs->IPVIB[KV][K];
                                                if(JI<0)
                                                    JI=-JI;
                                                if(JI==99999)
                                                    JI=0;
                                                ECC=0.5e00*gas->SPM[1][LS][MS]*VRR+(double)(JI)*BOLTZ*gas->SPVM[1][KV][KS];
                                                if(gas->SPEX[3][JJ][KS][JS]>0.e00)
                                                {
                                                    //reverse exothermic reaction
                                                    gas->PSF[JJ]=(gas->SPEX[1][JJ][KS][JS]*pow(output->VAR[8][NN]/273.e00,gas->SPEX[2][JJ][KS][JS]))*exp(-gas->SPEX[6][JJ][KS][JS]/(BOLTZ*output->VAR[8][NN]));
                                                }
                                                else
                                                {
                                                    //forward endothermic reaction
                                                    MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                    EA=fabs(gas->SPEX[3][JJ][KS][JS]); //temporarily just the heat of reaction;
                                                    if(ECC>EA)
                                                    {
                                                        //the collision energy must exceed the heat of reaction
                                                        EA=EA+gas->SPEX[6][JJ][KS][JS]; //the activation energy now includes the energy barrier
                                                        DEN=0.e00;
                                                        for(IAX=0;IAX<=MAXLEV;IAX++)
                                                        {
                                                            DEN=DEN+pow((1.e00-(double)(IAX)*BOLTZ*gas->SPVM[1][KV][KS]/ECC),(1.5e00-gas->SPM[3][KS][JS]));
                                                        }
                                                        gas->PSF[JJ]=(double)(gas->ISPEX[JJ][6][LS][MS])*pow((1.e00-EA/ECC),(1.5e00-gas->SPM[3][KS][JS]))/DEN;
                                                    }
                                                }
                                            }
                                            if(gas->NSPEX[LS][MS]>1)
                                            {
                                                BB=0.e00;
                                                for(JJ=1;JJ<=gas->NSPEX[LS][MS];JJ++)
                                                {
                                                    BB=BB+gas->PSF[JJ];
                                                }
                                                //BB is the sum of the probabilities
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(BB>calc->RANF)
                                                {
                                                    BB=0.e00;
                                                    IEX=0;
                                                    JJ=0;
                                                    //NTRY=0;
                                                    while(JJ<gas->NSPEX[LS][MS]&& IEX==0)
                                                    {
                                                        // NTRY=NTRY+1;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout<<"NTRY find IEX"<<NTRY;
                                                        // }
                                                        JJ+=1;
                                                        BB+=gas->PSF[JJ];
                                                        if(BB>calc->RANF)
                                                            IEX=JJ;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                IEX=0;
                                                if(gas->PSF[1]>calc->RANF)
                                                    IEX=1;
                                            }
                                            if(IEX>0)
                                            {
                                                //exchange or chain reaction occurs
                                                JX=gas->NEX[IEX][LS][MS];
                                                //cout<<"Reaction"<<JX;
                                                gas->TNEX[JX]=gas->TNEX[JX]+1.e00;
                                                //cout<<IEX<<L<<M<<LS<<MS;
                                                molecs->IPSP[L]=gas->ISPEX[IEX][3][LS][MS]; //L is now the new molecule that splits
                                                molecs->IPSP[M]=gas->ISPEX[IEX][4][LS][MS];
                                                LSI=LS;
                                                MSI=MS;
                                                //any additional vibrational modes must be set to zero
                                                IVM=gas->ISPV[LS];
                                                NMC=molecs->IPCP[L];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][L]=0;
                                                    }
                                                }
                                                IVM=gas->ISPV[MS];
                                                NMC=molecs->IPCP[M];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][M]=0;
                                                    }
                                                }
                                                //put all pre-collision energies into the relative translational energy and adjust for the reaction energy
                                                ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                                if(gas->ISPR[1][LS]>0)
                                                    ECT=ECT+molecs->PROT[L];
                                                if(gas->MELE>1)
                                                    ECT=ECT+molecs->PELE[L];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[LS];KV++)
                                                    {
                                                        JI=molecs->IPVIB[KV][L];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        ECT=ECT+(double)(JI)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    ECT=ECT+molecs->PROT[M];
                                                if(gas->MELE>1)
                                                    ECT=ECT+molecs->PELE[M];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[MS];KV++)
                                                    {
                                                        JI=molecs->IPVIB[KV][M];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        ECT=ECT+(double)(JI)*BOLTZ*gas->SPVM[1][KV][MS];
                                                    }
                                                }
                                                ECT=ECT+gas->SPEX[3][IEX][LS][MS];
                                                if(ECT<0.0)
                                                {
                                                    cout<<"-VE ECT "<<ECT<<endl;
                                                    cout<<"REACTION "<<JJ<<" BETWEEN "<<LS<<" "<<MS<<endl;
                                                    //dout
                                                    cin.get();
                                                    return ;
                                                }
                                                if(gas->SPEX[3][IEX][LS][MS]<0.e00)
                                                {
                                                    gas->TREACL[3][LS]=gas->TREACL[3][LS]-1;
                                                    gas->TREACL[3][MS]=gas->TREACL[3][MS]-1;
                                                    LS=molecs->IPSP[L] ;
                                                    MS=molecs->IPSP[M] ;
                                                    gas->TREACG[3][LS]=gas->TREACG[3][LS]+1;
                                                    gas->TREACG[3][MS]=gas->TREACG[3][MS]+1;
                                                }
                                                else
                                                {
                                                    gas->TREACL[4][LS]=gas->TREACL[4][LS]-1;
                                                    gas->TREACL[4][MS]=gas->TREACL[4][MS]-1;
                                                    LS=molecs->IPSP[L] ;
                                                    MS=molecs->IPSP[M] ;
                                                    gas->TREACG[4][LS]=gas->TREACG[4][LS]+1;
                                                    gas->TREACG[4][MS]=gas->TREACG[4][MS]+1;
                                                }
                                                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                                //calculate the new VRR to match ECT using the new molecular masses
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KV=1;gas->ISPV[LS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][L]<0)
                                                        {
                                                            molecs->IPVIB[KV][L]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KV][L]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][LS]>0)
                                                    molecs->PROT[L]=0;
                                                if(gas->MELE>1)
                                                    molecs->PELE[L]=0.e00;
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KV=1;gas->ISPV[MS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][M]<0)
                                                        {
                                                            molecs->IPVIB[KV][M]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KV][M]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    molecs->PROT[M]=0;
                                                if(gas->MELE>1)
                                                    molecs->PELE[M]=0.e00;
                                                //set vibrational level of product molecule in exothermic reaction to enforce detailed balance
                                                if(gas->SPEX[3][IEX][LSI][MSI]>0.e00)
                                                {
                                                    //exothermic exchange or chain reaction
                                                    IK=-1; //becomes 0 when the level is chosen
                                                    NK=-1;
                                                    //dout
                                                    //                                                        RANDOM_NUMBER(RANF);
                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                    //NTRY=0;
                                                    while(IK<0)
                                                    {
                                                        // NTRY=NTRY+1;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout>>"NTRY VibProd"<<NTRY<<endl;
                                                        // }
                                                        NK=NK+1;
                                                        BB=(output->VAR[8][NN]-gas->SPEX[4][IEX][LSI][MSI])*  (gas->SPREX[2][IEX][LSI][MSI][NK]-gas->SPREX[1][IEX][LSI][MSI][NK])/(gas->SPEX[5][IEX][LSI][MSI]-gas->SPEX[4][IEX][LSI][MSI])+gas->SPREX[1][IEX][LSI][MSI][NK];
                                                        if(calc->RANF<BB)
                                                            IK=NK;
                                                    }
                                                    if(gas->NSLEV[1][LS]>0)
                                                    {
                                                        IK+=gas->NSLEV[1][LS];
                                                        gas->NSLEV[1][LS]=0;
                                                    }
                                                    KV=gas->ISPEX[IEX][7][LSI][MSI];
                                                    molecs->IPVIB[KV][L]=IK;
                                                    EVIB=(double)(IK)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    ECT=ECT-EVIB;
                                                    if(ECT<0.e00)
                                                    {
                                                        //NTRY=0;
                                                        while(ECT<0.e00)
                                                        {
                                                            //NTRY+=1;
                                                            // if(NTRY>100)
                                                            //     cout<<"NTRY ECT<0"<<NTRY<<endl;
                                                            molecs->IPVIB[KV][L]=molecs->IPVIB[KV][L]-1;
                                                            gas->NSLEV[1][LS]+=1;
                                                            ECT=ECT+BOLTZ*gas->SPVM[1][KV][LS];
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    //for endothermic reaction, select vibration from vib. dist. at macroscopic temperature
                                                    //normal L-B selection would be from the excessively low energy after the endo. reaction
                                                    KV=gas->ISPEX[IEX][5][LS][MS];
                                                    //dout
                                                    SVIB(LS,output->VAR[8][NN],IK,KV);
                                                    if(gas->NSLEV[2][LS]>0)
                                                    {
                                                        IK=IK+gas->NSLEV[2][LS];
                                                        gas->NSLEV[2][LS]=0;
                                                    }
                                                    molecs->IPVIB[KV][L]=IK;
                                                    EVIB=(double)(IK)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    ECT=ECT-EVIB;
                                                    if(ECT<0.e00)
                                                    {
                                                        //NTRY=0;
                                                        while(ECT<0.e00)
                                                        {
                                                            //NTRY+=1;
                                                            molecs->IPVIB[KV][L]-=1;
                                                            gas->NSLEV[2][LS]+=1;
                                                            ECT=ECT+BOLTZ*gas->SPVM[1][KV][LS];
                                                            // if(NTRY>100)
                                                            // {
                                                            //cout<<"NTRY ECT<0#2"<<NTRY<<endl;
                                                            // molecs->IPVIB[KV][L]=0;
                                                            //   ECT+=EVIB;
                                                            //   gas->NSLEV[2][LS]=0;
                                                            // }
                                                        }
                                                    }
                                                }
                                                //set rotational energy of molecule L to equilibrium at the macroscopic temperature
                                                SROT(LS,output->VAR[8][NN],molecs->PROT[L]);
                                                if(gas->SLER[LS]>1.e-21)
                                                {
                                                    molecs->PROT[L]+=gas->SLER[LS];
                                                    gas->SLER[LS]=1.e-21;
                                                }
                                                ECT-=molecs->PROT[L];
                                                ABA=molecs->PROT[L];
                                                if(ECT<0.e00)
                                                {
                                                    //NTRY=0;
                                                    while(ECT<0.e00)
                                                    {
                                                        //NTRY+=1;
                                                        BB=0.5e00*molecs->PROT[L];
                                                        gas->SLER[LS]+=BB;
                                                        molecs->PROT[L]=BB;
                                                        ECT+=BB;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout<<"NTRY ECT<0#3"<<NTRY<<L<<endl;
                                                        //   ECT+=ABA;
                                                        //   molecs->PROT[L]=0;
                                                        //   gas->SLER[LS]=1.e-21;
                                                        // }
                                                    }
                                                }
                                                //calculate the new VRR to match ECT using the new molecular masses
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                            }
                                        }
                                    }
                            
                                        //end of reactions other than the deferred dissociation action in the DISSOCIATION subroutine
                                    if(IREC==0 && IDISS==0)
                                    {
                                        //recombined redistribution already made and there is a separate subroutine for dissociation
                                        //Larsen-Borgnakke serial redistribution
                                        ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            if(NSP==1)
                                            {
                                                K=L;KS=LS;JS=MS;
                                            }
                                            else
                                            {
                                                K=M; KS=MS; JS=LS;
                                            }
                                            //now electronic energy for this molecule
                                            if(gas->MELE>1)
                                            {
                                                B=1.e00/gas->QELC[3][1][KS];
                                                //dout
                                                //                                                        RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF)
                                                {
                                                    NPS=0;
                                                    ECC=ECT+molecs->PELE[K];
                                                    if(gas->NELL[KS]==1){
                                                        NPS=gas->QELC[1][1][KS]; //number of possible states is at least the degeneracy of the ground state
                                                    }
                                                    if(gas->NELL[KS]>1)
                                                    {
                                                        for(NEL=1;NEL<=gas->NELL[KS];NEL++)
                                                        {
                                                            if(ECC>BOLTZ*gas->QELC[2][NEL][KS])
                                                                NPS=NPS+gas->QELC[1][NEL][KS];
                                                        }
                                                        II=0;
                                                        //NTRY=0;
                                                        while(II==0)
                                                        {
                                                            //NTRY+=1;
                                                            // if(NTRY>100)
                                                            //           cout<<"NTRY ElecEn"<<NTRY<<endl;
                                                            //dout
                                                            //                                                                    RANDOM_NUMBER(RANF);
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            NSTATE=ceil(calc->RANF*NPS);//random state, now determine the energy level
                                                            NAS=0;
                                                            NLEVEL=-1;
                                                            for(NEL=1;NEL<=gas->NELL[KS];NEL++)
                                                            {
                                                                NAS= NAS+gas->QELC[1][NEL][KS];
                                                                if(NSTATE<=NAS && NLEVEL<0)
                                                                    NLEVEL=NEL;
                                                            }
                                                            //dout
                                                            //                                                                    RANDOM_NUMBER(RANF);
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            if((1.e00/(B*gas->QELC[3][NLEVEL][KS]))<calc->RANF)
                                                            {
                                                                II=1;
                                                            }
                                                            else
                                                            {
                                                                if(ECC>BOLTZ*gas->QELC[2][NLEVEL][KS])
                                                                {
                                                                    PROB=pow(1.e00-BOLTZ*gas->QELC[2][NLEVEL][KS]/ECC,(1.5e00-gas->SPM[3][KS][JS]));
                                                                    //dout
                                                                    //                                                                            RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    if(PROB>calc->RANF)
                                                                    {
                                                                        II=1;
                                                                        molecs->PELE[K]=BOLTZ*gas->QELC[2][NLEVEL][KS];
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        ECT=ECC-molecs->PELE[K];
                                                    }
                                                }
                                            }
                                            //now the vibrational energy for this molecule
                                            if(gas->MMVM>0 && IEX==0)
                                            {
                                                if(gas->ISPV[KS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[KS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][K]>=0 && IDISS==0) //do not redistribute to a dissociating molecule marked for removal
                                                        {
                                                            EVIB=(double)(molecs->IPVIB[KV][K])*BOLTZ*gas->SPVM[1][KV][KS];
                                                            ECC=ECT+EVIB;
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                            if(gas->SPVM[3][KV][KS]>0.0)
                                                            {   
                                                                B=gas->SPVM[4][KV][KS]/gas->SPVM[3][KV][KS];
                                                                A=gas->SPVM[4][KV][KS]/output->VAR[8][NN];
                                                               ZV = pow(A,gas->SPM[3][KS][JS])*pow((gas->SPVM[2][KV][KS]*pow(B,-gas->SPM[3][KS][JS])),((pow(A,0.3333333e00)-1.e00)/(pow(B,0.33333e00)-1.e00)));
                                                               
                                                            }
                                                            else
                                                                ZV=gas->SPVM[2][KV][KS];
                                                            //                                                                    RANDOM_NUMBER(RANF) //dout
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            if(1.e00/ZV>calc->RANF ||IREC==1)
                                                            {
                                                                II=0;
                                                                NSTEP=0;
                                                                while(II==0 && NSTEP<100000)
                                                                {
                                                                    NSTEP+=1;
                                                                    if(NSTEP>99000)
                                                                    {
                                                                        cout<<NSTEP<<" "<<ECC<<" "<<MAXLEV<<endl;
                                                                        //dout
                                                                        return ;
                                                                    }
                                                                    //                                                                            RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    IV=calc->RANF*(MAXLEV+0.99999999e00);
                                                                    molecs->IPVIB[KV][K]=IV;
                                                                    EVIB=(double)(IV)*BOLTZ*gas->SPVM[1][KV][KS];
                                                                    if(EVIB<ECC)
                                                                    {
                                                                        PROB=pow(1.e00-EVIB/ECC,1.5e00-gas->SPVM[3][KS][JS]);
                                                                        //PROB is the probability ratio of eqn (3.28)
                                                                        //                                                                                RANDOM_NUMBER(RANF);
                                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                        if(PROB>calc->RANF)
                                                                            II=1;
                                                                    }
                                                                }
                                                                ECT=ECC-EVIB;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            //now rotation of this molecule
                                            //dout
                                            if(gas->ISPR[1][KS] > 0)
                                            {
                                                if(gas->ISPR[2][KS]==0 && gas->ISPR[2][JS]==0)
                                                {
                                                    B=1.e00/gas->SPM[7][KS][JS];
                                                }
                                                else
                                                    B=1.e00/(gas->SPR[1][KS])+gas->SPR[2][KS]*output->VAR[8][NN]+gas->SPR[3][KS]*pow(output->VAR[8][NN],2);
                                                //                                                        RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF|| IREC==1)
                                                {
                                                    ECC=ECT+molecs->PROT[K];
                                                    if(gas->ISPR[1][KS]==2)
                                                    {
                                                        //                                                                RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        ERM=1.e00-pow(calc->RANF,(1.e00/(2.5e00-gas->SPM[3][KS][JS])));//eqn(5.46)
                                                    }
                                                    else
                                                        LBS(0.5e00*gas->ISPR[1][KS]-1.e00,1.5e00-gas->SPM[3][KS][JS],ERM);
                                                    molecs->PROT[K]=ERM*ECC;
                                                    ECT=ECC-molecs->PROT[K];
                                                }
                                            }
                                        }
                                        //adjust VR for the change in energy
                                        VR=sqrt(2.e00*ECT/gas->SPM[1][LS][MS]);
                                    }//end of L-B redistribution
                                    if(fabs(gas->SPM[8][LS][MS]-1.0)<0.001)
                                    {
                                        //use the VHS logic
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*calc->RANF-1.e00;
                                        //B is the cosine of a random elevation angle
                                        A=sqrt(1.e00-B*B);
                                        VRCP[1]=B*VR;
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //C is a random azimuth angle;
                                        VRCP[2]=A*(double)cos(C)*VR;
                                        VRCP[3]=A*(double)sin(C)*VR;
                                    }
                                    else
                                    {
                                        //use the VSS logic
                                        //the VRCP terms do not allow properly for the change in VR - see new book  !STILL TO BE FIXED
                                        VRA=VR/VRI;
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*pow(calc->RANF,gas->SP[4][1])-1.e00;
                                        // B is the cosine of the deflection angle for the VSS model
                                        A=sqrt(1.e00-B*B);
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        OC=(double)cos(C);
                                        SD=(double)sin(C);
                                        D=sqrt(pow(VRC[2],2)+pow(VRC[3],2));
                                        VRCP[1]=(B*VRC[1]+A*SD*D)*VRA;
                                        VRCP[2]=(B*VRC[2]+A*(VRI*VRC[3]*OC-VRC[1]*VRC[2]*SD)/D)*VRA;
                                        VRCP[3]=(B*VRC[3]+A*(VRI*VRC[2]*OC+VRC[1]*VRC[3]*SD)/D)*VRA;
                                        //the post-collision rel. velocity components are based on eqn (3.18)
                                    }
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        molecs->PV[KK][L]=VCM[KK]+RMM*VRCP[KK];
                                        molecs->PV[KK][M]=VCM[KK]-RMM*VRCP[KK];
                                    }
                                    molecs->IPCP[L]=M;
                                    molecs->IPCP[M]=L;
                                    //call energy(0,E2)
                                    // !              IF (Dfabs(E2-E1) > 1.D-14) read(*,*)
                                }////collision occurrence
                            }
                        }//separate simplegas / mixture coding
                    }
                }
            }
        }
    }//remove any recombined atoms
   duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;

    std::cout<<"printf: "<< duration <<'\n';

    for(N=1;N<=molecs->NM;N++)
    {
        if(molecs->IPCELL[N]<0)
            REMOVE_MOL(N); 
    }

    return;
}


	.file	"tmpxft_0036cdb1_00000000-6_gpu_main.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.section	.text._ZSt4leftRSt8ios_base,"axG",@progbits,_ZSt4leftRSt8ios_base,comdat
	.weak	_ZSt4leftRSt8ios_base
	.type	_ZSt4leftRSt8ios_base, @function
_ZSt4leftRSt8ios_base:
.LFB3280:
	.cfi_startproc
	endbr64
	movl	24(%rdi), %edx
	movq	%rdi, %rax
	andb	$79, %dl
	orl	$32, %edx
	movl	%edx, 24(%rdi)
	ret
	.cfi_endproc
.LFE3280:
	.size	_ZSt4leftRSt8ios_base, .-_ZSt4leftRSt8ios_base
	.text
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB4335:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE4335:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.type	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0, @function
_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0:
.LFB5111:
	.cfi_startproc
	movl	$1, %edx
	jmp	cudaMallocManaged@PLT
	.cfi_endproc
.LFE5111:
	.size	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0, .-_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	.align 2
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0, @function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0:
.LFB5112:
	.cfi_startproc
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	movq	%rsi, %rdi
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	call	_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@PLT
	testb	%al, %al
	je	.L5
	cmpq	%rbp, %rbx
	je	.L6
	movq	8(%rbx), %rdx
	testq	%rdx, %rdx
	je	.L7
	movq	(%rbx), %rsi
	movq	0(%rbp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm@PLT
.L7:
	movq	8(%rbx), %rax
	movq	0(%rbp), %rdx
	movq	%rax, 8(%rbp)
	movb	$0, (%rdx,%rax)
	jmp	.L6
.L5:
	movq	%rbp, %rdi
	call	_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@PLT
	movl	%eax, %edx
	xorl	%eax, %eax
	testb	%dl, %dl
	jne	.L8
	movq	0(%rbp), %rax
	movq	16(%rbp), %r12
.L8:
	movq	(%rbx), %rdx
	movq	%rdx, 0(%rbp)
	movq	8(%rbx), %rdx
	movq	%rdx, 8(%rbp)
	movq	16(%rbx), %rdx
	movq	%rdx, 16(%rbp)
	testq	%rax, %rax
	je	.L9
	movq	%rax, (%rbx)
	movq	%r12, 16(%rbx)
	jmp	.L6
.L9:
	leaq	16(%rbx), %rax
	movq	%rax, (%rbx)
.L6:
	xorl	%eax, %eax
	movq	%rax, 8(%rbx)
	movq	(%rbx), %rax
	movb	$0, (%rax)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5112:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0, .-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0
	.align 2
	.type	_ZNSirsERd.isra.0, @function
_ZNSirsERd.isra.0:
.LFB5113:
	.cfi_startproc
	jmp	_ZNSi10_M_extractIdEERSiRT_@PLT
	.cfi_endproc
.LFE5113:
	.size	_ZNSirsERd.isra.0, .-_ZNSirsERd.isra.0
	.align 2
	.type	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0, @function
_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0:
.LFB5114:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$3, %rsi
	salq	$3, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L18:
	cmpl	%ebp, %r12d
	jle	.L21
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L18
.L21:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5114:
	.size	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0, .-_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	.align 2
	.type	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0, @function
_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0:
.LFB5115:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$2, %rsi
	salq	$2, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L23:
	cmpl	%ebp, %r12d
	jle	.L26
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L23
.L26:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5115:
	.size	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0, .-_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	.align 2
	.type	_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0, @function
_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0:
.LFB5116:
	.cfi_startproc
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movl	%edx, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movslq	%ecx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%r8, %rbx
	subq	$56, %rsp
	.cfi_def_cfa_offset 112
	movl	%esi, 12(%rsp)
	movslq	%edi, %rsi
	movl	%edi, 8(%rsp)
	salq	$3, %rsi
	movq	%r8, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movslq	12(%rsp), %rax
	salq	$3, %rax
	movq	%rax, 16(%rsp)
	movslq	%r13d, %rax
	salq	$3, %rax
	movq	%rax, 24(%rsp)
	leaq	0(,%rbp,8), %rax
	xorl	%ebp, %ebp
	movq	%rax, 32(%rsp)
.L28:
	cmpl	%ebp, 8(%rsp)
	jle	.L35
	movq	(%rbx), %rdi
	movq	16(%rsp), %rsi
	leaq	0(,%rbp,8), %r14
	xorl	%r12d, %r12d
	addq	%r14, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L29:
	cmpl	%r12d, 12(%rsp)
	jle	.L36
	movq	(%rbx), %rdx
	movq	24(%rsp), %rsi
	leaq	0(,%r12,8), %r15
	movq	(%rdx,%r14), %rdi
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	xorl	%edx, %edx
.L30:
	cmpl	%edx, %r13d
	jle	.L37
	movq	(%rbx), %rcx
	movq	32(%rsp), %rsi
	movq	%rdx, 40(%rsp)
	movq	(%rcx,%r14), %rcx
	movq	(%rcx,%r15), %rcx
	leaq	(%rcx,%rdx,8), %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	40(%rsp), %rdx
	incq	%rdx
	jmp	.L30
.L37:
	incq	%r12
	jmp	.L29
.L36:
	incq	%rbp
	jmp	.L28
.L35:
	addq	$56, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5116:
	.size	_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0, .-_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0
	.align 2
	.type	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0, @function
_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0:
.LFB5117:
	.cfi_startproc
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movslq	%esi, %r14
	movslq	%edi, %rsi
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	salq	$3, %rsi
	movq	%r14, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movl	%edi, %r12d
	movq	%rcx, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rcx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movslq	%edx, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	0(,%r14,8), %rax
	movq	%rax, (%rsp)
	leaq	0(,%rbx,8), %rax
	xorl	%ebx, %ebx
	movq	%rax, 8(%rsp)
.L39:
	cmpl	%ebx, %r12d
	jle	.L44
	movq	0(%rbp), %rdi
	movq	(%rsp), %rsi
	leaq	0(,%rbx,8), %r15
	xorl	%r14d, %r14d
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L40:
	cmpl	%r14d, %r13d
	jle	.L45
	movq	0(%rbp), %rcx
	movq	8(%rsp), %rsi
	movq	(%rcx,%r15), %rcx
	leaq	(%rcx,%r14,8), %rdi
	incq	%r14
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L40
.L45:
	incq	%rbx
	jmp	.L39
.L44:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5117:
	.size	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0, .-_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	.align 2
	.type	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0, @function
_ZN6OUTPUT10d_allocateEiiRPPd.isra.0:
.LFB5118:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$3, %rsi
	salq	$3, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L47:
	cmpl	%ebp, %r12d
	jle	.L50
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L47
.L50:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5118:
	.size	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0, .-_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	.align 2
	.type	_ZN6OUTPUT10d_allocateEiRPd.isra.0, @function
_ZN6OUTPUT10d_allocateEiRPd.isra.0:
.LFB5119:
	.cfi_startproc
	movq	%rsi, %rax
	movslq	%edi, %rdi
	leaq	0(,%rdi,8), %rsi
	movq	%rax, %rdi
	jmp	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	.cfi_endproc
.LFE5119:
	.size	_ZN6OUTPUT10d_allocateEiRPd.isra.0, .-_ZN6OUTPUT10d_allocateEiRPd.isra.0
	.align 2
	.type	_ZN3GAS10i_allocateEiiiRPPPi.isra.0, @function
_ZN3GAS10i_allocateEiiiRPPPi.isra.0:
.LFB5120:
	.cfi_startproc
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movslq	%esi, %r14
	movslq	%edi, %rsi
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	salq	$2, %rsi
	movq	%r14, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movl	%edi, %r12d
	movq	%rcx, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rcx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movslq	%edx, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	0(,%r14,4), %rax
	movq	%rax, (%rsp)
	leaq	0(,%rbx,4), %rax
	xorl	%ebx, %ebx
	movq	%rax, 8(%rsp)
.L53:
	cmpl	%ebx, %r12d
	jle	.L58
	movq	0(%rbp), %rdi
	movq	(%rsp), %rsi
	leaq	0(,%rbx,8), %r15
	xorl	%r14d, %r14d
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L54:
	cmpl	%r14d, %r13d
	jle	.L59
	movq	0(%rbp), %rcx
	movq	8(%rsp), %rsi
	movq	(%rcx,%r15), %rcx
	leaq	(%rcx,%r14,8), %rdi
	incq	%r14
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L54
.L59:
	incq	%rbx
	jmp	.L53
.L58:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5120:
	.size	_ZN3GAS10i_allocateEiiiRPPPi.isra.0, .-_ZN3GAS10i_allocateEiiiRPPPi.isra.0
	.align 2
	.type	_ZN3GAS10i_allocateEiiRPPi.isra.0, @function
_ZN3GAS10i_allocateEiiRPPi.isra.0:
.LFB5121:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$2, %rsi
	salq	$2, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L61:
	cmpl	%ebp, %r12d
	jle	.L64
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L61
.L64:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5121:
	.size	_ZN3GAS10i_allocateEiiRPPi.isra.0, .-_ZN3GAS10i_allocateEiiRPPi.isra.0
	.align 2
	.type	_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0, @function
_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0:
.LFB5122:
	.cfi_startproc
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movl	%edx, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movslq	%ecx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%r8, %rbx
	subq	$56, %rsp
	.cfi_def_cfa_offset 112
	movl	%esi, 12(%rsp)
	movslq	%edi, %rsi
	movl	%edi, 8(%rsp)
	salq	$3, %rsi
	movq	%r8, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movslq	12(%rsp), %rax
	salq	$3, %rax
	movq	%rax, 16(%rsp)
	movslq	%r13d, %rax
	salq	$3, %rax
	movq	%rax, 24(%rsp)
	leaq	0(,%rbp,8), %rax
	xorl	%ebp, %ebp
	movq	%rax, 32(%rsp)
.L66:
	cmpl	%ebp, 8(%rsp)
	jle	.L73
	movq	(%rbx), %rdi
	movq	16(%rsp), %rsi
	leaq	0(,%rbp,8), %r14
	xorl	%r12d, %r12d
	addq	%r14, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L67:
	cmpl	%r12d, 12(%rsp)
	jle	.L74
	movq	(%rbx), %rdx
	movq	24(%rsp), %rsi
	leaq	0(,%r12,8), %r15
	movq	(%rdx,%r14), %rdi
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	xorl	%edx, %edx
.L68:
	cmpl	%edx, %r13d
	jle	.L75
	movq	(%rbx), %rcx
	movq	32(%rsp), %rsi
	movq	%rdx, 40(%rsp)
	movq	(%rcx,%r14), %rcx
	movq	(%rcx,%r15), %rcx
	leaq	(%rcx,%rdx,8), %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	40(%rsp), %rdx
	incq	%rdx
	jmp	.L68
.L75:
	incq	%r12
	jmp	.L67
.L74:
	incq	%rbp
	jmp	.L66
.L73:
	addq	$56, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5122:
	.size	_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0, .-_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0
	.align 2
	.type	_ZN3GAS10d_allocateEiiiRPPPd.isra.0, @function
_ZN3GAS10d_allocateEiiiRPPPd.isra.0:
.LFB5123:
	.cfi_startproc
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movslq	%esi, %r14
	movslq	%edi, %rsi
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	salq	$3, %rsi
	movq	%r14, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movl	%edi, %r12d
	movq	%rcx, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rcx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movslq	%edx, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	0(,%r14,8), %rax
	movq	%rax, (%rsp)
	leaq	0(,%rbx,8), %rax
	xorl	%ebx, %ebx
	movq	%rax, 8(%rsp)
.L77:
	cmpl	%ebx, %r12d
	jle	.L82
	movq	0(%rbp), %rdi
	movq	(%rsp), %rsi
	leaq	0(,%rbx,8), %r15
	xorl	%r14d, %r14d
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L78:
	cmpl	%r14d, %r13d
	jle	.L83
	movq	0(%rbp), %rcx
	movq	8(%rsp), %rsi
	movq	(%rcx,%r15), %rcx
	leaq	(%rcx,%r14,8), %rdi
	incq	%r14
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L78
.L83:
	incq	%rbx
	jmp	.L77
.L82:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5123:
	.size	_ZN3GAS10d_allocateEiiiRPPPd.isra.0, .-_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	.align 2
	.type	_ZN3GAS10d_allocateEiiRPPd.isra.0, @function
_ZN3GAS10d_allocateEiiRPPd.isra.0:
.LFB5124:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$3, %rsi
	salq	$3, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L85:
	cmpl	%ebp, %r12d
	jle	.L88
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L85
.L88:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5124:
	.size	_ZN3GAS10d_allocateEiiRPPd.isra.0, .-_ZN3GAS10d_allocateEiiRPPd.isra.0
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"bad_alloc caught: "
	.text
	.align 2
	.type	_ZN6MOLECS10d_allocateEiiRPPd.isra.0, @function
_ZN6MOLECS10d_allocateEiiRPPd.isra.0:
.LFB5125:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA5125
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 64
	salq	$3, %rsi
	salq	$3, %rbx
.LEHB0:
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.LEHE0:
.L90:
	cmpl	%ebp, %r12d
	jle	.L101
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
.LEHB1:
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.LEHE1:
.L94:
	incq	%rbp
	jmp	.L90
.L97:
	endbr64
	movq	%rax, %rdi
.L92:
	decq	%rdx
	jne	.L100
	call	__cxa_begin_catch@PLT
	leaq	.LC0(%rip), %rsi
	leaq	_ZSt4cerr(%rip), %rdi
	movq	%rax, %r14
.LEHB2:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %r15
	movq	(%r14), %rax
	movq	%r14, %rdi
	call	*16(%rax)
	movq	%r15, %rdi
	movq	%rax, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	$10, %esi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@PLT
.LEHE2:
	call	__cxa_end_catch@PLT
	jmp	.L94
.L96:
	endbr64
	movq	%rax, %rbx
.L95:
	call	__cxa_end_catch@PLT
	movq	%rbx, %rdi
.L100:
.LEHB3:
	call	_Unwind_Resume@PLT
.LEHE3:
.L101:
	popq	%rax
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5125:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table,"a",@progbits
	.align 4
.LLSDA5125:
	.byte	0xff
	.byte	0x9b
	.uleb128 .LLSDATT5125-.LLSDATTD5125
.LLSDATTD5125:
	.byte	0x1
	.uleb128 .LLSDACSE5125-.LLSDACSB5125
.LLSDACSB5125:
	.uleb128 .LEHB0-.LFB5125
	.uleb128 .LEHE0-.LEHB0
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB1-.LFB5125
	.uleb128 .LEHE1-.LEHB1
	.uleb128 .L97-.LFB5125
	.uleb128 0x1
	.uleb128 .LEHB2-.LFB5125
	.uleb128 .LEHE2-.LEHB2
	.uleb128 .L96-.LFB5125
	.uleb128 0
	.uleb128 .LEHB3-.LFB5125
	.uleb128 .LEHE3-.LEHB3
	.uleb128 0
	.uleb128 0
.LLSDACSE5125:
	.byte	0x1
	.byte	0
	.align 4
	.long	DW.ref._ZTISt9bad_alloc-.
.LLSDATT5125:
	.text
	.size	_ZN6MOLECS10d_allocateEiiRPPd.isra.0, .-_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	.align 2
	.type	_ZN6MOLECS10d_allocateEiRPd.isra.0, @function
_ZN6MOLECS10d_allocateEiRPd.isra.0:
.LFB5126:
	.cfi_startproc
	movq	%rsi, %rax
	movslq	%edi, %rdi
	leaq	0(,%rdi,8), %rsi
	movq	%rax, %rdi
	jmp	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	.cfi_endproc
.LFE5126:
	.size	_ZN6MOLECS10d_allocateEiRPd.isra.0, .-_ZN6MOLECS10d_allocateEiRPd.isra.0
	.align 2
	.type	_ZN6MOLECS10i_allocateEiiRPPi.isra.0, @function
_ZN6MOLECS10i_allocateEiiRPPi.isra.0:
.LFB5127:
	.cfi_startproc
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rdx, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movl	%edi, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movslq	%esi, %rbx
	movslq	%edi, %rsi
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 48
	salq	$2, %rsi
	salq	$2, %rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L104:
	cmpl	%ebp, %r12d
	jle	.L107
	movq	0(%r13), %rax
	movq	%rbx, %rsi
	leaq	(%rax,%rbp,8), %rdi
	incq	%rbp
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L104
.L107:
	popq	%rax
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5127:
	.size	_ZN6MOLECS10i_allocateEiiRPPi.isra.0, .-_ZN6MOLECS10i_allocateEiiRPPi.isra.0
	.align 2
	.type	_ZN6MOLECS10i_allocateEiRPi.isra.0, @function
_ZN6MOLECS10i_allocateEiRPi.isra.0:
.LFB5128:
	.cfi_startproc
	movq	%rsi, %rax
	movslq	%edi, %rdi
	leaq	0(,%rdi,4), %rsi
	movq	%rax, %rdi
	jmp	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	.cfi_endproc
.LFE5128:
	.size	_ZN6MOLECS10i_allocateEiRPi.isra.0, .-_ZN6MOLECS10i_allocateEiRPi.isra.0
	.section	.rodata.str1.1
.LC1:
	.string	"basic_string::append"
	.text
	.align 2
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0, @function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0:
.LFB5129:
	.cfi_startproc
	movabsq	$4611686018427387903, %rax
	subq	8(%rdi), %rax
	cmpq	%rdx, %rax
	jnb	.L110
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	.LC1(%rip), %rdi
	call	_ZSt20__throw_length_errorPKc@PLT
.L110:
	.cfi_def_cfa_offset 8
	jmp	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm@PLT
	.cfi_endproc
.LFE5129:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0, .-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0
	.section	.rodata._ZNSt7__cxx119to_stringEi.str1.1,"aMS",@progbits,1
.LC2:
	.string	"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"
	.section	.text._ZNSt7__cxx119to_stringEi,"axG",@progbits,_ZNSt7__cxx119to_stringEi,comdat
	.weak	_ZNSt7__cxx119to_stringEi
	.type	_ZNSt7__cxx119to_stringEi, @function
_ZNSt7__cxx119to_stringEi:
.LFB2826:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA2826
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movl	%esi, %r13d
	movl	$10000, %ecx
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	shrl	$31, %r13d
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movl	$1, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movl	%esi, %ebx
	subq	$232, %rsp
	.cfi_def_cfa_offset 272
	movq	%fs:40, %rax
	movq	%rax, 216(%rsp)
	xorl	%eax, %eax
	negl	%ebx
	cmovs	%esi, %ebx
	movl	%ebx, %eax
.L120:
	cmpl	$9, %eax
	jbe	.L116
	cmpl	$99, %eax
	ja	.L117
	incl	%ebp
	jmp	.L116
.L117:
	cmpl	$999, %eax
	ja	.L118
	addl	$2, %ebp
	jmp	.L116
.L118:
	cmpl	$9999, %eax
	ja	.L119
	addl	$3, %ebp
	jmp	.L116
.L119:
	movl	%eax, %eax
	xorl	%edx, %edx
	addl	$4, %ebp
	divq	%rcx
	jmp	.L120
.L116:
	leaq	16(%r12), %rax
	leal	0(%r13,%rbp), %esi
	movq	%r12, %rdi
	decl	%ebp
	movq	%rax, (%r12)
	movl	$45, %edx
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@PLT
	movzbl	%r13b, %r8d
	leaq	15(%rsp), %rdi
	leaq	.LC2(%rip), %rsi
	movl	$201, %ecx
	addq	(%r12), %r8
	rep movsb
	movl	$100, %ecx
.L121:
	cmpl	$99, %ebx
	jbe	.L127
	movl	%ebx, %eax
	xorl	%edx, %edx
	movl	%ebp, %esi
	divl	%ecx
	addl	%edx, %edx
	movl	%eax, %ebx
	leal	1(%rdx), %eax
	movb	15(%rsp,%rdx), %dl
	movb	15(%rsp,%rax), %al
	movb	%al, (%r8,%rsi)
	leal	-1(%rbp), %eax
	subl	$2, %ebp
	movb	%dl, (%r8,%rax)
	jmp	.L121
.L127:
	leal	48(%rbx), %eax
	cmpl	$9, %ebx
	jbe	.L124
	addl	%ebx, %ebx
	leal	1(%rbx), %eax
	movb	15(%rsp,%rax), %al
	movb	%al, 1(%r8)
	movb	15(%rsp,%rbx), %al
.L124:
	movb	%al, (%r8)
	movq	216(%rsp), %rax
	subq	%fs:40, %rax
	je	.L125
	call	__stack_chk_fail@PLT
.L125:
	addq	$232, %rsp
	.cfi_def_cfa_offset 40
	movq	%r12, %rax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE2826:
	.section	.gcc_except_table
.LLSDA2826:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE2826-.LLSDACSB2826
.LLSDACSB2826:
.LLSDACSE2826:
	.section	.text._ZNSt7__cxx119to_stringEi,"axG",@progbits,_ZNSt7__cxx119to_stringEi,comdat
	.size	_ZNSt7__cxx119to_stringEi, .-_ZNSt7__cxx119to_stringEi
	.section	.text._ZN7ManagednwEm,"axG",@progbits,_ZN7ManagednwEm,comdat
	.weak	_ZN7ManagednwEm
	.type	_ZN7ManagednwEm, @function
_ZN7ManagednwEm:
.LFB4259:
	.cfi_startproc
	endbr64
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movq	%rdi, %rsi
	movl	$1, %edx
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rdi
	call	cudaMallocManaged@PLT
	call	cudaDeviceSynchronize@PLT
	movq	(%rsp), %rax
	movq	8(%rsp), %rdx
	subq	%fs:40, %rdx
	je	.L129
	call	__stack_chk_fail@PLT
.L129:
	addq	$24, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4259:
	.size	_ZN7ManagednwEm, .-_ZN7ManagednwEm
	.text
	.globl	_Z12ALLOCATE_GASv
	.type	_Z12ALLOCATE_GASv, @function
_Z12ALLOCATE_GASv:
.LFB4291:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$3, %esi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	xorl	%ebx, %ebx
	subq	$72, %rsp
	.cfi_def_cfa_offset 128
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	leaq	312(%rax), %rdx
	incl	%edi
	call	_ZN3GAS10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	$7, %edi
	movl	424(%rax), %esi
	leaq	320(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	$4, %edi
	movl	424(%rax), %esi
	leaq	328(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rcx
	movl	$9, %edi
	movl	424(%rcx), %edx
	addq	$352, %rcx
	leal	1(%rdx), %esi
	call	_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	$3, %edi
	movl	424(%rax), %esi
	leaq	488(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rdi
	movl	424(%rdi), %eax
	addq	$472, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movl	$3, %edx
	movl	$7, %edi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	leaq	368(%rax), %rcx
	incl	%esi
	call	_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	$3, %esi
	movl	424(%rax), %edi
	leaq	344(%rax), %rdx
	incl	%edi
	call	_ZN3GAS10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	280(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rdi
	movl	424(%rdi), %eax
	addq	$272, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movq	calc(%rip), %r13
	movl	424(%rax), %ebp
	leaq	328(%r13), %rdi
	incl	%ebp
	movslq	%ebp, %r12
	salq	$3, %r12
	movq	%r12, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L132:
	cmpl	%ebx, %ebp
	jle	.L153
	movq	328(%r13), %rax
	movq	%r12, %rsi
	leaq	(%rax,%rbx,8), %rdi
	incq	%rbx
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	jmp	.L132
.L153:
	movq	gas(%rip), %rdx
	movl	424(%rdx), %eax
	addq	$520, %rdx
	leal	1(%rax), %edi
	movl	%edi, %esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rdx
	movl	424(%rdx), %eax
	addq	$528, %rdx
	leal	1(%rax), %edi
	movl	%edi, %esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %r8
	movl	$5, %edi
	movl	424(%r8), %eax
	addq	$400, %r8
	leal	1(%rax), %esi
	movl	%esi, %ecx
	movl	%esi, %edx
	call	_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0
	movq	gas(%rip), %rdi
	movl	424(%rdi), %eax
	addq	$480, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	$4, %edi
	movl	424(%rax), %ebx
	movl	452(%rax), %esi
	leaq	376(%rax), %rcx
	leal	1(%rbx), %edx
	incl	%esi
	call	_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	$3, %edi
	movl	424(%rax), %ebx
	leaq	408(%rax), %r8
	leal	1(%rbx), %esi
	movl	456(%rax), %ebx
	movl	%esi, %edx
	leal	1(%rbx), %ecx
	call	_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0
	movq	gas(%rip), %rcx
	movl	$3, %edi
	movl	424(%rcx), %eax
	addq	$384, %rcx
	leal	1(%rax), %esi
	movl	%esi, %edx
	call	_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	320(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rdi
	movl	424(%rdi), %eax
	addq	$304, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	304(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	312(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %ebx
	movl	444(%rax), %edi
	leaq	576(%rax), %rcx
	leal	1(%rbx), %esi
	incl	%edi
	movl	%esi, %edx
	call	_ZN3GAS10i_allocateEiiiRPPPi.isra.0
	movq	gas(%rip), %rdx
	movl	424(%rdx), %eax
	addq	$552, %rdx
	leal	1(%rax), %edi
	movl	%edi, %esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rax
	movl	$7, %edi
	movl	424(%rax), %ebx
	leaq	392(%rax), %r8
	leal	1(%rbx), %edx
	movl	444(%rax), %ebx
	movl	%edx, %ecx
	leal	1(%rbx), %esi
	call	_ZN3GAS10d_allocateEiiiiRPPPPd.isra.0
	movq	gas(%rip), %rbx
	movl	424(%rbx), %eax
	leaq	584(%rbx), %rdi
	leal	1(%rax), %r13d
	movl	444(%rbx), %eax
	movslq	%r13d, %r14
	leal	1(%rax), %r12d
	movslq	%r12d, %rsi
	salq	$2, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	0(,%r14,4), %rax
	xorl	%ebp, %ebp
	movq	%rax, 8(%rsp)
.L134:
	cmpl	%ebp, %r12d
	jle	.L154
	movq	584(%rbx), %rdi
	leaq	0(,%rbp,8), %r15
	movl	$32, %esi
	xorl	%r14d, %r14d
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L137:
	movq	584(%rbx), %rdx
	movq	8(%rsp), %rsi
	movq	(%rdx,%r15), %rdi
	addq	%r14, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	xorl	%edx, %edx
.L135:
	cmpl	%edx, %r13d
	jle	.L155
	movq	584(%rbx), %rcx
	movq	8(%rsp), %rsi
	movq	%rdx, 16(%rsp)
	movq	(%rcx,%r15), %rcx
	movq	(%rcx,%r14), %rcx
	leaq	(%rcx,%rdx,8), %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	16(%rsp), %rdx
	incq	%rdx
	jmp	.L135
.L155:
	addq	$8, %r14
	cmpq	$64, %r14
	jne	.L137
	incq	%rbp
	jmp	.L134
.L154:
	movq	gas(%rip), %rax
	movl	$5, %edi
	movl	424(%rax), %esi
	leaq	536(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rdi
	movl	444(%rdi), %eax
	addq	$288, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	$5, %edi
	movl	424(%rax), %esi
	leaq	544(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rdi
	movl	448(%rdi), %eax
	addq	$280, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rbp
	movl	$24, %esi
	movl	456(%rbp), %eax
	leaq	416(%rbp), %rdi
	leal	1(%rax), %ebx
	movl	424(%rbp), %eax
	movslq	%ebx, %rbx
	movl	%eax, 8(%rsp)
	incl	%eax
	movl	%eax, 16(%rsp)
	movl	444(%rbp), %eax
	incl	%eax
	movl	%eax, 28(%rsp)
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movslq	28(%rsp), %rdx
	leaq	0(,%rdx,8), %rax
	movslq	16(%rsp), %rdx
	movq	%rax, 40(%rsp)
	leaq	0(,%rdx,8), %rax
	movq	%rax, 32(%rsp)
	leaq	0(,%rbx,8), %rax
	xorl	%ebx, %ebx
	movq	%rax, 48(%rsp)
.L144:
	movq	416(%rbp), %rdi
	movq	40(%rsp), %rsi
	xorl	%r12d, %r12d
	addq	%rbx, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L139:
	cmpl	%r12d, 28(%rsp)
	jle	.L156
	movq	416(%rbp), %rdx
	movq	32(%rsp), %rsi
	leaq	0(,%r12,8), %r13
	xorl	%r14d, %r14d
	movq	(%rdx,%rbx), %rdi
	addq	%r13, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L140:
	cmpl	%r14d, 16(%rsp)
	jle	.L157
	movq	416(%rbp), %rcx
	movq	32(%rsp), %rsi
	leaq	0(,%r14,8), %r15
	movq	(%rcx,%rbx), %rcx
	movq	(%rcx,%r13), %rdi
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	xorl	%ecx, %ecx
.L141:
	movq	416(%rbp), %rsi
	movq	%rcx, 56(%rsp)
	movq	(%rsi,%rbx), %rsi
	movq	(%rsi,%r13), %rsi
	movq	(%rsi,%r15), %rsi
	leaq	(%rsi,%rcx,8), %rdi
	movq	48(%rsp), %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	56(%rsp), %rcx
	incq	%rcx
	leal	-1(%rcx), %esi
	cmpl	%esi, 8(%rsp)
	jg	.L141
	incq	%r14
	jmp	.L140
.L157:
	incq	%r12
	jmp	.L139
.L156:
	addq	$8, %rbx
	cmpq	$24, %rbx
	jne	.L144
	movq	gas(%rip), %rax
	movl	$3, %edi
	movl	424(%rax), %esi
	leaq	560(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rdi
	movl	424(%rdi), %eax
	addq	$296, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	testl	%esi, %esi
	js	.L145
	movl	424(%rax), %edx
	leaq	360(%rax), %rcx
	incl	%esi
	movl	$6, %edi
	incl	%edx
	call	_ZN3GAS10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	$3, %edi
	movl	424(%rax), %ebx
	movl	428(%rax), %esi
	leaq	568(%rax), %rcx
	leal	1(%rbx), %edx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiiRPPPi.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	288(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	leaq	296(%rax), %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.L145:
	movq	gas(%rip), %rdi
	movl	436(%rdi), %esi
	testl	%esi, %esi
	jle	.L146
	incl	%esi
	addq	$264, %rdi
	movslq	%esi, %rsi
	salq	$3, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	gas(%rip), %rax
	movl	$3, %edi
	movl	436(%rax), %esi
	leaq	496(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rax
	movl	$7, %edi
	movl	436(%rax), %esi
	leaq	504(%rax), %rdx
	incl	%esi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %ebx
	movl	436(%rax), %edi
	leaq	512(%rax), %rdx
	leal	1(%rbx), %esi
	incl	%edi
	call	_ZN3GAS10i_allocateEiiRPPi.isra.0
.L146:
	movq	gas(%rip), %rax
	movq	calc(%rip), %rcx
	movl	424(%rax), %edx
	xorl	%eax, %eax
.L147:
	cmpl	%eax, %edx
	jl	.L158
	movq	320(%rcx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L147
.L158:
	addq	$72, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4291:
	.size	_Z12ALLOCATE_GASv, .-_Z12ALLOCATE_GASv
	.section	.rodata.str1.1
.LC4:
	.string	"Reading HARD_SPHERE Data"
.LC10:
	.string	"Hard Sphere data done"
	.text
	.globl	_Z11HARD_SPHEREv
	.type	_Z11HARD_SPHEREv, @function
_Z11HARD_SPHEREv:
.LFB4292:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC4(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	movq	%rdx, 432(%rax)
	movq	%rdx, 444(%rax)
	movq	$1, 424(%rax)
	movq	$1, 452(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC5(%rip), %rsi
	movq	.LC6(%rip), %rdi
	movq	320(%rdx), %rax
	movq	8(%rax), %rcx
	movq	%rsi, 8(%rcx)
	movq	16(%rax), %rcx
	movq	.LC7(%rip), %rsi
	movq	%rdi, 8(%rcx)
	movq	24(%rax), %rcx
	movq	.LC8(%rip), %rdi
	movq	%rsi, 8(%rcx)
	movq	32(%rax), %rcx
	leaq	.LC10(%rip), %rsi
	movq	40(%rax), %rax
	movq	%rdi, 8(%rcx)
	movq	.LC9(%rip), %rcx
	movq	%rbx, %rdi
	movq	%rcx, 8(%rax)
	movq	488(%rdx), %rax
	xorl	%ecx, %ecx
	movq	8(%rax), %rax
	movl	%ecx, 4(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	%rax, %rdi
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4292:
	.size	_Z11HARD_SPHEREv, .-_Z11HARD_SPHEREv
	.section	.rodata.str1.1
.LC11:
	.string	"Reading Argon Data"
.LC16:
	.string	"Argon Data done"
	.text
	.globl	_Z5ARGONv
	.type	_Z5ARGONv, @function
_Z5ARGONv:
.LFB4293:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC11(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	movq	%rdx, 432(%rax)
	movq	%rdx, 444(%rax)
	movq	$1, 424(%rax)
	movq	$1, 452(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC12(%rip), %rsi
	movq	.LC13(%rip), %rdi
	movq	320(%rdx), %rax
	movq	8(%rax), %rcx
	movq	%rsi, 8(%rcx)
	movq	16(%rax), %rcx
	movq	.LC14(%rip), %rsi
	movq	%rdi, 8(%rcx)
	movq	24(%rax), %rcx
	movq	.LC8(%rip), %rdi
	movq	%rsi, 8(%rcx)
	movq	32(%rax), %rcx
	xorl	%esi, %esi
	movq	40(%rax), %rax
	movq	%rdi, 8(%rcx)
	movq	.LC15(%rip), %rcx
	movq	%rbx, %rdi
	movq	%rcx, 8(%rax)
	movq	488(%rdx), %rax
	xorl	%ecx, %ecx
	movq	8(%rax), %rdx
	movq	16(%rax), %rax
	movl	%ecx, 4(%rdx)
	movl	%esi, 4(%rax)
	leaq	.LC16(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	%rax, %rdi
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4293:
	.size	_Z5ARGONv, .-_Z5ARGONv
	.section	.rodata.str1.1
.LC17:
	.string	"Reading IDEAL_NITROGEN data"
	.text
	.globl	_Z14IDEAL_NITROGENv
	.type	_Z14IDEAL_NITROGENv, @function
_Z14IDEAL_NITROGENv:
.LFB4294:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	.LC17(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	movq	%rdx, 444(%rax)
	movq	%rdx, 452(%rax)
	movq	$1, 424(%rax)
	movq	$1, 432(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC12(%rip), %rsi
	movq	.LC18(%rip), %rdi
	movq	320(%rdx), %rax
	movq	8(%rax), %rcx
	movq	%rsi, 8(%rcx)
	movq	16(%rax), %rcx
	movq	.LC6(%rip), %rsi
	movq	%rsi, 8(%rcx)
	movq	24(%rax), %rcx
	movq	.LC8(%rip), %rsi
	movq	%rdi, 8(%rcx)
	movq	32(%rax), %rcx
	movq	.LC19(%rip), %rdi
	movq	40(%rax), %rax
	movq	%rsi, 8(%rcx)
	movq	%rdi, 8(%rax)
	movq	488(%rdx), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movl	$2, 4(%rcx)
	xorl	%ecx, %ecx
	movl	%ecx, 4(%rax)
	movq	328(%rdx), %rax
	movq	.LC20(%rip), %rdx
	movq	8(%rax), %rax
	movq	%rdx, 8(%rax)
	popq	%rsi
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4294:
	.size	_Z14IDEAL_NITROGENv, .-_Z14IDEAL_NITROGENv
	.section	.rodata.str1.1
.LC21:
	.string	"Reading IDEAL_AIR data"
.LC25:
	.string	"IDEAL_AIR data done"
	.text
	.globl	_Z9IDEAL_AIRv
	.type	_Z9IDEAL_AIRv, @function
_Z9IDEAL_AIRv:
.LFB4296:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC21(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	movq	%rdx, 444(%rax)
	movq	$2, 424(%rax)
	movq	$1, 432(%rax)
	movq	$1, 452(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC22(%rip), %rcx
	movsd	.LC6(%rip), %xmm2
	movsd	.LC8(%rip), %xmm1
	movq	320(%rdx), %rax
	movsd	.LC20(%rip), %xmm0
	movq	8(%rax), %r11
	movq	16(%rax), %r10
	movq	24(%rax), %r9
	movq	32(%rax), %r8
	movq	%rcx, 8(%r11)
	movq	40(%rax), %rdi
	movq	.LC23(%rip), %rcx
	movq	.LC24(%rip), %rax
	movsd	%xmm2, 8(%r10)
	movq	%rcx, 8(%r9)
	movsd	%xmm1, 8(%r8)
	movq	%rax, 8(%rdi)
	movq	488(%rdx), %rax
	movq	8(%rax), %rsi
	movq	16(%rax), %rcx
	xorl	%eax, %eax
	movl	$2, 4(%rsi)
	movl	%eax, 4(%rcx)
	movq	328(%rdx), %rax
	movq	.LC12(%rip), %rdx
	movq	8(%rax), %rax
	movsd	%xmm0, 8(%rax)
	movq	%rdx, 16(%r11)
	movq	.LC18(%rip), %rdx
	movsd	%xmm2, 16(%r10)
	movq	%rdx, 16(%r9)
	movsd	%xmm1, 16(%r8)
	movq	.LC19(%rip), %rdx
	movq	%rdx, 16(%rdi)
	xorl	%edx, %edx
	movq	%rbx, %rdi
	movl	$2, 8(%rsi)
	leaq	.LC25(%rip), %rsi
	movl	%edx, 8(%rcx)
	movsd	%xmm0, 16(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	%rax, %rdi
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4296:
	.size	_Z9IDEAL_AIRv, .-_Z9IDEAL_AIRv
	.section	.rodata.str1.1
.LC26:
	.string	"Reading HELIUM_ARGON_XENON data"
.LC37:
	.string	"HELIUM_ARGON_XENON data done"
	.text
	.globl	_Z18HELIUM_ARGON_XENONv
	.type	_Z18HELIUM_ARGON_XENONv, @function
_Z18HELIUM_ARGON_XENONv:
.LFB4298:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC26(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	movq	%rdx, 432(%rax)
	movq	%rdx, 444(%rax)
	movq	$3, 424(%rax)
	movq	$1, 452(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	xorl	%r10d, %r10d
	xorl	%r11d, %r11d
	movq	.LC27(%rip), %rcx
	movsd	.LC6(%rip), %xmm0
	movq	320(%rdx), %rax
	movq	8(%rax), %r9
	movq	16(%rax), %r8
	movq	24(%rax), %rdi
	movq	32(%rax), %rsi
	movq	%rcx, 8(%r9)
	movq	.LC28(%rip), %rcx
	movsd	%xmm0, 8(%r8)
	movq	%rcx, 8(%rdi)
	movq	.LC29(%rip), %rcx
	movq	%rcx, 8(%rsi)
	movq	40(%rax), %rcx
	movq	.LC30(%rip), %rax
	movq	%rax, 8(%rcx)
	movq	488(%rdx), %rax
	movq	8(%rax), %rdx
	movq	16(%rax), %rax
	movl	%r10d, 4(%rdx)
	movq	.LC31(%rip), %r10
	movl	%r11d, 4(%rax)
	movq	.LC13(%rip), %r11
	movq	%r10, 16(%r9)
	movq	.LC14(%rip), %r10
	movq	%r11, 16(%r8)
	movq	.LC32(%rip), %r11
	movq	%r10, 16(%rdi)
	movq	.LC15(%rip), %r10
	movq	%r11, 16(%rsi)
	movq	%r10, 16(%rcx)
	xorl	%r10d, %r10d
	movl	%r10d, 8(%rdx)
	movq	.LC33(%rip), %r11
	movl	%r10d, 8(%rax)
	movq	%r11, 24(%r9)
	xorl	%r11d, %r11d
	movsd	%xmm0, 24(%r8)
	movq	.LC34(%rip), %r8
	movq	%r8, 24(%rdi)
	movq	.LC35(%rip), %rdi
	movq	%rdi, 24(%rsi)
	movq	.LC36(%rip), %rsi
	movq	%rbx, %rdi
	movq	%rsi, 24(%rcx)
	leaq	.LC37(%rip), %rsi
	movl	%r11d, 12(%rdx)
	movl	%r11d, 12(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	%rax, %rdi
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4298:
	.size	_Z18HELIUM_ARGON_XENONv, .-_Z18HELIUM_ARGON_XENONv
	.globl	_Z18INITIALISE_SAMPLESv
	.type	_Z18INITIALISE_SAMPLESv, @function
_Z18INITIALISE_SAMPLESv:
.LFB4302:
	.cfi_startproc
	endbr64
	movq	output(%rip), %rdx
	xorl	%r11d, %r11d
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	molecs(%rip), %rax
	movq	geom(%rip), %r9
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	80(%rax), %eax
	movl	(%r9), %ecx
	movl	%r11d, (%rdx)
	movq	calc(%rip), %r11
	movsd	80(%r11), %xmm0
	movl	%eax, 4(%rdx)
	xorl	%eax, %eax
	movsd	%xmm0, 32(%rdx)
.L170:
	cmpl	%eax, %ecx
	jl	.L209
	movq	64(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L170
.L209:
	xorl	%eax, %eax
.L172:
	cmpl	%eax, %ecx
	jl	.L210
	movq	72(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L172
.L210:
	xorl	%eax, %eax
.L174:
	cmpl	%eax, %ecx
	jl	.L211
	movq	80(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L174
.L211:
	movq	gas(%rip), %rsi
	xorl	%r8d, %r8d
	movl	424(%rsi), %eax
	movq	%rax, %r10
	leaq	8(,%rax,8), %rbx
	xorl	%eax, %eax
.L176:
	cmpl	%r8d, %r10d
	jl	.L212
	movq	328(%r11), %rcx
	movq	(%rcx,%r8,8), %rdi
	movq	%rbx, %rcx
	incq	%r8
	rep stosb
	jmp	.L176
.L212:
	xorl	%ecx, %ecx
.L178:
	xorl	%eax, %eax
.L181:
	cmpl	%eax, 424(%rsi)
	jl	.L213
	movq	536(%rsi), %rdi
	xorl	%r10d, %r10d
	movq	(%rdi,%rcx), %rdi
	movl	%r10d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L181
.L213:
	addq	$8, %rcx
	cmpq	$40, %rcx
	jne	.L178
	xorl	%ecx, %ecx
.L180:
	xorl	%eax, %eax
.L184:
	movl	424(%rsi), %r8d
	cmpl	%eax, %r8d
	jl	.L214
	movq	544(%rsi), %rdi
	xorl	%r8d, %r8d
	movq	(%rdi,%rcx), %rdi
	movl	%r8d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L184
.L214:
	addq	$8, %rcx
	cmpq	$40, %rcx
	jne	.L180
	xorl	%ecx, %ecx
	leal	9(%r8), %ebx
.L183:
	cmpl	%ecx, %ebx
	jl	.L205
	movl	(%r9), %r11d
	leaq	0(,%rcx,8), %r10
	xorl	%eax, %eax
.L189:
	cmpl	%eax, %r11d
	jl	.L186
	leaq	0(,%rax,8), %rbp
	xorl	%edi, %edi
.L187:
	cmpl	%edi, %r8d
	jl	.L215
	movq	168(%rdx), %r12
	movq	(%r12,%r10), %r12
	movq	(%r12,%rbp), %r12
	movq	$0x000000000, (%r12,%rdi,8)
	incq	%rdi
	jmp	.L187
.L215:
	incq	%rax
	jmp	.L189
.L186:
	incq	%rcx
	jmp	.L183
.L205:
	xorl	%r10d, %r10d
	xorl	%eax, %eax
.L188:
	xorl	%r9d, %r9d
.L194:
	xorl	%r11d, %r11d
.L192:
	cmpl	%r11d, %r8d
	jl	.L216
	movq	192(%rdx), %rcx
	movq	(%rcx,%r10), %rcx
	movq	(%rcx,%r9), %rcx
	movq	(%rcx,%r11,8), %rbx
	movl	$6, %ecx
	incq	%r11
	movq	%rbx, %rdi
	rep stosl
	jmp	.L192
.L216:
	addq	$8, %r9
	cmpq	$24, %r9
	jne	.L194
	addq	$8, %r10
	cmpq	$72, %r10
	jne	.L188
	movq	152(%rdx), %r10
	xorl	%r9d, %r9d
	xorl	%eax, %eax
.L195:
	movq	(%r10,%r9,8), %rdi
	movl	$6, %ecx
	incq	%r9
	rep stosl
	cmpq	$7, %r9
	jne	.L195
	xorl	%r10d, %r10d
	xorl	%eax, %eax
.L196:
	cmpl	%r10d, %r8d
	jl	.L206
	movl	428(%rsi), %ebp
	leaq	0(,%r10,8), %rbx
	xorl	%r9d, %r9d
.L199:
	cmpl	%r9d, %ebp
	jl	.L217
	movq	184(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	movq	(%rcx,%r9,8), %r11
	movl	$302, %ecx
	incq	%r9
	movq	%r11, %rdi
	rep stosl
	jmp	.L199
.L217:
	incq	%r10
	jmp	.L196
.L206:
	xorl	%ecx, %ecx
.L198:
	cmpl	%ecx, %r8d
	jl	.L169
	movl	428(%rsi), %r9d
	leaq	0(,%rcx,8), %rdi
	xorl	%eax, %eax
.L202:
	cmpl	%eax, %r9d
	jl	.L218
	movq	160(%rdx), %r10
	movq	(%r10,%rdi), %r10
	movq	$0x000000000, (%r10,%rax,8)
	incq	%rax
	jmp	.L202
.L218:
	incq	%rcx
	jmp	.L198
.L169:
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4302:
	.size	_Z18INITIALISE_SAMPLESv, .-_Z18INITIALISE_SAMPLESv
	.section	.rodata.str1.1
.LC41:
	.string	"No cell for molecule at x= "
	.text
	.globl	_Z12FIND_CELL_1DRdRiS0_
	.type	_Z12FIND_CELL_1DRdRiS0_, @function
_Z12FIND_CELL_1DRdRiS0_:
.LFB4305:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	movq	%rdx, %rdi
	pushq	%rcx
	.cfi_def_cfa_offset 32
	movq	geom(%rip), %rdx
	movsd	(%rbx), %xmm1
	movsd	.LC38(%rip), %xmm2
	movq	128(%rdx), %rax
	movq	64(%rdx), %r9
	movaps	%xmm1, %xmm0
	subsd	8(%rax), %xmm0
	divsd	72(%rdx), %xmm0
	addsd	%xmm0, %xmm2
	movq	(%r9), %rcx
	cvttsd2sil	%xmm2, %eax
	movslq	%eax, %r8
	movl	(%rcx,%r8,4), %ecx
	testl	%ecx, %ecx
	jns	.L220
	movl	%ecx, %eax
	movq	136(%rdx), %rcx
	negl	%eax
	movq	16(%rcx), %r8
	movq	24(%rcx), %rcx
	movl	%eax, (%rdi)
	cltq
	cvtsi2sdl	8(%rdx), %xmm0
	movsd	(%r8,%rax,8), %xmm2
	subsd	%xmm2, %xmm1
	mulsd	%xmm1, %xmm0
	movsd	(%rcx,%rax,8), %xmm1
	subsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	addsd	.LC39(%rip), %xmm0
	cvttsd2sil	%xmm0, %eax
	jmp	.L228
.L220:
	leal	-1(%rax), %ecx
	movl	20(%rdx), %ebp
	movsd	.LC8(%rip), %xmm3
	movl	$1, %r8d
	cvtsi2sdl	%ecx, %xmm2
	subsd	%xmm2, %xmm0
	jmp	.L222
.L230:
	comisd	%xmm2, %xmm0
	jnb	.L227
.L226:
	cltq
	incq	%r8
	movl	(%r11,%rax,4), %eax
	addl	$2, %eax
	movslq	%eax, %rcx
	movl	(%r10,%rcx,4), %ecx
	testl	%ecx, %ecx
	js	.L225
	subsd	%xmm2, %xmm0
.L222:
	cmpl	%r8d, %ebp
	jl	.L232
	leal	1(%r8), %ecx
	movaps	%xmm3, %xmm2
	movq	-8(%r9,%r8,8), %r11
	movq	(%r9,%r8,8), %r10
	cvtsi2sdl	%ecx, %xmm4
	divsd	%xmm4, %xmm2
	comisd	%xmm0, %xmm2
	jbe	.L230
.L227:
	cltq
	movl	(%r11,%rax,4), %eax
	incl	%eax
	movslq	%eax, %rcx
	movl	(%r10,%rcx,4), %ecx
	testl	%ecx, %ecx
	jns	.L226
.L225:
	movq	136(%rdx), %rax
	negl	%ecx
	movl	%ecx, (%rdi)
	movslq	%ecx, %rcx
	cvtsi2sdl	8(%rdx), %xmm0
	movq	16(%rax), %r8
	movq	24(%rax), %rax
	movsd	(%r8,%rcx,8), %xmm2
	subsd	%xmm2, %xmm1
	mulsd	%xmm1, %xmm0
	movsd	(%rax,%rcx,8), %xmm1
	subsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	addsd	.LC40(%rip), %xmm0
	cvttsd2sil	%xmm0, %eax
	testl	%eax, %eax
	jne	.L228
	movl	$1, %eax
.L228:
	movl	%eax, (%rsi)
	movslq	(%rdi), %rcx
	movq	48(%rdx), %rdx
	addl	(%rdx,%rcx,4), %eax
	movl	%eax, (%rsi)
	popq	%rax
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L232:
	.cfi_restore_state
	leaq	.LC41(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rbx), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rdx
	.cfi_def_cfa_offset 24
	movq	%rax, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4305:
	.size	_Z12FIND_CELL_1DRdRiS0_, .-_Z12FIND_CELL_1DRdRiS0_
	.globl	_Z15FIND_CELL_MB_1DRdRiS0_S_
	.type	_Z15FIND_CELL_MB_1DRdRiS0_S_, @function
_Z15FIND_CELL_MB_1DRdRiS0_S_:
.LFB4306:
	.cfi_startproc
	endbr64
	movq	geom(%rip), %rax
	movsd	.LC38(%rip), %xmm4
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	movq	128(%rax), %rdi
	movsd	88(%rax), %xmm0
	mulsd	(%rcx), %xmm0
	cvtsi2sdl	12(%rax), %xmm1
	addsd	16(%rdi), %xmm0
	movsd	8(%rdi), %xmm3
	movq	64(%rax), %rdi
	subsd	%xmm3, %xmm0
	movq	(%rdi), %rdi
	divsd	%xmm1, %xmm0
	movsd	(%rbx), %xmm1
	movaps	%xmm1, %xmm2
	subsd	%xmm3, %xmm2
	divsd	%xmm0, %xmm2
	addsd	%xmm4, %xmm2
	cvttsd2sil	%xmm2, %ecx
	movslq	%ecx, %r8
	decl	%ecx
	cvtsi2sdl	%ecx, %xmm2
	movl	(%rdi,%r8,4), %edi
	negl	%edi
	movl	%edi, (%rdx)
	leaq	16+file_9(%rip), %rdi
	mulsd	%xmm0, %xmm2
	addsd	%xmm3, %xmm2
	subsd	%xmm2, %xmm1
	cvtsi2sdl	8(%rax), %xmm2
	movq	48(%rax), %rax
	mulsd	%xmm2, %xmm1
	divsd	%xmm0, %xmm1
	addsd	%xmm4, %xmm1
	cvttsd2sil	%xmm1, %ecx
	movl	%ecx, (%rsi)
	movslq	(%rdx), %rdx
	addl	(%rax,%rdx,4), %ecx
	movl	%ecx, (%rsi)
	leaq	.LC41(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rbx), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	%rax, %rdi
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4306:
	.size	_Z15FIND_CELL_MB_1DRdRiS0_S_, .-_Z15FIND_CELL_MB_1DRdRiS0_S_
	.globl	_Z5RVELCRdS_S_
	.type	_Z5RVELCRdS_S_, @function
_Z5RVELCRdS_S_:
.LFB4307:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdx, %rbx
	subq	$32, %rsp
	.cfi_def_cfa_offset 64
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	call	log@PLT
	xorps	.LC43(%rip), %xmm0
	call	sqrt@PLT
	movsd	%xmm0, 8(%rsp)
	call	rand@PLT
	leaq	24(%rsp), %rdi
	leaq	16(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	24(%rsp), %xmm0
	movsd	8(%rsp), %xmm1
	mulsd	%xmm1, %xmm0
	mulsd	(%rbx), %xmm0
	movsd	%xmm0, (%r12)
	mulsd	16(%rsp), %xmm1
	mulsd	(%rbx), %xmm1
	movsd	%xmm1, 0(%rbp)
	addq	$32, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4307:
	.size	_Z5RVELCRdS_S_, .-_Z5RVELCRdS_S_
	.globl	_Z4SROTRiRdS0_
	.type	_Z4SROTRiRdS0_, @function
_Z4SROTRiRdS0_:
.LFB4308:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	movq	gas(%rip), %rax
	movslq	(%rdi), %rdx
	movq	488(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%rdx,4), %eax
	cmpl	$2, %eax
	jne	.L238
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	call	log@PLT
	mulsd	.LC47(%rip), %xmm0
	jmp	.L243
.L238:
	cvtsi2sdl	%eax, %xmm0
	mulsd	.LC7(%rip), %xmm0
	subsd	.LC8(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)
.L240:
	call	rand@PLT
	movsd	8(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC46(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)
	divsd	8(%rsp), %xmm0
	call	pow@PLT
	movsd	%xmm0, 24(%rsp)
	movsd	8(%rsp), %xmm0
	subsd	16(%rsp), %xmm0
	call	exp@PLT
	movsd	24(%rsp), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 24(%rsp)
	call	rand@PLT
	movsd	24(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	comisd	%xmm0, %xmm1
	movsd	%xmm0, 152(%rax)
	jbe	.L240
	movsd	16(%rsp), %xmm0
	mulsd	.LC45(%rip), %xmm0
.L243:
	mulsd	(%rbx), %xmm0
	movsd	%xmm0, 0(%rbp)
	addq	$40, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4308:
	.size	_Z4SROTRiRdS0_, .-_Z4SROTRiRdS0_
	.globl	_Z4SVIBRiRdS_S_
	.type	_Z4SVIBRiRdS_S_, @function
_Z4SVIBRiRdS_S_:
.LFB4309:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	movq	%rsi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rcx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdx, %rbx
	pushq	%rax
	.cfi_def_cfa_offset 48
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	call	log@PLT
	movq	gas(%rip), %rax
	movslq	(%r12), %rcx
	movslq	0(%rbp), %rdx
	xorps	.LC43(%rip), %xmm0
	movq	360(%rax), %rax
	mulsd	0(%r13), %xmm0
	movq	8(%rax), %rax
	movq	(%rax,%rcx,8), %rax
	divsd	(%rax,%rdx,8), %xmm0
	cvttsd2sil	%xmm0, %eax
	movl	%eax, (%rbx)
	popq	%rdx
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4309:
	.size	_Z4SVIBRiRdS_S_, .-_Z4SVIBRiRdS_S_
	.globl	_Z4SELERiRdS0_
	.type	_Z4SELERiRdS0_, @function
_Z4SELERiRdS0_:
.LFB4310:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	xorps	%xmm0, %xmm0
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$32, %rsp
	.cfi_def_cfa_offset 80
	movsd	(%rsi), %xmm1
	comisd	.LC48(%rip), %xmm1
	jbe	.L248
	movq	$0x000000000, (%rsp)
	movq	%rdi, %rbx
	movq	%rsi, %rbp
	xorl	%r13d, %r13d
.L247:
	movq	gas(%rip), %rdx
	movslq	(%rbx), %rax
	incq	%r13
	movq	480(%rdx), %rcx
	cmpl	%r13d, (%rcx,%rax,4)
	jl	.L255
	movq	376(%rdx), %rdx
	movsd	%xmm1, 16(%rsp)
	movq	8(%rdx), %rcx
	movq	16(%rdx), %rdx
	movq	(%rdx,%r13,8), %rdx
	movq	(%rcx,%r13,8), %rcx
	movsd	(%rdx,%rax,8), %xmm0
	xorps	.LC43(%rip), %xmm0
	movsd	(%rcx,%rax,8), %xmm3
	divsd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	exp@PLT
	mulsd	8(%rsp), %xmm0
	movsd	16(%rsp), %xmm1
	addsd	(%rsp), %xmm0
	movsd	%xmm0, (%rsp)
	jmp	.L247
.L255:
	call	rand@PLT
	movl	$8, %r13d
	xorps	%xmm2, %xmm2
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rax)
.L250:
	movq	gas(%rip), %rax
	movsd	%xmm2, 24(%rsp)
	movsd	%xmm1, 16(%rsp)
	movq	376(%rax), %rdx
	movslq	(%rbx), %rax
	movq	8(%rdx), %rcx
	movq	16(%rdx), %rdx
	movq	(%rcx,%r13), %rcx
	movq	(%rdx,%r13), %r14
	addq	$8, %r13
	movsd	(%rcx,%rax,8), %xmm6
	movsd	(%r14,%rax,8), %xmm0
	xorps	.LC43(%rip), %xmm0
	divsd	0(%rbp), %xmm0
	movsd	%xmm6, 8(%rsp)
	call	exp@PLT
	mulsd	8(%rsp), %xmm0
	movsd	24(%rsp), %xmm2
	movsd	16(%rsp), %xmm1
	addsd	%xmm0, %xmm2
	movaps	%xmm2, %xmm0
	divsd	(%rsp), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L250
	movslq	(%rbx), %rax
	movsd	.LC45(%rip), %xmm0
	mulsd	(%r14,%rax,8), %xmm0
.L248:
	movsd	%xmm0, (%r12)
	addq	$32, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4310:
	.size	_Z4SELERiRdS0_, .-_Z4SELERiRdS0_
	.globl	_Z4CQAXRdS_S_
	.type	_Z4CQAXRdS_S_, @function
_Z4CQAXRdS_S_:
.LFB4311:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdx, %rbx
	subq	$72, %rsp
	.cfi_def_cfa_offset 112
	movsd	(%rdi), %xmm6
	movaps	%xmm6, %xmm0
	movq	%xmm6, %r14
	call	tgamma@PLT
	movsd	(%r12), %xmm7
	movsd	%xmm0, 16(%rsp)
	movsd	.LC46(%rip), %xmm0
	movsd	%xmm7, (%rsp)
	comisd	%xmm7, %xmm0
	jbe	.L263
	movq	$0x000000000, (%rbx)
	movl	$1, %r12d
	xorps	%xmm3, %xmm3
	movaps	%xmm7, %xmm4
	divsd	.LC49(%rip), %xmm4
.L259:
	cvtsi2sdl	%r12d, %xmm2
	movsd	%xmm3, 32(%rsp)
	incl	%r12d
	movsd	%xmm4, 24(%rsp)
	mulsd	%xmm4, %xmm2
	movaps	%xmm2, %xmm0
	xorps	.LC43(%rip), %xmm0
	movsd	%xmm2, 8(%rsp)
	call	exp@PLT
	movsd	0(%rbp), %xmm1
	movsd	8(%rsp), %xmm2
	subsd	.LC8(%rip), %xmm1
	movsd	%xmm0, (%rsp)
	movaps	%xmm2, %xmm0
	call	pow@PLT
	movsd	32(%rsp), %xmm3
	movsd	24(%rsp), %xmm4
	movaps	%xmm0, %xmm1
	movaps	%xmm3, %xmm0
	movsd	(%rsp), %xmm3
	mulsd	%xmm1, %xmm3
	addsd	%xmm3, %xmm0
	mulsd	%xmm4, %xmm0
	mulsd	.LC7(%rip), %xmm0
	addsd	(%rbx), %xmm0
	movsd	%xmm0, (%rbx)
	cmpl	$100001, %r12d
	jne	.L259
	movaps	%xmm0, %xmm1
	movsd	.LC8(%rip), %xmm0
	divsd	16(%rsp), %xmm1
	subsd	%xmm1, %xmm0
	jmp	.L260
.L263:
	movq	%r14, %xmm5
	subsd	.LC8(%rip), %xmm5
	movsd	(%rsp), %xmm0
	movaps	%xmm5, %xmm1
	movsd	%xmm5, 8(%rsp)
	call	pow@PLT
	movsd	%xmm0, 24(%rsp)
	movsd	(%rsp), %xmm0
	xorps	.LC43(%rip), %xmm0
	call	exp@PLT
	movq	%r14, %xmm2
	movq	%r14, %xmm3
	movsd	.LC51(%rip), %xmm1
	subsd	.LC50(%rip), %xmm2
	mulsd	8(%rsp), %xmm2
	movsd	%xmm0, 32(%rsp)
	subsd	%xmm1, %xmm3
	movsd	(%rsp), %xmm0
	mulsd	%xmm2, %xmm3
	movsd	%xmm2, 56(%rsp)
	movsd	%xmm3, 48(%rsp)
	call	pow@PLT
	movsd	.LC52(%rip), %xmm1
	movsd	%xmm0, 40(%rsp)
	movsd	(%rsp), %xmm0
	call	pow@PLT
	movsd	(%rsp), %xmm1
	movsd	56(%rsp), %xmm2
	movaps	%xmm0, %xmm4
	movsd	8(%rsp), %xmm0
	divsd	(%rsp), %xmm0
	addsd	.LC8(%rip), %xmm0
	mulsd	%xmm1, %xmm1
	movsd	48(%rsp), %xmm3
	divsd	%xmm1, %xmm2
	movaps	%xmm3, %xmm1
	divsd	40(%rsp), %xmm1
	addsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movq	%r14, %xmm1
	subsd	.LC52(%rip), %xmm1
	mulsd	%xmm3, %xmm1
	divsd	%xmm4, %xmm1
	addsd	%xmm1, %xmm0
	movsd	24(%rsp), %xmm1
	mulsd	32(%rsp), %xmm1
	mulsd	%xmm1, %xmm0
	divsd	16(%rsp), %xmm0
.L260:
	movsd	%xmm0, (%rbx)
	addq	$72, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4311:
	.size	_Z4CQAXRdS_S_, .-_Z4CQAXRdS_S_
	.section	.rodata.str1.1
.LC53:
	.string	"Setting derived gas data"
.LC54:
	.string	"Char. Diss temp of species "
.LC55:
	.string	" is "
.LC56:
	.string	"Reaction "
.LC57:
	.string	" heat of reaction"
.LC58:
	.string	"SPECIES "
.LC59:
	.string	" "
.LC60:
	.string	" RECOMBINE TO"
.LC61:
	.string	" The variable MVIBL="
.LC62:
	.string	" in the gas database must be increased to"
.LC63:
	.string	"Enter 0 ENTER to stop"
.LC65:
	.string	"TEMPERATURE "
.LC66:
	.string	"CDF level dissoc "
.LC67:
	.string	" REVERSE REACTION"
.LC73:
	.string	"Cumulative "
	.text
	.globl	_Z16DERIVED_GAS_DATAv
	.type	_Z16DERIVED_GAS_DATAv, @function
_Z16DERIVED_GAS_DATAv:
.LFB4300:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$24, %edi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movabsq	$1152921504606846975, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	xorl	%ebx, %ebx
	subq	$264, %rsp
	.cfi_def_cfa_offset 320
	movq	%fs:40, %rax
	movq	%rax, 248(%rsp)
	xorl	%eax, %eax
	call	_Znam@PLT
	movq	%rax, %r13
.L272:
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %r12
	jb	.L266
	salq	$3, %rdi
	xorl	%r14d, %r14d
	call	_Znam@PLT
	movq	%rax, 0(%r13,%rbx,8)
	movq	%rax, %rbp
	jmp	.L267
.L266:
	movq	248(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L379
	call	__cxa_throw_bad_array_new_length@PLT
.L270:
	movl	456(%rax), %edi
	movq	%rdx, 8(%rsp)
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %r12
	jb	.L266
	salq	$3, %rdi
	call	_Znam@PLT
	movq	8(%rsp), %rdx
	movq	%rax, (%rdx,%r15,8)
	incq	%r15
.L269:
	movq	gas(%rip), %rax
	cmpl	%r15d, 424(%rax)
	jge	.L270
	incq	%r14
.L267:
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	cmpl	%r14d, %edi
	jl	.L380
	incl	%edi
	xorl	%r15d, %r15d
	movslq	%edi, %rdi
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 0(%rbp,%r14,8)
	movq	%rax, %rdx
	jmp	.L269
.L380:
	incq	%rbx
	cmpq	$3, %rbx
	jne	.L272
	movl	456(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L266
	salq	$3, %rdi
	xorl	%ebx, %ebx
	call	_Znam@PLT
	movq	%rax, 184(%rsp)
.L273:
	movq	gas(%rip), %rax
	movl	$24, %edi
	cmpl	%ebx, 456(%rax)
	jl	.L381
	call	_Znam@PLT
	movq	184(%rsp), %rdx
	movq	%rax, (%rdx,%rbx,8)
	incq	%rbx
	jmp	.L273
.L381:
	call	_Znam@PLT
	xorl	%ebx, %ebx
	movq	%rax, 112(%rsp)
.L281:
	movq	gas(%rip), %rax
	movl	444(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L266
	salq	$3, %rdi
	xorl	%ebp, %ebp
	call	_Znam@PLT
	movq	%rax, %r12
	movq	112(%rsp), %rax
	movq	%r12, (%rax,%rbx,8)
.L275:
	movq	gas(%rip), %rax
	cmpl	%ebp, 444(%rax)
	jl	.L382
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L266
	salq	$3, %rdi
	xorl	%r15d, %r15d
	call	_Znam@PLT
	movq	%rax, (%r12,%rbp,8)
	movq	%rax, %r14
.L276:
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	cmpl	%r15d, %edi
	jl	.L383
	incl	%edi
	movslq	%edi, %rdi
	salq	$3, %rdi
	call	_Znam@PLT
	xorl	%ecx, %ecx
	movq	%rax, (%r14,%r15,8)
	movq	%rax, %rsi
.L277:
	movq	gas(%rip), %rax
	cmpl	%ecx, 424(%rax)
	jl	.L384
	movl	456(%rax), %edi
	movq	%rcx, 16(%rsp)
	movabsq	$1152921504606846975, %rax
	movq	%rsi, 8(%rsp)
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L266
	salq	$3, %rdi
	call	_Znam@PLT
	movq	16(%rsp), %rcx
	movq	8(%rsp), %rsi
	movq	%rax, (%rsi,%rcx,8)
	incq	%rcx
	jmp	.L277
.L384:
	incq	%r15
	jmp	.L276
.L383:
	incq	%rbp
	jmp	.L275
.L382:
	incq	%rbx
	cmpq	$3, %rbx
	jne	.L281
	movl	456(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L266
	salq	$3, %rdi
	xorl	%ebx, %ebx
	call	_Znam@PLT
	movq	%rax, 48(%rsp)
.L282:
	movq	gas(%rip), %rax
	cmpl	%ebx, 456(%rax)
	jl	.L385
	movl	$24, %edi
	call	_Znam@PLT
	movq	48(%rsp), %rdx
	movq	%rax, (%rdx,%rbx,8)
	incq	%rbx
	jmp	.L282
.L385:
	leaq	.LC53(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %edi
	movq	gas(%rip), %rcx
	movl	$1, %r10d
.L284:
	cmpl	%r10d, 424(%rcx)
	jl	.L295
	leaq	(%rdi,%rdi), %rax
	movl	$4, %esi
	movl	$1, %r9d
.L286:
	cmpl	%r9d, 424(%rcx)
	jl	.L386
	cmpl	%r9d, %r10d
	jg	.L285
.L293:
	incl	%r9d
	addq	$4, %rsi
	jmp	.L286
.L285:
	movq	552(%rcx), %r8
	leaq	(%rsi,%rsi), %rdx
	movq	(%r8,%rdx), %r11
	movq	(%r8,%rax), %r8
	movl	(%r11,%rdi), %r11d
	movl	%r11d, (%r8,%rsi)
	movq	520(%rcx), %r8
	movq	(%r8,%rdx), %r11
	movq	(%r8,%rax), %r8
	movl	(%r11,%rdi), %r11d
	movl	%r11d, (%r8,%rsi)
	movq	528(%rcx), %r8
	movq	(%r8,%rdx), %r11
	movq	(%r8,%rax), %r8
	movl	(%r11,%rdi), %r11d
	movl	%r11d, (%r8,%rsi)
	movl	424(%rcx), %ebp
	xorl	%r8d, %r8d
.L287:
	incq	%r8
	cmpl	%r8d, %ebp
	jl	.L387
	movq	384(%rcx), %r11
	movq	8(%r11), %rbx
	movq	16(%r11), %r11
	movq	(%rbx,%rdx), %r12
	movq	(%rbx,%rax), %rbx
	movsd	(%r12,%rax), %xmm0
	movsd	%xmm0, (%rbx,%rdx)
	movq	(%r11,%rdx), %rbx
	movq	(%r11,%rax), %r11
	movsd	(%rbx,%rax), %xmm0
	movsd	%xmm0, (%r11,%rdx)
	movq	400(%rcx), %r11
	movq	8(%r11), %rbx
	movq	16(%r11), %r11
	movq	(%rbx,%rdx), %r12
	movq	(%rbx,%rax), %rbx
	movq	(%r12,%rax), %r12
	movq	(%rbx,%rdx), %rbx
	movsd	(%r12,%r8,8), %xmm0
	movsd	%xmm0, (%rbx,%r8,8)
	movq	(%r11,%rdx), %rbx
	movq	(%r11,%rax), %r11
	movq	(%rbx,%rax), %rbx
	movq	(%r11,%rdx), %r11
	movsd	(%rbx,%r8,8), %xmm0
	movsd	%xmm0, (%r11,%r8,8)
	jmp	.L287
.L387:
	movl	$8, %r8d
	movl	$1, %ebx
.L289:
	cmpl	%ebx, 444(%rcx)
	jl	.L293
	movq	576(%rcx), %r11
	movq	392(%rcx), %r14
	movq	(%r11,%r8), %r11
	movq	(%r11,%rdx), %rbp
	movq	(%r11,%rax), %r11
	movl	0(%rbp,%rdi), %ebp
	movl	%ebp, (%r11,%rsi)
	movl	$1, %r11d
.L290:
	movq	(%r14,%r11,8), %rbp
	incq	%r11
	movq	0(%rbp,%r8), %rbp
	movq	0(%rbp,%rdx), %r12
	movq	0(%rbp,%rax), %rbp
	movsd	(%r12,%rax), %xmm0
	movsd	%xmm0, 0(%rbp,%rdx)
	cmpq	$7, %r11
	jne	.L290
	movq	584(%rcx), %r11
	movq	(%r11,%r8), %r14
	movl	$1, %r11d
.L291:
	movq	(%r14,%r11,8), %rbp
	incq	%r11
	movq	0(%rbp,%rdx), %r12
	movq	0(%rbp,%rax), %rbp
	movl	(%r12,%rdi), %r12d
	movl	%r12d, 0(%rbp,%rsi)
	cmpq	$8, %r11
	jne	.L291
	incl	%ebx
	addq	$8, %r8
	jmp	.L289
.L386:
	incl	%r10d
	addq	$4, %rdi
	jmp	.L284
.L295:
	cmpl	$0, 428(%rcx)
	jg	.L362
.L304:
	movq	gas(%rip), %rax
	cmpl	$0, 444(%rax)
	jle	.L298
	movl	$8, %ebx
	movl	$1, %r15d
	jmp	.L297
.L362:
	movl	$4, %ebx
	movl	$1, %ebp
.L296:
	movq	gas(%rip), %rax
	cmpl	%ebp, 424(%rax)
	jl	.L304
	movq	472(%rax), %rax
	cmpl	$0, (%rax,%rbx)
	jg	.L299
.L302:
	incl	%ebp
	addq	$4, %rbx
	jmp	.L296
.L299:
	leaq	(%rbx,%rbx), %r14
	xorl	%r12d, %r12d
.L300:
	movq	gas(%rip), %rax
	incq	%r12
	movq	472(%rax), %rdx
	cmpl	%r12d, (%rdx,%rbx)
	jl	.L302
	movq	568(%rax), %rcx
	movq	320(%rax), %rdx
	leaq	16+file_9(%rip), %rdi
	movq	360(%rax), %rax
	movq	8(%rcx), %rsi
	movq	16(%rcx), %rcx
	movq	32(%rax), %rax
	movq	48(%rdx), %rdx
	movq	(%rsi,%r12,8), %rsi
	movq	(%rcx,%r12,8), %rcx
	movq	(%rax,%r12,8), %rax
	movslq	(%rcx,%rbx), %rcx
	movslq	(%rsi,%rbx), %rsi
	movsd	(%rdx,%rsi,8), %xmm0
	leaq	.LC54(%rip), %rsi
	addsd	(%rdx,%rcx,8), %xmm0
	subsd	(%rdx,%r14), %xmm0
	divsd	.LC45(%rip), %xmm0
	movsd	%xmm0, (%rax,%r14)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	%ebp, %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC55(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	32(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r14), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L300
.L388:
	incl	%r15d
	addq	$8, %rbx
.L297:
	movq	gas(%rip), %rax
	cmpl	%r15d, 424(%rax)
	jl	.L298
	movl	$4, %ebp
	movl	$1, %r14d
.L308:
	movq	gas(%rip), %rax
	cmpl	%r14d, 424(%rax)
	jl	.L388
	movl	$8, %r12d
	movl	$1, %r9d
.L307:
	movq	gas(%rip), %rax
	cmpl	%r9d, 444(%rax)
	jl	.L389
	movq	584(%rax), %rdx
	movq	(%rdx,%r12), %rdx
	movq	24(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	movslq	(%rcx,%rbp), %rsi
	testl	%esi, %esi
	jle	.L305
	movq	32(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	movslq	(%rcx,%rbp), %rcx
	testl	%ecx, %ecx
	jle	.L305
	movq	8(%rdx), %rdi
	movq	(%rdi,%rbx), %rdi
	movslq	(%rdi,%rbp), %r11
	testl	%r11d, %r11d
	jle	.L305
	movq	16(%rdx), %rdx
	movq	(%rdx,%rbx), %rdx
	movslq	(%rdx,%rbp), %rdi
	testl	%edi, %edi
	jle	.L305
	movq	320(%rax), %rdx
	leaq	0(%rbp,%rbp), %r10
	movl	%r9d, 16(%rsp)
	movq	392(%rax), %rax
	movq	%r10, 8(%rsp)
	movq	48(%rdx), %rdx
	movq	24(%rax), %rax
	movsd	(%rdx,%r11,8), %xmm0
	addsd	(%rdx,%rdi,8), %xmm0
	leaq	16+file_9(%rip), %rdi
	movq	(%rax,%r12), %rax
	subsd	(%rdx,%rsi,8), %xmm0
	leaq	.LC56(%rip), %rsi
	subsd	(%rdx,%rcx,8), %xmm0
	movq	(%rax,%rbx), %rax
	movsd	%xmm0, (%rax,%r10)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	576(%rax), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%rbx), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	leaq	.LC57(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	8(%rsp), %r10
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	392(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%rbx), %rax
	movsd	(%rax,%r10), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	16(%rsp), %r9d
.L305:
	incl	%r9d
	addq	$8, %r12
	jmp	.L307
.L389:
	incl	%r14d
	addq	$4, %rbp
	jmp	.L308
.L298:
	movq	gas(%rip), %rdx
	cmpl	$1, 452(%rdx)
	jle	.L309
	movl	424(%rdx), %r10d
	movl	$4, %eax
	movl	$1, %esi
	jmp	.L310
.L309:
	xorl	%edi, %edi
	movq	%rdi, 24(%rsp)
	jmp	.L311
.L390:
	cvtsi2sdl	%r8d, %xmm1
	movq	8(%r9), %rcx
	incl	%esi
	addq	$4, %rax
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rcx,%rdi)
.L310:
	cmpl	%r10d, %esi
	jg	.L309
	movq	480(%rdx), %rcx
	leaq	(%rax,%rax), %rdi
	movq	$0x000000000, 224(%rsp)
	movl	(%rcx,%rax), %r8d
	movq	376(%rdx), %rcx
	movq	24(%rcx), %r9
	xorl	%ecx, %ecx
.L312:
	movsd	224(%rsp), %xmm0
	incq	%rcx
	cmpl	%ecx, %r8d
	jl	.L390
	movq	(%r9,%rcx,8), %r11
	addsd	(%r11,%rdi), %xmm0
	movsd	%xmm0, 224(%rsp)
	jmp	.L312
.L327:
	movq	520(%rax), %rdx
	movq	(%rdx,%rbx), %rdx
	movslq	(%rdx,%rbp), %r12
	testl	%r12d, %r12d
	jg	.L315
.L326:
	incl	32(%rsp)
	addq	$4, %rbp
.L316:
	movq	gas(%rip), %rax
	movl	32(%rsp), %edx
	cmpl	%edx, 424(%rax)
	jge	.L327
	incq	24(%rsp)
.L311:
	movl	24(%rsp), %eax
	incl	%eax
	movl	%eax, 64(%rsp)
	movq	gas(%rip), %rax
	movl	64(%rsp), %ebx
	cmpl	%ebx, 424(%rax)
	jl	.L367
	movq	24(%rsp), %rax
	movl	$1, 32(%rsp)
	movl	$4, %ebp
	leaq	8(,%rax,8), %rbx
	jmp	.L316
.L315:
	movq	528(%rax), %rax
	leaq	.LC58(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	movq	(%rax,%rbx), %rax
	movslq	(%rax,%rbp), %r14
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	64(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	32(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC60(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	%r12d, %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	leaq	0(,%r12,8), %rcx
	leaq	0(,%r14,8), %rsi
	movq	%rcx, 80(%rsp)
	movq	360(%rax), %rdx
	movq	%rsi, 72(%rsp)
	movq	32(%rdx), %rcx
	movq	8(%rdx), %rdx
	movq	(%rcx,%r14,8), %rcx
	movq	(%rdx,%r14,8), %rdx
	movsd	(%rcx,%r12,8), %xmm0
	divsd	(%rdx,%r12,8), %xmm0
	cvttsd2sil	%xmm0, %edx
	movl	%edx, 8(%rsp)
	cmpl	%edx, 456(%rax)
	jge	.L317
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC61(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	456(%rax), %esi
	call	_ZNSolsEi@PLT
	leaq	.LC62(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	8(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rbx, %rdi
	leaq	.LC63(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	leaq	224(%rsp), %rsi
	leaq	_ZSt3cin(%rip), %rdi
	call	_ZNSirsERd.isra.0
	jmp	.L265
.L317:
	movq	320(%rax), %rax
	movsd	.LC64(%rip), %xmm0
	movl	$1, %r14d
	movq	24(%rax), %rax
	subsd	(%rax,%r12,8), %xmm0
	leaq	0(%rbp,%rbp), %r12
	movsd	%xmm0, 224(%rsp)
.L325:
	movq	gas(%rip), %rax
	movq	384(%rax), %rax
	cmpq	$1, %r14
	je	.L319
	movq	16(%rax), %rax
	movq	(%rax,%rbx), %rax
	movsd	(%rax,%r12), %xmm6
	movsd	%xmm6, 16(%rsp)
	jmp	.L320
.L319:
	movq	8(%rax), %rax
	movq	(%rax,%rbx), %rax
	movsd	(%rax,%r12), %xmm7
	movsd	%xmm7, 16(%rsp)
.L320:
	leaq	.LC65(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	xorl	%r15d, %r15d
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	16(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	0(,%r14,8), %rax
	movq	$0x000000000, 40(%rsp)
	movq	%rax, 56(%rsp)
.L321:
	movq	gas(%rip), %rax
	cmpl	%r15d, 8(%rsp)
	jl	.L391
	movq	360(%rax), %rax
	movq	72(%rsp), %rdx
	leaq	240(%rsp), %rsi
	leaq	224(%rsp), %rdi
	movq	8(%rax), %rax
	movq	(%rax,%rdx), %rax
	movq	80(%rsp), %rdx
	movsd	(%rax,%rdx), %xmm1
	movl	8(%rsp), %eax
	leaq	232(%rsp), %rdx
	incl	%eax
	movsd	%xmm1, 88(%rsp)
	subl	%r15d, %eax
	cvtsi2sdl	%eax, %xmm0
	mulsd	%xmm1, %xmm0
	divsd	16(%rsp), %xmm0
	movsd	%xmm0, 240(%rsp)
	call	_Z4CQAXRdS_S_
	cvtsi2sdl	%r15d, %xmm0
	movsd	88(%rsp), %xmm1
	xorps	.LC43(%rip), %xmm0
	mulsd	%xmm1, %xmm0
	divsd	16(%rsp), %xmm0
	call	exp@PLT
	movq	0(%r13,%r14,8), %rax
	mulsd	232(%rsp), %xmm0
	movq	(%rax,%rbx), %rax
	movq	(%rax,%r12), %rax
	movsd	%xmm0, (%rax,%r15,8)
	addsd	40(%rsp), %xmm0
	incq	%r15
	movsd	%xmm0, 40(%rsp)
	jmp	.L321
.L391:
	movq	$0x000000000, 232(%rsp)
	xorl	%r15d, %r15d
.L323:
	movl	%r15d, 16(%rsp)
	movq	gas(%rip), %rax
	cmpl	%r15d, 8(%rsp)
	jl	.L392
	movq	0(%r13,%r14,8), %rsi
	movq	56(%rsp), %rdx
	leaq	16+file_9(%rip), %rdi
	movq	408(%rax), %rax
	movq	(%rsi,%rbx), %rsi
	movq	(%rax,%rdx), %rax
	movq	(%rsi,%r12), %rsi
	movq	(%rax,%rbx), %rax
	movsd	(%rsi,%r15,8), %xmm0
	divsd	40(%rsp), %xmm0
	addsd	232(%rsp), %xmm0
	leaq	.LC66(%rip), %rsi
	movq	(%rax,%r12), %rax
	movsd	%xmm0, (%rax,%r15,8)
	movsd	%xmm0, 232(%rsp)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	16(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	56(%rsp), %rdx
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	408(%rax), %rax
	movq	(%rax,%rdx), %rax
	movq	(%rax,%rbx), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%r15,8), %xmm0
	incq	%r15
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	jmp	.L323
.L392:
	decq	%r14
	jne	.L326
	movl	$2, %r14d
	jmp	.L325
.L367:
	movl	$1, 80(%rsp)
	movl	$8, %r12d
.L328:
	movq	gas(%rip), %rax
	movl	80(%rsp), %ebx
	cmpl	%ebx, 424(%rax)
	jl	.L265
	movl	$1, 88(%rsp)
	movl	$4, %ebp
.L330:
	movq	gas(%rip), %rax
	movl	88(%rsp), %ebx
	cmpl	%ebx, 424(%rax)
	jl	.L393
	movq	552(%rax), %rax
	movq	(%rax,%r12), %rax
	cmpl	$0, (%rax,%rbp)
	jg	.L329
.L359:
	incl	88(%rsp)
	addq	$4, %rbp
	jmp	.L330
.L329:
	xorl	%esi, %esi
	leaq	0(%rbp,%rbp), %rbx
	movq	%rsi, 120(%rsp)
.L331:
	movq	gas(%rip), %rax
	movq	552(%rax), %rcx
	movq	(%rcx,%r12), %rsi
	movl	120(%rsp), %ecx
	incl	%ecx
	cmpl	%ecx, (%rsi,%rbp)
	jl	.L394
	movq	392(%rax), %rax
	movq	120(%rsp), %rdx
	xorps	%xmm0, %xmm0
	movq	24(%rax), %rax
	leaq	1(%rdx), %r13
	leaq	0(,%r13,8), %rdx
	movq	(%rax,%r13,8), %rax
	movq	%rdx, 8(%rsp)
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbx), %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L332
	leaq	.LC58(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	80(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	88(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC67(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %r14
	movq	392(%r14), %r15
	movq	584(%r14), %rcx
	movq	(%rcx,%r13,8), %rdi
	movq	24(%r15), %rcx
	movq	48(%r15), %r9
	movq	(%rcx,%r13,8), %rcx
	movq	32(%rdi), %r10
	movq	(%r9,%r13,8), %r9
	movq	(%rcx,%r12), %rax
	movq	24(%rdi), %rcx
	movq	(%r10,%r12), %r10
	movq	40(%rdi), %rdi
	movq	(%rcx,%r12), %rcx
	addq	%rbx, %rax
	movslq	(%r10,%rbp), %r10
	movq	%rax, 144(%rsp)
	movslq	(%rcx,%rbp), %rcx
	movq	(%r9,%rcx,8), %r9
	leaq	0(,%rcx,8), %rax
	movq	%rax, 24(%rsp)
	leaq	(%r9,%r10,8), %rax
	movq	360(%r14), %r9
	movq	%rax, 152(%rsp)
	movq	8(%r9), %rax
	movq	%rax, 32(%rsp)
	movq	(%rdi,%r12), %rax
	addq	%rbp, %rax
	movq	%rax, 40(%rsp)
	movq	144(%rsp), %rax
	movsd	(%rax), %xmm0
	movq	152(%rsp), %rax
	addsd	(%rax), %xmm0
	movq	40(%rsp), %rax
	movslq	(%rax), %rdi
	movq	32(%rsp), %rax
	movq	(%rax,%rdi,8), %rdi
	movsd	.LC45(%rip), %xmm1
	movq	$1, 136(%rsp)
	mulsd	(%rdi,%rcx,8), %xmm1
	movq	32(%r15), %rcx
	movq	(%rcx,%r13,8), %rcx
	movq	(%rcx,%r12), %rcx
	divsd	%xmm1, %xmm0
	movsd	(%rcx,%rbx), %xmm7
	movsd	%xmm7, 96(%rsp)
	addsd	.LC68(%rip), %xmm0
	cvttsd2sil	%xmm0, %eax
	movl	%eax, 56(%rsp)
.L335:
	xorl	%ecx, %ecx
	movq	%rcx, 72(%rsp)
.L336:
	movl	72(%rsp), %edx
	cmpl	%edx, 56(%rsp)
	jl	.L395
	movq	144(%rsp), %rax
	movsd	96(%rsp), %xmm1
	mulsd	.LC45(%rip), %xmm1
	movsd	(%rax), %xmm0
	movq	152(%rsp), %rax
	addsd	(%rax), %xmm0
	movq	40(%rsp), %rax
	movslq	(%rax), %rcx
	movq	32(%rsp), %rax
	divsd	%xmm1, %xmm0
	movq	(%rax,%rcx,8), %rcx
	movq	24(%rsp), %rax
	movsd	%xmm0, 128(%rsp)
	movsd	(%rcx,%rax), %xmm0
	divsd	96(%rsp), %xmm0
	movsd	%xmm0, 64(%rsp)
	xorps	.LC43(%rip), %xmm0
	call	exp@PLT
	movq	320(%r14), %rcx
	movq	24(%rsp), %rax
	movsd	%xmm0, 16(%rsp)
	movsd	.LC64(%rip), %xmm0
	addq	24(%rcx), %rax
	subsd	(%rax), %xmm0
	movq	%rax, 160(%rsp)
	call	tgamma@PLT
	movsd	%xmm0, 104(%rsp)
	movsd	128(%rsp), %xmm0
	xorps	.LC43(%rip), %xmm0
	call	exp@PLT
	cvtsi2sdl	72(%rsp), %xmm5
	movaps	%xmm0, %xmm1
	movsd	.LC8(%rip), %xmm0
	mulsd	104(%rsp), %xmm1
	movaps	%xmm0, %xmm3
	subsd	16(%rsp), %xmm3
	movaps	%xmm0, %xmm2
	movsd	%xmm5, 168(%rsp)
	mulsd	64(%rsp), %xmm5
	divsd	%xmm3, %xmm2
	movsd	%xmm5, 176(%rsp)
	divsd	%xmm1, %xmm2
	movsd	128(%rsp), %xmm1
	subsd	%xmm5, %xmm1
	movsd	%xmm2, 192(%rsp)
	xorps	%xmm2, %xmm2
	comisd	%xmm1, %xmm2
	jbe	.L337
	movaps	%xmm2, %xmm1
.L337:
	xorps	%xmm2, %xmm2
.L338:
	comisd	.LC72(%rip), %xmm0
	movsd	%xmm0, 224(%rsp)
	jbe	.L396
	addsd	.LC69(%rip), %xmm1
	xorl	%ecx, %ecx
	movq	$0x000000000, 104(%rsp)
	movaps	%xmm1, %xmm0
	divsd	64(%rsp), %xmm0
	movsd	%xmm1, 16(%rsp)
	addsd	168(%rsp), %xmm0
	cvttsd2sil	%xmm0, %edi
.L339:
	movq	160(%rsp), %rax
	cmpl	%edi, %ecx
	movsd	.LC70(%rip), %xmm1
	movsd	176(%rsp), %xmm4
	movsd	.LC8(%rip), %xmm0
	subsd	(%rax), %xmm1
	addsd	16(%rsp), %xmm4
	jg	.L397
	cvtsi2sdl	%ecx, %xmm3
	mulsd	64(%rsp), %xmm3
	movl	%edi, 220(%rsp)
	movl	%ecx, 200(%rsp)
	movsd	%xmm2, 208(%rsp)
	divsd	%xmm4, %xmm3
	subsd	%xmm3, %xmm0
	call	pow@PLT
	addsd	104(%rsp), %xmm0
	movl	200(%rsp), %ecx
	movsd	208(%rsp), %xmm2
	movl	220(%rsp), %edi
	incl	%ecx
	movsd	%xmm0, 104(%rsp)
	jmp	.L339
.L397:
	movsd	128(%rsp), %xmm3
	movsd	%xmm2, 208(%rsp)
	divsd	%xmm4, %xmm3
	subsd	%xmm3, %xmm0
	mulsd	16(%rsp), %xmm0
	call	pow@PLT
	movsd	%xmm0, 200(%rsp)
	movsd	16(%rsp), %xmm0
	xorps	.LC43(%rip), %xmm0
	call	exp@PLT
	movsd	200(%rsp), %xmm1
	divsd	104(%rsp), %xmm1
	movsd	208(%rsp), %xmm2
	movaps	%xmm0, %xmm3
	movaps	%xmm1, %xmm0
	movsd	.LC71(%rip), %xmm1
	mulsd	%xmm3, %xmm0
	mulsd	%xmm0, %xmm1
	addsd	%xmm1, %xmm2
	movsd	.LC69(%rip), %xmm1
	addsd	16(%rsp), %xmm1
	divsd	%xmm2, %xmm0
	jmp	.L338
.L396:
	movq	112(%rsp), %rax
	movq	136(%rsp), %rdx
	mulsd	192(%rsp), %xmm2
	movq	(%rax,%rdx,8), %rcx
	movq	8(%rsp), %rax
	movq	(%rcx,%rax), %rcx
	movq	72(%rsp), %rax
	incq	72(%rsp)
	movq	(%rcx,%r12), %rcx
	movq	(%rcx,%rbx), %rcx
	movsd	%xmm2, (%rcx,%rax,8)
	jmp	.L336
.L395:
	cmpq	$1, 136(%rsp)
	jne	.L398
	movq	40(%r15), %rcx
	movq	8(%rsp), %rax
	movq	$2, 136(%rsp)
	movq	(%rcx,%rax), %rcx
	movq	(%rcx,%r12), %rcx
	movsd	(%rcx,%rbx), %xmm5
	movsd	%xmm5, 96(%rsp)
	jmp	.L335
.L398:
	movl	456(%r14), %eax
	xorl	%r9d, %r9d
	movq	%rax, %r10
	leaq	8(,%rax,8), %r11
	xorl	%eax, %eax
.L344:
	cmpl	%r9d, %r10d
	jl	.L399
	movq	48(%rsp), %rdx
	movq	%r11, %rcx
	movq	(%rdx,%r9,8), %rdi
	incq	%r9
	rep stosb
	jmp	.L344
.L399:
	movq	32(%r15), %rax
	movl	$1, %r14d
	movq	(%rax,%r13,8), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbx), %xmm5
	movsd	%xmm5, 16(%rsp)
.L347:
	leaq	0(,%r14,8), %rdx
	xorl	%r13d, %r13d
.L348:
	movl	%r13d, 72(%rsp)
	cmpl	%r13d, 56(%rsp)
	jl	.L400
	movq	40(%rsp), %rax
	movq	%rdx, 96(%rsp)
	movq	32(%rsp), %rdx
	movslq	(%rax), %rax
	movq	(%rdx,%rax,8), %rax
	movq	24(%rsp), %rdx
	movsd	(%rax,%rdx), %xmm0
	divsd	16(%rsp), %xmm0
	xorps	.LC43(%rip), %xmm0
	call	exp@PLT
	movq	40(%rsp), %rax
	movq	32(%rsp), %rdx
	movl	%r13d, %ecx
	negl	%ecx
	movsd	%xmm0, 64(%rsp)
	movslq	(%rax), %rax
	cvtsi2sdl	%ecx, %xmm0
	movq	(%rdx,%rax,8), %rax
	movq	24(%rsp), %rdx
	mulsd	(%rax,%rdx), %xmm0
	divsd	16(%rsp), %xmm0
	call	exp@PLT
	movq	96(%rsp), %rdx
	movsd	.LC8(%rip), %xmm1
	movq	184(%rsp), %rax
	movq	8(%rsp), %rsi
	movaps	%xmm1, %xmm2
	subsd	64(%rsp), %xmm2
	movq	(%rax,%r13,8), %rax
	divsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rax,%rdx)
	movq	112(%rsp), %rax
	movq	(%rax,%r14,8), %rax
	movq	(%rax,%rsi), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%rbx), %rcx
	leaq	(%rcx,%r13,8), %rax
	mulsd	(%rax), %xmm0
	movsd	%xmm0, (%rax)
	movq	48(%rsp), %rax
	movq	(%rax,%r13,8), %rdi
	xorl	%eax, %eax
	addq	%rdx, %rdi
.L349:
	movsd	(%rdi), %xmm0
	addsd	(%rcx,%rax,8), %xmm0
	incq	%rax
	movsd	%xmm0, (%rdi)
	cmpl	%eax, 72(%rsp)
	jge	.L349
	incq	%r13
	jmp	.L348
.L400:
	decq	%r14
	jne	.L401
	movq	40(%r15), %rax
	movq	8(%rsp), %rdx
	movl	$2, %r14d
	movq	(%rax,%rdx), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbx), %xmm4
	movsd	%xmm4, 16(%rsp)
	jmp	.L347
.L401:
	xorl	%r14d, %r14d
.L352:
	leal	1(%r14), %eax
	leaq	8(,%r14,8), %r13
	xorl	%r15d, %r15d
	movl	%eax, 24(%rsp)
.L355:
	movl	%r15d, 16(%rsp)
	movq	gas(%rip), %rax
	cmpl	%r15d, 56(%rsp)
	jl	.L402
	movq	416(%rax), %rax
	movq	8(%rsp), %rdx
	leaq	0(,%r15,8), %r9
	movq	(%rax,%r13), %rax
	movq	(%rax,%rdx), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%rbx), %rdx
	addq	%r9, %rdx
	movq	%rdx, %rax
	movq	48(%rsp), %rdx
	movq	(%rdx,%r15,8), %rsi
	movsd	(%rsi,%r13), %xmm0
	cmpl	%r15d, 56(%rsp)
	jne	.L353
	movsd	.LC8(%rip), %xmm0
.L353:
	movsd	%xmm0, (%rax)
	leaq	.LC73(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	incq	%r15
	movq	%r9, 32(%rsp)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	24(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	16(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	8(%rsp), %rcx
	movq	32(%rsp), %r9
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	416(%rax), %rax
	movq	(%rax,%r13), %rax
	movq	(%rax,%rcx), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%rbx), %rax
	movsd	(%rax,%r9), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	jmp	.L355
.L402:
	testq	%r14, %r14
	jne	.L332
	movl	$1, %r14d
	jmp	.L352
.L332:
	incq	120(%rsp)
	jmp	.L331
.L394:
	xorl	%edx, %edx
	movl	424(%rax), %esi
	xorl	%ecx, %ecx
	movq	%rdx, 560(%rax)
.L357:
	cmpl	%ecx, %esi
	jl	.L359
	movq	296(%rax), %rdi
	movq	$0x000000000, (%rdi,%rcx,8)
	incq	%rcx
	jmp	.L357
.L393:
	incl	80(%rsp)
	addq	$8, %r12
	jmp	.L328
.L265:
	movq	248(%rsp), %rax
	subq	%fs:40, %rax
	je	.L361
.L379:
	call	__stack_chk_fail@PLT
.L361:
	addq	$264, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4300:
	.size	_Z16DERIVED_GAS_DATAv, .-_Z16DERIVED_GAS_DATAv
	.section	.rodata.str1.1
.LC74:
	.string	"Reading Real_Oxygen data"
.LC94:
	.string	"Real_Oxygen data done"
	.text
	.globl	_Z11REAL_OXYGENv
	.type	_Z11REAL_OXYGENv, @function
_Z11REAL_OXYGENv:
.LFB4295:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC74(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	xorl	%r14d, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	pushq	%rbx
	.cfi_def_cfa_offset 64
	movl	$2147483649, %ebx
	addq	%rbx, %rbx
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, 424(%rax)
	movabsq	$111669149701, %rbx
	movq	%rbp, 444(%rax)
	movq	%rbx, 452(%rax)
	movq	$1, 432(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC22(%rip), %rbx
	movq	.LC23(%rip), %rsi
	movsd	.LC8(%rip), %xmm1
	movq	320(%rdx), %rax
	movsd	.LC20(%rip), %xmm2
	movq	472(%rdx), %r8
	movq	8(%rax), %r12
	movq	16(%rax), %rbp
	movq	32(%rax), %r11
	movq	40(%rax), %r10
	movq	%rbx, 8(%r12)
	movq	.LC6(%rip), %rbx
	movq	48(%rax), %r13
	movq	%rbx, 8(%rbp)
	movq	24(%rax), %rbx
	movq	488(%rdx), %rax
	movq	%rsi, 8(%rbx)
	movq	.LC24(%rip), %rsi
	movq	8(%rax), %r9
	movq	16(%rax), %rax
	movsd	%xmm1, 8(%r11)
	movq	%rsi, 8(%r10)
	movq	$0x000000000, 8(%r13)
	movl	$2, 4(%r9)
	movl	%r14d, 4(%rax)
	movq	328(%rdx), %rax
	movq	8(%rax), %rax
	movsd	%xmm2, 8(%rax)
	movq	360(%rdx), %rax
	movl	$1, 4(%r8)
	movq	8(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	.LC75(%rip), %xmm0
	movq	.LC76(%rip), %rsi
	movq	480(%rdx), %rdi
	movsd	%xmm0, 8(%rcx)
	movq	16(%rax), %rcx
	movq	8(%rcx), %rcx
	movq	%rsi, 8(%rcx)
	movq	24(%rax), %rcx
	movq	40(%rax), %rax
	movq	8(%rcx), %rcx
	movq	8(%rax), %rax
	movsd	%xmm0, 8(%rcx)
	movsd	%xmm1, 8(%rax)
	movq	568(%rdx), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	8(%rcx), %rcx
	movq	8(%rax), %rax
	movl	$2, 4(%rcx)
	movl	$2, 4(%rax)
	movl	$3, 4(%rdi)
	cmpl	$1, 452(%rdx)
	jle	.L404
	movq	376(%rdx), %rax
	movq	.LC51(%rip), %r14
	movsd	.LC77(%rip), %xmm0
	movq	.LC50(%rip), %r15
	movq	8(%rax), %rsi
	movq	8(%rsi), %rcx
	movq	%r14, 8(%rcx)
	movq	16(%rax), %rcx
	movq	24(%rax), %rax
	movq	8(%rcx), %r14
	movq	$0x000000000, 8(%r14)
	movq	8(%rax), %r14
	movsd	%xmm0, 8(%r14)
	movq	16(%rsi), %r14
	movq	24(%rsi), %rsi
	movq	%r15, 8(%r14)
	movq	16(%rcx), %r15
	movq	.LC78(%rip), %r14
	movq	24(%rcx), %rcx
	movq	%r14, 8(%r15)
	movq	16(%rax), %r15
	movq	24(%rax), %rax
	movsd	%xmm0, 8(%r15)
	movsd	%xmm1, 8(%rsi)
	movq	.LC79(%rip), %rsi
	movq	%rsi, 8(%rcx)
	movsd	%xmm0, 8(%rax)
.L404:
	movq	.LC80(%rip), %rax
	movsd	.LC8(%rip), %xmm1
	movq	%rax, 16(%r12)
	movq	.LC6(%rip), %rax
	movq	%rax, 16(%rbp)
	movq	.LC81(%rip), %rax
	movq	%rax, 16(%rbx)
	movq	.LC82(%rip), %rax
	movsd	%xmm1, 16(%r11)
	xorl	%r11d, %r11d
	movq	%rax, 16(%r10)
	movq	.LC83(%rip), %rax
	movq	%rax, 16(%r13)
	movl	%r11d, 8(%r9)
	movl	%r11d, 8(%r8)
	cmpl	$1, 452(%rdx)
	jle	.L405
	movq	376(%rdx), %rax
	movl	$5, 8(%rdi)
	movsd	.LC77(%rip), %xmm0
	movq	.LC51(%rip), %rbx
	movq	8(%rax), %rsi
	movq	8(%rsi), %rcx
	movsd	%xmm2, 16(%rcx)
	movq	16(%rax), %rcx
	movq	24(%rax), %rax
	movq	8(%rcx), %rdi
	movq	$0x000000000, 16(%rdi)
	movq	8(%rax), %rdi
	movsd	%xmm0, 16(%rdi)
	movq	16(%rsi), %rdi
	movq	%rbx, 16(%rdi)
	movq	16(%rcx), %rdi
	movq	.LC84(%rip), %rbx
	movq	%rbx, 16(%rdi)
	movq	16(%rax), %rdi
	movq	.LC85(%rip), %rbx
	movsd	%xmm0, 16(%rdi)
	movq	24(%rsi), %rdi
	movsd	%xmm1, 16(%rdi)
	movq	24(%rcx), %rdi
	movq	%rbx, 16(%rdi)
	movq	24(%rax), %rdi
	movq	.LC86(%rip), %rbx
	movsd	%xmm0, 16(%rdi)
	movq	32(%rsi), %rdi
	movsd	%xmm2, 16(%rdi)
	movq	32(%rcx), %rdi
	movq	%rbx, 16(%rdi)
	movq	32(%rax), %rdi
	movq	40(%rsi), %rsi
	movq	40(%rcx), %rcx
	movq	.LC87(%rip), %rbx
	movq	40(%rax), %rax
	movsd	%xmm0, 16(%rdi)
	movsd	%xmm1, 16(%rsi)
	movq	%rbx, 16(%rcx)
	movsd	%xmm0, 16(%rax)
.L405:
	xorl	%edi, %edi
.L406:
	cmpl	%edi, 424(%rdx)
	movq	520(%rdx), %rcx
	movq	528(%rdx), %rax
	jl	.L408
	leaq	0(,%rdi,8), %r8
	leaq	(%rcx,%r8), %rsi
	leaq	(%rax,%r8), %rcx
	xorl	%eax, %eax
.L409:
	cmpl	%eax, 424(%rdx)
	jl	.L421
	movq	(%rsi), %r8
	xorl	%r9d, %r9d
	xorl	%r10d, %r10d
	movl	%r9d, (%r8,%rax,4)
	movq	(%rcx), %r8
	movl	%r10d, (%r8,%rax,4)
	incq	%rax
	jmp	.L409
.L421:
	incq	%rdi
	jmp	.L406
.L408:
	movq	16(%rcx), %rcx
	movq	16(%rax), %rax
	movq	.LC88(%rip), %rbx
	movl	$1, 8(%rcx)
	movl	$1, 8(%rax)
	movq	400(%rdx), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	16(%rcx), %rcx
	movq	16(%rax), %rax
	movq	16(%rcx), %rcx
	movq	16(%rax), %rax
	movq	%rbx, 8(%rcx)
	movq	.LC89(%rip), %rbx
	movq	%rbx, 8(%rax)
	movq	.LC90(%rip), %rbx
	movq	%rbx, 16(%rcx)
	movq	.LC91(%rip), %rbx
	movq	%rbx, 16(%rax)
	movq	384(%rdx), %rax
	movq	.LC92(%rip), %rbx
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	16(%rcx), %rcx
	movq	16(%rax), %rax
	movq	%rbx, 16(%rcx)
	movq	.LC93(%rip), %rbx
	xorl	%ecx, %ecx
	movq	%rbx, 16(%rax)
.L410:
	movl	424(%rdx), %r10d
	cmpl	%ecx, %r10d
	jl	.L412
	leaq	0(,%rcx,8), %rsi
	xorl	%eax, %eax
.L413:
	cmpl	%eax, 424(%rdx)
	jl	.L422
	movq	552(%rdx), %rdi
	xorl	%r8d, %r8d
	movq	(%rdi,%rsi), %rdi
	movl	%r8d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L413
.L422:
	incq	%rcx
	jmp	.L410
.L412:
	movl	%r10d, %eax
	movl	444(%rdx), %ebp
	xorl	%r8d, %r8d
	leaq	8(,%rax,8), %r11
	xorl	%eax, %eax
.L414:
	xorl	%esi, %esi
.L419:
	cmpl	%esi, %ebp
	jl	.L416
	leaq	0(,%rsi,8), %r12
	xorl	%r9d, %r9d
.L417:
	cmpl	%r9d, %r10d
	jl	.L423
	movq	392(%rdx), %rcx
	movq	(%rcx,%r8), %rcx
	movq	(%rcx,%r12), %rcx
	movq	(%rcx,%r9,8), %rdi
	movq	%r11, %rcx
	incq	%r9
	rep stosb
	jmp	.L417
.L423:
	incq	%rsi
	jmp	.L419
.L416:
	addq	$8, %r8
	cmpq	$56, %r8
	jne	.L414
	xorl	%eax, %eax
	movq	%rax, 584(%rdx)
	call	_Z16DERIVED_GAS_DATAv
	leaq	.LC94(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	popq	%rdx
	.cfi_def_cfa_offset 56
	movq	%rax, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4295:
	.size	_Z11REAL_OXYGENv, .-_Z11REAL_OXYGENv
	.section	.rodata.str1.1
.LC95:
	.string	"REAL_AIR data done"
	.text
	.globl	_Z8REAL_AIRv
	.type	_Z8REAL_AIRv, @function
_Z8REAL_AIRv:
.LFB4297:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC95(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movabsq	$17179869185, %rbx
	subq	$152, %rsp
	.cfi_def_cfa_offset 208
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, 444(%rax)
	movabsq	$171798691845, %rbx
	movq	%rbx, 452(%rax)
	movabsq	$4294967301, %rbx
	movq	%rbx, 424(%rax)
	movq	$1, 432(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC22(%rip), %rbx
	movsd	.LC6(%rip), %xmm3
	movsd	.LC8(%rip), %xmm1
	movq	320(%rdx), %rax
	movq	.LC24(%rip), %rdi
	movsd	.LC20(%rip), %xmm2
	movq	472(%rdx), %r13
	movq	8(%rax), %r11
	movq	16(%rax), %r10
	movq	24(%rax), %r9
	movq	32(%rax), %r8
	movq	%rbx, 8(%r11)
	movq	.LC23(%rip), %rbx
	movq	48(%rax), %r15
	movsd	%xmm3, 8(%r10)
	movq	%rbx, 8(%r9)
	movq	40(%rax), %rbx
	movq	488(%rdx), %rax
	movsd	%xmm1, 8(%r8)
	movq	%rbx, 8(%rsp)
	movq	8(%rax), %r14
	movq	16(%rax), %rax
	movq	%rdi, 8(%rbx)
	xorl	%ebx, %ebx
	movq	$0x000000000, 8(%r15)
	movq	%rax, 56(%rsp)
	movl	$2, 4(%r14)
	movl	%ebx, 4(%rax)
	movq	328(%rdx), %rax
	movq	8(%rax), %rax
	movq	%rax, 64(%rsp)
	movsd	%xmm2, 8(%rax)
	movl	$1, 4(%r13)
	movq	360(%rdx), %rax
	movsd	.LC75(%rip), %xmm0
	movq	.LC96(%rip), %rdi
	movq	8(%rax), %rcx
	movq	8(%rcx), %rbx
	movq	16(%rax), %rcx
	movsd	%xmm0, 8(%rbx)
	movq	%rbx, 72(%rsp)
	movq	8(%rcx), %rbx
	movq	24(%rax), %rcx
	movq	40(%rax), %rax
	movq	%rdi, 8(%rbx)
	movq	8(%rax), %rax
	movq	%rbx, 80(%rsp)
	movq	8(%rcx), %rbx
	movq	%rax, 96(%rsp)
	movsd	%xmm0, 8(%rbx)
	movsd	%xmm1, 8(%rax)
	movq	568(%rdx), %rax
	movq	%rbx, 88(%rsp)
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	8(%rcx), %rdi
	movq	8(%rax), %rax
	movl	$3, 4(%rdi)
	movq	%rax, 112(%rsp)
	movl	$3, 4(%rax)
	movq	376(%rdx), %rax
	movq	%rdi, 104(%rsp)
	movq	480(%rdx), %rdi
	movq	8(%rax), %r12
	movl	$3, 4(%rdi)
	movq	8(%r12), %rsi
	movq	16(%rax), %rbp
	movsd	.LC51(%rip), %xmm7
	movsd	.LC77(%rip), %xmm0
	movq	8(%rbp), %rbx
	movsd	.LC50(%rip), %xmm4
	movsd	%xmm7, 8(%rsi)
	movq	.LC78(%rip), %rcx
	movq	$0x000000000, 8(%rbx)
	movq	%rbx, 16(%rsp)
	movq	24(%rax), %rbx
	movq	8(%rbx), %rax
	movsd	%xmm0, 8(%rax)
	movq	%rax, 24(%rsp)
	movq	16(%r12), %rax
	movsd	%xmm4, 8(%rax)
	movq	%rax, 32(%rsp)
	movq	16(%rbp), %rax
	movq	%rcx, 8(%rax)
	movq	.LC79(%rip), %rcx
	movq	%rax, 40(%rsp)
	movq	16(%rbx), %rax
	movsd	%xmm0, 8(%rax)
	movq	%rax, 48(%rsp)
	movq	24(%r12), %rax
	movsd	%xmm1, 8(%rax)
	movq	%rax, 120(%rsp)
	movq	24(%rbp), %rax
	movq	%rcx, 8(%rax)
	movq	%rax, 128(%rsp)
	movq	24(%rbx), %rax
	movq	%rax, 136(%rsp)
	movsd	%xmm0, 8(%rax)
	movq	.LC12(%rip), %rax
	movq	.LC19(%rip), %rcx
	movsd	.LC97(%rip), %xmm5
	movq	%rax, 16(%r11)
	movq	.LC18(%rip), %rax
	movsd	%xmm3, 16(%r10)
	movq	%rax, 16(%r9)
	movq	8(%rsp), %rax
	movsd	%xmm1, 16(%r8)
	movq	%rcx, 16(%rax)
	movq	56(%rsp), %rax
	xorl	%ecx, %ecx
	movq	$0x000000000, 16(%r15)
	movl	$2, 8(%r14)
	movl	%ecx, 8(%rax)
	movq	64(%rsp), %rax
	movq	.LC98(%rip), %rcx
	movsd	%xmm2, 16(%rax)
	movq	72(%rsp), %rax
	movl	$1, 8(%r13)
	movsd	%xmm5, 16(%rax)
	movq	80(%rsp), %rax
	movq	%rcx, 16(%rax)
	movq	88(%rsp), %rax
	movq	.LC99(%rip), %rcx
	movsd	%xmm5, 16(%rax)
	movq	96(%rsp), %rax
	movq	%rcx, 16(%rax)
	movq	104(%rsp), %rax
	movl	$4, 8(%rax)
	movq	112(%rsp), %rax
	movl	$4, 8(%rax)
	movl	$1, 8(%rdi)
	movsd	%xmm1, 16(%rsi)
	movq	16(%rsp), %rax
	movq	24(%rsp), %rcx
	movsd	.LC80(%rip), %xmm6
	movsd	.LC81(%rip), %xmm5
	movq	$0x000000000, 16(%rax)
	movq	.LC100(%rip), %rax
	movq	%rax, 16(%rcx)
	movq	8(%rsp), %rax
	movq	.LC82(%rip), %rcx
	movsd	%xmm6, 24(%r11)
	movsd	%xmm3, 24(%r10)
	movsd	%xmm5, 24(%r9)
	movsd	%xmm1, 24(%r8)
	movq	%rcx, 24(%rax)
	movq	.LC83(%rip), %rax
	movq	.LC84(%rip), %rcx
	movq	%rax, 24(%r15)
	xorl	%eax, %eax
	movl	%eax, 12(%r14)
	movl	%eax, 12(%r13)
	movq	16(%rsp), %rax
	movl	$5, 12(%rdi)
	movsd	%xmm2, 24(%rsi)
	movq	$0x000000000, 24(%rax)
	movq	24(%rsp), %rax
	movsd	%xmm0, 24(%rax)
	movq	32(%rsp), %rax
	movsd	%xmm7, 24(%rax)
	movq	40(%rsp), %rax
	movq	%rcx, 24(%rax)
	movq	48(%rsp), %rax
	movsd	%xmm0, 24(%rax)
	movq	120(%rsp), %rax
	movsd	%xmm1, 24(%rax)
	movq	128(%rsp), %rax
	movq	.LC85(%rip), %rcx
	movq	%rcx, 24(%rax)
	movq	136(%rsp), %rax
	movq	.LC86(%rip), %rcx
	movsd	%xmm0, 24(%rax)
	movq	32(%r12), %rax
	movq	40(%r12), %r12
	movsd	%xmm2, 24(%rax)
	movq	32(%rbp), %rax
	movq	40(%rbp), %rbp
	movq	%rcx, 24(%rax)
	movq	32(%rbx), %rax
	xorl	%ecx, %ecx
	movq	40(%rbx), %rbx
	movsd	%xmm0, 24(%rax)
	movq	.LC87(%rip), %rax
	movsd	%xmm1, 24(%r12)
	movq	%rax, 24(%rbp)
	movq	8(%rsp), %rax
	movsd	%xmm0, 24(%rbx)
	movq	.LC101(%rip), %rbx
	movsd	%xmm6, 32(%r11)
	movsd	%xmm3, 32(%r10)
	movsd	%xmm5, 32(%r9)
	movsd	%xmm1, 32(%r8)
	movq	%rbx, 32(%rax)
	movq	.LC102(%rip), %rax
	movq	%rax, 32(%r15)
	xorl	%eax, %eax
	movl	%eax, 16(%r14)
	movl	%eax, 16(%r13)
	movq	.LC52(%rip), %rax
	movl	$3, 16(%rdi)
	movq	%rax, 32(%rsi)
	movq	16(%rsp), %rax
	movq	.LC46(%rip), %rbx
	movq	$0x000000000, 32(%rax)
	movq	24(%rsp), %rax
	movsd	%xmm0, 32(%rax)
	movq	32(%rsp), %rax
	movq	%rbx, 32(%rax)
	movq	40(%rsp), %rax
	movq	.LC103(%rip), %rbx
	movq	%rbx, 32(%rax)
	movq	48(%rsp), %rax
	movq	.LC104(%rip), %rbx
	movsd	%xmm0, 32(%rax)
	movq	120(%rsp), %rax
	movq	%rbx, 32(%rax)
	movq	128(%rsp), %rax
	movq	.LC105(%rip), %rbx
	movq	%rbx, 32(%rax)
	movq	136(%rsp), %rax
	movq	.LC108(%rip), %rbx
	movsd	%xmm0, 32(%rax)
	movq	.LC106(%rip), %rax
	movq	%rax, 40(%r11)
	movq	.LC107(%rip), %rax
	movsd	%xmm3, 40(%r10)
	movq	%rax, 40(%r9)
	movq	8(%rsp), %rax
	movsd	%xmm1, 40(%r8)
	movq	%rbx, 40(%rax)
	movq	.LC109(%rip), %rax
	movq	%rax, 40(%r15)
	movl	$2, 20(%r14)
	movq	56(%rsp), %rax
	movsd	.LC110(%rip), %xmm1
	movq	.LC111(%rip), %rbx
	movl	%ecx, 20(%rax)
	movq	64(%rsp), %rax
	xorl	%ecx, %ecx
	movsd	%xmm2, 40(%rax)
	movq	72(%rsp), %rax
	movl	$1, 20(%r13)
	movsd	%xmm1, 40(%rax)
	movq	80(%rsp), %rax
	movq	%rbx, 40(%rax)
	movq	88(%rsp), %rax
	movq	.LC112(%rip), %rbx
	movsd	%xmm1, 40(%rax)
	movq	96(%rsp), %rax
	movq	%rbx, 40(%rax)
	movq	104(%rsp), %rax
	movl	$3, 20(%rax)
	movq	112(%rsp), %rax
	movl	$4, 20(%rax)
	movq	16(%rsp), %rax
	movl	$2, 20(%rdi)
	movq	.LC113(%rip), %rdi
	movsd	%xmm4, 40(%rsi)
	movq	$0x000000000, 40(%rax)
	movq	24(%rsp), %rax
	movsd	%xmm0, 40(%rax)
	movq	32(%rsp), %rax
	movsd	%xmm4, 40(%rax)
	movq	40(%rsp), %rax
	movq	%rdi, 40(%rax)
	movq	48(%rsp), %rax
	movsd	%xmm0, 40(%rax)
.L425:
	cmpl	%ecx, 424(%rdx)
	jl	.L443
	movq	520(%rdx), %rax
	leaq	(%rax,%rcx,8), %rsi
	xorl	%eax, %eax
.L428:
	cmpl	%eax, 424(%rdx)
	jl	.L446
	movq	(%rsi), %rdi
	xorl	%r9d, %r9d
	movl	%r9d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L428
.L446:
	incq	%rcx
	jmp	.L425
.L443:
	xorl	%ecx, %ecx
.L427:
	movl	424(%rdx), %r9d
	cmpl	%ecx, %r9d
	jge	.L430
	movl	%r9d, %eax
	xorl	%r10d, %r10d
	leaq	8(,%rax,8), %r11
	xorl	%eax, %eax
	jmp	.L431
.L430:
	movq	528(%rdx), %rax
	leaq	(%rax,%rcx,8), %rsi
	xorl	%eax, %eax
.L432:
	cmpl	%eax, 424(%rdx)
	jl	.L447
	movq	(%rsi), %rdi
	xorl	%r8d, %r8d
	movl	%r8d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L432
.L447:
	incq	%rcx
	jmp	.L427
.L431:
	xorl	%r8d, %r8d
.L436:
	movq	392(%rdx), %rsi
	cmpl	%r8d, %r9d
	jl	.L434
	movq	(%rsi,%r10), %rcx
	xorl	%esi, %esi
	movq	(%rcx,%r8,8), %rbx
.L433:
	movq	(%rbx,%rsi,8), %rdi
	movq	%r11, %rcx
	incq	%rsi
	rep stosb
	cmpl	%esi, %r9d
	jge	.L433
	incq	%r8
	jmp	.L436
.L434:
	addq	$8, %r10
	cmpq	$40, %r10
	jne	.L431
	movq	400(%rdx), %rax
	movq	520(%rdx), %r15
	movq	528(%rdx), %r14
	movq	.LC88(%rip), %r8
	movq	8(%rax), %rcx
	movq	16(%rax), %r13
	movq	24(%r15), %rbx
	movq	24(%r14), %r11
	movq	24(%rcx), %r10
	movq	24(%r13), %r9
	movl	$1, 12(%rbx)
	movsd	.LC115(%rip), %xmm0
	movq	24(%r10), %rdi
	movq	24(%r9), %rax
	movl	$1, 12(%r11)
	movsd	.LC117(%rip), %xmm2
	movq	%r8, 8(%rdi)
	movq	.LC89(%rip), %r8
	movq	%r8, 8(%rax)
	movq	.LC114(%rip), %r8
	movq	%r8, 16(%rdi)
	movq	.LC116(%rip), %r8
	movsd	%xmm0, 16(%rax)
	movq	%r8, 24(%rdi)
	movq	.LC118(%rip), %r8
	movsd	%xmm0, 24(%rax)
	movsd	%xmm2, 32(%rdi)
	movsd	%xmm0, 32(%rax)
	movq	%r8, 40(%rdi)
	movsd	%xmm0, 40(%rax)
	movq	384(%rdx), %rax
	movq	8(%rax), %r12
	movq	24(%r12), %r8
	movq	16(%rax), %rbp
	movsd	.LC93(%rip), %xmm0
	movq	32(%r15), %rax
	movq	24(%rbp), %rdi
	movsd	.LC92(%rip), %xmm1
	movsd	.LC119(%rip), %xmm5
	movsd	.LC123(%rip), %xmm3
	movsd	%xmm1, 24(%r8)
	movsd	.LC124(%rip), %xmm4
	movq	.LC122(%rip), %r15
	movsd	%xmm0, 24(%rdi)
	movl	$2, 16(%rax)
	movq	32(%r14), %rax
	movq	.LC120(%rip), %r14
	movl	$1, 16(%rax)
	movq	32(%rcx), %rax
	movq	32(%rax), %rcx
	movq	32(%r13), %rax
	movq	32(%rax), %rax
	movsd	%xmm5, 8(%rcx)
	movq	%r14, 8(%rax)
	movsd	%xmm2, 16(%rcx)
	movsd	.LC121(%rip), %xmm2
	movsd	%xmm2, 16(%rax)
	movq	%r15, 24(%rcx)
	movsd	%xmm3, 24(%rax)
	movsd	%xmm4, 32(%rcx)
	movsd	%xmm3, 32(%rax)
	movsd	%xmm4, 40(%rcx)
	movsd	%xmm2, 40(%rax)
	movq	32(%r12), %rax
	movsd	%xmm1, 32(%rax)
	movq	32(%rbp), %rax
	movq	32(%r10), %rcx
	movsd	.LC99(%rip), %xmm2
	movsd	.LC125(%rip), %xmm4
	movsd	%xmm0, 32(%rax)
	movq	32(%r9), %rax
	xorl	%r9d, %r9d
	movl	$5, 16(%rbx)
	movq	.LC126(%rip), %rbx
	movl	$1, 16(%r11)
	movl	444(%rdx), %r12d
	movsd	%xmm2, 8(%rcx)
	movsd	%xmm4, 8(%rax)
	movq	%rbx, 16(%rcx)
	movsd	%xmm3, 16(%rax)
	movsd	.LC127(%rip), %xmm3
	movsd	%xmm2, 24(%rcx)
	movsd	%xmm3, 24(%rax)
	movsd	%xmm2, 32(%rcx)
	movsd	%xmm3, 32(%rax)
	movsd	%xmm5, 40(%rcx)
	movsd	%xmm4, 40(%rax)
	xorl	%eax, %eax
	movsd	%xmm1, 32(%r8)
	movsd	%xmm0, 32(%rdi)
.L437:
	xorl	%r8d, %r8d
.L442:
	cmpl	%r8d, %r12d
	jl	.L439
	movl	424(%rdx), %ecx
	leaq	0(,%r8,8), %r13
	xorl	%r10d, %r10d
	movq	%rcx, %rbx
	leaq	8(,%rcx,8), %r11
.L440:
	cmpl	%r10d, %ebx
	jl	.L448
	movq	(%rsi,%r9,8), %rcx
	movq	(%rcx,%r13), %rcx
	movq	(%rcx,%r10,8), %rdi
	movq	%r11, %rcx
	incq	%r10
	rep stosb
	jmp	.L440
.L448:
	incq	%r8
	jmp	.L442
.L439:
	incq	%r9
	cmpq	$7, %r9
	jne	.L437
	xorl	%eax, %eax
	movq	.LC81(%rip), %rdi
	movq	%rax, 552(%rdx)
	movq	%rax, 584(%rdx)
	movq	48(%rsi), %rax
	movq	8(%rax), %rcx
	movq	16(%rcx), %rax
	movq	$0x000000000, 24(%rax)
	movq	576(%rdx), %rax
	movq	8(%rax), %rax
	movq	16(%rax), %rdx
	movl	$1, 12(%rdx)
	movq	8(%rsi), %rdx
	movq	8(%rdx), %r9
	movq	32(%r9), %rdx
	movq	%rdi, 40(%rdx)
	movq	16(%rsi), %rdx
	movq	.LC128(%rip), %rdi
	movq	8(%rdx), %r8
	movq	32(%r8), %rdx
	movq	%rdi, 40(%rdx)
	movq	32(%rsi), %rdx
	movq	8(%rdx), %rdi
	movq	32(%rdi), %rdx
	movsd	%xmm1, 40(%rdx)
	movq	40(%rsi), %rdx
	movq	8(%rdx), %rdx
	movq	32(%rdx), %rsi
	movsd	%xmm0, 40(%rsi)
	movq	32(%rcx), %rsi
	movq	$0x000000000, 40(%rsi)
	movq	32(%rax), %rsi
	movl	$2, 20(%rsi)
	movq	24(%rcx), %rsi
	movq	.LC129(%rip), %rbx
	movq	8(%rdx), %rdx
	movq	%rbx, 40(%rsi)
	movq	24(%rax), %rsi
	movq	.LC130(%rip), %rbx
	movq	8(%rax), %rax
	movl	$3, 20(%rsi)
	movq	8(%r9), %rsi
	movq	%rbx, 32(%rsi)
	movq	8(%r8), %rsi
	movq	.LC131(%rip), %rbx
	movq	%rbx, 32(%rsi)
	movq	8(%rdi), %rsi
	movsd	%xmm1, 32(%rsi)
	movsd	%xmm0, 32(%rdx)
	movq	8(%rcx), %rdx
	movq	$0x000000000, 32(%rdx)
	movl	$4, 16(%rax)
	call	_Z16DERIVED_GAS_DATAv
	leaq	.LC95(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	addq	$152, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	movq	%rax, %rdi
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4297:
	.size	_Z8REAL_AIRv, .-_Z8REAL_AIRv
	.section	.rodata.str1.1
.LC132:
	.string	"Reading OXYGEN_HYDROGEN data"
.LC188:
	.string	"OXYGEN_HYDROGEN data done"
	.text
	.globl	_Z15OXYGEN_HYDROGENv
	.type	_Z15OXYGEN_HYDROGENv, @function
_Z15OXYGEN_HYDROGENv:
.LFB4299:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC132(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	xorl	%r15d, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movabsq	$68719476739, %rbx
	subq	$344, %rsp
	.cfi_def_cfa_offset 400
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, 444(%rax)
	movabsq	$171798691841, %rbx
	movq	%rbx, 452(%rax)
	movl	$1610612737, %ebx
	movq	$3, 432(%rax)
	salq	$3, %rbx
	movq	%rbx, 424(%rax)
	call	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	.LC133(%rip), %rax
	movsd	.LC6(%rip), %xmm3
	movq	.LC134(%rip), %rbx
	movq	320(%rdx), %rsi
	movsd	.LC8(%rip), %xmm0
	movq	472(%rdx), %r11
	movsd	.LC20(%rip), %xmm4
	movq	8(%rsi), %rcx
	movq	24(%rsi), %r14
	movq	32(%rsi), %r13
	movq	40(%rsi), %r12
	movq	%rax, 8(%rcx)
	movq	16(%rsi), %rax
	movq	48(%rsi), %rbp
	movq	488(%rdx), %rsi
	movsd	%xmm3, 8(%rax)
	movq	%rbx, 8(%r14)
	movq	.LC135(%rip), %rbx
	movq	16(%rsi), %rdi
	movsd	%xmm0, 8(%r13)
	movq	%rbx, 8(%r12)
	movq	8(%rsi), %rbx
	movq	328(%rdx), %rsi
	movq	$0x000000000, 8(%rbp)
	movq	%rdi, 8(%rsp)
	movl	$2, 4(%rbx)
	movl	%r15d, 4(%rdi)
	movq	8(%rsi), %rdi
	movsd	%xmm4, 8(%rdi)
	movq	%rdi, 16(%rsp)
	movl	$1, 4(%r11)
	movq	360(%rdx), %rsi
	movq	.LC136(%rip), %r15
	movsd	.LC137(%rip), %xmm1
	movq	8(%rsi), %r8
	movq	16(%rsi), %r10
	movq	24(%rsi), %r9
	movsd	.LC138(%rip), %xmm6
	movq	8(%r8), %rdi
	movq	%r15, 8(%rdi)
	movq	%rdi, 24(%rsp)
	movq	8(%r10), %rdi
	movsd	%xmm1, 8(%rdi)
	movq	%rdi, 32(%rsp)
	movq	8(%r9), %rdi
	movsd	%xmm6, 8(%rdi)
	movq	%rdi, 40(%rsp)
	movq	40(%rsi), %rdi
	movq	8(%rdi), %rsi
	movsd	%xmm0, 8(%rsi)
	movq	%rsi, 48(%rsp)
	movq	568(%rdx), %rsi
	movq	8(%rsi), %r15
	movq	16(%rsi), %rsi
	movq	%r15, 72(%rsp)
	movq	8(%r15), %r15
	movq	%rsi, 80(%rsp)
	movq	8(%rsi), %rsi
	movl	$2, 4(%r15)
	movq	%r15, 56(%rsp)
	movq	.LC139(%rip), %r15
	movq	%rsi, 64(%rsp)
	movl	$2, 4(%rsi)
	xorl	%esi, %esi
	movq	%r15, 16(%rcx)
	movsd	.LC81(%rip), %xmm2
	movq	.LC140(%rip), %r15
	movsd	%xmm3, 16(%rax)
	movsd	.LC75(%rip), %xmm5
	movsd	%xmm2, 16(%r14)
	movsd	%xmm0, 16(%r13)
	movq	%r15, 16(%r12)
	movq	.LC141(%rip), %r15
	movq	%r15, 16(%rbp)
	movq	.LC22(%rip), %r15
	movl	%esi, 8(%rbx)
	movl	%esi, 8(%r11)
	xorl	%esi, %esi
	movq	%r15, 24(%rcx)
	movq	.LC23(%rip), %r15
	movsd	%xmm3, 24(%rax)
	movq	%r15, 24(%r14)
	movq	.LC24(%rip), %r15
	movsd	%xmm0, 24(%r13)
	movq	%r15, 24(%r12)
	movq	8(%rsp), %r15
	movq	$0x000000000, 24(%rbp)
	movl	$2, 12(%rbx)
	movl	%esi, 12(%r15)
	movq	16(%rsp), %r15
	movq	.LC96(%rip), %rsi
	movsd	%xmm4, 24(%r15)
	movq	24(%rsp), %r15
	movl	$1, 12(%r11)
	movsd	%xmm5, 24(%r15)
	movq	32(%rsp), %r15
	movq	%rsi, 24(%r15)
	movq	40(%rsp), %rsi
	xorl	%r15d, %r15d
	movsd	%xmm5, 24(%rsi)
	movq	48(%rsp), %rsi
	movsd	.LC142(%rip), %xmm5
	movsd	%xmm0, 24(%rsi)
	movq	56(%rsp), %rsi
	movl	$4, 12(%rsi)
	movq	64(%rsp), %rsi
	movl	$4, 12(%rsi)
	movq	.LC80(%rip), %rsi
	movq	%rsi, 32(%rcx)
	movq	.LC82(%rip), %rsi
	movsd	%xmm3, 32(%rax)
	movsd	%xmm2, 32(%r14)
	movsd	%xmm0, 32(%r13)
	movq	%rsi, 32(%r12)
	movq	.LC83(%rip), %rsi
	movq	%rsi, 32(%rbp)
	movq	.LC5(%rip), %rsi
	movl	%r15d, 16(%rbx)
	movl	%r15d, 16(%r11)
	xorl	%r15d, %r15d
	movq	%rsi, 40(%rcx)
	movq	.LC143(%rip), %rsi
	movsd	%xmm3, 40(%rax)
	movsd	%xmm5, 40(%r14)
	movsd	%xmm0, 40(%r13)
	movq	%rsi, 40(%r12)
	movq	.LC144(%rip), %rsi
	movq	%rsi, 40(%rbp)
	movq	8(%rsp), %rsi
	movl	$2, 20(%rbx)
	movl	%r15d, 20(%rsi)
	movq	16(%rsp), %rsi
	movsd	%xmm4, 40(%rsi)
	movl	$1, 20(%r11)
	movq	24(%rsp), %rsi
	movq	.LC145(%rip), %r15
	movsd	.LC146(%rip), %xmm2
	movq	%r15, 40(%rsi)
	movq	32(%rsp), %rsi
	xorl	%r15d, %r15d
	movsd	%xmm1, 40(%rsi)
	movq	40(%rsp), %rsi
	movsd	%xmm2, 40(%rsi)
	movq	48(%rsp), %rsi
	movsd	%xmm0, 40(%rsi)
	movq	56(%rsp), %rsi
	movl	$2, 20(%rsi)
	movq	64(%rsp), %rsi
	movl	$4, 20(%rsi)
	movq	.LC147(%rip), %rsi
	movq	%rsi, 48(%rcx)
	movq	.LC148(%rip), %rsi
	movsd	%xmm3, 48(%rax)
	movsd	%xmm5, 48(%r14)
	movsd	%xmm0, 48(%r13)
	movq	%rsi, 48(%r12)
	movq	.LC149(%rip), %rsi
	movq	%rsi, 48(%rbp)
	movq	8(%rsp), %rsi
	movl	$3, 24(%rbx)
	movl	%r15d, 24(%rsi)
	movq	16(%rsp), %rsi
	movq	.LC150(%rip), %r15
	movsd	%xmm4, 48(%rsi)
	movq	24(%rsp), %rsi
	movl	$3, 24(%r11)
	movq	%r15, 48(%rsi)
	movq	32(%rsp), %rsi
	movq	.LC151(%rip), %r15
	movsd	%xmm1, 48(%rsi)
	movq	40(%rsp), %rsi
	movsd	%xmm2, 48(%rsi)
	movq	48(%rsp), %rsi
	movsd	%xmm0, 48(%rsi)
	movq	16(%r8), %rsi
	movq	%r15, 48(%rsi)
	movq	.LC152(%rip), %r15
	movq	%rsi, 88(%rsp)
	movq	16(%r10), %rsi
	movsd	%xmm1, 48(%rsi)
	movq	%rsi, 96(%rsp)
	movq	16(%r9), %rsi
	movsd	%xmm2, 48(%rsi)
	movq	%rsi, 104(%rsp)
	movq	16(%rdi), %rsi
	movsd	%xmm0, 48(%rsi)
	movq	%rsi, 112(%rsp)
	movq	24(%r8), %rsi
	movq	%r15, 48(%rsi)
	movq	%rsi, 120(%rsp)
	movq	24(%r10), %rsi
	movq	24(%rdi), %r10
	movq	56(%rsp), %rdi
	movsd	%xmm1, 48(%rsi)
	movq	%rsi, 128(%rsp)
	movq	24(%r9), %rsi
	movsd	%xmm2, 48(%rsi)
	movq	%rsi, 136(%rsp)
	movsd	%xmm0, 48(%r10)
	movl	$2, 24(%rdi)
	movq	64(%rsp), %rdi
	movq	80(%rsp), %rsi
	movq	.LC153(%rip), %r15
	movl	$5, 24(%rdi)
	movq	72(%rsp), %rdi
	movq	24(%rsi), %rsi
	movq	16(%rdi), %r9
	movq	80(%rsp), %rdi
	movq	16(%rdi), %r8
	movq	72(%rsp), %rdi
	movl	$2, 24(%r9)
	movq	%rsi, 72(%rsp)
	movq	24(%rdi), %rdi
	movl	$5, 24(%r8)
	movl	$2, 24(%rdi)
	movl	$5, 24(%rsi)
	xorl	%esi, %esi
	movq	%r15, 56(%rcx)
	movq	.LC154(%rip), %r15
	movsd	%xmm3, 56(%rax)
	movsd	%xmm5, 56(%r14)
	movsd	%xmm0, 56(%r13)
	movq	%r15, 56(%r12)
	movq	.LC155(%rip), %r15
	movq	%r15, 56(%rbp)
	movq	8(%rsp), %r15
	movl	$2, 28(%rbx)
	movl	%esi, 28(%r15)
	movq	16(%rsp), %r15
	movq	.LC156(%rip), %rsi
	movsd	%xmm4, 56(%r15)
	movq	24(%rsp), %r15
	movl	$3, 28(%r11)
	movq	%rsi, 56(%r15)
	movq	32(%rsp), %rsi
	movq	.LC157(%rip), %r15
	movsd	%xmm1, 56(%rsi)
	movq	40(%rsp), %rsi
	movsd	%xmm2, 56(%rsi)
	movq	48(%rsp), %rsi
	movsd	%xmm0, 56(%rsi)
	movq	88(%rsp), %rsi
	movsd	%xmm6, 56(%rsi)
	movq	96(%rsp), %rsi
	movsd	%xmm1, 56(%rsi)
	movq	104(%rsp), %rsi
	movsd	%xmm2, 56(%rsi)
	movq	112(%rsp), %rsi
	movsd	%xmm0, 56(%rsi)
	movq	120(%rsp), %rsi
	movq	%r15, 56(%rsi)
	movq	128(%rsp), %rsi
	movsd	%xmm1, 56(%rsi)
	movq	136(%rsp), %rsi
	movsd	%xmm2, 56(%rsi)
	movq	56(%rsp), %rsi
	movsd	%xmm0, 56(%r10)
	movl	$2, 28(%rsi)
	movq	64(%rsp), %rsi
	movl	$3, 28(%rsi)
	movl	$2, 28(%r9)
	movl	$3, 28(%r8)
	movl	$2, 28(%rdi)
	movq	72(%rsp), %rdi
	movl	$3, 28(%rdi)
	movq	.LC12(%rip), %rdi
	movq	%rdi, 64(%rcx)
	movq	.LC13(%rip), %rdi
	xorl	%ecx, %ecx
	movq	%rdi, 64(%rax)
	movq	.LC14(%rip), %rax
	xorl	%edi, %edi
	movq	%rax, 64(%r14)
	movq	.LC15(%rip), %rax
	movsd	%xmm0, 64(%r13)
	movq	%rax, 64(%r12)
	movq	$0x000000000, 64(%rbp)
	movl	%edi, 32(%rbx)
	movl	%edi, 32(%r11)
.L450:
	cmpl	%ecx, 424(%rdx)
	movq	520(%rdx), %rsi
	jl	.L452
	leaq	(%rsi,%rcx,8), %rsi
	xorl	%eax, %eax
.L453:
	cmpl	%eax, 424(%rdx)
	jl	.L473
	movq	(%rsi), %rdi
	xorl	%ebp, %ebp
	movl	%ebp, (%rdi,%rax,4)
	incq	%rax
	jmp	.L453
.L473:
	incq	%rcx
	jmp	.L450
.L452:
	movq	32(%rsi), %rax
	movq	528(%rdx), %r10
	movq	.LC158(%rip), %rbx
	movsd	.LC89(%rip), %xmm1
	movl	$3, 16(%rax)
	movq	32(%r10), %rax
	movsd	.LC88(%rip), %xmm2
	movsd	.LC48(%rip), %xmm6
	movl	$1, 16(%rax)
	movq	400(%rdx), %rax
	movsd	.LC160(%rip), %xmm9
	movsd	.LC161(%rip), %xmm0
	movq	8(%rax), %r9
	movq	16(%rax), %r8
	movq	32(%r9), %rcx
	movq	32(%r8), %rax
	movq	32(%rcx), %rcx
	movq	32(%rax), %rax
	movq	%rbx, 8(%rcx)
	movq	.LC159(%rip), %rbx
	movsd	%xmm1, 8(%rax)
	movq	%rbx, 16(%rcx)
	movsd	%xmm1, 16(%rax)
	movsd	%xmm2, 24(%rcx)
	movsd	%xmm9, 24(%rax)
	movsd	%xmm6, 32(%rcx)
	movsd	%xmm0, 32(%rax)
	movsd	%xmm6, 40(%rcx)
	movsd	%xmm0, 40(%rax)
	movsd	%xmm6, 48(%rcx)
	movsd	%xmm0, 48(%rax)
	movsd	.LC114(%rip), %xmm0
	movsd	%xmm0, 56(%rcx)
	movq	16(%r9), %r9
	movq	16(%rsi), %r11
	movsd	%xmm9, 56(%rax)
	movsd	.LC162(%rip), %xmm4
	movsd	.LC163(%rip), %xmm3
	movsd	%xmm0, 64(%rcx)
	movq	16(%r10), %r10
	movq	16(%r8), %r8
	movsd	%xmm9, 64(%rax)
	movq	384(%rdx), %rax
	movsd	.LC165(%rip), %xmm5
	movsd	.LC166(%rip), %xmm8
	movsd	.LC167(%rip), %xmm7
	movq	8(%rax), %rdi
	movq	16(%rax), %rbx
	movq	.LC164(%rip), %rsi
	movq	32(%rdi), %rcx
	movq	32(%rbx), %rax
	movsd	%xmm4, 32(%rcx)
	movq	16(%r8), %rcx
	movsd	%xmm3, 32(%rax)
	movq	16(%r9), %rax
	movl	$1, 8(%r11)
	movl	$1, 8(%r10)
	movsd	%xmm0, 8(%rax)
	movsd	.LC123(%rip), %xmm0
	movsd	%xmm0, 8(%rcx)
	movq	%rsi, 16(%rax)
	movsd	%xmm5, 16(%rcx)
	movsd	%xmm8, 24(%rax)
	movsd	%xmm7, 24(%rcx)
	movsd	%xmm8, 32(%rax)
	movsd	%xmm7, 32(%rcx)
	movq	16(%rdi), %rdi
	movq	16(%rbx), %rsi
	movsd	%xmm8, 40(%rax)
	movq	.LC168(%rip), %rbx
	movsd	%xmm7, 40(%rcx)
	movsd	%xmm8, 48(%rax)
	movsd	%xmm7, 48(%rcx)
	movsd	%xmm8, 56(%rax)
	movsd	%xmm2, 64(%rax)
	movq	.LC119(%rip), %rax
	movsd	%xmm7, 56(%rcx)
	movq	32(%r9), %rcx
	movsd	%xmm4, 16(%rdi)
	movsd	%xmm3, 16(%rsi)
	movl	$5, 16(%r11)
	movl	$1, 16(%r10)
	movq	%rax, 8(%rcx)
	movq	32(%r8), %rax
	movsd	%xmm0, 8(%rax)
	movsd	%xmm2, 16(%rcx)
	movsd	%xmm1, 16(%rax)
	movsd	%xmm2, 24(%rcx)
	movsd	%xmm1, 24(%rax)
	movsd	%xmm2, 32(%rcx)
	movsd	%xmm1, 32(%rax)
	movsd	%xmm2, 40(%rcx)
	movsd	%xmm1, 40(%rax)
	movq	%rbx, 48(%rcx)
	movq	.LC121(%rip), %rbx
	movq	%rbx, 48(%rax)
	movq	.LC169(%rip), %rbx
	movq	%rbx, 56(%rcx)
	movsd	.LC170(%rip), %xmm1
	movq	.LC122(%rip), %rbx
	movsd	%xmm1, 56(%rax)
	movq	%rbx, 64(%rcx)
	movq	40(%r9), %rcx
	movsd	%xmm1, 64(%rax)
	movq	.LC172(%rip), %rbx
	movq	40(%r8), %rax
	movsd	.LC171(%rip), %xmm1
	movsd	%xmm4, 32(%rdi)
	movsd	%xmm3, 32(%rsi)
	movl	$6, 20(%r11)
	movl	$1, 20(%r10)
	movsd	%xmm6, 8(%rcx)
	movsd	%xmm0, 8(%rax)
	movsd	%xmm6, 16(%rcx)
	movsd	%xmm0, 16(%rax)
	movsd	%xmm1, 24(%rcx)
	movsd	%xmm5, 24(%rax)
	movsd	%xmm1, 32(%rcx)
	movsd	%xmm5, 32(%rax)
	movsd	%xmm1, 40(%rcx)
	movsd	%xmm5, 40(%rax)
	movq	%rbx, 48(%rcx)
	movq	.LC173(%rip), %rbx
	movsd	%xmm5, 48(%rax)
	movq	%rbx, 56(%rcx)
	movsd	%xmm0, 56(%rax)
	movsd	%xmm1, 64(%rcx)
	movsd	%xmm0, 64(%rax)
	movsd	%xmm4, 40(%rdi)
	movsd	%xmm3, 40(%rsi)
	movl	$7, 12(%r11)
	movq	24(%r8), %rax
	xorl	%r8d, %r8d
	movq	24(%r9), %rcx
	movsd	.LC175(%rip), %xmm0
	movl	$1, 12(%r10)
	movsd	.LC174(%rip), %xmm1
	movq	.LC177(%rip), %rbx
	movl	444(%rdx), %ebp
	movsd	%xmm1, 8(%rcx)
	movsd	%xmm0, 8(%rax)
	movsd	%xmm1, 16(%rcx)
	movsd	.LC176(%rip), %xmm1
	movsd	%xmm0, 16(%rax)
	movsd	%xmm1, 24(%rcx)
	movsd	%xmm9, 24(%rax)
	movsd	%xmm1, 32(%rcx)
	movsd	%xmm0, 32(%rax)
	movsd	%xmm1, 40(%rcx)
	movsd	%xmm0, 40(%rax)
	movsd	%xmm1, 48(%rcx)
	movsd	%xmm0, 48(%rax)
	movq	%rbx, 56(%rcx)
	movq	.LC178(%rip), %rbx
	movsd	%xmm0, 56(%rax)
	movq	%rbx, 64(%rcx)
	movsd	%xmm0, 64(%rax)
	xorl	%eax, %eax
	movsd	%xmm4, 24(%rdi)
	movsd	%xmm3, 24(%rsi)
.L454:
	xorl	%esi, %esi
.L459:
	movl	424(%rdx), %r11d
	cmpl	%esi, %ebp
	jl	.L456
	movl	%r11d, %ecx
	leaq	0(,%rsi,8), %r12
	xorl	%r9d, %r9d
	leaq	8(,%rcx,8), %r10
.L457:
	movq	392(%rdx), %rcx
	cmpl	%r9d, %r11d
	jl	.L474
	movq	(%rcx,%r8), %rcx
	movq	(%rcx,%r12), %rcx
	movq	(%rcx,%r9,8), %rdi
	movq	%r10, %rcx
	incq	%r9
	rep stosb
	jmp	.L457
.L474:
	incq	%rsi
	jmp	.L459
.L456:
	addq	$8, %r8
	cmpq	$56, %r8
	jne	.L454
	xorl	%ecx, %ecx
.L458:
	cmpl	%ecx, 444(%rdx)
	jl	.L471
	leaq	0(,%rcx,8), %r8
	xorl	%eax, %eax
.L466:
	xorl	%esi, %esi
.L464:
	cmpl	%esi, 424(%rdx)
	jl	.L461
	movq	584(%rdx), %r9
	leaq	0(,%rsi,8), %r10
	xorl	%edi, %edi
	addq	%r8, %r9
.L462:
	cmpl	%edi, 424(%rdx)
	jl	.L475
	movq	(%r9), %r11
	xorl	%ebx, %ebx
	movq	(%r11,%rax), %r11
	movq	(%r11,%r10), %r11
	movl	%ebx, (%r11,%rdi,4)
	incq	%rdi
	jmp	.L462
.L475:
	incq	%rsi
	jmp	.L464
.L461:
	addq	$8, %rax
	cmpq	$64, %rax
	jne	.L466
	incq	%rcx
	jmp	.L458
.L471:
	xorl	%ecx, %ecx
.L465:
	cmpl	%ecx, 424(%rdx)
	movq	552(%rdx), %rax
	jl	.L468
	leaq	(%rax,%rcx,8), %rsi
	xorl	%eax, %eax
.L469:
	cmpl	%eax, 424(%rdx)
	jl	.L476
	movq	(%rsi), %rdi
	xorl	%r8d, %r8d
	movl	%r8d, (%rdi,%rax,4)
	incq	%rax
	jmp	.L469
.L476:
	incq	%rcx
	jmp	.L465
.L468:
	movq	8(%rax), %rdi
	movq	16(%rax), %rcx
	movq	32(%rax), %rsi
	movl	$1, 12(%rdi)
	movl	$3, 28(%rcx)
	movl	$1, 12(%rcx)
	movl	$1, 20(%rsi)
	movl	$1, 16(%rdi)
	movl	$1, 20(%rcx)
	movl	$1, 20(%rdi)
	movl	$1, 24(%rcx)
	movq	40(%rax), %rcx
	movq	24(%rax), %rax
	movl	$2, 24(%rsi)
	movl	$2, 20(%rcx)
	movl	$1, 28(%rsi)
	movl	$1, 20(%rax)
	movq	584(%rdx), %rax
	movq	8(%rax), %rcx
	movq	%rax, 72(%rsp)
	movq	8(%rcx), %rax
	movq	24(%rcx), %r13
	movq	%rax, 8(%rsp)
	movq	8(%rax), %rax
	movl	$1, 12(%rax)
	movq	%rax, 80(%rsp)
	movq	16(%rcx), %rax
	movq	%rax, 16(%rsp)
	movq	8(%rax), %rax
	movq	%rax, 88(%rsp)
	movl	$3, 12(%rax)
	movq	8(%r13), %rax
	movq	%rax, 96(%rsp)
	movq	32(%rcx), %r12
	movq	40(%rcx), %rbp
	movl	$7, 12(%rax)
	movq	8(%r12), %rax
	movl	$2, 12(%rax)
	movq	%rax, 104(%rsp)
	movq	8(%rbp), %rax
	movl	$1, 12(%rax)
	movq	%rax, 112(%rsp)
	movq	48(%rcx), %rax
	movq	%rax, 24(%rsp)
	movq	8(%rax), %rax
	movl	$1, 12(%rax)
	movq	%rax, 120(%rsp)
	movq	392(%rdx), %rax
	movq	576(%rdx), %rdx
	movq	48(%rax), %rdi
	movq	8(%rdx), %r14
	movq	%rdx, 144(%rsp)
	movq	8(%rdi), %r15
	movq	%rdi, 128(%rsp)
	movq	8(%r14), %rdx
	movq	8(%r15), %rdi
	movq	%rdx, 152(%rsp)
	movq	$0x000000000, 24(%rdi)
	movl	$1, 12(%rdx)
	movq	8(%rsp), %rdx
	movq	%rdi, 136(%rsp)
	movq	16(%rdx), %rdx
	movq	%rdx, 32(%rsp)
	movl	$7, 28(%rdx)
	movq	16(%rsp), %rdx
	movq	16(%rdx), %rdi
	movq	16(%rbp), %r11
	movq	.LC126(%rip), %r9
	movl	$2, 28(%rdi)
	movq	%rdi, 40(%rsp)
	movq	16(%r13), %rdi
	movl	$1, 28(%rdi)
	movq	%rdi, 48(%rsp)
	movq	16(%r12), %rdi
	movl	$3, 28(%rdi)
	movq	%rdi, 56(%rsp)
	movq	24(%rsp), %rdi
	movl	$1, 28(%r11)
	movq	16(%rdi), %r10
	movq	56(%rcx), %rdi
	movq	16(%rdi), %rdx
	movl	$1, 28(%r10)
	movq	%rdx, 256(%rsp)
	movl	$1, 28(%rdx)
	movq	8(%rax), %rdx
	movq	8(%rdx), %rsi
	movq	%rdx, 160(%rsp)
	movq	16(%rsi), %rdx
	movq	%rdx, 264(%rsp)
	movq	%rdx, %rcx
	movq	.LC179(%rip), %rdx
	movq	%rdx, 56(%rcx)
	movq	16(%rax), %rcx
	movq	%rcx, 168(%rsp)
	movq	8(%rcx), %rcx
	movq	16(%rcx), %rdx
	movq	%rdx, 272(%rsp)
	movq	%r9, 56(%rdx)
	movq	32(%rax), %rdx
	movq	40(%rax), %rax
	movsd	.LC138(%rip), %xmm1
	movq	%rdx, 176(%rsp)
	movq	8(%rdx), %rdx
	movq	%rax, 184(%rsp)
	movq	8(%rax), %rax
	movq	16(%rdx), %r9
	movsd	.LC163(%rip), %xmm0
	movq	16(%r14), %r8
	movq	32(%rsp), %rbx
	movq	%rax, 64(%rsp)
	movsd	%xmm1, 56(%r9)
	movq	%r9, 280(%rsp)
	movq	16(%rax), %r9
	movsd	%xmm0, 56(%r9)
	movq	%r9, 288(%rsp)
	movq	16(%r15), %r9
	movq	$0x000000000, 56(%r9)
	movl	$2, 28(%r8)
	movl	$3, 12(%rbx)
	movq	40(%rsp), %rbx
	movl	$2, 12(%rbx)
	movq	48(%rsp), %rbx
	movl	$5, 12(%rbx)
	movq	56(%rsp), %rbx
	movl	$4, 12(%rbx)
	movq	8(%rsp), %rbx
	movl	$1, 12(%r11)
	movl	$1, 12(%r10)
	movq	$0x000000000, 24(%r9)
	movl	$3, 12(%r8)
	movq	32(%rbx), %rbx
	movq	24(%rsp), %rax
	movl	$5, 20(%rbx)
	movq	%rbx, 192(%rsp)
	movq	16(%rsp), %rbx
	movq	32(%rbx), %rbx
	movl	$4, 20(%rbx)
	movq	%rbx, 200(%rsp)
	movq	32(%r13), %rbx
	movl	$3, 20(%rbx)
	movq	%rbx, 208(%rsp)
	movq	32(%r12), %rbx
	movl	$2, 20(%rbx)
	movq	%rbx, 216(%rsp)
	movq	32(%rbp), %rbx
	movl	$1, 20(%rbx)
	movq	%rbx, 224(%rsp)
	movq	32(%rax), %rbx
	movq	.LC180(%rip), %rax
	movl	$1, 20(%rbx)
	movq	%rbx, 232(%rsp)
	movq	32(%rdi), %rbx
	movq	%rbx, 296(%rsp)
	movl	$1, 20(%rbx)
	movq	32(%rsi), %rbx
	movq	%rax, 40(%rbx)
	movq	32(%rcx), %rax
	movq	%rbx, 304(%rsp)
	movq	.LC181(%rip), %rbx
	movq	%rax, 312(%rsp)
	movq	%rbx, 40(%rax)
	movq	32(%rdx), %rax
	movq	%rax, 320(%rsp)
	movsd	%xmm1, 40(%rax)
	movq	64(%rsp), %rax
	movq	32(%rax), %rax
	movsd	%xmm0, 40(%rax)
	movq	%rax, 328(%rsp)
	movq	32(%r15), %rax
	movq	%rax, 240(%rsp)
	movq	$0x000000000, 40(%rax)
	movq	32(%r14), %rax
	movl	$4, 20(%rax)
	movq	%rax, 248(%rsp)
	movq	80(%rsp), %rax
	movl	$1, 16(%rax)
	movq	88(%rsp), %rax
	movl	$4, 16(%rax)
	movq	96(%rsp), %rax
	movl	$5, 16(%rax)
	movq	104(%rsp), %rax
	movl	$2, 16(%rax)
	movq	112(%rsp), %rax
	movl	$1, 16(%rax)
	movq	120(%rsp), %rax
	movl	$1, 16(%rax)
	movq	136(%rsp), %rax
	movq	$0x000000000, 32(%rax)
	movq	152(%rsp), %rax
	movl	$5, 16(%rax)
	movq	32(%rsp), %rax
	movl	$5, 20(%rax)
	movq	40(%rsp), %rax
	movl	$2, 20(%rax)
	movq	48(%rsp), %rax
	movl	$1, 20(%rax)
	movq	56(%rsp), %rax
	movsd	.LC7(%rip), %xmm3
	movsd	.LC182(%rip), %xmm2
	movl	$4, 20(%rax)
	movq	256(%rsp), %rax
	movl	$1, 20(%r11)
	movl	$1, 20(%r10)
	movl	$1, 20(%rax)
	movq	264(%rsp), %rax
	movsd	%xmm3, 40(%rax)
	movq	272(%rsp), %rax
	movsd	%xmm2, 40(%rax)
	movq	280(%rsp), %rax
	movsd	%xmm1, 40(%rax)
	movq	288(%rsp), %rax
	movsd	%xmm0, 40(%rax)
	movq	32(%rsp), %rax
	movq	$0x000000000, 40(%r9)
	movl	$6, 20(%r8)
	movl	$6, 24(%rax)
	movq	40(%rsp), %rax
	movl	$2, 24(%rax)
	movq	48(%rsp), %rax
	movl	$5, 24(%rax)
	movq	56(%rsp), %rax
	movl	$1, 24(%rax)
	movq	.LC129(%rip), %rax
	movl	$1, 24(%r11)
	movl	$1, 24(%r10)
	movq	%rax, 48(%r9)
	movq	80(%rsp), %rax
	movl	$7, 24(%r8)
	movl	$5, 20(%rax)
	movq	88(%rsp), %rax
	movq	8(%rdi), %r8
	movl	$1, 20(%rax)
	movq	96(%rsp), %rax
	movl	$6, 20(%rax)
	movq	104(%rsp), %rax
	movl	$2, 20(%rax)
	movq	112(%rsp), %rax
	movl	$1, 20(%rax)
	movq	120(%rsp), %rax
	movl	$1, 20(%rax)
	movq	64(%rsp), %rax
	movl	$1, 20(%r8)
	movq	8(%rsi), %r8
	movsd	%xmm3, 40(%r8)
	movq	8(%rcx), %r8
	movsd	%xmm2, 40(%r8)
	movq	8(%rdx), %r8
	movsd	%xmm1, 40(%r8)
	movq	8(%rax), %r8
	movq	136(%rsp), %rax
	movsd	%xmm0, 40(%r8)
	movq	$0x000000000, 40(%rax)
	movq	152(%rsp), %rax
	movl	$8, 20(%rax)
	movq	192(%rsp), %rax
	movl	$6, 24(%rax)
	movq	200(%rsp), %rax
	movl	$4, 24(%rax)
	movq	208(%rsp), %rax
	movl	$5, 24(%rax)
	movq	216(%rsp), %rax
	movl	$5, 24(%rax)
	movq	224(%rsp), %rax
	movq	40(%rdi), %rdi
	movq	40(%rsi), %rsi
	movq	40(%rcx), %rcx
	movq	40(%rdx), %rdx
	movl	$1, 24(%rax)
	movq	232(%rsp), %rax
	movl	$1, 24(%rax)
	movq	240(%rsp), %rax
	movq	$0x000000000, 48(%rax)
	movq	248(%rsp), %rax
	movl	$9, 24(%rax)
	movq	8(%rsp), %rax
	movq	40(%rax), %r8
	movq	16(%rsp), %rax
	movl	$5, 20(%r8)
	movq	40(%rax), %r8
	movq	24(%rsp), %rax
	movl	$5, 20(%r8)
	movq	40(%r13), %r8
	movl	$6, 20(%r8)
	movq	40(%r12), %r8
	movl	$4, 20(%r8)
	movq	40(%rbp), %r8
	movl	$1, 20(%r8)
	movq	40(%rax), %r8
	movq	.LC183(%rip), %rax
	movl	$1, 20(%r8)
	movl	$1, 20(%rdi)
	movq	%rax, 40(%rsi)
	movsd	%xmm2, 40(%rcx)
	movsd	%xmm1, 40(%rdx)
	movq	64(%rsp), %rax
	movq	128(%rsp), %rbx
	movq	40(%rax), %rax
	movq	16(%rbx), %rcx
	movq	144(%rsp), %rbx
	movsd	%xmm0, 40(%rax)
	movq	40(%r15), %rax
	movq	$0x000000000, 40(%rax)
	movq	40(%r14), %rax
	movl	$10, 20(%rax)
	movq	72(%rsp), %rax
	movq	16(%rax), %rax
	movq	8(%rax), %r11
	movq	16(%rax), %r10
	movq	24(%rax), %r9
	movq	32(%rax), %r8
	movq	40(%r11), %rdx
	movq	40(%rax), %rdi
	movq	48(%rax), %rsi
	movl	$5, 20(%rdx)
	movq	40(%r10), %rdx
	movl	$5, 20(%rdx)
	movq	40(%r9), %rdx
	movl	$7, 20(%rdx)
	movq	40(%r8), %rdx
	movl	$2, 20(%rdx)
	movq	40(%rdi), %rdx
	movl	$1, 20(%rdx)
	movq	40(%rsi), %rdx
	movl	$1, 20(%rdx)
	movq	40(%rcx), %rdx
	movq	$0x000000000, 40(%rdx)
	movq	16(%rbx), %rdx
	movq	56(%rax), %rax
	movq	40(%rdx), %rbx
	movq	16(%rax), %rax
	movl	$11, 20(%rbx)
	movq	16(%r11), %rbx
	movl	$7, 28(%rbx)
	movq	16(%r10), %rbx
	movl	$2, 28(%rbx)
	movq	16(%r9), %rbx
	movl	$5, 28(%rbx)
	movq	16(%r8), %rbx
	movl	$5, 28(%rbx)
	movq	16(%rdi), %rbx
	movl	$1, 28(%rbx)
	movq	16(%rsi), %rbx
	movl	$1, 28(%rbx)
	movq	.LC184(%rip), %rbx
	movl	$1, 28(%rax)
	movq	160(%rsp), %rax
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movq	%rbx, 56(%rax)
	movq	168(%rsp), %rax
	movq	.LC185(%rip), %rbx
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movq	%rbx, 56(%rax)
	movq	176(%rsp), %rax
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movsd	%xmm1, 56(%rax)
	movq	184(%rsp), %rax
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movsd	%xmm0, 56(%rax)
	movq	16(%rcx), %rax
	movq	$0x000000000, 56(%rax)
	movq	16(%rdx), %rax
	movl	$12, 28(%rax)
	movq	32(%r11), %rax
	movl	$6, 24(%rax)
	movq	32(%r10), %rax
	movl	$4, 24(%rax)
	movq	32(%r9), %rax
	movl	$7, 24(%rax)
	movq	32(%r8), %rax
	movl	$2, 24(%rax)
	movq	32(%rdi), %rax
	movl	$1, 24(%rax)
	movq	32(%rsi), %rax
	movl	$1, 24(%rax)
	movq	32(%rcx), %rax
	movq	$0x000000000, 48(%rax)
	movq	32(%rdx), %rax
	movl	$13, 24(%rax)
	movq	72(%rsp), %rax
	movq	24(%rax), %rax
	movq	8(%rax), %rdx
	movq	16(%rdx), %rdx
	movl	$7, 28(%rdx)
	movq	16(%rax), %rdx
	movq	16(%rdx), %rdx
	movl	$2, 28(%rdx)
	movq	24(%rax), %rdx
	movq	.LC186(%rip), %rdi
	movq	16(%rdx), %rdx
	movl	$6, 28(%rdx)
	movq	32(%rax), %rdx
	movq	16(%rdx), %rdx
	movl	$4, 28(%rdx)
	movq	40(%rax), %rdx
	movq	16(%rdx), %rdx
	movl	$1, 28(%rdx)
	movq	48(%rax), %rdx
	movq	56(%rax), %rax
	movq	16(%rdx), %rdx
	movq	16(%rax), %rax
	movl	$1, 28(%rdx)
	movl	$1, 28(%rax)
	movq	160(%rsp), %rax
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movq	%rdi, 56(%rax)
	movq	168(%rsp), %rax
	movq	.LC187(%rip), %rdi
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movq	%rdi, 56(%rax)
	movq	176(%rsp), %rax
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movsd	%xmm1, 56(%rax)
	movq	184(%rsp), %rax
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movsd	%xmm0, 56(%rax)
	movq	128(%rsp), %rax
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movq	$0x000000000, 56(%rax)
	movq	144(%rsp), %rax
	movq	24(%rax), %rax
	movq	16(%rax), %rax
	movl	$14, 28(%rax)
	movq	8(%rsp), %rax
	movq	24(%rax), %rax
	movl	$5, 20(%rax)
	movq	16(%rsp), %rax
	movq	24(%rax), %rax
	movl	$3, 20(%rax)
	movq	24(%r13), %rax
	movl	$7, 20(%rax)
	movq	24(%r12), %rax
	movl	$4, 20(%rax)
	movq	24(%rbp), %rax
	movl	$1, 20(%rax)
	movq	24(%rsp), %rax
	movq	24(%rax), %rax
	movl	$1, 20(%rax)
	movq	24(%r15), %rax
	movq	$0x000000000, 40(%rax)
	movq	24(%r14), %rax
	movl	$15, 20(%rax)
	movq	192(%rsp), %rax
	movl	$7, 28(%rax)
	movq	200(%rsp), %rax
	movl	$4, 28(%rax)
	movq	208(%rsp), %rax
	movl	$5, 28(%rax)
	movq	216(%rsp), %rax
	movq	.LC100(%rip), %rdi
	movl	$3, 28(%rax)
	movq	224(%rsp), %rax
	movl	$1, 28(%rax)
	movq	232(%rsp), %rax
	movl	$1, 28(%rax)
	movq	296(%rsp), %rax
	movl	$1, 28(%rax)
	movq	304(%rsp), %rax
	movq	%rdi, 56(%rax)
	movq	312(%rsp), %rax
	movq	.LC119(%rip), %rdi
	movq	%rdi, 56(%rax)
	movq	320(%rsp), %rax
	movsd	%xmm1, 56(%rax)
	movq	328(%rsp), %rax
	movsd	%xmm0, 56(%rax)
	movq	240(%rsp), %rax
	movq	$0x000000000, 56(%rax)
	movq	248(%rsp), %rax
	movl	$16, 28(%rax)
	call	_Z16DERIVED_GAS_DATAv
	leaq	.LC188(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	addq	$344, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	movq	%rax, %rdi
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
	.cfi_endproc
.LFE4299:
	.size	_Z15OXYGEN_HYDROGENv, .-_Z15OXYGEN_HYDROGENv
	.section	.rodata.str1.1
.LC189:
	.string	"Reading the data file DS0D.DAT"
.LC190:
	.string	"DS0D.DAT"
.LC191:
	.string	"DS0D.TXT"
.LC192:
	.string	"Data summary for program DSMC"
.LC193:
	.string	"Reading the data file DS1D.DAT"
.LC194:
	.string	"DS1D.DAT"
.LC195:
	.string	"DS1D.TXT"
.LC196:
	.string	"The n in version number n.m is "
.LC197:
	.string	"The m in version number n.m is "
.LC198:
	.string	"The approximate number of megabytes for the calculation is "
.LC199:
	.string	" Hard sphere gas "
.LC200:
	.string	"Argon "
.LC201:
	.string	"Ideal nitrogen"
.LC202:
	.string	"Real oxygen "
.LC203:
	.string	"Ideal air "
.LC204:
	.string	"Real air @ 7.5 km/s "
.LC205:
	.string	"Helium-argon-xenon mixture "
.LC206:
	.string	"Oxygen-hydrogen "
.LC207:
	.string	"The gas properties are:- "
.LC208:
	.string	"The stream number density is "
.LC209:
	.string	"The stream temperature is "
.LC210:
	.string	"The stream vibrational and electronic temperature is "
.LC211:
	.string	"The stream velocity in the x direction is "
.LC212:
	.string	"The stream velocity in the y direction is "
.LC213:
	.string	" The fraction of species "
.LC215:
	.string	"Plane Flow"
.LC216:
	.string	"Cylindrical flow"
.LC217:
	.string	"Spherical flow"
.LC218:
	.string	"The minimum x coordinate is "
.LC219:
	.string	"The minimum x coordinate is a stream boundary"
.LC220:
	.string	"The minimum x coordinate is a plane of symmetry"
.LC221:
	.string	"The minimum x coordinate is a solid surface"
.LC222:
	.string	"The minimum x coordinate is a vacuum"
.LC223:
	.string	"The minimum x coordinate is an axis or center"
.LC224:
	.string	"The minimum x boundary is a surface with the following properties"
.LC225:
	.string	"The temperature of the surface is "
.LC226:
	.string	"The fraction of specular reflection is "
.LC227:
	.string	"The velocity in the y direction of this surface is "
.LC228:
	.string	"The maximum x coordinate is "
.LC229:
	.string	"The mmaximum  x coordinate is a stream boundary"
.LC230:
	.string	"The maximum x coordinate is a plane of symmetry"
.LC231:
	.string	"The maximum  x coordinate is a solid surface"
.LC232:
	.string	"The maximum  x coordinate is a vacuum"
.LC233:
	.string	"The maximum x coordinate is a stream boundary with a fixed number of simulated molecules"
.LC234:
	.string	"The maximum  x boundary is a surface with the following properties"
.LC235:
	.string	"There are no radial weighting factors"
.LC236:
	.string	"There are radial weighting factors"
.LC237:
	.string	"The maximum value of the weighting factor is  "
.LC238:
	.string	"The flowfield is initially a vacuum "
.LC239:
	.string	"The flowfield is initially the stream(s) or reference gas"
.LC240:
	.string	"There is no secondary stream initially at x > 0"
.LC241:
	.string	"There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)"
.LC242:
	.string	"The secondary stream (at x>0 or X>XS) properties are:-"
.LC243:
	.string	"There cannot be a secondary stream when weighting factors are present"
.LC244:
	.string	"There is a secondary stream"
.LC245:
	.string	"The secondary stream boundary is at r= "
.LC246:
	.string	"The fraction of species "
.LC247:
	.string	"There is no molecule removal"
.LC248:
	.string	"There is full removal of the entering (at XB(1)) molecules between "
.LC249:
	.string	" and "
.LC250:
	.string	"Molecule removal is specified whenever the program is restarted"
.LC251:
	.string	"The outer boundary is stationary"
.LC252:
	.string	"The outer boundary moves with a constant speed"
.LC253:
	.string	" The speed of the outer boundary is "
.LC254:
	.string	"The desired number of molecules in a sampling cell is "
	.text
	.globl	_Z9READ_DATAv
	.type	_Z9READ_DATAv, @function
_Z9READ_DATAv:
.LFB4301:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4301
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$1112, %rsp
	.cfi_def_cfa_offset 1168
	movq	%fs:40, %rax
	movq	%rax, 1096(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 24(%rsp)
.LEHB4:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE4:
	leaq	568(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 16(%rsp)
.LEHB5:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE5:
	movq	calc(%rip), %rax
	leaq	56(%rsp), %rbx
	cmpl	$0, 56(%rax)
	jne	.L478
	leaq	.LC189(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
.LEHB6:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	movl	$8, %edx
	leaq	.LC190(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	movq	24(%rsp), %rdi
	movl	$16, %edx
	leaq	.LC191(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	.LC192(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L478:
	movq	calc(%rip), %rax
	cmpl	$1, 56(%rax)
	jne	.L479
	leaq	.LC193(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	movl	$8, %edx
	leaq	.LC194(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	movq	24(%rsp), %rdi
	movl	$16, %edx
	leaq	.LC195(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	.LC192(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L479:
	movq	16(%rsp), %rdi
	leaq	32(%rsp), %rsi
	call	_ZNSirsERi@PLT
	leaq	.LC196(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	32(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	36(%rsp), %rsi
	call	_ZNSirsERi@PLT
	leaq	.LC197(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	36(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	movq	16(%rsp), %rdi
	leaq	8(%rax), %rsi
	call	_ZNSirsERi@PLT
	leaq	.LC198(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	8(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	16(%rsp), %rdi
	leaq	440(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	movl	440(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$1, 440(%rax)
	jne	.L480
	leaq	.LC199(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z11HARD_SPHEREv
.L480:
	movq	gas(%rip), %rax
	cmpl	$2, 440(%rax)
	jne	.L481
	leaq	.LC200(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z5ARGONv
.L481:
	movq	gas(%rip), %rax
	cmpl	$3, 440(%rax)
	jne	.L482
	leaq	.LC201(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z14IDEAL_NITROGENv
.L482:
	movq	gas(%rip), %rax
	cmpl	$4, 440(%rax)
	jne	.L483
	leaq	.LC202(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z11REAL_OXYGENv
.L483:
	movq	gas(%rip), %rax
	cmpl	$5, 440(%rax)
	jne	.L484
	leaq	.LC203(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z9IDEAL_AIRv
.L484:
	movq	gas(%rip), %rax
	cmpl	$6, 440(%rax)
	jne	.L485
	leaq	.LC204(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z8REAL_AIRv
.L485:
	movq	gas(%rip), %rax
	cmpl	$7, 440(%rax)
	jne	.L486
	leaq	.LC205(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z18HELIUM_ARGON_XENONv
.L486:
	movq	gas(%rip), %rax
	cmpl	$8, 440(%rax)
	jne	.L487
	leaq	.LC206(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z15OXYGEN_HYDROGENv
.L487:
	leaq	.LC207(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	16(%rsp), %rdi
	leaq	80(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC208(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	leaq	104(%rax), %rsi
	leaq	568(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 8(%rsp)
	call	_ZNSirsERd.isra.0
	leaq	56(%rsp), %rbp
	leaq	.LC209(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	104(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rsi
	cmpl	$0, 428(%rsi)
	jle	.L488
	movq	8(%rsp), %rdi
	subq	$-128, %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC210(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	128(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L488:
	movq	calc(%rip), %rax
	movq	gas(%rip), %rsi
	cmpl	$1, 56(%rax)
	jne	.L489
	movq	8(%rsp), %rdi
	addq	$152, %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC211(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	152(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	8(%rsp), %rdi
	leaq	176(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC212(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	176(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L489:
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jle	.L565
	movl	$8, %r12d
	movl	$1, %ebx
	leaq	.LC213(%rip), %r13
.L490:
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L493
	movq	312(%rax), %rax
	movq	8(%rsp), %rdi
	movq	(%rax,%r12), %rsi
	addq	$8, %rsi
	call	_ZNSirsERd.isra.0
	movq	%r13, %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC55(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	312(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%ebx
	addq	$8, %r12
	jmp	.L490
.L565:
	movq	312(%rax), %rax
	movq	.LC8(%rip), %rcx
	movq	8(%rax), %rax
	movq	%rcx, 8(%rax)
.L493:
	movq	calc(%rip), %rax
	cmpl	$0, 56(%rax)
	jne	.L494
	movq	geom(%rip), %rdx
	movl	$1, %ecx
	movabsq	$4294967297, %rbx
	movsd	.LC214(%rip), %xmm0
	salq	$32, %rcx
	movq	%rcx, 24(%rdx)
	movq	128(%rdx), %rsi
	movq	gas(%rip), %rcx
	movq	40(%rdx), %rdx
	movq	$0x000000000, 8(%rsi)
	divsd	80(%rcx), %xmm0
	movsd	%xmm0, 16(%rsi)
	movq	%rbx, 4(%rdx)
	imull	$10000, 8(%rax), %edx
	movq	$0x000000000, 152(%rcx)
	xorl	%ecx, %ecx
	movl	%ecx, 28(%rax)
	movq	$1, 32(%rax)
	movl	%edx, 16(%rax)
.L494:
	cmpl	$1, 56(%rax)
	jne	.L495
	movq	geom(%rip), %rax
	movq	8(%rsp), %rdi
	leaq	24(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rax
	cmpl	$0, 24(%rax)
	jne	.L496
	leaq	.LC215(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L496:
	movq	geom(%rip), %rax
	cmpl	$1, 24(%rax)
	jne	.L497
	leaq	.LC216(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L497:
	movq	geom(%rip), %rax
	cmpl	$2, 24(%rax)
	jne	.L498
	leaq	.LC217(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L498:
	movq	geom(%rip), %rax
	movq	8(%rsp), %rdi
	movl	24(%rax), %ecx
	movq	128(%rax), %rsi
	leal	1(%rcx), %edx
	addq	$8, %rsi
	movl	%edx, 28(%rax)
	call	_ZNSirsERd.isra.0
	leaq	.LC218(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	8(%rsp), %rdi
	movq	40(%rax), %rsi
	addq	$4, %rsi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 4(%rax)
	jne	.L499
	leaq	.LC219(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L499:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$1, 4(%rax)
	jne	.L500
	leaq	.LC220(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L500:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 4(%rax)
	jne	.L501
	leaq	.LC221(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L501:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$3, 4(%rax)
	jne	.L502
	leaq	.LC222(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L502:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$4, 4(%rax)
	jne	.L503
	leaq	.LC223(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L503:
	movq	geom(%rip), %rax
	leaq	568(%rsp), %rbx
	movq	40(%rax), %rax
	cmpl	$2, 4(%rax)
	leaq	56(%rsp), %rax
	movq	%rax, (%rsp)
	jne	.L504
	leaq	.LC224(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	8(%rsp), %rdi
	leaq	200(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC225(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	200(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	8(%rsp), %rdi
	leaq	224(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC226(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	224(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	248(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC227(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	248(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
.L504:
	movq	geom(%rip), %rax
	movq	8(%rsp), %rdi
	movq	128(%rax), %rsi
	addq	$16, %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC228(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	8(%rsp), %rdi
	movq	40(%rax), %rsi
	addq	$8, %rsi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 8(%rax)
	jne	.L505
	leaq	.LC229(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L505:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$1, 8(%rax)
	jne	.L506
	leaq	.LC230(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L506:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 8(%rax)
	jne	.L507
	movq	(%rsp), %rdi
	leaq	.LC231(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L507:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$3, 8(%rax)
	jne	.L508
	movq	(%rsp), %rdi
	leaq	.LC232(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L508:
	movq	calc(%rip), %rax
	xorl	%edx, %edx
	movl	%edx, 76(%rax)
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$4, 8(%rax)
	jne	.L510
	movq	(%rsp), %rdi
	leaq	.LC233(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jne	.L510
	movq	calc(%rip), %rax
	movl	$1, 76(%rax)
.L510:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 8(%rax)
	jne	.L512
	movq	(%rsp), %rdi
	leaq	.LC234(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	200(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC225(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	200(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	224(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC226(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	224(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	248(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC227(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	248(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L512:
	movq	geom(%rip), %rsi
	cmpl	$0, 24(%rsi)
	jle	.L514
	addq	$36, %rsi
	movq	%rbx, %rdi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rax
	cmpl	$0, 36(%rax)
	jne	.L515
	movq	(%rsp), %rdi
	leaq	.LC235(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L515:
	movq	geom(%rip), %rax
	cmpl	$1, 36(%rax)
	jne	.L516
	movq	(%rsp), %rdi
	leaq	.LC236(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L516:
	movq	geom(%rip), %rsi
	cmpl	$1, 36(%rsi)
	jne	.L514
	addq	$96, %rsi
	movq	%rbx, %rdi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC237(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	96(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	128(%rax), %rdx
	movsd	96(%rax), %xmm0
	subsd	.LC8(%rip), %xmm0
	divsd	16(%rdx), %xmm0
	movsd	%xmm0, 96(%rax)
.L514:
	movq	calc(%rip), %rax
	movq	%rbx, %rdi
	leaq	32(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	calc(%rip), %rax
	cmpl	$0, 32(%rax)
	jne	.L518
	movq	(%rsp), %rdi
	leaq	.LC238(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L518:
	movq	calc(%rip), %rax
	cmpl	$1, 32(%rax)
	jne	.L519
	movq	(%rsp), %rdi
	leaq	.LC239(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L519:
	movq	calc(%rip), %rax
	movq	%rbx, %rdi
	leaq	28(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	calc(%rip), %rax
	cmpl	$0, 28(%rax)
	jne	.L520
	movq	(%rsp), %rdi
	leaq	.LC240(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L520:
	movq	calc(%rip), %rax
	movl	28(%rax), %ebp
	movq	geom(%rip), %rax
	movl	24(%rax), %eax
	cmpl	$1, %ebp
	jne	.L548
	testl	%eax, %eax
	je	.L522
.L525:
	movq	geom(%rip), %rax
	cmpl	$0, 24(%rax)
	jg	.L523
	jmp	.L524
.L522:
	movq	(%rsp), %rdi
	leaq	.LC241(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	cmpl	$1, 28(%rax)
	je	.L525
	jmp	.L548
.L523:
	cmpl	$1, 36(%rax)
	je	.L566
	movq	(%rsp), %rdi
	leaq	.LC244(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%rbx, %rdi
	leaq	80(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC245(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	cmpl	$1, 28(%rax)
	jne	.L548
.L524:
	movq	(%rsp), %rdi
	leaq	.LC242(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L567
.L566:
	movq	(%rsp), %rdi
	leaq	.LC243(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L540:
	movq	8(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	leaq	40(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	1096(%rsp), %rax
	subq	%fs:40, %rax
	je	.L549
	jmp	.L558
.L567:
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	88(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC208(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	88(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%rbx, %rdi
	leaq	112(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC209(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	112(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rsi
	leaq	568(%rsp), %r13
	leaq	56(%rsp), %r14
	cmpl	$0, 428(%rsi)
	jle	.L529
	addq	$136, %rsi
	movq	%r13, %rdi
	call	_ZNSirsERd.isra.0
	leaq	.LC210(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	136(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L529:
	movq	gas(%rip), %rax
	movq	%r13, %rdi
	leaq	160(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC211(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	160(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movq	%r13, %rdi
	leaq	184(%rax), %rsi
	call	_ZNSirsERd.isra.0
	leaq	.LC212(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	184(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movl	$8, %r12d
	leaq	.LC246(%rip), %r15
	cmpl	$1, 424(%rax)
	jle	.L568
.L530:
	movq	gas(%rip), %rax
	cmpl	%ebp, 424(%rax)
	jl	.L548
	movq	312(%rax), %rax
	movq	%r13, %rdi
	movq	(%rax,%r12), %rsi
	addq	$16, %rsi
	call	_ZNSirsERd.isra.0
	movq	%r15, %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebp, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC55(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	312(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%ebp
	addq	$8, %r12
	jmp	.L530
.L568:
	movq	312(%rax), %rax
	movq	.LC8(%rip), %rcx
	movq	8(%rax), %rax
	movq	%rcx, 16(%rax)
.L548:
	movq	geom(%rip), %rax
	cmpl	$0, 24(%rax)
	movq	40(%rax), %rdx
	jne	.L533
	cmpl	$0, 4(%rdx)
	jne	.L533
	movq	calc(%rip), %rax
	movq	%rbx, %rdi
	leaq	36(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	calc(%rip), %rax
	leaq	.LC247(%rip), %rsi
	movl	36(%rax), %eax
	testl	%eax, %eax
	je	.L564
	cmpl	$1, %eax
	jne	.L535
	movq	geom(%rip), %rax
	movq	%rbx, %rdi
	leaq	120(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC248(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	120(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC249(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	.LC8(%rip), %rcx
	movq	%rcx, 112(%rax)
	jmp	.L533
.L535:
	cmpl	$2, %eax
	jne	.L536
	leaq	.LC250(%rip), %rsi
.L564:
	movq	(%rsp), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L536:
	movq	geom(%rip), %rax
	movq	128(%rax), %rdx
	movsd	8(%rdx), %xmm0
	subsd	.LC8(%rip), %xmm0
	movq	$0x000000000, 112(%rax)
	movsd	%xmm0, 120(%rax)
.L533:
	movq	geom(%rip), %rsi
	xorl	%eax, %eax
	movl	%eax, 32(%rsi)
	movq	40(%rsi), %rax
	movq	$0x000000000, 88(%rsi)
	cmpl	$1, 8(%rax)
	jne	.L537
	addq	$32, %rsi
	movq	%rbx, %rdi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rax
	cmpl	$0, 32(%rax)
	jne	.L538
	movq	(%rsp), %rdi
	leaq	.LC251(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L538:
	movq	geom(%rip), %rax
	cmpl	$1, 32(%rax)
	jne	.L537
	movq	(%rsp), %rdi
	leaq	.LC252(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%rbx, %rdi
	leaq	88(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	(%rsp), %rdi
	leaq	.LC253(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	88(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L537:
	movq	calc(%rip), %rax
	movq	%rbx, %rdi
	leaq	16(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	(%rsp), %rdi
	leaq	.LC254(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	16(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L495:
	leaq	40(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	movq	8(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE6:
	movq	calc(%rip), %rax
	cmpl	$0, 28(%rax)
	jne	.L540
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 8(%rax)
	jne	.L540
	movq	gas(%rip), %rax
	movsd	80(%rax), %xmm0
	cmpl	$0, 428(%rax)
	movsd	%xmm0, 88(%rax)
	movsd	104(%rax), %xmm0
	movsd	%xmm0, 112(%rax)
	jle	.L542
	movsd	128(%rax), %xmm0
	movsd	%xmm0, 136(%rax)
.L542:
	movsd	152(%rax), %xmm0
	movl	424(%rax), %ecx
	movq	312(%rax), %rdx
	movsd	%xmm0, 160(%rax)
	cmpl	$1, %ecx
	jle	.L543
	movl	$1, %eax
.L544:
	movq	(%rdx,%rax,8), %rsi
	incq	%rax
	movsd	8(%rsi), %xmm0
	movsd	%xmm0, 16(%rsi)
	cmpl	%eax, %ecx
	jge	.L544
	jmp	.L540
.L543:
	movq	8(%rdx), %rax
	movq	.LC8(%rip), %rcx
	movq	%rcx, 16(%rax)
	jmp	.L540
.L553:
	endbr64
	movq	%rax, %rbx
.L545:
	movq	16(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	jmp	.L546
.L552:
	endbr64
	movq	%rax, %rbx
.L546:
	movq	24(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	1096(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L558
	movq	%rbx, %rdi
.LEHB7:
	call	_Unwind_Resume@PLT
.LEHE7:
.L558:
	call	__stack_chk_fail@PLT
.L549:
	addq	$1112, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4301:
	.section	.gcc_except_table
.LLSDA4301:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4301-.LLSDACSB4301
.LLSDACSB4301:
	.uleb128 .LEHB4-.LFB4301
	.uleb128 .LEHE4-.LEHB4
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB5-.LFB4301
	.uleb128 .LEHE5-.LEHB5
	.uleb128 .L552-.LFB4301
	.uleb128 0
	.uleb128 .LEHB6-.LFB4301
	.uleb128 .LEHE6-.LEHB6
	.uleb128 .L553-.LFB4301
	.uleb128 0
	.uleb128 .LEHB7-.LFB4301
	.uleb128 .LEHE7-.LEHB7
	.uleb128 0
	.uleb128 0
.LLSDACSE4301:
	.text
	.size	_Z9READ_DATAv, .-_Z9READ_DATAv
	.globl	_Z3LBSddRd
	.type	_Z3LBSddRd, @function
_Z3LBSddRd:
.LFB4312:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 64
	movsd	%xmm0, 16(%rsp)
	movsd	%xmm1, 8(%rsp)
.L570:
	call	rand@PLT
	movsd	.LC255(%rip), %xmm3
	comisd	16(%rsp), %xmm3
	cvtsi2sdl	%eax, %xmm2
	divsd	.LC42(%rip), %xmm2
	movsd	%xmm2, (%rbx)
	ja	.L581
	comisd	8(%rsp), %xmm3
	jbe	.L578
.L574:
	movsd	.LC8(%rip), %xmm0
	movsd	16(%rsp), %xmm1
	subsd	%xmm2, %xmm0
	call	pow@PLT
	jmp	.L573
.L581:
	movsd	.LC8(%rip), %xmm0
	movsd	8(%rsp), %xmm1
	movsd	%xmm2, 24(%rsp)
	subsd	%xmm2, %xmm0
	call	pow@PLT
	movsd	.LC255(%rip), %xmm3
	comisd	8(%rsp), %xmm3
	movsd	24(%rsp), %xmm2
	jbe	.L573
	jmp	.L574
.L578:
	movsd	16(%rsp), %xmm3
	addsd	8(%rsp), %xmm3
	movsd	%xmm2, 32(%rsp)
	movsd	16(%rsp), %xmm1
	movaps	%xmm3, %xmm0
	movsd	%xmm3, 40(%rsp)
	mulsd	%xmm2, %xmm0
	divsd	16(%rsp), %xmm0
	call	pow@PLT
	movsd	32(%rsp), %xmm2
	movsd	40(%rsp), %xmm3
	movsd	%xmm0, 24(%rsp)
	movsd	.LC8(%rip), %xmm0
	movsd	8(%rsp), %xmm1
	subsd	%xmm2, %xmm0
	mulsd	%xmm3, %xmm0
	divsd	8(%rsp), %xmm0
	call	pow@PLT
	mulsd	24(%rsp), %xmm0
.L573:
	movsd	%xmm0, 24(%rsp)
	call	rand@PLT
	movsd	24(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L570
	addq	$48, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4312:
	.size	_Z3LBSddRd, .-_Z3LBSddRd
	.globl	_Z3RBCRdS_S_S_S_S_
	.type	_Z3RBCRdS_S_S_S_S_, @function
_Z3RBCRdS_S_S_S_S_:
.LFB4314:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%r9, %rbx
	subq	$16, %rsp
	.cfi_def_cfa_offset 32
	movsd	(%rsi), %xmm1
	movsd	(%rcx), %xmm0
	movq	geom(%rip), %rax
	mulsd	%xmm0, %xmm0
	movaps	%xmm1, %xmm3
	mulsd	%xmm1, %xmm3
	cmpl	$2, 24(%rax)
	addsd	%xmm0, %xmm3
	jne	.L583
	movsd	(%rdx), %xmm0
	mulsd	%xmm0, %xmm0
	addsd	%xmm0, %xmm3
.L583:
	movsd	(%rdi), %xmm2
	movsd	(%r8), %xmm4
	mulsd	%xmm2, %xmm1
	mulsd	%xmm4, %xmm4
	mulsd	%xmm2, %xmm2
	divsd	%xmm3, %xmm1
	subsd	%xmm4, %xmm2
	divsd	%xmm3, %xmm2
	xorps	%xmm3, %xmm3
	movaps	%xmm1, %xmm0
	movsd	%xmm1, 8(%rsp)
	mulsd	%xmm1, %xmm0
	subsd	%xmm2, %xmm0
	comisd	%xmm3, %xmm0
	jb	.L584
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	xorps	%xmm3, %xmm3
	movaps	%xmm0, %xmm2
	subsd	%xmm1, %xmm2
	xorps	.LC43(%rip), %xmm1
	subsd	%xmm0, %xmm1
	comisd	%xmm1, %xmm3
	jbe	.L591
	comisd	%xmm3, %xmm2
	ja	.L588
.L584:
	movsd	.LC50(%rip), %xmm2
	jmp	.L588
.L591:
	minsd	%xmm1, %xmm2
.L588:
	movsd	%xmm2, (%rbx)
	addq	$16, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4314:
	.size	_Z3RBCRdS_S_S_S_S_, .-_Z3RBCRdS_S_S_S_S_
	.globl	_Z4AIFXRdS_S_S_S_S_S_S_
	.type	_Z4AIFXRdS_S_S_S_S_S_S_, @function
_Z4AIFXRdS_S_S_S_S_S_S_:
.LFB4315:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rsi, %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%r8, %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%r9, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$56, %rsp
	.cfi_def_cfa_offset 112
	movq	geom(%rip), %rsi
	movq	112(%rsp), %r12
	movq	120(%rsp), %rbx
	movl	24(%rsi), %ebp
	cmpl	$1, %ebp
	jne	.L594
	movsd	(%rcx), %xmm2
	movsd	(%rbx), %xmm1
	jmp	.L595
.L594:
	cmpl	$2, %ebp
	jne	.L595
	movsd	(%rdx), %xmm0
	movsd	(%rcx), %xmm1
	movq	%rdi, 16(%rsp)
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	call	sqrt@PLT
	movsd	(%rbx), %xmm1
	movsd	%xmm0, 8(%rsp)
	movsd	(%r12), %xmm0
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	call	sqrt@PLT
	movq	16(%rsp), %rdi
	movsd	8(%rsp), %xmm2
	movaps	%xmm0, %xmm1
.L595:
	movsd	(%rdi), %xmm3
	addsd	(%r15), %xmm3
	movaps	%xmm2, %xmm4
	movsd	%xmm1, 24(%rsp)
	mulsd	%xmm2, %xmm4
	movsd	%xmm2, 8(%rsp)
	movaps	%xmm3, %xmm0
	movsd	%xmm3, 16(%rsp)
	mulsd	%xmm3, %xmm0
	addsd	%xmm4, %xmm0
	call	sqrt@PLT
	movsd	16(%rsp), %xmm3
	movsd	8(%rsp), %xmm2
	movsd	24(%rsp), %xmm1
	movsd	%xmm0, (%r14)
	divsd	%xmm0, %xmm3
	movaps	%xmm1, %xmm5
	divsd	%xmm0, %xmm2
	movsd	0(%r13), %xmm0
	mulsd	%xmm3, %xmm1
	movaps	%xmm3, %xmm4
	mulsd	%xmm0, %xmm4
	mulsd	%xmm2, %xmm5
	mulsd	%xmm2, %xmm0
	addsd	%xmm5, %xmm4
	subsd	%xmm0, %xmm1
	movsd	%xmm4, 0(%r13)
	movsd	%xmm1, (%rbx)
	cmpl	$2, %ebp
	jne	.L593
	movsd	%xmm1, 8(%rsp)
	call	rand@PLT
	leaq	40(%rsp), %rdi
	leaq	32(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	40(%rsp), %xmm0
	movsd	8(%rsp), %xmm1
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, (%r12)
	mulsd	32(%rsp), %xmm1
	movsd	%xmm1, (%rbx)
.L593:
	addq	$56, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4315:
	.size	_Z4AIFXRdS_S_S_S_S_S_S_, .-_Z4AIFXRdS_S_S_S_S_S_S_
	.globl	_Z10REMOVE_MOLRi
	.type	_Z10REMOVE_MOLRi, @function
_Z10REMOVE_MOLRi:
.LFB4316:
	.cfi_startproc
	endbr64
	movq	molecs(%rip), %rax
	movslq	(%rdi), %rcx
	movq	%rdi, %rdx
	movslq	80(%rax), %rsi
	cmpl	%esi, %ecx
	je	.L599
	movq	calc(%rip), %rdi
	leaq	0(,%rsi,8), %r10
	leaq	0(,%rcx,8), %r8
	movl	60(%rdi), %r11d
	xorl	%edi, %edi
.L600:
	incq	%rdi
	cmpl	%edi, %r11d
	jl	.L612
	movq	40(%rax), %r9
	movq	(%r9,%rdi,8), %r9
	movsd	(%r9,%r10), %xmm0
	movsd	%xmm0, (%r9,%r8)
	jmp	.L600
.L612:
	movq	48(%rax), %r11
	movl	$1, %edi
.L602:
	movq	(%r11,%rdi,8), %r9
	incq	%rdi
	movsd	(%r9,%r10), %xmm0
	movsd	%xmm0, (%r9,%r8)
	cmpq	$4, %rdi
	jne	.L602
	movq	gas(%rip), %r8
	cmpl	$0, 432(%r8)
	jle	.L603
	movq	64(%rax), %rdi
	movsd	(%rdi,%rsi,8), %xmm0
	movsd	%xmm0, (%rdi,%rcx,8)
.L603:
	movq	(%rax), %rdi
	cvtsi2sdl	(%rdi,%rsi,4), %xmm0
	andps	.LC256(%rip), %xmm0
	cvttsd2sil	%xmm0, %esi
	movl	%esi, (%rdi,%rcx,4)
	movq	8(%rax), %rcx
	movslq	80(%rax), %rsi
	movl	(%rcx,%rsi,4), %edi
	movslq	(%rdx), %rsi
	movl	%edi, (%rcx,%rsi,4)
	movq	24(%rax), %rcx
	movslq	80(%rax), %rsi
	movl	(%rcx,%rsi,4), %edi
	movslq	(%rdx), %rsi
	movl	%edi, (%rcx,%rsi,4)
	xorl	%ecx, %ecx
	cmpl	$0, 428(%r8)
	jg	.L604
.L608:
	cmpl	$1, 452(%r8)
	movslq	80(%rax), %rsi
	movslq	(%rdx), %rcx
	jle	.L606
	movq	72(%rax), %rdx
	movsd	(%rdx,%rsi,8), %xmm0
	movsd	%xmm0, (%rdx,%rcx,8)
	jmp	.L606
.L604:
	movslq	80(%rax), %r9
	movslq	(%rdx), %rdi
	incq	%rcx
	cmpl	%ecx, 428(%r8)
	jl	.L608
	movq	32(%rax), %rsi
	movq	(%rsi,%rcx,8), %rsi
	movl	(%rsi,%r9,4), %r9d
	movl	%r9d, (%rsi,%rdi,4)
	jmp	.L604
.L606:
	movq	56(%rax), %rdx
	movsd	(%rdx,%rsi,8), %xmm0
	movsd	%xmm0, (%rdx,%rcx,8)
.L599:
	decl	80(%rax)
	ret
	.cfi_endproc
.LFE4316:
	.size	_Z10REMOVE_MOLRi, .-_Z10REMOVE_MOLRi
	.globl	_Z10INDEX_MOLSv
	.type	_Z10INDEX_MOLSv, @function
_Z10INDEX_MOLSv:
.LFB4317:
	.cfi_startproc
	endbr64
	movq	geom(%rip), %rcx
	xorl	%eax, %eax
.L614:
	incq	%rax
	cmpl	%eax, 4(%rcx)
	jl	.L624
	movq	56(%rcx), %rdx
	xorl	%r9d, %r9d
	movq	16(%rdx), %rdx
	movl	%r9d, (%rdx,%rax,4)
	jmp	.L614
.L624:
	movq	molecs(%rip), %rdx
	cmpl	$0, 80(%rdx)
	jne	.L623
	ret
.L623:
	xorl	%eax, %eax
.L616:
	incq	%rax
	cmpl	%eax, 80(%rdx)
	jl	.L625
	movq	56(%rcx), %rsi
	movq	(%rdx), %rdi
	movq	16(%rsi), %rsi
	movslq	(%rdi,%rax,4), %rdi
	incl	(%rsi,%rdi,4)
	jmp	.L616
.L625:
	xorl	%eax, %eax
	xorl	%esi, %esi
.L618:
	incq	%rax
	cmpl	%eax, 4(%rcx)
	jl	.L626
	movq	56(%rcx), %rdi
	movq	8(%rdi), %r8
	movq	16(%rdi), %rdi
	movl	%esi, (%r8,%rax,4)
	leaq	(%rdi,%rax,4), %rdi
	xorl	%r8d, %r8d
	addl	(%rdi), %esi
	movl	%r8d, (%rdi)
	jmp	.L618
.L626:
	movl	$4, %edi
	movl	$1, %esi
.L620:
	cmpl	%esi, 80(%rdx)
	jl	.L627
	movq	56(%rcx), %r9
	movq	(%rdx), %rax
	movslq	(%rax,%rdi), %r8
	movq	16(%r9), %rax
	addq	$4, %rdi
	movq	8(%r9), %r9
	leaq	(%rax,%r8,4), %r10
	movl	(%r10), %eax
	incl	%eax
	movl	%eax, (%r10)
	addl	(%r9,%r8,4), %eax
	movq	16(%rdx), %r8
	cltq
	movl	%esi, (%r8,%rax,4)
	incl	%esi
	jmp	.L620
.L627:
	ret
	.cfi_endproc
.LFE4317:
	.size	_Z10INDEX_MOLSv, .-_Z10INDEX_MOLSv
	.section	.rodata.str1.1
.LC257:
	.string	"Maximum number of molecules is to be extended from "
.LC258:
	.string	" to "
.LC259:
	.string	"( if the additional memory is available //// )"
.LC260:
	.string	"EXTMOLS.SCR"
.LC261:
	.string	"EXTMOLS.SCR is opened"
.LC262:
	.string	"EXTMOLS.SCR not opened"
.LC263:
	.string	"Start write to disk storage"
.LC264:
	.string	"Disk write completed"
.LC265:
	.string	"Disk read completed"
	.text
	.globl	_Z10EXTEND_MNMd
	.type	_Z10EXTEND_MNMd, @function
_Z10EXTEND_MNMd:
.LFB4320:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4320
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$568, %rsp
	.cfi_def_cfa_offset 624
	movsd	%xmm0, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 552(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, (%rsp)
.LEHB8:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE8:
	movq	molecs(%rip), %rax
	leaq	.LC257(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	cvtsi2sdl	84(%rax), %xmm0
	mulsd	8(%rsp), %xmm0
	cvttsd2sil	%xmm0, %r13d
.LEHB9:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	84(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC258(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r13d, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC259(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	(%rsp), %rdi
	movl	$20, %edx
	leaq	.LC260(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	152(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 8(%rsp)
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC261(%rip), %rsi
	testb	%al, %al
	jne	.L737
	leaq	.LC262(%rip), %rsi
.L737:
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC263(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %ebx
	movl	$1, %r15d
	leaq	40(%rsp), %r12
.L631:
	movq	molecs(%rip), %rax
	cmpl	%r15d, 84(%rax)
	jl	.L790
	movq	calc(%rip), %rcx
	movq	40(%rax), %rax
	leaq	(%rbx,%rbx), %rbp
	movq	%r12, %rdi
	movq	gas(%rip), %rdx
	movslq	60(%rcx), %rcx
	cmpl	$0, 428(%rdx)
	movq	(%rax,%rcx,8), %rax
	movsd	(%rax,%rbp), %xmm0
	jle	.L632
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r14d
.L633:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L633
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	8(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	24(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	xorl	%r14d, %r14d
.L634:
	movq	gas(%rip), %rcx
	movq	molecs(%rip), %rax
	leal	1(%r14), %edx
	cmpl	%edx, 428(%rcx)
	jl	.L791
	movq	32(%rax), %rax
	incq	%r14
	movq	%r12, %rdi
	movq	(%rax,%r14,8), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L634
.L791:
	movq	72(%rax), %rax
	movq	%r12, %rdi
	movsd	(%rax,%rbp), %xmm0
	jmp	.L739
.L632:
	cmpl	$0, 432(%rdx)
	jle	.L637
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r14d
.L638:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L638
	jmp	.L789
.L637:
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r14d
.L639:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L639
.L789:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	8(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	24(%rax), %rax
	movl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	72(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
.L739:
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r15d
	addq	$4, %rbx
	jmp	.L631
.L790:
	leaq	.LC264(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	movq	gas(%rip), %rax
	xorl	%ebx, %ebx
	cmpl	$0, 428(%rax)
	jle	.L792
.L641:
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
	movq	calc(%rip), %rax
	cmpl	%ebx, 60(%rax)
	jl	.L793
	movq	(%rdi,%rbx,8), %rdi
	call	cudaFree@PLT
	incq	%rbx
	jmp	.L641
.L793:
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	64(%rax), %rdi
	call	cudaFree@PLT
	xorl	%ebx, %ebx
.L644:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbx), %rdi
	call	cudaFree@PLT
	addq	$8, %rbx
	cmpq	$32, %rbx
	jne	.L644
	movq	molecs(%rip), %rax
	movq	48(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	72(%rax), %rdi
	call	cudaFree@PLT
	xorl	%ebx, %ebx
.L645:
	movq	molecs(%rip), %rax
	movq	32(%rax), %rdi
	movq	gas(%rip), %rax
	cmpl	%ebx, 428(%rax)
	jle	.L724
	movq	(%rdi,%rbx,8), %rdi
	call	cudaFree@PLT
	incq	%rbx
	jmp	.L645
.L792:
	xorl	%ebx, %ebx
	cmpl	$0, 432(%rax)
	jle	.L649
.L648:
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
	movq	calc(%rip), %rax
	cmpl	%ebx, 60(%rax)
	jl	.L794
	movq	(%rdi,%rbx,8), %rdi
	call	cudaFree@PLT
	incq	%rbx
	jmp	.L648
.L794:
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	64(%rax), %rdi
	call	cudaFree@PLT
	xorl	%ebx, %ebx
.L651:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbx), %rdi
	call	cudaFree@PLT
	addq	$8, %rbx
	cmpq	$32, %rbx
	jne	.L651
	jmp	.L779
.L652:
	movq	(%rdi,%rbx,8), %rdi
	call	cudaFree@PLT
	incq	%rbx
.L649:
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
	movq	calc(%rip), %rax
	cmpl	%ebx, 60(%rax)
	jge	.L652
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
	call	cudaFree@PLT
	xorl	%ebx, %ebx
.L653:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbx), %rdi
	call	cudaFree@PLT
	addq	$8, %rbx
	cmpq	$32, %rbx
	jne	.L653
.L779:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdi
	call	cudaFree@PLT
	movq	molecs(%rip), %rax
	movq	72(%rax), %rdi
.L724:
	call	cudaFree@PLT
	movq	calc(%rip), %rdx
	movq	gas(%rip), %rax
	leal	1(%r13), %ebx
	movl	%ebx, %esi
	movl	60(%rdx), %edi
	movq	molecs(%rip), %rdx
	incl	%edi
	cmpl	$0, 428(%rax)
	leaq	40(%rdx), %rdx
	jle	.L654
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	56(%rax), %rsi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	64(%rax), %rsi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %esi
	movl	$4, %edi
	leaq	48(%rax), %rdx
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	8(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rsi
	movl	%ebx, %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	16(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	24(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %esi
	leaq	32(%rax), %rdx
	movq	gas(%rip), %rax
	movl	428(%rax), %edi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiiRPPi.isra.0
.L728:
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	72(%rax), %rsi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	calc(%rip), %rax
	xorl	%ecx, %ecx
	movl	60(%rax), %edi
	movq	molecs(%rip), %rax
	jmp	.L655
.L654:
	cmpl	$0, 432(%rax)
	jle	.L656
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	56(%rax), %rsi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	leaq	64(%rax), %rsi
	jmp	.L781
.L656:
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	leaq	56(%rax), %rsi
.L781:
	movl	%ebx, %edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %esi
	movl	$4, %edi
	leaq	48(%rax), %rdx
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	8(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rsi
	movl	%ebx, %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	16(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	%ebx, %edi
	leaq	24(%rax), %rsi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	jmp	.L728
.L795:
	incq	%rcx
.L655:
	cmpl	%ecx, %edi
	jl	.L692
	leaq	0(,%rcx,8), %rsi
	xorl	%edx, %edx
.L660:
	cmpl	%edx, %r13d
	jl	.L795
	movq	40(%rax), %r8
	movq	(%r8,%rsi), %r8
	movq	$0x000000000, (%r8,%rdx,8)
	incq	%rdx
	jmp	.L660
.L692:
	xorl	%ecx, %ecx
.L659:
	xorl	%edx, %edx
.L663:
	cmpl	%edx, %r13d
	jl	.L796
	movq	48(%rax), %rsi
	movq	(%rsi,%rcx), %rsi
	movq	$0x000000000, (%rsi,%rdx,8)
	incq	%rdx
	jmp	.L663
.L796:
	addq	$8, %rcx
	cmpq	$32, %rcx
	jne	.L659
	xorl	%edx, %edx
.L662:
	cmpl	%edx, %r13d
	jl	.L797
	movq	56(%rax), %rcx
	xorl	%r10d, %r10d
	xorl	%r11d, %r11d
	xorl	%ebx, %ebx
	xorl	%ebp, %ebp
	movq	$0x000000000, (%rcx,%rdx,8)
	movq	8(%rax), %rcx
	movl	%r10d, (%rcx,%rdx,4)
	movq	(%rax), %rcx
	movl	%r11d, (%rcx,%rdx,4)
	movq	16(%rax), %rcx
	movl	%ebx, (%rcx,%rdx,4)
	movq	24(%rax), %rcx
	movl	%ebp, (%rcx,%rdx,4)
	movq	72(%rax), %rcx
	movq	$0x000000000, (%rcx,%rdx,8)
	incq	%rdx
	jmp	.L662
.L797:
	movq	gas(%rip), %rsi
	xorl	%edx, %edx
	cmpl	$0, 432(%rsi)
	jg	.L665
.L669:
	xorl	%ecx, %ecx
	cmpl	$0, 428(%rsi)
	jg	.L666
	jmp	.L667
.L665:
	cmpl	%edx, %r13d
	jl	.L669
	movq	64(%rax), %rcx
	movq	$0x000000000, (%rcx,%rdx,8)
	incq	%rdx
	jmp	.L665
.L798:
	incq	%rcx
.L666:
	cmpl	%ecx, 428(%rsi)
	jl	.L667
	leaq	0(,%rcx,8), %rdi
	xorl	%edx, %edx
.L671:
	cmpl	%edx, %r13d
	jl	.L798
	movq	32(%rax), %r8
	xorl	%r9d, %r9d
	movq	(%r8,%rdi), %r8
	movl	%r9d, (%r8,%rdx,4)
	incq	%rdx
	jmp	.L671
.L667:
	movq	(%rsp), %rdi
	movl	$12, %edx
	leaq	.LC260(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	movq	8(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC261(%rip), %rsi
	testb	%al, %al
	jne	.L749
	leaq	.LC262(%rip), %rsi
.L749:
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %ebp
	movl	$1, %r15d
	leaq	24(%rsp), %r12
.L674:
	movq	molecs(%rip), %rax
	cmpl	%r15d, 84(%rax)
	jl	.L799
	movq	calc(%rip), %rcx
	movq	40(%rax), %rax
	leaq	0(%rbp,%rbp), %rbx
	movq	%r12, %rdi
	movq	gas(%rip), %rdx
	movslq	60(%rcx), %rcx
	movq	(%rax,%rcx,8), %rsi
	addq	%rbx, %rsi
	cmpl	$0, 428(%rdx)
	jle	.L675
	call	_ZNSi10_M_extractIdEERSiRT_@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rsi
	addq	%rbx, %rsi
	call	_ZNSi10_M_extractIdEERSiRT_@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	64(%rax), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	movl	$8, %r14d
.L676:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L676
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	8(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	24(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	xorl	%eax, %eax
.L677:
	movq	gas(%rip), %rcx
	movq	molecs(%rip), %rdx
	leal	1(%rax), %esi
	cmpl	428(%rcx), %esi
	jg	.L800
	movq	32(%rdx), %rdx
	movq	%r12, %rdi
	leaq	1(%rax), %r14
	movq	8(%rdx,%rax,8), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%r14, %rax
	jmp	.L677
.L800:
	addq	72(%rdx), %rbx
	movq	%r12, %rdi
	movq	%rbx, %rsi
	jmp	.L733
.L675:
	cmpl	$0, 432(%rdx)
	jle	.L680
	call	_ZNSi10_M_extractIdEERSiRT_@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rsi
	addq	%rbx, %rsi
	call	_ZNSi10_M_extractIdEERSiRT_@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	64(%rax), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	movl	$8, %r14d
.L681:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L681
	jmp	.L775
.L680:
	call	_ZNSi10_M_extractIdEERSiRT_@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	56(%rax), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	movl	$8, %r14d
.L682:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	48(%rax), %rax
	movq	(%rax,%r14), %rsi
	addq	%rbx, %rsi
	call	_ZNSirsERd.isra.0
	addq	$8, %r14
	cmpq	$32, %r14
	jne	.L682
.L775:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movq	8(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	24(%rax), %rsi
	addq	%rbp, %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	addq	72(%rax), %rbx
	movq	%rbx, %rsi
.L733:
	call	_ZNSirsERd.isra.0
	incl	%r15d
	addq	$4, %rbp
	jmp	.L674
.L799:
	leaq	.LC265(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r12, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE9:
	movq	molecs(%rip), %rax
	movq	%r12, %rdi
	movl	%r13d, 84(%rax)
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	552(%rsp), %rax
	subq	%fs:40, %rax
	je	.L686
	jmp	.L716
.L697:
	endbr64
	movq	%rax, %rbx
.L684:
	movq	(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	552(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L716
	movq	%rbx, %rdi
.LEHB10:
	call	_Unwind_Resume@PLT
.LEHE10:
.L716:
	call	__stack_chk_fail@PLT
.L686:
	addq	$568, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4320:
	.section	.gcc_except_table
.LLSDA4320:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4320-.LLSDACSB4320
.LLSDACSB4320:
	.uleb128 .LEHB8-.LFB4320
	.uleb128 .LEHE8-.LEHB8
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB9-.LFB4320
	.uleb128 .LEHE9-.LEHB9
	.uleb128 .L697-.LFB4320
	.uleb128 0
	.uleb128 .LEHB10-.LFB4320
	.uleb128 .LEHE10-.LEHB10
	.uleb128 0
	.uleb128 0
.LLSDACSE4320:
	.text
	.size	_Z10EXTEND_MNMd, .-_Z10EXTEND_MNMd
	.section	.rodata.str1.1
.LC266:
	.string	"EXTEND_MNM from MOLECULES_ENTER "
.LC269:
	.string	"Unable to find molecule for removal"
	.text
	.globl	_Z18MOLECULES_ENTER_1Dv
	.type	_Z18MOLECULES_ENTER_1Dv, @function
_Z18MOLECULES_ENTER_1Dv:
.LFB4304:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movl	$1, %ebx
	subq	$152, %rsp
	.cfi_def_cfa_offset 208
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	movq	calc(%rip), %rax
	movq	$0x000000000, 232(%rax)
.L803:
	movq	geom(%rip), %rdx
	movq	40(%rdx), %rax
	testl	$-5, (%rax,%rbx,4)
	je	.L802
.L841:
	decq	%rbx
	jne	.L890
	movl	$2, %ebx
	jmp	.L803
.L802:
	movl	%ebx, 56(%rsp)
	movl	$1, %eax
	cmpq	$2, %rbx
	jne	.L805
	movq	calc(%rip), %rcx
	cmpl	$1, 28(%rcx)
	jne	.L805
	movq	128(%rdx), %rax
	xorps	%xmm0, %xmm0
	movsd	16(%rax), %xmm1
	xorl	%eax, %eax
	comisd	%xmm0, %xmm1
	seta	%al
	incl	%eax
.L805:
	cltq
	movl	%ebx, 60(%rsp)
	leaq	0(,%rbx,8), %rbp
	movl	$1, %r13d
	leaq	0(,%rax,8), %r15
	leaq	96(%r15), %rax
	movq	%rax, 8(%rsp)
	leaq	120(%r15), %rax
	movq	%rax, 40(%rsp)
.L806:
	movq	gas(%rip), %rax
	movl	%r13d, 84(%rsp)
	movq	geom(%rip), %rdi
	cmpl	%r13d, 424(%rax)
	jl	.L841
	movq	368(%rax), %rsi
	movslq	%r13d, %rax
	movq	calc(%rip), %rdx
	leaq	0(,%rax,8), %r12
	movq	16(%rsi), %rcx
	movq	8(%rsi), %rsi
	movq	(%rsi,%rax,8), %rsi
	movq	(%rcx,%rax,8), %r11
	movsd	(%rsi,%rbp), %xmm0
	movq	40(%rdi), %rsi
	addq	%rbp, %r11
	mulsd	104(%rdx), %xmm0
	movq	%r11, %rcx
	movl	8(%rsi), %edi
	addsd	(%r11), %xmm0
	cmpl	$4, %edi
	jne	.L809
	cmpl	$1, 76(%rdx)
	jne	.L809
	movq	312(%rdx), %r8
	cmpq	$1, %rbx
	je	.L810
	movq	320(%rdx), %rsi
	movq	304(%rdx), %r9
	xorps	%xmm1, %xmm1
	addq	%r12, %rsi
	movsd	(%r9,%rax,8), %xmm0
	subsd	(%r8,%rax,8), %xmm0
	subsd	(%rsi), %xmm0
	comisd	%xmm0, %xmm1
	ja	.L811
	movsd	%xmm1, (%rsi)
	jmp	.L809
.L810:
	cvttsd2sil	%xmm0, %esi
	cvtsi2sdl	%esi, %xmm1
	movsd	%xmm1, (%r8,%rax,8)
	jmp	.L809
.L811:
	xorps	.LC43(%rip), %xmm0
	movsd	%xmm0, (%rsi)
	xorps	%xmm0, %xmm0
.L809:
	cvttsd2sil	%xmm0, %r14d
	cmpl	$2, 56(%rsp)
	sete	27(%rsp)
	cvtsi2sdl	%r14d, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rcx)
	cmpl	$4, %edi
	jne	.L812
	cmpb	$0, 27(%rsp)
	je	.L812
	cmpl	$1, 76(%rdx)
	jne	.L812
	movq	$0x000000000, (%rcx)
.L812:
	testl	%r14d, %r14d
	jg	.L813
.L839:
	incl	%r13d
	jmp	.L806
.L813:
	salq	$2, %rax
	movl	$1, 28(%rsp)
	movq	%rax, (%rsp)
	movslq	60(%rsp), %rax
	addq	$20, %rax
	movq	%rax, 64(%rsp)
.L838:
	movq	molecs(%rip), %rax
	movl	84(%rax), %ecx
	cmpl	%ecx, 80(%rax)
	jl	.L814
	leaq	.LC266(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movsd	.LC267(%rip), %xmm0
	call	_Z10EXTEND_MNMd
.L814:
	movq	molecs(%rip), %rax
	xorps	%xmm1, %xmm1
	incl	80(%rax)
	movq	gas(%rip), %rax
	movq	368(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbp), %xmm2
	movaps	%xmm2, %xmm0
	subsd	.LC51(%rip), %xmm0
	movsd	%xmm2, 32(%rsp)
	call	fmax@PLT
	movsd	32(%rsp), %xmm2
	movsd	.LC51(%rip), %xmm1
	movsd	%xmm0, 16(%rsp)
	movsd	.LC51(%rip), %xmm0
	addsd	%xmm2, %xmm0
	call	fmax@PLT
	movsd	%xmm0, 48(%rsp)
.L815:
	call	rand@PLT
	movsd	48(%rsp), %xmm1
	subsd	16(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	mulsd	%xmm0, %xmm1
	addsd	16(%rsp), %xmm1
	movq	368(%rax), %rax
	movq	24(%rax), %rdx
	movaps	%xmm1, %xmm0
	movaps	%xmm1, %xmm2
	movsd	%xmm1, 72(%rsp)
	addsd	%xmm1, %xmm2
	movq	(%rdx,%r12), %rdx
	subsd	(%rdx,%rbp), %xmm0
	movq	32(%rax), %rdx
	movq	40(%rax), %rax
	movq	(%rdx,%r12), %rdx
	mulsd	%xmm0, %xmm0
	movq	(%rax,%r12), %rax
	divsd	(%rdx,%rbp), %xmm2
	movsd	%xmm2, 32(%rsp)
	movsd	(%rax,%rbp), %xmm2
	subsd	%xmm0, %xmm2
	movaps	%xmm2, %xmm0
	call	exp@PLT
	movsd	32(%rsp), %xmm2
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 32(%rsp)
	call	rand@PLT
	movsd	32(%rsp), %xmm2
	movsd	72(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	comisd	%xmm0, %xmm2
	movsd	%xmm0, 152(%rax)
	jbe	.L815
	movq	gas(%rip), %rax
	movq	molecs(%rip), %rcx
	movq	344(%rax), %rax
	movslq	80(%rcx), %rdi
	movq	(%rax,%r12), %rdx
	movq	48(%rcx), %rax
	salq	$3, %rdi
	movq	8(%rax), %rcx
	addq	%r15, %rdx
	mulsd	(%rdx), %xmm1
	addq	%rdi, %rcx
	cmpl	$2, 56(%rsp)
	jne	.L817
	xorps	.LC43(%rip), %xmm1
.L817:
	movq	24(%rax), %rsi
	movsd	%xmm1, (%rcx)
	addq	%rdi, %rsi
	addq	16(%rax), %rdi
	call	_Z5RVELCRdS_S_
	movq	molecs(%rip), %rax
	movq	gas(%rip), %rsi
	movq	48(%rax), %rcx
	movslq	80(%rax), %rdx
	movq	16(%rcx), %rdi
	salq	$3, %rdx
	addq	%rdx, %rdi
	movsd	(%rdi), %xmm0
	movq	%rdi, %rcx
	movq	64(%rsp), %rdi
	addsd	8(%rsi,%rdi,8), %xmm0
	movq	(%rsp), %rdi
	movsd	%xmm0, (%rcx)
	movq	488(%rsi), %rcx
	movq	8(%rcx), %rcx
	cmpl	$0, (%rcx,%rdi)
	jle	.L819
	addq	64(%rax), %rdx
	movq	8(%rsp), %rax
	leaq	84(%rsp), %rdi
	addq	%rax, %rsi
	call	_Z4SROTRiRdS0_
.L819:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jg	.L865
.L824:
	movq	gas(%rip), %rsi
	cmpl	$1, 452(%rsi)
	jle	.L822
	movq	molecs(%rip), %rax
	leaq	84(%rsp), %rdi
	movslq	80(%rax), %rdx
	movq	72(%rax), %rax
	leaq	(%rax,%rdx,8), %rdx
	movq	8(%rsp), %rax
	addq	%rax, %rsi
	call	_Z4SELERiRdS0_
	jmp	.L822
.L865:
	leaq	80(%rsp), %rcx
	movl	$1, %eax
	movq	%rcx, 16(%rsp)
.L820:
	movq	gas(%rip), %rsi
	movq	molecs(%rip), %rdx
	movl	%eax, 80(%rsp)
	movq	(%rsp), %r10
	movq	472(%rsi), %rcx
	movslq	80(%rdx), %rdi
	cmpl	%eax, (%rcx,%r10)
	jl	.L824
	movq	32(%rdx), %rdx
	movslq	%eax, %rcx
	movl	%eax, 32(%rsp)
	movq	40(%rsp), %rax
	movq	(%rdx,%rcx,8), %rdx
	movq	16(%rsp), %rcx
	addq	%rax, %rsi
	leaq	(%rdx,%rdi,4), %rdx
	leaq	84(%rsp), %rdi
	call	_Z4SVIBRiRdS_S_
	movl	32(%rsp), %eax
	incl	%eax
	jmp	.L820
.L822:
	movq	molecs(%rip), %rax
	xorps	%xmm0, %xmm0
	movslq	80(%rax), %rdx
	movq	72(%rax), %rcx
	movsd	(%rcx,%rdx,8), %xmm1
	comisd	%xmm0, %xmm1
	ja	.L827
	movq	8(%rax), %rax
	movl	%r13d, (%rax,%rdx,4)
	call	rand@PLT
	movq	geom(%rip), %rdx
	movq	calc(%rip), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	molecs(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movq	128(%rdx), %rcx
	movsd	%xmm0, 152(%rsi)
	mulsd	104(%rsi), %xmm0
	movl	24(%rdx), %edx
	movsd	(%rcx,%rbp), %xmm1
	movq	48(%rax), %rcx
	movslq	80(%rax), %rax
	movq	8(%rcx), %r9
	movsd	%xmm1, 96(%rsp)
	salq	$3, %rax
	addq	%rax, %r9
	movsd	(%r9), %xmm2
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 112(%rsp)
	testl	%edx, %edx
	je	.L828
	cmpb	$0, 27(%rsp)
	jne	.L828
.L831:
	testl	%edx, %edx
	jg	.L829
	movq	$0x000000000, 128(%rsp)
	jmp	.L832
.L828:
	addsd	%xmm2, %xmm1
	movsd	%xmm1, 104(%rsp)
	cmpq	$1, %rbx
	jne	.L832
	jmp	.L831
.L829:
	movq	$0x000000000, 128(%rsp)
	movq	16(%rcx), %rsi
	addq	%rax, %rsi
	addq	24(%rcx), %rax
	movsd	(%rsi), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 120(%rsp)
	cmpl	$2, %edx
	jne	.L833
	mulsd	(%rax), %xmm0
	movsd	%xmm0, 128(%rsp)
.L833:
	leaq	112(%rsp), %r10
	leaq	128(%rsp), %rcx
	leaq	120(%rsp), %rdx
	leaq	96(%rsp), %rdi
	pushq	%rax
	.cfi_def_cfa_offset 216
	pushq	%rsi
	.cfi_def_cfa_offset 224
	movq	%r10, %rsi
	leaq	120(%rsp), %r8
	call	_Z4AIFXRdS_S_S_S_S_S_S_
	popq	%rsi
	.cfi_def_cfa_offset 216
	popq	%rdi
	.cfi_def_cfa_offset 208
.L832:
	movq	molecs(%rip), %rax
	movq	calc(%rip), %rcx
	movsd	104(%rsp), %xmm0
	movslq	60(%rcx), %rdi
	movq	40(%rax), %rsi
	movslq	80(%rax), %rdx
	movq	(%rsi,%rdi,8), %rsi
	leaq	(%rsi,%rdx,8), %rdi
	movsd	%xmm0, (%rdi)
	movsd	80(%rcx), %xmm0
	movq	56(%rax), %rcx
	movsd	%xmm0, (%rcx,%rdx,8)
	movq	geom(%rip), %rcx
	cmpl	$0, 32(%rcx)
	jne	.L834
	movq	(%rax), %rax
	leaq	92(%rsp), %rcx
	leaq	(%rax,%rdx,4), %rsi
	movq	%rcx, %rdx
	call	_Z12FIND_CELL_1DRdRiS0_
.L834:
	movq	geom(%rip), %rax
	cmpl	$1, 32(%rax)
	jne	.L835
	movq	molecs(%rip), %rax
	leaq	92(%rsp), %r8
	movslq	80(%rax), %rdx
	movq	(%rax), %rsi
	movq	56(%rax), %rcx
	movq	40(%rax), %rax
	leaq	0(,%rdx,8), %rdi
	leaq	(%rsi,%rdx,4), %rsi
	movq	calc(%rip), %rdx
	addq	%rdi, %rcx
	movslq	60(%rdx), %rdx
	addq	(%rax,%rdx,8), %rdi
	movq	%r8, %rdx
	call	_Z15FIND_CELL_MB_1DRdRiS0_S_
.L835:
	movq	molecs(%rip), %rax
	xorl	%ecx, %ecx
	movslq	80(%rax), %rdx
	movq	24(%rax), %rax
	movl	%ecx, (%rax,%rdx,4)
	movq	geom(%rip), %rax
	movq	128(%rax), %rdx
	movsd	120(%rax), %xmm0
	comisd	8(%rdx), %xmm0
	jbe	.L827
	movq	gas(%rip), %rdx
	movq	calc(%rip), %rax
	movq	320(%rdx), %rdx
	movsd	232(%rax), %xmm0
	movq	40(%rdx), %rdx
	addsd	(%rdx,%r12), %xmm0
	movsd	%xmm0, 232(%rax)
.L827:
	incl	28(%rsp)
	movl	28(%rsp), %eax
	cmpl	%eax, %r14d
	jge	.L838
	jmp	.L839
.L890:
	movq	geom(%rip), %rdx
	movq	128(%rdx), %rax
	movsd	120(%rdx), %xmm0
	comisd	8(%rax), %xmm0
	jbe	.L801
	movq	calc(%rip), %rax
	movsd	112(%rdx), %xmm0
	mulsd	232(%rax), %xmm0
	addsd	240(%rax), %xmm0
	movsd	%xmm0, 232(%rax)
.L889:
	xorl	%ebp, %ebp
.L844:
	movq	calc(%rip), %rax
	movsd	232(%rax), %xmm0
	cmpl	$10000, %ebp
	je	.L871
	xorps	%xmm1, %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L871
	incl	%ebp
	cmpl	$10000, %ebp
	je	.L845
.L850:
	call	rand@PLT
	movq	calc(%rip), %rdx
	cvtsi2sdl	%eax, %xmm1
	movq	molecs(%rip), %rax
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rdx)
	movslq	60(%rdx), %rdx
	cvtsi2sdl	80(%rax), %xmm0
	movq	40(%rax), %rax
	movq	(%rax,%rdx,8), %rax
	mulsd	%xmm1, %xmm0
	addsd	.LC268(%rip), %xmm0
	cvttsd2sil	%xmm0, %ebx
	movl	%ebx, 88(%rsp)
	movslq	%ebx, %rbx
	movsd	(%rax,%rbx,8), %xmm0
	movq	geom(%rip), %rax
	comisd	120(%rax), %xmm0
	jbe	.L844
	jmp	.L891
.L845:
	leaq	.LC269(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rdx
	movq	gas(%rip), %rax
	movq	$0x000000000, 232(%rdx)
	movl	424(%rax), %ecx
	xorl	%eax, %eax
.L848:
	cmpl	%eax, %ecx
	jl	.L850
	movq	280(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L848
.L891:
	call	rand@PLT
	movq	calc(%rip), %r12
	movsd	.LC270(%rip), %xmm1
	cvtsi2sdl	%eax, %xmm0
	movq	gas(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%r12)
	movsd	176(%rax), %xmm0
	andps	.LC256(%rip), %xmm0
	movq	molecs(%rip), %rax
	comisd	%xmm0, %xmm1
	movq	48(%rax), %rax
	jbe	.L887
	movq	16(%rax), %rdx
	movq	24(%rax), %rax
	movsd	(%rdx,%rbx,8), %xmm0
	movsd	(%rax,%rbx,8), %xmm1
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	addsd	%xmm1, %xmm0
	call	sqrt@PLT
	jmp	.L853
.L887:
	movq	24(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0
	andps	.LC256(%rip), %xmm0
.L853:
	movq	molecs(%rip), %rax
	movq	8(%rax), %rax
	movslq	(%rax,%rbx,4), %r13
	movq	280(%r12), %rax
	leaq	(%rax,%r13,8), %rax
	movl	%r13d, 84(%rsp)
	comisd	(%rax), %xmm0
	jbe	.L854
	movsd	%xmm0, (%rax)
.L854:
	movsd	%xmm0, (%rsp)
	call	rand@PLT
	movq	calc(%rip), %rbx
	movsd	(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	280(%rbx), %rax
	movsd	%xmm1, 152(%rbx)
	divsd	(%rax,%r13,8), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L844
	leaq	88(%rsp), %rdi
	call	_Z10REMOVE_MOLRi
	movq	gas(%rip), %rax
	movsd	232(%rbx), %xmm0
	movq	320(%rax), %rax
	movq	40(%rax), %rax
	subsd	(%rax,%r13,8), %xmm0
	movsd	%xmm0, 232(%rbx)
	jmp	.L889
.L871:
	movsd	%xmm0, 240(%rax)
.L801:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L860
	call	__stack_chk_fail@PLT
.L860:
	addq	$152, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4304:
	.size	_Z18MOLECULES_ENTER_1Dv, .-_Z18MOLECULES_ENTER_1Dv
	.section	.rodata.str1.1
.LC271:
	.string	"EXCESSIVE SPEED, DISS "
	.text
	.globl	_Z12DISSOCIATIONv
	.type	_Z12DISSOCIATIONv, @function
_Z12DISSOCIATIONv:
.LFB4321:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	xorl	%r11d, %r11d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movl	$4, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$168, %rsp
	.cfi_def_cfa_offset 224
	movq	%fs:40, %rax
	movq	%rax, 152(%rsp)
	xorl	%eax, %eax
	movl	%r11d, 12(%rsp)
.L893:
	movq	molecs(%rip), %rax
	movl	12(%rsp), %ecx
	movl	80(%rax), %esi
	cmpl	%ecx, %esi
	jle	.L923
	movq	8(%rax), %rdx
	movq	gas(%rip), %rdi
	incl	12(%rsp)
	movslq	(%rdx,%r13), %rbx
	movq	472(%rdi), %rdx
	movl	(%rdx,%rbx,4), %r9d
	testl	%r9d, %r9d
	jle	.L895
	movq	32(%rax), %r10
	movq	calc(%rip), %r11
	movl	$1, %edx
	xorl	%r8d, %r8d
	leaq	0(,%rbx,8), %rbp
.L897:
	movq	(%r10,%rdx,8), %r12
	cmpl	$0, (%r12,%r13)
	jns	.L896
	movq	288(%r11), %r8
	movsd	.LC8(%rip), %xmm0
	addq	%rbp, %r8
	addsd	(%r8), %xmm0
	movsd	%xmm0, (%r8)
	movl	$1, %r8d
.L896:
	incq	%rdx
	cmpl	%edx, %r9d
	jge	.L897
	decl	%r8d
	jne	.L895
	movq	64(%rax), %r8
	leaq	0(%r13,%r13), %r14
	cmpl	$1, 452(%rdi)
	movsd	(%r8,%r14), %xmm1
	jle	.L899
	movq	72(%rax), %rdi
	addsd	(%rdi,%r14), %xmm1
.L899:
	cmpl	%esi, 84(%rax)
	jg	.L900
	movsd	.LC267(%rip), %xmm0
	movsd	%xmm1, 16(%rsp)
	call	_Z10EXTEND_MNMd
	movsd	16(%rsp), %xmm1
.L900:
	movq	molecs(%rip), %rax
	movq	gas(%rip), %r15
	addsd	%xmm1, %xmm1
	movq	48(%rax), %rdi
	movl	80(%rax), %ecx
	movq	8(%rdi), %r8
	leal	1(%rcx), %esi
	movl	%esi, 80(%rax)
	movslq	%esi, %rsi
	movsd	(%r8,%r14), %xmm0
	movq	16(%rdi), %r8
	movq	24(%rdi), %rdi
	movsd	%xmm0, 96(%rsp)
	movsd	(%r8,%r14), %xmm0
	movsd	%xmm0, 104(%rsp)
	movsd	(%rdi,%r14), %xmm0
	movq	calc(%rip), %rdi
	movslq	60(%rdi), %r8
	movq	40(%rax), %rdi
	movsd	%xmm0, 112(%rsp)
	movq	(%rdi,%r8,8), %rdi
	movsd	(%rdi,%r14), %xmm0
	movsd	%xmm0, (%rdi,%rsi,8)
	movq	(%rax), %rdi
	movl	(%rdi,%r13), %r8d
	movl	%r8d, (%rdi,%rsi,4)
	movq	8(%rax), %rsi
	movq	544(%r15), %r8
	leaq	(%rsi,%r13), %rdi
	movslq	(%rdi), %r9
	movq	8(%r8), %r8
	decl	(%r8,%r9,4)
	movq	568(%r15), %r8
	movq	8(%r8), %r9
	movq	8(%r9), %r9
	movl	(%r9,%rbx,4), %r10d
	movslq	80(%rax), %r9
	movl	%r10d, (%rsi,%r9,4)
	movslq	80(%rax), %r9
	movslq	(%rsi,%r9,4), %rbp
	movq	16(%r8), %rsi
	movq	8(%rsi), %rsi
	leaq	0(,%rbp,4), %rcx
	movq	%rcx, 24(%rsp)
	movslq	(%rsi,%rbx,4), %rbx
	movq	536(%r15), %rsi
	movq	8(%rsi), %rsi
	leaq	0(,%rbx,4), %r12
	movl	%ebx, (%rdi)
	incl	(%rsi,%r12)
	incl	(%rsi,%rcx)
	movq	56(%rax), %rsi
	movslq	80(%rax), %rax
	movsd	(%rsi,%r14), %xmm0
	movsd	%xmm0, (%rsi,%rax,8)
	movq	352(%r15), %rax
	movq	8(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	(%rax,%rbp,8), %xmm2
	divsd	%xmm2, %xmm1
	movsd	%xmm2, 32(%rsp)
	movaps	%xmm1, %xmm0
	call	sqrt@PLT
	movq	320(%r15), %rax
	movsd	32(%rsp), %xmm2
	movsd	%xmm0, 16(%rsp)
	movq	40(%rax), %rax
	movaps	%xmm2, %xmm3
	divsd	(%rax,%rbx,8), %xmm2
	divsd	(%rax,%rbp,8), %xmm3
	movsd	%xmm2, 40(%rsp)
	movsd	%xmm3, 32(%rsp)
	call	rand@PLT
	movsd	.LC8(%rip), %xmm0
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rax)
	addsd	%xmm1, %xmm1
	subsd	%xmm0, %xmm1
	movaps	%xmm1, %xmm2
	movsd	%xmm1, 56(%rsp)
	mulsd	%xmm1, %xmm2
	subsd	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	56(%rsp), %xmm1
	mulsd	16(%rsp), %xmm1
	movsd	%xmm0, 48(%rsp)
	movsd	%xmm1, 128(%rsp)
	call	rand@PLT
	leaq	72(%rsp), %rdi
	leaq	64(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	48(%rsp), %xmm2
	movsd	64(%rsp), %xmm0
	movq	molecs(%rip), %rax
	mulsd	%xmm2, %xmm0
	mulsd	72(%rsp), %xmm2
	movslq	80(%rax), %rsi
	mulsd	16(%rsp), %xmm0
	movq	48(%rax), %rdi
	movl	$8, %eax
	mulsd	16(%rsp), %xmm2
	leaq	0(,%rsi,8), %r9
	movsd	%xmm0, 136(%rsp)
	movsd	%xmm2, 144(%rsp)
.L901:
	movsd	120(%rsp,%rax), %xmm1
	movsd	40(%rsp), %xmm2
	movsd	88(%rsp,%rax), %xmm0
	movq	(%rdi,%rax), %r8
	addq	$8, %rax
	mulsd	%xmm1, %xmm2
	mulsd	32(%rsp), %xmm1
	addsd	%xmm0, %xmm2
	subsd	%xmm1, %xmm0
	movsd	%xmm2, (%r8,%r14)
	movsd	%xmm0, (%r8,%r9)
	cmpq	$32, %rax
	jne	.L901
	movq	8(%rdi), %rax
	movq	.LC256(%rip), %xmm2
	movsd	.LC49(%rip), %xmm1
	movsd	(%rax,%r14), %xmm0
	andps	%xmm2, %xmm0
	comisd	%xmm1, %xmm0
	ja	.L902
	movsd	(%rax,%rsi,8), %xmm0
	andps	%xmm2, %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L903
.L902:
	leaq	.LC271(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	12(%rsp), %esi
	leaq	.LC59(%rip), %r15
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	%r15, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r14), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r15, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%r15, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	48(%rax), %r8
	movslq	80(%rax), %rsi
	movq	8(%r8), %rax
	movsd	(%rax,%rsi,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L903:
	movq	gas(%rip), %rdi
	movq	molecs(%rip), %rax
	movq	472(%rdi), %rsi
	addq	%rsi, %r12
	cmpl	$0, (%r12)
	jg	.L918
.L909:
	movq	488(%rdi), %r8
	movq	8(%r8), %r9
	cmpl	$0, (%r9,%rbx,4)
	jle	.L907
	movq	64(%rax), %r8
	movq	$0x000000000, (%r8,%r14)
	jmp	.L907
.L918:
	xorl	%r8d, %r8d
.L905:
	incq	%r8
	cmpl	%r8d, (%r12)
	jl	.L909
	movq	32(%rax), %r9
	xorl	%r10d, %r10d
	movq	(%r9,%r8,8), %r9
	movl	%r10d, (%r9,%r13)
	jmp	.L905
.L907:
	cmpl	$1, 452(%rdi)
	jle	.L910
	movq	72(%rax), %r8
	movq	$0x000000000, (%r8,%r14)
.L910:
	movq	24(%rsp), %rdx
	addq	%rsi, %rdx
	cmpl	$0, (%rdx)
	jg	.L919
.L915:
	cmpl	$0, (%r9,%rbp,4)
	movslq	80(%rax), %rdx
	jle	.L913
	movq	64(%rax), %r8
	movslq	%edx, %rsi
	movq	$0x000000000, (%r8,%rsi,8)
	jmp	.L913
.L919:
	xorl	%esi, %esi
.L911:
	movslq	80(%rax), %r8
	incq	%rsi
	cmpl	%esi, (%rdx)
	jl	.L915
	movq	32(%rax), %r10
	xorl	%ecx, %ecx
	movq	(%r10,%rsi,8), %r10
	movl	%ecx, (%r10,%r8,4)
	jmp	.L911
.L913:
	cmpl	$1, 452(%rdi)
	jle	.L895
	movq	72(%rax), %rax
	movq	$0x000000000, (%rax,%rdx,8)
.L895:
	addq	$4, %r13
	jmp	.L893
.L923:
	movq	152(%rsp), %rax
	subq	%fs:40, %rax
	je	.L917
	call	__stack_chk_fail@PLT
.L917:
	addq	$168, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4321:
	.size	_Z12DISSOCIATIONv, .-_Z12DISSOCIATIONv
	.section	.rodata.str1.1
.LC273:
	.string	"MOL "
.LC274:
	.string	" ENERGY "
.LC275:
	.string	"Total Energy =  "
.LC276:
	.string	"\t"
	.text
	.globl	_Z6ENERGYiRd
	.type	_Z6ENERGYiRd, @function
_Z6ENERGYiRd:
.LFB4322:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	movq	$0x000000000, (%rsi)
	movq	molecs(%rip), %rax
	testl	%edi, %edi
	jne	.L947
	movl	$4, %r12d
	movl	$1, %ebp
.L925:
	movq	molecs(%rip), %rdx
	cmpl	%ebp, 80(%rdx)
	jl	.L948
	movq	(%rdx), %rax
	movq	gas(%rip), %rcx
	cmpl	$0, (%rax,%r12)
	jle	.L927
	movq	320(%rcx), %r9
	movq	8(%rdx), %rax
	movsd	(%rbx), %xmm4
	movq	48(%rdx), %r8
	movslq	(%rax,%r12), %rax
	movq	48(%r9), %rsi
	movq	8(%r8), %r10
	movsd	%xmm4, 8(%rsp)
	movsd	(%rsi,%rax,8), %xmm3
	leaq	(%r12,%r12), %rsi
	leaq	0(,%rax,8), %rdi
	addsd	%xmm4, %xmm3
	movsd	%xmm3, (%rbx)
	movsd	(%r10,%rsi), %xmm2
	movq	16(%r8), %r10
	movq	24(%r8), %r8
	movsd	(%r10,%rsi), %xmm0
	mulsd	%xmm2, %xmm2
	movsd	(%r8,%rsi), %xmm1
	movq	40(%r9), %r8
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	addsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	.LC7(%rip), %xmm1
	mulsd	(%r8,%rax,8), %xmm1
	movq	488(%rcx), %r8
	movq	8(%r8), %r8
	mulsd	%xmm1, %xmm0
	cmpl	$0, (%r8,%rax,4)
	addsd	%xmm3, %xmm0
	movsd	%xmm0, (%rbx)
	jle	.L928
	movq	64(%rdx), %r8
	addsd	(%r8,%rsi), %xmm0
	movsd	%xmm0, (%rbx)
.L928:
	movq	472(%rcx), %rsi
	movl	(%rsi,%rax,4), %esi
	testl	%esi, %esi
	jle	.L927
	movq	360(%rcx), %rax
	movq	32(%rdx), %r10
	movsd	.LC45(%rip), %xmm1
	movq	8(%rax), %r9
	movl	$1, %eax
.L930:
	movq	(%r10,%rax,8), %r8
	cvtsi2sdl	(%r8,%r12), %xmm0
	movq	(%r9,%rax,8), %r8
	incq	%rax
	mulsd	%xmm1, %xmm0
	mulsd	(%r8,%rdi), %xmm0
	addsd	(%rbx), %xmm0
	movsd	%xmm0, (%rbx)
	cmpl	%eax, %esi
	jge	.L930
.L927:
	cmpl	$1, 452(%rcx)
	jle	.L932
	movq	72(%rdx), %rax
	movsd	(%rbx), %xmm0
	addsd	(%rax,%r12,2), %xmm0
	movsd	%xmm0, (%rbx)
.L932:
	movsd	(%rbx), %xmm0
	subsd	8(%rsp), %xmm0
	comisd	.LC272(%rip), %xmm0
	jbe	.L933
	leaq	.LC273(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	%ebp, %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC274(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rbx), %xmm0
	subsd	8(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L933:
	incl	%ebp
	addq	$4, %r12
	jmp	.L925
.L948:
	leaq	.LC275(%rip), %r12
	leaq	16+file_9(%rip), %rdi
	movq	%r12, %rsi
	leaq	.LC276(%rip), %rbp
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rbx), %xmm0
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	movq	$25, 8(%rdi,%rax)
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rbp, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r12, %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rbx), %xmm0
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	movq	$20, 8(%rdi,%rax)
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rbp, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	addq	$16, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	movq	%rax, %rdi
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
.L947:
	.cfi_restore_state
	movq	(%rax), %rdx
	movslq	%edi, %rdi
	leaq	0(,%rdi,4), %r8
	cmpl	$0, (%rdx,%rdi,4)
	jle	.L924
	movq	gas(%rip), %rcx
	movq	8(%rax), %rdx
	xorps	%xmm1, %xmm1
	movq	320(%rcx), %r10
	movslq	(%rdx,%rdi,4), %rdx
	movq	48(%r10), %r9
	leaq	0(,%rdx,8), %rsi
	addsd	(%r9,%rdx,8), %xmm1
	movq	48(%rax), %r9
	movq	8(%r9), %r11
	movsd	%xmm1, (%rbx)
	movsd	(%r11,%rdi,8), %xmm3
	movq	16(%r9), %r11
	movq	24(%r9), %r9
	movsd	(%r11,%rdi,8), %xmm0
	mulsd	%xmm3, %xmm3
	movsd	(%r9,%rdi,8), %xmm2
	movq	40(%r10), %r9
	mulsd	%xmm0, %xmm0
	mulsd	%xmm2, %xmm2
	addsd	%xmm3, %xmm0
	addsd	%xmm2, %xmm0
	movsd	.LC7(%rip), %xmm2
	mulsd	(%r9,%rdx,8), %xmm2
	movq	488(%rcx), %r9
	movq	8(%r9), %r9
	mulsd	%xmm2, %xmm0
	cmpl	$0, (%r9,%rdx,4)
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%rbx)
	jle	.L938
	movq	64(%rax), %r9
	addsd	(%r9,%rdi,8), %xmm0
	movsd	%xmm0, (%rbx)
.L938:
	movq	472(%rcx), %rdi
	movl	(%rdi,%rdx,4), %edx
	testl	%edx, %edx
	jle	.L924
	movq	32(%rax), %r9
	movq	360(%rcx), %rax
	movsd	.LC45(%rip), %xmm1
	movq	8(%rax), %rdi
	movl	$1, %eax
.L940:
	movq	(%r9,%rax,8), %rcx
	cvtsi2sdl	(%rcx,%r8), %xmm0
	movq	(%rdi,%rax,8), %rcx
	incq	%rax
	mulsd	%xmm1, %xmm0
	mulsd	(%rcx,%rsi), %xmm0
	addsd	(%rbx), %xmm0
	movsd	%xmm0, (%rbx)
	cmpl	%eax, %edx
	jge	.L940
.L924:
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4322:
	.size	_Z6ENERGYiRd, .-_Z6ENERGYiRd
	.section	.rodata.str1.1
.LC277:
	.string	"J in tecplot file = "
.LC278:
	.string	"VARIABLES = 'Distance','Time','n','u','p','T','A' "
.LC279:
	.string	"ZONE I= "
.LC280:
	.string	", J=  (set to number of output intervals+1), F=POINT"
	.text
	.globl	_Z5SETXTv
	.type	_Z5SETXTv, @function
_Z5SETXTv:
.LFB4323:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$56, %edi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movabsq	$1152921504606846975, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	call	_Znam@PLT
	movq	%rax, %rbx
.L951:
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	addl	$2, %edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rbp
	jb	.L950
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, (%rbx,%r12,8)
	incq	%r12
	cmpq	$7, %r12
	jne	.L951
	jmp	.L987
.L950:
	call	__cxa_throw_bad_array_new_length@PLT
.L987:
	movq	calc(%rip), %rax
	movsd	.LC7(%rip), %xmm0
	leaq	.LC277(%rip), %rsi
	movsd	104(%rax), %xmm1
	mulsd	%xmm0, %xmm1
	comisd	80(%rax), %xmm1
	jbe	.L985
	movl	$1, 52(%rax)
	leaq	16+file_9(%rip), %rdi
	leaq	16+file_18(%rip), %rbp
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	movq	calc(%rip), %rax
	incl	%esi
	imull	52(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC278(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC279(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%esi
	call	_ZNSolsEi@PLT
	leaq	.LC280(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	xorl	%eax, %eax
.L955:
	movq	geom(%rip), %rdx
	leal	1(%rax), %esi
	movl	(%rdx), %ecx
	incl	%ecx
	cmpl	%esi, %ecx
	jl	.L949
	cvtsi2sdl	%eax, %xmm0
	leaq	1(%rax), %r13
	movq	8(%rbx), %rdi
	movq	24(%rbx), %r8
	leaq	0(,%r13,8), %r12
	movq	128(%rdx), %rax
	mulsd	72(%rdx), %xmm0
	addq	%r12, %rdi
	movq	32(%rbx), %rcx
	addq	%r12, %r8
	movq	40(%rbx), %rsi
	addsd	8(%rax), %xmm0
	movq	16(%rbx), %rax
	addq	%r12, %rsi
	movsd	%xmm0, (%rdi)
	movq	$0x000000000, (%rax,%r13,8)
	movq	gas(%rip), %rax
	movsd	80(%rax), %xmm0
	movsd	%xmm0, (%r8)
	movsd	.LC45(%rip), %xmm0
	movq	$0x000000000, (%rcx,%r13,8)
	mulsd	80(%rax), %xmm0
	mulsd	104(%rax), %xmm0
	movq	48(%rbx), %rcx
	addq	%r12, %rcx
	movsd	%xmm0, (%rsi)
	movsd	104(%rax), %xmm0
	movsd	%xmm0, (%rcx)
	movsd	(%rdi), %xmm0
	comisd	80(%rdx), %xmm0
	jbe	.L956
	movq	calc(%rip), %rdx
	cmpl	$1, 28(%rdx)
	jne	.L956
	movsd	88(%rax), %xmm0
	movsd	%xmm0, (%r8)
	mulsd	.LC45(%rip), %xmm0
	mulsd	112(%rax), %xmm0
	movsd	%xmm0, (%rsi)
	movsd	112(%rax), %xmm0
	movsd	%xmm0, (%rcx)
.L956:
	movl	$1, %r14d
	leaq	.LC276(%rip), %r15
.L958:
	movq	(%rbx,%r14,8), %rax
	movq	%rbp, %rdi
	incq	%r14
	movsd	(%rax,%r12), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r15, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	cmpq	$7, %r14
	jne	.L958
	movsd	.LC8(%rip), %xmm0
	movq	%rbp, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r13, %rax
	jmp	.L955
.L985:
	incl	52(%rax)
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	52(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rcx
	movq	calc(%rip), %rdi
	movsd	.LC7(%rip), %xmm0
	movl	32(%rcx), %eax
	testl	%eax, %eax
	jne	.L960
	movsd	72(%rcx), %xmm3
	movsd	%xmm3, 8(%rsp)
	jmp	.L961
.L960:
	decl	%eax
	jne	.L961
	movq	128(%rcx), %rax
	cvtsi2sdl	12(%rcx), %xmm2
	movsd	80(%rdi), %xmm1
	mulsd	88(%rcx), %xmm1
	addsd	16(%rax), %xmm1
	subsd	8(%rax), %xmm1
	divsd	%xmm2, %xmm1
	movsd	%xmm1, 8(%rsp)
.L961:
	movl	(%rcx), %edx
	movl	$8, %eax
	movl	$1, %esi
	movq	output(%rip), %r9
	leal	1(%rdx), %r8d
.L962:
	cmpl	%esi, %r8d
	jl	.L988
	leal	-1(%rsi), %r11d
	movq	8(%rbx), %r10
	cvtsi2sdl	%r11d, %xmm1
	movq	128(%rcx), %r11
	mulsd	8(%rsp), %xmm1
	addsd	8(%r11), %xmm1
	movsd	%xmm1, (%r10,%rax)
	movq	16(%rbx), %r10
	movsd	80(%rdi), %xmm1
	movsd	%xmm1, (%r10,%rax)
	cmpl	%esi, %edx
	jl	.L963
	cmpl	$1, %esi
	je	.L963
	movq	136(%r9), %r10
	movq	24(%rbx), %rbp
	movq	24(%r10), %r11
	movsd	(%r11,%rax), %xmm1
	addsd	-8(%r11,%rax), %xmm1
	movq	40(%r10), %r11
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 0(%rbp,%rax)
	movsd	(%r11,%rax), %xmm1
	movq	32(%rbx), %rbp
	addsd	-8(%r11,%rax), %xmm1
	movq	144(%r10), %r11
	movq	88(%r10), %r10
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 0(%rbp,%rax)
	movsd	(%r11,%rax), %xmm1
	movq	40(%rbx), %rbp
	addsd	-8(%r11,%rax), %xmm1
	movq	48(%rbx), %r11
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 0(%rbp,%rax)
	movsd	(%r10,%rax), %xmm1
	addsd	-8(%r10,%rax), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%r11,%rax)
.L963:
	incl	%esi
	addq	$8, %rax
	jmp	.L962
.L988:
	movsd	.LC51(%rip), %xmm2
	movl	$3, %eax
.L965:
	movq	(%rbx,%rax,8), %rcx
	incq	%rax
	movsd	16(%rcx), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	24(%rcx), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 8(%rcx)
	cmpq	$7, %rax
	jne	.L965
	movslq	%edx, %rax
	movl	$3, %edx
	salq	$3, %rax
	leaq	-8(%rax), %rdi
	leaq	8(%rax), %rsi
.L966:
	movq	(%rbx,%rdx,8), %rcx
	incq	%rdx
	movsd	(%rcx,%rax), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	(%rcx,%rdi), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%rcx,%rsi)
	cmpq	$7, %rdx
	jne	.L966
	xorl	%eax, %eax
	leaq	16+file_18(%rip), %r13
.L967:
	movq	geom(%rip), %rdx
	leal	1(%rax), %ecx
	movl	(%rdx), %edx
	incl	%edx
	cmpl	%ecx, %edx
	jl	.L949
	leaq	1(%rax), %rbp
	movl	$1, %r12d
	leaq	0(,%rbp,8), %r14
.L968:
	movq	(%rbx,%r12,8), %rax
	movq	%r13, %rdi
	incq	%r12
	movsd	(%rax,%r14), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC276(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	cmpq	$7, %r12
	jne	.L968
	movsd	.LC8(%rip), %xmm0
	movq	%r13, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rbp, %rax
	jmp	.L967
.L949:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4323:
	.size	_Z5SETXTv, .-_Z5SETXTv
	.section	.rodata.str1.1
.LC281:
	.string	"PARAMETERS.DAT"
.LC282:
	.string	"PARAMETERS.DAT opened successfully"
.LC283:
	.string	"PARAMETERS.DAT not opening"
.LC284:
	.string	"RESTART.DAT"
.LC285:
	.string	"RESTART.DAT opened successfully"
.LC286:
	.string	"Restart.DAT not opening"
.LC287:
	.string	" Molecules, Check integer = "
.LC288:
	.string	"Restart file read, Check integer= "
	.text
	.globl	_Z12READ_RESTARTv
	.type	_Z12READ_RESTARTv, @function
_Z12READ_RESTARTv:
.LFB4325:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4325
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	.LC281(%rip), %rbx
	subq	$552, %rsp
	.cfi_def_cfa_offset 576
	movq	%fs:40, %rax
	movq	%rax, 536(%rsp)
	xorl	%eax, %eax
	leaq	8(%rsp), %rbp
	movq	%rbp, %rdi
.LEHB11:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE11:
.L990:
	movl	$12, %edx
	movq	%rbx, %rsi
	movq	%rbp, %rdi
.LEHB12:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	136(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	_ZSt4cout(%rip), %rdi
	testb	%al, %al
	je	.L991
	leaq	.LC282(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%rbp, %rdi
	leaq	4(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	geom(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	432(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	428(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	leaq	84(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	436(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	424(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	leaq	20(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	leaq	16(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	444(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	448(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	452(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	leaq	456(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	leaq	60(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	jmp	.L1025
.L991:
	leaq	.LC283(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L990
.L1025:
	movq	molecs(%rip), %rdx
	movq	gas(%rip), %rax
	movl	84(%rdx), %ecx
	leaq	40(%rdx), %rdx
	leal	1(%rcx), %esi
	movq	calc(%rip), %rcx
	movl	60(%rcx), %edi
	incl	%edi
	cmpl	$0, 428(%rax)
	jle	.L993
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	56(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	64(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rsi
	movl	84(%rsi), %eax
	leal	1(%rax), %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	8(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	16(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	24(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	$4, %edi
	movl	84(%rax), %esi
	leaq	48(%rax), %rdx
	incl	%esi
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %esi
	leaq	32(%rax), %rdx
	movq	gas(%rip), %rax
	movl	428(%rax), %edi
	incl	%esi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiiRPPi.isra.0
	jmp	.L1011
.L993:
	cmpl	$0, 432(%rax)
	jle	.L995
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	56(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	leaq	64(%rax), %rsi
	jmp	.L1024
.L995:
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	leaq	56(%rax), %rsi
.L1024:
	movl	84(%rax), %edi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rsi
	movl	84(%rsi), %eax
	leal	1(%rax), %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	8(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	16(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	24(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	$4, %edi
	movl	84(%rax), %esi
	leaq	48(%rax), %rdx
	incl	%esi
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
.L1011:
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	72(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	geom(%rip), %rax
	movl	16(%rax), %ebx
	movl	20(%rax), %edi
	leaq	64(%rax), %rdx
	leal	1(%rbx), %esi
	incl	%edi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	geom(%rip), %rax
	movl	$5, %edi
	movl	(%rax), %esi
	leaq	136(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rdi
	movl	(%rdi), %eax
	addq	$48, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	geom(%rip), %rax
	movl	$6, %edi
	movl	4(%rax), %esi
	leaq	144(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rax
	movl	$4, %edi
	movl	4(%rax), %esi
	leaq	56(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	output(%rip), %rax
	leaq	64(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	72(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	80(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	88(%rax), %rsi
	movq	gas(%rip), %rax
	movl	436(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	movl	$24, %edi
	leaq	136(%rax), %rdx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	output(%rip), %rax
	movl	$13, %edi
	leaq	176(%rax), %rcx
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%edx
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	output(%rip), %rax
	movl	$3, %esi
	leaq	144(%rax), %rdx
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	addl	$36, %edi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movq	output(%rip), %rax
	leaq	168(%rax), %rcx
	movq	geom(%rip), %rax
	leal	1(%rdi), %edx
	addl	$10, %edi
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movl	$3, %ecx
	movl	$3, %esi
	movl	$9, %edi
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	movq	output(%rip), %rax
	incl	%edx
	leaq	192(%rax), %r8
	call	_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0
	movq	output(%rip), %rax
	movl	$3, %esi
	movl	$7, %edi
	leaq	152(%rax), %rdx
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	testl	%esi, %esi
	js	.L996
	movq	output(%rip), %rcx
	movl	424(%rax), %edi
	incl	%esi
	movl	$151, %edx
	addq	$184, %rcx
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movq	output(%rip), %rbx
	movl	428(%rax), %ecx
	movl	424(%rax), %edi
	leaq	160(%rbx), %rdx
	leal	1(%rcx), %esi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
.L996:
	call	_Z12ALLOCATE_GASv
	leaq	8(%rsp), %rbx
.L997:
	movl	$12, %edx
	leaq	.LC284(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	136(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	_ZSt4cout(%rip), %rdi
	testb	%al, %al
	je	.L998
	leaq	.LC285(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %edx
	leaq	calc(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSi4readEPcl@PLT
	movl	$8, %edx
	leaq	molecs(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSi4readEPcl@PLT
	movl	$8, %edx
	leaq	gas(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSi4readEPcl@PLT
	movl	$8, %edx
	leaq	geom(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSi4readEPcl@PLT
	movl	$8, %edx
	leaq	output(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSi4readEPcl@PLT
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	jmp	.L1026
.L998:
	leaq	.LC286(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L997
.L1026:
	movq	molecs(%rip), %rax
	leaq	16+file_9(%rip), %rdi
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC287(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	xorl	%esi, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.LEHE12:
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	536(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1004
	jmp	.L1008
.L1005:
	endbr64
	movq	%rax, %rbx
.L1002:
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	536(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L1008
	movq	%rbx, %rdi
.LEHB13:
	call	_Unwind_Resume@PLT
.LEHE13:
.L1008:
	call	__stack_chk_fail@PLT
.L1004:
	addq	$552, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4325:
	.section	.gcc_except_table
.LLSDA4325:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4325-.LLSDACSB4325
.LLSDACSB4325:
	.uleb128 .LEHB11-.LFB4325
	.uleb128 .LEHE11-.LEHB11
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB12-.LFB4325
	.uleb128 .LEHE12-.LEHB12
	.uleb128 .L1005-.LFB4325
	.uleb128 0
	.uleb128 .LEHB13-.LFB4325
	.uleb128 .LEHE13-.LEHB13
	.uleb128 0
	.uleb128 0
.LLSDACSE4325:
	.text
	.size	_Z12READ_RESTARTv, .-_Z12READ_RESTARTv
	.section	.rodata.str1.1
.LC289:
	.string	"Parameters.DAT file not opening(write)"
.LC290:
	.string	"Restart.DAT file not opening(write)"
.LC291:
	.string	"Restart files written"
	.text
	.globl	_Z13WRITE_RESTARTv
	.type	_Z13WRITE_RESTARTv, @function
_Z13WRITE_RESTARTv:
.LFB4326:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4326
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC281(%rip), %rbx
	subq	$544, %rsp
	.cfi_def_cfa_offset 576
	movq	%fs:40, %rax
	movq	%rax, 536(%rsp)
	xorl	%eax, %eax
	leaq	8(%rsp), %r12
	movq	%r12, %rdi
.LEHB14:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE14:
.L1028:
	movl	$20, %edx
	movq	%rbx, %rsi
	movq	%r12, %rdi
.LEHB15:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	136(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	testb	%al, %al
	je	.L1029
	movq	geom(%rip), %rax
	leaq	24(%rsp), %rdi
	movl	4(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	432(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	84(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	436(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	20(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	16(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	444(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	448(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	452(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movl	456(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	60(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	8(%rsp), %rbp
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	jmp	.L1046
.L1029:
	leaq	.LC289(%rip), %rsi
	jmp	.L1045
.L1046:
.L1030:
	movl	$20, %edx
	leaq	.LC284(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	136(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	testb	%al, %al
	je	.L1032
	leaq	24(%rsp), %rbx
	movl	$8, %edx
	leaq	calc(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSo5writeEPKcl@PLT
	movl	$8, %edx
	leaq	molecs(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSo5writeEPKcl@PLT
	movl	$8, %edx
	leaq	gas(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSo5writeEPKcl@PLT
	movl	$8, %edx
	leaq	geom(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSo5writeEPKcl@PLT
	movl	$8, %edx
	leaq	output(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSo5writeEPKcl@PLT
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	jmp	.L1047
.L1032:
	leaq	.LC290(%rip), %rsi
.L1045:
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L1028
.L1047:
	leaq	.LC291(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.LEHE15:
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	536(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1036
	jmp	.L1040
.L1037:
	endbr64
	movq	%rax, %rbx
.L1034:
	movq	%r12, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	536(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L1040
	movq	%rbx, %rdi
.LEHB16:
	call	_Unwind_Resume@PLT
.LEHE16:
.L1040:
	call	__stack_chk_fail@PLT
.L1036:
	addq	$544, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4326:
	.section	.gcc_except_table
.LLSDA4326:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4326-.LLSDACSB4326
.LLSDACSB4326:
	.uleb128 .LEHB14-.LFB4326
	.uleb128 .LEHE14-.LEHB14
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB15-.LFB4326
	.uleb128 .LEHE15-.LEHB15
	.uleb128 .L1037-.LFB4326
	.uleb128 0
	.uleb128 .LEHB16-.LFB4326
	.uleb128 .LEHE16-.LEHB16
	.uleb128 0
	.uleb128 0
.LLSDACSE4326:
	.text
	.size	_Z13WRITE_RESTARTv, .-_Z13WRITE_RESTARTv
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB4358:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE4358:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_,"axG",@progbits,_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_,comdat
	.weak	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	.type	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_, @function
_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_:
.LFB4702:
	.cfi_startproc
	endbr64
	cvtsi2sdl	%edi, %xmm1
	jmp	pow@PLT
	.cfi_endproc
.LFE4702:
	.size	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_, .-_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	.text
	.globl	_Z10REFLECT_1DRiiRd
	.type	_Z10REFLECT_1DRiiRd, @function
_Z10REFLECT_1DRiiRd:
.LFB4313:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rdi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$152, %rsp
	.cfi_def_cfa_offset 208
	movq	molecs(%rip), %r14
	movsd	.LC8(%rip), %xmm2
	movq	%rdx, 8(%rsp)
	movslq	(%rdi), %rdx
	movl	%esi, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	movq	8(%r14), %rax
	movslq	(%rax,%rdx,4), %rbx
	movq	geom(%rip), %rax
	cmpl	$1, 36(%rax)
	movl	%ebx, 88(%rsp)
	jne	.L1085
	movsd	96(%rax), %xmm7
	movl	24(%rax), %edi
	movq	8(%rsp), %rax
	movsd	%xmm7, (%rsp)
	movsd	(%rax), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	(%rsp), %xmm1
	movsd	.LC8(%rip), %xmm2
	mulsd	%xmm0, %xmm1
	addsd	%xmm2, %xmm1
	jmp	.L1052
.L1085:
	movaps	%xmm2, %xmm1
.L1052:
	movq	48(%r14), %r8
	movslq	0(%r13), %r11
	leaq	0(,%rbx,8), %rcx
	movq	output(%rip), %rax
	movslq	16(%rsp), %r12
	movq	%rcx, (%rsp)
	movq	8(%r8), %rcx
	leaq	0(,%r11,8), %rsi
	movq	(%rsp), %r9
	movq	%rax, 40(%rsp)
	movq	192(%rax), %rax
	leaq	0(,%r12,8), %rbp
	addq	%rsi, %rcx
	movq	(%rax), %rdx
	movq	%rcx, 24(%rsp)
	movq	(%rdx,%r12,8), %rdx
	movq	(%rdx,%rbx,8), %rdx
	addsd	8(%rdx), %xmm2
	movsd	%xmm2, 8(%rdx)
	movq	8(%rax), %rdx
	movq	(%rdx,%r12,8), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movsd	8(%rdx), %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 8(%rdx)
	movq	16(%rax), %rdx
	movq	(%rdx,%r12,8), %rdx
	movq	(%rdx,%rbx,8), %rdi
	movq	gas(%rip), %rdx
	movq	320(%rdx), %rcx
	addq	40(%rcx), %r9
	movq	%r9, %rcx
	movq	24(%rsp), %r9
	movsd	(%r9), %xmm0
	mulsd	%xmm1, %xmm0
	mulsd	(%rcx), %xmm0
	addsd	8(%rdi), %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	24(%rax), %rdi
	movq	(%rdi,%r12,8), %rdi
	movq	16(%r8), %r9
	movsd	.LC7(%rip), %xmm7
	addq	%rsi, %r9
	movq	(%rdi,%rbx,8), %rdi
	addq	24(%r8), %rsi
	movsd	(%r9), %xmm0
	mulsd	%xmm1, %xmm7
	subsd	240(%rdx,%r12,8), %xmm0
	mulsd	%xmm1, %xmm0
	mulsd	(%rcx), %xmm0
	addsd	8(%rdi), %xmm0
	movsd	%xmm7, 48(%rsp)
	movsd	%xmm0, 8(%rdi)
	movq	32(%rax), %rdi
	movsd	(%rsi), %xmm0
	movq	(%rdi,%r12,8), %rdi
	mulsd	%xmm1, %xmm0
	mulsd	(%rcx), %xmm0
	movq	(%rdi,%rbx,8), %rdi
	addsd	8(%rdi), %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	24(%rsp), %rdi
	movsd	(%r9), %xmm2
	subsd	240(%rdx,%r12,8), %xmm2
	movsd	(%rsi), %xmm3
	movsd	(%rdi), %xmm0
	movq	40(%rax), %rdi
	mulsd	%xmm3, %xmm3
	mulsd	%xmm2, %xmm2
	movq	(%rdi,%r12,8), %rdi
	mulsd	%xmm0, %xmm0
	movq	(%rdi,%rbx,8), %rdi
	addsd	%xmm2, %xmm0
	movsd	(%rcx), %xmm2
	mulsd	%xmm7, %xmm2
	addsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	8(%rdi), %xmm0
	movsd	%xmm0, 8(%rdi)
	leaq	0(,%rbx,4), %rdi
	movq	%rdi, 64(%rsp)
	movq	488(%rdx), %rdi
	movq	8(%rdi), %rdi
	movl	(%rdi,%rbx,4), %edi
	movl	%edi, 32(%rsp)
	testl	%edi, %edi
	jle	.L1053
	movq	48(%rax), %rdi
	movq	64(%r14), %r8
	movq	(%rdi,%r12,8), %rdi
	movsd	(%r8,%r11,8), %xmm0
	movq	(%rdi,%rbx,8), %rdi
	mulsd	%xmm1, %xmm0
	addsd	8(%rdi), %xmm0
	movsd	%xmm0, 8(%rdi)
.L1053:
	cmpl	$1, 452(%rdx)
	jle	.L1054
	movq	64(%rax), %rdi
	movq	72(%r14), %r8
	movq	(%rdi,%r12,8), %rdi
	movsd	(%r8,%r11,8), %xmm0
	movq	(%rdi,%rbx,8), %rdi
	mulsd	%xmm1, %xmm0
	addsd	8(%rdi), %xmm0
	movsd	%xmm0, 8(%rdi)
.L1054:
	cmpl	$0, 428(%rdx)
	jle	.L1056
	movq	472(%rdx), %rdi
	movl	(%rdi,%rbx,4), %edi
	testl	%edi, %edi
	jle	.L1056
	movl	$1, 92(%rsp)
	leaq	0(,%r11,4), %r8
	movsd	.LC45(%rip), %xmm2
	xorl	%r10d, %r10d
	movq	%r8, 72(%rsp)
	xorl	%r8d, %r8d
.L1058:
	incq	%r8
	cmpl	%r8d, %edi
	jl	.L1095
	movq	56(%rax), %r10
	movq	(%rsp), %r15
	movq	(%r10,%rbp), %r10
	movq	(%r10,%r15), %r15
	movq	72(%rsp), %r10
	movq	%r15, 56(%rsp)
	movq	32(%r14), %r15
	movq	(%r15,%r8,8), %r15
	cvtsi2sdl	(%r15,%r10), %xmm0
	movq	360(%rdx), %r15
	movq	(%rsp), %r10
	movq	8(%r15), %r15
	mulsd	%xmm1, %xmm0
	movq	(%r15,%r8,8), %r15
	mulsd	%xmm2, %xmm0
	mulsd	(%r15,%r10), %xmm0
	movq	56(%rsp), %r15
	movb	$1, %r10b
	addsd	8(%r15), %xmm0
	movsd	%xmm0, 8(%r15)
	jmp	.L1058
.L1095:
	testb	%r10b, %r10b
	je	.L1056
	incl	%edi
	movl	%edi, 92(%rsp)
.L1056:
	movq	24(%rsp), %rax
	movaps	%xmm1, %xmm2
	movsd	(%r9), %xmm0
	movsd	(%rsi), %xmm5
	movsd	(%rax), %xmm4
	movq	40(%rsp), %rax
	mulsd	%xmm0, %xmm0
	mulsd	%xmm5, %xmm5
	movaps	%xmm4, %xmm3
	andps	.LC256(%rip), %xmm3
	movq	152(%rax), %rax
	mulsd	%xmm4, %xmm4
	divsd	%xmm3, %xmm2
	movq	8(%rax), %rdx
	addq	%rbp, %rdx
	addsd	%xmm4, %xmm0
	addsd	%xmm5, %xmm0
	addsd	(%rdx), %xmm2
	movsd	%xmm2, (%rdx)
	movsd	(%rcx), %xmm2
	movq	16(%rax), %rdx
	mulsd	%xmm1, %xmm2
	addq	%rbp, %rdx
	divsd	%xmm3, %xmm2
	addsd	(%rdx), %xmm2
	movsd	%xmm2, (%rdx)
	movsd	(%rcx), %xmm2
	movq	24(%rax), %rdx
	mulsd	%xmm1, %xmm2
	addq	%rbp, %rdx
	mulsd	(%r9), %xmm2
	divsd	%xmm3, %xmm2
	addsd	(%rdx), %xmm2
	movsd	%xmm2, (%rdx)
	movsd	(%rcx), %xmm2
	movq	32(%rax), %rdx
	mulsd	%xmm1, %xmm2
	addq	%rbp, %rdx
	cmpl	$0, 32(%rsp)
	mulsd	%xmm2, %xmm0
	divsd	%xmm3, %xmm0
	addsd	(%rdx), %xmm0
	movsd	%xmm0, (%rdx)
	jle	.L1060
	movq	64(%r14), %rcx
	movq	40(%rax), %rdx
	movsd	(%rcx,%r11,8), %xmm0
	addq	%rbp, %rdx
	movq	48(%rax), %rcx
	mulsd	%xmm1, %xmm0
	addq	%rbp, %rcx
	divsd	%xmm3, %xmm0
	addsd	(%rdx), %xmm0
	movsd	%xmm0, (%rdx)
	cvtsi2sdl	32(%rsp), %xmm0
	mulsd	%xmm1, %xmm0
	divsd	%xmm3, %xmm0
	addsd	(%rcx), %xmm0
	movsd	%xmm0, (%rcx)
.L1060:
	movsd	%xmm1, 24(%rsp)
	call	rand@PLT
	movslq	16(%rsp), %r14
	movsd	24(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movsd	216(%rax,%r14,8), %xmm2
	comisd	%xmm0, %xmm2
	jbe	.L1093
	movq	geom(%rip), %rax
	movq	molecs(%rip), %rdx
	movq	128(%rax), %rcx
	movq	48(%rdx), %rdx
	addq	%rbp, %rcx
	movq	8(%rdx), %rdx
	movsd	(%rcx), %xmm0
	movq	%rcx, %rax
	movq	8(%rsp), %rcx
	addsd	%xmm0, %xmm0
	subsd	(%rcx), %xmm0
	movsd	%xmm0, (%rcx)
	movslq	0(%r13), %rcx
	leaq	(%rdx,%rcx,8), %rdx
	movq	8(%rsp), %rcx
	movsd	(%rdx), %xmm2
	movaps	%xmm2, %xmm0
	xorps	.LC43(%rip), %xmm0
	movsd	%xmm0, (%rdx)
	movsd	(%rcx), %xmm0
	subsd	(%rax), %xmm0
	xorps	.LC43(%rip), %xmm0
	divsd	%xmm2, %xmm0
	jmp	.L1063
.L1093:
	movsd	.LC292(%rip), %xmm0
	movsd	%xmm1, 72(%rsp)
	mulsd	192(%rax,%r14,8), %xmm0
	movq	320(%rax), %rax
	movq	40(%rax), %rax
	divsd	(%rax,%rbx,8), %xmm0
	call	sqrt@PLT
	movq	molecs(%rip), %rdx
	movq	geom(%rip), %rax
	movsd	%xmm0, 96(%rsp)
	movq	128(%rax), %rax
	movq	40(%rdx), %rcx
	movsd	%xmm0, 56(%rsp)
	movq	48(%rdx), %rdx
	movsd	(%rax,%r12,8), %xmm7
	movq	8(%rcx), %rcx
	movq	8(%rdx), %rdx
	movslq	0(%r13), %rax
	movsd	%xmm7, 24(%rsp)
	movsd	(%rcx,%rax,8), %xmm6
	movsd	(%rdx,%rax,8), %xmm7
	movsd	%xmm6, 32(%rsp)
	movsd	%xmm7, 40(%rsp)
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	call	log@PLT
	xorps	.LC43(%rip), %xmm0
	call	sqrt@PLT
	movq	molecs(%rip), %rax
	movslq	0(%r13), %rdi
	movsd	56(%rsp), %xmm2
	movsd	72(%rsp), %xmm1
	movq	48(%rax), %rax
	salq	$3, %rdi
	mulsd	%xmm2, %xmm0
	movq	8(%rax), %rdx
	addq	%rdi, %rdx
	cmpl	$2, 16(%rsp)
	jne	.L1064
	xorps	.LC43(%rip), %xmm0
.L1064:
	movq	24(%rax), %rsi
	movsd	%xmm0, (%rdx)
	leaq	96(%rsp), %rdx
	movsd	%xmm1, 56(%rsp)
	addq	%rdi, %rsi
	addq	16(%rax), %rdi
	call	_Z5RVELCRdS_S_
	movq	molecs(%rip), %rsi
	movslq	0(%r13), %rdx
	movq	gas(%rip), %rcx
	movsd	56(%rsp), %xmm1
	movq	48(%rsi), %rax
	salq	$3, %rdx
	movq	16(%rax), %rdi
	movslq	16(%rsp), %rax
	addq	%rdx, %rdi
	movsd	(%rdi), %xmm0
	addsd	240(%rcx,%rax,8), %xmm0
	movq	488(%rcx), %rax
	movq	8(%rax), %rax
	movsd	%xmm0, (%rdi)
	cmpl	$0, (%rax,%rbx,4)
	jle	.L1065
	addq	64(%rsi), %rdx
	leaq	88(%rsp), %rdi
	movsd	%xmm1, 16(%rsp)
	leaq	192(%rcx,%rbp), %rsi
	call	_Z4SROTRiRdS0_
	movsd	16(%rsp), %xmm1
.L1065:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jg	.L1066
.L1071:
	movq	gas(%rip), %rax
	cmpl	$1, 452(%rax)
	jle	.L1068
	movq	molecs(%rip), %rdx
	movslq	0(%r13), %rcx
	leaq	88(%rsp), %rdi
	leaq	192(%rax,%rbp), %rsi
	movsd	%xmm1, 16(%rsp)
	movq	72(%rdx), %rdx
	leaq	(%rdx,%rcx,8), %rdx
	call	_Z4SELERiRdS0_
	movsd	16(%rsp), %xmm1
	jmp	.L1068
.L1066:
	leaq	92(%rsp), %rax
	leaq	192(%rbp), %r8
	movl	$1, %r15d
	movq	%rax, 16(%rsp)
.L1069:
	movq	gas(%rip), %rsi
	movslq	0(%r13), %rcx
	movl	%r15d, 92(%rsp)
	movq	64(%rsp), %rax
	movq	molecs(%rip), %rdi
	movq	472(%rsi), %rdx
	cmpl	%r15d, (%rdx,%rax)
	jl	.L1071
	movq	32(%rdi), %rdi
	movslq	%r15d, %rdx
	addq	%r8, %rsi
	movq	%r8, 56(%rsp)
	movsd	%xmm1, 72(%rsp)
	incl	%r15d
	movq	(%rdi,%rdx,8), %rdx
	leaq	88(%rsp), %rdi
	leaq	(%rdx,%rcx,4), %rdx
	movq	16(%rsp), %rcx
	call	_Z4SVIBRiRdS_S_
	movsd	72(%rsp), %xmm1
	movq	56(%rsp), %r8
	jmp	.L1069
.L1068:
	movsd	24(%rsp), %xmm0
	subsd	32(%rsp), %xmm0
	divsd	40(%rsp), %xmm0
.L1063:
	movq	output(%rip), %rax
	movq	molecs(%rip), %r8
	movslq	0(%r13), %r13
	movq	gas(%rip), %rdx
	movq	192(%rax), %rsi
	movq	48(%r8), %r10
	movq	%rax, 24(%rsp)
	movq	320(%rdx), %rcx
	movq	(%rsp), %r11
	movq	16(%rsi), %rax
	movq	8(%r10), %r9
	addq	40(%rcx), %r11
	movq	(%rax,%r12,8), %rax
	movq	%r11, %rcx
	movq	(%rax,%rbx,8), %rdi
	leaq	0(,%r13,8), %rax
	addq	%rax, %r9
	movsd	(%r9), %xmm3
	movsd	16(%rdi), %xmm2
	mulsd	%xmm1, %xmm3
	mulsd	(%r11), %xmm3
	subsd	%xmm3, %xmm2
	movsd	%xmm2, 16(%rdi)
	movq	24(%rsi), %rdi
	movq	(%rdi,%r12,8), %rdi
	movq	(%rdi,%rbx,8), %r11
	movq	16(%r10), %rdi
	addq	%rax, %rdi
	movsd	16(%r11), %xmm3
	addq	24(%r10), %rax
	movsd	(%rdi), %xmm2
	subsd	240(%rdx,%r14,8), %xmm2
	mulsd	%xmm1, %xmm2
	mulsd	(%rcx), %xmm2
	subsd	%xmm2, %xmm3
	movsd	%xmm3, 16(%r11)
	movq	32(%rsi), %r11
	movsd	(%rax), %xmm3
	movq	(%r11,%r12,8), %r11
	mulsd	%xmm1, %xmm3
	movq	(%r11,%rbx,8), %r11
	mulsd	(%rcx), %xmm3
	movq	40(%rsi), %r10
	movsd	16(%r11), %xmm2
	movq	(%r10,%r12,8), %r10
	subsd	%xmm3, %xmm2
	movq	(%r10,%rbx,8), %r10
	movsd	%xmm2, 16(%r11)
	movsd	(%rdi), %xmm3
	movsd	(%r9), %xmm2
	subsd	240(%rdx,%r14,8), %xmm3
	movsd	(%rax), %xmm4
	mulsd	%xmm2, %xmm2
	mulsd	%xmm4, %xmm4
	mulsd	%xmm3, %xmm3
	addsd	%xmm3, %xmm2
	movsd	48(%rsp), %xmm3
	mulsd	(%rcx), %xmm3
	addsd	%xmm4, %xmm2
	mulsd	%xmm3, %xmm2
	movsd	16(%r10), %xmm3
	subsd	%xmm2, %xmm3
	movsd	%xmm3, 16(%r10)
	movq	488(%rdx), %r10
	movq	8(%r10), %r10
	movl	(%r10,%rbx,4), %r14d
	movl	%r14d, 16(%rsp)
	testl	%r14d, %r14d
	jle	.L1072
	movq	64(%r8), %r11
	movq	48(%rsi), %r10
	movsd	(%r11,%r13,8), %xmm3
	movq	(%r10,%r12,8), %r10
	mulsd	%xmm1, %xmm3
	movq	(%r10,%rbx,8), %r10
	movsd	16(%r10), %xmm2
	subsd	%xmm3, %xmm2
	movsd	%xmm2, 16(%r10)
.L1072:
	cmpl	$1, 452(%rdx)
	jle	.L1073
	movq	72(%r8), %r11
	movq	64(%rsi), %r10
	movsd	(%r11,%r13,8), %xmm3
	movq	(%r10,%r12,8), %r10
	mulsd	%xmm1, %xmm3
	movq	(%r10,%rbx,8), %r10
	movsd	16(%r10), %xmm2
	subsd	%xmm3, %xmm2
	movsd	%xmm2, 16(%r10)
.L1073:
	cmpl	$0, 428(%rdx)
	jle	.L1075
	movq	472(%rdx), %r10
	movl	(%r10,%rbx,4), %r10d
	testl	%r10d, %r10d
	jle	.L1075
	movl	$1, 92(%rsp)
	leaq	0(,%r13,4), %rbx
	movsd	.LC45(%rip), %xmm4
	xorl	%r11d, %r11d
	movq	%rbx, 32(%rsp)
	xorl	%ebx, %ebx
.L1077:
	incq	%r11
	cmpl	%r11d, %r10d
	jl	.L1096
	movq	56(%rsi), %rbx
	movq	(%rsp), %r15
	movq	32(%rsp), %r14
	movq	(%rbx,%rbp), %rbx
	movq	(%rbx,%r15), %rbx
	movq	32(%r8), %r15
	movq	(%r15,%r11,8), %r15
	movsd	16(%rbx), %xmm3
	cvtsi2sdl	(%r15,%r14), %xmm2
	movq	360(%rdx), %r15
	movq	(%rsp), %r14
	movq	8(%r15), %r15
	mulsd	%xmm1, %xmm2
	movq	(%r15,%r11,8), %r15
	mulsd	%xmm4, %xmm2
	mulsd	(%r15,%r14), %xmm2
	subsd	%xmm2, %xmm3
	movsd	%xmm3, 16(%rbx)
	movb	$1, %bl
	jmp	.L1077
.L1096:
	testb	%bl, %bl
	je	.L1075
	incl	%r10d
	movl	%r10d, 92(%rsp)
.L1075:
	movsd	(%r9), %xmm2
	movaps	%xmm1, %xmm4
	movq	24(%rsp), %rbx
	movsd	(%rdi), %xmm5
	movsd	(%rax), %xmm6
	movaps	%xmm2, %xmm3
	andps	.LC256(%rip), %xmm3
	movq	152(%rbx), %rdx
	mulsd	%xmm2, %xmm2
	divsd	%xmm3, %xmm4
	movq	8(%rdx), %rsi
	mulsd	%xmm5, %xmm5
	mulsd	%xmm6, %xmm6
	addq	%rbp, %rsi
	addsd	%xmm5, %xmm2
	addsd	%xmm6, %xmm2
	addsd	(%rsi), %xmm4
	movsd	%xmm4, (%rsi)
	movsd	(%rcx), %xmm4
	movq	16(%rdx), %rsi
	mulsd	%xmm1, %xmm4
	addq	%rbp, %rsi
	divsd	%xmm3, %xmm4
	addsd	(%rsi), %xmm4
	movsd	%xmm4, (%rsi)
	movsd	(%rcx), %xmm4
	movq	24(%rdx), %rsi
	mulsd	%xmm1, %xmm4
	addq	%rbp, %rsi
	mulsd	(%rdi), %xmm4
	divsd	%xmm3, %xmm4
	addsd	(%rsi), %xmm4
	movsd	%xmm4, (%rsi)
	movsd	(%rcx), %xmm4
	movq	32(%rdx), %rsi
	mulsd	%xmm1, %xmm4
	addq	%rbp, %rsi
	cmpl	$0, 16(%rsp)
	mulsd	%xmm4, %xmm2
	divsd	%xmm3, %xmm2
	addsd	(%rsi), %xmm2
	movsd	%xmm2, (%rsi)
	jle	.L1079
	movq	64(%r8), %rsi
	movq	40(%rdx), %rcx
	movsd	(%rsi,%r13,8), %xmm2
	addq	%rbp, %rcx
	addq	48(%rdx), %rbp
	movsd	(%rcx), %xmm4
	divsd	%xmm3, %xmm2
	mulsd	%xmm1, %xmm4
	addsd	%xmm4, %xmm2
	movsd	%xmm2, (%rcx)
	cvtsi2sdl	16(%rsp), %xmm2
	mulsd	%xmm1, %xmm2
	divsd	%xmm3, %xmm2
	addsd	0(%rbp), %xmm2
	movsd	%xmm2, 0(%rbp)
.L1079:
	movsd	(%r9), %xmm2
	movq	geom(%rip), %rdx
	movq	$0x000000000, 128(%rsp)
	mulsd	%xmm0, %xmm2
	movq	128(%rdx), %rcx
	movl	24(%rdx), %edx
	movsd	(%rcx,%r12,8), %xmm1
	movsd	%xmm1, 104(%rsp)
	movsd	%xmm2, 112(%rsp)
	testl	%edx, %edx
	jle	.L1080
	movsd	(%rdi), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 120(%rsp)
	cmpl	$2, %edx
	jne	.L1081
	mulsd	(%rax), %xmm0
	movsd	%xmm0, 128(%rsp)
.L1081:
	leaq	104(%rsp), %r10
	leaq	128(%rsp), %rcx
	leaq	120(%rsp), %rdx
	leaq	112(%rsp), %rsi
	pushq	%rax
	.cfi_def_cfa_offset 216
	pushq	%rdi
	.cfi_def_cfa_offset 224
	movq	24(%rsp), %r8
	movq	%r10, %rdi
	call	_Z4AIFXRdS_S_S_S_S_S_S_
	popq	%rax
	.cfi_def_cfa_offset 216
	popq	%rdx
	.cfi_def_cfa_offset 208
	jmp	.L1051
.L1080:
	jne	.L1051
	addsd	%xmm2, %xmm1
	movq	8(%rsp), %rax
	movsd	%xmm1, (%rax)
.L1051:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1084
	call	__stack_chk_fail@PLT
.L1084:
	addq	$152, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4313:
	.size	_Z10REFLECT_1DRiiRd, .-_Z10REFLECT_1DRiiRd
	.section	.rodata.str1.1
.LC293:
	.string	"Sample \t"
.LC294:
	.string	"  Mols. at sample  "
.LC295:
	.string	"Illegal sampling cell  "
.LC296:
	.string	"  "
.LC297:
	.string	"  for MOL  "
.LC298:
	.string	"  at  "
	.text
	.globl	_Z11SAMPLE_FLOWv
	.type	_Z11SAMPLE_FLOWv, @function
_Z11SAMPLE_FLOWv:
.LFB4318:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC293(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movl	$1, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movl	$4, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movq	output(%rip), %rax
	incl	(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	molecs(%rip), %rax
	leaq	16+file_9(%rip), %rdi
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	leaq	.LC294(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1098:
	movq	molecs(%rip), %rbp
	cmpl	%r13d, 80(%rbp)
	jl	.L1116
	movq	geom(%rip), %r15
	movq	0(%rbp), %rax
	leaq	(%r12,%r12), %r14
	movsd	.LC8(%rip), %xmm1
	movq	56(%r15), %rdx
	movslq	(%rax,%r12), %rcx
	cmpl	$1, 36(%r15)
	movq	24(%rdx), %rdx
	movl	%ecx, 4(%rsp)
	movslq	(%rdx,%rcx,4), %rbx
	jne	.L1110
	movq	40(%rbp), %rdx
	movsd	96(%r15), %xmm3
	movl	24(%r15), %edi
	movq	8(%rdx), %rdx
	movsd	%xmm3, 8(%rsp)
	movsd	(%rdx,%r14), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	8(%rsp), %xmm0
	movsd	.LC8(%rip), %xmm1
	addsd	%xmm1, %xmm0
	jmp	.L1099
.L1110:
	movaps	%xmm1, %xmm0
.L1099:
	testl	%ebx, %ebx
	jle	.L1100
	cmpl	%ebx, (%r15)
	jl	.L1100
	movq	gas(%rip), %rdi
	movl	$1, %esi
	cmpl	$1, 424(%rdi)
	jle	.L1101
	movq	8(%rbp), %rax
	cvtsi2sdl	(%rax,%r12), %xmm2
	andps	.LC256(%rip), %xmm2
	cvttsd2sil	%xmm2, %esi
.L1101:
	movq	output(%rip), %rax
	movslq	%esi, %rsi
	leaq	0(,%rbx,8), %r9
	movq	168(%rax), %rdx
	leaq	0(,%rsi,8), %rax
	movq	(%rdx), %rcx
	movq	(%rcx,%rbx,8), %r8
	movq	8(%rdx), %rcx
	addq	%rax, %r8
	movq	(%rcx,%rbx,8), %r11
	xorl	%ecx, %ecx
	addsd	(%r8), %xmm1
	addq	%rax, %r11
	movsd	%xmm1, (%r8)
	movsd	(%r11), %xmm1
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%r11)
	movq	48(%rbp), %r11
.L1102:
	movq	8(%r11,%rcx), %r15
	movq	16(%rdx,%rcx), %r10
	addq	%r14, %r15
	movq	(%r10,%r9), %r8
	movq	40(%rdx,%rcx), %r10
	addq	$8, %rcx
	movsd	(%r15), %xmm1
	addq	%rax, %r8
	mulsd	%xmm0, %xmm1
	addsd	(%r8), %xmm1
	movsd	%xmm1, (%r8)
	movsd	(%r15), %xmm1
	movq	(%r10,%r9), %r8
	mulsd	%xmm1, %xmm1
	addq	%rax, %r8
	mulsd	%xmm0, %xmm1
	addsd	(%r8), %xmm1
	movsd	%xmm1, (%r8)
	cmpq	$24, %rcx
	jne	.L1102
	cmpl	$0, 432(%rdi)
	jle	.L1103
	movq	64(%rdx), %rcx
	movq	64(%rbp), %r10
	movq	(%rcx,%rbx,8), %r11
	movsd	(%r10,%r14), %xmm1
	mulsd	%xmm0, %xmm1
	addq	%rax, %r11
	addsd	(%r11), %xmm1
	movsd	%xmm1, (%r11)
.L1103:
	cmpl	$1, 452(%rdi)
	jle	.L1104
	movq	72(%rdx), %rcx
	movq	72(%rbp), %r10
	movq	(%rcx,%rbx,8), %r11
	movsd	(%r10,%r14), %xmm1
	mulsd	%xmm0, %xmm1
	addq	%rax, %r11
	addsd	(%r11), %xmm1
	movsd	%xmm1, (%r11)
.L1104:
	cmpl	$0, 428(%rdi)
	jle	.L1105
	movq	472(%rdi), %rcx
	movl	(%rcx,%rsi,4), %esi
	testl	%esi, %esi
	jle	.L1105
	movq	32(%rbp), %r10
	movl	$1, %ecx
.L1106:
	movq	(%r10,%rcx,8), %r8
	movq	72(%rdx,%rcx,8), %rdi
	incq	%rcx
	cvtsi2sdl	(%r8,%r12), %xmm1
	movq	(%rdi,%r9), %rbx
	addq	%rax, %rbx
	mulsd	%xmm0, %xmm1
	addsd	(%rbx), %xmm1
	movsd	%xmm1, (%rbx)
	cmpl	%ecx, %esi
	jge	.L1106
	jmp	.L1105
.L1100:
	leaq	.LC295(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	%ebx, %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC296(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	4(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC297(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	%r13d, %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC298(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r14), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	movq	%rax, %rdi
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
.L1105:
	.cfi_restore_state
	incl	%r13d
	addq	$4, %r12
	jmp	.L1098
.L1116:
	movq	calc(%rip), %rax
	movsd	.LC7(%rip), %xmm0
	mulsd	104(%rax), %xmm0
	movsd	80(%rax), %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L1097
	movsd	120(%rax), %xmm0
	addsd	184(%rax), %xmm0
	movsd	%xmm0, 120(%rax)
.L1097:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4318:
	.size	_Z11SAMPLE_FLOWv, .-_Z11SAMPLE_FLOWv
	.section	.rodata.str1.1
.LC303:
	.string	"Duplicate collision"
.LC308:
	.string	"THREE BODY PROBABILITY"
.LC309:
	.string	"-VE ECT "
.LC310:
	.string	"REACTION "
.LC311:
	.string	" BETWEEN "
.LC315:
	.string	"printf: "
	.text
	.globl	_Z10COLLISIONSv
	.type	_Z10COLLISIONSv, @function
_Z10COLLISIONSv:
.LFB4332:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$424, %rsp
	.cfi_def_cfa_offset 480
	movq	%fs:40, %rax
	movq	%rax, 408(%rsp)
	xorl	%eax, %eax
	call	clock@PLT
	leaq	_ZSt4cout(%rip), %rdi
	movq	%rax, start(%rip)
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$1, 216(%rsp)
.L1118:
	movl	216(%rsp), %eax
	movq	geom(%rip), %r14
	movl	%eax, 288(%rsp)
	cmpl	%eax, 4(%r14)
	jl	.L1490
	movq	144(%r14), %r13
	movslq	216(%rsp), %r12
	movq	calc(%rip), %rbx
	movq	40(%r13), %r15
	leaq	0(,%r12,8), %rax
	movsd	80(%rbx), %xmm0
	movq	%rax, 120(%rsp)
	addq	%rax, %r15
	movq	24(%r13), %rax
	movsd	(%r15), %xmm1
	movsd	(%rax,%r12,8), %xmm2
	subsd	%xmm1, %xmm0
	comisd	%xmm2, %xmm0
	jbe	.L1119
	movq	56(%r14), %rax
	leaq	0(,%r12,4), %rcx
	movq	%rcx, 32(%rsp)
	movq	16(%rax), %rbp
	addq	%rcx, %rbp
	cmpl	$1, 0(%rbp)
	jle	.L1119
	movq	24(%rax), %rax
	movl	(%rax,%r12,4), %eax
	movl	%eax, 220(%rsp)
	movl	$1, %eax
	salq	$32, %rax
	cmpq	%rax, 32(%r14)
	jne	.L1357
	movsd	96(%r14), %xmm7
	movl	24(%r14), %edi
	movsd	%xmm2, 16(%rsp)
	movq	136(%r14), %rdx
	movslq	220(%rsp), %rax
	movsd	%xmm1, 8(%rsp)
	movsd	%xmm7, (%rsp)
	movq	8(%rdx), %rdx
	movsd	(%rdx,%rax,8), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	(%rsp), %xmm0
	movsd	8(%rsp), %xmm1
	addsd	.LC8(%rip), %xmm0
	movsd	16(%rsp), %xmm2
	movsd	%xmm0, 160(%rsp)
	jmp	.L1121
.L1357:
	movq	.LC8(%rip), %rax
	movq	%rax, 160(%rsp)
.L1121:
	addsd	%xmm2, %xmm2
	movl	32(%r14), %eax
	movsd	%xmm2, 184(%rsp)
	addsd	%xmm2, %xmm1
	movsd	%xmm1, (%r15)
	testl	%eax, %eax
	jne	.L1122
	movq	8(%r13), %rax
	movsd	(%rax,%r12,8), %xmm7
	movsd	%xmm7, 144(%rsp)
	jmp	.L1123
.L1122:
	decl	%eax
	jne	.L1123
	movq	128(%r14), %rax
	movsd	88(%r14), %xmm2
	mulsd	80(%rbx), %xmm2
	movsd	96(%r14), %xmm6
	movsd	8(%rax), %xmm0
	addsd	16(%rax), %xmm2
	movl	12(%r14), %eax
	imull	8(%r14), %eax
	movsd	%xmm6, (%rsp)
	movl	24(%r14), %r14d
	subsd	%xmm0, %xmm2
	cvtsi2sdl	%eax, %xmm1
	movl	216(%rsp), %eax
	movl	%r14d, %edi
	decl	%eax
	cvtsi2sdl	%eax, %xmm3
	divsd	%xmm1, %xmm2
	mulsd	%xmm2, %xmm3
	addsd	%xmm0, %xmm3
	addsd	%xmm3, %xmm2
	movaps	%xmm3, %xmm0
	movsd	%xmm3, 16(%rsp)
	addsd	%xmm2, %xmm0
	mulsd	.LC7(%rip), %xmm0
	movsd	%xmm2, 8(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	(%rsp), %xmm0
	testl	%r14d, %r14d
	movsd	8(%rsp), %xmm2
	addsd	.LC8(%rip), %xmm0
	movsd	16(%rsp), %xmm3
	movsd	%xmm0, 160(%rsp)
	jne	.L1124
	subsd	%xmm3, %xmm2
	jmp	.L1482
.L1124:
	cmpl	$1, %r14d
	jne	.L1125
	mulsd	%xmm2, %xmm2
	mulsd	%xmm3, %xmm3
	subsd	%xmm3, %xmm2
	mulsd	.LC300(%rip), %xmm2
.L1482:
	movsd	%xmm2, 144(%rsp)
	jmp	.L1123
.L1125:
	movsd	%xmm3, (%rsp)
	cmpl	$2, %r14d
	jne	.L1123
	movsd	.LC51(%rip), %xmm1
	movaps	%xmm2, %xmm0
	call	pow@PLT
	movsd	(%rsp), %xmm3
	movsd	.LC51(%rip), %xmm1
	movq	%xmm0, %r14
	movaps	%xmm3, %xmm0
	call	pow@PLT
	movaps	%xmm0, %xmm1
	movq	%r14, %xmm0
	subsd	%xmm1, %xmm0
	mulsd	.LC301(%rip), %xmm0
	movsd	%xmm0, 144(%rsp)
.L1123:
	movl	0(%rbp), %edx
	movq	120(%rsp), %rax
	addq	16(%r13), %rax
	cvtsi2sdl	%edx, %xmm0
	mulsd	.LC7(%rip), %xmm0
	decl	%edx
	cvtsi2sdl	%edx, %xmm1
	movq	32(%r13), %rdx
	mulsd	%xmm1, %xmm0
	mulsd	160(%rsp), %xmm0
	mulsd	96(%rbx), %xmm0
	mulsd	(%rdx,%r12,8), %xmm0
	mulsd	184(%rsp), %xmm0
	divsd	144(%rsp), %xmm0
	addsd	(%rax), %xmm0
	movsd	%xmm0, 224(%rsp)
	cvttsd2sil	%xmm0, %ebx
	cvtsi2sdl	%ebx, %xmm1
	movl	%ebx, 232(%rsp)
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rax)
	testl	%ebx, %ebx
	jle	.L1119
	movl	$1, 236(%rsp)
.L1351:
	movq	geom(%rip), %rdx
	movq	32(%rsp), %rbx
	movq	56(%rdx), %rax
	movq	16(%rax), %rcx
	cmpl	$2, (%rcx,%rbx)
	jne	.L1127
	movq	8(%rax), %rax
	movq	molecs(%rip), %rcx
	movl	(%rax,%rbx), %eax
	movq	16(%rcx), %rsi
	incl	%eax
	cltq
	movl	(%rsi,%rax,4), %ebx
	movl	4(%rsi,%rax,4), %r12d
	movq	24(%rcx), %rax
	movslq	%ebx, %rsi
	movl	%ebx, 16(%rsp)
	cmpl	%r12d, (%rax,%rsi,4)
	jne	.L1128
	movq	144(%rdx), %rax
	movq	120(%rsp), %rbx
	addq	40(%rax), %rbx
	movsd	(%rbx), %xmm0
	movq	%rbx, %rax
	subsd	184(%rsp), %xmm0
	jmp	.L1487
.L1127:
	call	rand@PLT
	movq	32(%rsp), %rbx
	movq	calc(%rip), %rdx
	cvtsi2sdl	%eax, %xmm0
	movq	geom(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rdx)
	movq	56(%rax), %rcx
	movq	16(%rcx), %rax
	movq	8(%rcx), %rcx
	movl	(%rax,%rbx), %r14d
	cvtsi2sdl	%r14d, %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2sil	%xmm1, %eax
	addl	(%rcx,%rbx), %eax
	movq	molecs(%rip), %rcx
	incl	%eax
	cmpl	$0, 40(%rdx)
	movq	16(%rcx), %rcx
	cltq
	movslq	(%rcx,%rax,4), %rbx
	movl	%ebx, 16(%rsp)
	jne	.L1130
	salq	$2, %rbx
.L1458:
	call	rand@PLT
	movq	32(%rsp), %rcx
	movq	geom(%rip), %rdx
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	movq	32(%rsp), %r10
	divsd	.LC42(%rip), %xmm0
	movq	56(%rdx), %rdi
	movq	molecs(%rip), %rsi
	movsd	%xmm0, 152(%rax)
	movq	16(%rdi), %rax
	movq	8(%rdi), %rdi
	movl	(%rax,%rcx), %ecx
	cvtsi2sdl	%ecx, %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2sil	%xmm1, %eax
	addl	(%rdi,%r10), %eax
	movq	16(%rsi), %rdi
	incl	%eax
	cltq
	movl	(%rdi,%rax,4), %r12d
	movq	24(%rsi), %rax
	cmpl	%r12d, (%rax,%rbx)
	jne	.L1131
	testl	%ecx, %ecx
	jg	.L1458
	movq	144(%rdx), %rax
	movq	120(%rsp), %rbx
	movsd	184(%rsp), %xmm1
	divsd	224(%rsp), %xmm1
	addq	40(%rax), %rbx
	movsd	(%rbx), %xmm0
	movq	%rbx, %rax
	subsd	%xmm1, %xmm0
.L1487:
	movsd	%xmm0, (%rax)
	jmp	.L1129
.L1131:
	cmpl	%r12d, 16(%rsp)
	je	.L1458
	jmp	.L1128
.L1130:
	movl	$30, %ebp
	movsd	.LC299(%rip), %xmm1
	leaq	0(,%rbx,4), %r15
	movl	$1, %r13d
	cmpl	%ebp, %r14d
	cmovle	%r14d, %ebp
	salq	$3, %rbx
	xorl	%r12d, %r12d
.L1135:
	cmpl	%r13d, %ebp
	jl	.L1128
	cmpl	$29, %r14d
	jg	.L1136
	movq	geom(%rip), %rax
	movq	32(%rsp), %rdi
	movq	56(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%rdi), %ecx
	addl	%r13d, %ecx
	movl	%ecx, %eax
	jmp	.L1137
.L1136:
	movsd	%xmm1, (%rsp)
	call	rand@PLT
	movq	32(%rsp), %rcx
	movsd	(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	geom(%rip), %rax
	movq	56(%rax), %rdx
	movq	16(%rdx), %rax
	movq	8(%rdx), %rdx
	cvtsi2sdl	(%rax,%rcx), %xmm2
	mulsd	%xmm0, %xmm2
	cvttsd2sil	%xmm2, %eax
	addl	(%rdx,%rcx), %eax
	incl	%eax
.L1137:
	movq	molecs(%rip), %rdx
	cltq
	movq	16(%rdx), %rcx
	movl	(%rcx,%rax,4), %eax
	cmpl	%eax, 16(%rsp)
	je	.L1138
	movq	24(%rdx), %rcx
	cmpl	%eax, (%rcx,%r15)
	je	.L1138
	movq	40(%rdx), %rdx
	movq	8(%rdx), %rcx
	movslq	%eax, %rdx
	movsd	(%rcx,%rbx), %xmm0
	subsd	(%rcx,%rdx,8), %xmm0
	andps	.LC256(%rip), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1138
	movq	geom(%rip), %rdx
	movsd	.LC302(%rip), %xmm2
	mulsd	72(%rdx), %xmm2
	movaps	%xmm2, %xmm3
	ucomisd	%xmm2, %xmm0
	cmpnltsd	%xmm0, %xmm3
	cmova	%eax, %r12d
	andps	%xmm3, %xmm1
	andnps	%xmm0, %xmm3
	orps	%xmm3, %xmm1
.L1138:
	incl	%r13d
	jmp	.L1135
.L1128:
	movslq	16(%rsp), %rax
	movq	molecs(%rip), %rbp
	movq	%rax, (%rsp)
	salq	$3, %rax
	movq	48(%rbp), %rcx
	movq	%rax, 64(%rsp)
	movslq	%r12d, %rax
	movq	%rax, 40(%rsp)
	salq	$3, %rax
	movq	%rax, 80(%rsp)
	movl	$8, %eax
.L1141:
	movq	(%rcx,%rax), %rdx
	movq	64(%rsp), %rbx
	movsd	(%rdx,%rbx), %xmm0
	movq	80(%rsp), %rbx
	subsd	(%rdx,%rbx), %xmm0
	movsd	%xmm0, 312(%rsp,%rax)
	addq	$8, %rax
	cmpq	$32, %rax
	jne	.L1141
	movsd	328(%rsp), %xmm6
	movsd	320(%rsp), %xmm7
	movsd	%xmm7, 8(%rsp)
	movaps	%xmm6, %xmm7
	movsd	8(%rsp), %xmm0
	mulsd	%xmm6, %xmm7
	movsd	%xmm6, 48(%rsp)
	mulsd	%xmm0, %xmm0
	movsd	%xmm7, 104(%rsp)
	addsd	104(%rsp), %xmm0
	movsd	336(%rsp), %xmm7
	movsd	%xmm7, 88(%rsp)
	mulsd	%xmm7, %xmm7
	addsd	%xmm7, %xmm0
	movsd	%xmm7, 112(%rsp)
	movsd	%xmm0, 24(%rsp)
	call	sqrt@PLT
	movq	gas(%rip), %rbx
	movq	geom(%rip), %r14
	movsd	%xmm0, 56(%rsp)
	movl	424(%rbx), %eax
	movl	%eax, 96(%rsp)
	decl	%eax
	jne	.L1142
	movq	320(%rbx), %rax
	movsd	8(%rbx), %xmm6
	movsd	24(%rsp), %xmm2
	mulsd	(%rbx), %xmm2
	movq	24(%rax), %rdx
	movq	16(%rax), %rax
	mulsd	%xmm0, %xmm6
	movsd	.LC292(%rip), %xmm0
	mulsd	8(%rax), %xmm0
	movsd	8(%rdx), %xmm1
	subsd	.LC7(%rip), %xmm1
	movsd	%xmm6, 72(%rsp)
	divsd	%xmm2, %xmm0
	call	pow@PLT
	movq	144(%r14), %rax
	mulsd	72(%rsp), %xmm0
	mulsd	16(%rbx), %xmm0
	movq	120(%rsp), %rbx
	addq	32(%rax), %rbx
	comisd	(%rbx), %xmm0
	jbe	.L1143
	movsd	%xmm0, (%rbx)
.L1143:
	movsd	%xmm0, 72(%rsp)
	call	rand@PLT
	movq	120(%rsp), %rbx
	movsd	72(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rax)
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	divsd	(%rax,%rbx), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L1129
	movq	molecs(%rip), %rax
	movq	(%rsp), %rbx
	movq	24(%rax), %rax
	cmpl	%r12d, (%rax,%rbx,4)
	jne	.L1146
	movq	40(%rsp), %rbx
	movl	16(%rsp), %ecx
	cmpl	%ecx, (%rax,%rbx,4)
	jne	.L1146
	leaq	.LC303(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1146:
	movq	calc(%rip), %rax
	movsd	.LC8(%rip), %xmm0
	movslq	220(%rsp), %rbx
	movq	(%rsp), %rdi
	movsd	224(%rax), %xmm1
	salq	$3, %rbx
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 224(%rax)
	movq	328(%rax), %rax
	movsd	.LC50(%rip), %xmm1
	movq	8(%rax), %rax
	addsd	8(%rax), %xmm1
	movsd	%xmm1, 8(%rax)
	movq	output(%rip), %rax
	movq	64(%rax), %rdx
	movq	80(%rax), %rcx
	addq	%rbx, %rdx
	addq	%rbx, %rcx
	addsd	(%rdx), %xmm0
	movsd	%xmm0, (%rdx)
	movq	72(%rax), %rdx
	movq	%rcx, %rax
	movq	40(%rsp), %rcx
	movsd	160(%rsp), %xmm0
	addq	%rbx, %rdx
	addsd	(%rdx), %xmm0
	movsd	%xmm0, (%rdx)
	movq	molecs(%rip), %rdx
	movq	40(%rdx), %rdx
	movq	8(%rdx), %rdx
	movsd	(%rdx,%rdi,8), %xmm0
	subsd	(%rdx,%rcx,8), %xmm0
	andps	.LC256(%rip), %xmm0
	addsd	(%rax), %xmm0
	movsd	%xmm0, (%rax)
	movq	gas(%rip), %rax
	movq	488(%rax), %rdx
	movq	8(%rdx), %rdx
	movsd	56(%rsp), %xmm7
	cmpl	$0, 4(%rdx)
	movsd	%xmm7, 72(%rsp)
	jle	.L1147
	movsd	.LC7(%rip), %xmm0
	mulsd	(%rax), %xmm0
	movsd	24(%rsp), %xmm2
	movslq	16(%rsp), %r15
	mulsd	%xmm0, %xmm2
.L1166:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.L1148
	movq	472(%rax), %rax
	cmpl	$0, 4(%rax)
	jle	.L1148
	movslq	%r15d, %r13
	movl	$1, %ebp
	leaq	0(,%r13,4), %rax
	movl	$8, %r13d
	movq	%rax, 72(%rsp)
.L1149:
	movq	gas(%rip), %rcx
	movl	%ebp, 292(%rsp)
	movq	472(%rcx), %rax
	cmpl	%ebp, 4(%rax)
	jl	.L1148
	movq	360(%rcx), %rax
	movq	72(%rsp), %rdi
	movq	8(%rax), %rsi
	movq	(%rsi,%r13), %rsi
	movsd	8(%rsi), %xmm1
	movq	molecs(%rip), %rsi
	movq	32(%rsi), %rsi
	movq	(%rsi,%r13), %rsi
	cvtsi2sdl	(%rsi,%rdi), %xmm0
	mulsd	.LC45(%rip), %xmm0
	movq	24(%rax), %rsi
	movq	(%rsi,%r13), %rsi
	mulsd	%xmm1, %xmm0
	movsd	8(%rsi), %xmm3
	mulsd	.LC45(%rip), %xmm1
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 24(%rsp)
	divsd	%xmm1, %xmm0
	xorps	%xmm1, %xmm1
	comisd	%xmm1, %xmm3
	jbe	.L1470
	movq	32(%rax), %rax
	cvttsd2sil	%xmm0, %r14d
	movsd	%xmm2, 200(%rsp)
	movsd	%xmm3, 192(%rsp)
	movq	(%rax,%r13), %rax
	movsd	8(%rax), %xmm0
	movq	output(%rip), %rax
	movaps	%xmm0, %xmm7
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	divsd	(%rax,%rbx), %xmm0
	movq	352(%rcx), %rax
	movsd	%xmm0, 136(%rsp)
	movq	24(%rax), %rax
	movq	8(%rax), %rax
	divsd	%xmm3, %xmm7
	movsd	8(%rax), %xmm6
	movsd	%xmm6, 176(%rsp)
	movaps	%xmm6, %xmm1
	movsd	%xmm7, 128(%rsp)
	call	pow@PLT
	movsd	.LC304(%rip), %xmm1
	movsd	%xmm0, 152(%rsp)
	movsd	136(%rsp), %xmm0
	call	pow@PLT
	movsd	.LC305(%rip), %xmm1
	movsd	%xmm0, 168(%rsp)
	movsd	128(%rsp), %xmm0
	call	pow@PLT
	movsd	176(%rsp), %xmm6
	xorps	.LC43(%rip), %xmm6
	movsd	%xmm0, 136(%rsp)
	movsd	128(%rsp), %xmm0
	movaps	%xmm6, %xmm1
	call	pow@PLT
	movsd	.LC8(%rip), %xmm6
	movsd	168(%rsp), %xmm5
	movsd	136(%rsp), %xmm4
	movsd	192(%rsp), %xmm3
	subsd	%xmm6, %xmm5
	subsd	%xmm6, %xmm4
	mulsd	%xmm3, %xmm0
	movaps	%xmm5, %xmm1
	divsd	%xmm4, %xmm1
	call	pow@PLT
	movsd	152(%rsp), %xmm1
	movsd	200(%rsp), %xmm2
	mulsd	%xmm0, %xmm1
	jmp	.L1152
.L1470:
	addsd	.LC8(%rip), %xmm0
	movq	16(%rax), %rax
	movq	(%rax,%r13), %rax
	cvttsd2sil	%xmm0, %r14d
	movsd	8(%rax), %xmm1
.L1152:
	movsd	%xmm1, 136(%rsp)
	movsd	%xmm2, 128(%rsp)
	call	rand@PLT
	movsd	.LC8(%rip), %xmm3
	movsd	136(%rsp), %xmm1
	movsd	128(%rsp), %xmm2
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	divsd	%xmm1, %xmm3
	movsd	%xmm0, 152(%rax)
	comisd	%xmm0, %xmm3
	jbe	.L1154
.L1157:
	call	rand@PLT
	cvtsi2sdl	%r14d, %xmm0
	movsd	24(%rsp), %xmm5
	addsd	.LC306(%rip), %xmm0
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	movq	molecs(%rip), %rcx
	divsd	.LC42(%rip), %xmm1
	movq	72(%rsp), %rdi
	mulsd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	movq	32(%rcx), %rcx
	movq	(%rcx,%r13), %rcx
	cvttsd2sil	%xmm0, %eax
	cvtsi2sdl	%eax, %xmm3
	mulsd	.LC45(%rip), %xmm3
	movl	%eax, (%rcx,%rdi)
	comisd	%xmm3, %xmm5
	jbe	.L1157
	movq	gas(%rip), %rax
	movaps	%xmm3, %xmm1
	movsd	.LC8(%rip), %xmm0
	divsd	24(%rsp), %xmm1
	movsd	%xmm3, 136(%rsp)
	movq	352(%rax), %rax
	subsd	%xmm1, %xmm0
	movsd	.LC70(%rip), %xmm1
	movq	24(%rax), %rax
	movq	(%rax,%r13), %rax
	subsd	8(%rax), %xmm1
	call	pow@PLT
	movsd	%xmm0, 128(%rsp)
	call	rand@PLT
	movsd	128(%rsp), %xmm0
	movsd	136(%rsp), %xmm3
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	comisd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	jbe	.L1157
	movsd	24(%rsp), %xmm2
	subsd	%xmm3, %xmm2
.L1154:
	incl	%ebp
	addq	$8, %r13
	jmp	.L1149
.L1148:
	movq	gas(%rip), %rax
	movq	488(%rax), %rdx
	movq	8(%rdx), %rcx
	cmpl	$0, 4(%rcx)
	jle	.L1163
	movq	328(%rax), %rax
	movq	16(%rdx), %rdx
	movsd	.LC8(%rip), %xmm3
	movq	8(%rax), %rcx
	cmpl	$0, 4(%rdx)
	movsd	8(%rcx), %xmm4
	jne	.L1160
	movaps	%xmm3, %xmm1
	divsd	%xmm4, %xmm1
	jmp	.L1161
.L1160:
	movq	output(%rip), %rdx
	movq	136(%rdx), %rdx
	movq	64(%rdx), %rdx
	movsd	(%rdx,%rbx), %xmm1
	movq	16(%rax), %rdx
	movq	24(%rax), %rax
	movsd	8(%rdx), %xmm0
	mulsd	%xmm1, %xmm0
	mulsd	%xmm1, %xmm1
	mulsd	8(%rax), %xmm1
	addsd	%xmm4, %xmm0
	addsd	%xmm1, %xmm0
	movaps	%xmm3, %xmm1
	divsd	%xmm0, %xmm1
.L1161:
	movsd	%xmm2, 72(%rsp)
	movsd	%xmm1, 24(%rsp)
	call	rand@PLT
	movsd	24(%rsp), %xmm1
	movsd	72(%rsp), %xmm2
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	comisd	%xmm0, %xmm1
	movsd	%xmm0, 152(%rax)
	jbe	.L1163
	movq	molecs(%rip), %rax
	movq	gas(%rip), %rdx
	movsd	.LC8(%rip), %xmm3
	movq	64(%rax), %rax
	addsd	(%rax,%r15,8), %xmm2
	movq	488(%rdx), %rax
	movq	8(%rax), %rax
	movq	%xmm2, %rbp
	movl	4(%rax), %eax
	cmpl	$2, %eax
	jne	.L1164
	call	rand@PLT
	movsd	.LC64(%rip), %xmm1
	movsd	.LC8(%rip), %xmm7
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	subsd	8(%rax), %xmm1
	divsd	%xmm1, %xmm7
	movaps	%xmm7, %xmm1
	call	pow@PLT
	movaps	%xmm0, %xmm1
	movsd	.LC8(%rip), %xmm0
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 304(%rsp)
	jmp	.L1165
.L1164:
	cvtsi2sdl	%eax, %xmm0
	mulsd	.LC7(%rip), %xmm0
	movq	320(%rdx), %rdx
	leaq	304(%rsp), %rdi
	movsd	.LC70(%rip), %xmm1
	movq	24(%rdx), %rdx
	subsd	8(%rdx), %xmm1
	subsd	%xmm3, %xmm0
	call	_Z3LBSddRd
.L1165:
	movq	%rbp, %xmm0
	movq	molecs(%rip), %rax
	movq	%rbp, %xmm2
	mulsd	304(%rsp), %xmm0
	movq	64(%rax), %rax
	subsd	%xmm0, %xmm2
	movsd	%xmm0, (%rax,%r15,8)
.L1163:
	cmpl	$2, 96(%rsp)
	je	.L1491
	movl	$2, 96(%rsp)
	movslq	%r12d, %r15
	jmp	.L1166
.L1491:
	movq	gas(%rip), %rax
	addsd	%xmm2, %xmm2
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	8(%rax), %rax
	divsd	8(%rax), %xmm2
	movaps	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	%xmm0, 72(%rsp)
.L1147:
	movq	molecs(%rip), %rax
	movsd	.LC7(%rip), %xmm1
	movq	48(%rax), %rcx
	movl	$8, %eax
.L1167:
	movq	(%rcx,%rax), %rdx
	movq	64(%rsp), %rbx
	movsd	(%rdx,%rbx), %xmm0
	movq	80(%rsp), %rbx
	addsd	(%rdx,%rbx), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 344(%rsp,%rax)
	addq	$8, %rax
	cmpq	$32, %rax
	jne	.L1167
	movq	gas(%rip), %rax
	movsd	.LC270(%rip), %xmm1
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm0
	subsd	.LC8(%rip), %xmm0
	andps	.LC256(%rip), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1471
	call	rand@PLT
	movsd	.LC8(%rip), %xmm0
	cvtsi2sdl	%eax, %xmm2
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm2
	movsd	%xmm2, 152(%rax)
	addsd	%xmm2, %xmm2
	subsd	.LC8(%rip), %xmm2
	movaps	%xmm2, %xmm1
	movsd	%xmm2, 24(%rsp)
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	call	sqrt@PLT
	movsd	24(%rsp), %xmm2
	mulsd	72(%rsp), %xmm2
	movsd	%xmm0, 8(%rsp)
	movsd	%xmm2, 384(%rsp)
	call	rand@PLT
	leaq	280(%rsp), %rdi
	leaq	272(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	8(%rsp), %xmm1
	movsd	272(%rsp), %xmm3
	mulsd	%xmm1, %xmm3
	mulsd	280(%rsp), %xmm1
	mulsd	72(%rsp), %xmm3
	mulsd	72(%rsp), %xmm1
	jmp	.L1170
.L1471:
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm1
	call	pow@PLT
	addsd	%xmm0, %xmm0
	movaps	%xmm0, %xmm1
	subsd	.LC8(%rip), %xmm1
	movsd	.LC8(%rip), %xmm0
	movsd	%xmm1, 136(%rsp)
	movaps	%xmm1, %xmm2
	mulsd	%xmm1, %xmm2
	subsd	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	%xmm0, 128(%rsp)
	call	rand@PLT
	leaq	280(%rsp), %rdi
	leaq	272(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	104(%rsp), %xmm0
	addsd	112(%rsp), %xmm0
	movsd	272(%rsp), %xmm8
	movsd	280(%rsp), %xmm7
	movsd	%xmm8, 96(%rsp)
	movsd	%xmm7, 24(%rsp)
	call	sqrt@PLT
	movsd	24(%rsp), %xmm7
	movsd	128(%rsp), %xmm6
	movaps	%xmm0, %xmm5
	movsd	8(%rsp), %xmm2
	movsd	136(%rsp), %xmm1
	movaps	%xmm6, %xmm0
	movsd	72(%rsp), %xmm4
	divsd	56(%rsp), %xmm4
	movsd	88(%rsp), %xmm3
	mulsd	%xmm7, %xmm0
	movsd	96(%rsp), %xmm8
	mulsd	%xmm1, %xmm2
	mulsd	48(%rsp), %xmm1
	mulsd	56(%rsp), %xmm3
	mulsd	%xmm5, %xmm0
	mulsd	%xmm8, %xmm3
	addsd	%xmm2, %xmm0
	movsd	48(%rsp), %xmm2
	mulsd	56(%rsp), %xmm2
	mulsd	%xmm4, %xmm0
	mulsd	%xmm8, %xmm2
	movsd	%xmm0, 384(%rsp)
	movaps	%xmm1, %xmm0
	movsd	8(%rsp), %xmm1
	mulsd	48(%rsp), %xmm1
	mulsd	%xmm7, %xmm1
	subsd	%xmm1, %xmm3
	movaps	%xmm2, %xmm1
	movsd	8(%rsp), %xmm2
	mulsd	88(%rsp), %xmm2
	mulsd	%xmm6, %xmm3
	mulsd	%xmm7, %xmm2
	divsd	%xmm5, %xmm3
	subsd	%xmm2, %xmm1
	mulsd	%xmm6, %xmm1
	divsd	%xmm5, %xmm1
	addsd	%xmm0, %xmm3
	mulsd	%xmm4, %xmm3
	addsd	%xmm0, %xmm1
	mulsd	%xmm4, %xmm1
.L1170:
	movq	molecs(%rip), %rdx
	movl	$8, %eax
	movsd	%xmm3, 392(%rsp)
	movsd	.LC7(%rip), %xmm3
	movsd	%xmm1, 400(%rsp)
	movq	48(%rdx), %rsi
.L1171:
	movsd	376(%rsp,%rax), %xmm1
	movq	(%rsi,%rax), %rcx
	movsd	344(%rsp,%rax), %xmm0
	movq	64(%rsp), %rbx
	addq	$8, %rax
	mulsd	%xmm3, %xmm1
	movaps	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	subsd	%xmm1, %xmm0
	movsd	%xmm2, (%rcx,%rbx)
	movq	80(%rsp), %rbx
	movsd	%xmm0, (%rcx,%rbx)
	cmpq	$32, %rax
	jne	.L1171
	movq	24(%rdx), %rax
	movq	(%rsp), %rbx
	movl	16(%rsp), %ecx
	movl	%r12d, (%rax,%rbx,4)
	movq	40(%rsp), %rbx
	movl	%ecx, (%rax,%rbx,4)
	jmp	.L1129
.L1142:
	movq	(%rsp), %rdi
	movq	8(%rbp), %rax
	movq	352(%rbx), %r15
	movsd	56(%rsp), %xmm6
	leaq	0(,%rdi,4), %rcx
	movsd	24(%rsp), %xmm2
	cvtsi2sdl	(%rax,%rdi,4), %xmm0
	movq	%rcx, 88(%rsp)
	andps	.LC256(%rip), %xmm0
	movq	40(%rsp), %rcx
	cvttsd2sil	%xmm0, %r13d
	leaq	0(,%rcx,4), %rdi
	cvtsi2sdl	(%rax,%rcx,4), %xmm0
	andps	.LC256(%rip), %xmm0
	movq	%rdi, 168(%rsp)
	cvttsd2sil	%xmm0, %eax
	movsd	.LC292(%rip), %xmm0
	movslq	%r13d, %rbp
	movl	%r13d, 296(%rsp)
	movl	%eax, 128(%rsp)
	movslq	128(%rsp), %rbx
	leaq	0(,%rbp,8), %rax
	movq	%rax, 48(%rsp)
	leaq	0(,%rbx,8), %rax
	movq	%rax, 96(%rsp)
	movq	16(%r15), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%rbx,8), %xmm6
	movq	24(%r15), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%rbx,8), %xmm1
	movq	40(%r15), %rax
	subsd	.LC7(%rip), %xmm1
	movsd	%xmm6, 8(%rsp)
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%rbx,8), %xmm0
	movq	8(%r15), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%rbx,8), %xmm2
	divsd	%xmm2, %xmm0
	call	pow@PLT
	movq	48(%r15), %rax
	mulsd	8(%rsp), %xmm0
	movq	120(%rsp), %rcx
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%rbx,8), %xmm0
	movq	144(%r14), %rax
	addq	32(%rax), %rcx
	comisd	(%rcx), %xmm0
	jbe	.L1172
	movsd	%xmm0, (%rcx)
.L1172:
	movsd	%xmm0, 8(%rsp)
	call	rand@PLT
	movq	120(%rsp), %rcx
	movsd	8(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rax)
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	divsd	(%rax,%rcx), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L1129
	movq	molecs(%rip), %rax
	movq	(%rsp), %rdi
	movq	(%rax), %rdx
	cmpl	$0, (%rdx,%rdi,4)
	jle	.L1129
	movq	40(%rsp), %rcx
	cmpl	$0, (%rdx,%rcx,4)
	jle	.L1129
	movq	24(%rax), %rax
	cmpl	%r12d, (%rax,%rdi,4)
	jne	.L1175
	movl	16(%rsp), %edi
	cmpl	%edi, (%rax,%rcx,4)
	jne	.L1175
	leaq	.LC303(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
.L1175:
	movq	calc(%rip), %rax
	movsd	.LC8(%rip), %xmm0
	movq	96(%rsp), %rdx
	movq	48(%rsp), %rdi
	addsd	224(%rax), %xmm0
	movslq	220(%rsp), %rcx
	movq	%rcx, 208(%rsp)
	leaq	0(,%rcx,8), %rcx
	movsd	%xmm0, 224(%rax)
	movq	328(%rax), %rax
	movsd	.LC8(%rip), %xmm0
	movq	%rcx, 72(%rsp)
	addq	(%rax,%rbp,8), %rdx
	addq	(%rax,%rbx,8), %rdi
	addsd	(%rdx), %xmm0
	movq	output(%rip), %rax
	movsd	%xmm0, (%rdx)
	movq	64(%rax), %rdx
	movsd	.LC8(%rip), %xmm0
	addsd	(%rdi), %xmm0
	addq	%rcx, %rdx
	movsd	%xmm0, (%rdi)
	movsd	.LC8(%rip), %xmm0
	addsd	(%rdx), %xmm0
	movq	72(%rsp), %rdi
	addq	80(%rax), %rdi
	movsd	%xmm0, (%rdx)
	movq	72(%rax), %rdx
	movq	%rdi, %rax
	movsd	160(%rsp), %xmm0
	addq	%rcx, %rdx
	movq	molecs(%rip), %rcx
	addsd	(%rdx), %xmm0
	movsd	%xmm0, (%rdx)
	movq	40(%rcx), %rdx
	movq	8(%rdx), %rdx
	movq	(%rsp), %rsi
	movq	40(%rsp), %rdi
	movsd	(%rdx,%rsi,8), %xmm0
	movq	48(%rcx), %rsi
	subsd	(%rdx,%rdi,8), %xmm0
	andps	.LC256(%rip), %xmm0
	addsd	(%rax), %xmm0
	movq	gas(%rip), %rdx
	movsd	%xmm0, (%rax)
	movq	352(%rdx), %rax
	movq	8(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%rbx,8), %xmm1
	movq	320(%rdx), %rax
	movq	40(%rax), %rax
	movaps	%xmm1, %xmm3
	movaps	%xmm1, %xmm7
	divsd	(%rax,%rbx,8), %xmm3
	divsd	(%rax,%rbp,8), %xmm7
	movl	$8, %eax
	movsd	%xmm7, 152(%rsp)
.L1176:
	movq	(%rsi,%rax), %rcx
	movq	64(%rsp), %rdi
	movsd	152(%rsp), %xmm2
	movsd	(%rcx,%rdi), %xmm0
	movq	80(%rsp), %rdi
	mulsd	%xmm3, %xmm0
	mulsd	(%rcx,%rdi), %xmm2
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 344(%rsp,%rax)
	addq	$8, %rax
	cmpq	$32, %rax
	jne	.L1176
	movq	488(%rdx), %rax
	leaq	0(,%rbp,4), %rcx
	movq	%rcx, 176(%rsp)
	movq	8(%rax), %rax
	cmpl	$0, (%rax,%rbp,4)
	jg	.L1177
	movsd	56(%rsp), %xmm7
	cmpl	$0, (%rax,%rbx,4)
	movsd	%xmm7, 112(%rsp)
	jle	.L1178
.L1177:
	mulsd	.LC7(%rip), %xmm1
	movsd	56(%rsp), %xmm5
	movl	$1, 80(%rsp)
	xorl	%r9d, %r9d
	mulsd	24(%rsp), %xmm1
	movl	16(%rsp), %eax
	movsd	%xmm5, 112(%rsp)
.L1179:
	movq	gas(%rip), %rcx
	cmpl	$0, 428(%rcx)
	jle	.L1180
	movq	472(%rcx), %rcx
	movslq	%r13d, %rdx
	leaq	0(,%rdx,4), %rsi
	cmpl	$0, (%rcx,%rdx,4)
	movq	%rsi, 104(%rsp)
	jle	.L1180
	movslq	%eax, %r13
	leaq	0(,%rdx,8), %r14
	movl	$1, %r15d
	leaq	0(,%r13,4), %rax
	movl	$8, %r13d
	movq	%rax, 8(%rsp)
.L1181:
	movq	gas(%rip), %rax
	movq	104(%rsp), %rcx
	movl	%r15d, 292(%rsp)
	movq	472(%rax), %rdi
	cmpl	%r15d, (%rdi,%rcx)
	jl	.L1180
	movq	molecs(%rip), %rdi
	movq	8(%rsp), %rcx
	movq	32(%rdi), %rdi
	movq	(%rdi,%r13), %rdi
	movl	(%rdi,%rcx), %edi
	testl	%edi, %edi
	js	.L1182
	testl	%r9d, %r9d
	jne	.L1182
	movq	360(%rax), %rax
	cvtsi2sdl	%edi, %xmm0
	mulsd	.LC45(%rip), %xmm0
	movaps	%xmm1, %xmm2
	movsd	.LC45(%rip), %xmm4
	movq	8(%rax), %r8
	movq	32(%rax), %rax
	movq	(%r8,%r13), %r8
	movq	(%rax,%r13), %rax
	movsd	(%r8,%r14), %xmm3
	mulsd	%xmm3, %xmm0
	mulsd	%xmm3, %xmm4
	addsd	%xmm0, %xmm2
	divsd	%xmm4, %xmm2
	cvttsd2sil	%xmm2, %edi
	movsd	(%rax,%r14), %xmm2
	divsd	%xmm3, %xmm2
	cvttsd2sil	%xmm2, %eax
	cmpl	%eax, %edi
	jle	.L1182
	movl	%r9d, 136(%rsp)
	movsd	%xmm0, 200(%rsp)
	movsd	%xmm1, 192(%rsp)
	call	rand@PLT
	movq	gas(%rip), %rdi
	movl	136(%rsp), %r9d
	movsd	192(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm2
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm2
	movsd	200(%rsp), %xmm0
	movq	360(%rdi), %r8
	movsd	%xmm2, 152(%rax)
	movq	40(%r8), %rax
	movq	(%rax,%r13), %rax
	movsd	(%rax,%r14), %xmm3
	comisd	%xmm2, %xmm3
	jbe	.L1182
	movq	32(%r8), %r8
	movsd	.LC45(%rip), %xmm2
	movq	molecs(%rip), %rax
	movq	output(%rip), %r9
	movq	(%r8,%r13), %r8
	movq	8(%rsp), %rcx
	movq	32(%rax), %rax
	movq	24(%r9), %r9
	mulsd	(%r8,%r14), %xmm2
	movq	352(%rdi), %rdi
	addq	(%rax,%r13), %rcx
	movq	48(%rsp), %rax
	movslq	(%rcx), %r10
	movq	8(%rdi), %rdi
	movq	%rcx, 192(%rsp)
	incl	(%r9,%r10,4)
	movq	(%rdi,%rax), %rdi
	subsd	%xmm2, %xmm1
	movq	96(%rsp), %rax
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 136(%rsp)
	movaps	%xmm1, %xmm0
	addsd	%xmm1, %xmm0
	divsd	(%rdi,%rax), %xmm0
	movsd	%xmm0, 24(%rsp)
	call	sqrt@PLT
	movq	192(%rsp), %rax
	movsd	136(%rsp), %xmm1
	movl	$1, %r9d
	movsd	%xmm0, 112(%rsp)
	movl	$-1, (%rax)
.L1182:
	incl	%r15d
	addq	$8, %r13
	jmp	.L1181
.L1180:
	cmpl	$1, 80(%rsp)
	jne	.L1492
	movl	$2, 80(%rsp)
	movl	128(%rsp), %r13d
	movl	%r12d, %eax
	jmp	.L1179
.L1492:
	testl	%r9d, %r9d
	jne	.L1364
.L1178:
	leaq	0(,%rbx,4), %rax
	movq	%rax, 192(%rsp)
	movq	gas(%rip), %rax
	movq	520(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	cmpl	$0, (%rax,%rbx,4)
	jle	.L1188
	movq	geom(%rip), %rax
	movq	32(%rsp), %rsi
	movq	56(%rax), %rax
	movq	16(%rax), %rax
	cmpl	$2, (%rax,%rsi)
	jg	.L1189
.L1188:
	movl	128(%rsp), %eax
	movl	%r12d, 80(%rsp)
	movl	%eax, 8(%rsp)
	xorl	%eax, %eax
	movl	%eax, 136(%rsp)
	jmp	.L1190
.L1189:
	call	rand@PLT
	movq	32(%rsp), %r14
	movq	32(%rsp), %rsi
	cvtsi2sdl	%eax, %xmm0
	movq	geom(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movq	molecs(%rip), %rdx
	movq	calc(%rip), %r13
	movq	56(%rax), %rcx
	movsd	%xmm0, 152(%r13)
	addq	16(%rcx), %r14
	movq	8(%rcx), %rcx
	cvtsi2sdl	(%r14), %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2sil	%xmm1, %eax
	addl	(%rcx,%rsi), %eax
	movq	16(%rdx), %rcx
	incl	%eax
	cltq
	movl	(%rcx,%rax,4), %eax
	cmpl	%eax, 16(%rsp)
	sete	%cl
	cmpl	%eax, %r12d
	movl	%eax, 80(%rsp)
	sete	%al
	orb	%al, %cl
	movb	%cl, 136(%rsp)
	jne	.L1189
	movslq	80(%rsp), %rax
	movq	gas(%rip), %r15
	movsd	.LC51(%rip), %xmm1
	movq	%rax, 200(%rsp)
	movq	8(%rdx), %rax
	movq	200(%rsp), %rdi
	movl	(%rax,%rdi,4), %eax
	movl	%eax, 8(%rsp)
	movq	320(%r15), %rax
	movslq	8(%rsp), %rcx
	movq	8(%rax), %rax
	movq	%rcx, 104(%rsp)
	movsd	(%rax,%rbp,8), %xmm0
	addsd	(%rax,%rbx,8), %xmm0
	addsd	(%rax,%rcx,8), %xmm0
	call	pow@PLT
	movq	400(%r15), %rax
	movq	104(%rsp), %rcx
	movq	528(%r15), %rsi
	mulsd	.LC307(%rip), %xmm0
	movq	8(%rax), %rdx
	movq	520(%r15), %rdi
	movq	(%rsi,%rbp,8), %rsi
	movq	16(%rax), %rax
	movq	(%rdx,%rbp,8), %rdx
	movq	(%rdi,%rbp,8), %rdi
	movslq	(%rsi,%rbx,4), %rsi
	movq	(%rax,%rbp,8), %rax
	movq	(%rdx,%rbx,8), %rdx
	movslq	(%rdi,%rbx,4), %rdi
	movq	(%rax,%rbx,8), %rax
	mulsd	(%rdx,%rcx,8), %xmm0
	movq	output(%rip), %rdx
	movq	360(%r15), %rcx
	movq	136(%rdx), %rdx
	movq	8(%rcx), %rcx
	movq	64(%rdx), %rdx
	movsd	%xmm0, 240(%rsp)
	movq	(%rcx,%rsi,8), %rcx
	movq	208(%rsp), %rsi
	movsd	(%rdx,%rsi,8), %xmm0
	divsd	(%rcx,%rdi,8), %xmm0
	movq	104(%rsp), %rdi
	movsd	(%rax,%rdi,8), %xmm1
	call	pow@PLT
	movaps	%xmm0, %xmm1
	cvtsi2sdl	(%r14), %xmm0
	mulsd	240(%rsp), %xmm1
	mulsd	%xmm1, %xmm0
	mulsd	96(%r13), %xmm0
	divsd	144(%rsp), %xmm0
	movq	%xmm0, %r13
	comisd	.LC8(%rip), %xmm0
	jbe	.L1191
	leaq	_ZSt4cout(%rip), %rdi
	leaq	.LC308(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%r13, %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
.L1191:
	call	rand@PLT
	movq	%r13, %xmm7
	movl	%eax, %edx
	movq	calc(%rip), %rax
	cvtsi2sdl	%edx, %xmm0
	divsd	.LC42(%rip), %xmm0
	comisd	%xmm0, %xmm7
	movsd	%xmm0, 152(%rax)
	jbe	.L1188
	movq	gas(%rip), %rdx
	movq	192(%rsp), %r15
	movq	296(%rax), %rax
	movsd	.LC8(%rip), %xmm0
	movq	520(%rdx), %rcx
	addq	(%rcx,%rbp,8), %r15
	movslq	(%r15), %rcx
	leaq	(%rax,%rcx,8), %rax
	addsd	(%rax), %xmm0
	movsd	%xmm0, (%rax)
	movq	352(%rdx), %rax
	movsd	.LC7(%rip), %xmm0
	movq	8(%rax), %rax
	movq	%rax, 112(%rsp)
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%rbx,8), %xmm0
	movq	488(%rdx), %rax
	mulsd	24(%rsp), %xmm0
	movq	8(%rax), %r9
	movq	molecs(%rip), %rax
	cmpl	$0, (%r9,%rbp,4)
	jle	.L1194
	movq	64(%rax), %rcx
	movq	(%rsp), %rsi
	addsd	(%rcx,%rsi,8), %xmm0
.L1194:
	movl	452(%rdx), %r11d
	cmpl	$1, %r11d
	jle	.L1195
	movq	72(%rax), %rcx
	movq	(%rsp), %rdi
	addsd	(%rcx,%rdi,8), %xmm0
.L1195:
	movq	176(%rsp), %rsi
	movq	472(%rdx), %rcx
	leaq	(%rcx,%rsi), %r10
	movq	360(%rdx), %rsi
	movl	(%r10), %r12d
	movq	%rsi, 24(%rsp)
	testl	%r12d, %r12d
	jle	.L1196
	movq	32(%rax), %r14
	movq	8(%rsi), %r13
	movl	$1, %edi
	movsd	.LC45(%rip), %xmm2
.L1198:
	movq	88(%rsp), %r8
	movq	(%r14,%rdi,8), %rsi
	movl	(%rsi,%r8), %esi
	movl	%esi, %r8d
	negl	%r8d
	cmovns	%r8d, %esi
	cmpl	$99999, %esi
	jne	.L1197
	xorl	%esi, %esi
.L1197:
	cvtsi2sdl	%esi, %xmm1
	movq	48(%rsp), %r8
	movq	0(%r13,%rdi,8), %rsi
	incq	%rdi
	mulsd	%xmm2, %xmm1
	mulsd	(%rsi,%r8), %xmm1
	addsd	%xmm1, %xmm0
	cmpl	%edi, %r12d
	jge	.L1198
.L1196:
	cmpl	$0, (%r9,%rbx,4)
	jle	.L1199
	movq	64(%rax), %rsi
	movq	40(%rsp), %rdi
	addsd	(%rsi,%rdi,8), %xmm0
.L1199:
	decl	%r11d
	jle	.L1200
	movq	72(%rax), %rsi
	movq	40(%rsp), %rdi
	addsd	(%rsi,%rdi,8), %xmm0
.L1200:
	movl	(%rcx,%rbx,4), %r11d
	testl	%r11d, %r11d
	jle	.L1201
	movq	24(%rsp), %rsi
	movq	32(%rax), %r13
	movl	$1, %edi
	movsd	.LC45(%rip), %xmm2
	movq	8(%rsi), %r12
.L1203:
	movq	168(%rsp), %r14
	movq	0(%r13,%rdi,8), %rsi
	movl	(%rsi,%r14), %esi
	movl	%esi, %r14d
	negl	%r14d
	cmovns	%r14d, %esi
	cmpl	$99999, %esi
	jne	.L1202
	xorl	%esi, %esi
.L1202:
	cvtsi2sdl	%esi, %xmm1
	movq	(%r12,%rdi,8), %r14
	movq	96(%rsp), %rsi
	incq	%rdi
	mulsd	%xmm2, %xmm1
	mulsd	(%r14,%rsi), %xmm1
	addsd	%xmm1, %xmm0
	cmpl	%edi, %r11d
	jge	.L1203
.L1201:
	movq	544(%rdx), %rsi
	movq	176(%rsp), %rdi
	movq	16(%rsi), %rsi
	decl	(%rsi,%rdi)
	movq	192(%rsp), %rdi
	decl	(%rsi,%rdi)
	movq	8(%rax), %rsi
	movslq	(%r15), %r12
	movq	(%rsp), %rdi
	movl	%r12d, (%rsi,%rdi,4)
	leaq	0(,%r12,4), %rdi
	movl	(%r10), %r13d
	addq	%rdi, %rcx
	movl	%r12d, 296(%rsp)
	movl	(%rcx), %esi
	cmpl	%esi, %r13d
	jge	.L1205
	leal	1(%r13), %r11d
	xorl	%r15d, %r15d
	movl	%r11d, 292(%rsp)
	movslq	%r11d, %r10
	movl	%r11d, %r14d
	salq	$3, %r10
.L1206:
	cmpl	%r14d, %esi
	jl	.L1493
	movq	32(%rax), %r15
	movq	88(%rsp), %r8
	incl	%r14d
	movq	(%r15,%r10), %r15
	addq	$8, %r10
	movl	$0, (%r15,%r8)
	movb	$1, %r15b
	jmp	.L1206
.L1493:
	testb	%r15b, %r15b
	je	.L1205
	subl	%r13d, %esi
	addl	%r11d, %esi
	movl	%esi, 292(%rsp)
.L1205:
	cmpl	$1, 452(%rdx)
	jle	.L1209
	movslq	292(%rsp), %r10
	movq	72(%rax), %rsi
	movq	$0x000000000, (%rsi,%r10,8)
.L1209:
	movq	168(%rsp), %rsi
	addq	(%rax), %rsi
	negl	(%rsi)
	movq	536(%rdx), %rsi
	addq	16(%rsi), %rdi
	incl	(%rdi)
	cmpl	$0, (%r9,%r12,4)
	jle	.L1210
	movq	64(%rax), %rsi
	movq	(%rsp), %rdi
	movq	$0x000000000, (%rsi,%rdi,8)
.L1210:
	cmpl	$1, 452(%rdx)
	jle	.L1211
	movq	72(%rax), %rdx
	movq	(%rsp), %rsi
	movq	$0x000000000, (%rdx,%rsi,8)
.L1211:
	cmpl	$0, (%rcx)
	jg	.L1367
.L1216:
	movq	24(%rsp), %rcx
	movsd	.LC45(%rip), %xmm3
	movq	200(%rsp), %r13
	movq	32(%rcx), %rdx
	movq	(%rsp), %rcx
	salq	$3, %r13
	movq	8(%rdx), %rdx
	mulsd	(%rdx,%r12,8), %xmm3
	movq	48(%rax), %rdx
	movq	8(%rdx), %rax
	addsd	%xmm0, %xmm3
	movsd	352(%rsp), %xmm0
	movsd	%xmm0, (%rax,%rcx,8)
	movq	16(%rdx), %rax
	movsd	360(%rsp), %xmm0
	movsd	%xmm0, (%rax,%rcx,8)
	movq	24(%rdx), %rax
	movsd	368(%rsp), %xmm0
	movsd	%xmm0, (%rax,%rcx,8)
	movl	$8, %eax
	jmp	.L1213
.L1367:
	movl	$8, %edi
	movl	$1, %esi
.L1212:
	cmpl	%esi, (%rcx)
	jl	.L1216
	movq	32(%rax), %rdx
	movq	88(%rsp), %r9
	incl	%esi
	addq	(%rdx,%rdi), %r9
	addq	$8, %rdi
	movl	(%r9), %edx
	sarl	$31, %edx
	andl	$-99999, %edx
	movl	%edx, (%r9)
	jmp	.L1212
.L1213:
	movq	(%rdx,%rax), %rcx
	movq	64(%rsp), %rsi
	movsd	(%rcx,%rsi), %xmm0
	subsd	(%rcx,%r13), %xmm0
	movsd	%xmm0, 312(%rsp,%rax)
	addq	$8, %rax
	cmpq	$32, %rax
	jne	.L1213
	movsd	320(%rsp), %xmm0
	movq	112(%rsp), %rax
	movl	$-1, 300(%rsp)
	movsd	328(%rsp), %xmm2
	movq	104(%rsp), %rcx
	mulsd	%xmm0, %xmm0
	movq	(%rax,%r12,8), %rax
	movsd	336(%rsp), %xmm1
	mulsd	%xmm2, %xmm2
	movsd	.LC7(%rip), %xmm4
	mulsd	%xmm1, %xmm1
	mulsd	(%rax,%rcx,8), %xmm4
	addsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	mulsd	%xmm4, %xmm0
	movaps	%xmm0, %xmm5
	mulsd	%xmm3, %xmm5
	movsd	%xmm5, 24(%rsp)
	call	rand@PLT
	movsd	24(%rsp), %xmm5
	xorl	%edx, %edx
	movb	$1, %dil
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	movq	output(%rip), %r8
	divsd	.LC42(%rip), %xmm1
	movq	gas(%rip), %r14
	movsd	%xmm1, 152(%rax)
	orl	$-1, %eax
.L1219:
	movq	384(%r14), %rcx
	movq	48(%rsp), %r11
	movq	96(%rsp), %r10
	movq	8(%rcx), %rsi
	movq	16(%rcx), %rcx
	movq	(%rsi,%r11), %rsi
	movsd	(%rsi,%r10), %xmm4
	movq	408(%r14), %rsi
	movq	8(%rsi), %r9
	movq	16(%rsi), %rsi
	movq	(%rsi,%r11), %rsi
	movq	(%r9,%r11), %r9
	movq	72(%rsp), %r11
	movq	(%rsi,%r10), %rsi
	movq	(%r9,%r10), %r9
	movsd	(%rsi,%rdx,8), %xmm0
	movq	136(%r8), %rsi
	movsd	(%r9,%rdx,8), %xmm3
	movq	64(%rsi), %rsi
	subsd	%xmm3, %xmm0
	movsd	(%rsi,%r11), %xmm2
	movq	48(%rsp), %rsi
	subsd	%xmm4, %xmm2
	movq	(%rcx,%rsi), %rcx
	mulsd	%xmm2, %xmm0
	movsd	(%rcx,%r10), %xmm2
	movb	136(%rsp), %cl
	subsd	%xmm4, %xmm2
	divsd	%xmm2, %xmm0
	subsd	%xmm3, %xmm0
	ucomisd	%xmm1, %xmm0
	cmova	%edi, %ecx
	cmova	%edx, %eax
	incq	%rdx
	movb	%cl, 136(%rsp)
	testl	%eax, %eax
	js	.L1219
	testb	%cl, %cl
	je	.L1220
	movl	%eax, 300(%rsp)
.L1220:
	movq	molecs(%rip), %r15
	movq	(%rsp), %rdi
	cvtsi2sdl	%eax, %xmm1
	movq	104(%rsp), %rsi
	mulsd	.LC45(%rip), %xmm1
	movq	32(%r15), %rcx
	movq	8(%rcx), %rcx
	movl	%eax, (%rcx,%rdi,4)
	movq	352(%r14), %rcx
	movq	8(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movsd	(%rcx,%rsi,8), %xmm2
	movq	528(%r14), %rsi
	movq	360(%r14), %rcx
	movq	(%rsi,%rbp,8), %rsi
	movsd	%xmm2, 40(%rsp)
	movq	8(%rcx), %rcx
	movslq	(%rsi,%rbx,4), %rsi
	movq	(%rcx,%rsi,8), %rcx
	mulsd	(%rcx,%r12,8), %xmm1
	subsd	%xmm1, %xmm5
	movaps	%xmm5, %xmm0
	addsd	%xmm5, %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, 24(%rsp)
	call	sqrt@PLT
	movq	320(%r14), %rax
	movsd	40(%rsp), %xmm2
	movq	104(%rsp), %rbx
	movq	48(%r15), %rcx
	movsd	%xmm0, 112(%rsp)
	movq	40(%rax), %rax
	movaps	%xmm2, %xmm3
	divsd	(%rax,%r12,8), %xmm2
	divsd	(%rax,%rbx,8), %xmm3
	movl	$8, %eax
	movsd	%xmm2, 152(%rsp)
.L1221:
	movq	(%rcx,%rax), %rdx
	movq	64(%rsp), %rbx
	movsd	152(%rsp), %xmm1
	movsd	(%rdx,%rbx), %xmm0
	mulsd	(%rdx,%r13), %xmm1
	mulsd	%xmm3, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 344(%rsp,%rax)
	addq	$8, %rax
	cmpq	$32, %rax
	jne	.L1221
	movl	$1, 136(%rsp)
.L1190:
	movslq	296(%rsp), %rax
	movq	gas(%rip), %r12
	movq	%rax, 40(%rsp)
	movq	40(%rsp), %rcx
	movl	%eax, 168(%rsp)
	salq	$3, %rax
	movq	%rax, 48(%rsp)
	movslq	8(%rsp), %rax
	leaq	0(,%rax,4), %rbx
	movq	%rax, 96(%rsp)
	movq	552(%r12), %rax
	movq	(%rax,%rcx,8), %rdi
	addq	%rbx, %rdi
	cmpl	$0, (%rdi)
	movq	%rdi, 192(%rsp)
	jle	.L1370
	cmpl	$0, 136(%rsp)
	jne	.L1370
	movl	444(%r12), %edx
	xorl	%eax, %eax
.L1222:
	cmpl	%eax, %edx
	jl	.L1494
	movq	288(%r12), %rcx
	movq	$0x000000000, (%rcx,%rax,8)
	incq	%rax
	jmp	.L1222
.L1494:
	movq	96(%rsp), %rax
	movl	$8, %r13d
	movl	$1, 128(%rsp)
	salq	$3, %rax
	movq	%rax, 104(%rsp)
.L1224:
	movq	192(%rsp), %rax
	movl	(%rax), %edx
	movl	128(%rsp), %eax
	cmpl	%eax, %edx
	jl	.L1495
	movq	584(%r12), %rax
	movq	48(%rsp), %rcx
	movq	(%rax,%r13), %r15
	movq	8(%r15), %rax
	movq	(%rax,%rcx), %rax
	movslq	(%rax,%rbx), %rbp
	cmpl	%ebp, 168(%rsp)
	jne	.L1371
	movslq	8(%rsp), %rax
	movslq	16(%rsp), %rdx
	jmp	.L1225
.L1371:
	movslq	168(%rsp), %rax
	movslq	8(%rsp), %rbp
	movslq	80(%rsp), %rdx
.L1225:
	movq	392(%r12), %r14
	movq	104(%rsp), %rdi
	xorps	%xmm0, %xmm0
	movq	24(%r14), %rcx
	movq	(%rcx,%r13), %rsi
	movq	48(%rsp), %rcx
	movq	(%rsi,%rcx), %rcx
	movsd	(%rcx,%rdi), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L1472
	movq	40(%r15), %rcx
	jmp	.L1483
.L1472:
	comisd	%xmm0, %xmm1
	jbe	.L1228
	movq	56(%r15), %rcx
.L1483:
	movq	48(%rsp), %rdi
	movq	(%rcx,%rdi), %rcx
	movl	(%rcx,%rbx), %ecx
	movl	%ecx, 292(%rsp)
.L1228:
	movq	molecs(%rip), %rcx
	movslq	292(%rsp), %rdi
	movq	32(%rcx), %rcx
	movq	(%rcx,%rdi,8), %rcx
	movl	(%rcx,%rdx,4), %ecx
	movl	%ecx, %edx
	negl	%edx
	cmovs	%ecx, %edx
	cmpl	$99999, %edx
	jne	.L1230
	xorl	%edx, %edx
.L1230:
	movq	(%rsi,%rbp,8), %rsi
	movq	352(%r12), %rcx
	xorps	%xmm2, %xmm2
	movq	360(%r12), %r9
	movq	48(%rsp), %r10
	movsd	(%rsi,%rax,8), %xmm0
	movq	8(%rcx), %r8
	movq	8(%r9), %r9
	movq	104(%rsp), %r11
	comisd	%xmm2, %xmm0
	movq	(%r8,%r10), %r8
	movq	(%r9,%rdi,8), %rdi
	movsd	(%r8,%r11), %xmm1
	leaq	0(,%rbp,8), %r8
	movsd	(%rdi,%rbp,8), %xmm3
	leaq	0(,%rax,8), %rdi
	jbe	.L1473
	movq	8(%r14), %rdx
	movq	72(%rsp), %rcx
	movq	%rax, 208(%rsp)
	movq	(%rdx,%r13), %rdx
	movq	(%rdx,%rbp,8), %rdx
	movsd	(%rdx,%rax,8), %xmm5
	movq	output(%rip), %rdx
	movsd	%xmm5, 176(%rsp)
	movq	136(%rdx), %rdx
	movq	64(%rdx), %rdx
	movsd	(%rdx,%rcx), %xmm2
	movq	16(%r14), %rdx
	movsd	%xmm2, 240(%rsp)
	movq	(%rdx,%r13), %rdx
	movaps	%xmm2, %xmm0
	divsd	.LC6(%rip), %xmm0
	movq	(%rdx,%rbp,8), %rdx
	movsd	(%rdx,%rax,8), %xmm1
	call	pow@PLT
	movq	48(%r14), %rdx
	movsd	240(%rsp), %xmm2
	mulsd	.LC45(%rip), %xmm2
	movq	208(%rsp), %rax
	movsd	%xmm0, 200(%rsp)
	movq	(%rdx,%r13), %rdx
	movq	(%rdx,%rbp,8), %rdx
	movsd	(%rdx,%rax,8), %xmm0
	xorps	.LC43(%rip), %xmm0
	divsd	%xmm2, %xmm0
	call	exp@PLT
	movq	288(%r12), %rax
	movaps	%xmm0, %xmm1
	movsd	176(%rsp), %xmm0
	mulsd	200(%rsp), %xmm0
	mulsd	%xmm1, %xmm0
	jmp	.L1484
.L1473:
	cvtsi2sdl	%edx, %xmm2
	mulsd	.LC45(%rip), %xmm2
	andps	.LC256(%rip), %xmm0
	mulsd	.LC7(%rip), %xmm1
	mulsd	24(%rsp), %xmm1
	mulsd	%xmm3, %xmm2
	movaps	%xmm2, %xmm4
	addsd	%xmm1, %xmm4
	comisd	%xmm0, %xmm4
	jbe	.L1233
	movsd	.LC45(%rip), %xmm2
	movaps	%xmm4, %xmm1
	movq	48(%r14), %rsi
	movq	$0x000000000, 176(%rsp)
	mulsd	%xmm3, %xmm2
	movq	(%rsi,%r13), %rsi
	movq	(%rsi,%rbp,8), %rsi
	xorl	%ebp, %ebp
	addsd	(%rsi,%rax,8), %xmm0
	divsd	%xmm2, %xmm1
	movq	%xmm0, %r14
	cvttsd2sil	%xmm1, %edx
.L1235:
	movq	24(%rcx), %rax
	movsd	.LC70(%rip), %xmm1
	movq	(%rax,%r8), %rax
	subsd	(%rax,%rdi), %xmm1
	cmpl	%edx, %ebp
	jg	.L1496
	cvtsi2sdl	%ebp, %xmm2
	mulsd	.LC45(%rip), %xmm2
	movsd	.LC8(%rip), %xmm0
	movl	%edx, 264(%rsp)
	movq	%rdi, 256(%rsp)
	incl	%ebp
	movq	%r8, 248(%rsp)
	movq	%rcx, 240(%rsp)
	movsd	%xmm3, 208(%rsp)
	movsd	%xmm4, 200(%rsp)
	mulsd	%xmm3, %xmm2
	divsd	%xmm4, %xmm2
	subsd	%xmm2, %xmm0
	call	pow@PLT
	movl	264(%rsp), %edx
	addsd	176(%rsp), %xmm0
	movq	256(%rsp), %rdi
	movq	248(%rsp), %r8
	movq	240(%rsp), %rcx
	movsd	208(%rsp), %xmm3
	movsd	200(%rsp), %xmm4
	movsd	%xmm0, 176(%rsp)
	jmp	.L1235
.L1496:
	movq	%r14, %xmm0
	movq	48(%r15), %rax
	movq	48(%rsp), %rcx
	divsd	%xmm4, %xmm0
	movsd	.LC8(%rip), %xmm2
	movq	(%rax,%rcx), %rax
	cvtsi2sdl	(%rax,%rbx), %xmm7
	movsd	%xmm7, 200(%rsp)
	subsd	%xmm0, %xmm2
	movaps	%xmm2, %xmm0
	call	pow@PLT
	movq	288(%r12), %rax
	mulsd	200(%rsp), %xmm0
	divsd	176(%rsp), %xmm0
.L1484:
	movsd	%xmm0, (%rax,%r13)
.L1233:
	incl	128(%rsp)
	addq	$8, %r13
	jmp	.L1224
.L1495:
	cmpl	$1, %edx
	jle	.L1238
	movq	288(%r12), %rcx
	movl	$1, %eax
	xorps	%xmm1, %xmm1
.L1239:
	addsd	(%rcx,%rax,8), %xmm1
	incq	%rax
	cmpl	%eax, %edx
	jge	.L1239
	movsd	%xmm1, 128(%rsp)
	call	rand@PLT
	movsd	128(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	comisd	%xmm0, %xmm1
	movsd	%xmm0, 152(%rax)
	jbe	.L1370
	movq	40(%rsp), %rsi
	movq	96(%rsp), %rcx
	xorl	%r15d, %r15d
	xorps	%xmm1, %xmm1
	movq	gas(%rip), %rdx
	movq	552(%rdx), %rax
	movq	(%rax,%rsi,8), %rax
	xorl	%esi, %esi
	movl	(%rax,%rcx,4), %ecx
	xorl	%eax, %eax
	movl	%eax, 128(%rsp)
	movl	$8, %eax
.L1242:
	testl	%r15d, %r15d
	jne	.L1247
	movl	128(%rsp), %edi
	cmpl	%edi, %ecx
	jle	.L1497
	movq	288(%rdx), %rdi
	incl	128(%rsp)
	movl	128(%rsp), %r15d
	addsd	(%rdi,%rax), %xmm1
	comisd	%xmm0, %xmm1
	cmovbe	%esi, %r15d
	addq	$8, %rax
	jmp	.L1242
.L1238:
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	288(%rax), %rax
	movsd	8(%rax), %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L1370
	movl	$1, %r15d
	jmp	.L1247
.L1497:
	xorl	%r9d, %r9d
	testl	%r15d, %r15d
	je	.L1486
.L1247:
	movq	gas(%rip), %rdx
	movslq	%r15d, %rax
	movslq	%r15d, %rsi
	movq	40(%rsp), %rcx
	movq	%rax, 240(%rsp)
	salq	$3, %rax
	movsd	.LC8(%rip), %xmm0
	movq	%rax, 176(%rsp)
	movq	576(%rdx), %rax
	movq	(%rax,%rsi,8), %rax
	movq	96(%rsp), %rsi
	movq	(%rax,%rcx,8), %rax
	movslq	(%rax,%rsi,4), %rcx
	movq	280(%rdx), %rax
	leaq	(%rax,%rcx,8), %rax
	movslq	%r15d, %rcx
	addsd	(%rax), %xmm0
	movsd	%xmm0, (%rax)
	movq	584(%rdx), %rax
	movq	(%rax,%rcx,8), %rax
	movq	88(%rsp), %rcx
	movq	%rax, 192(%rsp)
	movq	molecs(%rip), %rax
	movq	8(%rax), %rsi
	leaq	(%rsi,%rcx), %rdi
	movq	%rdi, 152(%rsp)
	movq	192(%rsp), %rdi
	movq	24(%rdi), %rcx
	movq	40(%rsp), %rdi
	movq	(%rcx,%rdi,8), %rcx
	movq	96(%rsp), %rdi
	movl	(%rcx,%rdi,4), %ecx
	movq	152(%rsp), %rdi
	movl	%ecx, (%rdi)
	movslq	80(%rsp), %rcx
	leaq	0(,%rcx,4), %rdi
	addq	%rdi, %rsi
	movq	%rdi, 200(%rsp)
	movq	%rsi, 208(%rsp)
	movq	192(%rsp), %rsi
	movq	32(%rsi), %rsi
	movq	40(%rsp), %rdi
	movq	24(%rax), %r12
	movq	(%rsi,%rdi,8), %rsi
	movq	96(%rsp), %rdi
	movl	(%rsi,%rdi,4), %esi
	movq	208(%rsp), %rdi
	movl	%esi, (%rdi)
	movq	40(%rsp), %rdi
	movq	472(%rdx), %rsi
	salq	$2, %rdi
	leaq	(%rsi,%rdi), %r10
	movq	%r10, 248(%rsp)
	movl	(%r10), %ebp
	movq	(%rsp), %r10
	movslq	(%r12,%r10,4), %r8
	movl	(%rsi,%r8,4), %r8d
	cmpl	%r8d, %ebp
	jge	.L1249
	leal	1(%rbp), %r10d
	xorl	%r14d, %r14d
	movl	%r10d, 292(%rsp)
	movslq	%r10d, %r9
	movl	%r10d, %r13d
	salq	$3, %r9
.L1250:
	cmpl	%r13d, %r8d
	jl	.L1498
	movq	32(%rax), %r14
	movq	88(%rsp), %r11
	incl	%r13d
	movq	(%r14,%r9), %r14
	addq	$8, %r9
	movl	$0, (%r14,%r11)
	movb	$1, %r14b
	jmp	.L1250
.L1498:
	testb	%r14b, %r14b
	je	.L1249
	subl	%ebp, %r8d
	addl	%r10d, %r8d
	movl	%r8d, 292(%rsp)
.L1249:
	movslq	(%r12,%rcx,4), %r8
	leaq	(%rsi,%rbx), %r14
	movl	(%r14), %ebp
	movl	(%rsi,%r8,4), %r8d
	cmpl	%r8d, %ebp
	jge	.L1254
	leal	1(%rbp), %r10d
	xorl	%r13d, %r13d
	movl	%r10d, 292(%rsp)
	movslq	%r10d, %r9
	movl	%r10d, %r12d
	salq	$3, %r9
.L1255:
	cmpl	%r12d, %r8d
	jl	.L1499
	movq	32(%rax), %r13
	movq	200(%rsp), %r11
	incl	%r12d
	movq	0(%r13,%r9), %r13
	addq	$8, %r9
	movl	$0, 0(%r13,%r11)
	movb	$1, %r13b
	jmp	.L1255
.L1499:
	testb	%r13b, %r13b
	je	.L1254
	subl	%ebp, %r8d
	addl	%r10d, %r8d
	movl	%r8d, 292(%rsp)
.L1254:
	movq	352(%rdx), %r8
	movq	40(%rsp), %r10
	movq	96(%rsp), %r11
	movsd	.LC7(%rip), %xmm0
	movq	8(%r8), %r13
	movq	0(%r13,%r10,8), %r8
	mulsd	(%r8,%r11,8), %xmm0
	movq	488(%rdx), %r8
	movq	40(%rsp), %r11
	mulsd	24(%rsp), %xmm0
	movq	8(%r8), %r10
	cmpl	$0, (%r10,%r11,4)
	jle	.L1258
	movq	64(%rax), %r8
	movq	(%rsp), %r11
	addsd	(%r8,%r11,8), %xmm0
.L1258:
	movl	452(%rdx), %r11d
	movl	%r11d, 24(%rsp)
	decl	%r11d
	jle	.L1259
	movq	72(%rax), %r8
	movq	(%rsp), %r11
	addsd	(%r8,%r11,8), %xmm0
.L1259:
	movq	248(%rsp), %r9
	movl	(%r9), %r8d
	testl	%r8d, %r8d
	jle	.L1260
	movsd	.LC45(%rip), %xmm2
	xorl	%ebp, %ebp
	movl	$8, %r11d
.L1262:
	movq	32(%rax), %r9
	movq	88(%rsp), %r12
	movq	(%r9,%r11), %r9
	movl	(%r9,%r12), %r12d
	movl	%r12d, %r9d
	negl	%r9d
	cmovs	%r12d, %r9d
	cmpl	$99999, %r9d
	jne	.L1261
	xorl	%r9d, %r9d
.L1261:
	movq	360(%rdx), %r12
	cvtsi2sdl	%r9d, %xmm1
	incl	%ebp
	movq	48(%rsp), %r9
	movq	8(%r12), %r12
	movq	(%r12,%r11), %r12
	mulsd	%xmm2, %xmm1
	addq	$8, %r11
	mulsd	(%r12,%r9), %xmm1
	addsd	%xmm1, %xmm0
	cmpl	%ebp, %r8d
	jne	.L1262
	incl	%r8d
	movl	%r8d, 292(%rsp)
.L1260:
	movq	96(%rsp), %r11
	cmpl	$0, (%r10,%r11,4)
	jle	.L1263
	movq	64(%rax), %r8
	addsd	(%r8,%rcx,8), %xmm0
.L1263:
	cmpl	$1, 24(%rsp)
	jle	.L1264
	movq	72(%rax), %r8
	addsd	(%r8,%rcx,8), %xmm0
.L1264:
	movl	(%r14), %r8d
	testl	%r8d, %r8d
	jle	.L1265
	movsd	.LC45(%rip), %xmm2
	xorl	%ebp, %ebp
	movl	$8, %r11d
.L1267:
	movq	32(%rax), %r9
	movq	200(%rsp), %r14
	movq	(%r9,%r11), %r9
	movl	(%r9,%r14), %r12d
	movl	%r12d, %r9d
	negl	%r9d
	cmovs	%r12d, %r9d
	cmpl	$99999, %r9d
	jne	.L1266
	xorl	%r9d, %r9d
.L1266:
	movq	360(%rdx), %r12
	cvtsi2sdl	%r9d, %xmm1
	incl	%ebp
	movq	104(%rsp), %r9
	movq	8(%r12), %r12
	movq	(%r12,%r11), %r12
	mulsd	%xmm2, %xmm1
	addq	$8, %r11
	mulsd	(%r12,%r9), %xmm1
	addsd	%xmm1, %xmm0
	cmpl	%ebp, %r8d
	jne	.L1267
	incl	%r8d
	movl	%r8d, 292(%rsp)
.L1265:
	movq	392(%rdx), %r8
	movq	240(%rsp), %r11
	movq	104(%rsp), %r9
	movq	24(%r8), %r8
	movq	(%r8,%r11,8), %r8
	movq	40(%rsp), %r11
	addq	(%r8,%r11,8), %r9
	movsd	(%r9), %xmm1
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 24(%rsp)
	xorps	%xmm0, %xmm0
	comisd	24(%rsp), %xmm0
	jbe	.L1475
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC309(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	24(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC310(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	128(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC311(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	168(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	8(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	408(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L1489
	addq	$424, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	leaq	_ZSt3cin(%rip), %rdi
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSi3getEv@PLT
.L1475:
	.cfi_restore_state
	comisd	%xmm1, %xmm0
	movq	544(%rdx), %r8
	movq	536(%rdx), %r11
	jbe	.L1476
	movq	24(%r8), %r8
	decl	(%r8,%rdi)
	decl	(%r8,%rbx)
	movq	152(%rsp), %rbx
	movq	24(%r11), %r8
	movslq	(%rbx), %rdi
	movq	208(%rsp), %rbx
	movl	(%rbx), %ebx
	movl	%edi, 296(%rsp)
	movl	%ebx, 8(%rsp)
	jmp	.L1485
.L1476:
	movq	32(%r8), %r8
	decl	(%r8,%rdi)
	decl	(%r8,%rbx)
	movq	152(%rsp), %rbx
	movq	32(%r11), %r8
	movslq	(%rbx), %rdi
	movq	208(%rsp), %rbx
	movl	(%rbx), %ebx
	movl	%edi, 296(%rsp)
	movl	%ebx, 8(%rsp)
.L1485:
	incl	(%r8,%rdi,4)
	movslq	%ebx, %rdi
	movslq	8(%rsp), %r14
	incl	(%r8,%rdi,4)
	movslq	296(%rsp), %rbx
	leaq	0(,%rbx,8), %rdi
	movq	0(%r13,%rbx,8), %r8
	leaq	0(,%rbx,4), %r13
	movq	%rdi, 128(%rsp)
	movq	320(%rdx), %rdi
	leaq	(%rsi,%r13), %rbp
	cmpl	$0, 0(%rbp)
	movsd	(%r8,%r14,8), %xmm0
	movq	40(%rdi), %rdi
	divsd	(%rdi,%rbx,8), %xmm0
	movsd	%xmm0, 152(%rsp)
	jle	.L1275
	movl	$8, %r11d
	movl	$1, %r8d
	xorl	%edi, %edi
	movl	$1, 292(%rsp)
.L1276:
	cmpl	$0, 0(%rbp)
	je	.L1500
	movq	32(%rax), %rdi
	movq	88(%rsp), %r12
	incl	%r8d
	addq	(%rdi,%r11), %r12
	addq	$8, %r11
	movl	(%r12), %edi
	sarl	$31, %edi
	andl	$-99999, %edi
	movl	%edi, (%r12)
	movb	$1, %dil
	jmp	.L1276
.L1500:
	testb	%dil, %dil
	je	.L1275
	movl	%r8d, 292(%rsp)
.L1275:
	cmpl	$0, (%r10,%rbx,4)
	jle	.L1280
	movq	64(%rax), %rdi
	movq	(%rsp), %r11
	movq	$0x000000000, (%rdi,%r11,8)
.L1280:
	cmpl	$1, 452(%rdx)
	jle	.L1281
	movq	72(%rax), %rdi
	movq	(%rsp), %r11
	movq	$0x000000000, (%rdi,%r11,8)
.L1281:
	leaq	(%rsi,%r14,4), %r11
	cmpl	$0, (%r11)
	jle	.L1283
	movl	$8, %r8d
	movl	$1, %edi
	xorl	%esi, %esi
	movl	$1, 292(%rsp)
.L1284:
	cmpl	$0, (%r11)
	je	.L1501
	movq	32(%rax), %rsi
	movq	200(%rsp), %rbp
	incl	%edi
	addq	(%rsi,%r8), %rbp
	addq	$8, %r8
	movl	0(%rbp), %esi
	sarl	$31, %esi
	andl	$-99999, %esi
	movl	%esi, 0(%rbp)
	movb	$1, %sil
	jmp	.L1284
.L1501:
	testb	%sil, %sil
	je	.L1283
	movl	%edi, 292(%rsp)
.L1283:
	cmpl	$0, (%r10,%r14,4)
	jle	.L1288
	movq	64(%rax), %rsi
	movq	$0x000000000, (%rsi,%rcx,8)
.L1288:
	cmpl	$1, 452(%rdx)
	jle	.L1289
	movq	72(%rax), %rax
	movq	$0x000000000, (%rax,%rcx,8)
.L1289:
	movsd	(%r9), %xmm1
	xorps	%xmm0, %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1477
	movl	$-1, 300(%rsp)
	call	rand@PLT
	movq	output(%rip), %rdx
	xorl	%ecx, %ecx
	xorl	%esi, %esi
	cvtsi2sdl	%eax, %xmm1
	movq	calc(%rip), %rax
	movq	72(%rsp), %r10
	movb	$1, %r9b
	movq	136(%rdx), %rdx
	divsd	.LC42(%rip), %xmm1
	movsd	%xmm1, 152(%rax)
	movq	gas(%rip), %rax
	addq	64(%rdx), %r10
	orl	$-1, %edx
.L1294:
	movq	392(%rax), %rdi
	movq	176(%rsp), %r11
	movq	176(%rsp), %rbp
	movsd	(%r10), %xmm2
	movq	32(%rdi), %r8
	movq	40(%rdi), %rdi
	movq	(%r8,%r11), %r8
	movq	48(%rsp), %r11
	movq	(%r8,%r11), %r8
	movq	104(%rsp), %r11
	movsd	(%r8,%r11), %xmm4
	movq	416(%rax), %r8
	movq	8(%r8), %r11
	movq	16(%r8), %r8
	subsd	%xmm4, %xmm2
	movq	(%r11,%rbp), %r11
	movq	48(%rsp), %rbp
	movq	(%r11,%rbp), %r11
	movq	104(%rsp), %rbp
	movq	(%r11,%rbp), %r11
	movsd	(%r11,%rcx,8), %xmm3
	movq	176(%rsp), %r11
	movq	(%r8,%r11), %r8
	movq	48(%rsp), %r11
	movq	(%r8,%r11), %r8
	movq	176(%rsp), %r11
	movq	(%r8,%rbp), %r8
	movq	(%rdi,%r11), %rdi
	movq	48(%rsp), %r11
	movsd	(%r8,%rcx,8), %xmm0
	movq	(%rdi,%r11), %rdi
	subsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	movsd	(%rdi,%rbp), %xmm2
	subsd	%xmm4, %xmm2
	divsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm0
	ucomisd	%xmm1, %xmm0
	cmova	%ecx, %edx
	cmova	%r9d, %esi
	incq	%rcx
	testl	%edx, %edx
	js	.L1294
	testb	%sil, %sil
	je	.L1295
	movl	%edx, 300(%rsp)
.L1295:
	movq	560(%rax), %rcx
	addq	8(%rcx), %r13
	movl	0(%r13), %esi
	movq	%r13, %rcx
	testl	%esi, %esi
	jle	.L1296
	addl	%edx, %esi
	movl	%esi, 300(%rsp)
	xorl	%esi, %esi
	movl	%esi, 0(%r13)
.L1296:
	movq	584(%rax), %rdx
	movq	240(%rsp), %rsi
	movq	88(%rsp), %rdi
	movq	360(%rax), %rax
	movq	(%rdx,%rsi,8), %rdx
	movq	40(%rsp), %rsi
	movsd	.LC45(%rip), %xmm3
	movq	8(%rax), %rax
	movq	56(%rdx), %rdx
	movsd	24(%rsp), %xmm0
	movq	(%rdx,%rsi,8), %rdx
	movq	96(%rsp), %rsi
	movslq	(%rdx,%rsi,4), %rdx
	movq	molecs(%rip), %rsi
	movq	32(%rsi), %rsi
	movq	(%rax,%rdx,8), %rax
	movl	%edx, 292(%rsp)
	addq	(%rsi,%rdx,8), %rdi
	movsd	(%rax,%rbx,8), %xmm2
	movq	%rdi, %rsi
	movl	300(%rsp), %edi
	cvtsi2sdl	%edi, %xmm1
	movl	%edi, (%rsi)
	mulsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	xorps	%xmm1, %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L1297
	mulsd	%xmm3, %xmm2
.L1299:
	addsd	%xmm2, %xmm0
	decl	(%rsi)
	incl	(%rcx)
	comisd	%xmm0, %xmm1
	ja	.L1299
	jmp	.L1297
.L1477:
	movq	192(%rsp), %rax
	movq	72(%rsp), %rsi
	leaq	300(%rsp), %rdx
	leaq	292(%rsp), %rcx
	leaq	296(%rsp), %rdi
	movq	40(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movslq	(%rax,%r14,4), %rbp
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movl	%ebp, 292(%rsp)
	addq	64(%rax), %rsi
	call	_Z4SVIBRiRdS_S_
	movq	gas(%rip), %rsi
	movq	560(%rsi), %rax
	movq	16(%rax), %rdx
	addq	%r13, %rdx
	movl	(%rdx), %eax
	testl	%eax, %eax
	jle	.L1300
	xorl	%ecx, %ecx
	addl	%eax, 300(%rsp)
	movl	%ecx, (%rdx)
.L1300:
	movq	molecs(%rip), %rax
	movq	88(%rsp), %rcx
	movq	360(%rsi), %rsi
	movsd	.LC45(%rip), %xmm3
	movq	32(%rax), %rax
	movsd	24(%rsp), %xmm0
	movq	8(%rsi), %rsi
	addq	(%rax,%rbp,8), %rcx
	movq	%rcx, %rax
	movl	300(%rsp), %ecx
	movq	(%rsi,%rbp,8), %rsi
	cvtsi2sdl	%ecx, %xmm1
	movsd	(%rsi,%rbx,8), %xmm2
	movl	%ecx, (%rax)
	mulsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	xorps	%xmm1, %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L1297
	mulsd	%xmm3, %xmm2
.L1302:
	addsd	%xmm2, %xmm0
	decl	(%rax)
	incl	(%rdx)
	comisd	%xmm0, %xmm1
	ja	.L1302
.L1297:
	movq	64(%rsp), %rdx
	movq	molecs(%rip), %rax
	leaq	296(%rsp), %rdi
	movsd	%xmm0, 24(%rsp)
	movq	72(%rsp), %rsi
	addq	64(%rax), %rdx
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	addq	64(%rax), %rsi
	call	_Z4SROTRiRdS0_
	movq	gas(%rip), %rcx
	movq	128(%rsp), %rsi
	movsd	.LC312(%rip), %xmm2
	movq	molecs(%rip), %rax
	addq	296(%rcx), %rsi
	movsd	24(%rsp), %xmm0
	movsd	(%rsi), %xmm1
	comisd	%xmm2, %xmm1
	jbe	.L1303
	movq	64(%rsp), %rdx
	addq	64(%rax), %rdx
	addsd	(%rdx), %xmm1
	movsd	%xmm1, (%rdx)
	movsd	%xmm2, (%rsi)
.L1303:
	movq	64(%rsp), %rdi
	addq	64(%rax), %rdi
	xorps	%xmm1, %xmm1
	subsd	(%rdi), %xmm0
	movq	%rdi, %rax
	comisd	%xmm0, %xmm1
	jbe	.L1305
	movsd	.LC7(%rip), %xmm4
	movaps	%xmm1, %xmm2
.L1307:
	movsd	(%rax), %xmm1
	movsd	(%rsi), %xmm3
	mulsd	%xmm4, %xmm1
	addsd	%xmm1, %xmm0
	addsd	%xmm1, %xmm3
	comisd	%xmm0, %xmm2
	movsd	%xmm3, (%rsi)
	movsd	%xmm1, (%rax)
	ja	.L1307
.L1305:
	movq	352(%rcx), %rax
	addsd	%xmm0, %xmm0
	xorl	%r9d, %r9d
	movq	8(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	divsd	(%rax,%r14,8), %xmm0
	movsd	%xmm0, 24(%rsp)
	jmp	.L1187
.L1364:
	movl	128(%rsp), %eax
	movl	%r12d, 80(%rsp)
	xorl	%r15d, %r15d
	movl	%eax, 8(%rsp)
	jmp	.L1486
.L1370:
	xorl	%r9d, %r9d
	xorl	%r15d, %r15d
	jmp	.L1187
.L1486:
	xorl	%eax, %eax
	movl	%eax, 136(%rsp)
.L1187:
	movq	gas(%rip), %rax
	movslq	296(%rsp), %r14
	movslq	8(%rsp), %rbx
	orl	136(%rsp), %r9d
	movl	%r14d, 96(%rsp)
	movq	352(%rax), %rax
	movq	%rbx, 104(%rsp)
	jne	.L1308
	movq	8(%rax), %rax
	movsd	.LC7(%rip), %xmm2
	movl	$1, 112(%rsp)
	movq	(%rax,%r14,8), %rax
	mulsd	(%rax,%rbx,8), %xmm2
	movl	8(%rsp), %eax
	mulsd	24(%rsp), %xmm2
	movslq	96(%rsp), %rbx
	movl	%eax, 24(%rsp)
	movl	16(%rsp), %eax
	movl	%eax, 48(%rsp)
.L1346:
	movq	gas(%rip), %rax
	leaq	0(,%rbx,4), %rcx
	movq	%rcx, 192(%rsp)
	cmpl	$1, 452(%rax)
	jle	.L1311
	movq	376(%rax), %rax
	movsd	.LC8(%rip), %xmm6
	movsd	%xmm2, 40(%rsp)
	leaq	0(,%rbx,8), %rbp
	movq	24(%rax), %rax
	movq	8(%rax), %rax
	divsd	(%rax,%rbx,8), %xmm6
	movsd	%xmm6, 88(%rsp)
	call	rand@PLT
	movsd	88(%rsp), %xmm5
	movsd	40(%rsp), %xmm2
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	comisd	%xmm0, %xmm5
	movsd	%xmm0, 152(%rax)
	jbe	.L1311
	movq	gas(%rip), %rax
	movq	480(%rax), %rdx
	movl	(%rdx,%rbx,4), %ecx
	cmpl	$1, %ecx
	jle	.L1311
	movq	molecs(%rip), %rdx
	movslq	48(%rsp), %r12
	xorl	%r13d, %r13d
	movq	72(%rdx), %rdx
	addsd	(%rdx,%r12,8), %xmm2
	movq	376(%rax), %rdx
	movl	$1, %eax
	movq	16(%rdx), %rsi
	movsd	%xmm2, 40(%rsp)
.L1314:
	movq	(%rsi,%rax,8), %rdi
	movsd	.LC45(%rip), %xmm0
	movsd	40(%rsp), %xmm7
	mulsd	(%rdi,%rbp), %xmm0
	comisd	%xmm0, %xmm7
	jbe	.L1312
	movq	8(%rdx), %rdi
	cvtsi2sdl	%r13d, %xmm0
	movq	(%rdi,%rax,8), %rdi
	addsd	(%rdi,%rbp), %xmm0
	cvttsd2sil	%xmm0, %r13d
.L1312:
	incq	%rax
	cmpl	%eax, %ecx
	jge	.L1314
	movslq	24(%rsp), %rax
	salq	$3, %rax
	movq	%rax, 128(%rsp)
.L1320:
	call	rand@PLT
	cvtsi2sdl	%r13d, %xmm0
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	movsd	%xmm1, 152(%rax)
	mulsd	%xmm1, %xmm0
	call	ceil@PLT
	movq	gas(%rip), %rdi
	xorl	%esi, %esi
	orl	$-1, %edx
	cvttsd2sil	%xmm0, %r9d
	movq	192(%rsp), %rcx
	movq	480(%rdi), %rax
	movl	(%rax,%rcx), %r8d
	movl	$8, %ecx
	movl	$1, %eax
.L1324:
	cmpl	%eax, %r8d
	jl	.L1502
	movq	376(%rdi), %r10
	cvtsi2sdl	%esi, %xmm0
	movq	8(%r10), %r10
	movq	(%r10,%rcx), %r10
	addsd	(%r10,%rbp), %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	%esi, %r9d
	jg	.L1316
	testl	%edx, %edx
	cmovs	%eax, %edx
.L1316:
	incl	%eax
	addq	$8, %rcx
	jmp	.L1324
.L1502:
	movl	%edx, 136(%rsp)
	call	rand@PLT
	movslq	136(%rsp), %rdx
	movsd	88(%rsp), %xmm2
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	.LC8(%rip), %xmm1
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	376(%rax), %rcx
	movq	24(%rcx), %rsi
	movq	(%rsi,%rdx,8), %rsi
	mulsd	(%rsi,%rbp), %xmm2
	divsd	%xmm2, %xmm1
	comisd	%xmm1, %xmm0
	ja	.L1319
	movq	16(%rcx), %rcx
	movsd	.LC45(%rip), %xmm0
	movsd	40(%rsp), %xmm4
	movq	(%rcx,%rdx,8), %rcx
	mulsd	(%rcx,%rbp), %xmm0
	comisd	%xmm0, %xmm4
	jbe	.L1320
	divsd	%xmm4, %xmm0
	movq	352(%rax), %rax
	movsd	.LC8(%rip), %xmm2
	movq	%rdx, 168(%rsp)
	movq	128(%rsp), %rcx
	movsd	.LC70(%rip), %xmm1
	movq	24(%rax), %rax
	movq	(%rax,%rbp), %rax
	subsd	(%rax,%rcx), %xmm1
	subsd	%xmm0, %xmm2
	movaps	%xmm2, %xmm0
	call	pow@PLT
	movsd	%xmm0, 136(%rsp)
	call	rand@PLT
	movq	168(%rsp), %rdx
	movsd	136(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	comisd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	jbe	.L1320
	movq	gas(%rip), %rcx
	movsd	.LC45(%rip), %xmm0
	movq	molecs(%rip), %rax
	movq	376(%rcx), %rcx
	movq	72(%rax), %rax
	movq	16(%rcx), %rcx
	movq	(%rcx,%rdx,8), %rdx
	mulsd	(%rdx,%rbx,8), %xmm0
	movsd	%xmm0, (%rax,%r12,8)
.L1319:
	movq	molecs(%rip), %rax
	movsd	40(%rsp), %xmm2
	movq	72(%rax), %rax
	subsd	(%rax,%r12,8), %xmm2
.L1311:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.L1325
	testl	%r15d, %r15d
	jne	.L1325
	movq	472(%rax), %rax
	cmpl	$0, (%rax,%rbx,4)
	jle	.L1325
	movslq	48(%rsp), %rax
	movl	$1, 88(%rsp)
	leaq	0(,%rbx,8), %rbp
	movl	$8, %r12d
	salq	$2, %rax
	movq	%rax, 128(%rsp)
	movslq	24(%rsp), %rax
	salq	$3, %rax
	movq	%rax, 168(%rsp)
.L1326:
	movl	88(%rsp), %eax
	movq	gas(%rip), %rcx
	movq	192(%rsp), %rsi
	movl	88(%rsp), %edi
	movl	%eax, 292(%rsp)
	movq	472(%rcx), %rax
	cmpl	%edi, (%rax,%rsi)
	jl	.L1325
	movq	molecs(%rip), %rax
	movq	128(%rsp), %rsi
	movq	32(%rax), %rax
	movq	(%rax,%r12), %rax
	movl	(%rax,%rsi), %r13d
	testl	%r13d, %r13d
	js	.L1332
	movq	360(%rcx), %rax
	xorps	%xmm0, %xmm0
	movq	8(%rax), %rsi
	movq	(%rsi,%r12), %rsi
	movsd	(%rsi,%rbp), %xmm5
	movq	24(%rax), %rsi
	movsd	%xmm5, 136(%rsp)
	movq	(%rsi,%r12), %rsi
	movsd	(%rsi,%rbp), %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L1479
	movq	32(%rax), %rsi
	movq	352(%rcx), %rcx
	movq	%rax, 256(%rsp)
	movsd	%xmm2, 264(%rsp)
	movq	72(%rsp), %rax
	movq	(%rsi,%r12), %rsi
	movq	24(%rcx), %rcx
	movsd	(%rsi,%rbp), %xmm0
	movq	output(%rip), %rsi
	movq	(%rcx,%rbp), %rcx
	movaps	%xmm0, %xmm7
	movq	136(%rsi), %rsi
	divsd	%xmm1, %xmm7
	movq	64(%rsi), %rsi
	divsd	(%rsi,%rax), %xmm0
	movq	168(%rsp), %rax
	movsd	%xmm0, 176(%rsp)
	movsd	(%rcx,%rax), %xmm4
	movsd	%xmm4, 248(%rsp)
	movaps	%xmm4, %xmm1
	movsd	%xmm7, 40(%rsp)
	call	pow@PLT
	movsd	.LC304(%rip), %xmm1
	movsd	%xmm0, 200(%rsp)
	movsd	176(%rsp), %xmm0
	call	pow@PLT
	movsd	.LC313(%rip), %xmm1
	movsd	%xmm0, 240(%rsp)
	movsd	40(%rsp), %xmm0
	call	pow@PLT
	movq	256(%rsp), %rax
	movsd	248(%rsp), %xmm4
	movsd	%xmm0, 208(%rsp)
	xorps	.LC43(%rip), %xmm4
	movsd	40(%rsp), %xmm0
	movq	16(%rax), %rax
	movaps	%xmm4, %xmm1
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbp), %xmm7
	movsd	%xmm7, 176(%rsp)
	call	pow@PLT
	movsd	240(%rsp), %xmm5
	subsd	.LC8(%rip), %xmm5
	movsd	208(%rsp), %xmm3
	subsd	.LC8(%rip), %xmm3
	mulsd	176(%rsp), %xmm0
	movaps	%xmm5, %xmm1
	divsd	%xmm3, %xmm1
	call	pow@PLT
	movsd	200(%rsp), %xmm1
	movsd	264(%rsp), %xmm2
	mulsd	%xmm0, %xmm1
	jmp	.L1330
.L1479:
	movq	16(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbp), %xmm1
.L1330:
	movsd	%xmm1, 176(%rsp)
	movsd	%xmm2, 40(%rsp)
	call	rand@PLT
	movsd	.LC8(%rip), %xmm3
	movsd	176(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movsd	40(%rsp), %xmm2
	movq	calc(%rip), %rax
	divsd	%xmm1, %xmm3
	movsd	%xmm0, 152(%rax)
	comisd	%xmm0, %xmm3
	jbe	.L1332
	cvtsi2sdl	%r13d, %xmm0
	mulsd	.LC45(%rip), %xmm0
	movl	$99000, %r13d
	mulsd	136(%rsp), %xmm0
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 40(%rsp)
	movsd	.LC45(%rip), %xmm0
	mulsd	136(%rsp), %xmm0
	movsd	40(%rsp), %xmm1
	divsd	%xmm0, %xmm1
	cvttsd2sil	%xmm1, %eax
	movl	%eax, 136(%rsp)
.L1333:
	call	rand@PLT
	movq	128(%rsp), %rsi
	cvtsi2sdl	136(%rsp), %xmm0
	addsd	.LC306(%rip), %xmm0
	movsd	40(%rsp), %xmm7
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	mulsd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	movq	molecs(%rip), %rax
	movq	32(%rax), %rax
	movq	(%rax,%r12), %rax
	cvttsd2sil	%xmm0, %ecx
	movl	%ecx, (%rax,%rsi)
	movq	gas(%rip), %rax
	cvtsi2sdl	%ecx, %xmm3
	mulsd	.LC45(%rip), %xmm3
	movq	360(%rax), %rax
	movq	8(%rax), %rsi
	movq	(%rsi,%r12), %rsi
	mulsd	(%rsi,%rbp), %xmm3
	comisd	%xmm3, %xmm7
	ja	.L1503
.L1335:
	decl	%r13d
	jne	.L1333
	movl	$99001, %esi
	leaq	_ZSt4cout(%rip), %rdi
	leaq	.LC59(%rip), %rbx
	call	_ZNSolsEi@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	40(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	136(%rsp), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	408(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L1489
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	addq	$424, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSolsEPFRSoS_E@PLT
.L1503:
	.cfi_restore_state
	movaps	%xmm3, %xmm1
	movq	24(%rax), %rax
	movq	168(%rsp), %rcx
	movsd	%xmm3, 200(%rsp)
	divsd	%xmm7, %xmm1
	movsd	.LC8(%rip), %xmm0
	movq	(%rax,%rbp), %rax
	subsd	%xmm1, %xmm0
	movsd	.LC70(%rip), %xmm1
	subsd	(%rax,%rcx), %xmm1
	call	pow@PLT
	movsd	%xmm0, 176(%rsp)
	call	rand@PLT
	movsd	176(%rsp), %xmm0
	movsd	200(%rsp), %xmm3
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	comisd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	jbe	.L1335
	movsd	40(%rsp), %xmm2
	subsd	%xmm3, %xmm2
.L1332:
	incl	88(%rsp)
	addq	$8, %r12
	jmp	.L1326
.L1325:
	movq	gas(%rip), %rax
	movq	488(%rax), %rdx
	movq	8(%rdx), %rcx
	cmpl	$0, (%rcx,%rbx,4)
	jle	.L1343
	movq	16(%rdx), %rcx
	cmpl	$0, (%rcx,%rbx,4)
	jne	.L1340
	movslq	24(%rsp), %rdx
	cmpl	$0, (%rcx,%rdx,4)
	jne	.L1340
	movq	352(%rax), %rax
	movsd	.LC8(%rip), %xmm0
	movq	56(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	divsd	(%rax,%rdx,8), %xmm0
	jmp	.L1341
.L1340:
	movq	output(%rip), %rdx
	movq	328(%rax), %rax
	movq	72(%rsp), %rcx
	movsd	.LC8(%rip), %xmm1
	movq	136(%rdx), %rdx
	movq	64(%rdx), %rdx
	movsd	(%rdx,%rcx), %xmm0
	movq	8(%rax), %rdx
	divsd	(%rdx,%rbx,8), %xmm1
	movq	16(%rax), %rdx
	movq	24(%rax), %rax
	movsd	(%rdx,%rbx,8), %xmm3
	mulsd	%xmm0, %xmm3
	mulsd	%xmm0, %xmm0
	mulsd	(%rax,%rbx,8), %xmm0
	addsd	%xmm3, %xmm1
	addsd	%xmm1, %xmm0
.L1341:
	movsd	%xmm2, 88(%rsp)
	movsd	%xmm0, 40(%rsp)
	call	rand@PLT
	movsd	40(%rsp), %xmm0
	movsd	88(%rsp), %xmm2
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	comisd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	jbe	.L1343
	movq	molecs(%rip), %rax
	movslq	48(%rsp), %rbp
	movq	gas(%rip), %rdx
	movslq	24(%rsp), %r13
	movq	64(%rax), %rax
	addsd	(%rax,%rbp,8), %xmm2
	movq	488(%rdx), %rax
	movq	8(%rax), %rax
	movq	%xmm2, %r12
	movl	(%rax,%rbx,4), %eax
	cmpl	$2, %eax
	jne	.L1344
	call	rand@PLT
	movsd	.LC64(%rip), %xmm1
	movsd	.LC8(%rip), %xmm6
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	subsd	(%rax,%r13,8), %xmm1
	divsd	%xmm1, %xmm6
	movaps	%xmm6, %xmm1
	call	pow@PLT
	movaps	%xmm0, %xmm1
	movsd	.LC8(%rip), %xmm0
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 304(%rsp)
	jmp	.L1345
.L1344:
	movq	352(%rdx), %rdx
	cvtsi2sdl	%eax, %xmm0
	mulsd	.LC7(%rip), %xmm0
	leaq	304(%rsp), %rdi
	movsd	.LC70(%rip), %xmm1
	subsd	.LC8(%rip), %xmm0
	movq	24(%rdx), %rdx
	movq	(%rdx,%rbx,8), %rdx
	subsd	(%rdx,%r13,8), %xmm1
	call	_Z3LBSddRd
.L1345:
	movq	%r12, %xmm0
	movq	molecs(%rip), %rax
	movq	%r12, %xmm2
	mulsd	304(%rsp), %xmm0
	movq	64(%rax), %rax
	subsd	%xmm0, %xmm2
	movsd	%xmm0, (%rax,%rbp,8)
.L1343:
	cmpl	$2, 112(%rsp)
	je	.L1504
	movl	96(%rsp), %eax
	movl	$2, 112(%rsp)
	movslq	8(%rsp), %rbx
	movl	%eax, 24(%rsp)
	movl	80(%rsp), %eax
	movl	%eax, 48(%rsp)
	jmp	.L1346
.L1504:
	movq	gas(%rip), %rax
	movq	104(%rsp), %rbx
	addsd	%xmm2, %xmm2
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r14,8), %rax
	divsd	(%rax,%rbx,8), %xmm2
	movaps	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	%xmm0, 112(%rsp)
.L1308:
	movq	gas(%rip), %rax
	movq	104(%rsp), %rbx
	movsd	.LC270(%rip), %xmm1
	movq	352(%rax), %rax
	movq	64(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0
	subsd	.LC8(%rip), %xmm0
	leaq	280(%rsp), %rbx
	andps	.LC256(%rip), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1480
	call	rand@PLT
	movsd	.LC8(%rip), %xmm0
	cvtsi2sdl	%eax, %xmm2
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm2
	movsd	%xmm2, 152(%rax)
	addsd	%xmm2, %xmm2
	subsd	.LC8(%rip), %xmm2
	movaps	%xmm2, %xmm1
	movsd	%xmm2, 24(%rsp)
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	call	sqrt@PLT
	movsd	24(%rsp), %xmm2
	mulsd	112(%rsp), %xmm2
	movsd	%xmm0, 8(%rsp)
	movsd	%xmm2, 384(%rsp)
	call	rand@PLT
	leaq	272(%rsp), %rsi
	movq	%rbx, %rdi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	8(%rsp), %xmm1
	movsd	272(%rsp), %xmm2
	mulsd	%xmm1, %xmm2
	mulsd	280(%rsp), %xmm1
	mulsd	112(%rsp), %xmm2
	mulsd	112(%rsp), %xmm1
	jmp	.L1349
.L1480:
	movsd	112(%rsp), %xmm3
	divsd	56(%rsp), %xmm3
	movsd	%xmm3, 96(%rsp)
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm1
	call	pow@PLT
	addsd	%xmm0, %xmm0
	movaps	%xmm0, %xmm4
	subsd	.LC8(%rip), %xmm4
	movsd	.LC8(%rip), %xmm0
	movaps	%xmm4, %xmm1
	movsd	%xmm4, 88(%rsp)
	mulsd	%xmm4, %xmm1
	subsd	%xmm1, %xmm0
	call	sqrt@PLT
	movsd	%xmm0, 72(%rsp)
	call	rand@PLT
	leaq	272(%rsp), %rsi
	movq	%rbx, %rdi
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	mulsd	.LC44(%rip), %xmm0
	call	sincos@PLT
	movsd	328(%rsp), %xmm1
	movsd	336(%rsp), %xmm5
	movsd	272(%rsp), %xmm9
	movsd	280(%rsp), %xmm8
	movaps	%xmm1, %xmm0
	movaps	%xmm5, %xmm2
	movsd	%xmm1, 24(%rsp)
	mulsd	%xmm5, %xmm2
	movsd	%xmm9, 48(%rsp)
	mulsd	%xmm1, %xmm0
	movsd	%xmm8, 40(%rsp)
	movsd	%xmm5, 8(%rsp)
	addsd	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	72(%rsp), %xmm7
	movsd	40(%rsp), %xmm8
	movaps	%xmm0, %xmm6
	movsd	88(%rsp), %xmm4
	movsd	320(%rsp), %xmm0
	movaps	%xmm7, %xmm2
	movsd	96(%rsp), %xmm3
	movsd	24(%rsp), %xmm1
	mulsd	%xmm8, %xmm2
	movaps	%xmm0, %xmm10
	movsd	8(%rsp), %xmm5
	movsd	48(%rsp), %xmm9
	mulsd	%xmm4, %xmm10
	mulsd	%xmm6, %xmm2
	addsd	%xmm10, %xmm2
	movaps	%xmm1, %xmm10
	mulsd	%xmm0, %xmm10
	mulsd	%xmm5, %xmm0
	mulsd	%xmm3, %xmm2
	mulsd	%xmm8, %xmm10
	mulsd	%xmm8, %xmm0
	movsd	%xmm2, 384(%rsp)
	movsd	56(%rsp), %xmm2
	mulsd	%xmm5, %xmm2
	mulsd	%xmm4, %xmm5
	mulsd	%xmm9, %xmm2
	subsd	%xmm10, %xmm2
	movaps	%xmm1, %xmm10
	mulsd	56(%rsp), %xmm1
	mulsd	%xmm4, %xmm10
	mulsd	%xmm7, %xmm2
	mulsd	%xmm9, %xmm1
	divsd	%xmm6, %xmm2
	addsd	%xmm0, %xmm1
	mulsd	%xmm7, %xmm1
	divsd	%xmm6, %xmm1
	addsd	%xmm10, %xmm2
	mulsd	%xmm3, %xmm2
	addsd	%xmm5, %xmm1
	mulsd	%xmm3, %xmm1
.L1349:
	movq	molecs(%rip), %rdx
	movslq	80(%rsp), %rsi
	movsd	%xmm2, 392(%rsp)
	movl	$8, %eax
	movsd	%xmm1, 400(%rsp)
	leaq	376(%rsp), %r9
	movq	48(%rdx), %r8
	leaq	0(,%rsi,8), %rdi
.L1350:
	movsd	152(%rsp), %xmm1
	mulsd	(%rax,%r9), %xmm1
	movsd	344(%rsp,%rax), %xmm0
	movq	(%r8,%rax), %rcx
	addq	$8, %rax
	movq	64(%rsp), %rbx
	movaps	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	subsd	%xmm1, %xmm0
	movsd	%xmm2, (%rcx,%rbx)
	movsd	%xmm0, (%rcx,%rdi)
	cmpq	$32, %rax
	jne	.L1350
	movq	24(%rdx), %rax
	movq	(%rsp), %rbx
	movl	80(%rsp), %ecx
	movl	%ecx, (%rax,%rbx,4)
	movl	16(%rsp), %ebx
	movl	%ebx, (%rax,%rsi,4)
.L1129:
	incl	236(%rsp)
	movl	236(%rsp), %ebx
	cmpl	%ebx, 232(%rsp)
	jge	.L1351
.L1119:
	incl	216(%rsp)
	jmp	.L1118
.L1490:
	call	clock@PLT
	leaq	.LC315(%rip), %rsi
	subq	start(%rip), %rax
	leaq	_ZSt4cout(%rip), %rdi
	cvtsi2sdq	%rax, %xmm0
	divsd	.LC314(%rip), %xmm0
	movsd	%xmm0, (%rsp)
	movl	$1, %ebx
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rsp), %xmm0
	leaq	288(%rsp), %rbp
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movl	$10, %esi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@PLT
.L1353:
	movq	molecs(%rip), %rdx
	movl	%ebx, 288(%rsp)
	cmpl	%ebx, 80(%rdx)
	jl	.L1505
	movq	(%rdx), %rdx
	movslq	%ebx, %rax
	cmpl	$0, (%rdx,%rax,4)
	jns	.L1354
	movq	%rbp, %rdi
	call	_Z10REMOVE_MOLRi
.L1354:
	incl	%ebx
	jmp	.L1353
.L1505:
	movq	408(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1356
.L1489:
	call	__stack_chk_fail@PLT
.L1356:
	addq	$424, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4332:
	.size	_Z10COLLISIONSv, .-_Z10COLLISIONSv
	.section	.rodata.str1.1
.LC316:
	.string	"ILEVEL = "
.LC317:
	.string	"KDIV "
.LC318:
	.string	"NC "
.LC319:
	.string	"Number of divisions "
.LC320:
	.string	"Total divisions from sampling cells "
.LC321:
	.string	"Adapted sampling cells "
.LC322:
	.string	"Adapted collision cells "
	.text
	.globl	_Z14ADAPT_CELLS_1Dv
	.type	_Z14ADAPT_CELLS_1Dv, @function
_Z14ADAPT_CELLS_1Dv:
.LFB4319:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$8, %ecx
	xorl	%esi, %esi
	movl	$1, %edx
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$56, %rsp
	.cfi_def_cfa_offset 112
	movsd	.LC8(%rip), %xmm0
	movq	output(%rip), %r8
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	movq	geom(%rip), %rax
	movq	gas(%rip), %r9
	movsd	%xmm0, 32(%rsp)
	movl	(%rax), %edi
.L1507:
	cmpl	%edx, %edi
	jl	.L1569
	movq	136(%r8), %r10
	movq	24(%r10), %r10
	movsd	(%r10,%rcx), %xmm1
	divsd	80(%r9), %xmm1
	comisd	%xmm0, %xmm1
	ja	.L1550
	movaps	%xmm0, %xmm1
	jmp	.L1508
.L1550:
	movb	$1, %sil
.L1508:
	incl	%edx
	addq	$8, %rcx
	movaps	%xmm1, %xmm0
	jmp	.L1507
.L1569:
	testb	%sil, %sil
	je	.L1510
	movsd	%xmm0, 32(%rsp)
.L1510:
	xorl	%ecx, %ecx
	movsd	32(%rsp), %xmm0
	movsd	.LC70(%rip), %xmm1
	movsd	.LC7(%rip), %xmm2
	movl	%ecx, 20(%rax)
	xorl	%ecx, %ecx
.L1511:
	comisd	%xmm1, %xmm0
	movl	20(%rax), %edx
	jbe	.L1570
	mulsd	%xmm2, %xmm0
	incl	%edx
	movb	$1, %cl
	movl	%edx, 20(%rax)
	jmp	.L1511
.L1570:
	testb	%cl, %cl
	je	.L1513
	movsd	%xmm0, 32(%rsp)
.L1513:
	cmpl	$2, %edx
	jle	.L1514
	movl	$2, 20(%rax)
.L1514:
	leaq	16+file_9(%rip), %rbx
	leaq	.LC316(%rip), %rsi
	movabsq	$2305843009213693950, %r15
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	20(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %r12
	movsd	.LC50(%rip), %xmm0
	movl	20(%r12), %ebp
	cvtsi2sdl	%ebp, %xmm1
	incl	%ebp
	movslq	%ebp, %rbp
	call	pow@PLT
	movl	12(%r12), %r13d
	cvttsd2sil	%xmm0, %r14d
	imull	%r14d, %r13d
	cmpq	%rbp, %r15
	jnb	.L1515
.L1517:
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L1567
	call	__cxa_throw_bad_array_new_length@PLT
.L1515:
	movabsq	$1152921504606846975, %rax
	leal	1(%r13), %ebp
	movslq	%ebp, %rbp
	cmpq	%rbp, %rax
	jb	.L1517
	leaq	0(,%rbp,8), %rdi
	call	_Znam@PLT
	movq	%rax, %r12
	movq	geom(%rip), %rax
	movl	20(%rax), %edi
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %r15
	jb	.L1517
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, %r15
	leaq	0(,%rbp,4), %rax
	xorl	%ebp, %ebp
	movq	%rax, (%rsp)
.L1518:
	movq	geom(%rip), %rax
	cmpl	%ebp, 20(%rax)
	jl	.L1571
	movq	(%rsp), %rdi
	call	_Znam@PLT
	movq	%rax, (%r15,%rbp,8)
	incq	%rbp
	jmp	.L1518
.L1571:
	movq	128(%rax), %rax
	cvtsi2sdl	%r13d, %xmm1
	movl	$1, %ebp
	movsd	16(%rax), %xmm0
	subsd	8(%rax), %xmm0
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rsp)
.L1520:
	movq	geom(%rip), %rax
	cmpl	%ebp, %r13d
	jl	.L1572
	movq	128(%rax), %rax
	cvtsi2sdl	%ebp, %xmm0
	leaq	24(%rsp), %rdx
	subsd	.LC7(%rip), %xmm0
	mulsd	(%rsp), %xmm0
	leaq	20(%rsp), %rsi
	addsd	8(%rax), %xmm0
	leaq	32(%rsp), %rdi
	movsd	%xmm0, 32(%rsp)
	call	_Z12FIND_CELL_1DRdRiS0_
	cvtsi2sdl	%r14d, %xmm0
	movslq	24(%rsp), %rdx
	movq	output(%rip), %rax
	movq	gas(%rip), %rcx
	movq	136(%rax), %rax
	mulsd	80(%rcx), %xmm0
	movq	24(%rax), %rax
	movsd	(%rax,%rdx,8), %xmm1
	divsd	%xmm0, %xmm1
	movsd	%xmm1, (%r12,%rbp,8)
	incq	%rbp
	jmp	.L1520
.L1572:
	cmpl	$0, 12(%rax)
	jg	.L1568
	leaq	.LC317(%rip), %rsi
	movq	%rbx, %rdi
	xorl	%ebp, %ebp
	xorl	%r14d, %r14d
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIPKvEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC318(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	xorl	%esi, %esi
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIPKvEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	_ZSt3cin(%rip), %rdi
	call	_ZNSi3getEv@PLT
	leaq	.LC319(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	12(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %r13
	movq	$0x000000000, 32(%rsp)
.L1524:
	movsd	32(%rsp), %xmm5
	movl	%r14d, 0(%r13)
	movl	%ebp, %edi
	movsd	%xmm5, (%rsp)
	cmpl	%ebp, 20(%r13)
	jl	.L1573
	cvtsi2sdl	0(,%rbp,4), %xmm2
	movsd	.LC50(%rip), %xmm0
	movsd	%xmm2, 8(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	8(%rsp), %xmm2
	addl	0(,%rbp,4), %r14d
	incq	%rbp
	divsd	%xmm0, %xmm2
	movsd	(%rsp), %xmm0
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 32(%rsp)
	jmp	.L1524
.L1573:
	leaq	.LC320(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rbx, %rdi
	leaq	.LC321(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%rbx, %rdi
	leaq	.LC322(%rip), %rsi
	xorl	%ebx, %ebx
	movl	(%rax), %edx
	imull	8(%rax), %edx
	movl	%edx, 4(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	4(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1526:
	movq	geom(%rip), %rax
	movq	64(%rax), %rdi
	cmpl	%ebx, 20(%rax)
	jl	.L1574
	movq	(%rdi,%rbx,8), %rdi
	incq	%rbx
	call	cudaFree@PLT
	jmp	.L1526
.L1574:
	call	cudaFree@PLT
	xorl	%ebx, %ebx
.L1528:
	movq	geom(%rip), %rax
	movq	136(%rax), %rax
	movq	(%rax,%rbx), %rdi
	addq	$8, %rbx
	call	cudaFree@PLT
	cmpq	$40, %rbx
	jne	.L1528
	movq	geom(%rip), %rax
	xorl	%ebx, %ebx
	movq	136(%rax), %rdi
	call	cudaFree@PLT
	movq	geom(%rip), %rax
	movq	48(%rax), %rdi
	call	cudaFree@PLT
.L1529:
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	(%rax,%rbx), %rdi
	addq	$8, %rbx
	call	cudaFree@PLT
	cmpq	$48, %rbx
	jne	.L1529
	movq	geom(%rip), %rax
	xorl	%ebx, %ebx
	movq	144(%rax), %rdi
	call	cudaFree@PLT
.L1530:
	movq	geom(%rip), %rax
	movq	56(%rax), %rax
	movq	(%rax,%rbx), %rdi
	addq	$8, %rbx
	call	cudaFree@PLT
	cmpq	$32, %rbx
	jne	.L1530
	movq	geom(%rip), %rax
	xorl	%ebx, %ebx
	movq	56(%rax), %rdi
	call	cudaFree@PLT
	movq	output(%rip), %rax
	movq	64(%rax), %rdi
	call	cudaFree@PLT
	movq	output(%rip), %rax
	movq	72(%rax), %rdi
	call	cudaFree@PLT
	movq	output(%rip), %rax
	movq	80(%rax), %rdi
	call	cudaFree@PLT
.L1531:
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	(%rax,%rbx), %rdi
	addq	$8, %rbx
	call	cudaFree@PLT
	cmpq	$192, %rbx
	jne	.L1531
	movq	output(%rip), %rax
	xorl	%ebp, %ebp
	movq	136(%rax), %rdi
	call	cudaFree@PLT
.L1532:
	xorl	%ebx, %ebx
.L1535:
	movq	output(%rip), %rax
	movq	176(%rax), %rax
	movq	(%rax,%rbp), %rdi
	movq	geom(%rip), %rax
	cmpl	%ebx, (%rax)
	jl	.L1575
	movq	(%rdi,%rbx,8), %rdi
	incq	%rbx
	call	cudaFree@PLT
	jmp	.L1535
.L1575:
	call	cudaFree@PLT
	addq	$8, %rbp
	cmpq	$104, %rbp
	jne	.L1532
	movq	output(%rip), %rax
	xorl	%ebp, %ebp
	movq	176(%rax), %rdi
	call	cudaFree@PLT
.L1536:
	movq	gas(%rip), %rax
	movl	424(%rax), %eax
	addl	$9, %eax
	cmpl	%ebp, %eax
	jl	.L1538
	leaq	0(,%rbp,8), %r13
	xorl	%ebx, %ebx
.L1539:
	movq	output(%rip), %rax
	movq	168(%rax), %rax
	movq	(%rax,%r13), %rdi
	movq	geom(%rip), %rax
	cmpl	%ebx, (%rax)
	jl	.L1576
	movq	(%rdi,%rbx,8), %rdi
	incq	%rbx
	call	cudaFree@PLT
	jmp	.L1539
.L1576:
	call	cudaFree@PLT
	incq	%rbp
	jmp	.L1536
.L1538:
	movq	output(%rip), %rax
	movq	168(%rax), %rdi
	call	cudaFree@PLT
	movq	geom(%rip), %rdx
	xorl	%eax, %eax
	movl	20(%rdx), %edi
.L1540:
	movl	16(%rdx), %esi
	cmpl	%eax, %edi
	jl	.L1577
	movl	0(,%rax,4), %ecx
	cmpl	%esi, %ecx
	jle	.L1541
	movl	%ecx, 16(%rdx)
.L1541:
	incq	%rax
	jmp	.L1540
.L1577:
	addq	$64, %rdx
	incl	%edi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	geom(%rip), %rax
	movl	$5, %edi
	movl	(%rax), %esi
	leaq	136(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rdi
	movl	(%rdi), %eax
	addq	$48, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	geom(%rip), %rax
	movl	$6, %edi
	movl	4(%rax), %esi
	leaq	144(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rax
	movl	$4, %edi
	movl	4(%rax), %esi
	leaq	56(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	geom(%rip), %rdx
	movabsq	$1152921504606846975, %rcx
	movl	4(%rdx), %eax
	incl	%eax
	cltq
	cmpq	%rax, %rcx
	jb	.L1517
	movl	(%rdx), %edi
	movq	output(%rip), %rax
	incl	%edi
	leaq	64(%rax), %rsi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	72(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	80(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	movl	$24, %edi
	leaq	136(%rax), %rdx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	output(%rip), %rax
	movl	$13, %edi
	leaq	176(%rax), %rcx
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%edx
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movq	output(%rip), %rax
	leaq	168(%rax), %rcx
	movq	geom(%rip), %rax
	leal	1(%rdi), %edx
	addl	$11, %edi
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	geom(%rip), %rax
	xorl	%edx, %edx
	cmpl	$0, 12(%rax)
	movq	%rdx, (%rax)
	movq	%rdx, 64(%rax)
	jle	.L1551
.L1568:
	movq	0, %rax
	ud2
.L1551:
	xorl	%ebx, %ebx
	leaq	28(%rsp), %rbp
.L1543:
	movq	molecs(%rip), %rax
	incq	%rbx
	cmpl	%ebx, 80(%rax)
	jl	.L1578
	movq	(%rax), %rdx
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	leaq	(%rdx,%rbx,4), %rsi
	movq	%rbp, %rdx
	leaq	(%rax,%rbx,8), %rdi
	call	_Z12FIND_CELL_1DRdRiS0_
	movq	molecs(%rip), %rax
	movq	(%rax), %rax
	movl	(%rax,%rbx,4), %eax
	movl	%eax, 20(%rsp)
	jmp	.L1543
.L1578:
	xorl	%ebx, %ebx
.L1545:
	movq	geom(%rip), %rax
	cmpl	%ebx, 20(%rax)
	jl	.L1579
	movq	(%r15,%rbx,8), %rdi
	testq	%rdi, %rdi
	je	.L1546
	call	_ZdaPv@PLT
.L1546:
	incq	%rbx
	jmp	.L1545
.L1579:
	movq	%r15, %rdi
	call	_ZdaPv@PLT
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1548
.L1567:
	call	__stack_chk_fail@PLT
.L1548:
	addq	$56, %rsp
	.cfi_def_cfa_offset 56
	movq	%r12, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZdaPv@PLT
	.cfi_endproc
.LFE4319:
	.size	_Z14ADAPT_CELLS_1Dv, .-_Z14ADAPT_CELLS_1Dv
	.section	.rodata.str1.1
.LC324:
	.string	"DUP "
.LC325:
	.string	" OUTSIDE FLOWFIELD AT "
.LC326:
	.string	" VEL "
	.text
	.globl	_Z17MOLECULES_MOVE_1Dv
	.type	_Z17MOLECULES_MOVE_1Dv, @function
_Z17MOLECULES_MOVE_1Dv:
.LFB4324:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$184, %rsp
	.cfi_def_cfa_offset 240
	movq	%fs:40, %rax
	movq	%rax, 168(%rsp)
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$4, 8(%rax)
	jne	.L1581
	movq	calc(%rip), %rdx
	cmpl	$1, 76(%rdx)
	jne	.L1581
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	xorl	%eax, %eax
.L1582:
	cmpl	%eax, %ecx
	jl	.L1682
	movq	304(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L1582
.L1682:
	movq	molecs(%rip), %rax
	movl	80(%rax), %eax
	movl	%eax, 72(%rdx)
.L1581:
	movl	$1, 116(%rsp)
.L1584:
	movl	116(%rsp), %eax
	movq	molecs(%rip), %r14
	movl	%eax, 60(%rsp)
	cmpl	%eax, 80(%r14)
	jl	.L1683
	movq	(%r14), %rax
	movslq	60(%rsp), %r13
	movslq	(%rax,%r13,4), %rdx
	movq	calc(%rip), %rax
	movl	44(%rax), %ecx
	testl	$-3, %ecx
	jne	.L1585
	movsd	104(%rax), %xmm6
	movsd	%xmm6, 8(%rsp)
	jmp	.L1586
.L1585:
	decl	%ecx
	jne	.L1586
	movq	geom(%rip), %rcx
	movq	144(%rcx), %rcx
	movq	24(%rcx), %rcx
	movsd	(%rcx,%rdx,8), %xmm0
	addsd	%xmm0, %xmm0
	movsd	%xmm0, 8(%rsp)
.L1586:
	movq	56(%r14), %r15
	leaq	0(,%r13,8), %rbx
	movsd	80(%rax), %xmm0
	movsd	.LC7(%rip), %xmm1
	mulsd	8(%rsp), %xmm1
	addq	%rbx, %r15
	movsd	(%r15), %xmm7
	subsd	%xmm7, %xmm0
	movsd	%xmm7, 64(%rsp)
	comisd	%xmm1, %xmm0
	jbe	.L1587
	movq	40(%r14), %rdx
	movq	geom(%rip), %r12
	movq	8(%rdx), %rcx
	movl	24(%r12), %ebp
	addq	%rbx, %rcx
	cmpl	$1, 36(%r12)
	movq	%rcx, %rdx
	jne	.L1652
	movsd	96(%r12), %xmm5
	movsd	(%rcx), %xmm0
	movl	%ebp, %edi
	movq	%rax, 32(%rsp)
	movq	%rcx, 24(%rsp)
	movsd	%xmm5, 16(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	16(%rsp), %xmm0
	movq	24(%rsp), %rdx
	addsd	.LC8(%rip), %xmm0
	movq	32(%rsp), %rax
	movsd	%xmm0, 96(%rsp)
	jmp	.L1589
.L1652:
	movq	.LC8(%rip), %rcx
	movq	%rcx, 96(%rsp)
.L1589:
	movsd	64(%rsp), %xmm0
	addsd	8(%rsp), %xmm0
	movq	48(%r14), %r14
	movsd	8(%rsp), %xmm5
	movsd	%xmm0, (%r15)
	movsd	.LC8(%rip), %xmm0
	addsd	216(%rax), %xmm0
	movsd	%xmm0, 216(%rax)
	movq	8(%r14), %rax
	movsd	(%rdx), %xmm4
	addq	%rbx, %rax
	movaps	%xmm4, %xmm3
	movsd	%xmm4, 32(%rsp)
	movsd	(%rax), %xmm1
	movq	%rax, 40(%rsp)
	movsd	%xmm4, 128(%rsp)
	mulsd	%xmm1, %xmm5
	addsd	%xmm5, %xmm3
	movsd	%xmm5, 48(%rsp)
	movsd	%xmm5, 136(%rsp)
	movsd	%xmm3, 120(%rsp)
	testl	%ebp, %ebp
	jle	.L1590
	movq	24(%r14), %rdx
	movsd	8(%rsp), %xmm2
	movq	$0x000000000, 144(%rsp)
	mulsd	(%rdx,%r13,8), %xmm2
	movsd	%xmm2, 152(%rsp)
	cmpl	$2, %ebp
	jne	.L1591
	movq	16(%r14), %rdx
	movsd	8(%rsp), %xmm0
	mulsd	(%rdx,%r13,8), %xmm0
	movsd	%xmm0, 144(%rsp)
.L1591:
	movsd	144(%rsp), %xmm0
	mulsd	%xmm2, %xmm2
	movsd	%xmm1, 24(%rsp)
	movsd	%xmm3, 16(%rsp)
	movaps	%xmm0, %xmm4
	mulsd	%xmm0, %xmm4
	movaps	%xmm3, %xmm0
	mulsd	%xmm3, %xmm0
	addsd	%xmm4, %xmm0
	addsd	%xmm2, %xmm0
	call	sqrt@PLT
	movsd	16(%rsp), %xmm3
	movsd	24(%rsp), %xmm1
	movsd	%xmm0, 104(%rsp)
	jmp	.L1592
.L1590:
	jne	.L1592
	movl	$4, %r12d
	movl	$1, %ebx
.L1607:
	testl	%ebp, %ebp
	jne	.L1593
	movq	geom(%rip), %r13
	movl	116(%rsp), %r14d
	movsd	120(%rsp), %xmm1
	movq	128(%r13), %r15
	cmpl	$1, %ebx
	jne	.L1594
	movsd	8(%r15), %xmm0
	comisd	%xmm1, %xmm0
	jmp	.L1677
.L1594:
	movq	molecs(%rip), %rdx
	movslq	%r14d, %rax
	movq	56(%rdx), %rdx
	movsd	(%rdx,%rax,8), %xmm0
	mulsd	88(%r13), %xmm0
	addsd	16(%r15), %xmm0
	comisd	%xmm0, %xmm1
.L1677:
	jbe	.L1593
	movq	40(%r13), %rcx
	leaq	(%rcx,%r12), %rdx
	movl	(%rdx), %eax
	leal	-3(%rax), %esi
	cmpl	$1, %esi
	jbe	.L1657
	testl	%eax, %eax
	jne	.L1597
.L1657:
	movsd	120(%r13), %xmm0
	comisd	8(%r15), %xmm0
	jbe	.L1599
	movq	gas(%rip), %rax
	movq	molecs(%rip), %rdi
	movq	calc(%rip), %rsi
	movq	320(%rax), %r8
	movq	8(%rdi), %rdi
	movslq	%r14d, %rax
	movsd	232(%rsi), %xmm0
	movslq	(%rdi,%rax,4), %rdi
	movq	40(%r8), %rax
	subsd	(%rax,%rdi,8), %xmm0
	movsd	%xmm0, 232(%rsi)
.L1599:
	cmpl	$4, 8(%rcx)
	jne	.L1601
	movq	calc(%rip), %rcx
	cmpl	$1, 76(%rcx)
	jne	.L1601
	movq	molecs(%rip), %rsi
	movslq	%r14d, %rax
	movsd	.LC8(%rip), %xmm0
	movq	8(%rsi), %rsi
	movslq	(%rsi,%rax,4), %rsi
	movq	304(%rcx), %rax
	leaq	(%rax,%rsi,8), %rax
	addsd	(%rax), %xmm0
	movsd	%xmm0, (%rax)
.L1601:
	leaq	116(%rsp), %rdi
	movq	%rdx, 16(%rsp)
	movl	$1, %ebp
	call	_Z10REMOVE_MOLRi
	leal	-1(%r14), %eax
	movq	16(%rsp), %rdx
	movl	%eax, 116(%rsp)
.L1597:
	movl	(%rdx), %edx
	movslq	116(%rsp), %rax
	cmpl	$1, %edx
	jne	.L1602
	movl	32(%r13), %edx
	testl	%edx, %edx
	je	.L1659
	cmpl	$1, %ebx
	jne	.L1603
.L1659:
	movsd	(%r15,%r12,2), %xmm0
	movq	molecs(%rip), %rdx
	addsd	%xmm0, %xmm0
	movq	48(%rdx), %rdx
	movq	8(%rdx), %rdx
	subsd	%xmm1, %xmm0
	leaq	(%rdx,%rax,8), %rax
	movsd	%xmm0, 120(%rsp)
	movsd	(%rax), %xmm0
	xorps	.LC43(%rip), %xmm0
	movsd	%xmm0, (%rax)
	jmp	.L1593
.L1603:
	decl	%edx
	jne	.L1593
	movq	molecs(%rip), %rdx
	movsd	88(%r13), %xmm0
	movsd	64(%rsp), %xmm1
	movq	48(%rdx), %rdx
	mulsd	%xmm0, %xmm1
	movq	8(%rdx), %rdx
	addsd	16(%r15), %xmm1
	subsd	32(%rsp), %xmm1
	leaq	(%rdx,%rax,8), %rax
	movsd	(%rax), %xmm2
	movaps	%xmm2, %xmm3
	subsd	%xmm0, %xmm3
	addsd	%xmm0, %xmm0
	divsd	%xmm3, %xmm1
	movsd	8(%rsp), %xmm3
	subsd	%xmm2, %xmm0
	movsd	%xmm0, (%rax)
	subsd	%xmm1, %xmm3
	mulsd	%xmm1, %xmm2
	addsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 120(%rsp)
	jmp	.L1593
.L1602:
	cmpl	$2, %edx
	jne	.L1593
	leaq	120(%rsp), %rdx
	leaq	116(%rsp), %rdi
	movl	%ebx, %esi
	call	_Z10REFLECT_1DRiiRd
.L1593:
	addq	$4, %r12
	decl	%ebx
	jne	.L1608
	movl	$2, %ebx
	jmp	.L1607
.L1592:
	movq	128(%r12), %rdx
	leaq	152(%rsp), %rax
	movq	%rax, 16(%rsp)
	leaq	144(%rsp), %rax
	movsd	8(%rdx), %xmm0
	movq	%rax, 24(%rsp)
	comisd	%xmm3, %xmm0
	jbe	.L1609
	xorps	%xmm2, %xmm2
	comisd	%xmm2, %xmm0
	jbe	.L1609
	movq	16(%rsp), %rcx
	leaq	136(%rsp), %rsi
	leaq	8(%rdx), %r8
	movq	%rax, %rdx
	leaq	128(%rsp), %rdi
	leaq	160(%rsp), %r9
	movq	%rsi, 64(%rsp)
	movq	%rdi, 32(%rsp)
	call	_Z3RBCRdS_S_S_S_S_
	movsd	.LC8(%rip), %xmm1
	movsd	160(%rsp), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1620
	movq	40(%r12), %rdx
	movq	32(%rsp), %rdi
	leaq	116(%rsp), %rbp
	movq	64(%rsp), %rsi
	cmpl	$2, 4(%rdx)
	jne	.L1614
	movsd	48(%rsp), %xmm1
	movq	24(%r14), %rdx
	leaq	120(%rsp), %r15
	movq	%r15, %r8
	mulsd	%xmm0, %xmm1
	addq	%rbx, %rdx
	movsd	%xmm1, 136(%rsp)
	movsd	144(%rsp), %xmm1
	mulsd	%xmm0, %xmm1
	mulsd	152(%rsp), %xmm0
	movsd	%xmm1, 144(%rsp)
	movsd	%xmm0, 152(%rsp)
	pushq	%rdx
	.cfi_remember_state
	.cfi_def_cfa_offset 248
	addq	16(%r14), %rbx
	pushq	%rbx
	.cfi_def_cfa_offset 256
	movq	40(%rsp), %rdx
	movq	56(%rsp), %r9
	movq	32(%rsp), %rcx
	call	_Z4AIFXRdS_S_S_S_S_S_S_
	movq	%r15, %rdx
	movl	$1, %esi
	movq	%rbp, %rdi
	call	_Z10REFLECT_1DRiiRd
	jmp	.L1679
.L1614:
	.cfi_restore_state
	movq	%rbp, %rdi
	jmp	.L1680
.L1609:
	movl	32(%r12), %ecx
	testl	%ecx, %ecx
	jne	.L1616
	movsd	104(%rsp), %xmm6
	comisd	16(%rdx), %xmm6
	jbe	.L1617
	leaq	16(%rdx), %r8
	movq	16(%rsp), %rcx
	movq	24(%rsp), %rdx
	leaq	136(%rsp), %r15
	leaq	128(%rsp), %rdi
	leaq	160(%rsp), %r9
	movq	%r15, %rsi
	movq	%rdi, 32(%rsp)
	call	_Z3RBCRdS_S_S_S_S_
	movsd	.LC8(%rip), %xmm1
	movsd	160(%rsp), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1620
	movq	40(%r12), %rdx
	movq	32(%rsp), %rdi
	cmpl	$2, 8(%rdx)
	jne	.L1621
	movsd	48(%rsp), %xmm1
	movq	24(%r14), %rdx
	leaq	120(%rsp), %rbp
	movq	%r15, %rsi
	movq	%rbp, %r8
	mulsd	%xmm0, %xmm1
	addq	%rbx, %rdx
	movsd	%xmm1, 136(%rsp)
	movsd	144(%rsp), %xmm1
	mulsd	%xmm0, %xmm1
	mulsd	152(%rsp), %xmm0
	movsd	%xmm1, 144(%rsp)
	movsd	%xmm0, 152(%rsp)
	pushq	%rdx
	.cfi_def_cfa_offset 248
	addq	16(%r14), %rbx
	pushq	%rbx
	.cfi_def_cfa_offset 256
	movq	56(%rsp), %r9
	movq	32(%rsp), %rcx
	movq	40(%rsp), %rdx
	call	_Z4AIFXRdS_S_S_S_S_S_S_
	movq	geom(%rip), %rax
	movsd	.LC323(%rip), %xmm0
	movq	128(%rax), %rax
	mulsd	16(%rax), %xmm0
	movsd	%xmm0, 136(%rsp)
	popq	%rcx
	.cfi_def_cfa_offset 248
	popq	%rsi
	.cfi_def_cfa_offset 240
	leaq	116(%rsp), %rbx
.L1622:
	movq	geom(%rip), %rax
	movsd	120(%rsp), %xmm0
	movq	128(%rax), %rax
	comisd	16(%rax), %xmm0
	jbe	.L1620
	movq	%rbp, %rdx
	movl	$2, %esi
	movq	%rbx, %rdi
	call	_Z10REFLECT_1DRiiRd
	jmp	.L1622
.L1621:
	leaq	116(%rsp), %rdi
.L1680:
	call	_Z10REMOVE_MOLRi
	movl	60(%rsp), %r12d
	movl	$1, %ebp
	decl	%r12d
	movl	%r12d, 116(%rsp)
	jmp	.L1628
.L1616:
	decl	%ecx
	jne	.L1617
	movsd	88(%r12), %xmm4
	movsd	(%r15), %xmm0
	movsd	16(%rdx), %xmm7
	movsd	104(%rsp), %xmm6
	mulsd	%xmm4, %xmm0
	movsd	%xmm4, 72(%rsp)
	movsd	%xmm7, 88(%rsp)
	addsd	%xmm7, %xmm0
	comisd	%xmm0, %xmm6
	jbe	.L1617
	movq	16(%r14), %r15
	addq	%rbx, %r15
	cmpl	$1, %ebp
	jne	.L1625
	movsd	(%r15), %xmm0
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	jmp	.L1678
.L1625:
	cmpl	$2, %ebp
	jne	.L1626
	movsd	(%r15), %xmm0
	movq	24(%r14), %rdx
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm0
	movsd	(%rdx,%r13,8), %xmm2
	mulsd	%xmm2, %xmm2
	addsd	%xmm1, %xmm0
	addsd	%xmm2, %xmm0
.L1678:
	call	sqrt@PLT
	movsd	%xmm0, 80(%rsp)
.L1626:
	movsd	64(%rsp), %xmm0
	mulsd	72(%rsp), %xmm0
	leaq	136(%rsp), %rsi
	leaq	128(%rsp), %rdi
	addsd	88(%rsp), %xmm0
	movsd	80(%rsp), %xmm1
	subsd	32(%rsp), %xmm0
	subsd	72(%rsp), %xmm1
	movq	24(%r14), %rax
	divsd	%xmm1, %xmm0
	movsd	48(%rsp), %xmm1
	addq	%rbx, %rax
	movaps	%xmm0, %xmm2
	divsd	8(%rsp), %xmm2
	movsd	%xmm0, 32(%rsp)
	movsd	%xmm2, 160(%rsp)
	mulsd	%xmm2, %xmm1
	movsd	%xmm1, 136(%rsp)
	movsd	144(%rsp), %xmm1
	mulsd	%xmm2, %xmm1
	mulsd	152(%rsp), %xmm2
	movsd	%xmm1, 144(%rsp)
	movsd	%xmm2, 152(%rsp)
	pushq	%rax
	.cfi_remember_state
	.cfi_def_cfa_offset 248
	pushq	%r15
	.cfi_def_cfa_offset 256
	movq	56(%rsp), %r9
	movq	32(%rsp), %rcx
	movq	40(%rsp), %rdx
	leaq	136(%rsp), %r8
	call	_Z4AIFXRdS_S_S_S_S_S_S_
	movq	molecs(%rip), %rax
	movsd	24(%rsp), %xmm2
	movsd	48(%rsp), %xmm0
	movq	48(%rax), %rax
	subsd	%xmm0, %xmm2
	addq	8(%rax), %rbx
	movq	geom(%rip), %rax
	movsd	88(%rax), %xmm1
	addsd	%xmm1, %xmm1
	subsd	(%rbx), %xmm1
	mulsd	%xmm1, %xmm2
	movsd	%xmm1, (%rbx)
	addsd	136(%rsp), %xmm2
	movsd	%xmm2, 136(%rsp)
	jmp	.L1679
.L1617:
	.cfi_restore_state
	movq	24(%r14), %rdx
	leaq	136(%rsp), %rsi
	leaq	128(%rsp), %rdi
	addq	%rbx, %rdx
	pushq	%rdx
	.cfi_def_cfa_offset 248
	addq	16(%r14), %rbx
	pushq	%rbx
	.cfi_def_cfa_offset 256
	movq	56(%rsp), %r9
	movq	32(%rsp), %rcx
	movq	40(%rsp), %rdx
	leaq	136(%rsp), %r8
	call	_Z4AIFXRdS_S_S_S_S_S_S_
.L1679:
	popq	%rax
	.cfi_def_cfa_offset 248
	popq	%rdx
	.cfi_def_cfa_offset 240
.L1620:
	movq	molecs(%rip), %rdx
	movq	geom(%rip), %rax
	movq	120(%rsp), %rbp
	movq	56(%rdx), %rdx
	movq	%rbp, %xmm4
	movsd	(%rdx,%r13,8), %xmm0
	mulsd	88(%rax), %xmm0
	movq	128(%rax), %rax
	addsd	16(%rax), %xmm0
	comisd	%xmm0, %xmm4
	ja	.L1627
.L1629:
	xorl	%ebp, %ebp
	jmp	.L1628
.L1627:
	movl	60(%rsp), %esi
	leaq	_ZSt4cout(%rip), %rdi
	leaq	.LC59(%rip), %rbx
	call	_ZNSolsEi@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rbp, %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rbx, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	molecs(%rip), %rdx
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	56(%rdx), %rdx
	movsd	(%rdx,%r13,8), %xmm0
	mulsd	88(%rax), %xmm0
	movq	128(%rax), %rax
	addsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L1629
.L1628:
	movq	geom(%rip), %rax
	movl	36(%rax), %ebx
	cmpl	$1, %ebx
	jne	.L1608
	testl	%ebp, %ebp
	jne	.L1587
	movq	120(%rsp), %r12
	movsd	96(%rax), %xmm5
	xorl	%r14d, %r14d
	movl	24(%rax), %edi
	movq	%r12, %xmm0
	movsd	%xmm5, 16(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	16(%rsp), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	96(%rsp), %xmm0
	addsd	.LC8(%rip), %xmm1
	divsd	%xmm1, %xmm0
.L1681:
	comisd	.LC8(%rip), %xmm0
	jb	.L1630
	subsd	.LC8(%rip), %xmm0
	incl	%r14d
	jmp	.L1681
.L1630:
	movsd	%xmm0, 16(%rsp)
	call	rand@PLT
	movsd	16(%rsp), %xmm0
	cvtsi2sdl	%eax, %xmm1
	divsd	.LC42(%rip), %xmm1
	movq	calc(%rip), %rax
	comisd	%xmm1, %xmm0
	movsd	%xmm1, 152(%rax)
	jb	.L1675
	incl	%r14d
	jmp	.L1635
.L1675:
	testl	%r14d, %r14d
	jne	.L1635
	movl	116(%rsp), %ebx
	leaq	116(%rsp), %rdi
	movl	$1, %ebp
	call	_Z10REMOVE_MOLRi
	decl	%ebx
	movl	%ebx, 116(%rsp)
	jmp	.L1608
.L1635:
	cmpl	$1, %r14d
	jle	.L1608
.L1645:
	movq	molecs(%rip), %rax
	movl	84(%rax), %ecx
	cmpl	%ecx, 80(%rax)
	jl	.L1637
	movsd	.LC267(%rip), %xmm0
	call	_Z10EXTEND_MNMd
.L1637:
	movq	molecs(%rip), %rax
	movslq	116(%rsp), %rsi
	movl	80(%rax), %ecx
	movq	48(%rax), %r11
	leaq	0(,%rsi,8), %r10
	leal	1(%rcx), %edx
	movq	40(%rax), %rcx
	movl	%edx, 80(%rax)
	movslq	%edx, %rdx
	movq	8(%rcx), %rdi
	leaq	0(,%rdx,8), %r9
	movl	$1, %ecx
	movq	%r12, (%rdi,%rdx,8)
.L1638:
	movq	(%r11,%rcx,8), %r8
	incq	%rcx
	movsd	(%r8,%r10), %xmm0
	movsd	%xmm0, (%r8,%r9)
	cmpq	$4, %rcx
	jne	.L1638
	movq	gas(%rip), %rcx
	cmpl	$0, 432(%rcx)
	jle	.L1639
	movq	64(%rax), %r8
	movsd	(%r8,%rsi,8), %xmm0
	movsd	%xmm0, (%r8,%rdx,8)
.L1639:
	movq	(%rax), %r9
	leaq	0(,%rsi,4), %r8
	cvtsi2sdl	(%r9,%rsi,4), %xmm0
	andps	.LC256(%rip), %xmm0
	cvttsd2sil	%xmm0, %r10d
	movl	%r10d, (%r9,%rdx,4)
	movq	8(%rax), %rdx
	movslq	80(%rax), %r9
	movl	(%rdx,%rsi,4), %r10d
	movl	%r10d, (%rdx,%r9,4)
	movq	24(%rax), %rdx
	movslq	80(%rax), %r9
	movl	(%rdx,%rsi,4), %r10d
	movl	%r10d, (%rdx,%r9,4)
	cmpl	$0, 428(%rcx)
	jg	.L1655
.L1644:
	movq	56(%rax), %rdx
	movslq	80(%rax), %rax
	movsd	(%rdx,%rsi,8), %xmm0
	movsd	%xmm0, (%rdx,%rax,8)
	movq	geom(%rip), %rdx
	movsd	(%rdi,%rax,8), %xmm1
	movq	128(%rdx), %rcx
	mulsd	88(%rdx), %xmm0
	addsd	16(%rcx), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1642
	leaq	.LC324(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	leaq	.LC59(%rip), %r13
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%r13, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r13, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	40(%rax), %rcx
	movslq	80(%rax), %rdx
	movq	8(%rcx), %rax
	movsd	(%rax,%rdx,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r13, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	molecs(%rip), %rdx
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movslq	80(%rdx), %rcx
	movq	56(%rdx), %rdx
	movsd	(%rdx,%rcx,8), %xmm0
	mulsd	88(%rax), %xmm0
	movq	128(%rax), %rax
	addsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L1642
.L1655:
	xorl	%edx, %edx
.L1640:
	movslq	80(%rax), %r10
	incq	%rdx
	cmpl	%edx, 428(%rcx)
	jl	.L1644
	movq	32(%rax), %r9
	movq	(%r9,%rdx,8), %r9
	movl	(%r9,%r8), %r11d
	movl	%r11d, (%r9,%r10,4)
	jmp	.L1640
.L1642:
	incl	%ebx
	cmpl	%r14d, %ebx
	jne	.L1645
.L1608:
	movq	molecs(%rip), %rax
	movl	116(%rsp), %ebx
	testl	%ebp, %ebp
	jne	.L1587
	movq	40(%rax), %rax
	movsd	120(%rsp), %xmm0
	movslq	%ebx, %rbp
	movq	8(%rax), %rax
	movsd	%xmm0, (%rax,%rbp,8)
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	comisd	8(%rax), %xmm0
	jbe	.L1647
	movsd	16(%rax), %xmm1
	comisd	%xmm0, %xmm1
	ja	.L1584
.L1647:
	movl	%ebx, %esi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZNSolsEi@PLT
	leaq	.LC325(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%rbp,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC326(%rip), %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%rbp,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	116(%rsp), %rdi
	call	_Z10REMOVE_MOLRi
	leal	-1(%rbx), %eax
	movl	%eax, 116(%rsp)
.L1587:
	incl	116(%rsp)
	jmp	.L1584
.L1683:
	movq	168(%rsp), %rax
	subq	%fs:40, %rax
	je	.L1651
	call	__stack_chk_fail@PLT
.L1651:
	addq	$184, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4324:
	.size	_Z17MOLECULES_MOVE_1Dv, .-_Z17MOLECULES_MOVE_1Dv
	.section	.rodata.str1.1
.LC327:
	.string	"Generating files for output interval"
.LC328:
	.string	"DS1OUT.DAT"
.LC329:
	.string	"DS1OUT.DAT is opened"
.LC330:
	.string	"DS1OUT.DAT not opened"
.LC331:
	.string	"DS"
.LC332:
	.string	"OUT.DAT"
.LC333:
	.string	" is opened"
.LC334:
	.string	" not opened"
.LC340:
	.string	"DSMC program for a one-dimensional plane flow"
.LC341:
	.string	"DSMC program for a cylindrical flow"
.LC342:
	.string	"DSMC program for a spherical flow"
.LC343:
	.string	"Interval "
.LC344:
	.string	" Time "
.LC345:
	.string	" with "
.LC346:
	.string	" samples from "
.LC347:
	.string	"TOTAL MOLECULES = "
.LC348:
	.string	"Total simulated molecules = "
.LC349:
	.string	" SPECIES "
.LC350:
	.string	" TOTAL = "
.LC351:
	.string	"Species "
.LC352:
	.string	" total = "
.LC353:
	.string	"Total molecule moves   = "
.LC354:
	.string	"SP "
.LC355:
	.string	" DISSOCS "
.LC356:
	.string	" RECOMBS "
.LC357:
	.string	"SP"
.LC358:
	.string	"DISSOCS"
.LC359:
	.string	"EX,C reaction"
.LC360:
	.string	" number"
.LC361:
	.string	"EX,C reaction "
.LC362:
	.string	" number "
.LC363:
	.string	"Total collision events = "
.LC364:
	.string	"Species dependent collision numbers in current sample"
.LC365:
	.string	"Computation time "
.LC366:
	.string	"seconds"
.LC367:
	.string	"Collision events per second "
.LC368:
	.string	"Molecule moves per secon "
.LC369:
	.string	"Overall time step "
.LC370:
	.string	"Molecules per collision cell "
.LC371:
	.string	"Mean cell time ratio "
.LC372:
	.string	"Mean value of cross-section and relative speed "
.LC373:
	.string	"Mean half collision cell time step "
.LC376:
	.string	"Coll. rate ratio to equilib "
.LC377:
	.string	"Species collision rate ratios to equilibrium"
.LC378:
	.string	"Collision rate for species "
.LC380:
	.string	"with species "
.LC381:
	.string	"Collision numbers for species "
.LC382:
	.string	"Surface quantities"
.LC383:
	.string	"Surface at "
.LC384:
	.string	"Incident sample "
.LC385:
	.string	"Number flux "
.LC386:
	.string	" /sq m/s"
.LC387:
	.string	"Inc pressure "
.LC388:
	.string	" Refl pressure "
.LC389:
	.string	"Pressure "
.LC390:
	.string	" N/sq m"
.LC391:
	.string	"Inc y shear "
.LC392:
	.string	" Refl y shear "
.LC393:
	.string	"Net y shear "
.LC394:
	.string	"Net z shear "
.LC395:
	.string	"Incident translational heat flux "
.LC396:
	.string	" W/sq m"
.LC397:
	.string	"Incident rotational heat flux "
.LC398:
	.string	"Incident vibrational heat flux "
.LC399:
	.string	"Incident electronic heat flux "
.LC400:
	.string	"Total incident heat flux "
.LC401:
	.string	"Reflected translational heat flux "
.LC402:
	.string	"Reflected rotational heat flux "
.LC403:
	.string	"Reflected vibrational heat flux "
.LC404:
	.string	"Reflected electronic heat flux "
.LC405:
	.string	"Total reflected heat flux "
.LC406:
	.string	"Net heat flux "
.LC407:
	.string	"Slip velocity (y direction) "
.LC408:
	.string	" m/s"
.LC409:
	.string	"Translational temperature slip"
.LC410:
	.string	" K"
.LC411:
	.string	"Rotational temperature slip "
.LC412:
	.string	" percentage "
.LC413:
	.string	"GAINS FROM REACTIONS"
.LC414:
	.string	"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."
.LC415:
	.string	"                          SPECIES "
.LC416:
	.string	"LOSSES FROM REACTIONS"
.LC417:
	.string	"TOTALS"
.LC418:
	.string	"                        SPECIES "
.LC419:
	.string	" GAINS "
.LC420:
	.string	" LOSSES "
.LC421:
	.string	"Flowfield properties "
.LC422:
	.string	" Samples"
.LC423:
	.string	"Overall gas"
.LC424:
	.ascii	"Cell x coord.      Sample       Number Dens. "
	.string	"Density      u velocity   v velocity   w velocity   Trans. Temp. Rot. Temp.   Vib. Temp.    El. Temp.  Temperature  Mach no.     Mols/cell    m.c.t        m.f.p        mcs/mfp        speed      Pressure      TTX         TTY         TTZ   Species Fractions "
.LC425:
	.string	"Individual molecular species"
.LC426:
	.string	"Cell x coord.      Sample       Percentage   Species TTx   Species TTy  Species TTz  Trans. Temp.  Rot. Temp.  Vib. Temp.   Spec. Temp  u Diff. Vel. v Diff. Vel. w. Diff. Vel. Elec. Temp."
.LC427:
	.string	"RELAX.DAT"
.LC428:
	.string	"RELAX.DAT is opened"
.LC429:
	.string	"RELAX.DAT not opened"
.LC430:
	.string	"COMPOSITION.DAT"
.LC431:
	.string	"COMPOSITION.DAT is opened"
.LC432:
	.string	"COMPOSITION.DAT not opened"
.LC433:
	.string	"Output files written "
.LC434:
	.string	"DTM changes  from "
.LC435:
	.string	"DS1xt.DAT"
.LC436:
	.string	"DS1xt.DAT is opened"
.LC437:
	.string	"DS1xt.DAT not opened"
.LC438:
	.string	"PROFILE.DAT"
.LC439:
	.string	"PROFILE.DAT is opened"
.LC440:
	.string	"PROFILE.DAT not opened"
	.text
	.globl	_Z14OUTPUT_RESULTSv
	.type	_Z14OUTPUT_RESULTSv, @function
_Z14OUTPUT_RESULTSv:
.LFB4327:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4327
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$2344, %rsp
	.cfi_def_cfa_offset 2400
	movq	%fs:40, %rax
	movq	%rax, 2328(%rsp)
	xorl	%eax, %eax
	leaq	744(%rsp), %rdi
.LEHB17:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE17:
	leaq	1272(%rsp), %rdi
.LEHB18:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE18:
	leaq	1800(%rsp), %rdi
.LEHB19:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE19:
	leaq	344(%rsp), %rax
	xorl	%edi, %edi
	xorl	%r8d, %r8d
	movb	$0, 344(%rsp)
	movq	%rax, 328(%rsp)
	leaq	376(%rsp), %rax
	movq	%rax, 360(%rsp)
	movq	gas(%rip), %rax
	movq	%rdi, 336(%rsp)
	movl	428(%rax), %edi
	movq	%r8, 368(%rsp)
	movabsq	$1152921504606846975, %rax
	movb	$0, 376(%rsp)
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L1685
	salq	$3, %rdi
.LEHB20:
	call	_Znam@PLT
	movq	%rax, 56(%rsp)
	xorl	%ebx, %ebx
	movabsq	$1152921504606846975, %rbp
	jmp	.L1686
.L1685:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L1691:
	cmpq	%rax, %rbp
	jb	.L1688
	call	_Znam@PLT
	movq	56(%rsp), %rdx
	movq	%rax, (%rdx,%rbx,8)
	incq	%rbx
.L1686:
	movq	gas(%rip), %rdx
	movl	424(%rdx), %eax
	incl	%eax
	cmpl	%ebx, 428(%rdx)
	cltq
	leaq	0(,%rax,8), %rdi
	jge	.L1691
	jmp	.L2187
.L1688:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2187:
	cmpq	%rax, %rbp
	jb	.L1692
	call	_Znam@PLT
	movq	%rax, 48(%rsp)
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2114
	jmp	.L2188
.L1692:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2114:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 96(%rsp)
	xorl	%ebx, %ebx
	movabsq	$1152921504606846975, %r13
	jmp	.L1696
.L2188:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L1706:
	movl	428(%rax), %edi
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %r13
	jb	.L1698
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, %r12
	movq	96(%rsp), %rax
	xorl	%ebp, %ebp
	movq	%r12, (%rax,%rbx,8)
.L1701:
	movq	gas(%rip), %rax
	cmpl	%ebp, 428(%rax)
	jge	.L1705
	incq	%rbx
.L1696:
	movq	geom(%rip), %rdx
	movq	gas(%rip), %rax
	cmpl	%ebx, (%rdx)
	jge	.L1706
	jmp	.L2189
.L1698:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L1705:
	movl	424(%rax), %edi
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %r13
	jb	.L1702
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, (%r12,%rbp,8)
	incq	%rbp
	jmp	.L1701
.L1702:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2189:
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jb	.L1707
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 64(%rsp)
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2115
	jmp	.L2190
.L1707:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2115:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 192(%rsp)
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2116
	jmp	.L2191
.L2190:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2116:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 72(%rsp)
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2117
	jmp	.L2192
.L2191:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2117:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 144(%rsp)
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movabsq	$2305843009213693950, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2118
	jmp	.L2193
.L2192:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2118:
	salq	$2, %rdi
	call	_Znam@PLT
	movq	%rax, 8(%rsp)
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2119
	jmp	.L2194
.L2193:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2119:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 104(%rsp)
	xorl	%ebx, %ebx
	jmp	.L1723
.L2194:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L1725:
	call	_Znam@PLT
	movq	104(%rsp), %rdx
	movq	%rax, (%rdx,%rbx,8)
	incq	%rbx
.L1723:
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	leal	1(%rdx), %eax
	cmpl	%ebx, %edx
	cltq
	leaq	0(,%rax,8), %rdi
	jge	.L1725
	movabsq	$1152921504606846975, %rdx
	cmpq	%rax, %rdx
	jb	.L1726
	call	_Znam@PLT
	movq	%rax, 152(%rsp)
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	movabsq	$1152921504606846975, %rax
	incl	%edi
	movslq	%edi, %rdi
	cmpq	%rdi, %rax
	jnb	.L2120
	jmp	.L2195
.L1726:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L2120:
	salq	$3, %rdi
	call	_Znam@PLT
	movq	%rax, 80(%rsp)
	movq	calc(%rip), %rax
	movsd	.LC7(%rip), %xmm0
	movq	output(%rip), %rdx
	mulsd	104(%rax), %xmm0
	movsd	80(%rax), %xmm1
	comisd	%xmm0, %xmm1
	ja	.L1732
	jmp	.L1737
.L2195:
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	call	__cxa_throw_bad_array_new_length@PLT
.L1732:
	movl	8(%rdx), %ecx
	leal	1(%rcx), %eax
	cmpl	$9999, %eax
	jle	.L1734
	leal	-9998(%rcx), %eax
.L1734:
	movl	%eax, 8(%rdx)
	leaq	_ZSt4cout(%rip), %rbx
	leaq	.LC327(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movl	8(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	cmpl	$0, 20(%rax)
	jne	.L1735
	leaq	744(%rsp), %rdi
	movl	$16, %edx
	leaq	.LC328(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	872(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC329(%rip), %rsi
	testb	%al, %al
	jne	.L2177
	leaq	.LC330(%rip), %rsi
.L2177:
	movq	%rbx, %rdi
.L2163:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.LEHE20:
.L1737:
	movq	geom(%rip), %rax
	movq	output(%rip), %rbp
	xorl	%edx, %edx
	movq	%rax, 32(%rsp)
	movl	(%rax), %eax
	movl	%eax, 116(%rsp)
	jmp	.L1733
.L1735:
	movq	output(%rip), %rax
	leaq	504(%rsp), %rbx
	movq	%rbx, %rdi
	movl	8(%rax), %esi
	addl	$10000, %esi
	call	_ZNSt7__cxx119to_stringEi
	movq	%rbx, %rsi
	leaq	360(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0
	movq	%rbx, %rdi
	leaq	392(%rsp), %rbx
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	368(%rsp), %rbp
	xorl	%esi, %esi
	movq	%rbx, %rdi
	movq	%rsi, 400(%rsp)
	leaq	408(%rsp), %rax
	movq	360(%rsp), %r12
	leaq	2(%rbp), %rsi
	movq	%rax, 392(%rsp)
	movb	$0, 408(%rsp)
.LEHB21:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm@PLT
	movl	$2, %edx
	leaq	.LC331(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0
	movq	%rbp, %rdx
	movq	%r12, %rsi
	movq	%rbx, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.isra.0
.LEHE21:
	jmp	.L2196
.L2037:
	endbr64
	jmp	.L2186
.L2196:
	leaq	.LC332(%rip), %rsi
	movq	%rbx, %rdi
.LEHB22:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc@PLT
.LEHE22:
	leaq	504(%rsp), %rbp
	movq	%rax, %rsi
	leaq	328(%rsp), %rbx
	movq	%rbp, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@PLT
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_.isra.0
	movq	%rbp, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	392(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	872(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	movq	%rbx, %rsi
	leaq	_ZSt4cout(%rip), %rdi
	testb	%al, %al
	je	.L1741
.LEHB23:
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	%rax, %rdi
	leaq	.LC333(%rip), %rsi
	jmp	.L2163
.L1741:
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	%rax, %rdi
	leaq	.LC334(%rip), %rsi
	jmp	.L2163
.L2197:
	addq	$8, %rdx
	cmpq	$192, %rdx
	je	.L1743
.L1733:
	xorl	%eax, %eax
.L1744:
	cmpl	%eax, 116(%rsp)
	jl	.L2197
	movq	136(%rbp), %rcx
	movq	(%rcx,%rdx), %rcx
	movq	$0x000000000, (%rcx,%rax,8)
	incq	%rax
	jmp	.L1744
.L1743:
	movq	32(%rsp), %rax
	movl	24(%rax), %eax
	movl	%eax, 112(%rsp)
	movq	calc(%rip), %rax
	cmpl	$0, 112(%rsp)
	movq	%rax, 16(%rsp)
	jne	.L1745
	movsd	80(%rax), %xmm1
	subsd	32(%rbp), %xmm1
	movsd	96(%rax), %xmm0
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 320(%rsp)
.L1745:
	movq	32(%rsp), %rax
	movl	$1, %ebx
	xorl	%r14d, %r14d
	movsd	320(%rsp), %xmm0
	movq	40(%rax), %rax
	movq	%rax, 168(%rsp)
	movl	$8, %eax
.L1749:
	cmpl	$1, 112(%rsp)
	jne	.L1746
	movq	32(%rsp), %rdx
	movsd	.LC44(%rip), %xmm1
	movq	128(%rdx), %rdx
	mulsd	(%rdx,%rax), %xmm1
	movq	16(%rsp), %rdx
	movsd	96(%rdx), %xmm0
	divsd	%xmm1, %xmm0
	jmp	.L2166
.L1746:
	cmpl	$2, 112(%rsp)
	jne	.L1747
	movq	32(%rsp), %rdx
	movsd	.LC335(%rip), %xmm2
	movq	128(%rdx), %rdx
	movsd	(%rdx,%rax), %xmm1
	movq	16(%rsp), %rdx
	mulsd	%xmm1, %xmm2
	movsd	96(%rdx), %xmm0
	divsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
.L2166:
	movsd	80(%rdx), %xmm1
	subsd	32(%rbp), %xmm1
	movb	$1, %r14b
	mulsd	%xmm1, %xmm0
.L1747:
	movq	168(%rsp), %rdx
	cmpl	$2, (%rdx,%rbx,4)
	je	.L1748
.L1760:
	addq	$8, %rax
	decq	%rbx
	jne	.L2198
	movl	$2, %ebx
	jmp	.L1749
.L1748:
	leaq	504(%rsp), %r8
	leaq	744(%rsp), %rcx
	movq	%r8, %rdx
.L1751:
	movq	$0x000000000, (%rdx)
	addq	$24, %rdx
	movq	$0x000000000, -16(%rdx)
	movq	$0x000000000, -8(%rdx)
	cmpq	%rdx, %rcx
	jne	.L1751
	movq	gas(%rip), %r9
	movl	$8, %edi
	movl	$1, %esi
	movl	424(%r9), %edx
	movl	%edx, 24(%rsp)
.L1752:
	cmpl	%esi, 24(%rsp)
	jl	.L1754
	movq	192(%rbp), %r11
	movq	%r8, %rdx
	xorl	%ecx, %ecx
.L1753:
	movq	(%r11,%rcx,8), %r10
	movsd	8(%rdx), %xmm1
	incq	%rcx
	addq	$24, %rdx
	movq	(%r10,%rax), %r10
	movq	(%r10,%rdi), %r10
	addsd	8(%r10), %xmm1
	movsd	%xmm1, -16(%rdx)
	movsd	-8(%rdx), %xmm1
	addsd	16(%r10), %xmm1
	movsd	%xmm1, -8(%rdx)
	cmpq	$9, %rcx
	jne	.L1753
	incl	%esi
	addq	$8, %rdi
	jmp	.L1752
.L1754:
	movq	144(%rbp), %rdx
	movaps	%xmm0, %xmm2
	movaps	%xmm0, %xmm7
	movsd	512(%rsp), %xmm1
	movq	(%rdx), %rcx
	movsd	%xmm1, (%rcx,%rax)
	movq	8(%rdx), %rcx
	movsd	536(%rsp), %xmm8
	movsd	%xmm8, (%rcx,%rax)
	mulsd	%xmm8, %xmm2
	movq	16(%rdx), %rcx
	movsd	544(%rsp), %xmm1
	movsd	%xmm1, (%rcx,%rax)
	mulsd	%xmm0, %xmm1
	movq	24(%rdx), %rcx
	movsd	%xmm2, (%rcx,%rax)
	movq	32(%rdx), %rcx
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	40(%rdx), %rcx
	movsd	560(%rsp), %xmm6
	mulsd	%xmm6, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	48(%rdx), %rcx
	movsd	568(%rsp), %xmm15
	mulsd	%xmm15, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	56(%rdx), %rcx
	movsd	584(%rsp), %xmm5
	mulsd	%xmm5, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	64(%rdx), %rcx
	movsd	592(%rsp), %xmm14
	mulsd	%xmm14, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	72(%rdx), %rcx
	movsd	608(%rsp), %xmm4
	mulsd	%xmm4, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movq	80(%rdx), %rcx
	movsd	616(%rsp), %xmm13
	mulsd	%xmm13, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movaps	%xmm0, %xmm1
	movsd	632(%rsp), %xmm3
	movq	88(%rdx), %rcx
	movq	120(%rdx), %r11
	movq	128(%rdx), %r10
	mulsd	%xmm3, %xmm1
	addq	%rax, %rcx
	movq	264(%rdx), %r8
	movq	272(%rdx), %rdi
	movq	%rcx, 40(%rsp)
	addq	%rax, %r11
	addq	%rax, %r10
	movq	160(%rdx), %r13
	addq	%rax, %r8
	addq	%rax, %rdi
	movq	152(%rdx), %rsi
	addq	%rax, %r13
	addq	%rax, %rsi
	movsd	%xmm1, (%rcx)
	movaps	%xmm0, %xmm1
	movq	96(%rdx), %rcx
	movsd	640(%rsp), %xmm12
	mulsd	%xmm12, %xmm1
	addq	%rax, %rcx
	movq	%rcx, 120(%rsp)
	movsd	%xmm1, (%rcx)
	movaps	%xmm0, %xmm1
	movq	104(%rdx), %rcx
	movsd	656(%rsp), %xmm2
	mulsd	%xmm2, %xmm1
	addq	%rax, %rcx
	movq	%rcx, 128(%rsp)
	movsd	%xmm1, (%rcx)
	movaps	%xmm0, %xmm1
	movq	112(%rdx), %rcx
	movsd	664(%rsp), %xmm11
	mulsd	%xmm11, %xmm1
	addq	%rax, %rcx
	movq	%rcx, 136(%rsp)
	movsd	%xmm1, (%rcx)
	movq	152(%rbp), %rcx
	movsd	680(%rsp), %xmm1
	mulsd	%xmm1, %xmm7
	movq	8(%rcx), %r12
	addq	%rax, %r12
	movsd	%xmm7, (%r11)
	movaps	%xmm0, %xmm7
	movsd	688(%rsp), %xmm10
	mulsd	%xmm10, %xmm7
	movsd	%xmm7, (%r10)
	movsd	704(%rsp), %xmm7
	mulsd	%xmm0, %xmm7
	movsd	%xmm7, (%r8)
	movsd	712(%rsp), %xmm7
	mulsd	%xmm0, %xmm7
	movsd	%xmm7, (%rdi)
	movq	%r13, 160(%rsp)
	movq	168(%rdx), %r13
	movsd	(%r12), %xmm7
	addq	%rax, %r13
	comisd	.LC255(%rip), %xmm7
	movq	%r13, 184(%rsp)
	jbe	.L2123
	movq	16(%rcx), %r13
	movq	24(%rcx), %r15
	leaq	(%r9,%rbx,8), %r9
	addq	%rax, %r13
	movsd	(%r15,%rax), %xmm7
	movq	32(%rcx), %r15
	divsd	0(%r13), %xmm7
	movsd	%xmm7, (%rsi)
	movsd	0(%r13), %xmm9
	mulsd	%xmm7, %xmm9
	mulsd	%xmm9, %xmm7
	movsd	(%r15,%rax), %xmm9
	movq	160(%rsp), %r15
	subsd	%xmm7, %xmm9
	movsd	.LC51(%rip), %xmm7
	mulsd	(%r12), %xmm7
	mulsd	.LC45(%rip), %xmm7
	divsd	%xmm7, %xmm9
	subsd	192(%r9), %xmm9
	movsd	%xmm9, (%r15)
	movsd	(%rsi), %xmm7
	subsd	240(%r9), %xmm7
	movsd	%xmm7, (%rsi)
	movq	48(%rcx), %rsi
	movsd	(%rsi,%rax), %xmm7
	comisd	.LC255(%rip), %xmm7
	ja	.L1757
.L1759:
	xorps	%xmm9, %xmm9
	jmp	.L1758
.L1757:
	movq	40(%rcx), %rcx
	movsd	(%rcx,%rax), %xmm9
	divsd	%xmm7, %xmm9
	mulsd	.LC336(%rip), %xmm9
	subsd	192(%r9), %xmm9
	jmp	.L1758
.L2123:
	movq	160(%rsp), %rcx
	movq	$0x000000000, (%rsi)
	movq	$0x000000000, (%rcx)
	jmp	.L1759
.L1758:
	addsd	%xmm15, %xmm6
	addsd	%xmm14, %xmm5
	movq	40(%rsp), %rsi
	movq	184(%rsp), %rcx
	addsd	%xmm13, %xmm4
	addsd	%xmm12, %xmm3
	movsd	%xmm9, (%rcx)
	addsd	%xmm11, %xmm2
	addsd	%xmm10, %xmm1
	movq	176(%rdx), %rcx
	mulsd	%xmm0, %xmm6
	mulsd	%xmm0, %xmm5
	mulsd	%xmm0, %xmm4
	mulsd	%xmm0, %xmm3
	mulsd	%xmm0, %xmm2
	movsd	%xmm6, (%rcx,%rax)
	movq	184(%rdx), %rcx
	mulsd	%xmm0, %xmm1
	movsd	%xmm5, (%rcx,%rax)
	movq	192(%rdx), %rcx
	movsd	%xmm4, (%rcx,%rax)
	movq	200(%rdx), %rcx
	movsd	%xmm3, (%rcx,%rax)
	movq	208(%rdx), %rcx
	movsd	%xmm2, (%rcx,%rax)
	movq	216(%rdx), %rcx
	movsd	%xmm1, (%rcx,%rax)
	movq	224(%rdx), %rcx
	movsd	728(%rsp), %xmm1
	addsd	736(%rsp), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%rcx,%rax)
	movsd	(%rsi), %xmm1
	movq	232(%rdx), %rcx
	movq	128(%rsp), %rsi
	addq	%rax, %rcx
	addsd	(%rsi), %xmm1
	addsd	(%r11), %xmm1
	addsd	(%r8), %xmm1
	movq	120(%rsp), %rsi
	movsd	%xmm1, (%rcx)
	movsd	(%rsi), %xmm1
	movq	136(%rsp), %rsi
	addsd	(%rsi), %xmm1
	addsd	(%r10), %xmm1
	addsd	(%rdi), %xmm1
	movq	240(%rdx), %rsi
	cmpl	$0, 24(%rsp)
	movsd	%xmm1, (%rsi,%rax)
	addsd	(%rcx), %xmm1
	movq	248(%rdx), %rsi
	movq	280(%rdx), %rcx
	movsd	%xmm1, (%rsi,%rax)
	movsd	(%r8), %xmm1
	addsd	(%rdi), %xmm1
	movsd	%xmm1, (%rcx,%rax)
	je	.L1760
	movsd	.LC100(%rip), %xmm2
	movl	$8, %ecx
	xorps	%xmm1, %xmm1
.L1763:
	movq	280(%rdx,%rcx), %rsi
	addq	%rax, %rsi
	comisd	%xmm1, %xmm8
	jbe	.L2124
	movq	192(%rbp), %rdi
	movq	8(%rdi), %rdi
	movq	(%rdi,%rax), %rdi
	movq	(%rdi,%rcx), %rdi
	movsd	8(%rdi), %xmm0
	mulsd	%xmm2, %xmm0
	divsd	%xmm8, %xmm0
	jmp	.L1761
.L2124:
	xorps	%xmm0, %xmm0
.L1761:
	movsd	%xmm0, (%rsi)
	addq	$8, %rcx
	jmp	.L1763
.L2198:
	testb	%r14b, %r14b
	je	.L1769
	movsd	%xmm0, 320(%rsp)
.L1769:
	movq	gas(%rip), %r12
	xorl	%edx, %edx
.L1767:
	xorl	%eax, %eax
.L1770:
	cmpl	%eax, 116(%rsp)
	jl	.L1765
	movl	424(%r12), %edi
	leaq	0(,%rax,8), %rsi
	xorl	%ecx, %ecx
.L1766:
	cmpl	%ecx, %edi
	jl	.L2199
	movq	176(%rbp), %r8
	movq	(%r8,%rdx), %r8
	movq	(%r8,%rsi), %r8
	movq	$0x000000000, (%r8,%rcx,8)
	incq	%rcx
	jmp	.L1766
.L2199:
	incq	%rax
	jmp	.L1770
.L1765:
	addq	$8, %rdx
	cmpq	$104, %rdx
	jne	.L1767
	movq	$1, 40(%rsp)
.L1768:
	movl	40(%rsp), %edx
	cmpl	%edx, 116(%rsp)
	jl	.L2200
	cmpq	$120, 40(%rsp)
	je	.L1771
	movq	32(%rsp), %rax
	cvtsi2sdl	0(%rbp), %xmm6
	movq	16(%rsp), %rdx
	movq	136(%rax), %rax
	movsd	96(%rdx), %xmm2
	movq	40(%rsp), %rdx
	movq	%rax, 136(%rsp)
	movq	40(%rsp), %rax
	movsd	%xmm6, 120(%rsp)
	leaq	0(,%rax,8), %rbx
	movq	136(%rsp), %rax
	movq	32(%rax), %rax
	divsd	(%rax,%rdx,8), %xmm2
	movq	32(%rsp), %rax
	mulsd	%xmm6, %xmm2
	movl	32(%rax), %eax
	movl	%eax, 128(%rsp)
	decl	%eax
	movsd	%xmm2, 320(%rsp)
	jne	.L1772
	movq	32(%rsp), %rax
	movsd	.LC7(%rip), %xmm3
	movsd	%xmm2, 24(%rsp)
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm5
	movsd	8(%rax), %xmm4
	movl	112(%rsp), %eax
	movaps	%xmm5, %xmm0
	leal	1(%rax), %edi
	movq	16(%rsp), %rax
	subsd	%xmm4, %xmm0
	movsd	80(%rax), %xmm1
	movq	32(%rsp), %rax
	subsd	32(%rbp), %xmm1
	mulsd	88(%rax), %xmm3
	mulsd	%xmm3, %xmm1
	addsd	%xmm5, %xmm1
	subsd	%xmm4, %xmm1
	divsd	%xmm1, %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	24(%rsp), %xmm2
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 320(%rsp)
.L1772:
	leaq	392(%rsp), %rdx
	xorl	%eax, %eax
	xorl	%r10d, %r10d
	xorl	%r14d, %r14d
	movq	%rdx, %rdi
	movl	$28, %ecx
	leaq	400(%rsp), %rdx
	movsd	.LC267(%rip), %xmm11
	rep stosl
	xorps	%xmm8, %xmm8
	movq	%rdx, 168(%rsp)
	movsd	.LC7(%rip), %xmm13
	movl	$4, %esi
	movaps	%xmm8, %xmm7
	movaps	%xmm8, %xmm14
	movl	$1, %r8d
	movl	424(%r12), %eax
	movaps	%xmm8, %xmm6
	movaps	%xmm8, %xmm5
	movaps	%xmm8, %xmm4
	movaps	%xmm8, %xmm3
	movaps	%xmm8, %xmm2
	movaps	%xmm8, %xmm12
	movl	%eax, 24(%rsp)
	xorl	%eax, %eax
.L1773:
	cmpl	%r8d, 24(%rsp)
	jl	.L2201
	movq	168(%rbp), %rdx
	leaq	(%rsi,%rsi), %rax
	movq	(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%rax), %xmm0
	movq	8(%rdx), %rcx
	movq	(%rcx,%rbx), %rdi
	movq	320(%r12), %rcx
	addsd	%xmm0, %xmm3
	movq	40(%rcx), %r9
	addq	%rax, %rdi
	movl	$16, %ecx
	addsd	(%rdi), %xmm2
	addq	%rax, %r9
	mulsd	(%r9), %xmm0
	addsd	%xmm0, %xmm4
.L1776:
	movq	(%rdx,%rcx), %r11
	movq	168(%rsp), %r15
	movsd	(%r9), %xmm0
	movq	(%r11,%rbx), %r13
	addq	%rax, %r13
	movq	%r13, %r11
	leaq	(%rcx,%r15), %r13
	mulsd	(%r11), %xmm0
	addsd	0(%r13), %xmm0
	movsd	%xmm0, 0(%r13)
	movsd	(%rdi), %xmm1
	comisd	%xmm11, %xmm1
	jbe	.L1774
	movq	176(%rbp), %r13
	movq	0(%r13,%rcx), %r15
	movq	56(%r13,%rcx), %r13
	movq	(%r15,%rbx), %r15
	movq	0(%r13,%rbx), %r13
	movq	%r15, 160(%rsp)
	movq	24(%rdx,%rcx), %r15
	movq	(%r15,%rbx), %r15
	movsd	(%r15,%rax), %xmm0
	movq	160(%rsp), %r15
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%r15,%rax)
	movsd	(%r11), %xmm0
	divsd	(%rdi), %xmm0
	movsd	%xmm0, 0(%r13,%rax)
.L1774:
	addq	$8, %rcx
	cmpq	$40, %rcx
	jne	.L1776
	movq	40(%rdx), %rcx
	movsd	(%r9), %xmm1
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%rax), %xmm0
	movq	48(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	movaps	%xmm0, %xmm15
	movsd	(%rcx,%rax), %xmm10
	movq	56(%rdx), %rcx
	movq	(%rcx,%rbx), %rcx
	addsd	%xmm10, %xmm15
	movsd	(%rcx,%rax), %xmm9
	addsd	%xmm9, %xmm15
	mulsd	%xmm1, %xmm15
	addsd	%xmm15, %xmm5
	movaps	%xmm1, %xmm15
	mulsd	%xmm0, %xmm15
	addsd	%xmm15, %xmm6
	movaps	%xmm1, %xmm15
	mulsd	%xmm10, %xmm15
	mulsd	%xmm9, %xmm1
	addsd	%xmm12, %xmm15
	addsd	%xmm1, %xmm15
	movsd	(%rdi), %xmm1
	comisd	%xmm13, %xmm1
	movsd	%xmm15, 208(%rsp)
	jbe	.L1777
	addsd	%xmm14, %xmm0
	movb	$1, %r14b
	addsd	%xmm10, %xmm0
	addsd	%xmm9, %xmm0
	movaps	%xmm0, %xmm14
.L1777:
	movq	488(%r12), %rcx
	movq	8(%rcx), %rcx
	movl	(%rcx,%rsi), %ecx
	testl	%ecx, %ecx
	jle	.L1779
	cvtsi2sdl	%ecx, %xmm0
	movq	64(%rdx), %rdx
	movb	$1, %r10b
	movq	(%rdx,%rbx), %rdx
	mulsd	%xmm1, %xmm0
	addsd	(%rdx,%rax), %xmm7
	addsd	%xmm0, %xmm8
.L1779:
	incl	%r8d
	addq	$4, %rsi
	movb	$1, %al
	jmp	.L1773
.L2201:
	testb	%r10b, %r10b
	je	.L1781
	movsd	%xmm8, 464(%rsp)
	movsd	%xmm7, 456(%rsp)
.L1781:
	testb	%r14b, %r14b
	je	.L1782
	movsd	%xmm14, 448(%rsp)
.L1782:
	testb	%al, %al
	je	.L1783
	movsd	208(%rsp), %xmm7
	movsd	%xmm6, 472(%rsp)
	movsd	%xmm5, 440(%rsp)
	movsd	%xmm7, 488(%rsp)
	movsd	%xmm4, 408(%rsp)
	movsd	%xmm3, 392(%rsp)
	movsd	%xmm2, 400(%rsp)
.L1783:
	movsd	400(%rsp), %xmm1
	movsd	.LC48(%rip), %xmm5
	movl	$4, %ecx
	movl	$1, %r8d
	movsd	.LC7(%rip), %xmm6
	movsd	.LC336(%rip), %xmm7
	movsd	.LC45(%rip), %xmm8
	movsd	.LC51(%rip), %xmm4
.L1784:
	cmpl	%r8d, 24(%rsp)
	jl	.L2202
	movq	168(%rbp), %rdi
	leaq	(%rcx,%rcx), %rax
	movq	8(%rdi), %rdx
	movq	(%rdx,%rbx), %rsi
	movq	176(%rbp), %rdx
	movq	(%rdx), %r9
	addq	%rax, %rsi
	movq	56(%rdx), %r10
	movsd	(%rsi), %xmm0
	movq	(%r9,%rbx), %r9
	movq	(%r10,%rbx), %r10
	movsd	%xmm0, (%r9,%rax)
	movq	8(%rdx), %r9
	movq	(%r9,%rbx), %r13
	movq	48(%rdx), %r9
	movq	(%r9,%rbx), %r11
	addq	%rax, %r13
	movq	$0x000000000, 0(%r13)
	addq	%rax, %r11
	movq	$0x000000000, (%r11)
	movq	%r11, %r9
	movq	$0x000000000, (%r10,%rax)
	movq	64(%rdx), %r10
	movq	(%r10,%rbx), %r11
	addq	%rax, %r11
	comisd	%xmm5, %xmm1
	movq	$0x000000000, (%r11)
	movq	%r11, %r10
	movq	488(%r12), %r11
	movq	8(%r11), %r11
	movl	(%r11,%rcx), %r11d
	cvtsi2sdl	%r11d, %xmm3
	jbe	.L1786
	movsd	(%rsi), %xmm0
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 0(%r13)
	movsd	(%rsi), %xmm0
	testl	%r11d, %r11d
	jle	.L1786
	comisd	%xmm6, %xmm0
	jbe	.L1786
	movq	64(%rdi), %rsi
	mulsd	%xmm3, %xmm0
	movq	(%rsi,%rbx), %rsi
	movsd	(%rsi,%rax), %xmm2
	mulsd	%xmm7, %xmm2
	divsd	%xmm0, %xmm2
	movsd	%xmm2, (%r9)
.L1786:
	movq	40(%rdx), %rsi
	movq	(%rsi,%rbx), %rdi
	movq	320(%r12), %rsi
	addq	%rax, %rdi
	movq	40(%rsi), %r13
	xorl	%esi, %esi
	movq	$0x000000000, (%rdi)
	addq	%rax, %r13
.L1789:
	movq	16(%rdx,%rsi), %r11
	movq	(%r11,%rbx), %r14
	addq	%rax, %r14
	movq	%r14, %r11
	movq	72(%rdx,%rsi), %r14
	addq	$8, %rsi
	movq	(%r14,%rbx), %r14
	movsd	(%r14,%rax), %xmm0
	movaps	%xmm0, %xmm2
	mulsd	%xmm0, %xmm2
	movsd	(%r11), %xmm0
	subsd	%xmm2, %xmm0
	movsd	0(%r13), %xmm2
	divsd	%xmm8, %xmm2
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, (%r11)
	addsd	(%rdi), %xmm0
	movsd	%xmm0, (%rdi)
	cmpq	$24, %rsi
	jne	.L1789
	divsd	%xmm4, %xmm0
	incl	%r8d
	addq	$4, %rcx
	movsd	%xmm0, (%rdi)
	movsd	(%r9), %xmm2
	mulsd	%xmm4, %xmm0
	mulsd	%xmm3, %xmm2
	addsd	%xmm4, %xmm3
	addsd	%xmm0, %xmm2
	divsd	%xmm3, %xmm2
	movsd	%xmm2, (%r10)
	jmp	.L1784
.L2202:
	cmpl	$0, 128(%rsp)
	movq	136(%rbp), %r13
	jne	.L1791
	movq	136(%rsp), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	movq	8(%r13), %rax
	movsd	%xmm0, (%rax,%rbx)
	jmp	.L1792
.L1791:
	cmpl	$1, 128(%rsp)
	jne	.L1792
	movq	32(%rsp), %rcx
	movq	32(%rsp), %rax
	movq	8(%r13), %rdx
	movsd	88(%rcx), %xmm2
	movq	16(%rsp), %rcx
	movq	128(%rax), %rax
	mulsd	80(%rcx), %xmm2
	movsd	16(%rax), %xmm0
	movsd	8(%rax), %xmm3
	movq	32(%rsp), %rax
	addsd	%xmm2, %xmm0
	cvtsi2sdl	12(%rax), %xmm2
	movl	40(%rsp), %eax
	subsd	%xmm3, %xmm0
	decl	%eax
	divsd	%xmm2, %xmm0
	cvtsi2sdl	%eax, %xmm2
	addsd	.LC7(%rip), %xmm2
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm0
	movsd	%xmm0, (%rdx,%rbx)
.L1792:
	comisd	.LC7(%rip), %xmm1
	movq	16(%r13), %rax
	movsd	392(%rsp), %xmm6
	movsd	%xmm6, (%rax,%rbx)
	movl	$3, %eax
	movsd	%xmm6, 168(%rsp)
	jbe	.L1793
	movsd	320(%rsp), %xmm0
	movq	24(%r13), %rax
	movq	40(%r13), %r8
	movq	48(%r13), %r11
	mulsd	%xmm1, %xmm0
	addq	%rbx, %rax
	movq	152(%r13), %rcx
	movq	160(%r13), %rdx
	movq	%rax, 128(%rsp)
	addq	%rbx, %r8
	addq	%rbx, %r11
	movq	168(%r13), %rsi
	addq	%rbx, %rcx
	addq	%rbx, %rdx
	addq	%rbx, %rsi
	movsd	%xmm0, (%rax)
	movq	32(%r13), %rax
	movsd	408(%rsp), %xmm2
	mulsd	%xmm2, %xmm0
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rax,%rbx)
	movq	56(%r13), %rax
	movsd	416(%rsp), %xmm0
	divsd	%xmm2, %xmm0
	addq	%rbx, %rax
	movq	%rax, 136(%rsp)
	movsd	%xmm0, (%r8)
	movsd	424(%rsp), %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, (%r11)
	movsd	432(%rsp), %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, (%rax)
	movsd	(%r8), %xmm4
	mulsd	%xmm0, %xmm0
	movq	64(%r13), %rax
	movsd	(%r11), %xmm3
	mulsd	%xmm4, %xmm4
	addq	%rbx, %rax
	mulsd	%xmm3, %xmm3
	addsd	%xmm4, %xmm3
	addsd	%xmm0, %xmm3
	movsd	%xmm3, 200(%rsp)
	movsd	.LC8(%rip), %xmm3
	comisd	%xmm3, %xmm1
	jbe	.L2126
	movsd	200(%rsp), %xmm4
	movsd	.LC337(%rip), %xmm5
	movsd	440(%rsp), %xmm0
	mulsd	%xmm2, %xmm4
	mulsd	%xmm1, %xmm5
	subsd	%xmm4, %xmm0
	movq	.LC256(%rip), %xmm4
	andps	%xmm4, %xmm0
	divsd	%xmm5, %xmm0
	movsd	%xmm0, (%rax)
	movsd	(%r8), %xmm0
	mulsd	%xmm0, %xmm0
	movaps	%xmm0, %xmm5
	movsd	472(%rsp), %xmm0
	mulsd	%xmm2, %xmm5
	subsd	%xmm5, %xmm0
	movsd	.LC45(%rip), %xmm5
	mulsd	%xmm1, %xmm5
	andps	%xmm4, %xmm0
	divsd	%xmm5, %xmm0
	movsd	%xmm0, (%rcx)
	movsd	(%r11), %xmm0
	mulsd	%xmm0, %xmm0
	movaps	%xmm0, %xmm6
	xorps	%xmm0, %xmm0
	mulsd	%xmm2, %xmm6
	subsd	%xmm6, %xmm0
	andps	%xmm4, %xmm0
	divsd	%xmm5, %xmm0
	movsd	%xmm0, (%rdx)
	movq	136(%rsp), %rdx
	movsd	(%rdx), %xmm0
	mulsd	%xmm0, %xmm0
	movaps	%xmm0, %xmm6
	movsd	488(%rsp), %xmm0
	mulsd	%xmm2, %xmm6
	subsd	%xmm6, %xmm0
	andps	%xmm4, %xmm0
	divsd	%xmm5, %xmm0
	jmp	.L1797
.L2126:
	movsd	%xmm3, (%rax)
	movaps	%xmm3, %xmm0
	movsd	%xmm3, (%rcx)
	movsd	%xmm3, (%rdx)
.L1797:
	movq	72(%r13), %rcx
	movsd	%xmm0, (%rsi)
	xorps	%xmm0, %xmm0
	movsd	464(%rsp), %xmm4
	addq	%rbx, %rcx
	comisd	.LC48(%rip), %xmm4
	jbe	.L1798
	movsd	.LC336(%rip), %xmm0
	mulsd	456(%rsp), %xmm0
	divsd	%xmm4, %xmm0
.L1798:
	movq	80(%r13), %rdx
	movsd	%xmm0, (%rcx)
	movsd	104(%r12), %xmm0
	movq	128(%rsp), %rsi
	addq	%rbx, %rdx
	movsd	%xmm0, (%rdx)
	movsd	.LC51(%rip), %xmm0
	movq	%rdx, 176(%rsp)
	movq	88(%r13), %rdx
	addsd	%xmm4, %xmm0
	addq	%rbx, %rdx
	divsd	%xmm1, %xmm0
	divsd	%xmm1, %xmm4
	movsd	%xmm0, 160(%rsp)
	movsd	.LC51(%rip), %xmm0
	mulsd	(%rax), %xmm0
	addsd	%xmm4, %xmm0
	mulsd	(%rcx), %xmm0
	movq	144(%r13), %rcx
	divsd	160(%rsp), %xmm0
	movsd	%xmm0, (%rdx)
	movsd	.LC45(%rip), %xmm0
	mulsd	(%rsi), %xmm0
	mulsd	(%rax), %xmm0
	movl	428(%r12), %eax
	movl	%eax, 184(%rsp)
	movsd	%xmm0, (%rcx,%rbx)
	testl	%eax, %eax
	jle	.L1800
	movl	24(%rsp), %eax
	movl	$1, %r14d
	leaq	8(,%rax,8), %rax
	movq	%rax, 224(%rsp)
.L1801:
	cmpl	%r14d, 24(%rsp)
	jl	.L2203
	movq	64(%rsp), %rax
	leaq	0(,%r14,8), %r10
	movq	$0x000000000, (%rax,%r14,8)
	movq	472(%r12), %rax
	leaq	(%rax,%r14,4), %rcx
	cmpl	$0, (%rcx)
	jle	.L2128
	movl	$1, %eax
.L1802:
	movl	(%rcx), %esi
	cmpl	%eax, %esi
	jl	.L2204
	movq	168(%rbp), %rdi
	leaq	0(,%rax,8), %rsi
	movsd	.LC45(%rip), %xmm6
	movq	72(%rdi,%rsi), %r9
	movq	(%r9,%rbx), %r15
	addq	%r10, %r15
	movsd	(%r15), %xmm5
	comisd	%xmm5, %xmm6
	jbe	.L2129
	movq	56(%rsp), %rdi
	movq	40(%rsp), %r15
	movq	(%rdi,%rax,8), %rdi
	movq	$0x000000000, (%rdi,%r10)
	movq	96(%rsp), %rdi
	movq	(%rdi,%r15,8), %rdi
	movq	(%rdi,%rax,8), %rdi
	movq	$0x000000000, (%rdi,%r10)
	jmp	.L1806
.L2129:
	movq	360(%r12), %r9
	movq	8(%rdi), %rdi
	movq	%rax, 256(%rsp)
	movq	%rsi, 312(%rsp)
	movq	8(%r9), %r9
	movq	%rcx, 304(%rsp)
	movq	%r11, 288(%rsp)
	movq	(%r9,%rax,8), %r9
	movq	%r10, %rax
	addq	(%rdi,%rbx), %rax
	movq	%r8, 280(%rsp)
	movsd	(%rax), %xmm0
	movq	%rdx, 296(%rsp)
	movsd	(%r9,%r10), %xmm4
	movq	%r10, 240(%rsp)
	divsd	%xmm5, %xmm0
	movq	%rax, 232(%rsp)
	movsd	%xmm2, 272(%rsp)
	movsd	%xmm1, 264(%rsp)
	movsd	%xmm4, 248(%rsp)
	addsd	%xmm3, %xmm0
	call	log@PLT
	movq	56(%rsp), %rdx
	movsd	248(%rsp), %xmm4
	movq	256(%rsp), %rax
	movq	240(%rsp), %r10
	divsd	%xmm0, %xmm4
	movq	232(%rsp), %rdi
	movsd	.LC8(%rip), %xmm3
	movq	(%rdx,%rax,8), %r9
	movq	%r10, 248(%rsp)
	movsd	%xmm4, (%r9,%r10)
	movsd	(%rdi), %xmm5
	movsd	(%r15), %xmm4
	movsd	%xmm5, 240(%rsp)
	movaps	%xmm5, %xmm0
	movsd	%xmm4, 232(%rsp)
	divsd	%xmm4, %xmm0
	addsd	%xmm3, %xmm0
	call	log@PLT
	movq	96(%rsp), %rax
	movsd	232(%rsp), %xmm4
	movsd	240(%rsp), %xmm5
	movq	40(%rsp), %rdx
	movq	248(%rsp), %r10
	movq	312(%rsp), %rsi
	divsd	%xmm5, %xmm4
	movq	(%rax,%rdx,8), %rdi
	movq	256(%rsp), %rax
	movq	304(%rsp), %rcx
	movq	296(%rsp), %rdx
	movq	(%rdi,%rax,8), %rdi
	movq	288(%rsp), %r11
	movq	280(%rsp), %r8
	movsd	.LC8(%rip), %xmm3
	movsd	272(%rsp), %xmm2
	movsd	264(%rsp), %xmm1
	addsd	%xmm4, %xmm4
	mulsd	%xmm0, %xmm4
	movsd	%xmm4, (%rdi,%r10)
.L1806:
	movq	96(%rsp), %rdi
	movq	40(%rsp), %r15
	incq	%rax
	movq	(%rdi,%r15,8), %rdi
	movq	(%rdi,%rsi), %rsi
	movq	64(%rsp), %rdi
	movsd	(%rdi,%r14,8), %xmm0
	addsd	(%rsi,%r10), %xmm0
	movsd	%xmm0, (%rdi,%r14,8)
	jmp	.L1802
.L2204:
	movq	48(%rsp), %rdi
	movq	224(%rsp), %rcx
	xorl	%eax, %eax
	movsd	.LC255(%rip), %xmm5
	rep stosb
	movl	$1, %eax
.L1808:
	cmpl	%eax, %esi
	jl	.L1813
	movq	64(%rsp), %rcx
	movsd	(%rcx,%r14,8), %xmm4
	comisd	%xmm5, %xmm4
	jbe	.L2130
	movq	40(%rsp), %rdi
	movq	96(%rsp), %rcx
	movq	(%rcx,%rdi,8), %rcx
	movq	(%rcx,%rax,8), %rdi
	movq	56(%rsp), %rcx
	movq	(%rcx,%rax,8), %rcx
	movsd	(%rdi,%r10), %xmm0
	mulsd	(%rcx,%r10), %xmm0
	movq	48(%rsp), %rcx
	divsd	%xmm4, %xmm0
	addsd	(%rcx,%r14,8), %xmm0
	jmp	.L1811
.L2130:
	movsd	128(%r12), %xmm0
.L1811:
	movq	48(%rsp), %rcx
	incq	%rax
	movsd	%xmm0, (%rcx,%r14,8)
	jmp	.L1808
.L2128:
	movq	16(%rsp), %rax
	movsd	112(%rax), %xmm0
	movq	48(%rsp), %rax
	movsd	%xmm0, (%rax,%r14,8)
.L1813:
	movq	176(%rbp), %rax
	movq	48(%rsp), %rcx
	movq	56(%rax), %rax
	movsd	(%rcx,%r14,8), %xmm0
	incq	%r14
	movq	(%rax,%rbx), %rax
	movsd	%xmm0, (%rax,%r10)
	jmp	.L1801
.L2203:
	movl	$4, %eax
	xorl	%esi, %esi
	xorps	%xmm0, %xmm0
	movl	$1, %ecx
	movq	$0x000000000, 320(%rsp)
.L1815:
	cmpl	%ecx, 24(%rsp)
	jl	.L2205
	movq	472(%r12), %rdi
	cmpl	$0, (%rdi,%rax)
	jle	.L1816
	movq	168(%rbp), %rsi
	movq	8(%rsi), %rsi
	movq	(%rsi,%rbx), %rsi
	addsd	(%rsi,%rax,2), %xmm0
	movb	$1, %sil
.L1816:
	incl	%ecx
	addq	$4, %rax
	jmp	.L1815
.L2205:
	testb	%sil, %sil
	je	.L1818
	movsd	%xmm0, 320(%rsp)
.L1818:
	movsd	320(%rsp), %xmm5
	movl	$1, %eax
	xorps	%xmm0, %xmm0
.L1819:
	cmpl	%eax, 24(%rsp)
	jl	.L2206
	movq	472(%r12), %rcx
	cmpl	$0, (%rcx,%rax,4)
	jle	.L1820
	movq	48(%rsp), %rcx
	addsd	(%rcx,%rax,8), %xmm0
	movq	168(%rbp), %rcx
	movq	8(%rcx), %rcx
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%rax,8), %xmm4
	divsd	%xmm5, %xmm4
	subsd	%xmm4, %xmm0
.L1820:
	incq	%rax
	jmp	.L1819
.L2206:
	movq	176(%rsp), %rax
	movsd	%xmm0, (%rax)
.L1800:
	movl	$1, %r10d
.L1822:
	cmpl	%r10d, 24(%rsp)
	jl	.L2207
	movq	176(%rbp), %rax
	leaq	0(,%r10,8), %r14
	movq	(%rax), %rcx
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%r10,8), %xmm0
	comisd	.LC7(%rip), %xmm0
	jbe	.L2131
	xorl	%ecx, %ecx
.L1825:
	movq	72(%rax,%rcx), %rsi
	movq	(%rsi,%rbx), %rdi
	addq	%r14, %rdi
	movq	%rdi, %rsi
	movq	40(%r13,%rcx), %rdi
	addq	$8, %rcx
	movsd	(%rsi), %xmm0
	subsd	(%rdi,%rbx), %xmm0
	movsd	%xmm0, (%rsi)
	cmpq	$24, %rcx
	jne	.L1825
	cmpl	$1, 452(%r12)
	jle	.L1827
	xorl	%ecx, %ecx
.L1826:
	cmpl	%ecx, 24(%rsp)
	jl	.L2208
	movq	72(%rsp), %rsi
	movq	$0x000000000, (%rsi,%rcx,8)
	incq	%rcx
	jmp	.L1826
.L2208:
	xorl	%ecx, %ecx
.L1829:
	cmpl	%ecx, 24(%rsp)
	jl	.L2209
	movq	192(%rsp), %rsi
	movq	$0x000000000, (%rsi,%rcx,8)
	incq	%rcx
	jmp	.L1829
.L2209:
	movq	$0x000000000, 320(%rsp)
	leaq	0(,%r10,4), %rcx
	xorps	%xmm4, %xmm4
	movq	%rcx, 224(%rsp)
	xorl	%ecx, %ecx
.L1831:
	movq	40(%rax), %rsi
	movq	480(%r12), %r9
	movq	224(%rsp), %r15
	movq	(%rsi,%rbx), %rdi
	addq	%r14, %rdi
	movq	%rdi, %rsi
	leal	1(%rcx), %edi
	cmpl	%edi, (%r9,%r15)
	jl	.L2210
	movsd	(%rsi), %xmm0
	comisd	%xmm3, %xmm0
	jbe	.L1832
	movq	376(%r12), %rdi
	leaq	1(%rcx), %rsi
	movq	%r10, 304(%rsp)
	movq	%rax, 288(%rsp)
	movq	16(%rdi), %r9
	movq	8(%rdi), %rdi
	movq	%rdx, 280(%rsp)
	movq	%r11, 272(%rsp)
	movq	(%r9,%rsi,8), %r9
	movq	(%rdi,%rsi,8), %rsi
	movq	%r8, 264(%rsp)
	movq	%rcx, 240(%rsp)
	movsd	(%r9,%r14), %xmm5
	movsd	(%rsi,%r14), %xmm7
	movsd	%xmm4, 296(%rsp)
	movsd	%xmm2, 256(%rsp)
	movsd	%xmm1, 248(%rsp)
	divsd	%xmm0, %xmm5
	movsd	%xmm7, 176(%rsp)
	movsd	%xmm5, 232(%rsp)
	movaps	%xmm5, %xmm6
	xorps	.LC43(%rip), %xmm6
	movaps	%xmm6, %xmm0
	movq	%xmm6, %r15
	call	exp@PLT
	mulsd	176(%rsp), %xmm0
	addsd	320(%rsp), %xmm0
	movsd	%xmm0, 320(%rsp)
	movq	%r15, %xmm0
	call	exp@PLT
	movsd	.LC8(%rip), %xmm3
	movsd	232(%rsp), %xmm5
	movaps	%xmm0, %xmm6
	movq	304(%rsp), %r10
	movsd	176(%rsp), %xmm0
	movq	288(%rsp), %rax
	movq	280(%rsp), %rdx
	mulsd	%xmm5, %xmm0
	movq	272(%rsp), %r11
	movsd	296(%rsp), %xmm4
	movq	264(%rsp), %r8
	movq	240(%rsp), %rcx
	movsd	256(%rsp), %xmm2
	movsd	248(%rsp), %xmm1
	mulsd	%xmm6, %xmm0
	addsd	%xmm0, %xmm4
.L1832:
	incq	%rcx
	jmp	.L1831
.L2210:
	comisd	.LC72(%rip), %xmm4
	jbe	.L2132
	movq	168(%rbp), %rcx
	mulsd	.LC45(%rip), %xmm4
	divsd	320(%rsp), %xmm4
	movq	72(%rcx), %rdi
	movq	8(%rcx), %rcx
	movq	(%rdi,%rbx), %rdi
	movq	(%rcx,%rbx), %rcx
	movsd	(%rdi,%r14), %xmm0
	divsd	(%rcx,%r14), %xmm0
	divsd	%xmm4, %xmm0
	jmp	.L1837
.L2132:
	movsd	(%rdx), %xmm0
.L1837:
	movq	96(%rax), %rax
	movq	192(%rsp), %rcx
	movsd	%xmm0, (%rcx,%r10,8)
	movq	(%rax,%rbx), %rcx
	addq	%r14, %rcx
	movsd	%xmm0, (%rcx)
	movsd	(%rsi), %xmm4
	movq	%rcx, %rax
	movq	72(%rsp), %rcx
	comisd	%xmm3, %xmm4
	movq	$0x000000000, (%rcx,%r10,8)
	ja	.L1838
.L1839:
	movsd	(%rdx), %xmm0
	movsd	%xmm0, (%rax)
	jmp	.L1827
.L1838:
	movq	168(%rbp), %rcx
	mulsd	.LC45(%rip), %xmm4
	movq	72(%rcx), %rsi
	movq	8(%rcx), %rcx
	movq	(%rsi,%rbx), %rsi
	movq	(%rcx,%rbx), %rcx
	movsd	(%rsi,%r14), %xmm0
	addsd	%xmm0, %xmm0
	divsd	(%rcx,%r14), %xmm0
	divsd	%xmm4, %xmm0
	movsd	.LC71(%rip), %xmm4
	movq	72(%rsp), %rcx
	comisd	%xmm0, %xmm4
	movsd	%xmm0, (%rcx,%r10,8)
	jbe	.L1827
	jmp	.L1839
.L2131:
	movl	$8, %ecx
.L1823:
	movq	(%rax,%rcx,8), %rsi
	incq	%rcx
	movq	(%rsi,%rbx), %rsi
	movq	$0x000000000, (%rsi,%r14)
	cmpq	$13, %rcx
	jne	.L1823
.L1827:
	incq	%r10
	jmp	.L1822
.L2207:
	movq	176(%r13), %rcx
	movl	452(%r12), %esi
	addq	%rbx, %rcx
	cmpl	$1, %esi
	jle	.L2133
	movsd	.LC338(%rip), %xmm3
	movl	$1, %eax
	xorps	%xmm0, %xmm0
.L1842:
	cmpl	%eax, 24(%rsp)
	jl	.L2211
	movq	72(%rsp), %rdi
	movsd	(%rdi,%rax,8), %xmm4
	comisd	%xmm3, %xmm4
	jbe	.L1844
	movq	168(%rbp), %rdi
	movq	8(%rdi), %rdi
	movq	(%rdi,%rbx), %rdi
	addsd	(%rdi,%rax,8), %xmm0
.L1844:
	incq	%rax
	jmp	.L1842
.L2211:
	xorps	%xmm3, %xmm3
	comisd	%xmm3, %xmm0
	jbe	.L2134
	movsd	.LC338(%rip), %xmm5
	movl	$1, %eax
	xorl	%edi, %edi
	movaps	%xmm3, %xmm0
	movsd	%xmm3, 320(%rsp)
.L1849:
	cmpl	%eax, 24(%rsp)
	jl	.L2212
	movq	72(%rsp), %r10
	movsd	(%r10,%rax,8), %xmm4
	comisd	%xmm5, %xmm4
	jbe	.L1850
	movq	168(%rbp), %rdi
	movq	8(%rdi), %rdi
	movq	(%rdi,%rbx), %rdi
	movsd	(%rdi,%rax,8), %xmm4
	movq	176(%rbp), %rdi
	movq	96(%rdi), %rdi
	addsd	%xmm4, %xmm3
	movq	(%rdi,%rbx), %rdi
	movsd	(%rdi,%rax,8), %xmm6
	movb	$1, %dil
	mulsd	%xmm4, %xmm6
	addsd	%xmm6, %xmm0
.L1850:
	incq	%rax
	jmp	.L1849
.L2212:
	testb	%dil, %dil
	je	.L1853
	movsd	%xmm0, 320(%rsp)
.L1853:
	movsd	320(%rsp), %xmm0
	divsd	%xmm3, %xmm0
	jmp	.L1854
.L2134:
	movsd	(%rdx), %xmm0
	jmp	.L1854
.L2133:
	movsd	104(%r12), %xmm0
.L1854:
	cmpl	$0, 184(%rsp)
	movsd	%xmm0, (%rcx)
	jle	.L1856
	movl	$1, %eax
.L1855:
	cmpl	%eax, 24(%rsp)
	jl	.L2213
	movq	488(%r12), %rdi
	movq	176(%rbp), %rcx
	movsd	.LC51(%rip), %xmm0
	movsd	.LC51(%rip), %xmm3
	movq	8(%rdi), %rdi
	cvtsi2sdl	(%rdi,%rax,4), %xmm6
	movq	64(%rsp), %rdi
	movsd	(%rdi,%rax,8), %xmm5
	movq	72(%rsp), %rdi
	movsd	(%rdi,%rax,8), %xmm4
	movq	40(%rcx), %rdi
	addsd	%xmm6, %xmm3
	movq	(%rdi,%rbx), %rdi
	addsd	%xmm5, %xmm3
	mulsd	(%rdi,%rax,8), %xmm0
	movq	48(%rcx), %rdi
	movq	(%rdi,%rbx), %rdi
	addsd	%xmm4, %xmm3
	mulsd	(%rdi,%rax,8), %xmm6
	movq	56(%rcx), %rdi
	movq	(%rdi,%rbx), %rdi
	mulsd	(%rdi,%rax,8), %xmm5
	movq	64(%rcx), %rdi
	addsd	%xmm6, %xmm0
	movq	(%rdi,%rbx), %rdi
	leaq	(%rdi,%rax,8), %rdi
	addsd	%xmm5, %xmm0
	cmpl	$1, %esi
	jle	.L1857
	movq	96(%rcx), %rcx
	movq	152(%rsp), %r9
	movq	(%rcx,%rbx), %rcx
	movsd	%xmm3, (%r9,%rax,8)
	mulsd	(%rcx,%rax,8), %xmm4
	addsd	%xmm4, %xmm0
	jmp	.L2167
.L1857:
	movq	152(%rsp), %rcx
	movsd	%xmm3, (%rcx,%rax,8)
.L2167:
	divsd	%xmm3, %xmm0
	incq	%rax
	movsd	%xmm0, (%rdi)
	jmp	.L1855
.L2213:
	movq	$0x000000000, 320(%rsp)
	xorps	%xmm0, %xmm0
	xorl	%eax, %eax
	xorl	%ecx, %ecx
	movaps	%xmm0, %xmm4
.L1860:
	incq	%rax
	cmpl	%eax, 24(%rsp)
	jl	.L2214
	movq	152(%rsp), %rcx
	movsd	(%rcx,%rax,8), %xmm3
	movq	168(%rbp), %rcx
	movq	8(%rcx), %rcx
	addsd	%xmm3, %xmm0
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%rax,8), %xmm5
	movq	176(%rbp), %rcx
	movq	64(%rcx), %rcx
	mulsd	%xmm5, %xmm3
	movq	(%rcx,%rbx), %rcx
	movsd	(%rcx,%rax,8), %xmm6
	movb	$1, %cl
	addsd	%xmm3, %xmm4
	mulsd	%xmm5, %xmm6
	addsd	%xmm6, %xmm0
	jmp	.L1860
.L2214:
	testb	%cl, %cl
	je	.L1862
	movsd	%xmm0, 320(%rsp)
.L1862:
	movsd	320(%rsp), %xmm0
	divsd	%xmm4, %xmm0
	movsd	%xmm0, (%rdx)
.L1856:
	movsd	(%r8), %xmm4
	movsd	(%r11), %xmm0
	movq	%rdx, 224(%rsp)
	movq	136(%rsp), %rax
	movsd	%xmm1, 24(%rsp)
	movsd	%xmm2, 184(%rsp)
	mulsd	%xmm4, %xmm4
	mulsd	%xmm0, %xmm0
	movsd	(%rax), %xmm3
	mulsd	%xmm3, %xmm3
	addsd	%xmm4, %xmm0
	addsd	%xmm3, %xmm0
	call	sqrt@PLT
	movsd	24(%rsp), %xmm1
	movsd	.LC45(%rip), %xmm3
	movsd	184(%rsp), %xmm2
	movq	224(%rsp), %rdx
	movsd	%xmm0, 176(%rsp)
	mulsd	%xmm1, %xmm3
	movsd	.LC50(%rip), %xmm0
	addsd	160(%rsp), %xmm0
	mulsd	(%rdx), %xmm0
	divsd	%xmm2, %xmm3
	mulsd	%xmm3, %xmm0
	call	sqrt@PLT
	movq	96(%r13), %rax
	movq	64(%rbp), %r14
	movaps	%xmm0, %xmm2
	movsd	24(%rsp), %xmm1
	movsd	176(%rsp), %xmm0
	addq	%rbx, %r14
	divsd	%xmm2, %xmm0
	divsd	160(%rsp), %xmm0
	movsd	%xmm0, (%rax,%rbx)
	movq	104(%r13), %rax
	movsd	168(%rsp), %xmm0
	divsd	120(%rsp), %xmm0
	movsd	%xmm0, (%rax,%rbx)
	movsd	(%r14), %xmm0
	comisd	.LC50(%rip), %xmm0
	jbe	.L2135
	movq	16(%rsp), %rax
	movaps	%xmm1, %xmm0
	divsd	120(%rsp), %xmm0
	movsd	80(%rax), %xmm2
	subsd	32(%rbp), %xmm2
	mulsd	.LC7(%rip), %xmm2
	movq	72(%rbp), %rax
	mulsd	%xmm0, %xmm2
	divsd	(%rax,%rbx), %xmm2
	movq	112(%r13), %rax
	movsd	%xmm2, 24(%rsp)
	movsd	%xmm2, (%rax,%rbx)
	movsd	448(%rsp), %xmm0
	divsd	%xmm1, %xmm0
	subsd	200(%rsp), %xmm0
	andps	.LC256(%rip), %xmm0
	call	sqrt@PLT
	movsd	24(%rsp), %xmm2
	movq	120(%r13), %rax
	mulsd	.LC339(%rip), %xmm0
	movq	80(%rbp), %rdx
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, (%rax,%rbx)
	mulsd	(%r14), %xmm0
	movsd	(%rdx,%rbx), %xmm1
	movq	128(%r13), %rax
	divsd	%xmm0, %xmm1
	movsd	%xmm1, (%rax,%rbx)
	jmp	.L1865
.L2135:
	movq	112(%r13), %rax
	movsd	.LC299(%rip), %xmm0
	movq	128(%rsp), %rdx
	movsd	%xmm0, (%rax,%rbx)
	movq	120(%r13), %rax
	divsd	(%rdx), %xmm0
	movsd	%xmm0, (%rax,%rbx)
	jmp	.L1865
.L1793:
	movq	0(%r13,%rax,8), %rdx
	incq	%rax
	movq	$0x000000000, (%rdx,%rbx)
	cmpq	$23, %rax
	jne	.L1793
.L1865:
	movsd	176(%rsp), %xmm7
	movq	136(%r13), %rax
	movsd	%xmm7, (%rax,%rbx)
.L1771:
	incq	40(%rsp)
	jmp	.L1768
.L2200:
	movq	16(%rsp), %rdx
	xorps	%xmm0, %xmm0
	movq	16(%rsp), %rax
	mulsd	104(%rdx), %xmm0
	movsd	80(%rdx), %xmm1
	movl	56(%rax), %eax
	comisd	%xmm0, %xmm1
	jbe	.L1868
	decl	%eax
	leaq	760(%rsp), %r15
	jne	.L1870
	cmpl	$0, 112(%rsp)
	jne	.L1871
	leaq	.LC340(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1871:
	movq	geom(%rip), %rax
	cmpl	$1, 24(%rax)
	jne	.L1872
	leaq	.LC341(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1872:
	movq	geom(%rip), %rax
	cmpl	$2, 24(%rax)
	jne	.L1870
	leaq	.LC342(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1870:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%r15, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC343(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movl	8(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC344(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC345(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC346(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movsd	32(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	leaq	.LC347(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	cvttsd2siq	216(%rax), %r14
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	xorl	%eax, %eax
.L1873:
	cmpl	%eax, %edx
	jl	.L2215
	movq	8(%rsp), %rbx
	xorl	%ecx, %ecx
	movl	%ecx, (%rbx,%rax,4)
	incq	%rax
	jmp	.L1873
.L2215:
	movq	molecs(%rip), %rdx
	xorl	%eax, %eax
	movl	80(%rdx), %esi
.L1875:
	incq	%rax
	cmpl	%eax, %esi
	jl	.L2216
	movq	8(%rdx), %rcx
	movq	8(%rsp), %rbx
	movslq	(%rcx,%rax,4), %rcx
	incl	(%rbx,%rcx,4)
	jmp	.L1875
.L2216:
	leaq	.LC348(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$1, %ebx
	leaq	.LC349(%rip), %r13
.L1877:
	movq	gas(%rip), %rax
	movl	%ebx, %ebp
	cmpl	%ebx, 424(%rax)
	jl	.L2217
	movq	%r13, %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebp, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC350(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	movl	(%rax,%rbx,4), %r12d
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC351(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebp, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC352(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incq	%rbx
	jmp	.L1877
.L2217:
	cmpl	$0, 448(%rax)
	jg	.L1879
.L1886:
	leaq	.LC353(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZNSo9_M_insertIxEERSoT_@PLT
	jmp	.L2218
.L1879:
	leaq	320(%rsp), %rsi
	xorl	%edi, %edi
	call	_Z6ENERGYiRd
	movl	$4, %r12d
	movl	$1, %ebx
	leaq	.LC354(%rip), %r13
.L1881:
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L2219
	movq	472(%rax), %rax
	cmpl	$0, (%rax,%r12)
	jle	.L1882
	movq	%r13, %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC355(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	leaq	(%r12,%r12), %rbp
	movq	288(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC356(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC357(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC358(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	288(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC356(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	760(%rsp), %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC355(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	288(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC356(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1882:
	incl	%ebx
	addq	$4, %r12
	jmp	.L1881
.L2219:
	movl	$8, %ebp
	movl	$1, %ebx
	leaq	.LC359(%rip), %r12
.L1884:
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L1886
	movq	%r12, %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC360(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC361(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC362(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	760(%rsp), %rdi
	leaq	.LC361(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC362(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%rbp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%ebx
	addq	$8, %rbp
	jmp	.L1884
.L2218:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	leaq	.LC363(%rip), %rsi
	movq	%r15, %rdi
	cvttsd2siq	224(%rax), %rbx
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZNSo9_M_insertIxEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC364(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r12d
	movl	$1, %r13d
	leaq	.LC276(%rip), %r14
.L1887:
	movq	gas(%rip), %rax
	leaq	760(%rsp), %rbx
	cmpl	%r13d, 424(%rax)
	jl	.L2220
	cmpl	$8, 440(%rax)
	je	.L1889
	xorl	%ebp, %ebp
.L1888:
	movq	gas(%rip), %rdx
	leal	1(%rbp), %eax
	cmpl	%eax, 424(%rdx)
	jl	.L2221
	movq	calc(%rip), %rax
	incq	%rbp
	movq	%rbx, %rdi
	movq	328(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbp,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	jmp	.L1888
.L2221:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$8, 440(%rax)
	jne	.L1891
.L1889:
	xorl	%ebp, %ebp
.L1892:
	movq	gas(%rip), %rdx
	leal	1(%rbp), %eax
	cmpl	%eax, 424(%rdx)
	jl	.L2222
	movq	calc(%rip), %rax
	incq	%rbp
	movq	%rbx, %rdi
	movq	328(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbp,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	jmp	.L1892
.L2222:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1891:
	incl	%r13d
	addq	$8, %r12
	jmp	.L1887
.L2220:
	call	clock@PLT
	leaq	.LC365(%rip), %rsi
	movq	%rbx, %rdi
	movq	%rax, %rbp
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	cvtsi2sdl	%ebp, %xmm6
	movq	%rax, %rdi
	movaps	%xmm6, %xmm0
	movsd	%xmm6, 16(%rsp)
	divsd	.LC162(%rip), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC366(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC367(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0
	subsd	160(%rax), %xmm0
	mulsd	.LC162(%rip), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC368(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	216(%rax), %xmm0
	subsd	168(%rax), %xmm0
	mulsd	.LC162(%rip), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	cmpl	$0, 56(%rax)
	je	.L1895
.L1897:
	leaq	760(%rsp), %rax
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	movq	%rax, 16(%rsp)
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2223
.L1895:
	movq	gas(%rip), %rdx
	cmpl	$0, 428(%rdx)
	jne	.L1897
	cmpl	$0, 20(%rax)
	jne	.L1897
	movq	geom(%rip), %rcx
	xorps	%xmm0, %xmm0
	xorl	%eax, %eax
	xorl	%edx, %edx
	movq	%xmm0, %r12
	movq	%xmm0, %rbp
	movq	$0x000000000, 320(%rsp)
	movl	4(%rcx), %esi
.L1898:
	incq	%rax
	cmpl	%eax, %esi
	jl	.L2224
	movq	144(%rcx), %rdx
	movq	%rbp, %xmm6
	movq	40(%rdx), %rdi
	addsd	(%rdi,%rax,8), %xmm0
	movq	32(%rdx), %rdi
	movq	24(%rdx), %rdx
	addsd	(%rdi,%rax,8), %xmm6
	movq	%xmm6, %rbp
	movq	%r12, %xmm6
	addsd	(%rdx,%rax,8), %xmm6
	movb	$1, %dl
	movq	%xmm6, %r12
	jmp	.L1898
.L2224:
	testb	%dl, %dl
	je	.L1900
	movsd	%xmm0, 320(%rsp)
.L1900:
	leaq	760(%rsp), %rbx
	leaq	.LC369(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC370(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	cvtsi2sdl	80(%rax), %xmm0
	movq	geom(%rip), %rax
	cvtsi2sdl	4(%rax), %xmm1
	divsd	%xmm1, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC371(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	320(%rsp), %xmm0
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	cvtsi2sdl	4(%rax), %xmm1
	movq	calc(%rip), %rax
	mulsd	80(%rax), %xmm1
	divsd	%xmm1, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC372(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	%rbp, %xmm0
	cvtsi2sdl	4(%rax), %xmm1
	divsd	%xmm1, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC373(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	%r12, %xmm0
	cvtsi2sdl	4(%rax), %xmm1
	divsd	%xmm1, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jne	.L1901
	movq	320(%rax), %rbp
	movq	output(%rip), %rdx
	movsd	.LC374(%rip), %xmm1
	movq	136(%rdx), %r12
	movq	8(%rbp), %rax
	movsd	8(%rax), %xmm0
	movq	24(%r12), %rax
	mulsd	%xmm0, %xmm0
	mulsd	8(%rax), %xmm1
	movq	16(%rbp), %rax
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 16(%rsp)
	movsd	8(%rax), %xmm1
	movq	40(%rbp), %rax
	movaps	%xmm1, %xmm0
	movsd	%xmm1, 32(%rsp)
	mulsd	.LC375(%rip), %xmm0
	divsd	8(%rax), %xmm0
	call	sqrt@PLT
	movq	88(%r12), %rdx
	movsd	32(%rsp), %xmm1
	movsd	%xmm0, 24(%rsp)
	movq	24(%rbp), %rax
	movsd	8(%rdx), %xmm0
	divsd	%xmm1, %xmm0
	movsd	.LC8(%rip), %xmm1
	subsd	8(%rax), %xmm1
	call	pow@PLT
	leaq	.LC376(%rip), %rsi
	movq	%rbx, %rdi
	movaps	%xmm0, %xmm1
	movsd	16(%rsp), %xmm0
	mulsd	24(%rsp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%rsp)
	movsd	%xmm0, 320(%rsp)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	328(%rax), %rdx
	movsd	80(%rax), %xmm1
	movq	output(%rip), %rax
	movq	8(%rdx), %rdx
	subsd	32(%rax), %xmm1
	movq	molecs(%rip), %rax
	cvtsi2sdl	80(%rax), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	8(%rdx), %xmm0
	divsd	%xmm1, %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L1897
.L1901:
	leaq	.LC377(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$1, %ebp
.L1902:
	movq	gas(%rip), %rax
	movl	%ebp, %ebx
	cmpl	%ebp, 424(%rax)
	leaq	760(%rsp), %rax
	movq	%rax, 16(%rsp)
	jl	.L2225
	movq	16(%rsp), %rdi
	leaq	.LC378(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	0(,%rbp,8), %r12
	movl	$8, %ebx
	movl	$1, %r13d
.L1903:
	movq	gas(%rip), %rax
	cmpl	%r13d, 424(%rax)
	jl	.L2226
	movq	output(%rip), %rcx
	movq	352(%rax), %r15
	movsd	.LC379(%rip), %xmm0
	movq	176(%rcx), %rax
	movq	136(%rcx), %r14
	movq	8(%rax), %rax
	movq	24(%r14), %rcx
	movq	8(%rax), %rax
	mulsd	8(%rcx), %xmm0
	mulsd	(%rax,%rbx), %xmm0
	movq	16(%r15), %rax
	movq	(%rax,%r12), %rax
	mulsd	(%rax,%rbx), %xmm0
	movq	40(%r15), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbx), %xmm1
	movq	8(%r15), %rax
	movsd	%xmm0, 16(%rsp)
	movq	(%rax,%r12), %rax
	movaps	%xmm1, %xmm0
	movsd	%xmm1, 32(%rsp)
	mulsd	.LC292(%rip), %xmm0
	divsd	(%rax,%rbx), %xmm0
	call	sqrt@PLT
	movq	88(%r14), %rdx
	movsd	32(%rsp), %xmm1
	movsd	%xmm0, 24(%rsp)
	movq	24(%r15), %rax
	movsd	8(%rdx), %xmm0
	movq	(%rax,%r12), %rax
	divsd	%xmm1, %xmm0
	movsd	.LC8(%rip), %xmm1
	subsd	(%rax,%rbx), %xmm1
	call	pow@PLT
	movq	104(%rsp), %rax
	leaq	760(%rsp), %rdi
	leaq	.LC380(%rip), %rsi
	movaps	%xmm0, %xmm1
	movsd	16(%rsp), %xmm0
	mulsd	24(%rsp), %xmm0
	movq	(%rax,%rbp,8), %r15
	addq	%rbx, %r15
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, (%r15)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r13d, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	gas(%rip), %rcx
	movq	molecs(%rip), %rsi
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movq	312(%rcx), %rcx
	cvtsi2sdl	80(%rsi), %xmm1
	movq	328(%rax), %rdx
	movsd	80(%rax), %xmm0
	movq	(%rcx,%r12), %rcx
	movq	output(%rip), %rax
	movq	(%rdx,%r12), %rdx
	mulsd	8(%rcx), %xmm1
	subsd	32(%rax), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	(%rdx,%rbx), %xmm0
	divsd	%xmm1, %xmm0
	divsd	(%r15), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r13d
	addq	$8, %rbx
	jmp	.L1903
.L2226:
	incq	%rbp
	jmp	.L1902
.L2225:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r12d
	movl	$1, %ebp
	leaq	.LC381(%rip), %r14
.L1906:
	movq	gas(%rip), %rax
	cmpl	%ebp, 424(%rax)
	jl	.L1897
	movq	16(%rsp), %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebp, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	xorl	%ebx, %ebx
	leaq	.LC380(%rip), %r15
.L1907:
	movq	gas(%rip), %rax
	leal	1(%rbx), %r13d
	cmpl	%r13d, 424(%rax)
	jl	.L2227
	movq	16(%rsp), %rdi
	movq	%r15, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r13d, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	incq	%rbx
	movq	328(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	(%rax,%rbx,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L1907
.L2227:
	incl	%ebp
	addq	$8, %r12
	jmp	.L1906
.L2223:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 4(%rax)
	je	.L1910
	cmpl	$1, 8(%rax)
	jne	.L1911
.L1910:
	movq	16(%rsp), %rdi
	leaq	.LC382(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1911:
	movl	$4, %r15d
	leaq	.LC412(%rip), %r14
.L1913:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, (%rax,%r15)
	je	.L1912
.L1923:
	cmpq	$8, %r15
	je	.L2228
	movl	$8, %r15d
	jmp	.L1913
.L1912:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	16(%rsp), %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC383(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	leaq	(%r15,%r15), %rbx
	movq	128(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC384(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC385(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	24(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC386(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC387(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	40(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC388(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	48(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC389(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	40(%rax), %rdx
	movq	48(%rax), %rax
	movsd	(%rdx,%rbx), %xmm0
	addsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC390(%rip), %rbp
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC391(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	56(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC392(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	16(%rsp), %rdi
	leaq	.LC393(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	56(%rax), %rdx
	movq	64(%rax), %rax
	movsd	(%rdx,%rbx), %xmm0
	subsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	760(%rsp), %rdi
	leaq	.LC394(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	72(%rax), %rdx
	movq	80(%rax), %rax
	movsd	(%rdx,%rbx), %xmm0
	subsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	760(%rsp), %rbp
	leaq	.LC395(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	88(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.L1915
	leaq	.LC397(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	104(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1915:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.L1916
	leaq	.LC398(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	120(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1916:
	movq	gas(%rip), %rax
	cmpl	$1, 452(%rax)
	jle	.L1917
	leaq	.LC399(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	264(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1917:
	leaq	.LC400(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	232(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC401(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	96(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.L1918
	leaq	.LC402(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	112(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1918:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.L1919
	leaq	.LC403(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	128(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1919:
	movq	gas(%rip), %rax
	cmpl	$1, 452(%rax)
	jle	.L1920
	leaq	.LC404(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	272(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1920:
	leaq	.LC405(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	240(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC406(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	248(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC396(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC407(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	152(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC408(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC409(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	160(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC410(%rip), %rbp
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.L1921
	leaq	760(%rsp), %rdi
	leaq	.LC411(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	168(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1921:
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jle	.L1923
	xorl	%ebp, %ebp
	leaq	.LC351(%rip), %r13
.L1922:
	movq	gas(%rip), %rax
	leal	1(%rbp), %r12d
	cmpl	%r12d, 424(%rax)
	jl	.L1923
	leaq	760(%rsp), %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	288(%rax,%rbp,8), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incq	%rbp
	jmp	.L1922
.L2228:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	16(%rsp), %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	xorl	%eax, %eax
.L1925:
	cmpl	%eax, %edx
	jl	.L2229
	movq	144(%rsp), %rbx
	movq	$0x000000000, (%rbx,%rax,8)
	incq	%rax
	jmp	.L1925
.L2229:
	movq	geom(%rip), %rax
	movl	$8, %esi
	movl	$1, %ecx
	movq	output(%rip), %r8
	movl	(%rax), %edi
.L1927:
	cmpl	%ecx, %edi
	jl	.L2230
	xorl	%eax, %eax
.L1929:
	incq	%rax
	cmpl	%eax, %edx
	jl	.L2231
	movq	176(%r8), %r9
	movq	144(%rsp), %rbx
	movq	(%r9), %r9
	movsd	(%rbx,%rax,8), %xmm0
	movq	(%r9,%rsi), %r9
	addsd	(%r9,%rax,8), %xmm0
	movsd	%xmm0, (%rbx,%rax,8)
	jmp	.L1929
.L2231:
	incl	%ecx
	addq	$8, %rsi
	jmp	.L1927
.L2230:
	decl	%edx
	jg	.L1930
.L1938:
	leaq	760(%rsp), %rbx
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2232
.L1930:
	leaq	760(%rsp), %rbx
	leaq	.LC413(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC414(%rip), %r13
	movq	%rbx, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %ebp
	movl	$1, %r12d
	leaq	.LC415(%rip), %r14
.L1932:
	movq	gas(%rip), %rax
	cmpl	%r12d, 424(%rax)
	jl	.L2233
	movq	%r14, %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	16(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	24(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	32(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r12d
	addq	$4, %rbp
	jmp	.L1932
.L2233:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC416(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r13, %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %ebp
	movl	$1, %r12d
	leaq	.LC415(%rip), %r14
.L1934:
	movq	gas(%rip), %rax
	cmpl	%r12d, 424(%rax)
	jl	.L2234
	movq	%r14, %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %r13
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	16(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	24(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	32(%rax), %rax
	movl	(%rax,%rbp), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r12d
	addq	$4, %rbp
	jmp	.L1934
.L2234:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC417(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$4, %ebx
	movl	$1, %ebp
	leaq	.LC418(%rip), %r12
.L1936:
	movq	gas(%rip), %rax
	cmpl	%ebp, 424(%rax)
	jl	.L1938
	leaq	760(%rsp), %rdi
	movq	%r12, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebp, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC419(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	8(%rax), %rdx
	movq	16(%rax), %rcx
	movl	(%rcx,%rbx), %esi
	addl	(%rdx,%rbx), %esi
	movq	24(%rax), %rdx
	movq	32(%rax), %rax
	addl	(%rdx,%rbx), %esi
	addl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC420(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	8(%rax), %rdx
	movq	16(%rax), %rcx
	movl	(%rcx,%rbx), %esi
	addl	(%rdx,%rbx), %esi
	movq	24(%rax), %rdx
	movq	32(%rax), %rax
	addl	(%rdx,%rbx), %esi
	addl	(%rax,%rbx), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%ebp
	addq	$4, %rbx
	jmp	.L1936
.L2232:
	leaq	.LC421(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	output(%rip), %rax
	movq	%rbx, %rdi
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC422(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC423(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC424(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %r12d
	movl	$1, %r14d
	leaq	.LC59(%rip), %r13
.L1939:
	movq	geom(%rip), %rax
	cmpl	%r14d, (%rax)
	jl	.L2235
	movl	%r14d, %esi
	movq	%rbx, %rdi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	$8, %ebp
.L1940:
	movq	output(%rip), %rax
	movq	%rbx, %rdi
	movq	136(%rax), %rax
	movq	(%rax,%rbp), %rax
	movsd	(%rax,%r12), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	addq	$8, %rbp
	cmpq	$88, %rbp
	jne	.L1940
	movq	output(%rip), %rax
	movq	%rbx, %rdi
	movq	136(%rax), %rax
	movq	176(%rax), %rax
	movsd	(%rax,%r12), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
.L1941:
	movq	output(%rip), %rax
	movq	%rbx, %rdi
	movq	136(%rax), %rax
	movq	(%rax,%rbp), %rax
	movsd	(%rax,%r12), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	addq	$8, %rbp
	cmpq	$176, %rbp
	jne	.L1941
	movl	$22, %ebp
.L1942:
	movq	gas(%rip), %rax
	cmpl	%ebp, 424(%rax)
	jl	.L2236
	movq	output(%rip), %rax
	movq	%rbx, %rdi
	movq	176(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r12), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	incl	%ebp
	jmp	.L1942
.L2236:
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r14d
	addq	$8, %r12
	jmp	.L1939
.L2235:
	leaq	.LC425(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$1, %ebx
.L1945:
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L2237
	leaq	760(%rsp), %rbp
	leaq	.LC351(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC426(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	xorl	%ebp, %ebp
.L1946:
	movq	geom(%rip), %rax
	leal	1(%rbp), %esi
	cmpl	%esi, (%rax)
	jl	.L2238
	leaq	760(%rsp), %rdi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	output(%rip), %rdx
	movq	%rax, %rdi
	leaq	1(%rbp), %rax
	leaq	0(,%rax,8), %r13
	movq	136(%rdx), %rdx
	movq	8(%rdx), %rdx
	movsd	(%rdx,%rax,8), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	xorl	%r12d, %r12d
	leaq	760(%rsp), %r14
.L1947:
	movq	output(%rip), %rax
	movq	%r14, %rdi
	movq	176(%rax), %rax
	movq	(%rax,%r12), %rax
	movq	(%rax,%r13), %rax
	movsd	(%rax,%r15), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC59(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	addq	$8, %r12
	cmpq	$104, %r12
	jne	.L1947
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%r14, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incq	%rbp
	jmp	.L1946
.L2238:
	incl	%ebx
	addq	$8, %r15
	jmp	.L1945
.L2237:
	leaq	744(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.L1868:
	movq	calc(%rip), %rax
	leaq	_ZSt4cout(%rip), %rbp
	cmpl	$0, 56(%rax)
	jne	.L1950
	cmpl	$1, 20(%rax)
	jne	.L1950
	call	_Z18INITIALISE_SAMPLESv
	leaq	1272(%rsp), %rbx
	movl	$17, %edx
	leaq	.LC427(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	1400(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC428(%rip), %rsi
	testb	%al, %al
	jne	.L2179
	leaq	.LC429(%rip), %rsi
.L2179:
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	leaq	1288(%rsp), %rdi
	movsd	224(%rax), %xmm0
	movq	molecs(%rip), %rax
	cvtsi2sdl	80(%rax), %xmm1
	addsd	%xmm0, %xmm0
	movq	1288(%rsp), %rax
	movq	-24(%rax), %rax
	movq	$15, 1304(%rsp,%rax)
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 320(%rsp)
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	movq	$15, 16(%rdi,%rax)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	movq	$15, 16(%rdi,%rax)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	72(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	movq	$15, 16(%rdi,%rax)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rdx
	movq	72(%rax), %rax
	movsd	8(%rdx), %xmm0
	subsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.L1950:
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
	cmpl	$8, %eax
	ja	.L1953
	movl	$336, %edx
	btq	%rax, %rdx
	jnc	.L1953
	leaq	1272(%rsp), %r12
	movl	$17, %edx
	leaq	.LC430(%rip), %rsi
	movq	%r12, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	1400(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC431(%rip), %rsi
	testb	%al, %al
	jne	.L2181
	leaq	.LC432(%rip), %rsi
.L2181:
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	molecs(%rip), %rax
	movsd	.LC314(%rip), %xmm7
	cvtsi2sdl	80(%rax), %xmm5
	movq	calc(%rip), %rax
	mulsd	80(%rax), %xmm7
	movq	gas(%rip), %rax
	cmpl	$4, 440(%rax)
	movsd	%xmm5, 16(%rsp)
	movq	%xmm7, %r13
	jne	.L1956
	leaq	1288(%rsp), %rdi
	movaps	%xmm7, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC59(%rip), %rbx
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	4(%rax), %xmm0
	divsd	.LC314(%rip), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	320(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1956:
	movq	gas(%rip), %rax
	cmpl	$8, 440(%rax)
	jne	.L1957
	leaq	1288(%rsp), %rdi
	movq	%r13, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC59(%rip), %rbx
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	4(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	8(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	12(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	16(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	20(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	24(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	28(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	32(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1957:
	movq	gas(%rip), %rax
	cmpl	$6, 440(%rax)
	jne	.L1958
	leaq	1288(%rsp), %rdi
	movq	%r13, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC59(%rip), %rbx
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	4(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	8(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	12(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	16(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	8(%rsp), %rax
	cvtsi2sdl	20(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L1958:
	movq	%r12, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.L1953:
	movq	calc(%rip), %rax
	movsd	.LC7(%rip), %xmm0
	mulsd	104(%rax), %xmm0
	movsd	80(%rax), %xmm1
	comisd	%xmm0, %xmm1
	jbe	.L2152
	leaq	.LC433(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rdx
	movq	geom(%rip), %rcx
	xorl	%eax, %eax
	movsd	104(%rdx), %xmm6
	cmpl	$1, 44(%rdx)
	movl	(%rcx), %esi
	movsd	%xmm6, 8(%rsp)
	jg	.L1961
	cmpl	$0, 56(%rdx)
	jle	.L1962
	movaps	%xmm6, %xmm0
	addsd	%xmm6, %xmm0
	movsd	%xmm0, 104(%rdx)
.L1962:
	movq	output(%rip), %rdi
	movl	$1, %eax
	xorl	%r9d, %r9d
	movq	gas(%rip), %r8
	movsd	.LC179(%rip), %xmm5
	movq	.LC256(%rip), %xmm6
.L1963:
	cmpl	%eax, %esi
	jl	.L2239
	movq	136(%rcx), %r9
	movsd	104(%rdx), %xmm1
	movq	80(%rsp), %rbx
	movsd	256(%rdx), %xmm4
	movq	24(%r9), %r10
	movq	16(%r9), %r9
	movsd	%xmm1, (%rbx,%rax,8)
	movsd	(%r10,%rax,8), %xmm0
	subsd	(%r9,%rax,8), %xmm0
	movq	136(%rdi), %r9
	movq	104(%r9), %r10
	movsd	(%r10,%rax,8), %xmm2
	comisd	%xmm5, %xmm2
	jbe	.L2153
	movq	112(%r9), %r10
	movq	40(%r9), %r9
	movsd	(%r9,%rax,8), %xmm3
	movsd	(%r10,%rax,8), %xmm2
	mulsd	248(%rdx), %xmm2
	andps	%xmm6, %xmm3
	divsd	%xmm3, %xmm0
	mulsd	%xmm4, %xmm0
	movsd	%xmm0, 88(%rsp)
	minsd	%xmm2, %xmm0
	movsd	%xmm0, (%rbx,%rax,8)
	jmp	.L1969
.L2153:
	mulsd	%xmm4, %xmm0
	divsd	24(%r8), %xmm0
	comisd	%xmm0, %xmm1
	movsd	%xmm0, 88(%rsp)
	jbe	.L1969
	movq	80(%rsp), %rbx
	movsd	%xmm0, (%rbx,%rax,8)
.L1969:
	movq	80(%rsp), %rbx
	movsd	(%rbx,%rax,8), %xmm0
	comisd	%xmm0, %xmm1
	jbe	.L1971
	movsd	%xmm0, 104(%rdx)
.L1971:
	incq	%rax
	movb	$1, %r9b
	jmp	.L1963
.L2239:
	testb	%r9b, %r9b
	je	.L1975
	movsd	88(%rsp), %xmm6
	movsd	%xmm6, 320(%rsp)
	jmp	.L1975
.L1961:
	cmpl	%eax, %esi
	jl	.L1975
	movq	80(%rsp), %rdx
	movsd	8(%rsp), %xmm5
	movsd	%xmm5, (%rdx,%rax,8)
	incq	%rax
	jmp	.L1961
.L1975:
	xorl	%eax, %eax
.L1978:
	incq	%rax
	cmpl	%eax, %esi
	jl	.L2240
	movq	56(%rcx), %rdi
	movq	80(%rsp), %rbx
	movsd	.LC7(%rip), %xmm0
	movq	144(%rcx), %rdx
	movq	24(%rdi), %rdi
	movq	24(%rdx), %rdx
	movslq	(%rdi,%rax,4), %rdi
	mulsd	(%rbx,%rdi,8), %xmm0
	movsd	%xmm0, (%rdx,%rax,8)
	jmp	.L1978
.L2240:
	leaq	.LC434(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	8(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC258(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0
	movsd	184(%rax), %xmm1
	mulsd	%xmm0, %xmm1
	mulsd	192(%rax), %xmm0
	divsd	8(%rsp), %xmm1
	movsd	%xmm1, 184(%rax)
	divsd	8(%rsp), %xmm0
	movsd	%xmm0, 192(%rax)
	jmp	.L1980
.L2152:
	call	_Z18INITIALISE_SAMPLESv
.L1980:
	movq	calc(%rip), %rax
	leaq	_ZSt4cout(%rip), %rbx
	cmpl	$1, 56(%rax)
	jne	.L1981
	cmpl	$1, 20(%rax)
	jne	.L1981
	leaq	file_18(%rip), %rbp
	movl	$17, %edx
	leaq	.LC435(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	128(%rbp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC436(%rip), %rsi
	testb	%al, %al
	jne	.L2183
	leaq	.LC437(%rip), %rsi
.L2183:
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z5SETXTv
	movq	%rbp, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.L1981:
	leaq	1800(%rsp), %r13
	movl	$16, %edx
	leaq	.LC438(%rip), %rsi
	movq	%r13, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	1928(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	leaq	.LC439(%rip), %rsi
	testb	%al, %al
	jne	.L2185
	leaq	.LC440(%rip), %rsi
.L2185:
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$8, %ebx
	movl	$1, %r12d
.L1986:
	movq	geom(%rip), %rax
	cmpl	%r12d, (%rax)
	jl	.L2241
	movq	output(%rip), %rbp
	movsd	.LC50(%rip), %xmm1
	movq	136(%rbp), %r14
	movq	40(%r14), %rax
	movsd	(%rax,%rbx), %xmm0
	call	pow@PLT
	movq	gas(%rip), %rax
	xorl	%edx, %edx
	xorl	%ecx, %ecx
	movl	424(%rax), %esi
.L1987:
	incq	%rdx
	cmpl	%edx, %esi
	jl	.L2242
	movq	168(%rbp), %rcx
	movq	8(%rcx), %rcx
	movq	(%rcx,%rbx), %rdi
	movq	176(%rbp), %rcx
	movq	8(%rcx), %rcx
	movsd	(%rdi,%rdx,8), %xmm0
	movq	(%rcx,%rbx), %rcx
	divsd	(%rcx,%rdx,8), %xmm0
	movq	320(%rax), %rcx
	movq	40(%rcx), %rcx
	mulsd	(%rcx,%rdx,8), %xmm0
	movb	$1, %cl
	movsd	%xmm0, 216(%rsp)
	jmp	.L1987
.L2242:
	testb	%cl, %cl
	je	.L1989
	movsd	216(%rsp), %xmm7
	movsd	%xmm7, 320(%rsp)
.L1989:
	movsd	88(%rax), %xmm0
	subsd	80(%rax), %xmm0
	leaq	1816(%rsp), %rdi
	movsd	%xmm0, 16(%rsp)
	movsd	112(%rax), %xmm0
	subsd	104(%rax), %xmm0
	movq	8(%r14), %rax
	movsd	%xmm0, 8(%rsp)
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC59(%rip), %rbp
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	16(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	160(%rax), %rdx
	movq	168(%rax), %rax
	movsd	(%rdx,%rbx), %xmm0
	addsd	(%rax,%rbx), %xmm0
	movq	gas(%rip), %rax
	mulsd	.LC7(%rip), %xmm0
	subsd	104(%rax), %xmm0
	divsd	8(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	152(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	movq	gas(%rip), %rax
	subsd	104(%rax), %xmm0
	divsd	8(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	movq	gas(%rip), %rax
	subsd	104(%rax), %xmm0
	divsd	8(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	24(%rax), %rax
	movsd	(%rax,%rbx), %xmm0
	movq	gas(%rip), %rax
	subsd	80(%rax), %xmm0
	divsd	16(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	incl	%r12d
	addq	$8, %rbx
	jmp	.L1986
.L2241:
	movq	calc(%rip), %rax
	cmpl	$1, 20(%rax)
	jne	.L1991
	call	_Z18INITIALISE_SAMPLESv
.L1991:
	leaq	1800(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE23:
	xorl	%ebx, %ebx
.L1992:
	movq	gas(%rip), %rax
	cmpl	%ebx, 428(%rax)
	jl	.L2243
	movq	56(%rsp), %rax
	movq	(%rax,%rbx,8), %rdi
	testq	%rdi, %rdi
	je	.L1993
	call	_ZdaPv@PLT
.L1993:
	incq	%rbx
	jmp	.L1992
.L2243:
	movq	56(%rsp), %rdi
	xorl	%ebx, %ebx
	call	_ZdaPv@PLT
	movq	48(%rsp), %rdi
	call	_ZdaPv@PLT
	movq	64(%rsp), %rdi
	call	_ZdaPv@PLT
.L1995:
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L2244
	movq	104(%rsp), %rax
	movq	(%rax,%rbx,8), %rdi
	testq	%rdi, %rdi
	je	.L1996
	call	_ZdaPv@PLT
.L1996:
	incq	%rbx
	jmp	.L1995
.L2244:
	movq	104(%rsp), %rdi
	call	_ZdaPv@PLT
	movq	calc(%rip), %rax
	leaq	360(%rsp), %rdi
	movsd	128(%rax), %xmm0
	addsd	192(%rax), %xmm0
	movsd	%xmm0, 128(%rax)
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	328(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	%r13, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	leaq	1272(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	leaq	744(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	je	.L2002
	jmp	.L2155
.L2036:
	endbr64
.L2186:
	movq	%rax, %rbp
.L1998:
	movq	%rbx, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L1740
.L2035:
	endbr64
	movq	%rax, %rbp
.L1740:
	leaq	360(%rsp), %rdi
	movq	%rbp, %rbx
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	328(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	1800(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	jmp	.L1999
.L2034:
	endbr64
	movq	%rax, %rbx
.L1999:
	leaq	1272(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	jmp	.L2000
.L2033:
	endbr64
	movq	%rax, %rbx
.L2000:
	leaq	744(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	2328(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2155
	movq	%rbx, %rdi
.LEHB24:
	call	_Unwind_Resume@PLT
.LEHE24:
.L2155:
	call	__stack_chk_fail@PLT
.L2002:
	addq	$2344, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4327:
	.section	.gcc_except_table
.LLSDA4327:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4327-.LLSDACSB4327
.LLSDACSB4327:
	.uleb128 .LEHB17-.LFB4327
	.uleb128 .LEHE17-.LEHB17
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB18-.LFB4327
	.uleb128 .LEHE18-.LEHB18
	.uleb128 .L2033-.LFB4327
	.uleb128 0
	.uleb128 .LEHB19-.LFB4327
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L2034-.LFB4327
	.uleb128 0
	.uleb128 .LEHB20-.LFB4327
	.uleb128 .LEHE20-.LEHB20
	.uleb128 .L2035-.LFB4327
	.uleb128 0
	.uleb128 .LEHB21-.LFB4327
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L2037-.LFB4327
	.uleb128 0
	.uleb128 .LEHB22-.LFB4327
	.uleb128 .LEHE22-.LEHB22
	.uleb128 .L2036-.LFB4327
	.uleb128 0
	.uleb128 .LEHB23-.LFB4327
	.uleb128 .LEHE23-.LEHB23
	.uleb128 .L2035-.LFB4327
	.uleb128 0
	.uleb128 .LEHB24-.LFB4327
	.uleb128 .LEHE24-.LEHB24
	.uleb128 0
	.uleb128 0
.LLSDACSE4327:
	.text
	.size	_Z14OUTPUT_RESULTSv, .-_Z14OUTPUT_RESULTSv
	.section	.rodata.str1.1
.LC441:
	.string	"The number of divisions is "
.LC442:
	.string	"The number of sampling cells is "
.LC443:
	.string	"The number of collision cells is "
.LC444:
	.string	"FNUM is "
.LC445:
	.string	"VMPM = "
.LC447:
	.string	"Collision time in the stream is "
.LC448:
	.string	"Mean free path in the stream is "
.LC450:
	.string	"The initial value of the overall time step is "
.LC452:
	.string	"Setting the initial gas"
.LC454:
	.string	"DMOM "
.LC455:
	.string	"DENG "
	.text
	.globl	_Z20SET_INITIAL_STATE_1Dv
	.type	_Z20SET_INITIAL_STATE_1Dv, @function
_Z20SET_INITIAL_STATE_1Dv:
.LFB4303:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC441(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$376, %rsp
	.cfi_def_cfa_offset 432
	movq	calc(%rip), %rbx
	movq	%fs:40, %rax
	movq	%rax, 360(%rsp)
	xorl	%eax, %eax
	movq	$0x000000000, 240(%rsp)
	imull	$10000, 8(%rbx), %eax
	movq	$0x000000000, 248(%rsp)
	movq	$0x000000000, 256(%rsp)
	movq	$0x000000000, 232(%rsp)
	addl	$2, %eax
	cltd
	movl	%eax, 68(%rbx)
	idivl	16(%rbx)
	movq	geom(%rip), %rdx
	movl	%eax, 12(%rdx)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	12(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rdx
	xorl	%r9d, %r9d
	movl	$1, %edi
	movl	12(%rdx), %esi
	movl	%r9d, 20(%rdx)
	addq	$64, %rdx
	movl	%esi, -48(%rdx)
	incl	%esi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	geom(%rip), %rax
	leaq	.LC442(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	movl	12(%rax), %edx
	movq	128(%rax), %rcx
	cvtsi2sdl	%edx, %xmm1
	movsd	16(%rcx), %xmm0
	subsd	8(%rcx), %xmm0
	movl	%edx, (%rax)
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 72(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rbx
	movq	geom(%rip), %rcx
	leaq	.LC443(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	movl	16(%rbx), %eax
	cltd
	idivl	64(%rbx)
	movl	%eax, 8(%rcx)
	imull	12(%rcx), %eax
	movl	%eax, 4(%rcx)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movl	4(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %r15
	movl	24(%r15), %eax
	testl	%eax, %eax
	jne	.L2246
	movq	$0x000000000, 80(%r15)
.L2246:
	movq	calc(%rip), %rbx
	movq	gas(%rip), %r12
	cmpl	$0, 28(%rbx)
	jne	.L2247
	testl	%eax, %eax
	jne	.L2248
	movq	128(%r15), %rax
	movsd	16(%rax), %xmm0
	subsd	8(%rax), %xmm0
	jmp	.L2464
.L2248:
	cmpl	$1, %eax
	jne	.L2250
	movq	128(%r15), %rax
	movsd	16(%rax), %xmm0
	movsd	8(%rax), %xmm1
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	subsd	%xmm1, %xmm0
	mulsd	.LC300(%rip), %xmm0
	jmp	.L2464
.L2250:
	cmpl	$2, %eax
	jne	.L2249
	movq	128(%r15), %rbp
	movsd	.LC51(%rip), %xmm1
	movsd	16(%rbp), %xmm0
	call	pow@PLT
	movsd	.LC51(%rip), %xmm1
	movq	%xmm0, %r14
	movsd	8(%rbp), %xmm0
	call	pow@PLT
	movaps	%xmm0, %xmm1
	movq	%r14, %xmm0
	subsd	%xmm1, %xmm0
	mulsd	.LC301(%rip), %xmm0
.L2464:
	mulsd	80(%r12), %xmm0
	jmp	.L2453
.L2247:
	testl	%eax, %eax
	jne	.L2251
	movq	128(%r15), %rax
	movsd	80(%r15), %xmm2
	movsd	16(%rax), %xmm1
	movaps	%xmm2, %xmm0
	subsd	8(%rax), %xmm0
	mulsd	80(%r12), %xmm0
	subsd	%xmm2, %xmm1
	mulsd	88(%r12), %xmm1
	addsd	%xmm1, %xmm0
	jmp	.L2453
.L2251:
	cmpl	$1, %eax
	jne	.L2252
	movq	128(%r15), %rax
	movsd	80(%r15), %xmm2
	movsd	8(%rax), %xmm0
	movsd	16(%rax), %xmm1
	mulsd	%xmm2, %xmm2
	mulsd	%xmm1, %xmm1
	movaps	%xmm0, %xmm3
	mulsd	%xmm0, %xmm3
	movaps	%xmm2, %xmm0
	subsd	%xmm2, %xmm1
	mulsd	88(%r12), %xmm1
	subsd	%xmm3, %xmm0
	mulsd	80(%r12), %xmm0
	addsd	%xmm1, %xmm0
	mulsd	.LC300(%rip), %xmm0
	jmp	.L2453
.L2252:
	cmpl	$2, %eax
	jne	.L2249
	movq	80(%r15), %r14
	movsd	.LC51(%rip), %xmm1
	movq	%r14, %xmm0
	call	pow@PLT
	movq	128(%r15), %rbp
	movsd	.LC51(%rip), %xmm1
	movsd	%xmm0, 16(%rsp)
	movsd	8(%rbp), %xmm0
	call	pow@PLT
	movsd	16(%rsp), %xmm2
	movsd	.LC51(%rip), %xmm1
	subsd	%xmm0, %xmm2
	mulsd	80(%r12), %xmm2
	movsd	16(%rbp), %xmm0
	movsd	%xmm2, 16(%rsp)
	call	pow@PLT
	movsd	.LC51(%rip), %xmm1
	movsd	%xmm0, 24(%rsp)
	movq	%r14, %xmm0
	call	pow@PLT
	movsd	24(%rsp), %xmm2
	subsd	%xmm0, %xmm2
	movsd	88(%r12), %xmm0
	mulsd	%xmm2, %xmm0
	addsd	16(%rsp), %xmm0
	mulsd	.LC301(%rip), %xmm0
.L2453:
	cvtsi2sdl	68(%rbx), %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 96(%rbx)
.L2249:
	movsd	96(%rbx), %xmm0
	mulsd	272(%rbx), %xmm0
	xorl	%r8d, %r8d
	xorl	%esi, %esi
	movsd	.LC8(%rip), %xmm6
	movq	output(%rip), %rax
	movq	$0x000000000, 80(%rbx)
	movq	$0x000000000, 216(%rbx)
	movq	$0x000000000, 224(%rbx)
	maxsd	%xmm0, %xmm6
	movsd	%xmm6, 96(%rbx)
	movl	%r8d, 12(%rax)
	movl	424(%r12), %eax
	movq	%rax, %rdx
	leaq	8(,%rax,8), %r8
	xorl	%eax, %eax
.L2255:
	cmpl	%esi, %edx
	jl	.L2465
	movq	328(%rbx), %rcx
	movq	(%rcx,%rsi,8), %rdi
	movq	%r8, %rcx
	incq	%rsi
	rep stosb
	jmp	.L2255
.L2465:
	xorl	%eax, %eax
.L2257:
	cmpl	%eax, %edx
	jl	.L2466
	movq	288(%rbx), %rcx
	movq	$0x000000000, (%rcx,%rax,8)
	incq	%rax
	jmp	.L2257
.L2466:
	xorl	%eax, %eax
.L2259:
	cmpl	%eax, %edx
	jl	.L2467
	movq	296(%rbx), %rcx
	movq	$0x000000000, (%rcx,%rax,8)
	incq	%rax
	jmp	.L2259
.L2467:
	xorl	%edx, %edx
.L2261:
	xorl	%eax, %eax
.L2264:
	cmpl	%eax, 424(%r12)
	jl	.L2468
	movq	536(%r12), %rcx
	xorl	%edi, %edi
	movq	(%rcx,%rdx), %rcx
	movl	%edi, (%rcx,%rax,4)
	incq	%rax
	jmp	.L2264
.L2468:
	addq	$8, %rdx
	cmpq	$40, %rdx
	jne	.L2261
	xorl	%edx, %edx
.L2263:
	xorl	%eax, %eax
.L2267:
	cmpl	%eax, 424(%r12)
	jl	.L2469
	movq	544(%r12), %rcx
	xorl	%esi, %esi
	movq	(%rcx,%rdx), %rcx
	movl	%esi, (%rcx,%rax,4)
	incq	%rax
	jmp	.L2267
.L2469:
	addq	$8, %rdx
	cmpq	$40, %rdx
	jne	.L2263
	movl	448(%r12), %edx
	xorl	%eax, %eax
.L2266:
	cmpl	%eax, %edx
	jl	.L2470
	movq	280(%r12), %rcx
	movq	$0x000000000, (%rcx,%rax,8)
	incq	%rax
	jmp	.L2266
.L2470:
	movl	$1, %eax
.L2269:
	movslq	12(%r15), %rdx
	cmpq	%rax, %rdx
	jl	.L2471
	movq	64(%r15), %rdx
	movl	%eax, %ecx
	negl	%ecx
	movq	(%rdx), %rdx
	movl	%ecx, (%rdx,%rax,4)
	incq	%rax
	jmp	.L2269
.L2471:
	movl	(%r15), %esi
	leaq	136(%r15), %rdx
	movl	$5, %edi
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rdi
	movl	(%rdi), %eax
	addq	$48, %rdi
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	geom(%rip), %rax
	movl	$6, %edi
	movl	4(%rax), %esi
	leaq	144(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10d_allocateEiiRPPd.isra.0
	movq	geom(%rip), %rax
	movl	$4, %edi
	movl	4(%rax), %esi
	leaq	56(%rax), %rdx
	incl	%esi
	call	_ZN7GEOM_1D10i_allocateEiiRPPi.isra.0
	movq	output(%rip), %rax
	leaq	64(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	72(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	80(%rax), %rsi
	movq	geom(%rip), %rax
	movl	(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	leaq	88(%rax), %rsi
	movq	gas(%rip), %rax
	movl	436(%rax), %edi
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiRPd.isra.0
	movq	output(%rip), %rax
	movl	$24, %edi
	leaq	136(%rax), %rdx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	output(%rip), %rax
	movl	$13, %edi
	leaq	176(%rax), %rcx
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%edx
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	output(%rip), %rax
	movl	$3, %esi
	leaq	144(%rax), %rdx
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	addl	$36, %edi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	424(%rax), %edi
	movq	output(%rip), %rax
	leaq	168(%rax), %rcx
	movq	geom(%rip), %rax
	leal	1(%rdi), %edx
	addl	$10, %edi
	movl	(%rax), %esi
	incl	%esi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movl	$3, %ecx
	movl	$3, %esi
	movq	gas(%rip), %rax
	movl	$9, %edi
	movl	424(%rax), %edx
	movq	output(%rip), %rax
	incl	%edx
	leaq	192(%rax), %r8
	call	_ZN6OUTPUT10d_allocateEiiiiRPPPPd.isra.0
	movl	$3, %esi
	movl	$7, %edi
	movq	output(%rip), %rax
	leaq	152(%rax), %rdx
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	testl	%esi, %esi
	js	.L2271
	movq	output(%rip), %rbx
	movl	424(%rax), %edi
	incl	%esi
	movl	$151, %edx
	leaq	184(%rbx), %rcx
	incl	%edi
	call	_ZN6OUTPUT10d_allocateEiiiRPPPd.isra.0
	movq	gas(%rip), %rax
	movq	output(%rip), %rbx
	movl	424(%rax), %edi
	leaq	160(%rbx), %rdx
	movl	428(%rax), %ebx
	incl	%edi
	leal	1(%rbx), %esi
	call	_ZN6OUTPUT10d_allocateEiiRPPd.isra.0
.L2271:
	call	_Z18INITIALISE_SAMPLESv
	movl	$1, %r12d
.L2272:
	movq	geom(%rip), %rbx
	movslq	(%rbx), %r14
	cmpq	%r12, %r14
	jl	.L2472
	leaq	-1(%r12), %rax
	movq	136(%rbx), %rbp
	leaq	0(,%r12,8), %r14
	cvtsi2sdq	%rax, %xmm0
	movq	128(%rbx), %rax
	mulsd	72(%rbx), %xmm0
	movq	16(%rbp), %r15
	movq	8(%rbp), %rcx
	addsd	8(%rax), %xmm0
	movq	24(%rbp), %rax
	addq	%r14, %r15
	addq	%r14, %rax
	movsd	%xmm0, (%r15)
	addsd	72(%rbx), %xmm0
	movsd	%xmm0, (%rax)
	movsd	.LC7(%rip), %xmm0
	mulsd	72(%rbx), %xmm0
	addsd	(%r15), %xmm0
	movsd	%xmm0, (%rcx,%r12,8)
	movl	24(%rbx), %ecx
	testl	%ecx, %ecx
	jne	.L2273
	movsd	(%rax), %xmm0
	subsd	(%r15), %xmm0
	movq	32(%rbp), %rdx
	movsd	%xmm0, (%rdx,%r12,8)
	jmp	.L2274
.L2273:
	cmpl	$1, %ecx
	jne	.L2275
	movsd	(%rax), %xmm0
	movsd	(%r15), %xmm1
	movq	32(%rbp), %rax
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	subsd	%xmm1, %xmm0
	mulsd	.LC300(%rip), %xmm0
	movsd	%xmm0, (%rax,%r14)
	jmp	.L2274
.L2275:
	cmpl	$2, %ecx
	jne	.L2274
	movsd	(%rax), %xmm0
	movsd	.LC51(%rip), %xmm1
	call	pow@PLT
	movsd	.LC51(%rip), %xmm1
	movsd	%xmm0, 16(%rsp)
	movsd	(%r15), %xmm0
	call	pow@PLT
	movsd	16(%rsp), %xmm2
	movq	32(%rbp), %rax
	subsd	%xmm0, %xmm2
	mulsd	.LC301(%rip), %xmm2
	movsd	%xmm2, (%rax,%r14)
.L2274:
	movq	48(%rbx), %rax
	movl	$1, %ebp
	leaq	(%rax,%r12,4), %r13
	leal	-1(%r12), %eax
	imull	8(%rbx), %eax
	movl	%eax, 0(%r13)
.L2276:
	movslq	8(%rbx), %rcx
	movq	%rcx, %rsi
	cmpq	%rbp, %rcx
	jl	.L2473
	cvtsi2sdl	%esi, %xmm1
	leaq	-1(%rbp), %rsi
	movsd	72(%rbx), %xmm0
	movl	0(%r13), %ecx
	cvtsi2sdq	%rsi, %xmm2
	movl	24(%rbx), %esi
	addl	%ebp, %ecx
	movl	%ecx, 176(%rsp)
	movslq	%ecx, %rcx
	mulsd	%xmm0, %xmm2
	divsd	%xmm1, %xmm0
	divsd	%xmm1, %xmm2
	addsd	(%r15), %xmm2
	addsd	%xmm2, %xmm0
	testl	%esi, %esi
	jne	.L2277
	movq	144(%rbx), %rsi
	subsd	%xmm2, %xmm0
	movq	8(%rsi), %rsi
	jmp	.L2454
.L2277:
	cmpl	$1, %esi
	jne	.L2279
	mulsd	%xmm0, %xmm0
	movq	144(%rbx), %rsi
	mulsd	%xmm2, %xmm2
	movq	8(%rsi), %rsi
	subsd	%xmm2, %xmm0
	mulsd	.LC300(%rip), %xmm0
.L2454:
	movsd	%xmm0, (%rsi,%rcx,8)
	jmp	.L2278
.L2279:
	movsd	%xmm2, 32(%rsp)
	cmpl	$2, %esi
	jne	.L2278
	movsd	.LC51(%rip), %xmm1
	movq	%rcx, 24(%rsp)
	call	pow@PLT
	movsd	32(%rsp), %xmm2
	movsd	.LC51(%rip), %xmm1
	movsd	%xmm0, 16(%rsp)
	movaps	%xmm2, %xmm0
	call	pow@PLT
	movsd	16(%rsp), %xmm3
	movq	24(%rsp), %rcx
	movq	144(%rbx), %rsi
	subsd	%xmm0, %xmm3
	mulsd	.LC301(%rip), %xmm3
	movq	8(%rsi), %rsi
	movsd	%xmm3, (%rsi,%rcx,8)
.L2278:
	movq	144(%rbx), %rsi
	incq	%rbp
	movq	16(%rsi), %rsi
	movq	$0x000000000, (%rsi,%rcx,8)
	movq	56(%rbx), %rsi
	movq	24(%rsi), %rsi
	movl	%r12d, (%rsi,%rcx,4)
	jmp	.L2276
.L2473:
	movq	output(%rip), %rax
	movq	gas(%rip), %rdx
	incq	%r12
	movq	136(%rax), %rax
	movsd	104(%rdx), %xmm0
	movq	88(%rax), %rdx
	movq	64(%rax), %rax
	movsd	%xmm0, (%rdx,%r14)
	movsd	%xmm0, (%rax,%r14)
	jmp	.L2272
.L2472:
	movl	36(%rbx), %eax
	testl	%eax, %eax
	jne	.L2282
	movq	.LC8(%rip), %rax
	movq	%rax, 104(%rbx)
	jmp	.L2283
.L2282:
	decl	%eax
	jne	.L2283
	movq	$0x000000000, 184(%rsp)
	xorps	%xmm1, %xmm1
	movl	$1, %r12d
.L2284:
	movsd	184(%rsp), %xmm0
	movsd	%xmm1, 192(%rsp)
	cmpq	%r12, %r14
	jl	.L2474
	movq	136(%rbx), %rax
	movl	24(%rbx), %edi
	movsd	%xmm1, 32(%rsp)
	movsd	96(%rbx), %xmm6
	movq	32(%rax), %rdx
	movq	8(%rax), %rax
	movsd	%xmm6, 16(%rsp)
	movsd	(%rdx,%r12,8), %xmm2
	addsd	%xmm2, %xmm0
	movsd	%xmm2, 24(%rsp)
	movsd	%xmm0, 184(%rsp)
	movsd	(%rax,%r12,8), %xmm0
	incq	%r12
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	16(%rsp), %xmm0
	movsd	24(%rsp), %xmm2
	addsd	.LC8(%rip), %xmm0
	movsd	32(%rsp), %xmm1
	divsd	%xmm0, %xmm2
	addsd	%xmm2, %xmm1
	jmp	.L2284
.L2474:
	movq	calc(%rip), %rax
	movaps	%xmm0, %xmm2
	divsd	%xmm1, %xmm2
	mulsd	96(%rax), %xmm1
	divsd	%xmm0, %xmm1
	movsd	%xmm2, 104(%rbx)
	movsd	%xmm1, 96(%rax)
.L2283:
	leaq	.LC444(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	movl	$1, %r12d
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	96(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	$0x000000000, 184(%rsp)
	movq	$0x000000000, 192(%rsp)
.L2286:
	movq	gas(%rip), %rbx
	movl	%r12d, 176(%rsp)
	movsd	184(%rsp), %xmm2
	movsd	192(%rsp), %xmm1
	cmpl	%r12d, 424(%rbx)
	jl	.L2475
	movq	320(%rbx), %rax
	movq	312(%rbx), %rdx
	movslq	%r12d, %r14
	movq	40(%rax), %rax
	movq	(%rdx,%r14,8), %rdx
	leaq	(%rax,%r14,8), %rbp
	movsd	8(%rdx), %xmm4
	movq	488(%rbx), %rdx
	movsd	0(%rbp), %xmm3
	movq	8(%rdx), %rdx
	movaps	%xmm3, %xmm0
	mulsd	%xmm4, %xmm0
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 184(%rsp)
	cvtsi2sdl	(%rdx,%r14,4), %xmm0
	addsd	.LC51(%rip), %xmm0
	movq	344(%rbx), %rdx
	mulsd	%xmm4, %xmm0
	movq	(%rdx,%r14,8), %r15
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 192(%rsp)
	movsd	.LC292(%rip), %xmm0
	mulsd	104(%rbx), %xmm0
	divsd	%xmm3, %xmm0
	call	sqrt@PLT
	movq	geom(%rip), %rcx
	movq	calc(%rip), %r13
	movaps	%xmm0, %xmm1
	movsd	%xmm0, 8(%r15)
	movq	40(%rcx), %rcx
	cmpl	$0, 8(%rcx)
	je	.L2287
	cmpl	$1, 28(%r13)
	jne	.L2288
.L2287:
	movsd	.LC292(%rip), %xmm0
	mulsd	112(%rbx), %xmm0
	movsd	%xmm1, 16(%rsp)
	divsd	0(%rbp), %xmm0
	call	sqrt@PLT
	movsd	16(%rsp), %xmm1
	movsd	%xmm0, 16(%r15)
.L2288:
	mulsd	.LC51(%rip), %xmm1
	movq	280(%r13), %rax
	cmpl	$1, %r12d
	movsd	%xmm1, (%rax,%r14,8)
	movsd	8(%r15), %xmm0
	je	.L2455
	comisd	24(%rbx), %xmm0
	jbe	.L2290
.L2455:
	movsd	%xmm0, 24(%rbx)
.L2290:
	incl	%r12d
	jmp	.L2286
.L2475:
	leaq	.LC445(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	movsd	%xmm1, 24(%rsp)
	movl	$1, %r13d
	movsd	%xmm2, 16(%rsp)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	24(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rbx
	movsd	16(%rsp), %xmm2
	movsd	.LC45(%rip), %xmm4
	movsd	24(%rsp), %xmm1
	movsd	80(%rbx), %xmm0
	movq	152(%rbx), %rbp
	movaps	%xmm0, %xmm3
	mulsd	%xmm2, %xmm3
	mulsd	%xmm4, %xmm0
	movsd	%xmm3, 32(%rbx)
	movsd	104(%rbx), %xmm3
	mulsd	%xmm3, %xmm0
	movsd	%xmm0, 40(%rbx)
	movsd	.LC50(%rip), %xmm0
	addsd	%xmm1, %xmm0
	divsd	%xmm0, %xmm1
	mulsd	%xmm4, %xmm1
	mulsd	%xmm3, %xmm1
	divsd	%xmm2, %xmm1
	movaps	%xmm1, %xmm0
	call	sqrt@PLT
	movaps	%xmm0, %xmm1
	movq	%rbp, %xmm0
	divsd	%xmm1, %xmm0
	movsd	.LC7(%rip), %xmm1
	movsd	%xmm0, 48(%rbx)
.L2293:
	movl	424(%rbx), %r14d
	movl	%r13d, 176(%rsp)
	cmpl	%r13d, %r14d
	jl	.L2298
	movslq	%r13d, %r15
	movl	$1, %r12d
	leaq	0(,%r15,4), %rax
	leaq	0(,%r15,8), %rbp
	movq	%rax, 16(%rsp)
	movslq	%r14d, %rax
	movq	%rax, 24(%rsp)
.L2299:
	cmpq	%r12, 24(%rsp)
	jl	.L2476
	movq	320(%rbx), %rsi
	leaq	0(,%r12,8), %r14
	movq	352(%rbx), %r15
	movq	8(%rsi), %rdi
	movq	32(%r15), %r8
	movq	%rsi, 32(%rsp)
	movq	24(%rsi), %r10
	movq	40(%r15), %r11
	leaq	(%rdi,%rbp), %r9
	addq	%r14, %rdi
	movq	(%r8,%rbp), %r8
	movsd	(%r9), %xmm0
	addsd	(%rdi), %xmm0
	movq	(%r11,%rbp), %r11
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, (%r8,%r12,8)
	movsd	(%r10,%rbp), %xmm0
	movq	24(%r15), %r8
	addsd	(%r10,%r12,8), %xmm0
	movq	16(%rsi), %r10
	movq	(%r8,%rbp), %rax
	mulsd	%xmm1, %xmm0
	addq	%r14, %rax
	movsd	%xmm0, (%rax)
	movsd	(%r10,%rbp), %xmm0
	addsd	(%r10,%r12,8), %xmm0
	movq	40(%rsi), %r10
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, (%r11,%r12,8)
	movsd	(%r10,%rbp), %xmm2
	movsd	(%r10,%r12,8), %xmm0
	movq	8(%r15), %r10
	movaps	%xmm2, %xmm3
	addsd	%xmm0, %xmm3
	movq	(%r10,%rbp), %r10
	divsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, (%r10,%r12,8)
	movsd	(%r9), %xmm0
	addsd	(%rdi), %xmm0
	movq	16(%r15), %rdi
	mulsd	%xmm0, %xmm0
	movq	(%rdi,%rbp), %rdi
	mulsd	.LC446(%rip), %xmm0
	movsd	%xmm0, (%rdi,%r12,8)
	movsd	.LC64(%rip), %xmm0
	subsd	(%rax), %xmm0
	call	tgamma@PLT
	movq	48(%r15), %rdi
	movsd	.LC8(%rip), %xmm2
	movq	32(%rsp), %rsi
	movsd	.LC7(%rip), %xmm1
	movsd	%xmm0, 184(%rsp)
	divsd	%xmm0, %xmm2
	movq	(%rdi,%rbp), %rdi
	movq	16(%rsp), %rax
	movq	32(%rsi), %rsi
	movsd	%xmm2, (%rdi,%r12,8)
	movsd	(%rsi,%rbp), %xmm0
	movq	64(%r15), %rdi
	addsd	(%rsi,%r12,8), %xmm0
	movq	488(%rbx), %rsi
	movq	(%rdi,%rbp), %rdi
	movq	8(%rsi), %rsi
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, (%rdi,%r12,8)
	movl	(%rsi,%rax), %edi
	testl	%edi, %edi
	jle	.L2294
	cmpl	$0, (%rsi,%r12,4)
	jle	.L2295
	movq	328(%rbx), %rsi
	movq	56(%r15), %rax
	movq	8(%rsi), %rsi
	movq	(%rax,%rbp), %rax
	movsd	(%rsi,%rbp), %xmm0
	addsd	(%rsi,%r14), %xmm0
	mulsd	%xmm1, %xmm0
	jmp	.L2456
.L2295:
	jne	.L2388
	movq	328(%rbx), %rsi
	movq	8(%rsi), %rsi
	movsd	(%rsi,%rbp), %xmm0
	jmp	.L2457
.L2294:
	cmpl	$0, (%rsi,%r12,4)
	jle	.L2388
	testl	%edi, %edi
	jne	.L2388
	movq	328(%rbx), %rsi
	movq	8(%rsi), %rsi
	movsd	(%rsi,%r14), %xmm0
.L2457:
	movq	56(%r15), %rax
	movq	(%rax,%rbp), %rax
.L2456:
	movsd	%xmm0, (%rax,%r14)
.L2388:
	incq	%r12
	jmp	.L2299
.L2476:
	incl	%r13d
	jmp	.L2293
.L2298:
	cmpl	$1, %r14d
	jne	.L2300
	movq	352(%rbx), %rax
	movq	8(%rax), %rdx
	movq	8(%rdx), %rdx
	movsd	8(%rdx), %xmm0
	movq	16(%rax), %rdx
	movq	48(%rax), %rax
	movq	8(%rdx), %rdx
	movsd	%xmm0, (%rbx)
	movq	8(%rax), %rax
	movsd	8(%rdx), %xmm0
	movsd	%xmm0, 8(%rbx)
	movsd	8(%rax), %xmm0
	movsd	%xmm0, 16(%rbx)
.L2300:
	movslq	%r14d, %rax
	movl	$1, %r13d
	movq	%rax, 40(%rsp)
.L2301:
	movl	%r13d, 176(%rsp)
	cmpl	%r13d, %r14d
	jl	.L2477
	movq	272(%rbx), %rax
	movslq	%r13d, %rdx
	xorps	%xmm3, %xmm3
	movl	$1, %ebp
	leaq	0(,%rdx,8), %r12
	addq	%r12, %rax
	movq	%rax, 16(%rsp)
.L2302:
	movq	16(%rsp), %rax
	movsd	%xmm3, (%rax)
	cmpq	%rbp, 40(%rsp)
	jl	.L2478
	movq	352(%rbx), %r15
	movsd	.LC8(%rip), %xmm1
	movsd	%xmm3, 56(%rsp)
	movq	32(%r15), %rsi
	movq	(%rsi,%r12), %rsi
	movsd	(%rsi,%rbp,8), %xmm0
	movq	312(%rbx), %rsi
	mulsd	%xmm0, %xmm0
	movq	(%rsi,%rbp,8), %rsi
	mulsd	.LC374(%rip), %xmm0
	mulsd	80(%rbx), %xmm0
	mulsd	8(%rsi), %xmm0
	movq	40(%r15), %rsi
	movq	(%rsi,%r12), %rsi
	movsd	(%rsi,%rbp,8), %xmm2
	movq	24(%r15), %rsi
	movsd	%xmm0, 24(%rsp)
	movsd	104(%rbx), %xmm0
	movq	(%rsi,%r12), %rsi
	movsd	%xmm2, 48(%rsp)
	divsd	%xmm2, %xmm0
	subsd	(%rsi,%rbp,8), %xmm1
	call	pow@PLT
	movsd	48(%rsp), %xmm2
	movq	8(%r15), %rsi
	mulsd	.LC292(%rip), %xmm2
	movsd	%xmm0, 32(%rsp)
	movq	(%rsi,%r12), %rsi
	movaps	%xmm2, %xmm0
	divsd	(%rsi,%rbp,8), %xmm0
	incq	%rbp
	call	sqrt@PLT
	movsd	56(%rsp), %xmm3
	movaps	%xmm0, %xmm1
	movsd	24(%rsp), %xmm0
	mulsd	32(%rsp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	%xmm0, %xmm3
	jmp	.L2302
.L2478:
	incl	%r13d
	jmp	.L2301
.L2477:
	movq	$0x000000000, 184(%rsp)
	xorl	%eax, %eax
	xorl	%edx, %edx
	xorps	%xmm0, %xmm0
.L2305:
	incq	%rax
	cmpl	%eax, %r14d
	jl	.L2479
	movq	312(%rbx), %rdx
	movq	(%rdx,%rax,8), %rcx
	movq	272(%rbx), %rdx
	movsd	8(%rcx), %xmm1
	mulsd	(%rdx,%rax,8), %xmm1
	movb	$1, %dl
	addsd	%xmm1, %xmm0
	jmp	.L2305
.L2479:
	testb	%dl, %dl
	je	.L2307
	movsd	%xmm0, 184(%rsp)
.L2307:
	movsd	.LC8(%rip), %xmm0
	leaq	.LC447(%rip), %rsi
	divsd	184(%rsp), %xmm0
	leaq	16+file_9(%rip), %rdi
	movsd	%xmm0, 64(%rbx)
	movl	$1, %r15d
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	64(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
.L2308:
	movq	gas(%rip), %rbp
	movl	%r15d, 176(%rsp)
	movl	424(%rbp), %eax
	cmpl	%r15d, %eax
	jl	.L2480
	movq	304(%rbp), %r13
	movslq	%r15d, %r14
	xorps	%xmm2, %xmm2
	movslq	%eax, %rbx
	salq	$3, %r14
	movl	$1, %r12d
	addq	%r14, %r13
.L2309:
	movsd	%xmm2, 0(%r13)
	cmpq	%r12, %rbx
	jl	.L2481
	movq	352(%rbp), %rax
	movsd	.LC8(%rip), %xmm1
	movsd	%xmm2, 32(%rsp)
	movq	32(%rax), %rcx
	movq	(%rcx,%r14), %rcx
	movsd	(%rcx,%r12,8), %xmm0
	movq	312(%rbp), %rcx
	mulsd	%xmm0, %xmm0
	movq	(%rcx,%r12,8), %rcx
	mulsd	.LC300(%rip), %xmm0
	mulsd	80(%rbp), %xmm0
	mulsd	8(%rcx), %xmm0
	movq	24(%rax), %rcx
	movq	40(%rax), %rax
	movq	(%rcx,%r14), %rcx
	movq	(%rax,%r14), %rax
	subsd	(%rcx,%r12,8), %xmm1
	movsd	%xmm0, 16(%rsp)
	movsd	104(%rbp), %xmm0
	divsd	(%rax,%r12,8), %xmm0
	call	pow@PLT
	movq	320(%rbp), %rax
	movsd	%xmm0, 24(%rsp)
	movq	40(%rax), %rax
	movsd	(%rax,%r14), %xmm0
	divsd	(%rax,%r12,8), %xmm0
	incq	%r12
	addsd	.LC8(%rip), %xmm0
	call	sqrt@PLT
	movsd	32(%rsp), %xmm2
	movaps	%xmm0, %xmm1
	movsd	16(%rsp), %xmm0
	mulsd	24(%rsp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	%xmm0, %xmm2
	jmp	.L2309
.L2481:
	movsd	.LC8(%rip), %xmm0
	incl	%r15d
	divsd	%xmm2, %xmm0
	movsd	%xmm0, 0(%r13)
	jmp	.L2308
.L2480:
	movq	$0x000000000, 56(%rbp)
	xorl	%edx, %edx
	xorl	%ecx, %ecx
	movl	$1, 176(%rsp)
.L2312:
	incq	%rdx
	cmpl	%edx, %eax
	jl	.L2482
	movq	312(%rbp), %rcx
	movq	(%rcx,%rdx,8), %rsi
	movq	304(%rbp), %rcx
	movsd	8(%rsi), %xmm0
	mulsd	(%rcx,%rdx,8), %xmm0
	movb	$1, %cl
	addsd	56(%rbp), %xmm0
	movsd	%xmm0, 56(%rbp)
	jmp	.L2312
.L2482:
	testb	%cl, %cl
	je	.L2314
	xorl	%edx, %edx
	testl	%eax, %eax
	cmovs	%edx, %eax
	incl	%eax
	movl	%eax, 176(%rsp)
.L2314:
	leaq	.LC448(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	gas(%rip), %rax
	movsd	56(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	gas(%rip), %rcx
	movq	calc(%rip), %rax
	movq	geom(%rip), %rdx
	movsd	64(%rcx), %xmm0
	cmpl	$1, 56(%rax)
	movsd	%xmm0, 264(%rax)
	jne	.L2315
	movq	128(%rdx), %rsi
	movsd	16(%rsi), %xmm1
	subsd	8(%rsi), %xmm1
	divsd	24(%rcx), %xmm1
	movsd	%xmm1, 264(%rax)
.L2315:
	movsd	152(%rcx), %xmm3
	mulsd	248(%rax), %xmm0
	movq	.LC256(%rip), %xmm4
	movsd	72(%rdx), %xmm1
	movaps	%xmm3, %xmm5
	movsd	.LC7(%rip), %xmm2
	andps	%xmm4, %xmm5
	comisd	.LC255(%rip), %xmm5
	mulsd	%xmm1, %xmm2
	movsd	%xmm0, 104(%rax)
	jbe	.L2448
	divsd	%xmm3, %xmm2
	mulsd	256(%rax), %xmm2
	jmp	.L2318
.L2448:
	divsd	24(%rcx), %xmm2
.L2318:
	movsd	%xmm2, 184(%rsp)
	cmpl	$1, 32(%rdx)
	jne	.L2320
	mulsd	.LC449(%rip), %xmm1
	movsd	88(%rdx), %xmm3
	andps	%xmm4, %xmm3
	addsd	24(%rcx), %xmm3
	divsd	%xmm3, %xmm1
	movsd	%xmm1, 192(%rsp)
	comisd	%xmm1, %xmm2
	jbe	.L2320
	movsd	%xmm1, 184(%rsp)
.L2320:
	movsd	184(%rsp), %xmm1
	leaq	.LC450(%rip), %rsi
	movq	$0x000000000, 232(%rax)
	leaq	16+file_9(%rip), %rdi
	movl	$1, %ebp
	minsd	%xmm0, %xmm1
	movsd	.LC48(%rip), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	144(%rax), %xmm1
	movsd	%xmm0, 104(%rax)
	mulsd	136(%rax), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	%xmm0, 184(%rax)
	movsd	%xmm0, 120(%rax)
	movsd	%xmm1, 192(%rax)
	movsd	%xmm1, 128(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L2325:
	movq	geom(%rip), %r15
	movq	calc(%rip), %r13
	movq	gas(%rip), %rbx
	movslq	4(%r15), %rax
	cmpq	%rbp, %rax
	jl	.L2483
	movsd	.LC7(%rip), %xmm0
	mulsd	104(%r13), %xmm0
	movq	144(%r15), %rax
	movq	24(%rax), %rdx
	movq	32(%rax), %rax
	movsd	%xmm0, (%rdx,%rbp,8)
	movq	352(%rbx), %rdx
	movsd	24(%rbx), %xmm0
	movq	16(%rdx), %rdx
	addsd	%xmm0, %xmm0
	movq	8(%rdx), %rdx
	mulsd	8(%rdx), %xmm0
	movsd	%xmm0, (%rax,%rbp,8)
	call	rand@PLT
	cvtsi2sdl	%eax, %xmm0
	movq	calc(%rip), %rax
	divsd	.LC42(%rip), %xmm0
	movsd	%xmm0, 152(%rax)
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	16(%rax), %rdx
	movq	40(%rax), %rax
	movsd	%xmm0, (%rdx,%rbp,8)
	movq	$0x000000000, (%rax,%rbp,8)
	incq	%rbp
	jmp	.L2325
.L2483:
	movl	$1, %r14d
.L2335:
	movq	40(%r15), %rax
	movl	(%rax,%r14,4), %eax
	testl	%eax, %eax
	je	.L2327
	cmpl	$4, %eax
	jne	.L2328
	cmpq	$2, %r14
	jne	.L2328
.L2327:
	movl	24(%r15), %eax
	leaq	0(,%r14,8), %rbp
	testl	%eax, %eax
	je	.L2391
	cmpl	$1, %eax
	jne	.L2330
	movq	128(%r15), %rax
	movsd	.LC44(%rip), %xmm0
	mulsd	(%rax,%rbp), %xmm0
	jmp	.L2458
.L2330:
	cmpl	$2, %eax
	jne	.L2329
	movq	128(%r15), %rax
	movsd	(%rax,%rbp), %xmm0
	mulsd	%xmm0, %xmm0
	mulsd	.LC335(%rip), %xmm0
.L2458:
	movsd	%xmm0, 8(%rsp)
	jmp	.L2329
.L2391:
	movq	.LC8(%rip), %rax
	movq	%rax, 8(%rsp)
.L2329:
	movl	$1, %edx
.L2331:
	movl	%edx, 176(%rsp)
	cmpl	%edx, 424(%rbx)
	jl	.L2328
	movq	344(%rbx), %rsi
	movslq	%edx, %r12
	cmpq	$1, %r14
	jne	.L2332
	movq	(%rsi,%r12,8), %rax
	movsd	152(%rbx), %xmm1
	divsd	8(%rax), %xmm1
	jmp	.L2333
.L2332:
	movq	(%rsi,%r12,8), %rax
	movsd	160(%rbx), %xmm1
	xorps	.LC43(%rip), %xmm1
	divsd	16(%rax), %xmm1
.L2333:
	movaps	%xmm1, %xmm0
	movq	%rsi, 64(%rsp)
	movl	%edx, 56(%rsp)
	movsd	%xmm1, 16(%rsp)
	call	erf@PLT
	movsd	16(%rsp), %xmm1
	movsd	.LC8(%rip), %xmm3
	movaps	%xmm1, %xmm2
	addsd	%xmm0, %xmm3
	movsd	%xmm1, 24(%rsp)
	mulsd	%xmm1, %xmm2
	movsd	%xmm3, 184(%rsp)
	movsd	%xmm3, 48(%rsp)
	movaps	%xmm2, %xmm0
	xorps	.LC43(%rip), %xmm0
	movsd	%xmm2, 40(%rsp)
	call	exp@PLT
	movq	368(%rbx), %rax
	movsd	40(%rsp), %xmm2
	movsd	%xmm0, 16(%rsp)
	movsd	.LC50(%rip), %xmm0
	movsd	24(%rsp), %xmm1
	movq	24(%rax), %rdi
	movq	%rax, 32(%rsp)
	addsd	%xmm2, %xmm0
	movq	(%rdi,%r12,8), %rdi
	movsd	%xmm1, (%rdi,%rbp)
	call	sqrt@PLT
	movsd	24(%rsp), %xmm1
	movq	32(%rsp), %rax
	movaps	%xmm0, %xmm2
	movq	64(%rsp), %rsi
	movq	312(%rbx), %r8
	movaps	%xmm1, %xmm0
	addsd	%xmm1, %xmm2
	movq	32(%rax), %rdi
	movsd	48(%rsp), %xmm3
	addsd	%xmm1, %xmm0
	movq	(%r8,%r12,8), %r8
	movq	(%rdi,%r12,8), %rdi
	subsd	%xmm2, %xmm0
	movsd	%xmm2, (%rdi,%rbp)
	movq	40(%rax), %rdi
	movsd	.LC451(%rip), %xmm2
	movq	(%rdi,%r12,8), %rdi
	mulsd	%xmm1, %xmm0
	addsd	.LC8(%rip), %xmm0
	mulsd	.LC7(%rip), %xmm0
	mulsd	%xmm2, %xmm1
	movsd	%xmm0, (%rdi,%rbp)
	movq	%rbp, %rdi
	addq	(%rsi,%r12,8), %rdi
	movsd	.LC51(%rip), %xmm0
	mulsd	(%rdi), %xmm0
	movq	48(%rax), %rsi
	mulsd	%xmm3, %xmm1
	movq	(%rsi,%r12,8), %rsi
	addsd	16(%rsp), %xmm1
	movsd	%xmm0, (%rsi,%rbp)
	movsd	8(%rsp), %xmm0
	mulsd	72(%rbx,%r14,8), %xmm0
	mulsd	(%r8,%rbp), %xmm0
	movq	8(%rax), %rsi
	movsd	%xmm1, 192(%rsp)
	mulsd	(%rdi), %xmm0
	movq	16(%rax), %rax
	movq	(%rsi,%r12,8), %rsi
	mulsd	%xmm1, %xmm0
	movsd	96(%r13), %xmm1
	addsd	%xmm1, %xmm1
	mulsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rsi,%rbp)
	movq	(%rax,%r12,8), %rax
	movl	56(%rsp), %edx
	movq	$0x000000000, (%rax,%rbp)
	incl	%edx
	jmp	.L2331
.L2328:
	decq	%r14
	jne	.L2484
	movl	$2, %r14d
	jmp	.L2335
.L2484:
	cvtsi2sdl	68(%r13), %xmm0
	mulsd	.LC267(%rip), %xmm0
	movq	molecs(%rip), %rax
	movl	60(%r13), %edi
	incl	%edi
	leaq	40(%rax), %rdx
	cvttsd2sil	%xmm0, %esi
	movl	%esi, 84(%rax)
	incl	%esi
	cmpl	$0, 428(%rbx)
	jle	.L2336
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	56(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	64(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rsi
	movl	84(%rsi), %eax
	leal	1(%rax), %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	8(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	16(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	24(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	$4, %edi
	movl	84(%rax), %esi
	leaq	48(%rax), %rdx
	incl	%esi
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %esi
	leaq	32(%rax), %rdx
	movq	gas(%rip), %rax
	movl	428(%rax), %edi
	incl	%esi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiiRPPi.isra.0
	jmp	.L2459
.L2336:
	cmpl	$0, 432(%rbx)
	jle	.L2338
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	56(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	leaq	64(%rax), %rsi
	jmp	.L2460
.L2338:
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
	movq	molecs(%rip), %rax
	leaq	56(%rax), %rsi
.L2460:
	movl	84(%rax), %edi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rsi
	movl	84(%rsi), %eax
	leal	1(%rax), %edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	8(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	16(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	24(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10i_allocateEiRPi.isra.0
	movq	molecs(%rip), %rax
	movl	$4, %edi
	movl	84(%rax), %esi
	leaq	48(%rax), %rdx
	incl	%esi
	call	_ZN6MOLECS10d_allocateEiiRPPd.isra.0
.L2459:
	movq	molecs(%rip), %rax
	movl	84(%rax), %edi
	leaq	72(%rax), %rsi
	incl	%edi
	call	_ZN6MOLECS10d_allocateEiRPd.isra.0
	movq	molecs(%rip), %rax
	xorl	%edx, %edx
	movl	%edx, 80(%rax)
	movq	calc(%rip), %rax
	cmpl	$1, 32(%rax)
	jne	.L2339
	leaq	.LC452(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$1, 48(%rsp)
	movq	$0x000000000, 32(%rsp)
.L2340:
	movl	48(%rsp), %eax
	movl	48(%rsp), %ebx
	movl	%eax, 176(%rsp)
	movq	gas(%rip), %rax
	cmpl	%ebx, 424(%rax)
	jl	.L2386
	movslq	%ebx, %rax
	movq	$0x000000000, 208(%rsp)
	leaq	0(,%rax,8), %r12
	salq	$2, %rax
	movq	$0x000000000, 216(%rsp)
	movq	$0x000000000, 224(%rsp)
	movq	%rax, 56(%rsp)
	movl	$1, 40(%rsp)
	movq	$128, 64(%rsp)
.L2387:
	movq	calc(%rip), %r14
	movl	40(%rsp), %ebx
	movl	28(%r14), %r13d
	leal	1(%r13), %eax
	cmpl	%ebx, %eax
	jl	.L2485
	movq	gas(%rip), %rbp
	movq	geom(%rip), %rbx
	testl	%r13d, %r13d
	jne	.L2341
	movq	312(%rbp), %rcx
	cvtsi2sdl	68(%r14), %xmm0
	movq	128(%rbx), %rdx
	movq	(%rcx,%r12), %rcx
	movsd	8(%rdx), %xmm7
	movsd	16(%rdx), %xmm5
	mulsd	8(%rcx), %xmm0
	mulsd	104(%rbx), %xmm0
	movsd	%xmm7, 24(%rsp)
	cvttsd2siq	%xmm0, %rbp
	jmp	.L2461
.L2341:
	movl	28(%rbx), %eax
	movsd	80(%rbx), %xmm6
	movl	%eax, %edi
	movaps	%xmm6, %xmm0
	movl	%eax, 16(%rsp)
	movsd	%xmm6, 8(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movq	128(%rbx), %r15
	movl	16(%rsp), %edi
	movsd	%xmm0, 72(%rsp)
	movsd	8(%r15), %xmm7
	movaps	%xmm7, %xmm0
	movsd	%xmm7, 24(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	72(%rsp), %xmm2
	movsd	80(%rbp), %xmm5
	movsd	16(%r15), %xmm6
	movl	16(%rsp), %edi
	subsd	%xmm0, %xmm2
	movsd	%xmm5, 96(%rsp)
	movsd	%xmm6, 72(%rsp)
	movaps	%xmm2, %xmm0
	mulsd	%xmm5, %xmm0
	movsd	%xmm0, 80(%rsp)
	movaps	%xmm6, %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movl	16(%rsp), %edi
	movq	%xmm0, %r15
	movsd	8(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	88(%rbp), %xmm1
	cvtsi2sdl	68(%r14), %xmm4
	movaps	%xmm0, %xmm2
	movq	%r15, %xmm0
	cmpl	$1, 40(%rsp)
	subsd	%xmm2, %xmm0
	movsd	%xmm4, 104(%rsp)
	mulsd	%xmm1, %xmm0
	addsd	80(%rsp), %xmm0
	movsd	%xmm0, 80(%rsp)
	movsd	%xmm0, 184(%rsp)
	jne	.L2343
	movl	16(%rsp), %edi
	movsd	8(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movl	16(%rsp), %edi
	movq	%xmm0, %r14
	movsd	24(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movq	312(%rbp), %rdx
	movaps	%xmm0, %xmm1
	movq	%r14, %xmm0
	subsd	%xmm1, %xmm0
	movq	(%rdx,%r12), %rdx
	mulsd	96(%rsp), %xmm0
	divsd	80(%rsp), %xmm0
	mulsd	104(%rsp), %xmm0
	mulsd	8(%rdx), %xmm0
	cvttsd2sil	%xmm0, %ebp
	movslq	%ebp, %rbp
	jmp	.L2342
.L2343:
	movl	16(%rsp), %edi
	movsd	72(%rsp), %xmm0
	movsd	%xmm1, 24(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movl	16(%rsp), %edi
	movq	%xmm0, %r15
	movsd	8(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	24(%rsp), %xmm1
	movq	312(%rbp), %rdx
	movaps	%xmm0, %xmm2
	movq	%r15, %xmm0
	movsd	8(%rsp), %xmm7
	movsd	72(%rsp), %xmm5
	subsd	%xmm2, %xmm0
	movq	(%rdx,%r12), %rdx
	movsd	%xmm7, 24(%rsp)
	mulsd	%xmm1, %xmm0
	divsd	80(%rsp), %xmm0
	mulsd	104(%rsp), %xmm0
	mulsd	16(%rdx), %xmm0
	cvttsd2sil	%xmm0, %ebp
	movslq	%ebp, %rbp
.L2461:
	movsd	%xmm5, 8(%rsp)
.L2342:
	cmpl	$1, 40(%rsp)
	sete	72(%rsp)
	decl	%r13d
	sete	%dl
	orb	72(%rsp), %dl
	movb	%dl, 147(%rsp)
	je	.L2344
	movq	128(%rbx), %rdx
	movsd	96(%rbx), %xmm4
	movl	24(%rbx), %edi
	movsd	8(%rdx), %xmm0
	movsd	%xmm4, 16(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	16(%rsp), %xmm0
	cmpl	$2, 40(%rsp)
	addsd	.LC8(%rip), %xmm0
	movsd	%xmm0, 128(%rsp)
	jne	.L2345
	movl	28(%rbx), %ebx
	cmpl	$1, %ebx
	jle	.L2345
	movsd	8(%rsp), %xmm0
	movl	%ebx, %edi
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movl	%ebx, %edi
	movq	%xmm0, %r13
	movsd	24(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	movsd	24(%rsp), %xmm7
	movaps	%xmm0, %xmm1
	movq	%r13, %xmm0
	subsd	%xmm1, %xmm0
	movsd	%xmm7, 88(%rsp)
	cvtsi2sdq	%rbp, %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 120(%rsp)
.L2345:
	movq	64(%rsp), %rax
	movl	$1, %ebx
	movq	$1, 16(%rsp)
	subq	$24, %rax
	movq	%rax, 136(%rsp)
	movq	64(%rsp), %rax
	subq	$120, %rax
	movq	%rax, 112(%rsp)
	movslq	40(%rsp), %rax
	movq	%rax, 80(%rsp)
.L2383:
	cmpq	%rbp, 16(%rsp)
	jge	.L2344
	movq	geom(%rip), %r14
	movl	28(%r14), %edi
	cmpl	$1, %edi
	cvtsi2sdl	%edi, %xmm0
	je	.L2406
	cmpb	$0, 72(%rsp)
	je	.L2346
.L2406:
	movsd	.LC8(%rip), %xmm1
	movl	%edi, 148(%rsp)
	divsd	%xmm0, %xmm1
	movsd	24(%rsp), %xmm0
	movsd	%xmm1, 152(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	cvtsi2sdq	%rbp, %xmm2
	movl	148(%rsp), %edi
	movsd	%xmm0, 96(%rsp)
	cvtsi2sdq	16(%rsp), %xmm0
	subsd	.LC7(%rip), %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, 104(%rsp)
	movsd	8(%rsp), %xmm0
	subsd	24(%rsp), %xmm0
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	104(%rsp), %xmm0
	movsd	152(%rsp), %xmm1
	addsd	96(%rsp), %xmm0
	call	pow@PLT
	jmp	.L2462
.L2346:
	movsd	.LC8(%rip), %xmm1
	divsd	%xmm0, %xmm1
	movsd	88(%rsp), %xmm0
	movsd	%xmm1, 96(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	addsd	120(%rsp), %xmm0
	movsd	96(%rsp), %xmm1
	call	pow@PLT
	movsd	%xmm0, 88(%rsp)
.L2462:
	cmpl	$0, 36(%r14)
	movq	%xmm0, %r13
	movsd	.LC8(%rip), %xmm1
	movsd	%xmm0, 184(%rsp)
	je	.L2349
	movsd	96(%r14), %xmm5
	movl	24(%r14), %edi
	movsd	%xmm5, 96(%rsp)
	call	_ZSt3powIdiEN9__gnu_cxx11__promote_2IDTplcvNS1_IT_XsrSt12__is_integerIS2_E7__valueEE6__typeELi0EcvNS1_IT0_XsrS3_IS7_E7__valueEE6__typeELi0EEXsrS3_ISB_E7__valueEE6__typeES2_S7_
	mulsd	96(%rsp), %xmm0
	movsd	128(%rsp), %xmm1
	addsd	.LC8(%rip), %xmm0
	divsd	%xmm0, %xmm1
	movsd	.LC48(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L2349
	cmpl	$1, %ebx
	movsd	.LC71(%rip), %xmm0
	je	.L2351
	comisd	%xmm1, %xmm0
	jbe	.L2349
	cmpl	$10, %ebx
	je	.L2354
	movsd	.LC270(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L2349
	cmpl	$100, %ebx
	jne	.L2356
	movl	$1000, %ebx
.L2356:
	cmpl	$1000, %ebx
	jne	.L2349
	movsd	.LC174(%rip), %xmm0
	movl	$10000, %eax
	comisd	%xmm1, %xmm0
	cmova	%eax, %ebx
.L2349:
	movsd	%xmm1, 192(%rsp)
	movsd	%xmm1, 96(%rsp)
	call	rand@PLT
	cvtsi2sdl	%ebx, %xmm2
	movsd	96(%rsp), %xmm1
	cvtsi2sdl	%eax, %xmm0
	divsd	.LC42(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	%xmm1, %xmm2
	comisd	%xmm0, %xmm2
	jbe	.L2357
	movq	molecs(%rip), %rdx
	movl	48(%rsp), %esi
	movl	80(%rdx), %eax
	movq	40(%rdx), %rcx
	incl	%eax
	movq	8(%rcx), %rdi
	movq	8(%rdx), %rcx
	movl	%eax, 80(%rdx)
	cltq
	movq	%r13, (%rdi,%rax,8)
	movl	%esi, (%rcx,%rax,4)
	movq	56(%rdx), %rcx
	movslq	80(%rdx), %rax
	movq	$0x000000000, (%rcx,%rax,8)
	movq	geom(%rip), %rcx
	leaq	0(,%rax,8), %r8
	cmpl	$0, 32(%rcx)
	jne	.L2359
	movq	(%rdx), %rdx
	leaq	180(%rsp), %rcx
	addq	%r8, %rdi
	leaq	(%rdx,%rax,4), %rsi
	movq	%rcx, %rdx
	call	_Z12FIND_CELL_1DRdRiS0_
.L2359:
	movq	geom(%rip), %rax
	cmpl	$1, 32(%rax)
	jne	.L2360
	movq	molecs(%rip), %rax
	leaq	180(%rsp), %r8
	movslq	80(%rax), %rdx
	movq	56(%rax), %rcx
	movq	(%rax), %rsi
	movq	40(%rax), %rax
	leaq	0(,%rdx,8), %rdi
	addq	%rdi, %rcx
	leaq	(%rsi,%rdx,4), %rsi
	addq	8(%rax), %rdi
	movq	%r8, %rdx
	call	_Z15FIND_CELL_MB_1DRdRiS0_S_
.L2360:
	leaq	192(%rsp), %rax
	movl	$1, %r15d
	movq	%rax, 96(%rsp)
.L2367:
	movl	$1, %r14d
	movq	%r15, %r13
.L2361:
	movl	%r14d, 180(%rsp)
	movq	gas(%rip), %rsi
	cmpl	$4, %r14d
	je	.L2486
	movq	344(%rsi), %rax
	movq	96(%rsp), %rsi
	leaq	184(%rsp), %rdi
	movq	112(%rsp), %rdx
	addq	(%rax,%r12), %rdx
	call	_Z5RVELCRdS_S_
	movslq	%r14d, %rax
	xorps	%xmm3, %xmm3
	movsd	184(%rsp), %xmm0
	movsd	192(%rsp), %xmm2
	movsd	232(%rsp,%rax,8), %xmm1
	comisd	%xmm0, %xmm2
	jbe	.L2449
	cmpnltsd	%xmm3, %xmm1
	jmp	.L2463
.L2449:
	cmpltsd	%xmm3, %xmm1
.L2463:
	andps	%xmm1, %xmm0
	leaq	(%rax,%rax,2), %rax
	andnps	%xmm2, %xmm1
	incl	%r14d
	orps	%xmm1, %xmm0
	addq	%r13, %rax
	movsd	%xmm0, 264(%rsp,%rax,8)
	jmp	.L2361
.L2486:
	movq	488(%rsi), %rax
	movq	56(%rsp), %rcx
	movq	8(%rax), %rax
	cmpl	$0, (%rax,%rcx)
	jle	.L2366
	movq	136(%rsp), %rax
	leaq	208(%rsp,%r15,8), %rdx
	leaq	176(%rsp), %rdi
	addq	%rax, %rsi
	call	_Z4SROTRiRdS0_
.L2366:
	decq	%r15
	jne	.L2487
	movl	$2, %r15d
	jmp	.L2367
.L2487:
	movsd	296(%rsp), %xmm0
	movq	gas(%rip), %rsi
	movsd	320(%rsp), %xmm2
	movsd	.LC7(%rip), %xmm5
	mulsd	%xmm0, %xmm0
	movq	320(%rsi), %rax
	movsd	344(%rsp), %xmm1
	mulsd	%xmm2, %xmm2
	movsd	.LC453(%rip), %xmm4
	movsd	304(%rsp), %xmm7
	mulsd	%xmm1, %xmm1
	movq	40(%rax), %rax
	movq	56(%rsp), %rcx
	mulsd	%xmm7, %xmm7
	movsd	.LC51(%rip), %xmm6
	mulsd	(%rax,%r12), %xmm5
	movq	80(%rsp), %rax
	addsd	%xmm2, %xmm0
	leaq	(%rsi,%rax,8), %r8
	movq	488(%rsi), %rax
	mulsd	96(%r8), %xmm4
	movq	8(%rax), %rax
	movaps	%xmm0, %xmm2
	movsd	352(%rsp), %xmm0
	addsd	%xmm1, %xmm2
	movl	(%rax,%rcx), %r14d
	movsd	328(%rsp), %xmm1
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	cvtsi2sdl	%r14d, %xmm3
	mulsd	%xmm5, %xmm2
	addsd	216(%rsp), %xmm2
	addsd	%xmm7, %xmm1
	divsd	%xmm4, %xmm2
	addsd	%xmm0, %xmm1
	movsd	224(%rsp), %xmm0
	mulsd	%xmm5, %xmm1
	addsd	%xmm1, %xmm0
	xorps	%xmm1, %xmm1
	divsd	%xmm4, %xmm0
	subsd	%xmm6, %xmm2
	subsd	%xmm3, %xmm2
	movsd	%xmm2, 184(%rsp)
	subsd	%xmm6, %xmm0
	subsd	%xmm3, %xmm0
	movsd	%xmm0, 192(%rsp)
	comisd	%xmm2, %xmm0
	jbe	.L2450
	xorl	%eax, %eax
	comisd	32(%rsp), %xmm1
	seta	%al
	incl	%eax
	jmp	.L2370
.L2450:
	comisd	32(%rsp), %xmm1
	movl	$1, %eax
	movl	$2, %edx
	cmovbe	%edx, %eax
.L2370:
	movq	molecs(%rip), %rdi
	movslq	%eax, %r13
	movl	$8, %ecx
	xorl	%r15d, %r15d
	movl	$1, 180(%rsp)
	leaq	264(%rsp,%r13,8), %r10
	movslq	80(%rdi), %r11
	movq	48(%rdi), %r9
	leaq	0(,%r11,8), %rdx
.L2371:
	addq	$24, %r10
	cmpq	$32, %rcx
	je	.L2488
	movq	(%r9,%rcx), %r15
	movsd	(%r10), %xmm1
	movsd	%xmm1, (%r15,%rdx)
	movb	147(%rsp), %r15b
	addsd	232(%rsp,%rcx), %xmm1
	movsd	%xmm1, 232(%rsp,%rcx)
	addq	$8, %rcx
	jmp	.L2371
.L2488:
	testb	%r15b, %r15b
	je	.L2373
	movl	$4, 180(%rsp)
.L2373:
	movq	8(%r9), %rcx
	addq	%rdx, %rcx
	addq	16(%r9), %rdx
	movsd	(%rcx), %xmm1
	addsd	144(%r8), %xmm1
	movsd	%xmm1, (%rcx)
	movsd	(%rdx), %xmm1
	addsd	168(%r8), %xmm1
	movsd	%xmm1, (%rdx)
	testl	%r14d, %r14d
	jle	.L2374
	movsd	208(%rsp,%r13,8), %xmm1
	movq	64(%rdi), %rdx
	movsd	%xmm1, (%rdx,%r11,8)
.L2374:
	decl	%eax
	jne	.L2375
	addsd	32(%rsp), %xmm2
	movsd	%xmm2, 32(%rsp)
	jmp	.L2376
.L2375:
	addsd	32(%rsp), %xmm0
	movsd	%xmm0, 32(%rsp)
.L2376:
	cmpl	$0, 428(%rsi)
	jle	.L2357
	movq	472(%rsi), %rax
	movq	56(%rsp), %rcx
	cmpl	$0, (%rax,%rcx)
	jg	.L2399
.L2382:
	movq	gas(%rip), %rax
	movq	80(%rsp), %rcx
	movsd	120(%rax,%rcx,8), %xmm0
	cmpl	$1, 452(%rax)
	movsd	%xmm0, 200(%rsp)
	jle	.L2357
	movq	molecs(%rip), %rax
	leaq	200(%rsp), %rsi
	leaq	176(%rsp), %rdi
	movslq	80(%rax), %rdx
	movq	72(%rax), %rax
	leaq	(%rax,%rdx,8), %rdx
	call	_Z4SELERiRdS0_
	jmp	.L2357
.L2399:
	movl	$1, %r14d
	leaq	172(%rsp), %r13
.L2378:
	movq	gas(%rip), %rsi
	movq	56(%rsp), %rcx
	movl	%r14d, 172(%rsp)
	movq	472(%rsi), %rax
	cmpl	%r14d, (%rax,%rcx)
	jl	.L2382
	movq	molecs(%rip), %rax
	movslq	%r14d, %rdi
	incl	%r14d
	movq	32(%rax), %rcx
	movslq	80(%rax), %rdx
	movq	(%rcx,%rdi,8), %rax
	leaq	176(%rsp), %rdi
	movq	%r13, %rcx
	leaq	(%rax,%rdx,4), %rdx
	movq	64(%rsp), %rax
	addq	%rax, %rsi
	call	_Z4SVIBRiRdS_S_
	jmp	.L2378
.L2357:
	movslq	%ebx, %rax
	addq	%rax, 16(%rsp)
	jmp	.L2383
.L2344:
	incl	40(%rsp)
	addq	$8, 64(%rsp)
	jmp	.L2387
.L2485:
	incl	48(%rsp)
	jmp	.L2340
.L2386:
	leaq	.LC454(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	leaq	232(%rsp), %rsi
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIPKvEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC455(%rip), %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	32(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L2339:
	movq	molecs(%rip), %rax
	movl	80(%rax), %edx
	movq	calc(%rip), %rax
	movl	%edx, 68(%rax)
	call	_Z11SAMPLE_FLOWv
	call	_Z14OUTPUT_RESULTSv
	movq	calc(%rip), %rax
	movsd	128(%rax), %xmm0
	subsd	192(%rax), %xmm0
	movsd	%xmm0, 128(%rax)
	movq	360(%rsp), %rax
	subq	%fs:40, %rax
	je	.L2389
	call	__stack_chk_fail@PLT
.L2351:
	comisd	%xmm1, %xmm0
	movl	$10, %ebx
	jbe	.L2349
.L2354:
	movsd	.LC270(%rip), %xmm0
	movl	$1000, %ebx
	comisd	%xmm1, %xmm0
	ja	.L2356
	movl	$100, %ebx
	jmp	.L2349
.L2389:
	addq	$376, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4303:
	.size	_Z20SET_INITIAL_STATE_1Dv, .-_Z20SET_INITIAL_STATE_1Dv
	.section	.rodata.str1.1
.LC456:
	.string	"DSMC PROGRAM"
.LC457:
	.string	"DIAG.TXT"
.LC458:
	.string	"File DIAG.TXT has been opened"
.LC459:
	.string	"Stop the DS1.EXE that is already running and try again"
.LC460:
	.string	"DSMC Version"
.LC461:
	.string	"enter 1 to continue a current run"
.LC462:
	.string	"enter 2 to start a new run :-"
.LC463:
	.string	"Enter 1 to confirm, 0 to continue current run :-"
.LC464:
	.string	"Continuing an existing run"
.LC465:
	.string	"Starting a new run"
.LC466:
	.string	"Enter 0 for a homogeneous gas, or"
.LC467:
	.string	"Enter 1 for a one-dimensional flow, or"
.LC468:
	.string	"Enter 2 for a two-dimensional plane flow, or"
.LC469:
	.string	"Enter 3 for a three dimensional flow, or"
.LC470:
	.string	"enter 4 for an axially-symmetric flow :-"
.LC471:
	.string	"Enter 0 for an eventually steady flow, or"
.LC472:
	.string	"enter 1 for a continuing unsteady flow :-"
.LC473:
	.string	"RUN_CLASS.TXT"
.LC474:
	.string	"RUN_CLASS.TXT is opened"
.LC475:
	.string	"RUN_CLASS.TXT not opened"
.LC476:
	.string	"Starting a new run with ICLASS, ISF "
.LC477:
	.string	"Enter 0 to continue the reaction sample or"
.LC478:
	.string	"enter 1 to continue with a new reaction sample :-"
.LC479:
	.string	"Enter 0 to continue the current sample or"
.LC480:
	.string	"enter 1 to continue with a new sample :-"
.LC481:
	.string	"Enter 0 to continue to not enforce constant molecule number"
.LC482:
	.string	"enter 1 to start to enforce constant molecule number :-"
.LC483:
	.string	"Enter 1 to adapt the cells, or 0 to continue with current cells:-"
.LC484:
	.string	"Adapting cells"
.LC485:
	.string	"Continuing with existing cells"
.LC486:
	.string	"Enter 1 to reset the removal details, or 0 to continue with current details:-"
.LC487:
	.string	"Enter the fraction of entering molecules that are removed:-"
.LC488:
	.string	"The ratio of removed to entering mlecules is \t"
.LC490:
	.string	"Enter x coordinate of the upstream removal limit:-"
.LC491:
	.string	"The molecules are removed from \t"
.LC492:
	.string	"  TIME  "
.LC493:
	.string	"  NM  "
.LC494:
	.string	"  COLLS  "
.LC495:
	.string	"  TIME   "
.LC496:
	.string	"writing OUTPUT"
	.section	.text.startup
	.globl	main
	.type	main, @function
main:
.LFB4290:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4290
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	_ZSt4cout(%rip), %rbx
	subq	$600, %rsp
	.cfi_def_cfa_offset 656
	movq	%fs:40, %rax
	movq	%rax, 584(%rsp)
	xorl	%eax, %eax
	leaq	56(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 8(%rsp)
.LEHB25:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE25:
	movq	calc(%rip), %rax
	movsd	.LC7(%rip), %xmm0
	movq	%rbx, %rdi
	movabsq	$4294967297, %rcx
	leaq	.LC456(%rip), %rsi
	movq	%rcx, (%rax)
	movq	.LC112(%rip), %rcx
	movl	$1, 12(%rax)
	movq	%rcx, 248(%rax)
	movq	.LC20(%rip), %rcx
	movl	$15, 64(%rax)
	movq	%rcx, 136(%rax)
	movq	.LC46(%rip), %rcx
	movsd	%xmm0, 256(%rax)
	movq	%rcx, 144(%rax)
	xorl	%ecx, %ecx
	movl	%ecx, 24(%rax)
	movabsq	$8589934593, %rcx
	movq	%rcx, 40(%rax)
	movq	.LC8(%rip), %rcx
	movsd	%xmm0, 208(%rax)
	movq	%rcx, 272(%rax)
	movq	.LC338(%rip), %rcx
	movq	%rcx, 88(%rax)
.LEHB26:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movl	$48, %edx
	leaq	.LC457(%rip), %rsi
	leaq	file_9(%rip), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	128+file_9(%rip), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	testb	%al, %al
	je	.L2490
	leaq	.LC458(%rip), %rbp
	leaq	16+file_9(%rip), %rdi
	movq	%rbp, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%rbp, %rsi
	jmp	.L2559
.L2490:
	leaq	.LC459(%rip), %rsi
.L2559:
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	xorl	%eax, %eax
	xorl	%edx, %edx
	leaq	.LC460(%rip), %rbp
	movl	%eax, 24(%rsp)
	movq	geom(%rip), %rax
	movl	%edx, 32(%rax)
.L2492:
	movl	24(%rsp), %eax
	leal	-1(%rax), %edx
	cmpl	$1, %edx
	jbe	.L2562
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movl	$46, %esi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	4(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movl	$46, %esi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	12(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC461(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC462(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	24(%rsp), %rsi
	leaq	_ZSt3cin(%rip), %rdi
	call	_ZNSirsERi@PLT
	jmp	.L2492
.L2562:
	decl	%eax
	leaq	16+file_9(%rip), %rbp
	je	.L2494
.L2496:
	leaq	.LC463(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2563
.L2494:
	leaq	.LC464(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	cmpl	$2, 24(%rsp)
	jne	.L2497
	jmp	.L2496
.L2563:
	leaq	_ZSt3cin(%rip), %r12
	leaq	28(%rsp), %rsi
	movq	%r12, %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 28(%rsp)
	leaq	.LC465(%rip), %rsi
	je	.L2561
	movl	$1, 24(%rsp)
	leaq	.LC464(%rip), %rsi
.L2561:
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	cmpl	$2, 24(%rsp)
	jne	.L2497
	leaq	.LC466(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC467(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC468(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC469(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC470(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	movq	%r12, %rdi
	leaq	56(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	calc(%rip), %rax
	movl	56(%rax), %edx
	movl	$2, 60(%rax)
	cmpl	$1, %edx
	jg	.L2500
	movl	$1, 60(%rax)
	jmp	.L2501
.L2500:
	cmpl	$3, %edx
	jne	.L2501
	movl	$3, 60(%rax)
.L2501:
	leaq	.LC471(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC472(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	calc(%rip), %rax
	movq	%r12, %rdi
	leaq	20(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	8(%rsp), %rdi
	movl	$48, %edx
	leaq	.LC473(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	184(%rsp), %rdi
	leaq	_ZSt4cout(%rip), %r13
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	testb	%al, %al
	je	.L2502
	leaq	.LC474(%rip), %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2503
.L2502:
	leaq	.LC475(%rip), %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r12, %rdi
	call	_ZNSi3getEv@PLT
.L2503:
	movq	calc(%rip), %rax
	leaq	72(%rsp), %rdi
	movl	56(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	20(%rax), %esi
	call	_ZNSolsEi@PLT
	leaq	56(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	leaq	.LC476(%rip), %r14
	movq	%rbp, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	56(%rax), %esi
	call	_ZNSolsEi@PLT
	leaq	.LC59(%rip), %r12
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	20(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	%r14, %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	56(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	movl	20(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L2497:
	cmpl	$1, 24(%rsp)
	jne	.L2505
	movq	8(%rsp), %rdi
	movl	$8, %edx
	leaq	.LC473(%rip), %rsi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	leaq	184(%rsp), %rdi
	call	_ZNKSt12__basic_fileIcE7is_openEv@PLT
	testb	%al, %al
	je	.L2506
	leaq	.LC474(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2507
.L2506:
	leaq	.LC475(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	_ZSt3cin(%rip), %rdi
	call	_ZNSi3getEv@PLT
.L2507:
	movq	calc(%rip), %rax
	movq	8(%rsp), %rdi
	leaq	56(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	%rax, %rdi
	movq	calc(%rip), %rax
	leaq	20(%rax), %rsi
	call	_ZNSirsERi@PLT
	movq	8(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@PLT
	call	_Z12READ_RESTARTv
	movq	calc(%rip), %rax
	movq	gas(%rip), %rdx
	movsd	80(%rax), %xmm0
	movsd	184(%rax), %xmm1
	cmpl	$0, 448(%rdx)
	addsd	%xmm0, %xmm1
	addsd	192(%rax), %xmm0
	movsd	%xmm1, 120(%rax)
	movsd	%xmm0, 128(%rax)
	jg	.L2508
.L2511:
	movq	calc(%rip), %rax
	cmpl	$0, 24(%rax)
	je	.L2509
	jmp	.L2505
.L2508:
	cmpl	$1, 20(%rax)
	jne	.L2511
	leaq	.LC477(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC478(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	32(%rsp), %rsi
	leaq	_ZSt3cin(%rip), %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 32(%rsp)
	jne	.L2511
	movq	gas(%rip), %rdx
	xorl	%eax, %eax
	movl	448(%rdx), %ecx
.L2512:
	cmpl	%eax, %ecx
	jl	.L2564
	movq	280(%rdx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L2512
.L2564:
	movl	424(%rdx), %edx
	movq	calc(%rip), %rcx
	xorl	%eax, %eax
.L2514:
	cmpl	%eax, %edx
	jl	.L2565
	movq	288(%rcx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L2514
.L2565:
	xorl	%eax, %eax
.L2516:
	cmpl	%eax, %edx
	jl	.L2511
	movq	296(%rcx), %rsi
	movq	$0x000000000, (%rsi,%rax,8)
	incq	%rax
	jmp	.L2516
.L2509:
	cmpl	$0, 20(%rax)
	jne	.L2505
	leaq	.LC479(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC480(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	_ZSt3cin(%rip), %r12
	leaq	32(%rsp), %rsi
	movq	%r12, %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 32(%rsp)
	jne	.L2505
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$4, 8(%rax)
	jne	.L2519
	movq	calc(%rip), %rax
	cmpl	$0, 76(%rax)
	jne	.L2519
	leaq	.LC481(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC482(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	36(%rsp), %rsi
	movq	%r12, %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 36(%rsp)
	jne	.L2519
	movq	calc(%rip), %rax
	movl	$1, 76(%rax)
.L2519:
	leaq	.LC483(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	40(%rsp), %rsi
	movq	%r12, %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 40(%rsp)
	jne	.L2521
	leaq	.LC484(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z14ADAPT_CELLS_1Dv
	call	_Z10INDEX_MOLSv
	call	_Z13WRITE_RESTARTv
	jmp	.L2522
.L2521:
	leaq	.LC485(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L2522:
	movq	calc(%rip), %rax
	cmpl	$2, 36(%rax)
	jne	.L2523
	leaq	.LC486(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	44(%rsp), %rsi
	movq	%r12, %rdi
	call	_ZNSirsERi@PLT
	cmpl	$1, 44(%rsp)
	jne	.L2523
	movq	geom(%rip), %rax
	movq	.LC187(%rip), %rcx
	movq	%rcx, 112(%rax)
.L2524:
	movq	geom(%rip), %rax
	movsd	.LC489(%rip), %xmm3
	leaq	.LC488(%rip), %r13
	movsd	112(%rax), %xmm0
	comisd	%xmm0, %xmm3
	jbe	.L2566
.L2525:
	leaq	_ZSt4cout(%rip), %r14
	leaq	.LC487(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%r12, %rdi
	leaq	112(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	%r13, %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	112(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2524
.L2566:
	comisd	.LC20(%rip), %xmm0
	ja	.L2525
	movq	%r13, %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	112(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movsd	112(%rax), %xmm0
	comisd	.LC72(%rip), %xmm0
	jbe	.L2523
	movq	128(%rax), %rdx
	movsd	8(%rdx), %xmm0
	subsd	.LC8(%rip), %xmm0
	movsd	%xmm0, 120(%rax)
.L2527:
	movq	geom(%rip), %rax
	leaq	.LC491(%rip), %r14
	leaq	.LC258(%rip), %r13
	movsd	120(%rax), %xmm1
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0
	subsd	.LC174(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L2567
.L2528:
	leaq	_ZSt4cout(%rip), %r15
	leaq	.LC490(%rip), %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	movq	geom(%rip), %rax
	movq	%r12, %rdi
	leaq	120(%rax), %rsi
	call	_ZNSirsERd.isra.0
	movq	%r14, %rsi
	movq	%r15, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	120(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	jmp	.L2527
.L2567:
	movsd	.LC174(%rip), %xmm0
	addsd	16(%rax), %xmm0
	comisd	%xmm0, %xmm1
	ja	.L2528
	movq	%r14, %rsi
	leaq	16+file_9(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movsd	120(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
.L2523:
	call	_Z18INITIALISE_SAMPLESv
.L2505:
	cmpl	$2, 24(%rsp)
	je	.L2529
.L2532:
	leaq	.LC492(%rip), %r15
	jmp	.L2541
.L2529:
	call	_Z9READ_DATAv
	movq	calc(%rip), %rax
	cmpl	$1, 56(%rax)
	jg	.L2531
	call	_Z20SET_INITIAL_STATE_1Dv
	movq	calc(%rip), %rax
	cmpl	$0, 56(%rax)
	jne	.L2531
	leaq	48(%rsp), %rsi
	xorl	%edi, %edi
	call	_Z6ENERGYiRd
.L2531:
	call	_Z13WRITE_RESTARTv
	jmp	.L2532
.L2543:
	addsd	104(%rax), %xmm0
	movq	%r15, %rsi
	movq	%rbp, %rdi
	movsd	%xmm0, 80(%rax)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rdx
	movq	$20, 16(%rdi,%rdx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rdi,%rax)
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	.LC493(%rip), %r14
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	leaq	.LC494(%rip), %r13
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	leaq	_ZSt4leftRSt8ios_base(%rip), %r12
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZNSolsEPFRSt8ios_baseS0_E@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rdx
	movq	$20, 16(%rdi,%rdx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rdi,%rax)
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	leaq	.LC495(%rip), %rsi
	movq	%rbx, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rdx
	movq	$20, 16(%rdi,%rdx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rdi,%rax)
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	movq	%r13, %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZNSolsEPFRSt8ios_baseS0_E@PLT
	movq	%rax, %rdi
	movq	(%rax), %rax
	movq	-24(%rax), %rdx
	movq	$20, 16(%rdi,%rdx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rdi,%rax)
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z17MOLECULES_MOVE_1Dv
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 4(%rax)
	je	.L2533
	testl	$-5, 8(%rax)
	je	.L2533
.L2534:
	call	_Z10INDEX_MOLSv
	call	_Z10COLLISIONSv
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	comisd	120(%rax), %xmm0
	ja	.L2568
.L2535:
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	comisd	128(%rax), %xmm0
	ja	.L2569
.L2541:
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	movsd	88(%rax), %xmm1
	comisd	%xmm0, %xmm1
	ja	.L2543
	jmp	.L2570
.L2533:
	call	_Z18MOLECULES_ENTER_1Dv
	jmp	.L2534
.L2568:
	cmpl	$0, 20(%rax)
	jne	.L2537
	call	_Z11SAMPLE_FLOWv
.L2537:
	movq	calc(%rip), %r12
	cmpl	$1, 20(%r12)
	movsd	80(%r12), %xmm2
	jne	.L2535
	movsd	.LC8(%rip), %xmm1
	movaps	%xmm1, %xmm0
	subsd	208(%r12), %xmm0
	mulsd	192(%r12), %xmm0
	addsd	200(%r12), %xmm0
	comisd	%xmm2, %xmm0
	ja	.L2538
.L2540:
	subsd	208(%r12), %xmm1
	movsd	80(%r12), %xmm0
	mulsd	192(%r12), %xmm1
	addsd	200(%r12), %xmm1
	comisd	%xmm1, %xmm0
	jb	.L2535
	jmp	.L2571
.L2538:
	movsd	120(%r12), %xmm0
	addsd	184(%r12), %xmm0
	movsd	%xmm0, 120(%r12)
	call	_Z18INITIALISE_SAMPLESv
	cmpl	$1, 20(%r12)
	je	.L2540
	jmp	.L2535
.L2571:
	call	_Z11SAMPLE_FLOWv
	jmp	.L2535
.L2569:
	leaq	.LC496(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E@PLT
	call	_Z13WRITE_RESTARTv
	call	_Z14OUTPUT_RESULTSv
.LEHE26:
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0
	movsd	%xmm0, 200(%rax)
	jmp	.L2541
.L2570:
	movq	8(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	584(%rsp), %rax
	subq	%fs:40, %rax
	je	.L2546
	jmp	.L2552
.L2547:
	endbr64
	movq	%rax, %rbx
.L2544:
	movq	8(%rsp), %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	584(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L2552
	movq	%rbx, %rdi
.LEHB27:
	call	_Unwind_Resume@PLT
.LEHE27:
.L2552:
	call	__stack_chk_fail@PLT
.L2546:
	addq	$600, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4290:
	.section	.gcc_except_table
.LLSDA4290:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4290-.LLSDACSB4290
.LLSDACSB4290:
	.uleb128 .LEHB25-.LFB4290
	.uleb128 .LEHE25-.LEHB25
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB26-.LFB4290
	.uleb128 .LEHE26-.LEHB26
	.uleb128 .L2547-.LFB4290
	.uleb128 0
	.uleb128 .LEHB27-.LFB4290
	.uleb128 .LEHE27-.LEHB27
	.uleb128 0
	.uleb128 0
.LLSDACSE4290:
	.section	.text.startup
	.size	main, .-main
	.type	_GLOBAL__sub_I_start, @function
_GLOBAL__sub_I_start:
.LFB5104:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA5104
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	__dso_handle(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	file_9(%rip), %rbx
	pushq	%rdx
	.cfi_def_cfa_offset 32
	movq	%rbx, %rdi
.LEHB28:
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
	movq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GOTPCREL(%rip), %rdi
	movq	%rbx, %rsi
	movq	%rbp, %rdx
	leaq	file_18(%rip), %rbx
	call	__cxa_atexit@PLT
	movq	%rbx, %rdi
	call	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@PLT
	movq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GOTPCREL(%rip), %rdi
	movq	%rbx, %rsi
	movq	%rbp, %rdx
	call	__cxa_atexit@PLT
	movl	$336, %edi
	call	_ZN7ManagednwEm
	movl	$592, %edi
	movq	%rax, calc(%rip)
	call	_ZN7ManagednwEm
	movl	$88, %edi
	movq	%rax, gas(%rip)
	call	_ZN7ManagednwEm
	movl	$152, %edi
	movq	%rax, molecs(%rip)
	call	_ZN7ManagednwEm
.LEHE28:
	movl	$12, %esi
	leaq	40(%rax), %rdi
	movq	%rax, %rbx
.LEHB29:
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	128(%rbx), %rdi
	movl	$24, %esi
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.LEHE29:
	movl	$200, %edi
	movq	%rbx, geom(%rip)
.LEHB30:
	call	_ZN7ManagednwEm
.LEHE30:
	movl	$804, %esi
	leaq	24(%rax), %rdi
	movq	%rax, %rbx
.LEHB31:
	call	_Z17cudaMallocManagedIdE9cudaErrorPPT_mj.constprop.0.isra.0
.LEHE31:
	movq	%rbx, output(%rip)
	popq	%rax
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L2576:
	.cfi_restore_state
	endbr64
	movq	%rax, %rbp
.L2573:
	call	cudaDeviceSynchronize@PLT
	movq	%rbx, %rdi
	call	cudaFree@PLT
	jmp	.L2579
.L2575:
	endbr64
	movq	%rax, %rbp
.L2574:
	call	cudaDeviceSynchronize@PLT
	movq	%rbx, %rdi
	call	cudaFree@PLT
.L2579:
	movq	%rbp, %rdi
.LEHB32:
	call	_Unwind_Resume@PLT
.LEHE32:
	.cfi_endproc
.LFE5104:
	.section	.gcc_except_table
.LLSDA5104:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE5104-.LLSDACSB5104
.LLSDACSB5104:
	.uleb128 .LEHB28-.LFB5104
	.uleb128 .LEHE28-.LEHB28
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB29-.LFB5104
	.uleb128 .LEHE29-.LEHB29
	.uleb128 .L2576-.LFB5104
	.uleb128 0
	.uleb128 .LEHB30-.LFB5104
	.uleb128 .LEHE30-.LEHB30
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB31-.LFB5104
	.uleb128 .LEHE31-.LEHB31
	.uleb128 .L2575-.LFB5104
	.uleb128 0
	.uleb128 .LEHB32-.LFB5104
	.uleb128 .LEHE32-.LEHB32
	.uleb128 0
	.uleb128 0
.LLSDACSE5104:
	.section	.text.startup
	.size	_GLOBAL__sub_I_start, .-_GLOBAL__sub_I_start
	.section	.init_array
	.align 8
	.quad	_GLOBAL__sub_I_start
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.globl	output
	.bss
	.align 8
	.type	output, @object
	.size	output, 8
output:
	.zero	8
	.globl	geom
	.align 8
	.type	geom, @object
	.size	geom, 8
geom:
	.zero	8
	.globl	molecs
	.align 8
	.type	molecs, @object
	.size	molecs, 8
molecs:
	.zero	8
	.globl	gas
	.align 8
	.type	gas, @object
	.size	gas, 8
gas:
	.zero	8
	.globl	calc
	.align 8
	.type	calc, @object
	.size	calc, 8
calc:
	.zero	8
	.globl	file_18
	.align 32
	.type	file_18, @object
	.size	file_18, 528
file_18:
	.zero	528
	.globl	file_9
	.align 32
	.type	file_9, @object
	.size	file_9, 528
file_9:
	.zero	528
	.globl	start
	.align 8
	.type	start, @object
	.size	start, 8
start:
	.zero	8
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC5:
	.long	-640172613
	.long	1039891679
	.align 8
.LC6:
	.long	0
	.long	1081151488
	.align 8
.LC7:
	.long	0
	.long	1071644672
	.align 8
.LC8:
	.long	0
	.long	1072693248
	.align 8
.LC9:
	.long	-170230311
	.long	984543952
	.align 8
.LC12:
	.long	191613510
	.long	1039968241
	.align 8
.LC13:
	.long	1717986918
	.long	1081152102
	.align 8
.LC14:
	.long	515396076
	.long	1072294789
	.align 8
.LC15:
	.long	-1044870600
	.long	984909011
	.align 8
.LC18:
	.long	2061584302
	.long	1072147988
	.align 8
.LC19:
	.long	400031559
	.long	984401976
	.align 8
.LC20:
	.long	0
	.long	1075052544
	.align 8
.LC22:
	.long	207617825
	.long	1039923205
	.align 8
.LC23:
	.long	171798692
	.long	1072210903
	.align 8
.LC24:
	.long	-1725949888
	.long	984641689
	.align 8
.LC27:
	.long	-736198505
	.long	1039113319
	.align 8
.LC28:
	.long	1374389535
	.long	1071980216
	.align 8
.LC29:
	.long	-1340029796
	.long	1072261234
	.align 8
.LC30:
	.long	819970541
	.long	981497584
	.align 8
.LC31:
	.long	1919203017
	.long	1039941219
	.align 8
.LC32:
	.long	-2027224564
	.long	1072093462
	.align 8
.LC33:
	.long	-452121908
	.long	1040411082
	.align 8
.LC34:
	.long	858993459
	.long	1072378675
	.align 8
.LC35:
	.long	2095944040
	.long	1072051519
	.align 8
.LC36:
	.long	1388988197
	.long	986766831
	.align 8
.LC38:
	.long	-90
	.long	1072693247
	.align 8
.LC39:
	.long	-1
	.long	1072693247
	.align 8
.LC40:
	.long	-9
	.long	1072693247
	.align 8
.LC42:
	.long	-4194304
	.long	1105199103
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC43:
	.long	0
	.long	-2147483648
	.long	0
	.long	0
	.section	.rodata.cst8
	.align 8
.LC44:
	.long	1413754136
	.long	1075388923
	.align 8
.LC45:
	.long	-154592229
	.long	993046765
	.align 8
.LC46:
	.long	0
	.long	1076101120
	.align 8
.LC47:
	.long	-154592229
	.long	-1154436883
	.align 8
.LC48:
	.long	-1717986918
	.long	1069128089
	.align 8
.LC49:
	.long	0
	.long	1090021888
	.align 8
.LC50:
	.long	0
	.long	1073741824
	.align 8
.LC51:
	.long	0
	.long	1074266112
	.align 8
.LC52:
	.long	0
	.long	1074790400
	.align 8
.LC64:
	.long	0
	.long	1074003968
	.align 8
.LC68:
	.long	0
	.long	1076756480
	.align 8
.LC69:
	.long	1202590843
	.long	1064598241
	.align 8
.LC70:
	.long	0
	.long	1073217536
	.align 8
.LC71:
	.long	1202590843
	.long	1065646817
	.align 8
.LC72:
	.long	-640172613
	.long	1037794527
	.align 8
.LC75:
	.long	0
	.long	1084334080
	.align 8
.LC76:
	.long	0
	.long	1089861888
	.align 8
.LC77:
	.long	0
	.long	1078525952
	.align 8
.LC78:
	.long	0
	.long	1086734464
	.align 8
.LC79:
	.long	0
	.long	1087539776
	.align 8
.LC80:
	.long	-480129460
	.long	1039441319
	.align 8
.LC81:
	.long	-1717986918
	.long	1072273817
	.align 8
.LC82:
	.long	-1725949888
	.long	983593113
	.align 8
.LC83:
	.long	-971349177
	.long	1008615114
	.align 8
.LC84:
	.long	-858993459
	.long	1080859852
	.align 8
.LC85:
	.long	1717986918
	.long	1081368166
	.align 8
.LC86:
	.long	0
	.long	1087785856
	.align 8
.LC87:
	.long	0
	.long	1088929184
	.align 8
.LC88:
	.long	1202590843
	.long	1067743969
	.align 8
.LC89:
	.long	-858993459
	.long	-1074475828
	.align 8
.LC90:
	.long	-1717986918
	.long	1068079513
	.align 8
.LC91:
	.long	-1717986918
	.long	-1074685543
	.align 8
.LC92:
	.long	0
	.long	1085507584
	.align 8
.LC93:
	.long	0
	.long	1087196160
	.align 8
.LC96:
	.long	0
	.long	1087476736
	.align 8
.LC97:
	.long	0
	.long	1084904960
	.align 8
.LC98:
	.long	0
	.long	1089037312
	.align 8
.LC99:
	.long	858993459
	.long	1070805811
	.align 8
.LC100:
	.long	0
	.long	1079574528
	.align 8
.LC101:
	.long	400031559
	.long	983353400
	.align 8
.LC102:
	.long	-1066736540
	.long	1009579307
	.align 8
.LC103:
	.long	0
	.long	1088094848
	.align 8
.LC104:
	.long	0
	.long	1075314688
	.align 8
.LC105:
	.long	0
	.long	1088701152
	.align 8
.LC106:
	.long	-672181244
	.long	1039981751
	.align 8
.LC107:
	.long	343597384
	.long	1072252846
	.align 8
.LC108:
	.long	-14930567
	.long	984535839
	.align 8
.LC109:
	.long	-1411301105
	.long	1007046700
	.align 8
.LC110:
	.long	0
	.long	1084571136
	.align 8
.LC111:
	.long	0
	.long	1087068160
	.align 8
.LC112:
	.long	-1717986918
	.long	1070176665
	.align 8
.LC113:
	.long	1717986918
	.long	1080411750
	.align 8
.LC114:
	.long	515396076
	.long	1068624773
	.align 8
.LC115:
	.long	858993459
	.long	-1074580685
	.align 8
.LC116:
	.long	1202590843
	.long	1068792545
	.align 8
.LC117:
	.long	1889785610
	.long	1068960317
	.align 8
.LC118:
	.long	171798692
	.long	1068540887
	.align 8
.LC119:
	.long	858993459
	.long	1069757235
	.align 8
.LC120:
	.long	1717986918
	.long	-1073715610
	.align 8
.LC121:
	.long	-858993459
	.long	-1073689396
	.align 8
.LC122:
	.long	1202590843
	.long	1069841121
	.align 8
.LC123:
	.long	0
	.long	-1073741824
	.align 8
.LC124:
	.long	1546188227
	.long	1069925007
	.align 8
.LC125:
	.long	1717986918
	.long	-1073846682
	.align 8
.LC126:
	.long	-1717986918
	.long	1071225241
	.align 8
.LC127:
	.long	0
	.long	-1074003968
	.align 8
.LC128:
	.long	0
	.long	-1075314688
	.align 8
.LC129:
	.long	1337381548
	.long	1007518665
	.align 8
.LC130:
	.long	0
	.long	1075576832
	.align 8
.LC131:
	.long	858993459
	.long	-1075104973
	.align 8
.LC133:
	.long	391667452
	.long	1039405291
	.align 8
.LC134:
	.long	-687194767
	.long	1072001187
	.align 8
.LC135:
	.long	-132202764
	.long	980453875
	.align 8
.LC136:
	.long	0
	.long	1085804288
	.align 8
.LC137:
	.long	0
	.long	1087604736
	.align 8
.LC138:
	.long	0
	.long	1084178432
	.align 8
.LC139:
	.long	-400107883
	.long	1039216139
	.align 8
.LC140:
	.long	-132202764
	.long	979405299
	.align 8
.LC141:
	.long	-1774671970
	.long	1008383484
	.align 8
.LC142:
	.long	0
	.long	1072168960
	.align 8
.LC143:
	.long	-660470736
	.long	983660856
	.align 8
.LC144:
	.long	539371723
	.long	1005735836
	.align 8
.LC145:
	.long	0
	.long	1085599744
	.align 8
.LC146:
	.long	0
	.long	1084459008
	.align 8
.LC147:
	.long	-720194190
	.long	1040116859
	.align 8
.LC148:
	.long	405008415
	.long	983728600
	.align 8
.LC149:
	.long	-574232427
	.long	-1138909154
	.align 8
.LC150:
	.long	0
	.long	1085574400
	.align 8
.LC151:
	.long	0
	.long	1084353536
	.align 8
.LC152:
	.long	0
	.long	1085618176
	.align 8
.LC153:
	.long	-440118672
	.long	1040377305
	.align 8
.LC154:
	.long	954273336
	.long	984675561
	.align 8
.LC155:
	.long	-1932353633
	.long	1004017029
	.align 8
.LC156:
	.long	0
	.long	1085494784
	.align 8
.LC157:
	.long	0
	.long	1083748352
	.align 8
.LC158:
	.long	171798692
	.long	1070638039
	.align 8
.LC159:
	.long	687194767
	.long	1070763868
	.align 8
.LC160:
	.long	0
	.long	-1074266112
	.align 8
.LC161:
	.long	1717986918
	.long	-1074370970
	.align 8
.LC162:
	.long	0
	.long	1083129856
	.align 8
.LC163:
	.long	0
	.long	1084715008
	.align 8
.LC164:
	.long	-1030792151
	.long	1069295861
	.align 8
.LC165:
	.long	-1717986918
	.long	-1073636967
	.align 8
.LC166:
	.long	1992864825
	.long	1068146622
	.align 8
.LC167:
	.long	0
	.long	-1073479680
	.align 8
.LC168:
	.long	-1374389535
	.long	1070260551
	.align 8
.LC169:
	.long	1889785610
	.long	1070008893
	.align 8
.LC170:
	.long	1717986918
	.long	-1073584538
	.align 8
.LC171:
	.long	1202590843
	.long	1063549665
	.align 8
.LC172:
	.long	-1133871366
	.long	1062769524
	.align 8
.LC173:
	.long	1985992878
	.long	1063657039
	.align 8
.LC174:
	.long	-350469331
	.long	1058682594
	.align 8
.LC175:
	.long	858993459
	.long	-1074056397
	.align 8
.LC176:
	.long	1297423721
	.long	1056929040
	.align 8
.LC177:
	.long	1896932436
	.long	1055468147
	.align 8
.LC178:
	.long	-1998362383
	.long	1056241845
	.align 8
.LC179:
	.long	0
	.long	1077149696
	.align 8
.LC180:
	.long	-858993459
	.long	1071959244
	.align 8
.LC181:
	.long	171798692
	.long	-1076845609
	.align 8
.LC182:
	.long	-1717986918
	.long	-1077306983
	.align 8
.LC183:
	.long	1717986918
	.long	1071015526
	.align 8
.LC184:
	.long	0
	.long	1079902208
	.align 8
.LC185:
	.long	-1717986918
	.long	-1079404135
	.align 8
.LC186:
	.long	0
	.long	1078198272
	.align 8
.LC187:
	.long	0
	.long	-1074790400
	.align 8
.LC214:
	.long	-689770671
	.long	1145772772
	.align 8
.LC255:
	.long	-1598689907
	.long	1051772663
	.section	.rodata.cst16
	.align 16
.LC256:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.section	.rodata.cst8
	.align 8
.LC267:
	.long	-1717986918
	.long	1072798105
	.align 8
.LC268:
	.long	-900719925
	.long	1072693247
	.align 8
.LC270:
	.long	-755914244
	.long	1062232653
	.align 8
.LC272:
	.long	-1747416644
	.long	1016910514
	.align 8
.LC292:
	.long	-154592229
	.long	994095341
	.align 8
.LC299:
	.long	536870912
	.long	1107468383
	.align 8
.LC300:
	.long	1413754136
	.long	1074340347
	.align 8
.LC301:
	.long	942502757
	.long	1074839890
	.align 8
.LC302:
	.long	-500134854
	.long	1044740494
	.align 8
.LC304:
	.long	831175815
	.long	1070945621
	.align 8
.LC305:
	.long	0
	.long	1088439968
	.align 8
.LC306:
	.long	-90071993
	.long	1072693247
	.align 8
.LC307:
	.long	942502757
	.long	1071694162
	.align 8
.LC312:
	.long	168729423
	.long	999482292
	.align 8
.LC313:
	.long	1513202878
	.long	1070945607
	.align 8
.LC314:
	.long	0
	.long	1093567616
	.align 8
.LC323:
	.long	-1821066134
	.long	1072694296
	.align 8
.LC335:
	.long	1413754136
	.long	1076437499
	.align 8
.LC336:
	.long	231111208
	.long	1153346763
	.align 8
.LC337:
	.long	-231888344
	.long	994642276
	.align 8
.LC338:
	.long	-1998362383
	.long	1055193269
	.align 8
.LC339:
	.long	346346163
	.long	1072528244
	.align 8
.LC374:
	.long	-1850413205
	.long	1074551800
	.align 8
.LC375:
	.long	-154592229
	.long	995143917
	.align 8
.LC379:
	.long	1346542445
	.long	1072827863
	.align 8
.LC446:
	.long	1413754136
	.long	1072243195
	.align 8
.LC449:
	.long	0
	.long	1070596096
	.align 8
.LC451:
	.long	-1850413205
	.long	1073503224
	.align 8
.LC453:
	.long	-154592229
	.long	991998189
	.align 8
.LC489:
	.long	-350469331
	.long	-1088801054
	.hidden	DW.ref._ZTISt9bad_alloc
	.weak	DW.ref._ZTISt9bad_alloc
	.section	.data.rel.local.DW.ref._ZTISt9bad_alloc,"awG",@progbits,DW.ref._ZTISt9bad_alloc,comdat
	.align 8
	.type	DW.ref._ZTISt9bad_alloc, @object
	.size	DW.ref._ZTISt9bad_alloc, 8
DW.ref._ZTISt9bad_alloc:
	.quad	_ZTISt9bad_alloc
	.hidden	DW.ref.__gxx_personality_v0
	.weak	DW.ref.__gxx_personality_v0
	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
	.align 8
	.type	DW.ref.__gxx_personality_v0, @object
	.size	DW.ref.__gxx_personality_v0, 8
DW.ref.__gxx_personality_v0:
	.quad	__gxx_personality_v0
	.hidden	__dso_handle
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

//
//  main.cpp
//  DS
//
//  Created by Shubham Gupta on 31/03/17.
//  Copyright © 2017 Shubham Gupta. All rights reserved.
//  Modified by Utkarsh Aashu Mishra on 5/02/2014
//  Copyright © 2018 Utkarsh Aashu Mishra. All rights reserved.


#include <hip/hip_runtime.h>
#include <stdio.h>
#include <iostream>
#include <cmath>
#include <string.h>
#include <algorithm>
#include <fstream>
#include<sstream>
#include <iomanip>
#include <ctime>

using namespace std;

#define PI 3.1415926535897932
#define DPI 6.283185307179586
#define SPI 1.772453850905516
#define BOLTZ 1.380658e-23
#define AVOG 6.022169e26


void ALLOCATE_GAS();
void HARD_SPHERE();
void ARGON();
void IDEAL_NITROGEN();
void REAL_OXYGEN();
void IDEAL_AIR();
void REAL_AIR();
void HELIUM_ARGON_XENON();
void OXYGEN_HYDROGEN();
void INITIALISE_SAMPLES();
void DERIVED_GAS_DATA();
void SET_INITIAL_STATE_1D();
void MOLECULES_ENTER_1D();
void FIND_CELL_1D(double &,int &,int &);
void FIND_CELL_MB_1D(double &,int &,int &,double &);
void RVELC(double &,double &,double &);
void SROT(int &,double &,double &);
void SVIB(int &,double &,int &, int&);
void SELE(int &,double &,double &);
void CQAX(double&,double &,double&);
void LBS(double,double,double&);
void REFLECT_1D(int&,int,double&);
void RBC(double &, double &, double & , double &, double &,double &);
void AIFX(double & ,double &, double & , double &, double &, double&, double &, double&);
void REMOVE_MOL(int &);
void INDEX_MOLS();
void SAMPLE_FLOW();
void ADAPT_CELLS_1D();
void EXTEND_MNM(double);
void DISSOCIATION();
void ENERGY(int ,double &);
void COLLISIONS();
void SETXT();
void READ_RESTART();
void WRITE_RESTART();
void READ_DATA();
void OUTPUT_RESULTS();
void MOLECULES_MOVE_1D();


class Managed 
{
public:
  void *operator new(size_t len) {
    void *ptr;
    hipMallocManaged(&ptr, len);
    hipDeviceSynchronize();
    return ptr;
  }

  void operator delete(void *ptr) {
    hipDeviceSynchronize();
    hipFree(ptr);
  }
};

class CALC : public Managed
{
public:
    //declares the variables associated with the calculation
    int  NVER,MVER,IMEG,NREL,MOLSC,ISF,ISAD,ISECS,IGS,IREM,NNC,IMTS,ERROR,NLINE,ICLASS,NCLASS,NMCC,NMI,NMP,ICN;
    double FTIME,TLIM,FNUM,DTM,TREF,TSAMP,TOUT,SAMPRAT,OUTRAT,RANF,TOTCOLI,TOTMOVI,TENERGY,DTSAMP,DTOUT,TPOUT,FRACSAM,TOTMOV,TOTCOL,ENTMASS,ENTREM,CPDTM,TPDTM,TNORM,FNUMF;
    double *VNMAX,*TDISS,*TRECOMB,*ALOSS,*EME,*AJM;
    double **TCOL;
    void d_allocate(int x, double*&arr){
        hipMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double**&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(double));
    }
    //NVER.MVER.NREL the version number
    //IMEG the initial number of megabytes to be used by the program
    //MOLSC the target number of molecules per sampling cell
    //FTIME the flow time
    //TLIM the time at which the calculation stops
    //FNUM the number of real molecules represented by each simulated molecule
    //CPDTM the maximum number of collisions per time step (standard 0.2)
    //TPDTM the maximum number of sampling cell transit times of the flow per time step
    //TOTMOV total molecule moves
    //TOTCOL total collisions
    //TDISS(L) dissociations of species L since sample reset
    //TRECOMB(L) recombinations of species L since sample reset
    //ENTMASS the current entry mass of which a fraction FREM is to be removed
    //ENTREM the remainder (always negative) after molecule removal
    //VNMAX(L) the maximum normal velocity component of species L
    //TCOL species dependent collision counter
    //ISF 0,1 for steady, unsteady flow sampling
    //ISAD 0,1 to not automatically adapt cells each output interval in unsteady sampling, 1 to automatically adapt
    //ISECS 0,1 for no secondary stream,a secondary stream that applies for positive values of x
    //IREM data item to set type of molecule removal
    //NNC 0 for normal collisions, 1 for nearest neighbor collisions
    //IMTS 0 for uniform move time steps, 1 for time steps that vary over the cells, 2 for fixed time steps
    //IGS 0 for initial gas, 1 for stream(s) or reference gas
    //ICLASS class of flow
    //NCLASS the dimension of PX for the class of flow
    //NMCC desired number of molecules in a collision cell
    //NMI the initial number of molecules
    //TNORM normalizing time (may vary e.g. mean collision time , or a transit time)
    //ALOSS(L) number of molecules of speciel L lost in the move rourine
    //EME(L) number of species L that enter the front boundary
    //AJM(L) the adjustment number to allow for negative downstream entry numbers
    //NMP the number of molecules at the start of the move routine
    //ICN 0 if molecules with ITYPE(2)=4 are not kept constant, 1 to keep molecule number constant
    //FNUMF adjustment factor that is applied to automatically generated value
};

class MOLECS : public Managed
{
    //declares the variables associated with the molecules
public:
    int *IPCELL,*IPSP,*ICREF,*IPCP;
    int **IPVIB;
    
    void i_allocate(int x, int *&arr){
        hipMallocManaged(&arr, x*sizeof(int));
    }
    void i_allocate(int x, int y, int **&arr){
        hipMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(int));
    }
    
    double **PX,**PV;
    double *PTIM,*PROT,*PELE;
    
    void d_allocate(int x, double *&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        
    }
    void d_allocate(int x, int y, double **&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i){
            try{
                hipMallocManaged(&arr[i], y*sizeof(double));
            }
            catch (std::bad_alloc& ba){
                std::cerr << "bad_alloc caught: " << ba.what() << '\n';
            }
        }
    }
    int NM,MNM;
    
    //PX(1,2 or 3,N) x,y,z position coordinates of molecule N
    //PTIM(N) molecule time
    //IPSP(N) the molecular species
    //IPCELL(N) the collision cell number
    //ICREF the cross-reference array (molecule numbers in order of collision cells)
    //IPCP(N) the code number of the last collision partner of molecule
    //PV(1-3,N) u,v,w velocity components
    //PROT(N) rotational energy
    //IPVIB(K,N) level of vibrational mode K of molecule N
    //PELE(N) electronic energy
    //NM number of molecules
    //MNM the maximum number of molecules
    
};

class GAS : public Managed
{
    
    //declares the variables associated with the molecular species and the stream definition
public:
    double RMAS,CXSS,RGFS,VMPM,FDEN,FPR,FMA,FPM,CTM;
    double FND[3],FTMP[3],FVTMP[3],VFX[3],VFY[3],TSURF[3],FSPEC[3],VSURF[3];
    double *ERS,*CR,*TNEX,*PSF,*SLER,*FP;
    double **FSP,**SP,**SPR,**SPV,**VMP;
    double ***SPM,***SPVM,***ENTR,***QELC,***SPRT;
    double ****SPEX,****SPRC,****SPRP;
    double *****SPREX;
    void d_allocate(int x, double *&arr){
        hipMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double **&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(double));
    }
    void d_allocate(int x, int y, int z, double***&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
                hipMallocManaged(&arr[i][j], z*sizeof(double));
        }
        
    }
    void d_allocate(int x, int y, int z, int w, double ****&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                hipMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                    hipMallocManaged(&arr[i][j][k], w*sizeof(double));
            }
        }
        
    }
    void d_allocate(int x, int y, int z, int w, int v, double*****&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                hipMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                {
                    hipMallocManaged(&arr[i][j][k], w*sizeof(double));
                    for(int l=0; l<w; ++l)
                        hipMallocManaged(&arr[i][j][k][l], v*sizeof(double));
                }
            }
        }
    }
    
    int MSP,MMVM,MMRM,MNSR,IGAS,MMEX,MEX,MELE,MVIBL;
    int *ISP,*ISPV,*NELL;
    int **ISPR,**LIS,**LRS,**ISRCD,**ISPRC,**ISPRK,**TREACG,**TREACL,**NSPEX,**NSLEV;
    int ***ISPVM,***NEX;
    int ****ISPEX;
    void i_allocate(int x, int *&arr){
        hipMallocManaged(&arr, x);
    }
    void i_allocate(int x, int y, int **&arr){
        hipMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(int));
    }
    void i_allocate(int x, int y, int z, int ***&arr){
        hipMallocManaged(&arr, x*sizeof(int));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(int));
            for (int j = 0; j < y; ++j)
                hipMallocManaged(&arr[i][j], z*sizeof(int));
        }
        
    }
    void i_allocate(int x, int y, int z, int w, int ****&arr){
        hipMallocManaged(&arr, x*sizeof(int));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(int));
            for (int j = 0; j < y; ++j)
            {
                hipMallocManaged(&arr[i][j], z*sizeof(int));
                for(int k=0; k<z; ++k)
                    hipMallocManaged(&arr[i][j][k], w*sizeof(int));
            }
        }
    }
    
    //MSP the number of molecular species
    //MMVM the maximum number of vibrational modes of any species
    //MEX number of exchange or chain reactions
    //MELE the maximum number of electronic states of any molecule
    //MVIBL the maximum number of vibrational levels for detailed balance lists
    //MMEX the maximum number of exchange reactions involving the same precollision pair of molecules
    //MMRM 0 if gass is completely monatomic, 1 if some species have rotation
    //MNSR the number oF surface reactions
    //SP(1,L) the reference diameter of species L
    //SP(2,L) the reference temperature of species L
    //SP(3,L) the viscosity-temperature power law of species L
    //SP(4,L) the reciprocal of the VSS scattering parameter
    //SP(5,L) molecular mass of species L
    //SP(6,L) the heat of formation at 273 K.
    //ISPR(1,L) number of rotational degrees of freedom of species L
    //ISPR(2,L) 0,1 for constant, polynomial rotational relaxation collision number
    //SPR(1,L) constant rotational relaxation collision number of species L
    //          or the constant in a second order polynomial in temperature
    //SPR(2,L) the coefficient of temperature in the polynomial
    //SPR(3,L) the coefficient of temperature squared in the polynomial
    //SPM(1,L,M) the reduced mass for species L,M
    //SPM(2,L,M) the reference collision cross-section for species L,M
    //SPM(3,L,M) the mean value of the viscosity-temperature power law
    //SPM(4,L,M) the reference diameter for L,M collisions
    //SPM(5,L,M) the reference temperature for species L,M
    //SPM(6,L,M) reciprocal of the gamma function of (5/2-w) for species L,M
    //SPM(7,L,M) rotational relaxation collision number for species L,M, or const in polynomial
    //SPM(8,L,M) reciprocal of VSS scattering parameter
    //ISPV(L) the number of vibrational modes
    //SPVM(1,K,L) the characteristic vibrational temperature
    //SPVM(2,K,L) constant Zv, or reference Zv for mode K
    //SPVM(3,K,L) -1. for constant Zv, or reference temperature
    //SPVM(4,K,L) the characteristic dissociation temperature
    //SPVM(5,K,L) the arbitrary rate reduction factor
    //ISPVM(1,K,L) the species code of the first dissociation product
    //ISPVM(2,K,L) the species code of the second dissociation product
    //NELL(L) the number of electronic levels of species L
    //QELC(N,M,L) for up to M levels of form g*exp(-a/T) in the electronic partition function for species L
    //            N=1 for the degeneracy g
    //            N=2 for the coefficient a
    //            N=3 for the ratio of the excitation cross-section to the elastic cross-section
    //ISPRC(L,M) the species of the recombined molecule from species L and M
    //ISPRK(L,M) the applicable vibrational mode of this species
    //SPRC(1,L,M,K) the constant a in the ternary collision volume
    //SPRC(2,L,M,K) the temperature exponent b in the ternary collision volume
    //SPRT(1,L,M) lower temperature value for SPRP
    //SPRT(2,L,M) higher temperature value for SPRP
    //SPRP(1,L,M,K) the cumulative dissociation distribution to level K for products L and M at the lower temperature
    //SPRP(2,L,M,K) ditto at higher temperature, for application to post-recombination molecule//
    //NSPEX(L,M) the number of exchange reactios with L,M as the pre-collision species
    //in the following variables, J is the reaction number (1 to NSPEX(L,M))
    //ISPEX(J,1,L,M) the species that splits in an exchange reaction
    //ISPEX(J,2,L,M) the other pre-reaction species (all ISPEX are set to 0 if no exchange reaction)
    //ISPEX(J,3,L,M) the post-reaction molecule that splits in the opposite reaction
    //ISPEX(J,4,L,M) the other post-reaction species
    //ISPEX(J,5,L,M) the vibrational mode of the molecule that splits
    //ISPEX(J,6,L,M) degeneracy of this reaction
    //ISPEX(J,7,L,M) the vibrational mode of the molecule that splits
    //SPEX(1,J,L,M) the constant a in the reaction probability for the reverse reaction
    //SPEX(2,J,L,M) the temperature exponent b in the reaction probability (reverse reaction only)
    //SPEX(3,J,L,M)  for the heat of reaction
    //SPEX(4,J,L,M)   the lower temperature for SPREX
    //SPEX(5,J,L,M)   the higher temperature for SPREX
    //SPEX(6,J,L,M)   the energy barrier
    //SPREX(1,J,L,M,K) at lower temperature, the Jth reverse exchange reaction of L,M cumulative level K viv. dist of post reac mol
    //SPREX(2,J,L,M,K) ditto at higher temperature
    //TNEX(N) total number of exchange reaction N
    //NEX(N,L,M) the code number of the Nth exchange or chain reaction in L,M collisions
    //RMAS reduced mass for single species case
    //CXSS reference cross-section for single species case
    //RGFS reciprocal of gamma function for single species case
    //for the following, J=1 for the reference gas and/or the minimum x boundary, J=2 for the secondary sream at maximum x boundary
    //FND(J) stream or reference gas number density
    //FTMP(J) stream temperature
    //FVTMP(J) the vibrational and any electronic temperature in the freestream
    //VFX(J)  the x velocity components of the stream
    //VFY(J) the y velocity component in the stream
    //FSP(N,J)) fraction of species N in the stream
    //FMA stream Mach number
    //VMP(N,J) most probable molecular velocity of species N at FTMP(J)
    //VMPM the maximum value of VMP in stream 1
    //ENTR(M,L,K) entry/removal information for species L at K=1 for 1, K=2 for XB(2)
    //    M=1 number per unut time
    //    M=2 remainder
    //    M=3 speed ratio
    //   M=4 first constant
    //    M=5 second constant
    //    M=6 the maxinum normal velocity component in the removal zone (> XREM)
    //LIS(1,N) the species code of the first incident molecule
    //LIS(2,N) the species code of the second incident molecule (0 if none)
    //LRS(1,N) the species code of the first reflected molecule
    //LRS(2,N) the species code of the second reflected molecule (0 if none)
    //LRS(3,N) the species code of the third reflected molecule (0 if none)
    //LRS(4,N) the species code of the fourth reflected molecule (0 if none)
    //LRS(5,N) the species code of the fifth reflected molecule (0 if none)
    //LRS(6,N) the species code of the sixth reflected molecule (0 if none)
    //ERS(N) the energy of the reaction (+ve for recombination, -ve for dissociation)
    //NSRSP(L) number of surface reactions that involve species L as incident molecule
    //ISRCD(N,L) code number of Nth surface reaction with species L as incident molecule
    //CTM mean collision time in stream
    //FPM mean free path in stream
    //FDEN stream 1 density
    //FPR stream 1 pressure
    //FMA stream 1 Mach number
    //RMAS reduced mass for single species case
    //CXSS reference cross-section for single species case
    //RGFS reciprocal of gamma function for single species case
    //CR(L) collision rate of species L
    //FP(L) mean free path of species L
    //TREACG(N,L) the total number of species L gained from reaction type N=1 for dissociation, 2 for recombination, 3 for forward exchange, 4 for reverse exchange
    //TREACL(N,L) the total number of species L lost from reaction type N=1 for dissociation, 2 for recombination, 3 for forward exchange, 4 for reverse exchange
    //NSLEV(2,L)  1 exo, 2 endo: vibrational levels to be made up for species L in detailed balance enforcement after reaction
    //SLER(L) rotational energy to be made up for species L in detailed balance enforcement after exothermic reaction
};
class OUTPUT : public Managed
{
public:
    //declares the variables associated with the sampling and output
    int NSAMP,NMISAMP,NOUT,NDISSOC,NRECOMB,NTSAMP;
    //int NDISSL[201];
    int *NDISSL;
    OUTPUT(){
        hipMallocManaged(&NDISSL,201*sizeof(int));
    };
    double TISAMP,XVELS,YVELS,AVDTM;
    double *COLLS,*WCOLLS,*CLSEP,*SREAC,*STEMP,*TRANSTEMP,*ROTTEMP,*VIBTEMP,*ELTEMP;
    double **VAR,**VARS,**CSSS,**SUMVIB;
    double ***CS,***VARSP,***VIBFRAC;
    double ****CSS;
    void d_allocate(int x, double *&arr){
        hipMallocManaged(&arr, x*sizeof(double));
    }
    void d_allocate(int x, int y, double **&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(double));
    }
    void d_allocate(int x, int y, int z, double ***&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
                hipMallocManaged(&arr[i][j], z*sizeof(double));
        }
    }
    void d_allocate(int x, int y, int z, int w, double ****&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for (int i = 0; i < x; ++i)
        {
            hipMallocManaged(&arr[i], y*sizeof(double));
            for (int j = 0; j < y; ++j)
            {
                hipMallocManaged(&arr[i][j], z*sizeof(double));
                for(int k=0; k<z; ++k)
                    hipMallocManaged(&arr[i][j][k], w*sizeof(double));
            }
        }
    }
    //NSAMP the number of samples
    //TISAMP the time at which the sampling was last reset
    //MNISAMP the number of molecules at the last reset
    //AVDTM the average value of DTM in the cells
    //NOUT the number of output intervals
    //COLLS(N) total number of collisions in sampling cell N
    //WCOLLS(N) total weighted collisins in N
    //CLSEP(N) sum of collision pair separation in cell N
    //CS(0,N,L) sampled number of species L in cell N
    //CS(1,N,L) sampled weighted number of species L in cell N
    //--all the following CS are weighted sums
    //CS(2,N,L), CS(3,N,L), CS(4,N,L) sampled sum of u, v, w
    //CS(5,N,L), CS(6,N,L), CS(7,N,L) sampled sum of u*u, v*v, w*w
    //CS(8,N,L) sampled sum of rotational energy of species L in cell N
    //CS(9,N,L) sampled sum of electronic energy of species L in cell N
    //CS(9+K,N,L) sampled sum of vibrational level of species L in cell N
    //              K is the mode
    //
    //in CSS, M=1 for incident molecules and M=2 for reflected molecules
    //J=1 for surface at x=XB(1), 2 for surface at x=XB(2)
    //
    //CSS(0,J,L,M) number sum of molecules of species L
    //CSS(1,J,L,M) weighted number sum of molecules of species L
    //--all the following CSS are weighted
    //CSS(2,J,L,M) normal momentum sum to surface
    //CSS(3,J,L,M) y momentum sum to surface
    //CSS(4,J,L,M) z momentum sum to surface
    //CSS(5,J,L,M) tranlational energy sum to surface
    //CSS(6,J,L,M) rotational energy sum to surface
    //CSS(7,J,L,M) vibrational energy sum to the surface
    //CSS(8,J,L,M) electronic energy sum to the surface
    //
    //CSSS(1,J) weighted sum (over incident AND reflected molecules) of 1/normal vel. component
    //--all the following CSSS are weighted
    //CSSS(2,J) similar sum of molecular mass / normal vel. component
    //CSSS(3,J) similar sum of molecular mass * parallel vel. component / normal vel. component
    //CSSS(4,J) similar sum of molecular mass * speed squared / normal vel. component
    //CSSS(5,J) similar sum of rotational energy / normal vel. component
    //CSSS(6,J) similar sum of rotational degrees of freedom /normal velocity component
    //
    //SREAC(N) the number of type N surface reactions
    //
    //VAR(M,N) the flowfield properties in cell N
    //M=1 the x coordinate
    //M=2 sample size
    //M=3 number density
    //M=4 density
    //M=5 u velocity component
    //M=6 v velocity component
    //M=7 w velocity component
    //M=8 translational temperature
    //M=9 rotational temperature
    //M=10 vibrational temperature
    //M=11 temperature
    //M=12 Mach number
    //M=13 molecules per cell
    //M=14 mean collision time / rate
    //M=15 mean free path
    //M=16 ratio (mean collisional separation) / (mean free path)
    //M=17 flow speed
    //M=18 scalar pressure nkT
    //M=19 x component of translational temperature TTX
    //M=20 y component of translational temperature TTY
    //M=21 z component of translational temperature TTZ
    //M=22 electronic temperature
    //
    //VARSP(M,N,L) the flowfield properties for species L in cell N
    //M=0 the sample size
    //M=1 the fraction
    //M=2 the temperature component in the x direction
    //M=3 the temperature component in the y direction
    //M=4 the temperature component in the z direction
    //M=5 the translational temperature
    //M=6 the rotational temperature
    //M=7 the vibrational temperature
    //M=8 the temperature
    //M=9 the x component of the diffusion velocity
    //M=10 the y component of the diffusion velocity
    //M=11 the z component of the diffusion velocity
    //M=12 the electronic temperature
    //
    //VARS(N,M) surface property N on interval L of surface M
    //
    //N=0 the unweighted sample (remainder of variables are weighted for cyl. and sph. flows)
    //N=1 the incident sample
    //N=2 the reflected sample
    //N=3 the incident number flux
    //N=4 the reflected number flux
    //N=5 the incident pressure
    //N=6 the reflected pressure
    //N=7 the incident parallel shear tress
    //N=8 the reflected parallel shear stress
    //N=9 the incident normal-to-plane shear stress
    //N=10 the reflected normal shear stress
    //N=11 the incident translational heat flux
    //N=12 the reflected translational heat fluc
    //N=13 the incident rotational heat flux
    //N=14 the reflected rotational heat flux
    //N=15 the incident vibrational heat flux
    //N=16 the reflected vibrational heat flux
    //N=17 the incident heat flux from surface reactions
    //N=18 the reflected heat flux from surface reactions
    //N=19 slip velocity
    //N=20 temperature slip
    //N=21 rotational temperature slip
    //N=22 the net pressure
    //N=23 the net parallel in-plane shear
    //N=24 the net parallel normal-to-plane shear
    //N=25 the net translational energy flux
    //N=26 the net rotational heat flux
    //N=27 the net vibrational heat flux
    //N=28 the heat flux from reactions
    //N=29 total incident heat transfer
    //N=30 total reflected heat transfer
    //N=31 net heat transfer
    //N=32 surface temperature   --not implemented
    //N=33 incident electronic energy
    //N=34 reflected electronic energy
    //N=35 net electronic energy
    //N=35+K the percentage of species K
    //
    //COLLS(N) the number of collisions in sampling cell N
    //WCOLLS(N) weighted number
    //CLSEP(N) the total collision partner separation distance in sampling cell N
    //
    //VIBFRAC(L,K,M) the sum of species L mode K in level M
    //SUMVIB(L,K) the total sample in VIBFRAC
    //
    //THE following variables apply in the sampling of distribution functions
    //(some are especially for the dissociation of oxygen
    //
    //NDISSOC the number of dissociations
    //NRECOMB the number of recombinations
    //NDISSL(L) the number of dissociations from level
    //NTSAMP the number of temperature samples
    //STEMP(L) the temperature of species L
    //TRANSTEMP(L) the translational temperature of species N
    //ROTTEMP(L) rotational temperature of species N
    //VIBTEMP(L) vibrational temperature of species N
    //ELTEMP(L) electronic temperature of species N
    //
};

class GEOM_1D : public Managed
{
public:
    //declares the variables associated with the flowfield geometry and cell structure
    //for homogeneous gas and one-dimensional flow studies
    int NCELLS,NCCELLS,NCIS,NDIV,MDIV,ILEVEL,IFX,JFX,IVB,IWF;
    //int ITYPE[3];
    int *ITYPE;
    int *ICELL;
    int ** ICCELL,**JDIV;
    void i_allocate(int x, int *&arr){
        hipMallocManaged(&arr, x*sizeof(int));
    }
    void i_allocate(int x, int y, int **&arr){
        hipMallocManaged(&arr, x*sizeof(int));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(int));
    }
    double DDIV,XS,VELOB,WFM,AWF,FREM,XREM;
    //double XB[3];
    double *XB;
    double **CELL,**CCELL;
    void d_allocate(int x, int y, double**&arr){
        hipMallocManaged(&arr, x*sizeof(double));
        for(int i =0; i< x; ++i)
            hipMallocManaged(&arr[i], y*sizeof(double));
    }
    GEOM_1D(){
        hipMallocManaged(&ITYPE, 3*sizeof(int));
        hipMallocManaged(&XB, 3*sizeof(double));   
    }
    //
    //XB(1), XB(2) the minimum, maximum x coordinate
    //DDIV the width of a division
    //ITYPE(K) the tpe of boundary at the minimum x (K=1) and maximum x (K=2) boundaries
    //          0 for a stream boundary
    //          1 for a plane of symmetry
    //          2 for a solid surface
    //          3 for a vacuum
    //NCELLS the number of sampling cells
    //NCCELLS the number of collision cells
    //NCIS the number of collision cells in a sampling cell
    //  MDIV the maximum number of sampling cell divisions at any level of subdivision
    //IVB 0,1 for stationary, moving outer boundary
    //IWF 0 for no radial weighting factors, 1 for radial weighting factors
    //WFM, set in data as the maximum weighting factor, then divided by the maximum radius
    //AWF overall ratio of real to weighted molecules
    //VELOB the speed of the outer boundary
    //ILEV level of subdivision in adaption (0 before adaption)
    //JDIV(N,M) (-cell number) or (start address -1 in JDIV(N+1,M), where M is MDIV
    //IFX 0 for plane flow, 1 for cylindrical flow, 3 for spherical flow
    //JFX  IFX+1
    //CELL(M,N) information on sampling cell N
    //    M=1 x coordinate
    //    M=2 minimum x coordinate
    //    M=3 maximum x cooedinate
    //    M=4 volume
    //ICELL(N) number of collision cells preceding those in sampling cell N
    //CCELL(M,N) information on collision cell N
    //    M=1 volume
    //    M=2 remainder in collision counting
    //    M=3 half the allowed time step
    //    M=4 maximum value of product of cross-section and relative velocity
    //    M=5 collision cell time
    //ICCELL(M,N) integer information on collision cell N
    //    M=1 the (start address -1) in ICREF of molecules in collision cell N
    //    M=2 the number of molecules in collision cell N
    //    M=3 the sampling cell in which the collision cell lies
    //FREM fraction of molecule removal
    //XREM the coordinate at which removal commences
    //
};

clock_t start;
fstream file_9;
fstream file_18;
CALC *calc = new CALC;
GAS *gas = new GAS;
MOLECS *molecs = new MOLECS;
GEOM_1D *geom = new GEOM_1D;
OUTPUT *output =new OUTPUT;

template <typename T>
string to_string(T value)
{
    std::ostringstream os ;
    os << value ;
    return os.str() ;
}



int main()
{
    // //CALC calc;
    // //MOLECS molecs;
    // //GAS gas;
    // //OUTPUT output;
    // //GEOM_1D geom;
    //
    // IMPLICIT NONE\

    //


    int IRUN,ICONF,N,M,IADAPT,IRETREM,ISET;
    double A;
    //
    fstream file_7;
    
    calc->NVER=1;          //for major changes, e.g. to basic architecture
    calc->MVER=1 ;         //significant changes, but must change whenever the data in a DSnD.DAT file changes
    calc->NREL=1  ;        //the release number
    //
    //***********************
    //set constants
    // PI=3.1415926535897932D00
    // DPI=6.283185307179586D00
    // SPI=1.772453850905516D00
    // BOLTZ=1.380658D-23
    // AVOG=6.022169D26
    //***********************
    //
    //*************************************************
    //****  ADJUSTABLE COMPUTATIONAL PARAMETERS  ****
    //*************************************************
    //
    calc->NMCC=15;    //DEFAULT=15--desired number of simulated molecules in a collision cell
    //
    calc->CPDTM=0.2;   //DEFAULT=0.2--fraction of the local mean collision time that is the desired maximum time step
    //
    calc->TPDTM=0.5 ;  //DEFAULT=0.5--the fraction or multiple of a sampling cell transit time that is the desired maximum time step
    //
    calc->NNC=1;       //DEFAULT=0--0 to select collision partner randomly from collision cell, 1 for nearest-neighbor collisions
    //
    calc->SAMPRAT=5;   //DEFAULT=5--the number of time steps in a sampling interval
    //
    calc->OUTRAT=10;   //50   //DEFAULT=50--the number of flow samples in a file output interval
    //
    calc->FRACSAM=0.5; //0.5 //DEFAULT=0.5--fraction of the output interval interval over which a time-averaged sample is taken in an unsteady flow
    //
    calc->ISAD=0;      //DEFAULT=0--0,1 to not adapt, to adapt cells automatically at start of output interval in an unsteady flow (not yet implemented)
    //
    calc->IMTS=2;      //DEFAULT=0--0 to set the move time step to the instantaneous overall time step that changes with time
    //                         1 to use a cell dependent collision time
    //                         2 to keep the time step fixed at the initial value
    //
    calc->FNUMF=1;   //DEFAULT=1--adjustment factor to the automatically generated value for the number of real molecules
    //                                  that are represented by each simulated molecule.
    //          (The adjustment may be large because the automatic setting assumes that the whole flowfield is at the stream conditions.)
    //
    //automatic adjustments may be applied for some application classes (e.g homogeneous gas studies)
    //
    calc->TLIM=1.e-5;  //DEFAULT=1.D20 sets an indefinite run - set if a define STOP time is required
    //
    //************************************************
    //
    //open a diagnostic file and check whether an instance of the program is already running
    //
    //    fstream file_9;
    cout<<"DSMC PROGRAM"<<endl;
    file_9.open("DIAG.TXT", ios::trunc | ios::out);
    if(file_9.is_open()){
        file_9<<"File DIAG.TXT has been opened"<<endl;
        cout<<"File DIAG.TXT has been opened"<<endl;
    }
    else{
        cout<<"Stop the DS1.EXE that is already running and try again"<<endl;
        //return 0;
    }
    
    //    OPEN (9,FILE='DIAG.TXT',FORM='FORMATTED',STATUS='REPLACE')
    //    WRITE (9,*,IOSTAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'Stop the DS1.EXE that is already running and try again'
    //    STOP
    //    ELSE
    //    WRITE (9,*) 'File DIAG.TXT has been opened'
    //    END IF
    
    //
    //open a molecule number history file
    //OPEN (13,FILE='MolNum.DAT',FORM='FORMATTED',STATUS='REPLACE')
    //
    //initialise run variables
    IRUN=0;
    geom->IVB=0;  //will be reset to 1 by restart program if there is a moving wall
    //
    while((IRUN < 1) || (IRUN > 2)){
        cout<< "DSMC Version" <<calc->NVER<<'.'<<calc->MVER<<'.'<<calc->NREL<<endl;
        cout<< "enter 1 to continue a current run"<<endl;
        cout<< "enter 2 to start a new run :-"<<endl;
        //
        cin>>  IRUN;
    }
    if(IRUN == 1) file_9<< "Continuing an existing run"<<endl;//WRITE (9,*) 'Continuing an existing run'
    if(IRUN == 2) {
        cout<< "Enter 1 to confirm, 0 to continue current run :-"<<endl;
        cin>> ICONF;
        if(ICONF == 1)
            file_9<<"Starting a new run"<<endl;//WRITE (9,*) 'Starting a new run'
        else{
            IRUN=1;
            file_9<<"Continuing an existing run"<<endl;
            //WRITE (9,*) 'Continuing an existing run'
        }
    }
    //
    if(IRUN == 2){          //new run
        cout<< "Enter 0 for a homogeneous gas, or"<<endl;
        cout<< "Enter 1 for a one-dimensional flow, or"<<endl;
        cout<< "Enter 2 for a two-dimensional plane flow, or"<<endl;
        cout<< "Enter 3 for a three dimensional flow, or"<<endl;
        cout<< "enter 4 for an axially-symmetric flow :-"<<endl;
        cin>> calc->ICLASS;
        calc->NCLASS=2;      //default 2D
        if(calc->ICLASS < 2) calc->NCLASS=1;   //0D or 1D
        if(calc->ICLASS == 3) calc->NCLASS=3;  //3D
        cout<<"Enter 0 for an eventually steady flow, or"<<endl;
        cout<<"enter 1 for a continuing unsteady flow :-"<<endl;
        cin>> calc->ISF;
        
        
        file_7.open("RUN_CLASS.TXT", ios::trunc |ios::out);
        if(file_7.is_open()){
            cout<<"RUN_CLASS.TXT is opened"<<endl;
        }
        else{
            cout<<"RUN_CLASS.TXT not opened"<<endl;
            cin.get();
        }
        file_7<<calc->ICLASS<<calc->ISF;
        file_7.close();
        //        OPEN (7,FILE='RUN_CLASS.TXT',FORM='FORMATTED',STATUS='REPLACE')
        //        WRITE (7,*) ICLASS,ISF
        //        CLOSE (7)
        file_9<<"Starting a new run with ICLASS, ISF "<<calc->ICLASS<<" "<<calc->ISF<<endl;
        //        WRITE (9,*) 'Starting a new run with ICLASS, ISF',ICLASS,ISF
        cout<<"Starting a new run with ICLASS, ISF "<<calc->ICLASS<<" "<<calc->ISF<<endl;
    }
    //
    if(IRUN == 1){       //continued run
        file_7.open("RUN_CLASS.TXT" , ios::in );
        if(file_7.is_open()){
            cout<<"RUN_CLASS.TXT is opened"<<endl;
        }
        else{
            cout<<"RUN_CLASS.TXT not opened"<<endl;
            cin.get();
        }
        file_7 >>calc->ICLASS>>calc->ISF;
        file_7.close();
        //        OPEN (7,FILE='RUN_CLASS.TXT',FORM='FORMATTED',STATUS='OLD')
        //        READ (7,*) ICLASS,ISF
        //        CLOSE(7)
        READ_RESTART();
        //
        calc->TSAMP=calc->FTIME+calc->DTSAMP;
        calc->TOUT=calc->FTIME+calc->DTOUT;
        if((gas->MEX > 0) && (calc->ISF == 1)){
            cout<<"Enter 0 to continue the reaction sample or"<<endl;
            cout<<"enter 1 to continue with a new reaction sample :-"<<endl;
            cin>> N;
            if(N == 1){
                //memset(gas->TNEX,0.e00,sizeof(*gas->TNEX));
                //memset(calc->TDISS,0.e00,sizeof(*calc->TDISS));
                //memset(calc->TRECOMB,0.e00,sizeof(*calc->TRECOMB));
                for(int i=0;i<gas->MEX+1;i++)
                    gas->TNEX[i]= 0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->TDISS[i]=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->TRECOMB[i]=0.e00;
            }
        }
        //
        if((calc->ISAD == 0) && (calc->ISF == 0)){
            cout<<"Enter 0 to continue the current sample or"<<endl;
            cout<<"enter 1 to continue with a new sample :-"<<endl;
            cin>> N;
            if(N == 1){
                if((geom->ITYPE[2] == 4) && (calc->ICN == 0)){
                    cout<<"Enter 0 to continue to not enforce constant molecule number"<<endl;
                    cout<<"enter 1 to start to enforce constant molecule number :-"<<endl;
                    cin>> M;
                    if(M == 1) calc->ICN=1;
                }
                cout<<"Enter 1 to adapt the cells, or 0 to continue with current cells:-"<<endl;
                cin>>IADAPT;
                if(IADAPT == 1){
                    cout<<"Adapting cells"<<endl;
                    ADAPT_CELLS_1D() ;
                    INDEX_MOLS();
                    WRITE_RESTART();
                }
                else
                    cout<<"Continuing with existing cells"<<endl;
                //
                if(calc->IREM == 2){
                    cout<<"Enter 1 to reset the removal details, or 0 to continue with current details:-"<<endl;
                    cin>>IRETREM;
                    if(IRETREM == 1){
                        geom->FREM=-1.e00;
                        while((geom->FREM < -0.0001) || (geom->FREM > 5.0)){
                            cout<<"Enter the fraction of entering molecules that are removed:-"<<endl;
                            cin>>geom->FREM;
                            cout<<"The ratio of removed to entering mlecules is \t"<<geom->FREM<<endl;
                            //                            WRITE (*,999) FREM
                        }
                        file_9<<"The ratio of removed to entering mlecules is \t"<<geom->FREM<<endl;
                        //                        WRITE (9,999) FREM
                        //                        999       FORMAT (' The ratio of removed to entering molecules is ',G15.5)
                        if(geom->FREM > 1.e-10){
                            geom->XREM=geom->XB[1]-1.0;
                            while((geom->XREM < geom->XB[1]-0.0001) || (geom->XREM > geom->XB[2]+0.0001)){
                                cout<<"Enter x coordinate of the upstream removal limit:-"<<endl;
                                cin>>geom->XREM;
                                cout<<"The molecules are removed from \t"<<geom->XREM<<" to "<<geom->XB[2]<<endl; //988
                                //                                WRITE (*,998) XREM,XB(2)
                            }
                            file_9<<"The molecules are removed from \t"<<geom->XREM<<" to "<<geom->XB[2]<<endl;
                            //                            WRITE (9,998) XREM,XB(2)
                            //                            998         FORMAT (' The molecules are removed from ',G15.5,' to',G15.5)
                        }
                    }
                }
                //
                INITIALISE_SAMPLES();
            }
        }
    }
    //
    if(IRUN == 2){
        //
        READ_DATA();
        //
        if(calc->ICLASS < 2) SET_INITIAL_STATE_1D();
        //
        if(calc->ICLASS == 0) ENERGY(0,A);
        //
        WRITE_RESTART();
        //
    }
    //
    while(calc->FTIME < calc->TLIM){
        //
        //
        calc->FTIME=calc->FTIME+calc->DTM;
        //
        file_9<<"  TIME  "<<setw(20)<<setprecision(10)<<calc->FTIME<<"  NM  "<<molecs->NM<<"  COLLS  "<<std::left<<setw(20)<<setprecision(10)<<calc->TOTCOL<<endl;
        //        WRITE (9,*) 'TIME',FTIME,' NM',NM,' COLLS',TOTCOL
        cout<< "  TIME   "<<setw(20)<<setprecision(10)<<calc->FTIME<<"  NM  "<<molecs->NM<<"  COLLS  "<<std::left<<setw(20)<<setprecision(10)<<calc->TOTCOL<<endl;
        //
        //  WRITE (13,*) FTIME/TNORM,FLOAT(NM)/FLOAT(NMI)      //uncomment if a MOLFILE.DAT is to be generated
        //
        //  WRITE (*,*) 'MOVE'
        //cout<<"MOVE"<<endl;
        MOLECULES_MOVE_1D();
        //
        if((geom->ITYPE[1] == 0) || (geom->ITYPE[2] == 0) || (geom->ITYPE[2] == 4)) MOLECULES_ENTER_1D();
        //
        //  WRITE (*,*) 'INDEX'
        //ut<<"INDEX"<<endl;
        // cout<<calc->TOUT<<endl;
        // cin.get();
        INDEX_MOLS();
        //
         // WRITE (*,*) 'COLLISIONS'
        COLLISIONS();
        //
        // if(gas->MMVM > 0) {
        //     cout<<"DISSOCIATION"<<endl;
        //     DISSOCIATION();
        // }
        //
        if(calc->FTIME > calc->TSAMP){
            //    WRITE (*,*) 'SAMPLE'
            if(calc->ISF == 0) SAMPLE_FLOW();
            if((calc->ISF == 1) && (calc->FTIME < calc->TPOUT+(1.e00-calc->FRACSAM)*calc->DTOUT)){
                calc->TSAMP=calc->TSAMP+calc->DTSAMP;
                INITIALISE_SAMPLES();
            }
            if((calc->ISF == 1) && (calc->FTIME >= calc->TPOUT+(1.e00-calc->FRACSAM)*calc->DTOUT)) SAMPLE_FLOW();
        }
        //
        if(calc->FTIME > calc->TOUT){
            cout<<"writing OUTPUT"<<endl;
            //    WRITE (*,*) 'OUTPUT'
            WRITE_RESTART();
            //
            OUTPUT_RESULTS();
            calc->TPOUT=calc->FTIME;
        }
        //
    }
    return 0;
    //
}

void ALLOCATE_GAS()
{
    // //GAS gas;
    // //CALC calc;
    gas->d_allocate(gas->MSP+1,3,gas->FSP);
    gas->d_allocate(7,gas->MSP+1,gas->SP);
    gas->d_allocate(4,gas->MSP+1,gas->SPR);
    gas->d_allocate(9,gas->MSP+1,gas->MSP,gas->SPM);
    gas->i_allocate(3,gas->MSP+1,gas->ISPR);
    gas->i_allocate(gas->MSP+1,gas->ISPV);
    gas->d_allocate(7,gas->MSP+1,3,gas->ENTR);
    gas->d_allocate(gas->MSP+1,3,gas->VMP);
    calc->d_allocate(gas->MSP+1,calc->VNMAX);
    gas->d_allocate(gas->MSP+1,gas->CR);
    calc->d_allocate(gas->MSP+1,gas->MSP+1,calc->TCOL);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->ISPRC);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->ISPRK);
    gas->d_allocate(5,gas->MSP+1,gas->MSP+1,gas->MSP+1,gas->SPRC);
    gas->i_allocate(gas->MSP+1,gas->NELL);
    gas->d_allocate(4,gas->MELE+1,gas->MSP+1,gas->QELC);
    gas->d_allocate(3,gas->MSP+1,gas->MSP+1,gas->MVIBL+1,gas->SPRP);
    gas->d_allocate(3,gas->MSP+1,gas->MSP+1,gas->SPRT);
    calc->d_allocate(gas->MSP+1,calc->AJM);
    gas->d_allocate(gas->MSP+1,gas->FP);
    calc->d_allocate(gas->MSP+1,calc->ALOSS);
    calc->d_allocate(gas->MSP+1,calc->EME);
    
    /*ALLOCATE (FSP(MSP,2),SP(6,MSP),SPR(3,MSP),SPM(8,MSP,MSP),ISPR(2,MSP),ISPV(MSP),ENTR(6,MSP,2),      &
     VMP(MSP,2),VNMAX(MSP),CR(MSP),TCOL(MSP,MSP),ISPRC(MSP,MSP),ISPRK(MSP,MSP),SPRC(4,MSP,MSP,MSP),                        &
     NELL(MSP),QELC(3,MELE,MSP),SPRP(2,MSP,MSP,0:MVIBL),SPRT(2,MSP,MSP),AJM(MSP),FP(MSP),    &
     ALOSS(MSP),EME(MSP),STAT=ERROR)
     //
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SPECIES VARIABLES',ERROR
     END IF
     //*/
    gas->i_allocate(gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->NEX);
    gas->i_allocate(gas->MSP+1,gas->MSP+1,gas->NSPEX);
    gas->d_allocate(7,gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->SPEX);
    gas->i_allocate(gas->MMEX+1,8,gas->MSP+1,gas->MSP+1,gas->ISPEX);
    gas->i_allocate(5,gas->MSP+1,gas->TREACG);
    gas->d_allocate(gas->MMEX+1,gas->PSF);
    gas->i_allocate(5,gas->MSP+1,gas->TREACL);
    gas->d_allocate(gas->MEX+1,gas->TNEX);
    gas->d_allocate(3,gas->MMEX+1,gas->MSP+1,gas->MSP+1,gas->MVIBL+1,gas->SPREX);
    gas->i_allocate(3,gas->MSP+1,gas->NSLEV);
    gas->d_allocate(gas->MSP+1,gas->SLER);
    // ALLOCATE (NEX(MMEX,MSP,MSP),NSPEX(MSP,MSP),SPEX(6,MMEX,MSP,MSP),ISPEX(MMEX,7,MSP,MSP),TREACG(4,MSP),         &
    //           PSF(MMEX),TREACL(4,MSP),TNEX(MEX),SPREX(2,MMEX,MSP,MSP,0:MVIBL),NSLEV(2,MSP),SLER(MSP),STAT=ERROR)
    // //
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE Q-K REACTION VARIABLES',ERROR
    // END IF
    // //
    if(gas->MMVM >= 0){
        gas->d_allocate(6,gas->MMVM+1,gas->MSP+1,gas->SPVM);
        gas->i_allocate(3,gas->MMVM+1,gas->MSP+1,gas->ISPVM);
        calc->d_allocate(gas->MSP+1,calc->TDISS);
        calc->d_allocate(gas->MSP+1,calc->TRECOMB);
        //ALLOCATE (SPVM(5,MMVM,MSP),ISPVM(2,MMVM,MSP),TDISS(MSP),TRECOMB(MSP),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE VIBRATION VARIABLES',ERROR
    }
    
    //N.B. surface reactions are not yet implemented
    if(gas->MNSR > 0){
        gas->d_allocate(gas->MNSR+1,gas->ERS);
        gas->i_allocate(3,gas->MNSR+1,gas->LIS);
        gas->i_allocate(7,gas->MNSR+1,gas->LRS);
        gas->i_allocate(gas->MNSR+1,gas->MSP+1,gas->ISRCD);
        //ALLOCATE (ERS(MNSR),LIS(2,MNSR),LRS(6,MNSR),ISRCD(MNSR,MSP),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SURFACE REACTION VARIABLES',ERROR
    }
     //calc->AJM=0.e00;
    //memset(calc->AJM,0.e00,sizeof(*calc->AJM));
    for(int i=0;i<gas->MSP+1;i++){
        calc->AJM[i]=0.e00;
    }
    return;
    
}

void HARD_SPHERE()
{
    ////GAS gas;
    ////CALC calc;
    cout<<"Reading HARD_SPHERE Data"<<endl;
    gas->MSP=1;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    
    gas->SP[1][1]=4.0e-10;    //reference diameter
    gas->SP[2][1]=273.0;       //reference temperature
    gas->SP[3][1]=0.5;        //viscosity-temperature index
    gas->SP[4][1]=1.0;         //reciprocal of VSS scattering parameter (1 for VHS)
    gas->SP[5][1]=5.e-26;     //mass
    gas->ISPR[1][1]=0;        //number of rotational degrees of freedom
    cout<<"Hard Sphere data done"<<endl;
    return;
}


void ARGON()
{
    // //GAS gas;
    // //CALC calc;
    cout<<"Reading Argon Data"<<endl;
    gas->MSP=1;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    ALLOCATE_GAS();
    gas->SP[1][1]=4.17e-10;
    gas->SP[2][1]=273.15;
    gas->SP[3][1]=0.81;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=6.63e-26;
    gas->ISPR[1][1]=0;
    gas->ISPR[2][1]=0;
    cout<<"Argon Data done"<<endl;
    return;
}
//
void IDEAL_NITROGEN()
{
    // //GAS gas;
    // //CALC calc;
    cout<<"Reading IDEAL_NITROGEN data"<<endl;
    gas->MSP=1;
    gas->MMRM=1;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=0;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    gas->SP[1][1]=4.17e-10;
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.74;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=4.65e-26;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.0;
    return;
}
//
void REAL_OXYGEN()
{
    //
    //GAS gas;
    //CALC calc;
    cout<<"Reading Real_Oxygen data"<<endl;
    gas->MSP=2;
    gas->MMRM=1;
    gas->MMVM=1;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=5;
    gas->MVIBL=26;
    ALLOCATE_GAS();
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.00;
    gas->SP[3][1]=0.77e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=5.312e-26;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0 ;            //0,1 for constant,polynomial rotational relaxation collision number
    gas->SPR[1][1]=5.0;             // the collision number or the coefficient of temperature in the polynomial (if a polynomial, the coeff. of T^2 is in spr_db(3  )
    
    gas->ISPV[1]=1   ;            // the number of vibrational modes
    gas->SPVM[1][1][1]=2256.e00  ;        // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=90000.e00;        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][1]=2256.e00;        // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][1]=1.0;            //arbitrary reduction factor
    gas->ISPVM[1][1][1]=2;
    gas->ISPVM[2][1][1]=2;
    gas->NELL[1]=3;
    if(gas->MELE > 1){
        //******
        gas->QELC[1][1][1]=3.0;
        gas->QELC[2][1][1]=0.0;
        gas->QELC[3][1][1]=50.0;  //500.
        gas->QELC[1][2][1]=2.0;
        gas->QELC[2][2][1]=11393.0;
        gas->QELC[3][2][1]=50.0;  //500         //for equipartition, the cross-section ratios must be the same for all levels
        gas->QELC[1][3][1]=1.0;
        gas->QELC[2][3][1]=18985.0;
        gas->QELC[3][3][1]=50.0;  //500.
    }
    //
    //species 2 is atomic oxygen
    gas->SP[1][2]=3.e-10;
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.8e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=2.656e-26;
    gas->SP[6][2]=4.099e-19;
    gas->ISPR[1][2]=0;
    gas->ISPV[2]=0;     //must be set//
    //set electronic information
    if(gas->MELE > 1){
        gas->NELL[2]=5;
        gas->QELC[1][1][2]=5.0;
        gas->QELC[2][1][2]=0.0;
        gas->QELC[3][1][2]=50.0;
        gas->QELC[1][2][2]=3.0;
        gas->QELC[2][2][2]=228.9;
        gas->QELC[3][2][2]=50.0;
        gas->QELC[1][3][2]=1.0;
        gas->QELC[2][3][2]=325.9;
        gas->QELC[3][3][2]=50.0;
        gas->QELC[1][4][2]=5.0;
        gas->QELC[2][4][2]=22830.0;
        gas->QELC[3][4][2]=50.0;
        gas->QELC[1][5][2]=1.0;
        gas->QELC[2][5][2]=48621.0;
        gas->QELC[3][5][2]=50.0;
    }
    //set data needed for recombination
    //
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
            gas->ISPRK[i][j]=0;
        }
    }
    // gas->ISPRC=0;
    // gas->ISPRK=0;
    gas->ISPRC[2][2]=1;    //O+O -> O2  recombined species code for an O+O recombination
    gas->ISPRK[2][2]=1 ;     //the relevant vibrational mode of this species
    gas->SPRC[1][2][2][1]=0.04;
    gas->SPRC[2][2][2][1]=-1.3;
    gas->SPRC[1][2][2][2]=0.05;
    gas->SPRC[2][2][2][2]=-1.1;
    gas->SPRT[1][2][2]=5000.e00;
    gas->SPRT[2][2][2]=15000.e00;
    //
    //memset(gas->NSPEX,0,sizeof(**gas->NSPEX));
    //memset(gas->SPEX,0.e00,sizeof(****gas->SPEX));
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->NSPEX[i][j]=0;
        }
    }
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->SPEX=0.e00;
    gas->ISPEX=0;
    //
    DERIVED_GAS_DATA();
    //
    cout<<"Real_Oxygen data done"<<endl;
    return;
}
//
void IDEAL_AIR()
{
    //GAS gas;
    //CALC calc;
    cout<<"Reading IDEAL_AIR data"<<endl;
    gas->MSP=2;
    gas->MMRM=1;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    //
    ALLOCATE_GAS();
    //
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.77;
    gas->SP[4][1]=1.0;
    gas->SP[5][1]=5.312e-26;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.0;
    gas->SP[1][2]=4.17e-10;
    gas->SP[2][2]=273.0;
    gas->SP[3][2]=0.74;
    gas->SP[4][2]=1.0;
    gas->SP[5][2]=4.65e-26;
    gas->ISPR[1][2]=2;
    gas->ISPR[2][2]=0;
    gas->SPR[1][2]=5.0;
    cout<<"IDEAL_AIR data done"<<endl;
    return;
}
//
void REAL_AIR()
{
    //GAS gas;
    //CALC calc;
    cout<<"REAL_AIR data done"<<endl;
    gas->MSP=5;
    gas->MMRM=1;
    gas->MMVM=1;
    gas->MELE=5;
    gas->MVIBL=40;  //?
    //
    gas->MEX=4;
    gas->MMEX=1;
    //
    gas->MNSR=0;
    ALLOCATE_GAS();
    //species 1 is oxygen
    gas->SP[1][1]=4.07e-10;
    gas->SP[2][1]=273.e00;
    gas->SP[3][1]=0.77e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=5.312e-26;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.e00;
    gas->ISPV[1]=1;               // the number of vibrational modes
    gas->SPVM[1][1][1]=2256.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=18000.e00;  //90000.D00        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][1]=2256.e00;       // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][1]=1.0;
    gas->ISPVM[1][1][1]=3;
    gas->ISPVM[2][1][1]=3;
    gas->NELL[1]=3;
    gas->QELC[1][1][1]=3.0;
    gas->QELC[2][1][1]=0.0;
    gas->QELC[3][1][1]=50.0;
    gas->QELC[1][2][1]=2.0;
    gas->QELC[2][2][1]=11393.0;
    gas->QELC[3][2][1]=50.0;
    gas->QELC[1][3][1]=1.0;
    gas->QELC[2][3][1]=18985.0;
    gas->QELC[3][3][1]=50.0;
    //species 2 is nitrogen
    gas->SP[1][2]=4.17e-10;
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.74e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=4.65e-26;
    gas->SP[6][2]=0.e00;
    gas->ISPR[1][2]=2;
    gas->ISPR[2][2]=0;
    gas->SPR[1][2]=5.e00;
    gas->ISPV[2]=1;
    gas->SPVM[1][1][2]=3371.e00;
    gas->SPVM[2][1][2]=52000.e00;     //260000.D00
    gas->SPVM[3][1][2]=3371.e00;
    gas->SPVM[5][1][2]=0.3;
    gas->ISPVM[1][1][2]=4;
    gas->ISPVM[2][1][2]=4;
    gas->NELL[2]=1;
    gas->QELC[1][1][2]=1.0;
    gas->QELC[2][1][2]=0.0;
    gas->QELC[3][1][2]=100.0;
    //species 3 is atomic oxygen
    gas->SP[1][3]=3.e-10;
    gas->SP[2][3]=273.e00;
    gas->SP[3][3]=0.8e00;
    gas->SP[4][3]=1.e00;
    gas->SP[5][3]=2.656e-26;
    gas->SP[6][3]=4.099e-19;
    gas->ISPR[1][3]=0;
    gas->ISPV[3]=0;
    gas->NELL[3]=5;
    gas->QELC[1][1][3]=5.0;
    gas->QELC[2][1][3]=0.0;
    gas->QELC[3][1][3]=50.0;
    gas->QELC[1][2][3]=3.0;
    gas->QELC[2][2][3]=228.9;
    gas->QELC[3][2][3]=50.0;
    gas->QELC[1][3][3]=1.0;
    gas->QELC[2][3][3]=325.9;
    gas->QELC[3][3][3]=50.0;
    gas->QELC[1][4][3]=5.0;
    gas->QELC[2][4][3]=22830.0;
    gas->QELC[3][4][3]=50.0;
    gas->QELC[1][5][3]=1.0;
    gas->QELC[2][5][3]=48621.0;
    gas->QELC[3][5][3]=50.0;
    //species 4 is atomic nitrogen
    gas->SP[1][4]=3.e-10;
    gas->SP[2][4]=273.e00;
    gas->SP[3][4]=0.8e00;
    gas->SP[4][4]=1.0e00;
    gas->SP[5][4]=2.325e-26;
    gas->SP[6][4]=7.849e-19;
    gas->ISPR[1][4]=0;
    gas->ISPV[4]=0;
    gas->NELL[4]=3;
    gas->QELC[1][1][4]=4.0;
    gas->QELC[2][1][4]=0.0;
    gas->QELC[3][1][4]=50.0;
    gas->QELC[1][2][4]=10.0;
    gas->QELC[2][2][4]=27658.0;
    gas->QELC[3][2][4]=50.0;
    gas->QELC[1][3][4]=6.0;
    gas->QELC[2][3][4]=41495.0;
    gas->QELC[3][3][4]=50.0;
    //species 5 is NO
    gas->SP[1][5]=4.2e-10;
    gas->SP[2][5]=273.e00;
    gas->SP[3][5]=0.79e00;
    gas->SP[4][5]=1.0e00;
    gas->SP[5][5]=4.98e-26;
    gas->SP[6][5]=1.512e-19;
    gas->ISPR[1][5]=2;
    gas->ISPR[2][5]=0;
    gas->SPR[1][5]=5.e00;
    gas->ISPV[5]=1;
    gas->SPVM[1][1][5]=2719.e00;
    gas->SPVM[2][1][5]=14000.e00;   //70000.D00
    gas->SPVM[3][1][5]=2719.e00;
    gas->SPVM[5][1][5]=0.2;
    gas->ISPVM[1][1][5]=3;
    gas->ISPVM[2][1][5]=4;
    gas->NELL[5]=2;
    gas->QELC[1][1][5]=2.0;
    gas->QELC[2][1][5]=0.0;
    gas->QELC[3][1][5]=50.0;
    gas->QELC[1][2][5]=2.0;
    gas->QELC[2][2][5]=174.2;
    gas->QELC[3][2][5]=50.0;
    //set the recombination data for the molecule pairs
    //memset(gas->ISPRC,0,sizeof(**gas->ISPRC));//gas->ISPRC=0;    //data os zero unless explicitly set
    //memset(gas->ISPRK,0,sizeof(**gas->ISPRK));//gas->ISPRK=0;
    //memset(gas->SPRC,0,sizeof(****gas->SPRC));//gas->SPRC=0.e00;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
        }
    }
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRK[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    gas->ISPRC[3][3]=1; //O+O -> O2  recombined species code for an O+O recombination
    gas->ISPRK[3][3]=1;
    gas->SPRC[1][3][3][1]=0.04e00;
    gas->SPRC[2][3][3][1]=-1.3e00;
    gas->SPRC[1][3][3][2]=0.07e00;
    gas->SPRC[2][3][3][2]=-1.2e00;
    gas->SPRC[1][3][3][3]=0.08e00;
    gas->SPRC[2][3][3][3]=-1.2e00;
    gas->SPRC[1][3][3][4]=0.09e00;
    gas->SPRC[2][3][3][4]=-1.2e00;
    gas->SPRC[1][3][3][5]=0.065e00;
    gas->SPRC[2][3][3][5]=-1.2e00;
    gas->SPRT[1][3][3]=5000.e00;
    gas->SPRT[2][3][3]=15000.e00;
    gas->ISPRC[4][4]=2;  //N+N -> N2
    gas->ISPRK[4][4]=1;
    gas->SPRC[1][4][4][1]=0.15e00;
    gas->SPRC[2][4][4][1]=-2.05e00;
    gas->SPRC[1][4][4][2]=0.09e00;
    gas->SPRC[2][4][4][2]=-2.1e00;
    gas->SPRC[1][4][4][3]=0.16e00;
    gas->SPRC[2][4][4][3]=-2.0e00;
    gas->SPRC[1][4][4][4]=0.17e00;
    gas->SPRC[2][4][4][4]=-2.0e00;
    gas->SPRC[1][4][4][5]=0.17e00;
    gas->SPRC[2][4][4][5]=-2.1e00;
    gas->SPRT[1][4][4]=5000.e00;
    gas->SPRT[2][4][4]=15000.e00;
    gas->ISPRC[3][4]=5;
    gas->ISPRK[3][4]=1;
    gas->SPRC[1][3][4][1]=0.3e00;
    gas->SPRC[2][3][4][1]=-1.9e00;
    gas->SPRC[1][3][4][2]=0.4e00;
    gas->SPRC[2][3][4][2]=-2.0e00;
    gas->SPRC[1][3][4][3]=0.3e00;
    gas->SPRC[2][3][4][3]=-1.75e00;
    gas->SPRC[1][3][4][4]=0.3e00;
    gas->SPRC[2][3][4][4]=-1.75e00;
    gas->SPRC[1][3][4][5]=0.15e00;
    gas->SPRC[2][3][4][5]=-1.9e00;
    gas->SPRT[1][3][4]=5000.e00;
    gas->SPRT[2][3][4]=15000.e00;
    //set the exchange reaction data
    //memset(gas->SPEX,0,sizeof(****gas->SPEX));//gas->SPEX=0.e00;
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    gas->ISPEX=0;
    gas->NSPEX=0;
    gas->NSPEX[2][3]=1;
    gas->NSPEX[4][5]=1;
    gas->NSPEX[3][5]=1;
    gas->NSPEX[1][4]=1;
    //N2+O->NO+N
    gas->ISPEX[1][1][2][3]=2;
    gas->ISPEX[1][2][2][3]=3;
    gas->ISPEX[1][3][2][3]=5;
    gas->ISPEX[1][4][2][3]=4;
    gas->ISPEX[1][5][2][3]=1;
    gas->ISPEX[1][6][2][3]=1;
    gas->SPEX[6][1][2][3]=0.e00;
    gas->NEX[1][2][3]=1;
    //NO+N->N2+0
    gas->ISPEX[1][1][4][5]=5;
    gas->ISPEX[1][2][4][5]=4;
    gas->ISPEX[1][3][4][5]=2;
    gas->ISPEX[1][4][4][5]=3;
    gas->ISPEX[1][5][4][5]=1;
    gas->ISPEX[1][6][4][5]=1;
    gas->ISPEX[1][7][4][5]=1;
    gas->SPEX[1][1][4][5]=0.8e00;
    gas->SPEX[2][1][4][5]=-0.75e00;
    gas->SPEX[4][1][4][5]=5000.e00;
    gas->SPEX[5][1][4][5]=15000.e00;
    gas->SPEX[6][1][4][5]=0.e00;
    gas->NEX[1][4][5]=2;
    //NO+O->O2+N
    gas->ISPEX[1][1][3][5]=5;
    gas->ISPEX[1][2][3][5]=3;
    gas->ISPEX[1][3][3][5]=1;
    gas->ISPEX[1][4][3][5]=4;
    gas->ISPEX[1][5][3][5]=1;
    gas->ISPEX[1][6][3][5]=1;
    gas->SPEX[6][1][3][5]=2.e-19;
    gas->NEX[1][3][5]=3;
    //O2+N->NO+O
    gas->ISPEX[1][1][1][4]=1;
    gas->ISPEX[1][2][1][4]=4;
    gas->ISPEX[1][3][1][4]=5;
    gas->ISPEX[1][4][1][4]=3;
    gas->ISPEX[1][5][1][4]=1;
    gas->ISPEX[1][6][1][4]=1;
    gas->ISPEX[1][7][1][4]=1 ;
    gas->SPEX[1][1][1][4]=7.e00;
    gas->SPEX[2][1][1][4]=-0.85e00;
    gas->SPEX[4][1][1][4]=5000.e00;
    gas->SPEX[5][1][1][4]=15000.e00;
    gas->SPEX[6][1][1][4]=0.e00;
    gas->NEX[1][1][4]=4;
    
    DERIVED_GAS_DATA();
    cout<<"REAL_AIR data done"<<endl;
    return;
}
//
void HELIUM_ARGON_XENON()
{
    //GAS gas;
    //CALC calc;
    cout<<"Reading HELIUM_ARGON_XENON data"<<endl;
    gas->MSP=3;
    gas->MMRM=0;
    gas->MMVM=0;
    gas->MNSR=0;
    gas->MEX=0;
    gas->MMEX=0;
    gas->MELE=1;
    gas->MVIBL=0;
    
    ALLOCATE_GAS();
    
    gas->SP[1][1]=2.30e-10;   //2.33D-10
    gas->SP[2][1]=273.0;
    gas->SP[3][1]=0.66;
    gas->SP[4][1]=0.794;   //1.
    gas->SP[5][1]=6.65e-27;
    gas->ISPR[1][1]=0;
    gas->ISPR[2][1]=0;
    //
    gas->SP[1][2]=4.11e-10;   //4.17D-10
    gas->SP[2][2]=273.15;
    gas->SP[3][2]=0.81;
    gas->SP[4][2]=0.714;    //1.
    gas->SP[5][2]=6.63e-26;
    gas->ISPR[1][2]=0;
    gas->ISPR[2][2]=0;
    //
    gas->SP[1][3]=5.65e-10;   //5.74D-10
    gas->SP[2][3]=273.0;
    gas->SP[3][3]=0.85;
    gas->SP[4][3]=0.694;   //1.
    gas->SP[5][3]=21.8e-26;
    gas->ISPR[1][3]=0;
    gas->ISPR[2][3]=0;
    cout<<"HELIUM_ARGON_XENON data done"<<endl;
    return;
}
//
void OXYGEN_HYDROGEN()
{
    //
    //GAS gas;
    //CALC calc;
    cout<<"Reading OXYGEN_HYDROGEN data"<<endl;
    gas->MSP=8;
    gas->MMRM=3;
    gas->MMVM=3;
    gas->MELE=1;
    gas->MVIBL=40;  //the maximum number of vibrational levels before a cumulative level reaches 1
    //
    gas->MEX=16;
    gas->MMEX=3;
    //
    gas->MNSR=0;
    //
    ALLOCATE_GAS();
    //
    //species 1 is hydrogen H2
    gas->SP[1][1]=2.92e-10;
    gas->SP[2][1]=273.e00;
    gas->SP[3][1]=0.67e00;
    gas->SP[4][1]=1.e00;
    gas->SP[5][1]=3.34e-27;
    gas->SP[6][1]=0.e00;
    gas->ISPR[1][1]=2;
    gas->ISPR[2][1]=0;
    gas->SPR[1][1]=5.e00;
    gas->ISPV[1]=1;         // the number of vibrational modes
    gas->SPVM[1][1][1]=6159.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][1]=20000.e00;  //estimate
    gas->SPVM[3][1][1]=2000.e00; //estimate
    gas->SPVM[5][1][1]=1.0;
    gas->ISPVM[1][1][1]=2;
    gas->ISPVM[2][1][1]=2;
    //species 2 is atomic hydrogen H
    gas->SP[1][2]=2.5e-10;      //estimate
    gas->SP[2][2]=273.e00;
    gas->SP[3][2]=0.8e00;
    gas->SP[4][2]=1.e00;
    gas->SP[5][2]=1.67e-27;
    gas->SP[6][2]=3.62e-19;
    gas->ISPR[1][2]=0;
    gas->ISPV[2]=0;
    //species 3 is oxygen O2
    gas->SP[1][3]=4.07e-10;
    gas->SP[2][3]=273.e00;
    gas->SP[3][3]=0.77e00;
    gas->SP[4][3]=1.e00;
    gas->SP[5][3]=5.312e-26;
    gas->SP[6][3]=0.e00;
    gas->ISPR[1][3]=2;
    gas->ISPR[2][3]=0;
    gas->SPR[1][3]=5.e00;
    gas->ISPV[3]=1;               // the number of vibrational modes
    gas->SPVM[1][1][3]=2256.e00;          // the characteristic vibrational temperature
    gas->SPVM[2][1][3]=18000.e00;  //90000.D00        // a constant Zv, or the reference Zv
    gas->SPVM[3][1][3]=2256.e00;       // -1 for a constant Zv, or the reference temperature
    gas->SPVM[5][1][3]=1.e00;
    gas->ISPVM[1][1][3]=4;
    gas->ISPVM[2][1][3]=4;
    //species 4 is atomic oxygen O
    gas->SP[1][4]=3.e-10;    //estimate
    gas->SP[2][4]=273.e00;
    gas->SP[3][4]=0.8e00;
    gas->SP[4][4]=1.e00;
    gas->SP[5][4]=2.656e-26;
    gas->SP[6][4]=4.099e-19;
    gas->ISPR[1][4]=0;
    gas->ISPV[4]=0;
    //species 5 is hydroxy OH
    gas->SP[1][5]=4.e-10;       //estimate
    gas->SP[2][5]=273.e00;
    gas->SP[3][5]=0.75e00;      //-estimate
    gas->SP[4][5]=1.0e00;
    gas->SP[5][5]=2.823e-26;
    gas->SP[6][5]=6.204e-20;
    gas->ISPR[1][5]=2;
    gas->ISPR[2][5]=0;
    gas->SPR[1][5]=5.e00;
    gas->ISPV[5]=1;
    gas->SPVM[1][1][5]=5360.e00;
    gas->SPVM[2][1][5]=20000.e00;   //estimate
    gas->SPVM[3][1][5]=2500.e00;    //estimate
    gas->SPVM[5][1][5]=1.0e00;
    gas->ISPVM[1][1][5]=2;
    gas->ISPVM[2][1][5]=4;
    //species 6 is water vapor H2O
    gas->SP[1][6]=4.5e-10;      //estimate
    gas->SP[2][6]=273.e00;
    gas->SP[3][6]=0.75e00 ;     //-estimate
    gas->SP[4][6]=1.0e00;
    gas->SP[5][6]=2.99e-26;
    gas->SP[6][6]=-4.015e-19;
    gas->ISPR[1][6]=3;
    gas->ISPR[2][6]=0;
    gas->SPR[1][6]=5.e00;
    gas->ISPV[6]=3;
    gas->SPVM[1][1][6]=5261.e00;  //symmetric stretch mode
    gas->SPVM[2][1][6]=20000.e00;   //estimate
    gas->SPVM[3][1][6]=2500.e00;    //estimate
    gas->SPVM[5][1][6]=1.e00;
    gas->SPVM[1][2][6]=2294.e00;  //bend mode
    gas->SPVM[2][2][6]=20000.e00;   //estimate
    gas->SPVM[3][2][6]=2500.e00;    //estimate
    gas->SPVM[5][2][6]=1.0e00;
    gas->SPVM[1][3][6]=5432.e00;  //asymmetric stretch mode
    gas->SPVM[2][3][6]=20000.e00;   //estimate
    gas->SPVM[3][3][6]=2500.e00 ;   //estimate
    gas->SPVM[5][3][6]=1.e00;
    gas->ISPVM[1][1][6]=2;
    gas->ISPVM[2][1][6]=5;
    gas->ISPVM[1][2][6]=2;
    gas->ISPVM[2][2][6]=5;
    gas->ISPVM[1][3][6]=2;
    gas->ISPVM[2][3][6]=5;
    //species 7 is hydroperoxy HO2
    gas->SP[1][7]=5.5e-10;       //estimate
    gas->SP[2][7]=273.e00;
    gas->SP[3][7]=0.75e00 ;     //-estimate
    gas->SP[4][7]=1.0e00;
    gas->SP[5][7]=5.479e-26;
    gas->SP[6][7]=2.04e-20;
    gas->ISPR[1][7]=2;    //assumes that HO2 is linear
    gas->ISPR[2][7]=0;
    gas->SPR[1][7]=5.e00;
    gas->ISPV[7]=3;
    gas->SPVM[1][1][7]=4950.e00;
    gas->SPVM[2][1][7]=20000.e00;   //estimate
    gas->SPVM[3][1][7]=2500.e00  ;  //estimate
    gas->SPVM[5][1][7]=1.e00;
    gas->SPVM[1][2][7]=2000.e00;
    gas->SPVM[2][2][7]=20000.e00;   //estimate
    gas->SPVM[3][2][7]=2500.e00;    //estimate
    gas->SPVM[5][2][7]=1.e00;
    gas->SPVM[1][3][7]=1580.e00;
    gas->SPVM[2][3][7]=20000.e00;   //estimate
    gas->SPVM[3][3][7]=2500.e00;    //estimate
    gas->SPVM[5][3][7]=1.e00;
    gas->ISPVM[1][1][7]=2;
    gas->ISPVM[2][1][7]=3;
    gas->ISPVM[1][2][7]=2;
    gas->ISPVM[2][2][7]=3;
    gas->ISPVM[1][3][7]=2;
    gas->ISPVM[2][3][7]=3;
    //Species 8 is argon
    gas->SP[1][8]=4.17e-10;
    gas->SP[2][8]=273.15;
    gas->SP[3][8]=0.81   ;
    gas->SP[4][8]=1.0;
    gas->SP[5][8]=6.63e-26;
    gas->SP[6][8]=0.e00;
    gas->ISPR[1][8]=0;
    gas->ISPV[8]=0;
    //
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->ISPRC[i][j]=0;
        }
    }
    //gas->ISPRC=0;    //data is zero unless explicitly set
    //
    gas->ISPRC[4][4]=3;    //O+O+M -> O2+M  recombined species code for an O+O recombination
    gas->ISPRK[4][4]=1;
    gas->SPRC[1][4][4][1]=0.26e00;
    gas->SPRC[2][4][4][1]=-1.3e00;
    gas->SPRC[1][4][4][2]=0.29e00;
    gas->SPRC[2][4][4][2]=-1.3e00;
    gas->SPRC[1][4][4][3]=0.04e00;
    gas->SPRC[2][4][4][3]=-1.5e00;
    gas->SPRC[1][4][4][4]=0.1e00;
    gas->SPRC[2][4][4][4]=-1.4e00;
    gas->SPRC[1][4][4][5]=0.1e00;
    gas->SPRC[2][4][4][5]=-1.4e00;
    gas->SPRC[1][4][4][6]=0.1e00;
    gas->SPRC[2][4][4][6]=-1.4e00;
    gas->SPRC[1][4][4][7]=0.07e00;
    gas->SPRC[2][4][4][7]=-1.5e00;
    gas->SPRC[1][4][4][8]=0.07e00;
    gas->SPRC[2][4][4][8]=-1.5e00;
    gas->SPRT[1][4][4]=1000.e00;
    gas->SPRT[2][4][4]=3000.e00;
    //
    gas->ISPRC[2][2]=1;   //H+H+M -> H2+M
    gas->ISPRK[2][2]=1;
    gas->SPRC[1][2][2][1]=0.07e00;
    gas->SPRC[2][2][2][1]=-2.e00;
    gas->SPRC[1][2][2][2]=0.11e00;
    gas->SPRC[2][2][2][2]=-2.2e00;
    gas->SPRC[1][2][2][3]=0.052e00;
    gas->SPRC[2][2][2][3]=-2.5e00;
    gas->SPRC[1][2][2][4]=0.052e00;
    gas->SPRC[2][2][2][4]=-2.5e00;
    gas->SPRC[1][2][2][5]=0.052e00;
    gas->SPRC[2][2][2][5]=-2.5e00;
    gas->SPRC[1][2][2][6]=0.052e00;
    gas->SPRC[2][2][2][6]=-2.5e00;
    gas->SPRC[1][2][2][7]=0.052e00;
    gas->SPRC[2][2][2][7]=-2.5e00;
    gas->SPRC[1][2][2][8]=0.04e00;
    gas->SPRC[2][2][2][7]=-2.5e00;
    gas->SPRT[1][2][2]=1000.e00;
    gas->SPRT[2][2][2]=3000.e00;
    //
    gas->ISPRC[2][4]=5;    //H+0+M -> OH+M
    gas->ISPRK[2][4]=1;
    gas->SPRC[1][2][4][1]=0.15e00;
    gas->SPRC[2][2][4][1]=-2.e00;
    gas->SPRC[1][2][4][2]=0.04e00;
    gas->SPRC[2][2][4][2]=-1.3e00;
    gas->SPRC[1][2][4][3]=0.04e00;
    gas->SPRC[2][2][4][3]=-1.3e00;
    gas->SPRC[1][2][4][4]=0.04e00;
    gas->SPRC[2][2][4][4]=-1.3e00;
    gas->SPRC[1][2][4][5]=0.04e00;
    gas->SPRC[2][2][4][5]=-1.3e00;
    gas->SPRC[1][2][4][6]=0.21e00;
    gas->SPRC[2][2][4][6]=-2.1e00;
    gas->SPRC[1][2][4][7]=0.18e00;
    gas->SPRC[2][2][4][7]=-2.3e00;
    gas->SPRC[1][2][4][8]=0.16e00;
    gas->SPRC[2][2][4][8]=-2.3e00;
    gas->SPRT[1][2][4]=1000.e00;
    gas->SPRT[2][2][4]=3000.e00;
    //
    gas->ISPRC[2][5]=6;    //H+OH+M -> H2O+M
    gas->ISPRK[2][5]=1;
    gas->SPRC[1][2][5][1]=0.1e00;
    gas->SPRC[2][2][5][1]=-2.0e00;
    gas->SPRC[1][2][5][2]=0.1e00;
    gas->SPRC[2][2][5][2]=-2.0e00;
    gas->SPRC[1][2][5][3]=0.0025e00;
    gas->SPRC[2][2][5][3]=-2.2e00;
    gas->SPRC[1][2][5][4]=0.0025e00;
    gas->SPRC[2][2][5][4]=-2.2e00;
    gas->SPRC[1][2][5][5]=0.0025e00;
    gas->SPRC[2][2][5][5]=-2.2e00;
    gas->SPRC[1][2][5][6]=0.0015e00;
    gas->SPRC[2][2][5][6]=-2.2e00;
    gas->SPRC[1][2][5][7]=0.0027e00;
    gas->SPRC[2][2][5][7]=-2.e00;
    gas->SPRC[1][2][5][8]=0.0025e00;
    gas->SPRC[2][2][5][8]=-2.e00;
    gas->SPRT[1][2][5]=1000.e00;
    gas->SPRT[2][2][5]=3000.e00;
    //
    gas->ISPRC[2][3]=7;   //H+O2+M -> H02+M
    gas->ISPRK[2][3]=1;
    gas->SPRC[1][2][3][1]=0.0001e00;
    gas->SPRC[2][2][3][1]=-1.7e00;
    gas->SPRC[1][2][3][2]=0.0001e00;
    gas->SPRC[2][2][3][2]=-1.7e00;
    gas->SPRC[1][2][3][3]=0.00003e00;
    gas->SPRC[2][2][3][3]=-1.5e00;
    gas->SPRC[1][2][3][4]=0.00003e00;
    gas->SPRC[2][2][3][4]=-1.7e00;
    gas->SPRC[1][2][3][5]=0.00003e00;
    gas->SPRC[2][2][3][5]=-1.7e00;
    gas->SPRC[1][2][3][6]=0.00003e00;
    gas->SPRC[2][2][3][6]=-1.7e00;
    gas->SPRC[1][2][3][7]=0.000012e00;
    gas->SPRC[2][2][3][7]=-1.7e00;
    gas->SPRC[1][2][3][8]=0.00002e00;
    gas->SPRC[2][2][3][8]=-1.7e00;
    gas->SPRT[1][2][3]=1000.e00;
    gas->SPRT[2][2][3]=3000.e00;
    //
    //set the exchange reaction data
    //  memset(gas->SPEX,0,sizeof(****gas->SPEX));//gas->SPEX=0.e00;    //all activation energies and heats of reaction are zero unless set otherwise
    for(int i=0;i<7;i++){
        for(int j=0;j<gas->MMEX+1;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->SPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->ISPEX=0;       // ISPEX is also zero unless set otherwise
    for(int i=0;i<gas->MMEX+1;i++){
        for(int j=0;j<8;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<gas->MSP+1;l++)
                    gas->ISPEX[i][j][k][l]=0.e00;
            }
        }
    }
    //gas->NSPEX=0;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->NSPEX[i][j]=0;
        }
    }
    //set the number of exchange reactions for each species pair
    gas->NSPEX[1][3]=1;
    gas->NSPEX[2][7]=3;
    gas->NSPEX[2][3]=1;
    gas->NSPEX[4][5]=1;
    gas->NSPEX[1][4]=1;
    gas->NSPEX[2][5]=1;
    gas->NSPEX[1][5]=1;
    gas->NSPEX[2][6]=1;
    gas->NSPEX[4][6]=2;
    gas->NSPEX[5][5]=2;
    gas->NSPEX[4][7]=1;
    gas->NSPEX[3][5]=1;
    //set the information on the chain reactions
    //
    //H2+O2 -> HO2+H
    gas->ISPEX[1][1][1][3]=1;
    gas->ISPEX[1][2][1][3]=3;
    gas->ISPEX[1][3][1][3]=7;
    gas->ISPEX[1][4][1][3]=2;
    gas->ISPEX[1][5][1][3]=1;
    gas->ISPEX[1][6][1][3]=1;
    gas->SPEX[6][1][1][3]=0.e00;
    gas->NEX[1][1][3]=1;
    //
    //HO2+H -> H2+02
    gas->ISPEX[1][1][2][7]=7;
    gas->ISPEX[1][2][2][7]=2;
    gas->ISPEX[1][3][2][7]=1;
    gas->ISPEX[1][4][2][7]=3;
    gas->ISPEX[1][5][2][7]=1;
    gas->ISPEX[1][6][2][7]=1;
    gas->ISPEX[1][7][2][7]=1;
    //H02 is H-O-O so that not all vibrational modes contribute to this reaction, but the numbers here are guesses//
    gas->SPEX[1][1][2][7]=20.e00;
    gas->SPEX[2][1][2][7]=0.4e00;
    gas->SPEX[4][1][2][7]=2000.e00;
    gas->SPEX[5][1][2][7]=3000.e00;
    gas->SPEX[6][1][2][7]=0.e00;
    gas->NEX[1][2][7]=2;
    //
    //O2+H -> OH+O
    gas->ISPEX[1][1][2][3]=3;
    gas->ISPEX[1][2][2][3]=2;
    gas->ISPEX[1][3][2][3]=5;
    gas->ISPEX[1][4][2][3]=4;
    gas->ISPEX[1][5][2][3]=1;
    gas->ISPEX[1][6][2][3]=1;
    gas->SPEX[6][1][2][3]=0.e00;
    gas->NEX[1][2][3]=3;
    //
    //OH+O -> O2+H
    gas->ISPEX[1][1][4][5]=5;
    gas->ISPEX[1][2][4][5]=4;
    gas->ISPEX[1][3][4][5]=3;
    gas->ISPEX[1][4][4][5]=2;
    gas->ISPEX[1][5][4][5]=1;
    gas->ISPEX[1][6][4][5]=1;
    gas->ISPEX[1][7][4][5]=1;
    gas->SPEX[1][1][4][5]=0.65e00;
    gas->SPEX[2][1][4][5]=-0.26;
    gas->SPEX[4][1][4][5]=2000.e00;
    gas->SPEX[5][1][4][5]=3000.e00;
    gas->SPEX[6][1][4][5]=0.e00;
    gas->NEX[1][4][5]=4;
    //
    //H2+O -> OH+H
    gas->ISPEX[1][1][1][4]=1;
    gas->ISPEX[1][2][1][4]=4;
    gas->ISPEX[1][3][1][4]=5;
    gas->ISPEX[1][4][1][4]=2;
    gas->ISPEX[1][5][1][4]=1;
    gas->ISPEX[1][6][1][4]=1;
    gas->SPEX[6][1][1][4]=0.e00;
    gas->NEX[1][1][4]=5;
    //
    //OH+H -> H2+O
    gas->ISPEX[1][1][2][5]=5;
    gas->ISPEX[1][2][2][5]=2;
    gas->ISPEX[1][3][2][5]=1;
    gas->ISPEX[1][4][2][5]=4;
    gas->ISPEX[1][5][2][5]=1;
    gas->ISPEX[1][6][2][5]=1;
    gas->ISPEX[1][7][2][5]=1;
    gas->SPEX[1][1][2][5]=0.5e00;
    gas->SPEX[2][1][2][5]=-0.2e00;
    gas->SPEX[4][1][2][5]=2000.e00;
    gas->SPEX[5][1][2][5]=3000.e00;
    gas->SPEX[6][1][2][5]=0.e00;
    gas->NEX[1][2][5]=6;
    //
    //H20+H -> OH+H2
    gas->ISPEX[1][1][2][6]=6;
    gas->ISPEX[1][2][2][6]=2;
    gas->ISPEX[1][3][2][6]=5;
    gas->ISPEX[1][4][2][6]=1;
    gas->ISPEX[1][5][2][6]=1;
    gas->ISPEX[1][6][2][6]=1;
    gas->SPEX[6][1][2][6]=2.0e-19;
    gas->NEX[1][2][6]=7;
    
    //OH+H2 -> H2O+H
    gas->ISPEX[1][1][1][5]=5;
    gas->ISPEX[1][2][1][5]=1;
    gas->ISPEX[1][3][1][5]=6;
    gas->ISPEX[1][4][1][5]=2;
    gas->ISPEX[1][5][1][5]=1;
    gas->ISPEX[1][6][1][5]=1;
    gas->ISPEX[1][7][1][5]=1;
    gas->SPEX[1][1][1][5]=0.5;
    gas->SPEX[2][1][1][5]=-0.2;
    gas->SPEX[4][1][1][5]=2000.e00;
    gas->SPEX[5][1][1][5]=3000.e00;
    gas->SPEX[6][1][1][5]=0.e00;
    gas->NEX[1][1][5]=8;
    //
    //H2O+O -> OH+OH
    gas->ISPEX[1][1][4][6]=6;
    gas->ISPEX[1][2][4][6]=4;
    gas->ISPEX[1][3][4][6]=5;
    gas->ISPEX[1][4][4][6]=5;
    gas->ISPEX[1][5][4][6]=1;
    gas->ISPEX[1][6][4][6]=1;
    gas->SPEX[6][1][4][6]=0.e00;
    gas->NEX[1][4][6]=9;
    //
    //0H+OH -> H2O+O
    gas->ISPEX[1][1][5][5]=5;
    gas->ISPEX[1][2][5][5]=5;
    gas->ISPEX[1][3][5][5]=6;
    gas->ISPEX[1][4][5][5]=4;
    gas->ISPEX[1][5][5][5]=1;
    gas->ISPEX[1][6][5][5]=1;
    gas->ISPEX[1][7][5][5]=1;
    gas->SPEX[1][1][5][5]=0.35;
    gas->SPEX[2][1][5][5]=-0.2 ;
    gas->SPEX[4][1][5][5]=2000.e00;
    gas->SPEX[5][1][5][5]=3000.e00;
    gas->SPEX[6][1][5][5]=0.e00;
    gas->NEX[1][5][5]=10;
    //
    //OH+OH  -> HO2+H
    //
    gas->ISPEX[2][1][5][5]=5;
    gas->ISPEX[2][2][5][5]=5;
    gas->ISPEX[2][3][5][5]=7;
    gas->ISPEX[2][4][5][5]=2;
    gas->ISPEX[2][5][5][5]=1;
    gas->ISPEX[2][6][5][5]=1;
    gas->SPEX[6][2][5][5]=0.e00;
    gas->NEX[2][5][5]=11;
    //
    //H02+H -> 0H+OH
    gas->ISPEX[2][1][2][7]=7;
    gas->ISPEX[2][2][2][7]=2;
    gas->ISPEX[2][3][2][7]=5;
    gas->ISPEX[2][4][2][7]=5;
    gas->ISPEX[2][5][2][7]=1;
    gas->ISPEX[2][6][2][7]=1;
    gas->ISPEX[2][7][2][7]=1;
    gas->SPEX[1][2][2][7]=120.e00;
    gas->SPEX[2][2][2][7]=-0.05e00;
    gas->SPEX[4][2][2][7]=2000.e00;
    gas->SPEX[5][2][2][7]=3000.e00;
    gas->SPEX[6][2][2][7]=0.e00;
    gas->NEX[2][2][7]=12;
    //
    //H2O+O -> HO2+H
    //
    gas->ISPEX[2][1][4][6]=6;
    gas->ISPEX[2][2][4][6]=4;
    gas->ISPEX[2][3][4][6]=7;
    gas->ISPEX[2][4][4][6]=2;
    gas->ISPEX[2][5][4][6]=1;
    gas->ISPEX[2][6][4][6]=1;
    gas->SPEX[6][2][4][6]=0.e00;
    gas->NEX[2][4][6]=13;
    //
    //H02+H -> H2O+O
    //
    gas->ISPEX[3][1][2][7]=7;
    gas->ISPEX[3][2][2][7]=2;
    gas->ISPEX[3][3][2][7]=6;
    gas->ISPEX[3][4][2][7]=4;
    gas->ISPEX[3][5][2][7]=1;
    gas->ISPEX[3][6][2][7]=1;
    gas->ISPEX[3][7][2][7]=1;
    gas->SPEX[1][3][2][7]=40.e00;
    gas->SPEX[2][3][2][7]=-1.e00;
    gas->SPEX[4][3][2][7]=2000.e00;
    gas->SPEX[5][3][2][7]=3000.e00;
    gas->SPEX[6][3][2][7]=0.e00;
    gas->NEX[3][2][7]=14;
    //
    //OH+O2 -> HO2+O
    //
    gas->ISPEX[1][1][3][5]=5;
    gas->ISPEX[1][2][3][5]=3;
    gas->ISPEX[1][3][3][5]=7;
    gas->ISPEX[1][4][3][5]=4;
    gas->ISPEX[1][5][3][5]=1;
    gas->ISPEX[1][6][3][5]=1;
    gas->SPEX[6][1][3][5]=0.e00;
    gas->NEX[1][3][5]=15;
    //
    //H02+0 -> OH+O2
    //
    gas->ISPEX[1][1][4][7]=7;
    gas->ISPEX[1][2][4][7]=4;
    gas->ISPEX[1][3][4][7]=5;
    gas->ISPEX[1][4][4][7]=3;
    gas->ISPEX[1][5][4][7]=1;
    gas->ISPEX[1][6][4][7]=1;
    gas->ISPEX[1][7][4][7]=1;
    gas->SPEX[1][1][4][7]=100.e00;
    gas->SPEX[2][1][4][7]=0.15e00;
    gas->SPEX[4][1][4][7]=2000.e00;
    gas->SPEX[5][1][4][7]=3000.e00;
    gas->SPEX[6][1][4][7]=0.e00;
    gas->NEX[1][4][7]=16;
    
    //
    DERIVED_GAS_DATA();
    //
    cout<<"OXYGEN_HYDROGEN data done"<<endl;
    return;
}
//***************************************************************************
//*************************END OF GAS DATABASE*******************************
//***************************************************************************
//
void DERIVED_GAS_DATA()
{
    //
    //GAS gas;
    //CALC calc;
    int I,II,J,JJ,K,L,M,MM,N,JMAX,MOLSP,MOLOF,NSTEP,IMAX;
    double A,B,BB,C,X,T,CUR,EAD,TVD,ZVT,ERD,PETD,DETD,PINT,ETD,SUMD,VAL;
    double **BFRAC,**TOT;
    double ****VRRD;
    double *****VRREX;
    //
    //VRRD(1,L,M,K) dissociation rate coefficient to species L,M for vibrational level K at 5,000 K
    //VRRD(2,L,M,K) similar for 15,000 K
    //VRREX(1,J,L,M,K)  Jth exchange rate coefficient to species L,M for vibrational level K at 1,000 K
    //VRREX(2,J,L,M,K) similar for 3,000 K
    //BFRAC(2,J) Boltzmann fraction
    //JMAX imax-1
    //T temperature
    //CUR sum of level resolved rates
    //
    
    VRRD = new double ***[3];
    for (int i = 0; i < 3; ++i)
    {
        VRRD[i] = new double **[gas->MSP+1];
        for (int j = 0; j < gas->MSP+1; ++j)
        {
            VRRD[i][j] = new double *[gas->MSP+1];
            for(int k=0; k<gas->MSP+1; ++k)
                VRRD[i][j][k]=new double [gas->MVIBL+1];
        }
    }
    
    BFRAC = new double*[gas->MVIBL+1];
    for(int i =0; i< (gas->MVIBL+1); ++i)
        BFRAC[i] = new double[3];
    
    VRREX = new double ****[3];
    for (int i = 0; i < 3; ++i)
    {
        VRREX[i] = new double ***[gas->MMEX+1];
        for (int j = 0; j < gas->MMEX+1; ++j)
        {
            VRREX[i][j] = new double **[gas->MSP+1];
            for(int k=0; k<gas->MSP+1; ++k)
            {
                VRREX[i][j][k]=new double *[gas->MSP+1];
                for(int l=0; l<gas->MSP+1; ++l)
                    VRREX[i][j][k][l]= new double[gas->MVIBL+1];
            }
        }
    }
    
    TOT = new double*[gas->MVIBL+1];
    for(int i =0; i< (gas->MVIBL+1); ++i)
        TOT[i] = new double[3];
    
    // ALLOCATE (VRRD(2,MSP,MSP,0:MVIBL),BFRAC(0:MVIBL,2),VRREX(2,MMEX,MSP,MSP,0:MVIBL),TOT(0:MVIBL,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE VIB. RES. DISS. RATES',ERROR
    // END IF
    //
    cout<<"Setting derived gas data"<<endl;
    //copy the L,M data that has been specified for L < M so that it applies also for M>L
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(L > M){
                gas->NSPEX[L][M]=gas->NSPEX[M][L];
                gas->ISPRC[L][M]=gas->ISPRC[M][L];
                gas->ISPRK[L][M]=gas->ISPRK[M][L];
                for(K=1;K<=gas->MSP;K++){
                    gas->SPRT[1][L][M]=gas->SPRT[1][M][L];
                    gas->SPRT[2][L][M]=gas->SPRT[2][M][L];
                    gas->SPRC[1][L][M][K]=gas->SPRC[1][M][L][K];
                    gas->SPRC[2][L][M][K]=gas->SPRC[2][M][L][K];
                }
                for(K=1;K<=gas->MMEX;K++){
                    gas->NEX[K][L][M]=gas->NEX[K][M][L];
                    for(J=1;J<=6;J++){
                        gas->SPEX[J][K][L][M]=gas->SPEX[J][K][M][L];
                    }
                    for(J=1;J<=7;J++){
                        gas->ISPEX[K][J][L][M]=gas->ISPEX[K][J][M][L];
                    }
                }
            }
        }
    }
    //
    if(gas->MMVM > 0){
        //set the characteristic dissociation temperatures
        for(L=1;L<=gas->MSP;L++){
            if(gas->ISPV[L] > 0){
                for(K=1;K<=gas->ISPV[L];K++)
                {
                    I=gas->ISPVM[1][K][L];
                    J=gas->ISPVM[2][K][L];
                    gas->SPVM[4][K][L]=(gas->SP[6][I]+gas->SP[6][J]-gas->SP[6][L])/BOLTZ;
                    //WRITE (9,*) 'Char. Diss temp of species',L,' is',SPVM(4,K,L)
                    file_9<<"Char. Diss temp of species "<<L<<" is "<<gas->SPVM[4][K][L]<<endl;
                }
            }
        }
    }
    //
    if(gas->MMEX > 0){
        //set the heats of reaction of the exchange and chain reactions
        for(L=1;L<=gas->MSP;L++){
            for(M=1;M<=gas->MSP;M++){
                for(J=1;J<=gas->MMEX;J++){
                    if((gas->ISPEX[J][3][L][M]> 0) && (gas->ISPEX[J][4][L][M]>0) && (gas->ISPEX[J][1][L][M]>0) && (gas->ISPEX[J][2][L][M]>0)){
                        gas->SPEX[3][J][L][M]=gas->SP[6][gas->ISPEX[J][1][L][M]]+gas->SP[6][gas->ISPEX[J][2][L][M]]-gas->SP[6][gas->ISPEX[J][3][L][M]]-gas->SP[6][gas->ISPEX[J][4][L][M]];
                        // WRITE (9,*) 'Reaction',NEX(J,L,M),' heat of reaction',SPEX(3,J,L,M)
                        file_9<<"Reaction "<<gas->NEX[J][L][M]<<" heat of reaction"<<gas->SPEX[3][J][L][M]<<endl;
                    }
                }
            }
        }
    }
    //
    if(gas->MELE > 1){
        //set the electronic cross-section ratios to a mean electronic relaxation collision number
        //(equipartition is not achieved unless there is a single number)
        for(L=1;L<=gas->MSP;L++){
            A=0.e00;
            for(K=1;K<=gas->NELL[L];K++){
                A=A+gas->QELC[3][K][L];
            }
            gas->QELC[3][1][L]=A/double(gas->NELL[L]);
        }
    }
    //
    //set the cumulative distributions of the post-recombination vibrational distributions for establishment of detailed balance
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(gas->ISPRC[L][M] > 0){
                N=gas->ISPRC[L][M];   //recombined species
                K=gas->ISPRK[L][M];   //relevant vibrational mode
                //WRITE (9,*) 'SPECIES',L,M,' RECOMBINE TO',N
                file_9<<"SPECIES "<<L<<" "<<M<<" RECOMBINE TO"<<N<<endl;
                JMAX=gas->SPVM[4][K][N]/gas->SPVM[1][K][N];
                if(JMAX > gas->MVIBL){
                    cout<<" The variable MVIBL="<<gas->MVIBL<<" in the gas database must be increased to"<<JMAX<<endl;
                    cout<<"Enter 0 ENTER to stop";
                    cin>> A;
                    return ;
                }
                A=2.5e00-gas->SP[3][N];
                for(I=1;I<=2;I++){
                    if(I == 1) T=gas->SPRT[1][L][M];
                    if(I == 2) T=gas->SPRT[2][L][M];
                    //WRITE (9,*) 'TEMPERATURE',T
                    file_9<<"TEMPERATURE "<<T<<endl;
                    CUR=0.e00;
                    for(J=0;J<=JMAX;J++){
                        X=double(JMAX+1-J)*gas->SPVM[1][K][N]/T;
                        CQAX(A,X,B);
                        VRRD[I][L][M][J]=B*exp(-double(J)*gas->SPVM[1][K][N]/T);
                        CUR=CUR+VRRD[I][L][M][J];
                    }
                    B=0.e00;
                    for(J=0;J<=JMAX;J++){
                        B=B+VRRD[I][L][M][J]/CUR;
                        gas->SPRP[I][L][M][J]=B;
                        //WRITE (9,*) 'CDF level dissoc',J,SPRP(I,L,M,J)
                        file_9<< "CDF level dissoc "<<J<<" "<<gas->SPRP[I][L][M][J];
                    }
                }
            }
        }
    }
    //
    //READ (*,*)  //optionally pause program to check cumulative distributions for exchange and chain reactions
    //
    //set the cumulative distributions of the post-reverse vibrational distributions for establishment of detailed balance
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            if(gas->NSPEX[L][M] > 0){
                for(K=1;K<=gas->NSPEX[L][M];K++){
                    if(gas->SPEX[3][K][L][M] > 0.e00){         //exothermic (reverse) exchange reaction
                        //L,M are the species in the reverse reaction, E_a of forward reaction is SPEX(3,K,L,M)
                        //WRITE (9,*) 'SPECIES',L,M,' REVERSE REACTION'
                        file_9<<"SPECIES "<<L<<" "<<M<<" REVERSE REACTION"<<endl;
                        MOLSP=gas->ISPEX[K][3][L][M];  //molecuke that splits in the forward reaction
                        MOLOF=gas->ISPEX[K][4][L][M];
                        JMAX=(gas->SPEX[3][K][L][M]+gas->SPEX[6][K][MOLSP][MOLOF])/(BOLTZ*gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP])+15;   //should always be less than the JMAX set by dissociation reactions
                        for(I=1;I<=2;I++){
                            if(I == 1) T=gas->SPEX[4][K][L][M];
                            if(I == 2) T=gas->SPEX[5][K][L][M];
                            for(J=0;J<=JMAX;J++){
                                EAD=(gas->SPEX[3][K][L][M]+gas->SPEX[6][K][MOLSP][MOLOF])/(BOLTZ*T);
                                TVD=gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T;
                                ZVT=1.e00/(1.e00-exp(-TVD));
                                C=ZVT/(tgamma(2.5e00-gas->SP[3][MOLSP])*exp(-EAD));  //coefficient of integral
                                ERD=EAD-double(J)*TVD;
                                if(ERD < 0.e00) ERD=0.e00;
                                PETD=ERD;
                                DETD=0.01e00;
                                PINT=0.e00;  //progressive value of integral
                                NSTEP=0;
                                A=1.e00;
                                while(A > 1.e-10){
                                    NSTEP=NSTEP+1;
                                    ETD=PETD+0.5e00*DETD;
                                    SUMD=0.e00;  //normalizing sum in the denominator
                                    IMAX=ETD/TVD+J;
                                    for(II=0;II<=IMAX;II++){
                                        SUMD=SUMD+pow((1.e00-double(II)*TVD/(ETD+double(J)*TVD)),(1.5e00-gas->SP[3][MOLSP]));
                                    }
                                    VAL=(pow((ETD*(1.e00-EAD/(ETD+double(J)*TVD))),(1.5e00-gas->SP[3][MOLSP]))/SUMD)*exp(-ETD);
                                    PINT=PINT+VAL*DETD;
                                    A=VAL/PINT;
                                    PETD=ETD+0.5e00*DETD;
                                }
                                VRREX[I][K][L][M][J]=C*PINT;
                                //              WRITE (*,*) 'Level ratio exch',I,J,VRREX(I,K,L,M,J)
                            }
                        }
                        //
                        //memset(TOT,0.e00,sizeof(**TOT));//TOT=0.e00;
                        for(int i=0;i<gas->MVIBL+1;i++){
                            for(int j=0;j<gas->MVIBL+1;j++){
                                TOT[i][j]=0;
                            }
                        }
                        for(I=1;I<=2;I++){
                            if(I == 1) T=gas->SPEX[4][K][L][M];
                            if(I == 2) T=gas->SPEX[5][K][L][M];
                            for(J=0;J<=JMAX;J++){
                                TVD=gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T;
                                ZVT=1.e00/(1.e00-exp(-TVD));
                                BFRAC[J][I]=exp(-J*gas->SPVM[1][gas->ISPEX[K][5][L][M]][MOLSP]/T)/ZVT;    //Boltzmann fraction
                                VRREX[I][K][L][M][J]=VRREX[I][K][L][M][J]*BFRAC[J][I];
                                //              WRITE (*,*) 'Contribution',I,J,VRREX(I,K,L,M,J)
                                for(MM=0;MM<=J;MM++)
                                    TOT[J][I]=TOT[J][I]+VRREX[I][K][L][M][MM];
                            }
                        }
                        //
                        for(I=1;I<=2;I++){
                            for(J=0;J<=JMAX;J++){
                                gas->SPREX[I][K][L][M][J]=TOT[J][I];
                                if(J == JMAX) gas->SPREX[I][K][L][M][J]=1.e00;
                                //WRITE (9,*) 'Cumulative',I,J,SPREX(I,K,L,M,J)
                                file_9<<"Cumulative "<<I<<" "<<J<<" "<<gas->SPREX[I][K][L][M][J];
                            }
                        }
                    }
                }
                gas->NSLEV=0;
                //memset(gas->SLER,0.e00,sizeof(*gas->SLER));//gas->SLER=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    gas->SLER[i]=0.e00;
            }
        }
    }
    //
    //READ (*,*)  //optionally pause program to check cumulative distributions for exchange abd chain reactions
    return;
}

void READ_DATA()
{
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    fstream file_3;
    fstream file_4;
    
    int NVERD,MVERD,N,K;
    if(calc->ICLASS==0)
    {
        cout<<"Reading the data file DS0D.DAT"<<endl;
        file_4.open("DS0D.DAT", ios::in);
        file_3.open("DS0D.TXT", ios::out);
        file_3<<"Data summary for program DSMC"<<endl;
        
        // OPEN (4,FILE='DS0D.DAT')
        // OPEN (3,FILE='DS0D.TXT')
        // WRITE (3,*) 'Data summary for program DSMC'
    }
    if(calc->ICLASS==1)
    {
        cout<<"Reading the data file DS1D.DAT"<<endl;
        file_4.open("DS1D.DAT", ios::in);
        file_3.open("DS1D.TXT", ios::out );
        file_3<<"Data summary for program DSMC"<<endl;
        // OPEN (4,FILE='DS1D.DAT')
        // OPEN (3,FILE='DS1D.TXT')
        // WRITE (3,*) 'Data summary for program DSMC'
    }
    //the following items are common to all classes of flow
    file_4>>NVERD;
    file_3<<"The n in version number n.m is "<<NVERD<<endl;
    file_4>>MVERD;
    file_3<<"The m in version number n.m is "<<MVERD<<endl;
    file_4>>calc->IMEG;
    file_3<<"The approximate number of megabytes for the calculation is "<<calc->IMEG<<endl;
    file_4>>gas->IGAS;
    file_3<<gas->IGAS<<endl;//gas->IGAS=1;
    // READ (4,*) NVERD
    // WRITE (3,*) 'The n in version number n.m is',NVERD
    // READ (4,*) MVERD
    // WRITE (3,*) 'The m in version number n.m is',MVERD
    // READ (4,*) IMEG //calc->IMEG
    // WRITE (3,*) 'The approximate number of megabytes for the calculation is',IMEG //calc->IMEG
    // READ (4,*) IGAS //gas->IGAS
    // WRITE (3,*) IGAS //gas->IGAS
    if(gas->IGAS==1)
    {
        file_3<<" Hard sphere gas "<<endl;
        // WRITE (3,*) 'Hard sphere gas'
        HARD_SPHERE();
    }
    if(gas->IGAS==2)
    {
        file_3<<"Argon "<<endl;
        // WRITE (3,*) 'Argon'
        ARGON();
    }
    if(gas->IGAS==3)
    {
        file_3<<"Ideal nitrogen"<<endl;
        // WRITE (3,*) 'Ideal nitrogen'
        IDEAL_NITROGEN();
    }
    if(gas->IGAS==4)
    {
        file_3<<"Real oxygen "<<endl;
        // WRITE (3,*) 'Real oxygen'
        REAL_OXYGEN();
    }
    if(gas->IGAS==5)
    {
        file_3<<"Ideal air "<<endl;
        // TE (3,*) 'Ideal air'
        IDEAL_AIR();
    }
    if(gas->IGAS==6)
    {
        file_3<<"Real air @ 7.5 km/s "<<endl;
        // RITE (3,*) 'Real air @ 7.5 km/s'
        REAL_AIR();
    }
    if(gas->IGAS==7)
    {
        file_3<<"Helium-argon-xenon mixture "<<endl;
        // WRITE (3,*) 'Helium-argon-xenon mixture'
        HELIUM_ARGON_XENON();
    }
    if(gas->IGAS==8)
    {
        file_3<<"Oxygen-hydrogen "<<endl;
        // WRRITE (3,*) 'Oxygen-hydrogen'
        OXYGEN_HYDROGEN();
    }
    file_3<<"The gas properties are:- "<<endl;
    file_4>>gas->FND[1];
    file_3<<"The stream number density is "<<gas->FND[1]<<endl;
    file_4>>gas->FTMP[1];
    file_3<<"The stream temperature is "<<gas->FTMP[1]<<endl;
    // WRITE (3,*) 'The gas properties are:-'
    // READ (4,*) FND(1) //gas->FND[1]
    // WRITE (3,*) '    The stream number density is',FND(1) ////gas->FND[1]
    // READ (4,*) FTMP(1) //gas->FTMP[1]
    // WRITE (3,*) '    The stream temperature is',FTMP(1) //gas->FTMP[1]
    if(gas->MMVM>0)
    {
        file_4>>gas->FVTMP[1];
        file_3<<"The stream vibrational and electronic temperature is "<<gas->FVTMP[1]<<endl;
        // READ (4,*) FVTMP(1) //gas->FVTMP;
        // WRITE (3,*) '    The stream vibrational and electronic temperature is',FVTMP(1) //gas->FVTMP[1]
    }
    if(calc->ICLASS==1)
    {
        file_4>>gas->VFX[1];
        file_3<<"The stream velocity in the x direction is "<<gas->VFX[1]<<endl;
        file_4>>gas->VFY[1];
        file_3<<"The stream velocity in the y direction is "<<gas->VFY[1]<<endl;
        // READ (4,*) VFX(1) //gas->VFX[1]
        // WRITE (3,*) '    The stream velocity in the x direction is',VFX(1) //gas->VFX[1]
        // READ (4,*) VFY(1) ////gas->VFY[1]
        // WRITE (3,*) '    The stream velocity in the y direction is',VFY(1) ////gas->VFY[1]
    }
    if(gas->MSP>1)
    {
        for(N=1;N<=gas->MSP;N++)
        {
            file_4>>gas->FSP[N][1];
            file_3<<" The fraction of species "<<N<<" is "<<gas->FSP[N][1]<<endl;
            // READ (4,*) FSP(N,1) //gas->FSP[N][1]
            // WRITE (3,*) '    The fraction of species',N,' is',FSP(N,1) //gas->FSP[N][1]
        }
    }
    else
    {
        gas->FSP[1][1]=1.0; //simple gas
    }
    if(calc->ICLASS==0){
        //       !--a homogeneous gas case is calculated as a one-dimensional flow with a single sampling cell
        // !--set the items that are required in the DS1D.DAT specification
        geom->IFX=0;
        geom->JFX=1;
        geom->XB[1]=0.e00;
        geom->XB[2]=0.0001e00*1.e25/gas->FND[1];
        geom->ITYPE[1]=1;
        geom->ITYPE[2]=1;
        gas->VFX[1]=0.e00;
        calc->IGS=1;
        calc->ISECS=0;
        calc->IREM=0;
        calc->MOLSC=10000*calc->IMEG; //a single sampling cell
    }
    if(calc->ICLASS==1)
    {
        file_4>>geom->IFX;
        // READ (4,*) IFX //geom->IFX
        if(geom->IFX==0)
            file_3<<"Plane Flow"<<endl;
        // WRITE (3,*) 'Plane flow'
        if(geom->IFX==1)
            file_3<<"Cylindrical flow"<<endl;
        // WRITE (3,*) 'Cylindrical flow'
        if(geom->IFX==2)
            file_3<<"Spherical flow"<<endl;
        // WRITE (3,*) 'Spherical flow'
        geom->JFX=geom->IFX+1;
        file_4>>geom->XB[1];
        // READ (4,*) XB(1) //geom->XB[1]
        file_3<<"The minimum x coordinate is "<<geom->XB[1]<<endl;
        // WRITE (3,*) 'The minimum x coordinate is',XB(1) //geom->XB[1]
        file_4>>geom->ITYPE[1];
        // READ (4,*) ITYPE(1) //geom->ITYPE[1]
        if(geom->ITYPE[1]==0)
            file_3<<"The minimum x coordinate is a stream boundary"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a stream boundary'
        if(geom->ITYPE[1]==1)
            file_3<<"The minimum x coordinate is a plane of symmetry"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a plane of symmetry'
        if(geom->ITYPE[1]==2)
            file_3<<"The minimum x coordinate is a solid surface"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a solid surface'
        if(geom->ITYPE[1]==3)
            file_3<<"The minimum x coordinate is a vacuum"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is a vacuum'
        if(geom->ITYPE[1]==4)
            file_3<<"The minimum x coordinate is an axis or center"<<endl;
        // WRITE (3,*) 'The minimum x coordinate is an axis or center'
        if(geom->ITYPE[1]==2)
        {
            file_3<<"The minimum x boundary is a surface with the following properties"<<endl;
            file_4>>gas->TSURF[1];
            file_3<<"The temperature of the surface is "<<gas->TSURF[1]<<endl;
            file_4>>gas->FSPEC[1];
            file_3<<"The fraction of specular reflection is "<<gas->FSPEC[1]<<endl;
            file_4>>gas->VSURF[1];
            file_3<<"The velocity in the y direction of this surface is "<<gas->VSURF[1];
            // WRITE (3,*) 'The minimum x boundary is a surface with the following properties'
            // READ (4,*) TSURF(1) //gas->TSURF[1]
            // WRITE (3,*) '     The temperature of the surface is',TSURF(1) //gas->TSURF[1]
            // READ (4,*) FSPEC(1) //gas->FSPEC[1]
            // WRITE (3,*) '     The fraction of specular reflection is',FSPEC(1) //gas->FSPEC[1]
            // READ (4,*) VSURF(1) //gas->VSURF[1]
            // WRITE (3,*) '     The velocity in the y direction of this surface is',VSURF(1) //gas->VSURF[1]
        }
        file_4>>geom->XB[2];
        file_3<<"The maximum x coordinate is "<<geom->XB[2]<<endl;
        file_4>>geom->ITYPE[2];
        // READ (4,*) XB(2) //geom->XB[2]
        // WRITE (3,*) 'The maximum x coordinate is',XB(2)//geom->XB[2]
        // READ (4,*) ITYPE(2)//geom->ITYPE[2]
        if(geom->ITYPE[2]==0)
            file_3<<"The mmaximum  x coordinate is a stream boundary"<<endl;
        // WRITE (3,*) 'The mmaximum  x coordinate is a stream boundary'
        if(geom->ITYPE[2]==1)
            file_3<<"The maximum x coordinate is a plane of symmetry"<<endl;
        // WRITE (3,*) 'The maximum x coordinate is a plane of symmetry'
        if(geom->ITYPE[2]==2)
            file_3<<"The maximum  x coordinate is a solid surface"<<endl;
        // WRITE (3,*) 'The maximum  x coordinate is a solid surface'
        if(geom->ITYPE[2]==3)
            file_3<<"The maximum  x coordinate is a vacuum"<<endl;
        // WRITE (3,*) 'The maximum  x coordinate is a vacuum'
        calc->ICN=0;
        if(geom->ITYPE[2]==4)
        {
            file_3<<"The maximum x coordinate is a stream boundary with a fixed number of simulated molecules"<<endl;
            // WRITE (3,*) 'The maximum x coordinate is a stream boundary with a fixed number of simulated molecules'
            if(gas->MSP==1)
                calc->ICN=1;
        }
        if(geom->ITYPE[2]==2)
        {
            file_3<<"The maximum  x boundary is a surface with the following properties"<<endl;
            file_4>>gas->TSURF[1];
            file_3<<"The temperature of the surface is "<<gas->TSURF[1]<<endl;
            file_4>>gas->FSPEC[1];
            file_3<<"The fraction of specular reflection is "<<gas->FSPEC[1]<<endl;
            file_4>>gas->VSURF[1];
            file_3<<"The velocity in the y direction of this surface is "<<gas->VSURF[1]<<endl;
            // WRITE (3,*) 'The maximum  x boundary is a surface with the following properties'
            // READ (4,*) TSURF(1) //gas->TSURF[1]
            // WRITE (3,*) '     The temperature of the surface is',TSURF(1) //gas->TSURF[1]
            // READ (4,*) FSPEC(1) //gas->FSPEC[1]
            // WRITE (3,*) '     The fraction of specular reflection is',FSPEC(1) //gas->FSPEC[1]
            // READ (4,*) VSURF(1) //gas->VSURF[1]
            // WRITE (3,*) '     The velocity in the y direction of this surface is',VSURF(1) //gas->VSURF[1]
        }
        if(geom->IFX>0)
        {
            file_4>>geom->IWF;
            // READ (4,*) READ (4,*) IWF //geom->IWF
            if(geom->IWF==0)
                file_3<<"There are no radial weighting factors"<<endl;
            // WRITE (3,*) 'There are no radial weighting factors'
            if(geom->IWF==1)
                file_3<<"There are radial weighting factors"<<endl;
            // WRITE (3,*) 'There are radial weighting factors'
            if(geom->IWF==1)
            {
                file_4>>geom->WFM;
                file_3<<"The maximum value of the weighting factor is  "<<geom->WFM<<endl;
                // READ (4,*) WFM //geom->WFM
                // WRITE (3,*) 'The maximum value of the weighting factor is ',WFM //geom->WFM
                geom->WFM=(geom->WFM-1)/geom->XB[2];
            }
        }
        file_4>>calc->IGS;
        // READ (4,*) IGS //calc->IGS
        if(calc->IGS==0)
            file_3<<"The flowfield is initially a vacuum "<<endl;
        // WRITE (3,*) 'The flowfield is initially a vacuum'
        if(calc->IGS==1)
            file_3<<"The flowfield is initially the stream(s) or reference gas"<<endl;
        // WRITE (3,*) 'The flowfield is initially the stream(s) or reference gas'
        file_4>>calc->ISECS;
        // READ (4,*) ISECS //calc->ISECS
        if(calc->ISECS==0)
            file_3<<"There is no secondary stream initially at x > 0"<<endl;
        // WRITE (3,*) 'There is no secondary stream initially at x > 0'
        if(calc->ISECS==1 && geom->IFX==0)
            file_3<<"There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)"<<endl;
        // WRITE (3,*) 'There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)'
        if(calc->ISECS==1 && geom->IFX>0)
        {
            if(geom->IWF==1)
            {
                file_3<<"There cannot be a secondary stream when weighting factors are present"<<endl;
                // WRITE (3,*) 'There cannot be a secondary stream when weighting factors are present'
                return;//STOP//dout
            }
            file_3<<"There is a secondary stream"<<endl;
            // WRITE (3,*) 'There is a secondary stream'
            file_4>>geom->XS;
            // READ (4,*) XS //geom->XS
            file_3<<"The secondary stream boundary is at r= "<<geom->XS<<endl;
            // WRITE (3,*) 'The secondary stream boundary is at r=',XS //geom->XS
        }
        if(calc->ISECS==1)
        {
            file_3<<"The secondary stream (at x>0 or X>XS) properties are:-"<<endl;
            file_4>>gas->FND[2];
            file_3<<"The stream number density is "<<gas->FND[2]<<endl;
            file_4>>gas->FTMP[2];
            file_3<<"The stream temperature is "<<gas->FTMP[2]<<endl;
            // WRITE (3,*) 'The secondary stream (at x>0 or X>XS) properties are:-'
            // READ (4,*) FND(2) //gas->FND
            // WRITE (3,*) '    The stream number density is',FND(2) //gas->FND
            // READ (4,*) FTMP(2) //gas->FTMP
            // WRITE (3,*) '    The stream temperature is',FTMP(2) //gas->FTMP
            if(gas->MMVM>0)
            {
                file_4>>gas->FVTMP[2];
                file_3<<"The stream vibrational and electronic temperature is "<<gas->FVTMP[2]<<endl;
                // READ (4,*) FVTMP(2) //gas->FVTMP[2]
                // WRITE (3,*) '    The stream vibrational and electronic temperature is',FVTMP(2) //gas->FVTMP[2]
            }
            file_4>>gas->VFX[2];
            file_3<<"The stream velocity in the x direction is "<<gas->VFX[2]<<endl;
            file_4>>gas->VFY[2];
            file_3<<"The stream velocity in the y direction is "<<gas->VFY[2]<<endl;
            // READ (4,*) VFX(2) //gas->VFX
            // WRITE (3,*) '    The stream velocity in the x direction is',VFX(2) //gas->VFX
            // READ (4,*) VFY(2) //gas->VFY
            // WRITE (3,*) '    The stream velocity in the y direction is',VFY(2) //gas->VFY
            if(gas->MSP>1)
            {
                for(N=1;N<=gas->MSP;N++)
                {
                    file_4>>gas->FSP[N][2];
                    file_3<<"The fraction of species "<<N<<" is "<<gas->FSP[N][2]<<endl;
                    // READ (4,*) FSP(N,2) //gas->FSP
                    // WRITE (3,*) '    The fraction of species',N,' is',FSP(N,2) //gas->FSP
                }
            }
            else
            {
                gas->FSP[1][2]=1;
            }
        }
        if(geom->IFX==0 && geom->ITYPE[1]==0)
        {
            file_4>>calc->IREM;
            // READ (4,*) IREM //calc->IREM
            if(calc->IREM==0)
            {
                file_3<<"There is no molecule removal"<<endl;
                // WRITE (3,*) 'There is no molecule removal'
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
            else if(calc->IREM==1)
            {
                file_4>>geom->XREM;
                file_3<<"There is full removal of the entering (at XB(1)) molecules between "<<geom->XREM<<" and "<<geom->XB[2]<<endl;
                // READ (4,*) XREM //geom->XREM
                // WRITE (3,*) ' There is full removal of the entering (at XB(1)) molecules between',XREM,' and',XB(2) //geom->XREM ,geom->XB[2]
                geom->FREM=1.e00;
            }
            else if(calc->IREM==2)
            {
                file_3<<"Molecule removal is specified whenever the program is restarted"<<endl;
                // WRITE (3,*) ' Molecule removal is specified whenever the program is restarted'
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
            else
            {
                geom->XREM=geom->XB[1]-1.e00;
                geom->FREM=0.e00;
            }
        }
        geom->IVB=0;
        geom->VELOB=0.e00;
        if(geom->ITYPE[2]==1)
        {
            file_4>>geom->IVB;
            // READ (4,*) IVB
            if(geom->IVB==0)
                file_3<<"The outer boundary is stationary"<<endl;
            // WRITE (3,*) ' The outer boundary is stationary'
            if(geom->IVB==1)
            {
                file_3<<"The outer boundary moves with a constant speed"<<endl;
                file_4>>geom->VELOB;
                file_3<<" The speed of the outer boundary is "<<geom->VELOB<<endl;
                // WRITE (3,*) ' The outer boundary moves with a constant speed'
                // READ (4,*) VELOB //geom->VELOB
                // WRITE (3,*) ' The speed of the outer boundary is',VELOB //geom->VELOB
            }
        }
        file_4>>calc->MOLSC;
        file_3<<"The desired number of molecules in a sampling cell is "<<calc->MOLSC<<endl;
        // READ (4,*) MOLSC //calc->MOLSC
        // WRITE (3,*) 'The desired number of molecules in a sampling cell is',MOLSC ////calc->MOLSC
    }
    //set the speed of the outer boundary
    file_3.close();
    file_4.close();
    // CLOSE (3)
    // CLOSE (4)
    // set the stream at the maximum x boundary if there is no secondary stream
    if(calc->ISECS==0 && geom->ITYPE[2]==0)
    {
        gas->FND[2]=gas->FND[1];
        gas->FTMP[2]=gas->FTMP[1];
        if(gas->MMVM>0)
            gas->FVTMP[2]=gas->FVTMP[1];
        gas->VFX[2]=gas->VFX[1];
        if(gas->MSP>1)
        {
            for(N=1;N<=gas->MSP;N++)
            {
                gas->FSP[N][2]=gas->FSP[N][1];
            }
        }
        else
            gas->FSP[1][2]=1;
    }
    //dout
    //1234   CONTINUE;
    return;
}

void INITIALISE_SAMPLES()
{
    //start a new sample for all classes of flow
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //MOLECS molecs;
    
    int N;
    //
    output->NSAMP=0.0;
    output->TISAMP=calc->FTIME;
    output->NMISAMP=molecs->NM;
    //memset(output->COLLS,0.e00,sizeof(*output->COLLS));memset(output->WCOLLS,0.e00,sizeof(*output->WCOLLS));memset(output->CLSEP,0.e00,sizeof(*output->CLSEP));
   
    for(int i=0;i<geom->NCELLS+1;i++)
        output->COLLS[i]=0.e00;
    for(int i=0;i<geom->NCELLS+1;i++)
       output->WCOLLS[i]=0.e00;
    for(int i=0;i<geom->NCELLS+1;i++)
        output->CLSEP[i]=0.e00;
    //output->COLLS=0.e00 ; output->WCOLLS=0.e00 ; output->CLSEP=0.e00;
    //memset(calc->TCOL,0.0,sizeof(**calc->TCOL));//calc->TCOL=0.0;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            calc->TCOL[i][j]=0.0;
        }
    }
    //gas->TREACG=0;
    //gas->TREACL=0;
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACG[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACL[i][j]=0;
        }
    }
    //memset(output->CS,0.0,sizeof(***output->CS));memset(output->CSS,0.0,sizeof(****output->CSS));memset(output->CSSS,0.0,sizeof(**output->CSSS));
    for(int j=0;j<gas->MSP+10;j++){
        for(int k=0;k<geom->NCELLS+1;k++){
            for(int l=0;l<gas->MSP+1;l++)
                output->CS[j][k][l]=0.0;
        }
    }
    for(int i=0;i<9;i++){
        for(int j=0;j<3;j++){
            for(int k=0;k<gas->MSP+1;k++){
                for(int l=0;l<3;l++)
                    output->CSS[i][j][k][l]=0.0;
            }
        }
    }
    for(int k=0;k<7;k++){
        for(int l=0;l<3;l++)
            output->CSSS[k][l]=0.0;
    }
    //output->CS=0.0 ; output->CSS=0.0 ; output->CSSS=0.0;
    //memset(output->VIBFRAC,0.e00,sizeof(***output->VIBFRAC));//output->VIBFRAC=0.e00;
    //memset(output->SUMVIB,0.e00,sizeof(**output->SUMVIB));//output->SUMVIB=0.e00;
    for(int j=0;j<gas->MSP+1;j++){
        for(int k=0;k<gas->MMVM+1;k++){
            for(int l=0;l<151;l++)
                output->VIBFRAC[j][k][l]=0.0;
        }
    }
    for(int k=0;k<gas->MSP+1;k++){
        for(int l=0;l<gas->MMVM+1;l++)
            output->SUMVIB[k][l]=0.0;
    }
    
}
////
//
void SET_INITIAL_STATE_1D()
{
    //set the initial state of a homogeneous or one-dimensional flow
    //
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    //
    //
    int J,L,K,KK,KN,II,III,INC,NSET,NSC;
    long long N,M;
    double A,B,AA,BB,BBB,SN,XMIN,XMAX,WFMIN,DENG,ELTI,EA,XPREV;
    double DMOM[4];
    double VB[4][3];
    double ROTE[3];
    //
    //NSET the alternative set numbers in the setting of exact initial state
    //DMOM(N) N=1,2,3 for x,y and z momentum sums of initial molecules
    //DENG the energy sum of the initial molecules
    //VB alternative sets of velocity components
    //ROTE alternative sets of rotational energy
    //EA entry area
    //INC counting increment
    //ELTI  initial electronic temperature
    //XPREV the pevious x coordinate
    //
    //memset(DMOM,0.e00,sizeof(DMOM));
    for(int i=0;i<4;i++)
        DMOM[i]=0.e00;
    DENG=0.e00;
    //set the number of molecules, divisions etc. based on stream 1
    //
    calc->NMI=10000*calc->IMEG+2;    //small changes in number for statistically independent runs
    geom->NDIV=calc->NMI/calc->MOLSC; //MOLSC molecules per division
    //WRITE (9,*) 'The number of divisions is',NDIV
    file_9<< "The number of divisions is "<<geom->NDIV<<endl;
    //
    geom->MDIV=geom->NDIV;
    geom->ILEVEL=0;
    //
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV+1,geom->JDIV);
    // ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY',ERROR
    // ENDIF
    //
    geom->DDIV=(geom->XB[2]-geom->XB[1])/double(geom->NDIV);
    geom->NCELLS=geom->NDIV;
    
    //WRITE (9,*) 'The number of sampling cells is',NCELLS
    file_9<<"The number of sampling cells is "<< geom->NCELLS<<endl;
    geom->NCIS=calc->MOLSC/calc->NMCC;
    geom->NCCELLS=geom->NCIS*geom->NDIV;
    //WRITE (9,*) 'The number of collision cells is',NCCELLS
    file_9<< "The number of collision cells is "<<geom->NCCELLS<<endl;
    //
    if(geom->IFX == 0) geom->XS=0.e00;
    //
    if(calc->ISECS == 0){
        if(geom->IFX == 0) calc->FNUM=((geom->XB[2]-geom->XB[1])*gas->FND[1])/double(calc->NMI);
        if(geom->IFX == 1) calc->FNUM=PI*(pow(geom->XB[2],2)-pow(geom->XB[1],2))*gas->FND[1]/double(calc->NMI);
        if(geom->IFX == 2) calc->FNUM=1.3333333333333333333333e00*PI*(pow(geom->XB[2],3)-pow(geom->XB[1],3))*gas->FND[1]/double(calc->NMI);
    }
    else{
        if(geom->IFX == 0) calc->FNUM=((geom->XS-geom->XB[1])*gas->FND[1]+(geom->XB[2]-geom->XS)*gas->FND[2])/double(calc->NMI);
        if(geom->IFX == 1) calc->FNUM=PI*((pow(geom->XS,2)-pow(geom->XB[1],2))*gas->FND[1]+(pow(geom->XB[2],2)-pow(geom->XS,2))*gas->FND[2])/double(calc->NMI);
        if(geom->IFX == 2) calc->FNUM=1.3333333333333333333333e00*PI*((pow(geom->XS,3)-pow(geom->XB[1],3))*gas->FND[1]+(pow(geom->XB[2],3)-pow(geom->XS,3))*gas->FND[2])/double(calc->NMI);
    }
    //
    calc->FNUM=calc->FNUM*calc->FNUMF;
    if(calc->FNUM < 1.e00) calc->FNUM=1.e00;
    //
    calc->FTIME=0.e00;
    //
    calc->TOTMOV=0.e00;
    calc->TOTCOL=0.e00;
    
    output->NDISSOC=0;
    //memset(calc->TCOL,0.e00,sizeof(**calc->TCOL));//calc->TCOL=0.e00;
    for(int i=0;i<gas->MSP+1;i++){
        for(int j=0;j<gas->MSP+1;j++){
            calc->TCOL[i][j]=0.e00;
        }
    }
    
    //memset(calc->TDISS,0.e00,sizeof(*calc->TDISS));//calc->TDISS=0.e00;
    //memset(calc->TRECOMB,0.e00,sizeof(*calc->TRECOMB));//calc->TRECOMB=0.e00;
    for(int i=0;i<gas->MSP+1;i++)
        calc->TDISS[i]=0.e00;
    for(int i=0;i<gas->MSP+1;i++)
        calc->TRECOMB[i]=0.e00;
    //gas->TREACG=0;
    //gas->TREACL=0;
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACG[i][j]=0;
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<gas->MSP+1;j++){
            gas->TREACL[i][j]=0;
        }
    }
    //memset(gas->TNEX,0.e00,sizeof(*gas->TNEX));//gas->TNEX=0.e00;
    for(int i=0;i<gas->MEX+1;i++)
        gas->TNEX[i]= 0.e00;
    for(N=1;N<=geom->NDIV;N++){
        geom->JDIV[0][N]=-N;
    }
    
    //
    geom->d_allocate(5,geom->NCELLS+1,geom->CELL);
    geom->i_allocate(geom->NCELLS+1,geom->ICELL);
    geom->d_allocate(6,geom->NCCELLS+1,geom->CCELL);
    geom->i_allocate(4,geom->NCCELLS+1,geom->ICCELL);
    // ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS',ERROR
    // ENDIF
    //
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1,output->WCOLLS);
    output->d_allocate(geom->NCELLS+1,output->CLSEP);
    output->d_allocate(gas->MNSR+1,output->SREAC);
    output->d_allocate(24,geom->NCELLS+1,output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1,output->VARSP);
    output->d_allocate(36+gas->MSP,3,output->VARS);
    output->d_allocate(10+gas->MSP,geom->NCELLS+1,gas->MSP+1,output->CS);
    output->d_allocate(9,3,gas->MSP+1,3,output->CSS);
    output->d_allocate(7,3,output->CSSS);
    
    // ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),SREAC(MNSR),VAR(23,NCELLS),VARSP(0:12,NCELLS,MSP),    &
    //           VARS(0:35+MSP,2),CS(0:9+MSP,NCELLS,MSP),CSS(0:8,2,MSP,2),CSSS(6,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS',ERROR
    // ENDIF
    //
    if(gas->MMVM >= 0){
        
        output->d_allocate(gas->MSP+1,gas->MMVM+1,151,output->VIBFRAC);
        output->d_allocate(gas->MSP+1,gas->MMVM+1,output->SUMVIB);
        // ALLOCATE (VIBFRAC(MSP,MMVM,0:150),SUMVIB(MSP,MMVM),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR RECOMBINATION ARRAYS',ERROR
        // ENDIF
    }
    //
    INITIALISE_SAMPLES();
    //
    //Set the initial cells
    
    for(N=1;N<=geom->NCELLS;N++){
        geom->CELL[2][N]=geom->XB[1]+double(N-1)*geom->DDIV;
        geom->CELL[3][N]=geom->CELL[2][N]+geom->DDIV;
        geom->CELL[1][N]=geom->CELL[2][N]+0.5e00*geom->DDIV;
        if(geom->IFX == 0) geom->CELL[4][N]=geom->CELL[3][N]-geom->CELL[2][N];    //calculation assumes unit cross-section
        if(geom->IFX == 1) geom->CELL[4][N]=PI*(pow(geom->CELL[3][N],2)-pow(geom->CELL[2][N],2));  //assumes unit length of full cylinder
        if(geom->IFX == 2) geom->CELL[4][N]=1.33333333333333333333e00*PI*(pow(geom->CELL[3][N],3)-pow(geom->CELL[2][N],3));    //flow is in the full sphere
        geom->ICELL[N]=geom->NCIS*(N-1);
        for(M=1;M<=geom->NCIS;M++){
            L=geom->ICELL[N]+M;
            XMIN=geom->CELL[2][N]+double(M-1)*geom->DDIV/double(geom->NCIS);
            XMAX=XMIN+geom->DDIV/double(geom->NCIS);
            if(geom->IFX == 0) geom->CCELL[1][L]=XMAX-XMIN;
            if(geom->IFX == 1) geom->CCELL[1][L]=PI*(pow(XMAX,2)-pow(XMIN,2));  //assumes unit length of full cylinder
            if(geom->IFX == 2) geom->CCELL[1][L]=1.33333333333333333333e00*PI*(pow(XMAX,3)-pow(XMIN,3));    //flow is in the full sphere
            geom->CCELL[2][L]=0.e00;
            geom->ICCELL[3][L]=N;
        }
        output->VAR[11][N]=gas->FTMP[1];
        output->VAR[8][N]=gas->FTMP[1];
    }
    //
    if(geom->IWF == 0) geom->AWF=1.e00;
    if(geom->IWF == 1){
        //FNUM must be reduced to allow for the weighting factors
        A=0.e00;
        B=0.e00;
        for(N=1;N<=geom->NCELLS;N++){
            A=A+geom->CELL[4][N];
            B=B+geom->CELL[4][N]/(1.0+geom->WFM*pow(geom->CELL[1][N],geom->IFX));
        }
        geom->AWF=A/B;
        calc->FNUM=calc->FNUM*B/A;
    }
    //
    //WRITE (9,*) 'FNUM is',FNUM
    file_9<<"FNUM is "<<calc->FNUM<<endl;
    //
    //set the information on the molecular species
    //
    A=0.e00;
    B=0.e00;
    for(L=1;L<=gas->MSP;L++){
        A=A+gas->SP[5][L]*gas->FSP[L][1];
        B=B+(3.0+gas->ISPR[1][L])*gas->FSP[L][1];
        gas->VMP[L][1]=sqrt(2.e00*BOLTZ*gas->FTMP[1]/gas->SP[5][L]);
        if((geom->ITYPE[2]== 0) || (calc->ISECS == 1)) gas->VMP[L][2]=sqrt(2.e00*BOLTZ*gas->FTMP[2]/gas->SP[5][L]);
        calc->VNMAX[L]=3.0*gas->VMP[L][1];
        if(L == 1)
            gas->VMPM=gas->VMP[L][1];
        else
            if(gas->VMP[L][1] > gas->VMPM) gas->VMPM=gas->VMP[L][1];
    }
    //WRITE (9,*) 'VMPM =',VMPM
    file_9<< "VMPM = "<<gas->VMPM<<endl;
    gas->FDEN=A*gas->FND[1];
    gas->FPR=gas->FND[1]*BOLTZ*gas->FTMP[1];
    gas->FMA=gas->VFX[1]/sqrt((B/(B+2.e00))*BOLTZ*gas->FTMP[1]/A);
    //set the molecular properties for collisions between unlike molecles
    //to the average of the molecules
    for(L=1;L<=gas->MSP;L++){
        for(M=1;M<=gas->MSP;M++){
            gas->SPM[4][L][M]=0.5e00*(gas->SP[1][L]+gas->SP[1][M]);
            gas->SPM[3][L][M]=0.5e00*(gas->SP[3][L]+gas->SP[3][M]);
            gas->SPM[5][L][M]=0.5e00*(gas->SP[2][L]+gas->SP[2][M]);
            gas->SPM[1][L][M]=gas->SP[5][L]*(gas->SP[5][M]/(gas->SP[5][L]+gas->SP[5][M]));
            gas->SPM[2][L][M]=0.25e00*PI*pow((gas->SP[1][L]+gas->SP[1][M]),2);
            AA=2.5e00-gas->SPM[3][L][M];
            A=tgamma(AA);
            gas->SPM[6][L][M]=1.e00/A;
            gas->SPM[8][L][M]=0.5e00*(gas->SP[4][L]+gas->SP[4][M]);
            if((gas->ISPR[1][L] > 0) && (gas->ISPR[1][M] > 0))
                gas->SPM[7][L][M]=(gas->SPR[1][L]+gas->SPR[1][M])*0.5e00;
            if((gas->ISPR[1][L] > 0) && (gas->ISPR[1][M] == 0))
                gas->SPM[7][L][M]=gas->SPR[1][L];
            if((gas->ISPR[1][M] > 0) && (gas->ISPR[1][L] == 0))
                gas->SPM[7][L][M]=gas->SPR[1][M];
        }
    }
    if(gas->MSP == 1){   //set unscripted variables for the simple gas case
        gas->RMAS=gas->SPM[1][1][1];
        gas->CXSS=gas->SPM[2][1][1];
        gas->RGFS=gas->SPM[6][1][1];
    }
    //
    for(L=1;L<=gas->MSP;L++){
        gas->CR[L]=0.e00;
        for(M=1;M<=gas->MSP;M++){   //set the equilibrium collision rates
            gas->CR[L]=gas->CR[L]+2.e00*SPI*pow(gas->SPM[4][L][M],2)*gas->FND[1]*gas->FSP[M][1]*pow((gas->FTMP[1]/gas->SPM[5][L][M]),(1.0-gas->SPM[3][L][M]))*sqrt(2.0*BOLTZ*gas->SPM[5][L][M]/gas->SPM[1][L][M]);
        }
    }
    A=0.e00;
    for(L=1;L<=gas->MSP;L++)
        A=A+gas->FSP[L][1]*gas->CR[L];
    gas->CTM=1.e00/A;
    //WRITE (9,*) 'Collision time in the stream is',CTM
    file_9<< "Collision time in the stream is "<<gas->CTM;
    //
    for(L=1;L<=gas->MSP;L++){
        gas->FP[L]=0.e00;
        for(M=1;M<=gas->MSP;M++){
            gas->FP[L]=gas->FP[L]+PI*pow(gas->SPM[4][L][M],2)*gas->FND[1]*gas->FSP[M][1]*pow((gas->FTMP[1]/gas->SPM[5][L][M]),(1.0-gas->SPM[3][L][M]))*sqrt(1.e00+gas->SP[5][L]/gas->SP[5][M]);
        }
        gas->FP[L]=1.e00/gas->FP[L];
    }
    gas->FPM=0.e00;
    for(L=1;L<=gas->MSP;L++)
        gas->FPM=gas->FPM+gas->FSP[L][1]*gas->FP[L];
    //WRITE (9,*) 'Mean free path in the stream is',FPM
    file_9<<"Mean free path in the stream is "<<gas->FPM<<endl;
    //
    calc->TNORM=gas->CTM;
    if(calc->ICLASS == 1) calc->TNORM= (geom->XB[2]-geom->XB[1])/gas->VMPM;     //there may be alternative definitions
    //
    //set the initial time step
    calc->DTM=gas->CTM*calc->CPDTM;
    //
    if(fabs(gas->VFX[1]) > 1.e-6)
        A=(0.5e00*geom->DDIV/gas->VFX[1])*calc->TPDTM;
    else
        A=0.5e00*geom->DDIV/gas->VMPM;
    
    if(geom->IVB == 1){
        B=0.25e00*geom->DDIV/(fabs(geom->VELOB)+gas->VMPM);
        if(B < A) A=B;
    }
    if(calc->DTM > A) calc->DTM=A;
    //
    calc->DTM=0.1e00*calc->DTM;   //OPTIONAL MANUAL ADJUSTMENT that is generally used with a fixed time step (e.g for making x-t diagram)
    //
    calc->DTSAMP=calc->SAMPRAT*calc->DTM;
    calc->DTOUT=calc->OUTRAT*calc->DTSAMP;
    calc->TSAMP=calc->DTSAMP;
    calc->TOUT=calc->DTOUT;
    calc->ENTMASS=0.0;
    //
    //WRITE (9,*) 'The initial value of the overall time step is',DTM
    file_9<< "The initial value of the overall time step is "<<calc->DTM<<endl;
    //
    //initialise cell quantities associated with collisions
    //
    for(N=1;N<=geom->NCCELLS;N++){
        geom->CCELL[3][N]=calc->DTM/2.e00;
        geom->CCELL[4][N]=2.e00*gas->VMPM*gas->SPM[2][1][1];
        calc->RANF=((double)rand()/(double)RAND_MAX);
        // RANDOM_NUMBER(RANF)
        geom->CCELL[2][N]=calc->RANF;
        geom->CCELL[5][N]=0.e00;
    }
    //
    //set the entry quantities
    //
    for(K=1;K<=2;K++){
        if((geom->ITYPE[K] == 0) || ((K == 2) && (geom->ITYPE[K] == 4))){
            if(geom->IFX == 0) EA=1.e00;
            if(geom->IFX == 1) EA=2.e00*PI*geom->XB[K];
            if(geom->IFX == 2) EA=4.e00*PI*pow(geom->XB[K],2);
            for(L=1;L<=gas->MSP;L++){
                if(K == 1) SN=gas->VFX[1]/gas->VMP[L][1];
                if(K == 2) SN=-gas->VFX[2]/gas->VMP[L][2];
                AA=SN;
                A=1.e00+erf(AA);
                BB=exp(-pow(SN,2));
                gas->ENTR[3][L][K]=SN;
                gas->ENTR[4][L][K]=SN+sqrt(pow(SN,2)+2.e00);
                gas->ENTR[5][L][K]=0.5e00*(1.e00+SN*(2.e00*SN-gas->ENTR[4][L][K]));
                gas->ENTR[6][L][K]=3.e00*gas->VMP[L][K];
                B=BB+SPI*SN*A;
                gas->ENTR[1][L][K]=EA*gas->FND[K]*gas->FSP[L][K]*gas->VMP[L][K]*B/(calc->FNUM*2.e00*SPI);
                gas->ENTR[2][L][K]=0.e00;
            }
        }
    }
    //
    //Set the uniform stream
    //
    molecs->MNM=1.1e00*calc->NMI;
    //
    if(gas->MMVM > 0){
        molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
        molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
        molecs->d_allocate(molecs->MNM+1,molecs->PROT);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
        molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
        molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
        molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
        molecs->i_allocate(gas->MMVM+1,molecs->MNM+1,molecs->IPVIB);
        molecs->d_allocate(molecs->MNM+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),     &
        //      IPVIB(MMVM,MNM),PELE(MNM),STAT=ERROR)
    }
    
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->d_allocate(molecs->MNM+1,molecs->PROT);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR MOLECULE ARRAYS',ERROR
    // ENDIF
    //
    molecs->NM=0;
    if(calc->IGS == 1){
        cout<<"Setting the initial gas"<<endl;
        for(L=1;L<=gas->MSP;L++){
            //memset(ROTE,0.0,sizeof(ROTE));
            for(int i=0;i<3;i++)
                ROTE[i]=0.0;
            for(K=1;K<=calc->ISECS+1;K++){
                if(calc->ISECS == 0){         //no secondary stream
                    M=(double(calc->NMI)*gas->FSP[L][1]*geom->AWF);
                    XMIN=geom->XB[1];
                    XMAX=geom->XB[2];
                }
                else{
                    A=(pow(geom->XS,geom->JFX)-pow(geom->XB[1],geom->JFX))*gas->FND[1]+(pow(geom->XB[2],geom->JFX)-pow(geom->XS,geom->JFX))*gas->FND[2];
                    if(K == 1){
                        M=int(double(calc->NMI)*((pow(geom->XS,geom->JFX)-pow(geom->XB[1],geom->JFX))*gas->FND[1]/A)*gas->FSP[L][1]);
                        XMIN=geom->XB[1];
                        XMAX=geom->XS;
                    }
                    else{
                        M=int(double(calc->NMI)*((pow(geom->XB[2],geom->JFX)-pow(geom->XS,geom->JFX))*gas->FND[2]/A)*gas->FSP[L][2]);
                        XMIN=geom->XS;
                        XMAX=geom->XB[2];
                    }
                }
                if((K == 1) || (calc->ISECS == 1)){
                    III=0;
                    WFMIN=1.e00+geom->WFM*pow(geom->XB[1],geom->IFX);
                    N=1;
                    INC=1;
                    if((K== 2) && (geom->JFX > 1)){
                        BBB=(pow(XMAX,geom->JFX)-pow(XMIN,geom->JFX))/double(M);
                        XPREV=XMIN;
                    }
                    while(N < M){
                        if((geom->JFX == 1) || (K == 1))
                            A=pow((pow(XMIN,geom->JFX)+((double(N)-0.5e00)/double(M))*pow((XMAX-XMIN),geom->JFX)),(1.e00/double(geom->JFX)));
                        else{
                            A=pow((pow(XPREV,geom->JFX)+BBB),(1.e00/double(geom->JFX)));
                            XPREV=A;
                        }
                        if(geom->IWF == 0)
                            B=1.e00;
                        else{
                            B=WFMIN/(1.e00+geom->WFM*pow(A,geom->IFX));
                            if((B < 0.1e00) && (INC == 1)) INC=10;
                            if((B < 0.01e00) && (INC == 10)) INC=100;
                            if((B < 0.001e00) && (INC == 100)) INC=1000;
                            if((B < 0.0001e00) && (INC == 1000)) INC=10000;
                        }
                        calc->RANF=((double)rand()/(double)RAND_MAX);
                        // CALL RANDOM_NUMBER(RANF)
                        if(B*double(INC) > calc->RANF){
                            molecs->NM=molecs->NM+1;
                            molecs->PX[1][molecs->NM]=A;
                            molecs->IPSP[molecs->NM]=L;
                            molecs->PTIM[molecs->NM]=0.0;
                            if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[1][molecs->NM],molecs->IPCELL[molecs->NM],KK);
                            if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[1][molecs->NM],molecs->IPCELL[molecs->NM],KK,molecs->PTIM[molecs->NM]);
                            //
                            for(NSET=1;NSET<=2;NSET++){
                                for(KK=1;KK<=3;KK++){
                                    RVELC(A,B,gas->VMP[L][K]);
                                    if(A < B){
                                        if(DMOM[KK] < 0.e00)
                                            BB=B;
                                        else
                                            BB=A;
                                    }           
                                    else{
                                        if(DMOM[KK] < 0.e00)
                                            BB=A;
                                        else
                                            BB=B;
                                    }
                                    VB[KK][NSET]=BB;
                                }
                                if(gas->ISPR[1][L] > 0) SROT(L,gas->FTMP[K],ROTE[NSET]);
                            }
                            A=(0.5e00*gas->SP[5][L]*(pow(VB[1][1],2)+pow(VB[2][1],2)+pow(VB[3][1],2))+ROTE[1])/(0.5e00*BOLTZ*gas->FTMP[K])-3.e00-double(gas->ISPR[1][L]);
                            B=(0.5e00*gas->SP[5][L]*(pow(VB[1][2],2)+pow(VB[2][2],2)+pow(VB[3][2],2))+ROTE[2])/(0.5e00*BOLTZ*gas->FTMP[K])-3.e00-double(gas->ISPR[1][L]);
                            if(A < B){
                                if(DENG < 0.e00)
                                    KN=2;
                                else
                                    KN=1;
                            }
                            else{
                                if(DENG < 0.e00)
                                    KN=1;
                                else
                                    KN=2;
                            }
                            
                            for(KK=1;KK<=3;KK++){
                                molecs->PV[KK][molecs->NM]=VB[KK][KN];
                                DMOM[KK]=DMOM[KK]+VB[KK][KN];
                            }
                            molecs->PV[1][molecs->NM]=molecs->PV[1][molecs->NM]+gas->VFX[K];
                            molecs->PV[2][molecs->NM]=molecs->PV[2][molecs->NM]+gas->VFY[K];
                            if(gas->ISPR[1][L] > 0) molecs->PROT[molecs->NM]=ROTE[KN];
                            //           PROT(NM)=0.d00       //uncomment for zero initial rotational temperature (Figs. 6.1 and 6.2)
                            if(KN == 1) DENG=DENG+A;
                            if(KN == 2) DENG=DENG+B;
                            if(gas->MMVM > 0){
                                if(gas->ISPV[L] > 0){
                                    for(J=1;J<=gas->ISPV[L];J++)
                                        SVIB(L,gas->FVTMP[K],molecs->IPVIB[J][molecs->NM],J);
                                }
                                ELTI=gas->FVTMP[K];
                                if(gas->MELE > 1) SELE(L,ELTI,molecs->PELE[molecs->NM]);
                            }
                        }
                        N=N+INC;
                    }
                }
            }
        }
        //
        //WRITE (9,*) 'DMOM',DMOM
        //WRITE (9,*) 'DENG',DENG
        file_9<<"DMOM "<<DMOM<<endl;
        file_9<<"DENG "<<DENG<<endl;
    }
    //
    calc->NMI=molecs->NM;
    //
    
    //SPECIAL CODING FOR INITIATION OF COMBUSION IN H2-02 MIXTURE (FORCED IGNITION CASES in section 6.7)
    //set the vibrational levels of A% random molecules to 5
    //  A=0.05D00
    //  M=0.01D00*A*NM
    //  DO N=1,M
    //    CALL RANDOM_NUMBER(RANF)
    //    K=INT(RANF*DFLOAT(NM))+1
    //    IPVIB(1,K)=5
    //  END DO
    //
    SAMPLE_FLOW();
    OUTPUT_RESULTS();
    calc->TOUT=calc->TOUT-calc->DTOUT;
    return;
}

void MOLECULES_ENTER_1D()
{
    //molecules enter boundary at XB(1) and XB(2) and may be removed behind a wave
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //GEOM_1D geom;
    //OUTPUT output;
    //
    int K,L,M,N,NENT,II,J,JJ,KK,NTRY;
    double A,B,AA,BB,U,VN,XI,X,DX,DY,DZ;
    //
    //NENT number to enter in the time step
    //
    calc->ENTMASS=0.e00;
    //
    for(J=1;J<=2;J++){     //J is the end
        if((geom->ITYPE[J] == 0) || (geom->ITYPE[J] == 4)){
            KK=1;//the entry surface will normally use the reference gas (main stream) properties
            if((J == 2) && (calc->ISECS == 1) && (geom->XB[2] > 0.e00)) KK=2;    //KK is 1 for reference gas 2 for the secondary stream
            for(L=1;L<=gas->MSP;L++){
                A=gas->ENTR[1][L][J]*calc->DTM+gas->ENTR[2][L][J];
                if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
                    NENT=A;
                    if(J == 1) calc->EME[L]=NENT;
                    if(J == 2) {
                        A=calc->ALOSS[L]-calc->EME[L]-calc->AJM[L];
                        calc->AJM[L]=0.e00;
                        if(A < 0.e00){
                            calc->AJM[L]=-A;
                            A=0.e00;
                        }
                    }
                }
                NENT=A;
                gas->ENTR[2][L][J]=A-NENT;
                if((geom->ITYPE[2] == 4) && (J == 2) && (calc->ICN == 1)) gas->ENTR[2][L][J]=0.e00;
                if(NENT > 0){
                    for(M=1;M<=NENT;M++){
                        if(molecs->NM >= molecs->MNM){
                            cout<< "EXTEND_MNM from MOLECULES_ENTER "<<endl;
                            EXTEND_MNM(1.1);
                        }
                        molecs->NM=molecs->NM+1;
                        AA=max(0.e00,gas->ENTR[3][L][J]-3.e00);
                        BB=max(3.e00,gas->ENTR[3][L][J]+3.e00);
                        II=0;
                        while(II == 0){
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            // CALL RANDOM_NUMBER(RANF)
                            B=AA+(BB-AA)*calc->RANF;
                            U=B-gas->ENTR[3][L][J];
                            A=(2.e00*B/gas->ENTR[4][L][J])*exp(gas->ENTR[5][L][J]-U*U);
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            // CALL RANDOM_NUMBER(RANF)
                            if(A > calc->RANF) II=1;
                        }
                        molecs->PV[1][molecs->NM]=B*gas->VMP[L][KK];
                        if(J == 2) molecs->PV[1][molecs->NM]=-molecs->PV[1][molecs->NM];
                        //
                        RVELC(molecs->PV[2][molecs->NM],molecs->PV[3][molecs->NM],gas->VMP[L][KK]);
                        molecs->PV[2][molecs->NM]=molecs->PV[2][molecs->NM]+gas->VFY[J];
                        //
                        if(gas->ISPR[1][L] > 0) SROT(L,gas->FTMP[KK],molecs->PROT[molecs->NM]);
                        //
                        if(gas->MMVM > 0){
                            for(K=1;K<=gas->ISPV[L];K++)
                                SVIB(L,gas->FVTMP[KK],molecs->IPVIB[K][molecs->NM],K);
                        }
                        if(gas->MELE > 1) SELE(L,gas->FTMP[KK],molecs->PELE[molecs->NM]);
                        //
                        if(molecs->PELE[molecs->NM] > 0.e00)
                            continue;                     //DEBUG
                        //
                        molecs->IPSP[molecs->NM]=L;
                        //advance the molecule into the flow
                        calc->RANF=((double)rand()/(double)RAND_MAX);
                        // CALL RANDOM_NUMBER(RANF)
                        XI=geom->XB[J];
                        DX=calc->DTM*calc->RANF*molecs->PV[1][molecs->NM];
                        if((geom->IFX == 0) || (J == 2)) X=XI+DX;
                        if(J == 1){   //1-D move at outer boundary so molecule remains in flow
                            if(geom->IFX > 0) DY=calc->DTM*calc->RANF*molecs->PV[2][molecs->NM];
                            DZ=0.e00;
                            if(geom->IFX == 2) DZ=calc->DTM*calc->RANF*molecs->PV[3][molecs->NM];
                            if(geom->IFX > 0) AIFX(XI,DX,DY,DZ,X,molecs->PV[1][molecs->NM],molecs->PV[2][molecs->NM],molecs->PV[3][molecs->NM]);
                        }
                        molecs->PX[calc->NCLASS][molecs->NM]=X;
                        molecs->PTIM[molecs->NM]=calc->FTIME;
                        if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[calc->NCLASS][molecs->NM],molecs->IPCELL[molecs->NM],JJ);
                        if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[calc->NCLASS][molecs->NM],molecs->IPCELL[molecs->NM],JJ,molecs->PTIM[molecs->NM]);
                        molecs->IPCP[molecs->NM]=0;
                        if(geom->XREM > geom->XB[1]) calc->ENTMASS=calc->ENTMASS+gas->SP[5][L];
                    }
                }
            }
            if((geom->ITYPE[2] == 4) && (J==2) && (molecs->NM != calc->NMP) && (calc->ICN == 1))
                continue;
        }
    }
    //
    //stagnation streamline molecule removal
    if(geom->XREM > geom->XB[1]){
        calc->ENTMASS=geom->FREM*calc->ENTMASS;
        NTRY=0;
        calc->ENTMASS=calc->ENTMASS+calc->ENTREM;
        while((calc->ENTMASS > 0.e00) && (NTRY < 10000)){
            NTRY=NTRY+1;
            if(NTRY == 10000){
                cout<<"Unable to find molecule for removal"<<endl;
                calc->ENTMASS=0.e00;
                //memset(calc->VNMAX,0.e00,sizeof(*calc->VNMAX));//calc->VNMAX=0.e00;
                for(int i=0;i<gas->MSP+1;i++)
                    calc->VNMAX[i]=0.e00;
            }
            calc->RANF=((double)rand()/(double)RAND_MAX);
            // CALL RANDOM_NUMBER(RANF)
            N=molecs->NM*calc->RANF+0.9999999e00;
            if(molecs->PX[calc->NCLASS][N] > geom->XREM){
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                //IF (RANF < ((PX(N)-XREM)/(XB(2)-XREM))**2) THEN
                if(fabs(gas->VFY[1]) < 1.e-3)
                    VN=sqrt(molecs->PV[2][N]*molecs->PV[2][N]+molecs->PV[3][N]*molecs->PV[3][N]);   //AXIALLY SYMMETRIC STREAMLINE
                else
                    VN=fabs(molecs->PV[3][N]);   //TWO-DIMENSIONAL STREAMLINE
                
                L=molecs->IPSP[N];
                if(VN > calc->VNMAX[L]) calc->VNMAX[L]=VN;
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                if(calc->RANF < VN/calc->VNMAX[L]){
                    REMOVE_MOL(N);
                    calc->ENTMASS=calc->ENTMASS-gas->SP[5][L];
                    NTRY=0;
                }
                //END IF
            }
        }
        calc->ENTREM=calc->ENTMASS;
    }
}

void FIND_CELL_1D(double &X,int &NCC,int &NSC)
{
    //find the collision and sampling cells at a givem location in a 0D or 1D case
    //MOLECS molecs;
    //GEOM_1D geom;
    //CALC calc;
    
    int N,L,M,ND;
    double FRAC,DSC;
    //
    //NCC collision cell number
    //NSC sampling cell number
    //X location
    //ND division number
    //DSC the ratio of the sub-division width to the division width
    //
    ND=(X-geom->XB[1])/geom->DDIV+0.99999999999999e00;
    //
    if(geom->JDIV[0][ND] < 0){    //the division is a level 0 (no sub-division) sampling cell
        NSC=-geom->JDIV[0][ND];
        //  IF (IFX == 0)
        NCC=geom->NCIS*(X-geom->CELL[2][NSC])/(geom->CELL[3][NSC]-geom->CELL[2][NSC])+0.9999999999999999e00;
        NCC=NCC+geom->ICELL[NSC];
        //  IF (NCC == 0) NCC=1
        return;
    }
    else{  //the molecule is in a subdivided division
        FRAC=(X-geom->XB[1])/geom->DDIV-double(ND-1);
        M=ND;
        for(N=1;N<=geom->ILEVEL;N++){
            DSC=1.e00/double(N+1);
            for(L=1;L<=2;L++){  //over the two level 1 subdivisions
                if(((L == 1) && (FRAC < DSC)) || ((L == 2) || (FRAC >= DSC))){
                    M=geom->JDIV[N-1][M]+L;  //the address in JDIV
                    if(geom->JDIV[N][M] < 0){
                        NSC=-geom->JDIV[N][M];
                        NCC=geom->NCIS*(X-geom->CELL[2][NSC])/(geom->CELL[3][NSC]-geom->CELL[2][NSC])+0.999999999999999e00;
                        if(NCC == 0) NCC=1;
                        NCC=NCC+geom->ICELL[NSC];
                        return;
                    }
                }
            }
            FRAC=FRAC-DSC;
        }
    }
    file_9<<"No cell for molecule at x= "<<X<<endl;
    return ;
}

void FIND_CELL_MB_1D(double &X,int &NCC,int &NSC,double &TIM)
{
    //find the collision and sampling cells at a givem location in a 0D or 1D case
    //when there is a moving boundary
    //MOLECS molecs;
    //GEOM_1D geom;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int N,L,M,ND;
    double FRAC,DSC,A,B,C;
    //
    //NCC collision cell number
    //NSC sampling cell number
    //X location
    //ND division number
    //DSC the ratio of the sub-division width to the division width
    //TIM the time
    //
    A=(geom->XB[2]+geom->VELOB*TIM-geom->XB[1])/double(geom->NDIV);      //new DDIV
    ND=(X-geom->XB[1])/A+0.99999999999999e00;
    B=geom->XB[1]+double(ND-1)*A;
    //
    //the division is a level 0 sampling cell
    NSC=-geom->JDIV[0][ND];
    NCC=geom->NCIS*(X-B)/A+0.99999999999999e00;
    NCC=NCC+geom->ICELL[NSC];
    
    //WRITE (9,*) 'No cell for molecule at x=',X
    file_9<< "No cell for molecule at x= "<<X<<endl;
    return;
    //return ;
    //
}

void RVELC(double &U,double &V,double &VMP)
{
    //CALC calc;
    //generates two random velocity components U and V in an equilibrium
    //gas with most probable speed VMP
    //based on equations (4.4) and (4.5)
    double A,B;
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    A=sqrt(-log(calc->RANF));
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    B=DPI*calc->RANF;
    U=A*sin(B)*VMP;
    V=A*cos(B)*VMP;
    return;
}

void SROT(int &L,double &TEMP,double &ROTE)
{
    //sets a typical rotational energy ROTE of species L
    //CALC calc;
    //GAS gas;
    //
    // IMPLICIT NONE
    //
    int I;
    double A,B,ERM;
    //
    if(gas->ISPR[1][L] == 2){
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        ROTE=-log(calc->RANF)*BOLTZ*TEMP;   //equation (4.8)
    }
    else{
        A=0.5e00*gas->ISPR[1][L]-1.e00;
        I=0;
        while(I == 0){
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            ERM=calc->RANF*10.e00;
            //there is an energy cut-off at 10 kT
            B=(pow((ERM/A),A))*exp(A-ERM);      //equation (4.9)
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            if(B > calc->RANF) I=1;
        }
        ROTE=ERM*BOLTZ*TEMP;
    }
    return;
}

void SVIB(int &L,double &TEMP,int &IVIB, int &K)
{
    //sets a typical vibrational state at temp. TEMP of mode K of species L
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int N;
    //    double TEMP;
    //    int IVIB;
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    N=-log(calc->RANF)*TEMP/gas->SPVM[1][K][L];                 //eqn(4.10)
    //the state is truncated to an integer
    IVIB=N;
}

void SELE(int &L,double &TEMP, double &ELE)
{
    //sets a typical electronic energy at temp. TEMP of species L
    //employs direct sampling from the Boltzmann distribution
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,N;
    double EPF,A,B;
    double CTP[20];
    //
    //ELE electronic energy of a molecule
    //EPF electronic partition function
    //CTP(N) contribution of electronic level N to the electronic partition function
    //
    if(TEMP > 0.1){
        EPF=0.e00;
        for(N=1;N<=gas->NELL[L];N++)
            EPF=EPF+gas->QELC[1][N][L]*exp(-gas->QELC[2][N][L]/TEMP) ;
        //
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        //
        A=0.0;
        K=0; //becomes 1 when the energy is set
        N=0;  //level
        while(K == 0){
            N=N+1;
            A=A+gas->QELC[1][N][L]*exp(-gas->QELC[2][N][L]/TEMP);
            B=A/EPF;
            if(calc->RANF < B){
                K=1;
                ELE=BOLTZ*gas->QELC[2][N][L];
            }
        }
    }
    else
        ELE=0.e00;
    
    //
}

void CQAX(double &A,double &X,double &GAX)
{
    //calculates the function Q(a,x)=Gamma(a,x)/Gamma(a)
    //
    // IMPLICIT NONE
    double G,DT,T,PV,V;
    int NSTEP,N;
    //
    G=tgamma(A);
    //
    if(X < 10.e00){       //direct integration
        NSTEP=100000;
        DT=X/double(NSTEP);
        GAX=0.e00;
        PV=0.e00;
        for(N=1;N<=NSTEP;N++){
            T=double(N)*DT;
            V=exp(-T)*pow(T,(A-1));
            GAX=GAX+(PV+V)*DT/2.e00;
            PV=V;
        }
        GAX=1.e00-GAX/G;
    }
    else{      //asymptotic formula
        GAX=pow(X,(A-1.e00))*exp(-X)*(1.0+(A-1.e00)/X+(A-1.e00)*(A-2.e00)/pow(X,2)+(A-1.e00)*(A-2.e00)*(A-3.e00)/pow(X,3)+(A-1.e00)*(A-2.e00)*(A-3.e00)*(A-4.e00)/pow(X,4));
        GAX=GAX/G;
    }
    //
    return;
}
//*****************************************************************************
//
void LBS(double XMA,double XMB,double &ERM)
{
    //selects a Larsen-Borgnakke energy ratio using eqn (11.9)
    //
    double PROB,RANF;
    int I,N;
    //
    //I is an indicator
    //PROB is a probability
    //ERM ratio of rotational to collision energy
    //XMA degrees of freedom under selection-1
    //XMB remaining degrees of freedom-1
    //
    I=0;
    while(I == 0){
        // CALL RANDOM_NUMBER(RANF)
        RANF=((double)rand()/(double)RAND_MAX);
        ERM=RANF;
        if((XMA < 1.e-6) || (XMB < 1.e-6)){
            //    IF (XMA < 1.E-6.AND.XMB < 1.E-6) RETURN
            //above can never occur if one mode is translational
            if(XMA < 1.e-6) PROB=pow((1.e00-ERM),XMB);
            if(XMB < 1.e-6) PROB=pow((1.e00-ERM),XMA);
        }
        else
            PROB=pow(((XMA+XMB)*ERM/XMA),XMA)*pow(((XMA+XMB)*(1.e00-ERM)/XMB),XMB);
        
        // CALL RANDOM_NUMBER(RANF)
        RANF=((double)rand()/(double)RAND_MAX);
        if(PROB > RANF) I=1;
    }
    //
    return;
}

void REFLECT_1D(int &N,int J,double &X)
{
    //reflects molecule N and samples the surface J properties
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int L,K,M;
    double A,B,VMPS,DTR,XI,DX,DY,DZ,WF;
    //
    //VMPS most probable velocity at the surface temperature
    //DTR time remaining after molecule hits a surface
    //
    L=molecs->IPSP[N];
    WF=1.e00;
    if(geom->IWF == 1) WF=1.e00+geom->WFM*pow(X,geom->IFX);
    output->CSS[0][J][L][1]=output->CSS[0][J][L][1]+1.e00;
    output->CSS[1][J][L][1]=output->CSS[1][J][L][1]+WF;
    output->CSS[2][J][L][1]=output->CSS[2][J][L][1]+WF*molecs->PV[1][N]*gas->SP[5][L];
    output->CSS[3][J][L][1]=output->CSS[3][J][L][1]+WF*(molecs->PV[2][N]-gas->VSURF[J])*gas->SP[5][L];
    output->CSS[4][J][L][1]=output->CSS[4][J][L][1]+WF*molecs->PV[3][N]*gas->SP[5][L];
    A=pow(molecs->PV[1][N],2)+pow((molecs->PV[2][N]-gas->VSURF[J]),2)+pow(molecs->PV[3][N],2);
    output->CSS[5][J][L][1]=output->CSS[5][J][L][1]+WF*0.5e00*gas->SP[5][L]*A;
    if(gas->ISPR[1][L] > 0) output->CSS[6][J][L][1]=output->CSS[6][J][L][1]+WF*molecs->PROT[N];
    if(gas->MELE > 1) output->CSS[8][J][L][1]=output->CSS[8][J][L][1]+WF*molecs->PELE[N];
    if(gas->MMVM > 0){
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                output->CSS[7][J][L][1]=output->CSS[7][J][L][1]+WF*double(molecs->IPVIB[K][N])*BOLTZ*gas->SPVM[1][K][L];
        }
    }
    A=pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2);
    B=fabs(molecs->PV[1][N]);
    output->CSSS[1][J]=output->CSSS[1][J]+WF/B;
    output->CSSS[2][J]=output->CSSS[2][J]+WF*gas->SP[5][L]/B;
    output->CSSS[3][J]=output->CSSS[3][J]+WF*gas->SP[5][L]*molecs->PV[2][N]/B;
    //this assumes that any flow normal to the x direction is in the y direction
    output->CSSS[4][J]=output->CSSS[4][J]+WF*gas->SP[5][L]*A/B;
    if(gas->ISPR[1][L] > 0){
        output->CSSS[5][J]=output->CSSS[5][J]+WF*molecs->PROT[N]/B;
        output->CSSS[6][J]=output->CSSS[6][J]+WF*gas->ISPR[1][L]/B;
    }
    //
    // CALL RANDOM_NUMBER(RANF)
    calc->RANF=((double)rand()/(double)RAND_MAX);
    if(gas->FSPEC[J] > calc->RANF){      //specular reflection
        X=2.e00*geom->XB[J]-X;
        molecs->PV[1][N]=-molecs->PV[1][N];
        DTR=(X-geom->XB[J])/molecs->PV[1][N];
    }
    else{                         //diffuse reflection
        VMPS=sqrt(2.e00*BOLTZ*gas->TSURF[J]/gas->SP[5][L]);
        DTR=(geom->XB[J]-molecs->PX[1][N])/molecs->PV[1][N];
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        molecs->PV[1][N]=sqrt(-log(calc->RANF))*VMPS;
        if(J == 2) molecs->PV[1][N]=-molecs->PV[1][N];
        RVELC(molecs->PV[2][N],molecs->PV[3][N],VMPS);
        molecs->PV[2][N]=molecs->PV[2][N]+gas->VSURF[J];
        if(gas->ISPR[1][L] > 0) SROT(L,gas->TSURF[J],molecs->PROT[N]);
        if(gas->MMVM > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                SVIB(L,gas->TSURF[J],molecs->IPVIB[K][N],K);
        }
        if(gas->MELE > 1) SELE(L,gas->TSURF[J],molecs->PELE[N]);
    }
    //
    output->CSS[2][J][L][2]=output->CSS[2][J][L][2]-WF*molecs->PV[1][N]*gas->SP[5][L];
    output->CSS[3][J][L][2]=output->CSS[3][J][L][2]-WF*(molecs->PV[2][N]-gas->VSURF[J])*gas->SP[5][L];
    output->CSS[4][J][L][2]=output->CSS[4][J][L][2]-WF*molecs->PV[3][N]*gas->SP[5][L];
    A=pow(molecs->PV[1][N],2)+pow((molecs->PV[2][N]-gas->VSURF[J]),2)+pow(molecs->PV[3][N],2);
    output->CSS[5][J][L][2]=output->CSS[5][J][L][2]-WF*0.5e00*gas->SP[5][L]*A;
    if(gas->ISPR[1][L] > 0) output->CSS[6][J][L][2]=output->CSS[6][J][L][2]-WF*molecs->PROT[N];
    if(gas->MELE > 1) output->CSS[8][J][L][2]=output->CSS[8][J][L][2]-WF*molecs->PELE[N];
    if(gas->MMVM > 0){
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++)
                output->CSS[7][J][L][2]=output->CSS[7][J][L][2]-WF*double(molecs->IPVIB[K][N])*BOLTZ*gas->SPVM[1][K][L];
        }
    }
    A=pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2);
    B=fabs(molecs->PV[1][N]);
    output->CSSS[1][J]=output->CSSS[1][J]+WF/B;
    output->CSSS[2][J]=output->CSSS[2][J]+WF*gas->SP[5][L]/B;
    output->CSSS[3][J]=output->CSSS[3][J]+WF*gas->SP[5][L]*molecs->PV[2][N]/B;
    //this assumes that any flow normal to the x direction is in the y direction
    output->CSSS[4][J]=output->CSSS[4][J]+WF*gas->SP[5][L]*A/B;
    if(gas->ISPR[1][L] > 0){
        output->CSSS[5][J]=WF*output->CSSS[5][J]+molecs->PROT[N]/B;
        output->CSSS[6][J]=output->CSSS[6][J]+WF*gas->ISPR[1][L]/B;
    }
    //
    XI=geom->XB[J];
    DX=DTR*molecs->PV[1][N];
    DZ=0.e00;
    if(geom->IFX > 0) DY=DTR*molecs->PV[2][N];
    if(geom->IFX == 2) DZ=DTR*molecs->PV[3][N];
    if(geom->IFX == 0) X=XI+DX;
    if(geom->IFX > 0) AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
    //
    return;
}

void RBC(double &XI, double &DX, double &DY,double &DZ, double &R,double &S)
{
    //calculates the trajectory fraction S from a point at radius XI with
    //note that the axis is in the y direction
    //--displacements DX, DY, and DZ to a possible intersection with a
    //--surface of radius R, IFX=1, 2 for cylindrical, spherical geometry
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    double A,B,C,DD,S1,S2;
    //
    DD=DX*DX+DZ*DZ;
    if(geom->IFX == 2) DD=DD+DY*DY;
    B=XI*DX/DD;
    C=(XI*XI-R*R)/DD;
    A=B*B-C;
    if(A >= 0.e00){
        //find the least positive solution to the quadratic
        A=sqrt(A);
        S1=-B+A;
        S2=-B-A;
        if(S2 < 0.e00){
            if(S1 > 0.e00)
                S=S1;
            else
                S=2.e00;
        }
        else if(S1 < S2)
            S=S1;
        else
            S=S2;
    }
    else
        S=2.e00;
    //setting S to 2 indicates that there is no intersection
    return;
    //
}

void AIFX(double &XI,double &DX, double &DY, double &DZ, double &X, double &U, double &V, double &W)
{
    //
    //calculates the new radius and realigns the velocity components in
    //--cylindrical and spherical flows
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    //INTEGER ::
    double A,B,C,DR,VR,S;
    //
    if(geom->IFX == 1){
        DR=DZ;
        VR=W;
    }
    else if(geom->IFX == 2){
        DR=sqrt(DY*DY+DZ*DZ);
        VR=sqrt(V*V+W*W);
    }
    A=XI+DX;
    X=sqrt(A*A+DR*DR);
    S=DR/X;
    C=A/X;
    B=U;
    U=B*C+VR*S;
    W=-B*S+VR*C;
    if(geom->IFX == 2){
        VR=W;
        // CALL RANDOM_NUMBER(RANF)
        calc->RANF=((double)rand()/(double)RAND_MAX);
        A=DPI*calc->RANF;
        V=VR*sin(A);
        W=VR*cos(A);
    }
    //
    return;
    //
}

void REMOVE_MOL(int &N)
{
    //remove molecule N and replaces it by NM
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    // IMPLICIT NONE
    //
    int NC,M,K;
    
    //N the molecule number
    //M,K working integer
    //
    if(N != molecs->NM){
        for(M=1;M<=calc->NCLASS;M++)
            molecs->PX[M][N]=molecs->PX[M][molecs->NM];
        for(M=1;M<=3;M++)
            molecs->PV[M][N]=molecs->PV[M][molecs->NM];
        
        if(gas->MMRM > 0) molecs->PROT[N]=molecs->PROT[molecs->NM];
        molecs->IPCELL[N]=fabs(molecs->IPCELL[molecs->NM]);
        molecs->IPSP[N]=molecs->IPSP[molecs->NM];
        molecs->IPCP[N]=molecs->IPCP[molecs->NM];
        if(gas->MMVM > 0){
            for(M=1;M<=gas->MMVM;M++)
                molecs->IPVIB[M][N]=molecs->IPVIB[M][molecs->NM];
        }
        if(gas->MELE > 1) molecs->PELE[N]=molecs->PELE[molecs->NM];
        molecs->PTIM[N]=molecs->PTIM[molecs->NM];
    }
    molecs->NM=molecs->NM-1;
    //
    return;
    //
}

void INDEX_MOLS()
{
    //index the molecules to the collision cells
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    // IMPLICIT NONE
    //
    int N,M,K;
    //
    //N,M,K working integer
    //
    for(N=1;N<=geom->NCCELLS;N++)
        geom->ICCELL[2][N]=0;
    //
    if(molecs->NM != 0){
        for(N=1;N<=molecs->NM;N++){
            M=molecs->IPCELL[N];
            geom->ICCELL[2][M]=geom->ICCELL[2][M]+1;
        }
        //

        M=0;
        for(N=1;N<=geom->NCCELLS;N++){
            geom->ICCELL[1][N]=M;
            M=M+geom->ICCELL[2][N];
            geom->ICCELL[2][N]=0;
        }
        //

        for(N=1;N<=molecs->NM;N++){
            M=molecs->IPCELL[N];
            geom->ICCELL[2][M]=geom->ICCELL[2][M]+1;
            K=geom->ICCELL[1][M]+geom->ICCELL[2][M];
            molecs->ICREF[K]=N;
        }
        //cin.get();
        //
    }
    return;
}

void SAMPLE_FLOW()
{
    //sample the flow properties
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int NC,NCC,LS,N,M,K,L,I,KV;
    double A,TE,TT,WF;
    //
    //NC the sampling cell number
    //NCC the collision cell number
    //LS the species code
    //N,M,K working integers
    //TE total translational energy
    //
    output->NSAMP=output->NSAMP+1;
    cout<<"Sample \t"<<output->NSAMP<<endl<<endl;
    //WRITE (9,*) NM,'Mols. at sample',NSAMP
    file_9<<molecs->NM<<"  Mols. at sample  "<<output->NSAMP<<endl;
    //
    for(N=1;N<=molecs->NM;N++){
        
        NCC=molecs->IPCELL[N];
        NC=geom->ICCELL[3][NCC];
        WF=1.e00;
        if(geom->IWF == 1) WF=1.e00+geom->WFM*pow(molecs->PX[1][N],geom->IFX);
        if((NC > 0) && (NC <= geom->NCELLS)){
            if(gas->MSP > 1)
                LS=fabs(molecs->IPSP[N]);
            else
                LS=1;
            
            output->CS[0][NC][LS]=output->CS[0][NC][LS]+1.e00;
            output->CS[1][NC][LS]=output->CS[1][NC][LS]+WF;
            for(M=1;M<=3;M++){
                output->CS[M+1][NC][LS]=output->CS[M+1][NC][LS]+WF*molecs->PV[M][N];
                output->CS[M+4][NC][LS]=output->CS[M+4][NC][LS]+WF*pow(molecs->PV[M][N],2);
            }
            if(gas->MMRM > 0) output->CS[8][NC][LS]=output->CS[8][NC][LS]+WF*molecs->PROT[N];
            if(gas->MELE > 1) output->CS[9][NC][LS]=output->CS[9][NC][LS]+WF*molecs->PELE[N];
            if(gas->MMVM > 0){
                if(gas->ISPV[LS] > 0){
                    for(K=1;K<=gas->ISPV[LS];K++)
                        output->CS[K+9][NC][LS]=output->CS[K+9][NC][LS]+WF*double(molecs->IPVIB[K][N]);
                }
            }
        }
        else{
            cout<<"Illegal sampling cell  "<<NC<<"  "<<NCC<<"  for MOL  "<<N<<"  at  "<<molecs->PX[1][N]<<endl;
            return;
        }
        
    }
    //
    if(calc->FTIME > 0.5e00*calc->DTM) calc->TSAMP=calc->TSAMP+calc->DTSAMP;
    //
    return;
}

void ADAPT_CELLS_1D()
{
    //adapt the sampling cells through the splitting of the divisions into successive levels
    //the collision cells are divisions of the sampling cells
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int M,N,L,K,KK,I,J,JJ,MSEG,NSEG,NSEG1,NSEG2,MLEVEL;
    double A,B,DDE,DCRIT;
    int *KDIV,*NC;
    int **ISD;
    double *XMIN,*XMAX,*DRAT;
    // INTEGER, ALLOCATABLE, DIMENSION(:) :: KDIV,NC
    // INTEGER, ALLOCATABLE, DIMENSION(:,:) :: ISD
    // REAL(KIND=8), ALLOCATABLE, DIMENSION(:) :: XMIN,XMAX,DRAT
    //
    //DCRIT  the number density ratio that causes a cell to be subdivided
    //KDIV(N) the number of divisions/subdivisions (cells or further subdivisions) at level N
    //DRAT(N) the contriburion to the density ratio of element N
    //NC(I) the number of sampling cells at level I
    //DDE the width of an element
    //MSEG the maximum number of segments (a segment is the size of the smallest subdivision
    //NSEG1 the (first segment-1) in the subdivision
    //NSEG2 the final segment in the subdivision
    //ISD(N,M) 0,1 for cell,subdivided for level N subdivision
    //MLEVEL The maximum desired level ILEVEL of subdivision (cellS are proportional to 2**ILEVEL)
    //
    DCRIT=1.5e00;    //may be altered
    MLEVEL=2;    //may be altered
    //
    //determine the level to which the divisions are to be subdivided
    //
    A=1.e00;
    for(N=1;N<=geom->NCELLS;N++)
        if(output->VAR[3][N]/gas->FND[1] > A) A=output->VAR[3][N]/gas->FND[1];
    
    geom->ILEVEL=0;
    while(A > DCRIT){
        geom->ILEVEL=geom->ILEVEL+1;
        A=A/2.e00;
    }
    if(geom->ILEVEL > MLEVEL) geom->ILEVEL=MLEVEL;
    //WRITE (9,*) 'ILEVEL =',ILEVEL
    file_9<<"ILEVEL = "<<geom->ILEVEL<<endl;
    NSEG=pow(2,geom->ILEVEL);
    MSEG=geom->NDIV*NSEG;
    //
    
    KDIV = new int[geom->ILEVEL+1];
    DRAT = new double[MSEG+1];
    NC = new int[geom->ILEVEL+1];
    
    ISD = new int*[geom->ILEVEL+1];
    for(int i =0; i< (geom->ILEVEL+1); ++i)
        ISD[i] = new int[MSEG+1];
    
    
    // ALLOCATE (KDIV(0:ILEVEL),DRAT(MSEG),NC(0:ILEVEL),ISD(0:ILEVEL,MSEG),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR KDIV ARRAY',ERROR
    // ENDIF
    //
    DDE=(geom->XB[2]-geom->XB[1])/double(MSEG);
    for(N=1;N<=MSEG;N++){
        A=geom->XB[1]+(double(N)-0.5e00)*DDE;
        FIND_CELL_1D(A,M,L);
        DRAT[N]=output->VAR[3][L]/(gas->FND[1]*double(NSEG));
    }
    //
    //calculate the number of subdivisions at the various levels of subdivision
    KDIV=0;
    //also the number of sampling cells at each level
    NC=0;
    //
    for(N=1;N<=geom->NDIV;N++){  //divisions
        ISD=0;
        ISD[0][1]=1;
        KDIV[0]=KDIV[0]+1;
        //  WRITE (9,*) 'DIVISION',N
        for(I=0;I<=geom->ILEVEL;I++){  //level of subdivision
            //    WRITE (9,*) 'LEVEL',I
            J=pow(2,I);  //number of possible subdivisions at this level
            JJ=NSEG/J;  //number of segments in a subdivision
            for(M=1;M<=J;M++){
                //      WRITE (9,*) 'SUBDIVISION',M
                if(ISD[I][M] == 1){
                    NSEG1=(N-1)*NSEG+(M-1)*JJ+1;
                    NSEG2=NSEG1+JJ-1;
                    A=0.e00;
                    //        WRITE (9,*) 'NSEG RANGE',NSEG1,NSEG2
                    for(L=NSEG1;L<=NSEG2;L++)
                        A=A+DRAT[L];
                    
                    //        WRITE (9,*) 'DENS CONTRIB',A
                    if(A < DCRIT){
                        NC[I]=NC[I]+1;
                        //          WRITE (9,*) 'LEVEL',I,' CELLS TO', NC(I)
                    }
                    else{
                        KDIV[I+1]=KDIV[I+1]+2;
                        //          WRITE (9,*) 'LEVEL',I+1,' SUBDIVISIONS TO',KDIV(I+1)
                        for(L=NSEG1-(N-1)*NSEG;L<=NSEG2-(N-1)*NSEG;L++)
                            ISD[I+1][L]=1;
                        
                    }
                }
            }
        }
    }
    //
    //WRITE (9,*) 'KDIV',KDIV
    file_9<<"KDIV "<<KDIV<<endl;
    //
    //WRITE (9,*) 'NC',NC
    file_9<< "NC "<<NC<<endl;
    cin.get();
    //WRITE (9,*) 'Number of divisions',NDIV
    file_9<<"Number of divisions "<<geom->NDIV<<endl;
    A=0;
    geom->NCELLS=0;
    for(N=0;N<=geom->ILEVEL;N++){
        A=A+double(NC[N])/(pow(2.e00,N));
        geom->NCELLS=geom->NCELLS+NC[N];
    }
    //WRITE (9,*) 'Total divisions from sampling cells',A
    //WRITE (9,*) 'Adapted sampling cells',NCELLS
    file_9<< "Total divisions from sampling cells "<<A<<endl;
    file_9<< "Adapted sampling cells "<<geom->NCELLS<<endl;
    geom->NCCELLS=geom->NCELLS*geom->NCIS;
    //WRITE (9,*) 'Adapted collision cells',NCCELLS
    file_9<< "Adapted collision cells "<<geom->NCCELLS<<endl;
    //
    
    for (int i = 0; i < geom->ILEVEL+1; i++) {
        hipFree(geom->JDIV[i]); //delete [] geom->JDIV[i];
    }
    hipFree(geom->JDIV); //delete [] geom->JDIV;  // <- because they won't exist anymore after this
    
    for (int i = 0; i < 5; i++) {
        hipFree(geom->CELL[i]); //delete [] geom->CELL[i];
    }
    hipFree(geom->CELL); //delete [] geom->CELL;  // <- because they won't exist anymore after this
    
    
    hipFree(geom->ICELL); //delete[] geom->ICELL;
    
    for (int i = 0; i < 6; i++) {
        hipFree(geom->CCELL[i]); //delete [] geom->CCELL[i];
    }
    hipFree(geom->CCELL); //delete [] geom->CCELL;  // <- because they won't exist anymore after this
    
    for (int i = 0; i < 4; i++) {
        hipFree(geom->ICCELL[i]); //delete [] geom->ICCELL[i];
    }
    hipFree(geom->ICCELL); //delete [] geom->ICCELL;  // <- because they won't exist anymore after this
    
    hipFree(output->COLLS);  //delete[] output->COLLS;
    
    hipFree(output->WCOLLS); //delete[] output->WCOLLS;
    
    hipFree(output->CLSEP); //delete[] output->CLSEP;
    
    for (int i = 0; i < 24; i++) {
        hipFree(output->VAR[i]); //delete [] output->VAR[i];
    }
    hipFree(output->VAR); //delete [] output->VAR;  // <- because they won't exist anymore after this
    
    
    for(int i = 0; i < 13; i++)
    {
        for(int j = 0; j < geom->NCELLS+1; j++)
        {
            hipFree(output->VARSP[i][j]); //delete [] output->VARSP[i][j];
        }
        hipFree(output->VARSP[i]); //delete [] output->VARSP[i];
    }
    hipFree(output->VARSP); //delete [] output->VARSP;
    
    for(int i = 0; i < (10+gas->MSP); i++)
    {
        for(int j = 0; j < geom->NCELLS+1; j++)
        {
            hipFree(output->CS[i][j]); //delete [] output->CS[i][j];
        }
        hipFree(output->CS[i]); //delete [] output->CS[i];
    }
    hipFree(output->CS); //delete [] output->CS;
    /*DEALLOCATE (JDIV,CELL,ICELL,CCELL,ICCELL,COLLS,WCOLLS,CLSEP,VAR,VARSP,CS,STAT=ERROR)
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE ARRAYS IN ADAPT',ERROR
     END IF*/
    //
    for(N=0;N<=geom->ILEVEL;N++)
        if(KDIV[N] > geom->MDIV) geom->MDIV=KDIV[N];
    //
    
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV, geom->JDIV);
    //    ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY IN ADAPT',ERROR
    //    ENDIF
    //
    
    geom->d_allocate(5,geom->NCELLS+1, geom->CELL);
    geom->i_allocate(geom->NCELLS+1, geom->ICELL);
    geom->d_allocate(6, geom->NCCELLS+1, geom->CCELL);
    geom->i_allocate(4, geom->NCCELLS+1,geom->ICCELL);
    
    XMIN= new double[geom->NCCELLS+1];
    XMAX = new double[geom->NCCELLS+1];
    //
    //    ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),XMIN(NCCELLS),XMAX(NCCELLS),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS IN ADAPT',ERROR
    //    ENDIF
    //
    
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1, output->WCOLLS);
    output->d_allocate(geom->NCELLS+1, output->CLSEP);
    output->d_allocate(24, geom->NCELLS+1, output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1, output->VARSP);
    output->d_allocate(10+gas->MSP+1,geom->NCELLS+1,gas->MSP+1,output->CS);
    
    
    //    ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),VAR(23,NCELLS),VARSP(0:12,NCELLS,MSP),CS(0:9+MSP,NCELLS,MSP),STAT=ERROR)
    //    IF (ERROR /= 0) THEN
    //    WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS IN ADAPT',ERROR
    //    ENDIF
    //
    geom->NCCELLS=0;
    geom->NCELLS=0;
    //
    //set the JDIV arrays and the sampling cells at the various levels of subdivision
    KDIV=0;
    geom->JDIV=0;
    //
    for(N=1;N<=geom->NDIV;N++){    //divisions
        ISD=0;
        ISD[0][1]=1;
        KDIV[0]=KDIV[0]+1;
        for(I=0;I<=geom->ILEVEL;I++){  //level of subdivision
            J=pow(2,I);  //number of possible subdivisions at this level
            JJ=NSEG/J;  //number of segments in a subdivision
            for(M=1;M<=J;M++){
                if(ISD[I][M] == 1){
                    NSEG1=(N-1)*NSEG+(M-1)*JJ+1;
                    NSEG2=NSEG1+JJ-1;
                    A=0.e00;
                    for(L=NSEG1;L<=NSEG2;L++)
                        A=A+DRAT[L];
                    
                    if(A < DCRIT){
                        geom->NCELLS=geom->NCELLS+1;
                        output->VAR[11][geom->NCELLS]=gas->FTMP[1];
                        XMIN[geom->NCELLS]=geom->XB[1]+double(NSEG1-1)*DDE;
                        XMAX[geom->NCELLS]=XMIN[geom->NCELLS]+double(NSEG2-NSEG1+1)*DDE;
                        //WRITE (9,*) NCELLS,I,' XMIN,XMAX',XMIN(NCELLS),XMAX(NCELLS)
                        file_9<< geom->NCELLS<<" "<<I<<" XMIN,XMAX "<<XMIN[geom->NCELLS]<<" , "<<XMAX[geom->NCELLS]<<endl;
                        geom->JDIV[I][KDIV[I]-(J-M)]=-geom->NCELLS;
                        //          WRITE (9,*) 'JDIV(',I,',',KDIV(I)-(J-M),')=',-NCELLS
                    }
                    else{
                        geom->JDIV[I][KDIV[I]-(J-M)]=KDIV[I+1];
                        //          WRITE (9,*) 'JDIV(',I,',',KDIV(I)-(J-M),')=',KDIV(I+1)
                        KDIV[I+1]=KDIV[I+1]+2;
                        for(L=NSEG1-(N-1)*NSEG;L<=NSEG2-(N-1)*NSEG;L++)
                            ISD[I+1][L]=1;
                    }
                }
            }
        }
    }
    //
    //set the other quantities associated with the sampling cells and the collision cells
    //
    geom->NCCELLS=0;
    for(N=1;N<=geom->NCELLS;N++){
        geom->CELL[1][N]=(XMIN[N]+XMAX[N])/2.e00;
        geom->CELL[2][N]=XMIN[N];
        geom->CELL[3][N]=XMAX[N];
        if(geom->IFX == 0) geom->CELL[4][N]=XMAX[N]-XMIN[N];    //calculation assumes unit cross-section
        if(geom->IFX == 1) geom->CELL[4][N]=PI*(pow(XMAX[N],2)-pow(XMIN[N],2));
        if(geom->IFX == 2) geom->CELL[4][N]=1.33333333333333333333e00*PI*(pow(XMAX[N],3)-pow(XMIN[N],3));
        geom->ICELL[N]=geom->NCCELLS;
        for(M=1;M<=geom->NCIS;M++){
            geom->NCCELLS=geom->NCCELLS+1;
            geom->ICCELL[3][geom->NCCELLS]=N;
            geom->CCELL[1][geom->NCCELLS]=geom->CELL[4][N]/double(geom->NCIS);
            geom->CCELL[3][geom->NCCELLS]=calc->DTM/2.e00;
            geom->CCELL[4][geom->NCCELLS]=2.e00*gas->VMPM*gas->SPM[2][1][1];
            // CALL RANDOM_NUMBER(RANF)
            calc->RANF=((double)rand()/(double)RAND_MAX);
            geom->CCELL[2][geom->NCCELLS]=calc->RANF;
            geom->CCELL[5][geom->NCCELLS]=calc->FTIME;
        }
    }
    //
    //assign the molecules to the cells
    //
    for(N=1;N<=molecs->NM;N++){
        FIND_CELL_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ);
        M=molecs->IPCELL[N];
    }
    //
    //deallocate the local variables
    for (int i = 0; i < geom->ILEVEL+1; i++) {
        delete [] ISD[i];
    }
    delete [] ISD;
    delete [] NC;
    delete[] KDIV;
    delete [] XMAX;
    delete [] XMIN;
    delete [] DRAT;
    /*DEALLOCATE (KDIV,NC,ISD,XMIN,XMAX,DRAT,STAT=ERROR)
     IF (ERROR /= 0) THEN
     WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE LOCAL ARRAYS IN ADAPT',ERROR
     END IF*/
    //
    return;
}

void EXTEND_MNM(double FAC)
{  //
    //the maximum number of molecules is increased by a specified factor
    //the existing molecules are copied TO disk storage
    //MOLECS molecs;
    //CALC calc;
    //GAS gas;
    //
    // IMPLICIT NONE
    //
    int M,N,MNMN;
    fstream file_7;
    // REAL :: FAC
    //
    //M,N working integers
    //MNMN extended value of MNM
    //FAC the factor for the extension
    MNMN=FAC*molecs->MNM;
    cout<< "Maximum number of molecules is to be extended from "<<molecs->MNM<<" to "<<MNMN<<endl;
    cout<< "( if the additional memory is available //// )"<<endl;
    
    file_7.open("EXTMOLS.SCR", ios::binary | ios::out);
    if(file_7.is_open()){
        cout<<"EXTMOLS.SCR is opened"<<endl;
    }
    else{
        cout<<"EXTMOLS.SCR not opened"<<endl;
    }
    cout<<"Start write to disk storage"<<endl;
    //OPEN (7,FILE='EXTMOLS.SCR',FORM='BINARY')
    //WRITE (*,*) 'Start write to disk storage'
    
    for(N=1;N<=molecs->MNM;N++){
        if(gas->MMVM > 0){
            file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl<<molecs->PROT[N]<<endl;
            for(M=1;M<=3;M++)
                file_7<<molecs->PV[M][N]<<endl;
            file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl;
            for(M=1;M<=gas->MMVM;M++)
                file_7<<molecs->IPVIB[M][N]<<endl;
            file_7<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),(IPVIB(M,N),M=1,MMVM),PELE(N)
        }
        else{
            if(gas->MMRM > 0){
                file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl<<molecs->PROT[N]<<endl;
                for(M=1;M<=3;M++)
                    file_7<<molecs->PV[M][N]<<endl;
                file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            else{
                file_7<<molecs->PX[calc->NCLASS][N]<<endl<<molecs->PTIM[N]<<endl;
                for(M=1;M<=3;M++)
                    file_7<<molecs->PV[M][N]<<endl;
                file_7<<molecs->IPSP[N]<<endl<<molecs->IPCELL[N]<<endl<<molecs->ICREF[N]<<endl<<molecs->IPCP[N]<<endl<<molecs->PELE[N]<<endl;//WRITE (7) PX(NCLASS,N),PTIM(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            
        }
    }
    cout<<"Disk write completed"<<endl;
    // WRITE (*,*) 'Disk write completed'
    // CLOSE (7)
    file_7.close();
    if(gas->MMVM > 0){
        for(int i=0;i<calc->NCLASS+1;i++){
                hipFree(molecs->PX[i]); //delete [] molecs->PX[i];
        }
        hipFree(molecs->PX); //delete [] molecs->PX;

        hipFree(molecs->PTIM); //delete [] molecs->PTIM;

        hipFree(molecs->PROT);

        for(int i=0;i<4;i++){
            hipFree(molecs->PV[i]); //delete [] molecs->PV[i];
        }
        hipFree(molecs->PV); //delete [] molecs->PV;

        hipFree(molecs->IPSP);
        hipFree(molecs->IPCELL);
        hipFree(molecs->ICREF);
        hipFree(molecs->IPCP);
        hipFree(molecs->PELE);
        for(int i=0;i<gas->MMVM;i++){
            hipFree(molecs->IPVIB[i]); //delete [] molecs->IPVIB[i];
        }
        hipFree(molecs->IPVIB); //delete molecs->IPVIB;
        // for(int i=0;i<calc->NCLASS+1;i++){
        //     delete [] molecs->PX[i];
        // }
        // delete [] molecs->PX;
        // delete [] molecs->PTIM;
        // delete [] molecs->PROT;
        // for(int i=0;i<4;i++){
        //     delete [] molecs->PV[i];
        // }
        // delete [] molecs->PV;
        // delete [] molecs->IPSP;
        // delete [] molecs->IPCELL;
        // delete [] molecs->ICREF;
        // delete [] molecs->IPCP;
        // delete [] molecs->PELE;
        // for(int i=0;i<gas->MMVM;i++){
        //     delete [] molecs->IPVIB[i];
        // }
        // delete molecs->IPVIB;
        //DEALLOCATE (PX,PTIM,PROT,PV,IPSP,IPCELL,ICREF,IPCP,IPVIB,PELE,STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            for(int i=0;i<calc->NCLASS+1;i++){
                hipFree(molecs->PX[i]); //delete [] molecs->PX[i];
            }
            hipFree(molecs->PX); //delete [] molecs->PX;

            hipFree(molecs->PTIM); //delete [] molecs->PTIM;

            hipFree(molecs->PROT);

            for(int i=0;i<4;i++){
                hipFree(molecs->PV[i]); //delete [] molecs->PV[i];
            }
            hipFree(molecs->PV); //delete [] molecs->PV;

            hipFree(molecs->IPSP);
            hipFree(molecs->IPCELL);
            hipFree(molecs->ICREF);
            hipFree(molecs->IPCP);
            hipFree(molecs->PELE);
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;//DEALLOCATE (PX,PTIM,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
            // for(int i=0;i<calc->NCLASS+1;i++){
            //     delete [] molecs->PX[i];
            // }
            // delete [] molecs->PX;
            // delete [] molecs->PTIM;
            // delete [] molecs->PROT;
            // for(int i=0;i<4;i++){
            //     delete [] molecs->PV[i];
            // }
            // delete [] molecs->PV;
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;
            //DEALLOCATE (PX,PTIM,PROT,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
        }
        else{
            for(int i=0;i<calc->NCLASS+1;i++){
                hipFree(molecs->PX[i]); //delete [] molecs->PX[i];
            }
            hipFree(molecs->PX); //delete [] molecs->PX;

            hipFree(molecs->PTIM); //delete [] molecs->PTIM;

            for(int i=0;i<4;i++){
                hipFree(molecs->PV[i]); //delete [] molecs->PV[i];
            }
            hipFree(molecs->PV); //delete [] molecs->PV;

            hipFree(molecs->IPSP);
            hipFree(molecs->IPCELL);
            hipFree(molecs->ICREF);
            hipFree(molecs->IPCP);
            hipFree(molecs->PELE);
            // delete [] molecs->IPSP;
            // delete [] molecs->IPCELL;
            // delete [] molecs->ICREF;
            // delete [] molecs->IPCP;
            // delete [] molecs->PELE;//DEALLOCATE (PX,PTIM,PV,IPSP,IPCELL,ICREF,IPCP,PELE,STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT DEALLOCATE MOLECULES',ERROR
    // !  STOP
    // END IF
    // !
    
    if(gas->MMVM > 0){
        molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
        molecs->d_allocate(MNMN+1,molecs->PTIM);
        molecs->d_allocate(MNMN+1,molecs->PROT);
        molecs->d_allocate(4,MNMN+1,molecs->PV);
        molecs->i_allocate(MNMN+1,molecs->IPSP);
        molecs->i_allocate(MNMN+1,molecs->IPCELL);
        molecs->i_allocate(MNMN+1,molecs->ICREF);
        molecs->i_allocate(MNMN+1,molecs->IPCP);
        molecs->i_allocate(gas->MMVM+1,MNMN+1,molecs->IPVIB);
        molecs->d_allocate(MNMN+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PROT(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),IPVIB(MMVM,MNMN),PELE(MNMN),STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
            molecs->d_allocate(MNMN+1,molecs->PTIM);
            molecs->d_allocate(MNMN+1,molecs->PROT);
            molecs->d_allocate(4,MNMN+1,molecs->PV);
            molecs->i_allocate(MNMN+1,molecs->IPSP);
            molecs->i_allocate(MNMN+1,molecs->IPCELL);
            molecs->i_allocate(MNMN+1,molecs->ICREF);
            molecs->i_allocate(MNMN+1,molecs->IPCP);
            molecs->d_allocate(MNMN+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PROT(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),PELE(MNMN),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,MNMN+1,molecs->PX);
            molecs->d_allocate(MNMN+1,molecs->PTIM);
            molecs->d_allocate(4,MNMN+1,molecs->PV);
            molecs->i_allocate(MNMN+1,molecs->IPSP);
            molecs->i_allocate(MNMN+1,molecs->IPCELL);
            molecs->i_allocate(MNMN+1,molecs->ICREF);
            molecs->i_allocate(MNMN+1,molecs->IPCP);
            molecs->d_allocate(MNMN+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNMN),PTIM(MNMN),PV(3,MNMN),IPSP(MNMN),IPCELL(MNMN),ICREF(MNMN),IPCP(MNMN),PELE(MNMN),STAT=ERROR)
        }
    }
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*)'PROGRAM COULD NOT ALLOCATE SPACE FOR EXTEND_MNM',ERROR
    // !  STOP
    // END IF
    // !
    //memset(molecs->PX,0.0,sizeof(**molecs->PX)); memset(molecs->PTIM,0.0,sizeof(*molecs->PTIM)); memset(molecs->PV,0.0,sizeof(**molecs->PV)); memset(molecs->IPSP,0,sizeof(*molecs->IPSP)); memset(molecs->IPCELL,0,sizeof(*molecs->IPCELL)); memset(molecs->ICREF,0,sizeof(*molecs->ICREF)); memset(molecs->IPCP,0,sizeof(*molecs->IPCP)); memset(molecs->PELE,0,sizeof(*molecs->PELE));
    
    for(int i=0;i<calc->NCLASS+1;i++){
        for(int j=0;j<MNMN+1;j++)
            molecs->PX[i][j]=0.0;
    }
    
    for(int i=0;i<4;i++){
        for(int j=0;j<MNMN+1;j++)
            molecs->PV[i][j]=0.0;
    }
    for(int i=0;i<MNMN+1;i++){
        molecs->PTIM[i]=0.0;
        molecs->IPSP[i]=0;
        molecs->IPCELL[i]=0;
        molecs->ICREF[i]=0;
        molecs->IPCP[i]=0;
        molecs->PELE[i]=0;
    }
        
    
    if(gas->MMRM > 0) {
        for(int i=0;i<MNMN+1;i++)
            molecs->PROT[i]=0.0;
        //memset(molecs->PROT,0.0,sizeof(*molecs->PROT));
    }
    if(gas->MMVM > 0) {
        for(int i=0;i<gas->MMVM+1;i++){
            for(int j=0;j<MNMN+1;j++)
                molecs->IPVIB[i][j]=0;
        }
        //memset(molecs->IPVIB,0,sizeof(**molecs->IPVIB));
    }
    //restore the original molecules
    // OPEN (7,FILE='EXTMOLS.SCR',FORM='BINARY')
    // WRITE (*,*) 'Start read back from disk storage'
    file_7.open("EXTMOLS.SCR", ios::binary | ios::in);
    if(file_7.is_open()){
        cout<<"EXTMOLS.SCR is opened"<<endl;
    }
    else{
        cout<<"EXTMOLS.SCR not opened"<<endl;
    }
    for(N=1;N<=molecs->MNM;N++){
        if(gas->MMVM > 0){
            file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N]>>molecs->PROT[N];
            for(M=1;M<=3;M++)
                file_7>>molecs->PV[M][N];
            file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N];
            for(M=1;M<=gas->MMVM;M++)
                file_7>>molecs->IPVIB[M][N];
            file_7>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),(IPVIB(M,N),M=1,MMVM),PELE(N)
        }
        else{
            if(gas->MMRM > 0){
                file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N]>>molecs->PROT[N];
                for(M=1;M<=3;M++)
                    file_7>>molecs->PV[M][N];
                file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N]>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),PROT(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
            else{
                file_7>>molecs->PX[calc->NCLASS][N]>>molecs->PTIM[N];
                for(M=1;M<=3;M++)
                    file_7>>molecs->PV[M][N];
                file_7>>molecs->IPSP[N]>>molecs->IPCELL[N]>>molecs->ICREF[N]>>molecs->IPCP[N]>>molecs->PELE[N];//READ (7) PX(NCLASS,N),PTIM(N),(PV(M,N),M=1,3),IPSP(N),IPCELL(N),ICREF(N),IPCP(N),PELE(N)
            }
        }
    }
    cout<<"Disk read completed"<<endl;
    // WRITE (*,*) 'Disk read completed'
    // CLOSE (7,STATUS='DELETE')
    file_7.close();
    //
    molecs->MNM=MNMN;
    //
    return;
}

void DISSOCIATION()
{
    //dissociate diatomic molecules that have been marked for dissociation by -ve level or -99999 for ground state
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,KK,L,N,M,LS,MS,KV,IDISS;
    double A,B,C,EA,VRR,VR,RMM,RML;
    double VRC[4],VCM[4],VRCP[4];
    //
    N=0;
    while(N < molecs->NM){
        N=N+1;
        IDISS=0;
        L=molecs->IPSP[N];
        if(gas->ISPV[L] > 0){
            for(K=1;K<=gas->ISPV[L];K++){
                M=molecs->IPVIB[K][N];
                if(M < 0){
                    //dissociation
                    calc->TDISS[L]=calc->TDISS[L]+1.e00;
                    IDISS=1;
                }
            }
            if(IDISS == 1){
                EA=molecs->PROT[N];    //EA is energy available for relative translational motion of atoms
                if(gas->MELE > 1) EA=EA+molecs->PELE[N];
                if(molecs->NM >= molecs->MNM) EXTEND_MNM(1.1);
                molecs->NM=molecs->NM+1;
                //set center of mass velocity as that of molecule
                VCM[1]=molecs->PV[1][N];
                VCM[2]=molecs->PV[2][N];
                VCM[3]=molecs->PV[3][N];
                molecs->PX[calc->NCLASS][molecs->NM]=molecs->PX[calc->NCLASS][N];
                molecs->IPCELL[molecs->NM]=molecs->IPCELL[N];
                LS=molecs->IPSP[N];
                gas->TREACL[1][LS]=gas->TREACL[1][LS]-1;
                molecs->IPSP[molecs->NM]=gas->ISPVM[1][1][L];
                MS=molecs->IPSP[molecs->NM];
                molecs->IPSP[N]=gas->ISPVM[2][1][L];
                LS=molecs->IPSP[N];
                gas->TREACG[1][LS]=gas->TREACG[1][LS]+1;
                gas->TREACG[1][MS]=gas->TREACG[1][MS]+1;
                molecs->PTIM[molecs->NM]=molecs->PTIM[N];
                VRR=2.e00*EA/gas->SPM[1][LS][MS];
                VR=sqrt(VRR);
                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                B=2.e00*calc->RANF-1.e00;
                A=sqrt(1.e00-B*B);
                VRCP[1]=B*VR;
                // CALL RANDOM_NUMBER(RANF)
                calc->RANF=((double)rand()/(double)RAND_MAX);
                C=2.e00*PI*calc->RANF;
                VRCP[2]=A*cos(C)*VR;
                VRCP[3]=A*sin(C)*VR;
                for(KK=1;KK<=3;KK++){
                    molecs->PV[KK][N]=VCM[KK]+RMM*VRCP[KK];
                    molecs->PV[KK][molecs->NM]=VCM[KK]-RML*VRCP[KK];
                }
                
                if((fabs(molecs->PV[1][N]) > 100000.e00) || (fabs(molecs->PV[1][molecs->NM]) > 100000.e00)) {
                    cout<< "EXCESSIVE SPEED, DISS "<< N<< " "<<molecs->PV[1][N]<<" "<<molecs->NM<<" "<<molecs->PV[1][molecs->NM]<<endl;
                   
                }
                
                
                
                //set any internal modes to the ground state
                if(gas->ISPV[LS] > 0){
                    for(KV=1;KV<=gas->ISPV[LS];KV++)
                        molecs->IPVIB[KV][N]=0;
                }
                if(gas->ISPR[1][LS] > 0) molecs->PROT[N]=0.e00;
                if(gas->MELE > 1) molecs->PELE[N]=0.e00;
                if(gas->ISPV[MS] > 0){
                    for(KV=1;KV<=gas->ISPV[MS];KV++)
                        molecs->IPVIB[KV][molecs->NM]=0;
                }
                if(gas->ISPR[1][MS] > 0) molecs->PROT[molecs->NM]=0.0;
                if(gas->MELE > 1) molecs->PELE[molecs->NM]=0.e00;
            }
        }
    }
    return;
}
//************************************************************************************
//

void ENERGY(int I,double &TOTEN)
{
    //calculate the total energy (all molecules if I=0, otherwise molecule I)
    //I>0 used for dianostic purposes only
    //MOLECS molecs;
    //GAS gas;
    //CALC calc;
    //
    // IMPLICIT NONE
    //
    int K,L,N,II,M,IV,KV,J;
    double TOTENI,TOTELE;
    //
    TOTEN=0.0;
    TOTELE=0;
    //
    
    if(I == 0){
        for(N=1;N<=molecs->NM;N++){
            if(molecs->IPCELL[N] > 0){
                L=molecs->IPSP[N];
                TOTENI=TOTEN;
                TOTEN=TOTEN+gas->SP[6][L];
                TOTEN=TOTEN+0.5e00*gas->SP[5][L]*(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
                if(gas->ISPR[1][L] > 0) TOTEN=TOTEN+molecs->PROT[N];
                if(gas->ISPV[L] > 0){
                    for(KV=1;KV<=gas->ISPV[L];KV++){
                        J=molecs->IPVIB[KV][N];
                        //         IF (J <0) THEN
                        //           J=-J
                        //           IF (J == 99999) J=0
                        //         END IF
                        TOTEN=TOTEN+double(J)*BOLTZ*gas->SPVM[1][KV][L];
                    }
                }
            }
            if(gas->MELE > 1){
                TOTEN=TOTEN+molecs->PELE[N];
                TOTELE=TOTELE+molecs->PELE[N];
            }
            if((TOTEN-TOTENI) > 1.e-16) cout<<"MOL "<<N<<" ENERGY "<<TOTEN-TOTENI<<endl;
        }
        //
        //WRITE (9,*) 'Total Energy =',TOTEN,NM
        //WRITE (*,*) 'Total Energy =',TOTEN,NM
        file_9<<"Total Energy =  "<<setprecision(25)<<TOTEN<<"\t"<<molecs->NM<<endl;
        cout<<"Total Energy =  "<<setprecision(20)<<TOTEN<<"\t"<<molecs->NM<<endl;
        //  WRITE (*,*) 'Electronic Energy =',TOTELE
    }
    else{
        N=I;
        if(molecs->IPCELL[N] > 0){
            L=molecs->IPSP[N];
            TOTEN=TOTEN+gas->SP[6][L];
            TOTEN=TOTEN+0.5e00*gas->SP[5][L]*(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
            if(gas->ISPR[1][L] > 0) TOTEN=TOTEN+molecs->PROT[N];
            if(gas->ISPV[L] > 0){
                for(KV=1;KV<=gas->ISPV[L];KV++){
                    J=molecs->IPVIB[KV][N];
                    //         IF (J <0) THEN
                    //           J=-J
                    //           IF (J == 99999) J=0
                    //         END IF
                    TOTEN=TOTEN+double(J)*BOLTZ*gas->SPVM[1][KV][L];
                }
            }
        }
    }
    
    //
    return;   //
}



void SETXT()
{
    //generate TECPLOT files for displaying an x-t diagram of an unsteady flow
    //this employs ordered data, therefore the cells MUST NOT BE ADAPTED
    //N.B. some custom coding for particular problems
    //
    //
    //MOLECS molecs;
    //CALC calc;
    //GEOM_1D geom;
    //GAS gas;
    //OUTPUT output;
    //
    
    // IMPLICIT NONE
    //
    int N,M,IOUT;
    double A,C;
    double **VALINT;
    // REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:) :: VALINT
    //
    //VALINT(N,M) the interpolated values at sampling cell M boundaries and extrapolated values at boundaries
    //    N=1 distance
    //    N=2 time
    //    N=3 number density
    //    N=4 radial velocity
    //    N=5 pressure (nkT)
    //    N=6 temperature
    //    N=7 h2o fraction (Sec. 7.9 only)
    //
    //the variables in VALINT may be altered for particular problems
    //
    VALINT = new double*[7];
    for(int i =0; i< 7; ++i)
        VALINT[i] = new double[geom->NCELLS+2];
    
    // ALLOCATE (VALINT(6,NCELLS+1),STAT=ERROR)
    //
    //777 FORMAT(12G14.6)
    //24[]
    
    //Internal options
    IOUT=0;    //0 for dimensioned output, 1 for non-dimensional output
    //
    A=1.e00;   //dt/dt for selection of v velocity component in TECPLOT to draw particle paths as "streamlines"
    //
    if(calc->FTIME < 0.5e00*calc->DTM){
        //Headings and zero time record
        //        IF (ERROR /= 0) THEN
        //        WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR VALINT ARRAY',ERROR
        //        ENDIF
        calc->NLINE=1;
        file_9<< "J in tecplot file = "<<calc->NLINE*(geom->NCELLS+1)<<endl;
        //  WRITE (18,*) 'VARIABLES = "Distance","Time","n","u","p","T","H2O","A"'   //for combustion wave output(Sec. 7.9)
        
        file_18<<"VARIABLES = 'Distance','Time','n','u','p','T','A' "<<endl;
        file_18<<"ZONE I= "<<geom->NCELLS+1<<", J=  (set to number of output intervals+1), F=POINT"<<endl;
        //
        for(N=1;N<=geom->NCELLS+1;N++){
            VALINT[1][N]=geom->XB[1]+(N-1)*geom->DDIV;    //distance
            VALINT[1][N]=VALINT[1][N];         //time
            VALINT[2][N]=0.0;
            VALINT[3][N]=gas->FND[1];
            VALINT[4][N]=0;
            VALINT[5][N]=gas->FND[1]*BOLTZ*gas->FTMP[1];
            VALINT[6][N]=gas->FTMP[1];
            //   VALINT(7,N)=FSP(6,1)   //FSP(6 for combustion wave
            if((VALINT[1][N] > geom->XS) && (calc->ISECS == 1)){
                VALINT[3][N]=gas->FND[2];
                VALINT[5][N]=gas->FND[2]*BOLTZ*gas->FTMP[2];
                VALINT[6][N]=gas->FTMP[2];
                //      VALINT(7,N)=FSP(6,2)
            }
            if(IOUT == 1){
                VALINT[3][N]=1.e00;
                VALINT[5][N]=1.e00;
                VALINT[6][N]=1.e00;
            }
            for(M=1;M<=6;M++)
                file_18<<VALINT[M][N]<<"\t";//WRITE (18,777) (VALINT(M,N),M=1,6),A
            file_18<<A<<endl;
        }
    }
    else{
        calc->NLINE=calc->NLINE+1;
        cout<<"J in tecplot file = "<<calc->NLINE<<endl;
        if(geom->IVB == 0) C=geom->DDIV;
        if(geom->IVB == 1) C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/double(geom->NDIV);
        for(N=1;N<=geom->NCELLS+1;N++){
            VALINT[1][N]=geom->XB[1]+(N-1)*C;
            VALINT[2][N]=calc->FTIME;
            if((N > 1) && (N < geom->NCELLS+1)){
                VALINT[3][N]=0.5e00*(output->VAR[3][N]+output->VAR[3][N-1]);
                VALINT[4][N]=0.5e00*(output->VAR[5][N]+output->VAR[5][N-1]);
                VALINT[5][N]=0.5e00*(output->VAR[18][N]+output->VAR[18][N-1]);
                VALINT[6][N]=0.5e00*(output->VAR[11][N]+output->VAR[11][N-1]);
                //     VALINT(7,N)=0.5D00*(VARSP(1,N,6)+VARSP(1,N-1,6))   //H2O fraction for Sec 7.9
            }
        }
        for(N=3;N<=6;N++)
            VALINT[N][1]=0.5e00*(3.e00*VALINT[N][2]-VALINT[N][3]);
        
        //
        for(N=3;N<=6;N++)
            VALINT[N][geom->NCELLS+1]=0.5e00*(3.e00*VALINT[N][geom->NCELLS]-VALINT[N][geom->NCELLS-1]);
        
        //
        for(N=1;N<=geom->NCELLS+1;N++){
            if(IOUT == 1){
                VALINT[1][N]=(VALINT[1][N]-geom->XB[1])/(geom->XB[2]-geom->XB[1]);
                VALINT[2][N]=VALINT[2][N]/calc->TNORM;
                VALINT[3][N]=VALINT[3][N]/gas->FND[1];
                VALINT[4][N]=VALINT[4][N]/gas->VMPM;
                VALINT[5][N]=VALINT[5][N]/(gas->FND[1]*BOLTZ*gas->FTMP[1]);
                VALINT[6][N]=VALINT[6][N]/gas->FTMP[1];
            }
            for(M=1;M<=6;M++)
                file_18<<VALINT[M][N]<<"\t";//WRITE (18,777) (VALINT[M][N],M=1,6),A       //
            file_18<<A<<endl;
        }
    }
    //
    return;
}


void MOLECULES_MOVE_1D()
{//
    //molecule moves appropriate to the time step
    //for homogeneous and one-dimensional flows
    //(homogeneous flows are calculated as one-dimensional)
    //MOLECS molecs;
    //GAS gas;
    //GEOM_1D geom;
    //CALC calc;
    //OUTPUT output;
    //
    // IMPLICIT NONE
    //
    int N,L,M,K,NCI,J,II,JJ;
    double A,B,X,XI,XC,DX,DY,DZ,DTIM,S1,XM,R,TI,DTC,POB,UR,WFI,WFR,WFRI;
    //
    //N working integer
    //NCI initial cell time
    //DTIM time interval for the move
    //POB position of the outer boundary
    //TI initial time
    //DTC time interval to collision with surface
    //UR radial velocity component
    //WFI initial weighting factor
    //WFR weighting factor radius
    //WFRI initial weighting factor radius
    //
    if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
        //memset(calc->ALOSS,0.e00,sizeof(*calc->ALOSS));//calc->ALOSS=0.e00;
        for(int i=0;i<gas->MSP+1;i++)
            calc->ALOSS[i]=0.e00;
        
        calc->NMP=molecs->NM;
    }
    //
    N=1;

    while(N <= molecs->NM){
        //
        NCI=molecs->IPCELL[N];
        if((calc->IMTS == 0) || (calc->IMTS == 2)) DTIM=calc->DTM;
        if(calc->IMTS == 1) DTIM=2.e00*geom->CCELL[3][NCI];
        if(calc->FTIME-molecs->PTIM[N] > 0.5*DTIM){
            WFI=1.e00;
            if(geom->IWF == 1) WFI=1.e00+geom->WFM*pow(molecs->PX[1][N],geom->IFX);
            II=0; //becomes 1 if a molecule is removed
            TI=molecs->PTIM[N];
            molecs->PTIM[N]=TI+DTIM;
            calc->TOTMOV=calc->TOTMOV+1;
            //
            XI=molecs->PX[1][N];
            DX=DTIM*molecs->PV[1][N];
            X=XI+DX;
            //
            if(geom->IFX > 0){
                DY=0.e00;
                DZ=DTIM*molecs->PV[3][N];
                if(geom->IFX == 2) DY=DTIM*molecs->PV[2][N];
                R=sqrt(X*X+DY*DY+DZ*DZ);
            }
            //
            if(geom->IFX == 0){
                for(J=1;J<=2;J++){    // 1 for minimum x boundary, 2 for maximum x boundary
                    if(II == 0){
                        if(((J == 1) && (X < geom->XB[1])) || ((J == 2) && (X > (geom->XB[2]+geom->VELOB*molecs->PTIM[N])))){  //molecule crosses a boundary
                            if((geom->ITYPE[J] == 0) || (geom->ITYPE[J] == 3) || (geom->ITYPE[J] == 4)){
                                if(geom->XREM > geom->XB[1]){
                                    L=molecs->IPSP[N];
                                    calc->ENTMASS=calc->ENTMASS-gas->SP[5][L];
                                }
                                if((geom->ITYPE[2] == 4) && (calc->ICN == 1)){
                                    L=molecs->IPSP[N];
                                    calc->ALOSS[L]=calc->ALOSS[L]+1.e00;
                                }
                                REMOVE_MOL(N);
                                N=N-1;
                                II=1;
                            }
                            //
                            if(geom->ITYPE[J] == 1){
                                if((geom->IVB == 0) || (J == 1)){
                                    X=2.e00*geom->XB[J]-X;
                                    molecs->PV[1][N]=-molecs->PV[1][N];
                                }
                                else if((J == 2) && (geom->IVB == 1)){
                                    DTC=(geom->XB[2]+TI*geom->VELOB-XI)/(molecs->PV[1][N]-geom->VELOB);
                                    XC=XI+molecs->PV[1][N]*DTC;
                                    molecs->PV[1][N]=-molecs->PV[1][N]+2.*geom->VELOB;
                                    X=XC+molecs->PV[1][N]*(DTIM-DTC);
                                }
                            }
                            //
                            if(geom->ITYPE[J] == 2)
                                REFLECT_1D(N,J,X);
                            // END IF
                        }
                    }
                }
            }
            else{         //cylindrical or spherical flow
                //check boundaries
                if((X <geom-> XB[1]) && (geom->XB[1] > 0.e00)){
                    RBC(XI,DX,DY,DZ,geom->XB[1],S1);
                    if(S1 < 1.e00){     //intersection with inner boundary
                        if(geom->ITYPE[1] == 2){//solid surface
                            DX=S1*DX;
                            DY=S1*DY;
                            DZ=S1*DZ;
                            AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                            REFLECT_1D(N,1,X);
                        }
                        else{
                            REMOVE_MOL(N);
                            N=N-1;
                            II=1;
                        }
                    }
                }
                else if((geom->IVB == 0) && (R > geom->XB[2])){
                    RBC(XI,DX,DY,DZ,geom->XB[2],S1);
                    if(S1 < 1.e00){     //intersection with outer boundary
                        if(geom->ITYPE[2] == 2){ //solid surface
                            DX=S1*DX;
                            DY=S1*DY;
                            DZ=S1*DZ;
                            AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                            X=1.001e00*geom->XB[2];
                            while(X > geom->XB[2])
                                REFLECT_1D(N,2,X);
                            // END DO
                        }
                        else{
                            REMOVE_MOL(N);
                            N=N-1;
                            II=1;
                        }
                    }
                }
                else if((geom->IVB == 1) && (R > (geom->XB[2]+molecs->PTIM[N]*geom->VELOB))){
                    if(geom->IFX == 1) UR=sqrt(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2));
                    if(geom->IFX == 2) UR=sqrt(pow(molecs->PV[1][N],2)+pow(molecs->PV[2][N],2)+pow(molecs->PV[3][N],2));
                    DTC=(geom->XB[2]+TI*geom->VELOB-XI)/(UR-geom->VELOB);
                    S1=DTC/DTIM;
                    DX=S1*DX;
                    DY=S1*DY;
                    DZ=S1*DZ;
                    AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                    molecs->PV[1][N]=-molecs->PV[1][N]+2.0*geom->VELOB;
                    X=X+molecs->PV[1][N]*(DTIM-DTC);
                }
                else
                    AIFX(XI,DX,DY,DZ,X,molecs->PV[1][N],molecs->PV[2][N],molecs->PV[3][N]);
                
                
                //DIAGNOSTIC
                if(II == 0){
                    if(X > geom->XB[2]+molecs->PTIM[N]*geom->VELOB){
                        //WRITE (*,*) N,calc->FTIME,X,geom->XB[2]+molecs->PTIM[N]*geom->VELOB;
                        cout<<N<<" "<<calc->FTIME<<" "<<X<<" "<<(geom->XB[2]+molecs->PTIM[N]*geom->VELOB)<<endl;
                    }
                }
                
                //Take action on weighting factors
                if((geom->IWF == 1) && (II == 0)){
                    WFR=WFI/(1.e00+geom->WFM*pow(X,geom->IFX));
                    L=0;
                    WFRI=WFR;
                    if(WFR >= 1.e00){
                        while(WFR >= 1.e00){
                            L=L+1;
                            WFR=WFR-1.e00;
                        }
                    }
                    // CALL RANDOM_NUMBER(RANF)
                    calc->RANF=((double)rand()/(double)RAND_MAX);
                    if(calc->RANF <= WFR) L=L+1;
                    if(L == 0){
                        REMOVE_MOL(N);
                        N=N-1;
                        II=1;
                    }
                    L=L-1;
                    if(L > 0){
                        for(K=1;K<=L;K++){
                            if(molecs->NM >= molecs->MNM) EXTEND_MNM(1.1);
                            molecs->NM=molecs->NM+1;
                            molecs->PX[1][molecs->NM]=X;
                            for(M=1;M<=3;M++)
                                molecs->PV[M][molecs->NM]=molecs->PV[M][N];
                            
                            if(gas->MMRM > 0) molecs->PROT[molecs->NM]=molecs->PROT[N];
                            molecs->IPCELL[molecs->NM]=fabs(molecs->IPCELL[N]);
                            molecs->IPSP[molecs->NM]=molecs->IPSP[N];
                            molecs->IPCP[molecs->NM]=molecs->IPCP[N];
                            if(gas->MMVM > 0){
                                for(M=1;M<=gas->MMVM;M++)
                                    molecs->IPVIB[M][molecs->NM]=molecs->IPVIB[M][N];
                                
                            }
                            molecs->PTIM[molecs->NM]=molecs->PTIM[N];    //+5.D00*DFLOAT(K)*DTM
                            //note the possibility of a variable time advance that may take the place of the duplication buffer in earlier programs
                            
                            if(molecs->PX[1][molecs->NM] > geom->XB[2]+molecs->PTIM[molecs->NM]*geom->VELOB)
                                //WRITE (*,*) 'DUP',NM,FTIME,PX(1,NM),XB(2)+PTIM(NM)*VELOB
                                cout<<"DUP "<<molecs->NM<<" "<<calc->FTIME<<" "<<molecs->PX[1][molecs->NM]<<" "<<(geom->XB[2]+molecs->PTIM[molecs->NM]*geom->VELOB)<<endl;
                            
                        }
                    }
                }
            }
            //
            if(II == 0){
                molecs->PX[1][N]=X;
                
                if(molecs->PX[1][N] > geom->XB[1] && (molecs->PX[1][N] < geom->XB[2]))
                    continue;
                else{
                    cout<< N<<" OUTSIDE FLOWFIELD AT "<<molecs->PX[1][N]<<" VEL "<<molecs->PV[1][N]<<endl;
                    REMOVE_MOL(N);
                    N=N-1;
                    II=1;
                }
            }
            //
            if(II == 0){
                if(geom->IVB == 0) FIND_CELL_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ);
                if(geom->IVB == 1) FIND_CELL_MB_1D(molecs->PX[1][N],molecs->IPCELL[N],JJ,molecs->PTIM[N]);
            }
            //
        }
        //
        N=N+1;
    }
    //
    return;
}



void READ_RESTART()
{
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    // IMPLICIT NONE
    //
    fstream file_7;
    int ZCHECK;
    //
    //    101 CONTINUE
    _101:
    file_7.open("PARAMETERS.DAT", ios::in | ios::binary);
    if(file_7.is_open()){
        cout<<"PARAMETERS.DAT opened successfully"<<endl;
        file_7>>geom->NCCELLS>>geom->NCELLS>>gas->MMRM>>gas->MMVM>>molecs->MNM>>gas->MNSR>>gas->MSP>>geom->ILEVEL>>geom->MDIV>>gas->MMEX>>gas->MEX>>gas->MELE>>gas->MVIBL>>calc->NCLASS;
        file_7.close();
    }
    else{
        cout<<"PARAMETERS.DAT not opening"<<endl;
        goto _101;
    }
    //cout<<geom->NCCELLS<<endl<<geom->NCELLS<<endl<<gas->MMRM<<endl<<gas->MMVM<<endl<<molecs->MNM<<endl;
    // OPEN (7,FILE='PARAMETERS.DAT',FORM='BINARY',ERR=101)
    // READ (7) NCCELLS,NCELLS,MMRM,MMVM,MNM,MNSR,MSP,ILEVEL,MDIV,MMEX,MEX,MELE,MVIBL,NCLASS
    // CLOSE(7)
    //
    if(gas->MMVM > 0){
        
        molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
        molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
        molecs->d_allocate(molecs->MNM+1,molecs->PROT);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
        molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
        molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
        molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
        molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
        molecs->i_allocate(gas->MMVM+1,molecs->MNM+1,molecs->IPVIB);
        molecs->d_allocate(molecs->MNM+1,molecs->PELE);
        // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),      &
        //      IPVIB(MMVM,MNM),PELE(MNM),STAT=ERROR)
    }
    else{
        if(gas->MMRM > 0){
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->d_allocate(molecs->MNM+1,molecs->PROT);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),PROT(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        else{
            molecs->d_allocate(calc->NCLASS+1,molecs->MNM+1,molecs->PX);
            molecs->d_allocate(molecs->MNM+1,molecs->PTIM);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCELL);
            molecs->i_allocate(molecs->MNM+1,molecs->IPSP);
            molecs->i_allocate(molecs->MNM+1,molecs->ICREF);
            molecs->i_allocate(molecs->MNM+1,molecs->IPCP);
            molecs->d_allocate(4,molecs->MNM+1,molecs->PV);
            molecs->d_allocate(molecs->MNM+1,molecs->PELE);
            // ALLOCATE (PX(NCLASS,MNM),PTIM(MNM),IPCELL(MNM),IPSP(MNM),ICREF(MNM),IPCP(MNM),PV(3,MNM),PELE(MNM),STAT=ERROR)
        }
        
    }
     
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR MOLECULE ARRAYS',ERROR
    // ENDIF
    //
    geom->i_allocate(geom->ILEVEL+1,geom->MDIV+1,geom->JDIV);
    // ALLOCATE (JDIV(0:ILEVEL,MDIV),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR JDIV ARRAY',ERROR
    // ENDIF
    geom->d_allocate(5,geom->NCELLS+1,geom->CELL);
    geom->i_allocate(geom->NCELLS+1,geom->ICELL);
    geom->d_allocate(6,geom->NCCELLS+1,geom->CCELL);
    geom->i_allocate(4,geom->NCCELLS+1,geom->ICCELL);
    // ALLOCATE (CELL(4,NCELLS),ICELL(NCELLS),CCELL(5,NCCELLS),ICCELL(3,NCCELLS),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR CELL ARRAYS',ERROR
    // ENDIF
    
    output->d_allocate(geom->NCELLS+1,output->COLLS);
    output->d_allocate(geom->NCELLS+1,output->WCOLLS);
    output->d_allocate(geom->NCELLS+1,output->CLSEP);
    output->d_allocate(gas->MNSR+1,output->SREAC);
    output->d_allocate(24,geom->NCELLS+1,output->VAR);
    output->d_allocate(13,geom->NCELLS+1,gas->MSP+1,output->VARSP);
    output->d_allocate(36+gas->MSP,3,output->VARS);
    output->d_allocate(10+gas->MSP,geom->NCELLS+1,gas->MSP+1,output->CS);
    output->d_allocate(9,3,gas->MSP+1,3,output->CSS);
    output->d_allocate(7,3,output->CSSS);
    // ALLOCATE (COLLS(NCELLS),WCOLLS(NCELLS),CLSEP(NCELLS),SREAC(MNSR),VAR(23,NCELLS),    &
    //           VARSP(0:12,NCELLS,MSP),VARS(0:35+MSP,2),CS(0:9+MSP,NCELLS,MSP),CSS(0:8,2,MSP,2),CSSS(6,2),STAT=ERROR)
    // IF (ERROR /= 0) THEN
    //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR SAMPLING ARRAYS',ERROR
    // ENDIF
    //

    if(gas->MMVM >= 0){
        output->d_allocate(gas->MSP+1,gas->MMVM+1,151,output->VIBFRAC);
        output->d_allocate(gas->MSP+1,gas->MMVM+1,output->SUMVIB);
        // ALLOCATE (VIBFRAC(MSP,MMVM,0:150),SUMVIB(MSP,MMVM),STAT=ERROR)
        // IF (ERROR /= 0) THEN
        //   WRITE (*,*) 'PROGRAM COULD NOT ALLOCATE SPACE FOR RECOMBINATION ARRAYS',ERROR
        // ENDIF
    }
    //
    ALLOCATE_GAS();
    //
    //102 CONTINU
_102:
    file_7.open("RESTART.DAT", ios::in | ios::binary);
    if(file_7.is_open()){
        cout<<"RESTART.DAT opened successfully"<<endl;
        /*file_7>>calc->AJM>>calc->ALOSS>>output->AVDTM>>BOLTZ>>geom->CCELL>>geom->CELL>>output->CLSEP>>output->COLLS>>calc->CPDTM>>gas->CR>>output->CS>>output->CSS>>output->CSSS>>gas->CTM>>gas->CXSS>>geom->DDIV>>DPI>>calc->DTM>>calc->DTSAMP>>calc->DTOUT>>calc->EME>>calc->ENTMASS>>gas->ENTR>>calc->ENTREM>>calc->ERROR>>gas->ERS>>gas->FDEN>>gas->FMA>>gas->FND>>calc->FNUM>>calc->FRACSAM>>gas->FSP>>gas->FP>>gas->FPM>>gas->FPR>>geom->FREM>>gas->FSPEC>>gas->FTMP>>calc->FTIME>>gas->FVTMP>>geom->ICCELL>>geom->ICELL>>calc->ICLASS>>calc->ICN>>molecs->ICREF>>geom->IFX>>gas->IGAS>>calc->IMTS>>molecs->IPCELL>>molecs->IPCP>>molecs->IPSP>>molecs->IPVIB>>calc->IREM>>calc->ISAD>>calc->ISECS>>calc->ISF>>gas->ISPEX>>gas->ISPR>>gas->ISPRC>>gas->ISPRK>>gas->ISPV>>gas->ISPVM>>gas->ISRCD>>geom->ITYPE>>geom->IVB>>geom->IWF>>geom->JDIV>>gas->LIS>>gas->LRS>>calc->MOLSC>>calc->MVER>>geom->NCCELLS>>geom->NCELLS>>geom->NCIS>>geom->NDIV>>gas->NELL>>gas->NEX>>calc->NLINE>>molecs->NM>>output->NMISAMP>>calc->NNC>>output->NOUT>>output->NSAMP>>gas->NSLEV>>gas->NSPEX>>calc->NREL>>calc->NVER>>molecs->PELE>>PI>>molecs->PROT>>molecs->PTIM>>molecs->PV>>molecs->PX>>gas->QELC>>gas->RGFS>>gas->RMAS>>gas->SLER>>gas->SP>>gas->SPEX>>SPI>>gas->SPM>>gas->SPR>>gas->SPRC>>gas->SPREX>>gas->SPRP>>gas->SPRT>>gas->SPV>>gas->SPVM>>output->SREAC>>output->SUMVIB>>calc->TCOL>>calc->TDISS>>calc->TRECOMB>>output->TISAMP>>calc->TPOUT>>calc->TREF>>calc->TLIM>>calc->TOTCOL>>calc->TOTMOV>>gas->TREACG>>gas->TREACL>>calc->TOUT>>calc->TPDTM>>calc->TREF>>calc->TSAMP>>gas->TSURF>>output->VAR>>output->VARS>>output->VARSP>>geom->VELOB>>gas->VFX>>gas->VFY>>output->VIBFRAC>>gas->VMP>>gas->VMPM>>calc->VNMAX>>gas->VSURF>>output->WCOLLS>>geom->WFM>>geom->XB>>geom->XREM>>output->XVELS>>output->YVELS>>gas->TNEX>>ZCHECK>>endl;*/
        file_7.read((char*)&calc,sizeof(calc));
        file_7.read((char*)&molecs,sizeof(molecs));
        file_7.read((char*)&gas,sizeof(gas));
        file_7.read((char*)&geom,sizeof(geom));
        file_7.read((char*)&output,sizeof(output));
        file_7.close();
    }
    else{
        cout<<"Restart.DAT not opening"<<endl;
        goto _102;
    }
    // OPEN (7,FILE='RESTART.DAT',FORM='BINARY',ERR=102)
    // READ (7) AJM,ALOSS,AVDTM,BOLTZ,CCELL,CELL,CLSEP,COLLS,    &
    //          CPDTM,CR,CS,CSS,CSSS,CTM,CXSS,DDIV,DPI,DTM,DTSAMP,DTOUT,EME,      &
    //          ENTMASS,ENTR,ENTREM,ERROR,ERS,FDEN,FMA,FND,FNUM,FRACSAM,FSP,FP,FPM,FPR,FREM,FSPEC,     &
    //          FTMP,FTIME,FVTMP,ICCELL,ICELL,ICLASS,ICN,ICREF,IFX,IGAS,IMTS,IPCELL,IPCP,     &
    //          IPSP,IPVIB,IREM,ISAD,ISECS,ISF,ISPEX,ISPR,ISPRC,ISPRK,ISPV,ISPVM,ISRCD,ITYPE,IVB,IWF,     &
    //          JDIV,LIS,LRS,MOLSC,MVER,NCCELLS,NCELLS,    &
    //          NCIS,NDIV,NELL,NEX,NLINE,NM,NMISAMP,NNC,NOUT,NSAMP,NSLEV,NSPEX,NREL,NVER,PELE,PI,PROT,PTIM,PV,PX,     &
    //          QELC,RGFS,RMAS,SLER,SP,SPEX,SPI,SPM,SPR,SPRC,SPREX,SPRP,SPRT,SPV,SPVM,SREAC,SUMVIB,    &
    //          TCOL,TDISS,TRECOMB,TISAMP,TPOUT,TREF,TLIM,TOTCOL,TOTMOV,     &
    //          TREACG,TREACL,TOUT,TPDTM,TREF,TSAMP,TSURF,VAR,VARS,VARSP,VELOB,VFX,VFY,VIBFRAC,VMP,     &
    //          VMPM,VNMAX,VSURF,WCOLLS,WFM,XB,XREM,XVELS,YVELS,TNEX,ZCHECK
    // //
    // CLOSE(7)
    //
    if(ZCHECK != 1234567){
        file_9<<molecs->NM<<" Molecules, Check integer = "<<ZCHECK<<endl;
        //WRITE (9,*) NM,' Molecules, Check integer =',ZCHECK
        return ;
    }
    else
        file_9<<"Restart file read, Check integer= "<<ZCHECK<<endl;
    //WRITE (9,*) 'Restart file read, Check integer=',ZCHECK
    
    //
    return;
    
    //
}
//*****************************************************************************

void WRITE_RESTART()
{
    //MOLECS molecs;
    //GEOM_1D geom;
    //GAS gas;
    //CALC calc;
    //OUTPUT output;
    // IMPLICIT NONE
    //
    int ZCHECK;
    //
    fstream file_7;
    ZCHECK=1234567;
    //
    //101 CONTINUE
_101:
    file_7.open("PARAMETERS.DAT", ios::out | ios::binary);
    if(file_7.is_open()){
        file_7<<geom->NCCELLS<<endl<<geom->NCELLS<<endl<<gas->MMRM<<endl<<gas->MMVM<<endl<<molecs->MNM<<endl<<gas->MNSR<<endl<<gas->MSP<<endl<<geom->ILEVEL<<endl<<geom->MDIV<<endl<<gas->MMEX<<endl<<gas->MEX<<endl<<gas->MELE<<endl<<gas->MVIBL<<endl<<calc->NCLASS<<endl;
        file_7.close();
    }
    else{
        cout<<"Parameters.DAT file not opening(write)"<<endl;
        goto _101;
    }
    // OPEN (7,FILE='PARAMETERS.DAT',FORM='BINARY',ERR=101)
    // WRITE (7) NCCELLS,NCELLS,MMRM,MMVM,MNM,MNSR,MSP,ILEVEL,MDIV,MMEX,MEX,MELE,MVIBL,NCLASS
    // CLOSE(7)
    //
    //    102 CONTINUE
_102:
    file_7.open("RESTART.DAT", ios::out | ios::binary);
    if(file_7.is_open()){
        /*file_7<<calc->AJM<<calc->ALOSS<<output->AVDTM<<BOLTZ<<geom->CCELL<<geom->CELL<<output->CLSEP<<output->COLLS<<calc->CPDTM<<gas->CR<<output->CS<<output->CSS<<output->CSSS<<gas->CTM<<gas->CXSS<<geom->DDIV<<DPI<<calc->DTM<<calc->DTSAMP<<calc->DTOUT<<calc->EME<<calc->ENTMASS<<gas->ENTR<<calc->ENTREM<<calc->ERROR<<gas->ERS<<gas->FDEN<<gas->FMA<<gas->FND<<calc->FNUM<<calc->FRACSAM<<gas->FSP<<gas->FP<<gas->FPM<<gas->FPR<<geom->FREM<<gas->FSPEC<<gas->FTMP<<calc->FTIME<<gas->FVTMP<<geom->ICCELL<<geom->ICELL<<calc->ICLASS<<calc->ICN<<molecs->ICREF<<geom->IFX<<gas->IGAS<<calc->IMTS<<molecs->IPCELL<<molecs->IPCP<<molecs->IPSP<<molecs->IPVIB<<calc->IREM<<calc->ISAD<<calc->ISECS<<calc->ISF<<gas->ISPEX<<gas->ISPR<<gas->ISPRC<<gas->ISPRK<<gas->ISPV<<gas->ISPVM<<gas->ISRCD<<geom->ITYPE<<geom->IVB<<geom->IWF<<geom->JDIV<<gas->LIS<<gas->LRS<<calc->MOLSC<<calc->MVER<<geom->NCCELLS<<geom->NCELLS<<geom->NCIS<<geom->NDIV<<gas->NELL<<gas->NEX<<calc->NLINE<<molecs->NM<<output->NMISAMP<<calc->NNC<<output->NOUT<<output->NSAMP<<gas->NSLEV<<gas->NSPEX<<calc->NREL<<calc->NVER<<molecs->PELE<<PI<<molecs->PROT<<molecs->PTIM<<molecs->PV<<molecs->PX<<gas->QELC<<gas->RGFS<<gas->RMAS<<gas->SLER<<gas->SP<<gas->SPEX<<SPI<<gas->SPM<<gas->SPR<<gas->SPRC<<gas->SPREX<<gas->SPRP<<gas->SPRT<<gas->SPV<<gas->SPVM<<output->SREAC<<output->SUMVIB<<calc->TCOL<<calc->TDISS<<calc->TRECOMB<<output->TISAMP<<calc->TPOUT<<calc->TREF<<calc->TLIM<<calc->TOTCOL<<calc->TOTMOV<<gas->TREACG<<gas->TREACL<<calc->TOUT<<calc->TPDTM<<calc->TREF<<calc->TSAMP<<gas->TSURF<<output->VAR<<output->VARS<<output->VARSP<<geom->VELOB<<gas->VFX<<gas->VFY<<output->VIBFRAC<<gas->VMP<<gas->VMPM<<calc->VNMAX<<gas->VSURF<<output->WCOLLS<<geom->WFM<<geom->XB<<geom->XREM<<output->XVELS<<output->YVELS<<gas->TNEX<<ZCHECK<<endl;*/
        file_7.write((char*)&calc,sizeof(calc));
        file_7.write((char*)&molecs,sizeof(molecs));
        file_7.write((char*)&gas,sizeof(gas));
        file_7.write((char*)&geom,sizeof(geom));
        file_7.write((char*)&output,sizeof(output));
        file_7.close();
    }
    else{
        cout<<"Restart.DAT file not opening(write)"<<endl;
        goto _101;
    }
    // OPEN (7,FILE='RESTART.DAT',FORM='BINARY',ERR=102)
    // WRITE (7)AJM,ALOSS,AVDTM,BOLTZ,CCELL,CELL,CLSEP,COLLS,    &
    //          CPDTM,CR,CS,CSS,CSSS,CTM,CXSS,DDIV,DPI,DTM,DTSAMP,DTOUT,EME,      &
    //          ENTMASS,ENTR,ENTREM,ERROR,ERS,FDEN,FMA,FND,FNUM,FRACSAM,FSP,FP,FPM,FPR,FREM,FSPEC,     &
    //          FTMP,FTIME,FVTMP,ICCELL,ICELL,ICLASS,ICN,ICREF,IFX,IGAS,IMTS,IPCELL,IPCP,     &
    //          IPSP,IPVIB,IREM,ISAD,ISECS,ISF,ISPEX,ISPR,ISPRC,ISPRK,ISPV,ISPVM,ISRCD,ITYPE,IVB,IWF,     &
    //          JDIV,LIS,LRS,MOLSC,MVER,NCCELLS,NCELLS,    &
    //          NCIS,NDIV,NELL,NEX,NLINE,NM,NMISAMP,NNC,NOUT,NSAMP,NSLEV,NSPEX,NREL,NVER,PELE,PI,PROT,PTIM,PV,PX,     &
    //          QELC,RGFS,RMAS,SLER,SP,SPEX,SPI,SPM,SPR,SPRC,SPREX,SPRP,SPRT,SPV,SPVM,SREAC,SUMVIB,    &
    //          TCOL,TDISS,TRECOMB,TISAMP,TPOUT,TREF,TLIM,TOTCOL,TOTMOV,     &
    //          TREACG,TREACL,TOUT,TPDTM,TREF,TSAMP,TSURF,VAR,VARS,VARSP,VELOB,VFX,VFY,VIBFRAC,VMP,     &
    //          VMPM,VNMAX,VSURF,WCOLLS,WFM,XB,XREM,XVELS,YVELS,TNEX,ZCHECK
    // //
    // CLOSE(7)
    //
    file_9<<"Restart files written"<<endl;
    //WRITE (9,*) 'Restart files written'
    //
    return;
}

void OUTPUT_RESULTS()
{
    //--calculate the surface and flowfield properties
    //--generate TECPLOT files for displaying these properties
    //--calculate collisiion rates and flow transit times and reset time intervals
    //--add molecules to any flow plane molecule output files
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    
    fstream file_3;
    fstream file_10;
    fstream file_7;
    
    int IJ,J,JJ,K,L,LL,M,N,NN,NMCR,CTIME,II;
    long long NNN;
    double AS,AT,C1,C2,C3,C4,C5,C6,C7,C8,C9;
    double A,B,C,SDTM,SMCR,DOF,AVW,UU,VDOFM,TVIBM,VEL,DTMI,TT;
    //dout
    double SUM[14];
    double SUMS[10][3];
    double *TVIB,*VDOF,*PPA,*TEL,*ELDOF,*SDOF,*CDTM;
    double **TV,**THCOL;
    double ***DF;
    int *NMS;
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:) :: TVIB,VDOF,PPA,TEL,ELDOF,SDOF,CDTM
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:) :: TV,THCOL
    //    REAL(KIND=8), ALLOCATABLE, DIMENSION(:,:,:) :: DF
    //    INTEGER, ALLOCATABLE, DIMENSION(:) :: NMS
    //INTEGER, ALLOCATABLE, DIMENSION(:,:) ::
    string F,E;
    //--CTIME  computer time (microseconds)
    //--SUMS(N,L) sum over species of CSS(N,J,L,M) for surface properties
    //
    //--For flowfield properties,where <> indicates sampled sum
    //--SUM(0) the molecular number sum over all species
    //--SUM(1) the weighted number sum over all species
    //--SUM(2) the weighted sum of molecular masses
    //--SUM(3),(4),(5) the weighted sum over species of m*<u>,<v>,<w>
    //--SUM(6) the weighted sum over species of m*(<u**2>+<v**2>+<w**2>)
    //--SUM(7) the weighted sum over species of <u**2>+<v**2>+<w**2>
    //--SUM(8) the weighted sum of rotational energy
    //--SUM(9) the weighted sum of rotational degrees of freedom
    //--SUM(10) the weighted sum over species of m*<u**2>
    //--SUM(11) the weighted sum over species of m*<v**2>
    //--SUM(12) sum over species of m*<w**2>
    //--SUM(13) the weighted sum of electronic energy
    //--UU velocity squared
    //--DOF degrees of freedom
    //--AVW the average value of the viscosity-temperature exponent
    //--DVEL velocity difference
    //--TVEL thermal speed
    //--SMCR sum of mcs/mfp over cells
    //--NMCR number in the sum
    //--VDOFM effective vibrational degrees of freedom of mixture
    //--TVIB(L)
    //--VDOF(L)
    //--TV(K,L) the temperature of vibrational mode K of species L
    //--PPA particles per atom
    //--NMS number per species
    //--SDOF(L) total degrees of freedom for species L
    //
    //
    //--calculate the flowfield properties in the cells
    //dout
    
    
    TV = new double*[gas->MMVM+1];
    for(int i =0; i< gas->MMVM+1; ++i)
        TV[i] = new double[gas->MSP+1];
    
    TVIB = new double[gas->MSP+1];
    
    DF = new double **[geom->NCELLS+1];
    for (int i = 0; i < geom->NCELLS+1; ++i)
    {
        DF[i] = new double *[gas->MMVM+1];
        for (int j = 0; j < gas->MMVM+1; ++j)
            DF[i][j] = new double [gas->MSP+1];
    }
    
    VDOF= new double[gas->MSP+1];
    
    TEL = new double[gas->MSP+1];
    
    ELDOF = new double[gas->MSP+1];
    
    PPA = new double[gas->MSP+1];
    
    NMS = new int[gas->MSP+1];
    
    THCOL = new double*[gas->MSP+1];
    for(int i =0; i< gas->MSP+1; ++i)
        THCOL[i] = new double[gas->MSP+1];
    
    SDOF = new double[gas->MSP+1];
    
    CDTM = new double[geom->NCELLS+1];
    
    
    //    ALLOCATE (TV(MMVM,MSP),TVIB(MSP),DF(NCELLS,MMVM,MSP),VDOF(MSP),TEL(MSP),ELDOF(MSP),PPA(MSP),NMS(MSP),THCOL(MSP,MSP)    &
    //              ,SDOF(MSP),CDTM(NCELLS),STAT=ERROR)
    //    if(calc->ERROR!=0)
    //    {
    //        cout<<"ROGRAM COULD NOT ALLOCATE OUTPUT VARIABLES"<<calc->ERROR<<endl;
    //    }
    if(calc->FTIME>0.5e00*calc->DTM)
    {
        output->NOUT+=1;
        if(output->NOUT>9999)
            output->NOUT=output->NOUT-9999;
        cout<<"Generating files for output interval"<<output->NOUT<<endl;
        if(calc->ISF==0)
        {
            //dout
            //OPEN (3,FILE='DS1OUT.DAT')
            file_3.open("DS1OUT.DAT" , ios::out);
            if(file_3.is_open()){
                cout<<"DS1OUT.DAT is opened"<<endl;
            }
            else{
                cout<<"DS1OUT.DAT not opened"<<endl;
            }
            //F='DS';//E//'.OUT'
        }
        else
        {
            //--the files are DS1n.DAT, where n is a four digit integer equal to NOUT
            //dout
            //500 FORMAT(I5)
            //ENCODE(5,500,E) 10000+NOUT
            int a=output->NOUT+10000;
            E=to_string(a);
            F="DS" + E + "OUT.DAT";
            //dout
            //file_3.open(F.c_str(), ios::out|ios::binary);
            if(file_3.is_open()){
                cout<<F<<" is opened"<<endl;
            }
            else{
                cout<<F<<" not opened"<<endl;
            }
            //OPEN (3,FILE=F)
        }
    }
    //dout
    //memset(output->VAR,0.e00,sizeof(**output->VAR));
    for(int i=0;i<24;i++){
        for(int j=0;j<geom->NCELLS+1;j++)
            output->VAR[i][j]=0.e00;
    }
    if(geom->IFX==0)
        A=calc->FNUM/(calc->FTIME-output->TISAMP);
    for(JJ=1;JJ<=2;JJ++)
    {
        if(geom->IFX==1)
            A=calc->FNUM/(2.e00*PI*geom->XB[JJ])*(calc->FTIME-output->TISAMP);
        if(geom->IFX==2)
            A=calc->FNUM/(4.e00*PI*geom->XB[JJ])*geom->XB[JJ]*(calc->FTIME-output->TISAMP);
        //--JJ=1 for surface at XB(1), JJ=2 for surface at XB(2)
        if(geom->ITYPE[JJ]==2)
        {
            //dout
            //memset(SUMS,0.e00,sizeof(SUMS));
            for(int i=0;i<10;i++){
                for(int j=0;j<3;j++)
                    SUMS[i][j]=0.e00;
            }
            for( L=1;L<=gas->MSP;L++)
            {
                for(J=0;J<=8;J++)
                {
                    for(IJ=1;IJ<=2;IJ++)
                    {
                        SUMS[J][IJ]=SUMS[J][IJ]+output->CSS[J][JJ][L][IJ];
                    }
                }
            }
            output->VARS[0][JJ]=SUMS[0][1];
            output->VARS[1][JJ]=SUMS[1][1];
            output->VARS[2][JJ]=SUMS[1][2];
            output->VARS[3][JJ]=SUMS[1][1]*A;
            output->VARS[4][JJ]=SUMS[1][2]*A;
            output->VARS[5][JJ]=SUMS[2][1]*A;
            output->VARS[6][JJ]=SUMS[2][2]*A;
            output->VARS[7][JJ]=SUMS[3][1]*A;
            output->VARS[8][JJ]=SUMS[3][2]*A;
            output->VARS[9][JJ]=SUMS[4][1]*A;
            output->VARS[10][JJ]=SUMS[4][2]*A;
            output->VARS[11][JJ]=SUMS[5][1]*A;
            output->VARS[12][JJ]=SUMS[5][2]*A;
            output->VARS[13][JJ]=SUMS[6][1]*A;
            output->VARS[14][JJ]=SUMS[6][2]*A;
            output->VARS[15][JJ]=SUMS[7][1]*A;
            output->VARS[16][JJ]=SUMS[7][2]*A;
            output->VARS[33][JJ]=SUMS[8][1]*A;
            output->VARS[34][JJ]=SUMS[8][2]*A;
            //   VARS(17,JJ)=SUMS(9,1)*A        //--SURFACE REACTIONS NOT YET IMPLEMENTED
            //   VARS(18,JJ)=SUMS(9,2)*A
            if(output->CSSS[1][JJ]>1.e-6)
            {
                output->VARS[19][JJ]=output->CSSS[3][JJ]/output->CSSS[2][JJ]; ////--n.b. must be modified to include second component in 3D
                output->VARS[20][JJ]=(output->CSSS[4][JJ]-output->CSSS[2][JJ]*output->VARS[19][JJ]*output->VARS[19][JJ])/(output->CSSS[1][JJ]*3.e00*BOLTZ)-gas->TSURF[JJ];
                output->VARS[19][JJ]=output->VARS[19][JJ]-gas->VSURF[JJ];
                if(output->CSSS[6][JJ]>1.e-6)
                {
                    output->VARS[21][JJ]=(2.e000/BOLTZ)*(output->CSSS[5][JJ]/output->CSSS[6][JJ])-gas->TSURF[JJ];
                }
                else
                {
                    output->VARS[21][JJ]=0.e00;
                }
            }
            else
            {
                output->VARS[19][JJ]=0.e00;
                output->VARS[20][JJ]=0.e00;
                output->VARS[21][JJ]=0.e00;
            }
            output->VARS[22][JJ]=(SUMS[2][1]+SUMS[2][2])*A;
            output->VARS[23][JJ]=(SUMS[3][1]+SUMS[3][2])*A;
            output->VARS[24][JJ]=(SUMS[4][1]+SUMS[4][2])*A;
            output->VARS[25][JJ]=(SUMS[5][1]+SUMS[5][2])*A;
            output->VARS[26][JJ]=(SUMS[6][1]+SUMS[6][2])*A;
            output->VARS[27][JJ]=(SUMS[7][1]+SUMS[7][2])*A;
            output->VARS[28][JJ]=(SUMS[9][1]+SUMS[9][2])*A;
            output->VARS[29][JJ]=output->VARS[11][JJ]+output->VARS[13][JJ]+output->VARS[15][JJ]+output->VARS[33][JJ];
            output->VARS[30][JJ]=output->VARS[12][JJ]+output->VARS[14][JJ]+output->VARS[16][JJ]+output->VARS[34][JJ];
            output->VARS[31][JJ]=output->VARS[29][JJ]+output->VARS[30][JJ];
            output->VARS[35][JJ]=output->VARS[33][JJ]+output->VARS[34][JJ];
            for(L=1;gas->MSP;L++)
            {
                if(SUMS[1][1]>0)
                {
                    output->VARS[35+L][JJ]=100*output->CSS[1][JJ][L][1]/SUMS[1][1];
                }
                else
                {
                    output->VARS[35+L][JJ]=0.0;
                }
            }
        }
    }
    //output->VARSP=0;
    for(int i=0;i<13;i++){
        for(int j=0;j<geom->NCELLS+1;j++){
            for(int k=0;k<gas->MSP+1;k++)
                output->VARSP[i][j][k]=0;
        }
    }
    SMCR=0;
    NMCR=0;
    for(N=1;N<=geom->NCELLS;N++)
    {
        if(N==120)
        {
            continue;
        }
        A=calc->FNUM/(geom->CELL[4][N])*output->NSAMP;
        if(geom->IVB==1)
            A=A*pow((geom->XB[2]-geom->XB[1])/(geom->XB[2]+geom->VELOB*0.5e00*(calc->FTIME-output->TISAMP)-geom->XB[1]),geom->IFX+1);
        //--check the above for non-zero XB(1)
        //dout
        //memset(SUM,0,sizeof(SUM));
        for(int i=0;i<14;i++)
            SUM[i]=0;
        
        NMCR+=1;
        for(L=1;L<=gas->MSP;L++)
        {
            SUM[0]=SUM[0]+output->CS[0][N][L];
            SUM[1]=SUM[1]+output->CS[1][N][L];
            SUM[2]=SUM[2]+gas->SP[5][L]*output->CS[0][N][L];
            for(K=1;K<=3;K++)
            {
                SUM[K+2]=SUM[K+2]+gas->SP[5][L]*output->CS[K+1][N][L];
                if(output->CS[1][N][L]>1.1e00)
                {
                    output->VARSP[K+1][N][L]=output->CS[K+4][N][L]/output->CS[1][N][L];
                    //--VARSP(2,3,4 are temporarily the mean of the squares of the velocities
                    output->VARSP[K+8][N][L]=output->CS[K+1][N][L]/output->CS[1][N][L];
                }
            }
            SUM[6]=SUM[6]+gas->SP[5][L]*(output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L]);
            SUM[10]=SUM[10]+gas->SP[5][L]*output->CS[5][N][L];
            SUM[12]=SUM[11]+gas->SP[5][L]*output->CS[6][N][L];
            SUM[12]=SUM[12]+gas->SP[5][L]*output->CS[7][N][L];
            SUM[13]=SUM[13]+output->CS[9][N][L];
            if(output->CS[1][N][L]>0.5e00)
                SUM[7]=SUM[7]+output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L];
            if(gas->ISPR[1][L]>0)
            {
                SUM[8]=SUM[8]+output->CS[8][N][L];
                SUM[9]=SUM[9]+output->CS[1][N][L]*gas->ISPR[1][L];
            }
        }
        AVW=0;
        for(L=1;L<=gas->MSP;L++)
        {
            output->VARSP[0][N][L]=output->CS[1][N][L];
            output->VARSP[1][N][L]=0.e00;
            output->VARSP[6][N][L]=0.0;
            output->VARSP[7][N][L]=0.0;
            output->VARSP[8][N][L]=0.0;
            if(SUM[1]>0.1)
            {
                output->VARSP[1][N][L]=output->CS[1][N][L]/SUM[1];
                AVW=AVW+gas->SP[3][L]*output->CS[1][N][L]/SUM[1];
                if(gas->ISPR[1][L]>0 && output->CS[1][N][L]>0.5)
                    output->VARSP[6][N][L]=(2.e00/BOLTZ)*output->CS[8][N][L]/((double)(gas->ISPR[1][L])*output->CS[1][N][L]);
            }
            output->VARSP[5][N][L]=0;
            for(K=1;K<=3;K++)
            {
                output->VARSP[K+1][N][L]=(gas->SP[5][L]/BOLTZ)*(output->VARSP[K+1][N][L]-pow(output->VARSP[K+8][N][L],2));
                output->VARSP[5][N][L]=output->VARSP[5][N][L]+output->VARSP[K+1][N][L];
            }
            output->VARSP[5][N][L]=output->VARSP[5][N][L]/3.e00;
            output->VARSP[8][N][L]=(3.e00*output->VARSP[5][N][L]+(double)gas->ISPR[1][L]*output->VARSP[6][N][L])/(3.e00+(double)(gas->ISPR[1][L]));
        }
        if(geom->IVB==0)
            output->VAR[1][N]=geom->CELL[1][N];
        if(geom->IVB==1)
        {
            C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/(double)(geom->NDIV); //new DDIV
            output->VAR[1][N]=geom->XB[1]+((double)(N-1)+0.5)*C;
        }
        output->VAR[2][N]=SUM[0];
        if(SUM[1]>0.5)
        {
            output->VAR[3][N]=SUM[1]*A;//--number density Eqn. (4.28)
            output->VAR[4][N]=output->VAR[3][N]*SUM[2]/SUM[1]; //--density  Eqn. (4.29)
            output->VAR[5][N]=SUM[3]/SUM[2];//--u velocity component  Eqn. (4.30)
            output->VAR[6][N]=SUM[4]/SUM[2]; //--v velocity component  Eqn. (4.30)
            output->VAR[7][N]=SUM[5]/SUM[2]; //--w velocity component  Eqn. (4.30)
            UU= pow(output->VAR[5][N],2)+pow(output->VAR[6][N],2)+pow(output->VAR[7][N],2);
            if(SUM[1]>1)
            {   
                output->VAR[8][N]=(fabs(SUM[6]-SUM[2]*UU))/(3.e00*BOLTZ*SUM[1]); //Eqn. (4.39)
                //--translational temperature
                output->VAR[19][N]=fabs(SUM[10]-SUM[2]*pow(output->VAR[5][N],2))/(BOLTZ*SUM[1]);
                output->VAR[20][N]=fabs(SUM[11]-SUM[2]*pow(output->VAR[6][N],2))/(BOLTZ*SUM[1]);
                output->VAR[21][N]=fabs(SUM[12]-SUM[2]*pow(output->VAR[7][N],2))/(BOLTZ*SUM[1]);
            }
            else
            {
                output->VAR[8][N]=1.0;
                output->VAR[19][N]=1.0;
                output->VAR[20][N]=1.0;
                output->VAR[21][N]=1.0;
            }
            if(SUM[9]>0.1e00)
            {
                output->VAR[9][N]=(2.e00/BOLTZ)*SUM[8]/SUM[9]; ////--rotational temperature Eqn. (4.36)
            }
            else
                output->VAR[9][N]=0.0;
            
            output->VAR[10][N]=gas->FTMP[1]; ////vibration default
            DOF=(3.e00+SUM[9])/SUM[1];
            output->VAR[11][N]=(3.0*output->VAR[8][N]+(SUM[9]/SUM[1]))*output->VAR[9][N]/DOF;
            //--overall temperature based on translation and rotation
            output->VAR[18][N]=output->VAR[3][N]*BOLTZ*output->VAR[8][N];
            //--scalar pressure (now (from V3) based on the translational temperature)
            if(gas->MMVM>0)
            {
                for(L=1;L<=gas->MSP;L++)
                {
                    VDOF[L]=0.0;
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        for(K=1;K<=gas->ISPV[L];K++)
                        {
                            if(output->CS[K+9][N][L]<BOLTZ)
                            {
                                TV[K][L]=0.0;
                                DF[N][K][L]=0.0;
                            }
                            else
                            {
                                TV[K][L]=gas->SPVM[1][K][L]/log(1.0+output->CS[1][N][L]/output->CS[K+9][N][L]) ;//--Eqn.(4.45)
                                DF[N][K][L]=2.0*(output->CS[K+9][N][L]/output->CS[1][N][L])*log(1.0+output->CS[1][N][L]/output->CS[K+9][N][L]); //--Eqn. (4.46)
                            }
                            VDOF[L]=VDOF[L]+DF[N][K][L];
                        }
                        //memset(TVIB,0.0,sizeof(*TVIB));
                        for(int i=0;i<gas->MSP+1;i++)
                            TVIB[i]=0.0;
                        
                        for(K=1;K<=gas->ISPV[L];K++)
                        {
                            if(VDOF[L]>1.e-6)
                            {
                                TVIB[L]=TVIB[L]+TV[K][L]*DF[N][K][L]/VDOF[L];
                            }
                            else
                                TVIB[L]=gas->FVTMP[1];
                        }
                    }
                    else
                    {
                        TVIB[L]=calc->TREF;
                        VDOF[L]=0.0;
                    }
                    output->VARSP[7][N][L]=TVIB[L];
                }
                VDOFM=0.0;
                TVIBM=0.0;
                A=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        A=A+output->CS[1][N][L];
                    }
                }
                for(L=1;L<=gas->MSP;L++)
                {
                    //dout
                    if(gas->ISPV[L] > 0)
                    {
                        VDOFM=VDOFM+VDOF[L]-output->CS[1][N][L]/A;
                        TVIBM=TVIBM+TVIB[L]-output->CS[1][N][L]/A;
                    }
                }
                output->VAR[10][N]=TVIBM;
            }
            for(L=1;L<=gas->MSP;L++)
            {
                if(output->VARSP[0][N][L]>0.5)
                {
                    //--convert the species velocity components to diffusion velocities
                    for(K=1;K<=3;K++)
                    {
                        output->VARSP[K+8][N][L]=output->VARSP[K+8][N][L]-output->VAR[K+4][N];
                    }
                    if(gas->MELE>1)
                    {
                        //--calculate the electronic temperatures for the species
                        //memset(ELDOF,0.e00,sizeof(*ELDOF));
                        for(int i=0;i<gas->MSP+1;i++)
                            ELDOF[i] = 0.e00;
                        //dout
                        //memset(TEL,0.e00,sizeof(*TEL));
                        for(int i=0;i<gas->MSP+1;i++)
                            TEL[i] = 0.e00;
                        if(gas->MELE>1)
                        {
                            A=0.e00;
                            B=0.e00;
                            for(M=1;M<=gas->NELL[L];M++)
                            {
                                if(output->VARSP[5][N][L]>1.e00)
                                {
                                    C=gas->QELC[2][M][L]/output->VARSP[5][N][L];
                                    A=A+gas->QELC[1][M][L]*exp(-C);
                                    B=B+gas->QELC[1][M][L]*C*exp(-C);
                                }
                            }
                            if(B>1.e-10)
                            {
                                TEL[L]=output->CS[9][N][L]/output->CS[1][N][L]/(BOLTZ*B/A);
                            }
                            else
                                TEL[L]=output->VAR[11][N];
                            output->VARSP[12][N][L]=TEL[L];
                            ELDOF[L]=0.e00;
                            if(output->VARSP[5][N][L]>1.e00)
                                ELDOF[L]=2.e00*output->CS[9][N][L]/output->CS[1][N][L]/(BOLTZ*output->VARSP[5][N][L]);
                            if(ELDOF[L]<0.01)
                            {
                                output->VARSP[12][N][L]=output->VAR[11][N];
                            }
                        }
                        else
                        {
                            ELDOF[L]=0.0;
                        }
                    }
                }
                else
                {
                    for(K=8;K<=12;K++)
                    {
                        output->VARSP[K][N][L]=0.e00;
                    }
                }
            }
            //--set the overall electronic temperature
            if(gas->MELE>1)
            {
                C=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    if(ELDOF[L]>1.e-5)
                        C=C+output->CS[1][N][L];
                }
                if(C>0.e00)
                {
                    A=0.e00;
                    B=0.e00;
                    for(L=1;L<=gas->MSP;L++)
                    {
                        if(ELDOF[L]>1.e-5)
                        {
                            A=A+output->VARSP[12][N][L]*output->CS[1][N][L];
                            B=B+output->CS[1][N][L];
                        }
                    }
                    output->VAR[22][N]=A/B;
                }
                else{
                    output->VAR[22][N]=output->VAR[11][N];
                }
            }
            else{
                output->VAR[22][N]=gas->FTMP[1];
            }
            if(gas->MMVM>0)
            {
                //--set the overall temperature and degrees of freedom for the individual species
                for(L=1;L<=gas->MSP;L++)
                {
                    if(gas->MELE>1){
                        SDOF[L]=3.e00+gas->ISPR[1][L]+VDOF[L]+ELDOF[L];
                        output->VARSP[8][N][L]=(3.0*output->VARSP[5][N][L]+gas->ISPR[1][L]*output->VARSP[6][N][L]+VDOF[L]*output->VARSP[7][N][L]+ELDOF[L]*output->VARSP[12][N][L])/SDOF[L];
                    }
                    else{
                        SDOF[L]=3.e00+gas->ISPR[1][L]+VDOF[L]+ELDOF[L];
                        output->VARSP[8][N][L]=(3.0*output->VARSP[5][N][L]+gas->ISPR[1][L]*output->VARSP[6][N][L]+VDOF[L]*output->VARSP[7][N][L])/SDOF[L];
                    }
                }
                //--the overall species temperature now includes vibrational and electronic excitation
                //--the overall gas temperature can now be set
                A=0.e00;
                B=0.e00;
                for(L=1;L<=gas->MSP;L++)
                {
                    A=A+SDOF[L]+output->VARSP[8][N][L]*output->CS[1][N][L];
                    B=B+SDOF[L]*output->CS[1][N][L];
                }
                output->VAR[11][N]=A/B;
            }
            VEL=sqrt(pow(output->VAR[5][N],2)+pow(output->VAR[6][N],2)+pow(output->VAR[7][N],2));
            output->VAR[12][N]=VEL/sqrt((DOF+2.e00)*output->VAR[11][N]*(SUM[1]*BOLTZ/SUM[2]))/DOF;
            //--Mach number
            output->VAR[13][N]=SUM[0]/output->NSAMP; ////--average number of molecules in cell
            //dout
            if(output->COLLS[N] > 2.0)
            {
                output->VAR[14][N]=0.5e00*(calc->FTIME-output->TISAMP)*(SUM[1]/output->NSAMP)/output->WCOLLS[N];
                //--mean collision time
                output->VAR[15][N]=0.92132e00*sqrt(fabs(SUM[7]/SUM[1]-UU))*output->VAR[14][N];
                //--mean free path (based on r.m.s speed with correction factor based on equilibrium)
                output->VAR[16][N]=output->CLSEP[N]/(output->COLLS[N]*output->VAR[15][N]);
            }
            else{
                output->VAR[14][N]=1.e10;
                output->VAR[15][N]=1.e10/output->VAR[3][N];
                //--m.f.p set by nominal values
            }
        }
        else
        {
            for(L=3;L<=22;L++)
            {
                output->VAR[L][N]=0.0;
            }
        }
        output->VAR[17][N]=VEL;
    }
    if(calc->FTIME>0.e00*calc->DTM)
    {
        if(calc->ICLASS==1){
            if(geom->IFX==0)
                file_3<<"DSMC program for a one-dimensional plane flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
            if(geom->IFX==1)
                file_3<<"DSMC program for a cylindrical flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
            if(geom->IFX==2)
                file_3<<"DSMC program for a spherical flow"<<endl;//WRITE (3,*) 'DSMC program for a one-dimensional plane flow';
        }
        file_3<<endl;//WRITE (3,*)
        file_3<<"Interval "<<output->NOUT<<" Time "<<calc->FTIME<< " with "<<output->NSAMP<<" samples from "<<output->TISAMP<<endl;
        //WRITE (3,*) 'Interval',output->NOUT,'Time ',calc->FTIME, ' with',output->NSAMP,' samples from',output->TISAMP
        //990 FORMAT(I7,G13.5,I7,G13.5)
        //Dout
        NNN=calc->TOTMOV;
        cout<<"TOTAL MOLECULES = "<< molecs->NM<<endl;
        //dout
        //NMS=0;
        for(int i=0;i<gas->MSP+1;i++)
            NMS[i]=0;

        for(N=1;N<=molecs->NM;N++)
        {
            M=molecs->IPSP[N];
            NMS[M]+=1;
        }
        file_3<<"Total simulated molecules = "<<molecs->NM<<endl;
        for(N=1;N<=gas->MSP;N++)
        {
            cout<< " SPECIES "<<N<<" TOTAL = "<<NMS[N]<<endl;
            file_3<<"Species "<<N<<" total = "<<NMS[N]<<endl;
        }
        if(gas->MEX>0)
        {
            ENERGY(0,A);
            for(N=1;N<=gas->MSP;N++)
            {
                if(gas->ISPV[N]>0){
                    file_9<< "SP "<<N<<" DISSOCS "<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                    cout<<"SP"<<N<<"DISSOCS"<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                    file_3<<"SP "<<N<<" DISSOCS "<<calc->TDISS[N]<<" RECOMBS "<<calc->TRECOMB[N]<<endl;
                }
            }
            for(N=1;N<=gas->MSP;N++)
            {
                cout<<"EX,C reaction"<<N<<" number"<<gas->TNEX[N]<<endl;
                file_9<<"EX,C reaction "<<N<<" number "<<gas->TNEX[N]<<endl;
                file_3<<"EX,C reaction "<<N<<" number "<<gas->TNEX[N]<<endl;
                
            }
        }
        
        file_3<<"Total molecule moves   = "<<NNN<<endl;
        //dout
        NNN=calc->TOTCOL;
        file_3<<"Total collision events = "<<NNN<<endl;
        //
        file_3<<"Species dependent collision numbers in current sample"<<endl;
        for(N=1;N<=gas->MSP;N++)
        {
            if(gas->IGAS!=8){
                for(M=1;M<=gas->MSP;M++)
                    file_3<<calc->TCOL[N][M]<<"\t";
                file_3<<endl;
                //WRITE(3,901) (calc->TCOL[N][M],M=1,gas->MSP);
            }
            if(gas->IGAS==8){
                for(M=1;M<=gas->MSP;M++)
                    file_3<<calc->TCOL[N][M]<<"\t";
                file_3<<endl;
                // WRITE(3,902) (calc->TCOL[N][M],M=1,gas->MSP);
            }
        }
        //Dout
        //901 FORMAT(5G13.5)
        //902 FORMAT(8G13.5)
        //dout
        CTIME=clock();
        file_3<<"Computation time "<<(double)CTIME/1000.0<< "seconds"<<endl;
        file_3<<"Collision events per second "<<(calc->TOTCOL-calc->TOTCOLI)*1000.e00/(double)CTIME<<endl;
        file_3<<"Molecule moves per secon "<<(calc->TOTMOV-calc->TOTMOVI)*1000.e00/(double)CTIME<<endl;
        if(calc->ICLASS==0&& gas->MMVM==0&&calc->ISF==0){
            //--a homogeneous gas with no vibratioal modes - assume that it is a collision test run
            //******PRODUCES DATA FOR TABLES 6.1 AND 6.2 IN SECTION 6.2*******
            //
            A=0.e00;
            B=0.e00;
            C=0.e00;
            for(N=1;N<=geom->NCCELLS;N++)
            {
                A+=geom->CCELL[5][N];
                B+=geom->CCELL[4][N];
                C+=geom->CCELL[3][N];
            }
            file_3<<"Overall time step "<<calc->DTM<<endl;
            file_3<<"Molecules per collision cell "<<(double)(molecs->NM)/(double)(geom->NCCELLS)<<endl;
            file_3<<"Mean cell time ratio "<< A/((double)(geom->NCCELLS)*calc->FTIME)<<endl;
            file_3<<"Mean value of cross-section and relative speed "<<B/(double)(geom->NCCELLS)<<endl;
            file_3<<"Mean half collision cell time step "<<C/(double)(geom->NCCELLS)<<endl;
            if(gas->MSP==1){
                A=2.e00*SPI*output->VAR[3][1]  *(pow(gas->SP[1][1],2))*sqrt(4.e00*BOLTZ*gas->SP[2][1]/gas->SP[5][1])*pow((output->VAR[11][1])/gas->SP[2][1],(1.e00-gas->SP[3][1]));
                //--Eqn. (2.33) for equilibhrium collision rate
                file_3<<"Coll. rate ratio to equilib "<<calc->TCOL[1][1]/((double)(molecs->NM)*(calc->FTIME-output->TISAMP))/A<<endl;
            }
            else{
                file_3<<"Species collision rate ratios to equilibrium"<<endl;
                for(N=1;N<=gas->MSP;N++){
                    file_3<<"Collision rate for species "<<N<<endl;
                    for(M=1;M<=gas->MSP;M++)
                    {
                        THCOL[N][M]=2.e00*(1.e00/SPI)*output->VAR[3][1]*output->VARSP[1][1][M]*gas->SPM[2][N][M]*sqrt(2.e00*BOLTZ*gas->SPM[5][N][M]/gas->SPM[1][N][M])*pow(output->VAR[11][1]/gas->SPM[5][N][M],1.e00-gas->SPM[3][N][M]);
                        //--Eqn. (2.36) for equilibhrium collision rate of species N with species M
                        file_3<<"with species "<<M<<" "<<calc->TCOL[N][M]/((double)(molecs->NM)*gas->FSP[N][1]*(calc->FTIME-output->TISAMP))/THCOL[N][M]<<endl;
                    }
                }
                file_3<<endl;
                for(N=1;N<=gas->MSP;N++){
                    file_3<<"Collision numbers for species "<<N<<endl;
                    for(M=1;M<=gas->MSP;M++){
                        file_3<<"with species "<<M<<" "<<calc->TCOL[N][M]<<endl;
                    }
                }
            }
        }
        file_3<<endl;
        if(geom->ITYPE[1]==2|| geom->ITYPE[2]==1)
            file_3<<"Surface quantities"<<endl;
        for(JJ=1;JJ<=2;JJ++)
        {
            if(geom->ITYPE[JJ]==2){
                file_3<<endl;
                file_3<<"Surface at "<<geom->XB[JJ]<<endl;
                file_3<<"Incident sample "<<output->VARS[0][JJ]<<endl;
                file_3<<"Number flux "<<output->VARS[3][JJ]<<" /sq m/s"<<endl;
                file_3<<"Inc pressure "<<output->VARS[5][JJ]<<" Refl pressure "<<output->VARS[6][JJ]<<endl;
                file_3<<"Pressure "<< output->VARS[5][JJ]+output->VARS[6][JJ]<<" N/sq m"<<endl;
                file_3<<"Inc y shear "<<output->VARS[7][JJ]<<" Refl y shear "<<output->VARS[8][JJ]<<endl;
                file_3<<"Net y shear "<<output->VARS[7][JJ]-output->VARS[8][JJ]<<" N/sq m"<<endl;
                file_3<<"Net z shear "<<output->VARS[9][JJ]-output->VARS[10][JJ]<<" N/sq m"<<endl;
                file_3<<"Incident translational heat flux "<<output->VARS[11][JJ]<<" W/sq m"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Incident rotational heat flux "<<output->VARS[13][JJ]<<" W/sq m"<<endl;
                if(gas->MMVM>0)
                    file_3<<"Incident vibrational heat flux "<<output->VARS[15][JJ]<<" W/sq m"<<endl;
                if(gas->MELE>1)
                    file_3<<"Incident electronic heat flux "<<output->VARS[33][JJ]<<" W/sq m"<<endl;
                file_3<<"Total incident heat flux "<<output->VARS[29][JJ]<<" W/sq m"<<endl;
                file_3<<"Reflected translational heat flux "<<output->VARS[12][JJ]<<" W/sq m"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Reflected rotational heat flux "<<output->VARS[14][JJ]<<" W/sq m"<<endl;
                if(gas->MMVM>0)
                    file_3<<"Reflected vibrational heat flux "<<output->VARS[16][JJ]<<" W/sq m"<<endl;
                if(gas->MELE>1)
                    file_3<<"Reflected electronic heat flux "<<output->VARS[34][JJ]<<" W/sq m"<<endl;
                file_3<<"Total reflected heat flux "<<output->VARS[30][JJ]<<" W/sq m"<<endl;
                file_3<<"Net heat flux "<<output->VARS[31][JJ]<<" W/sq m"<<endl;
                file_3<<"Slip velocity (y direction) "<<output->VARS[19][JJ]<<" m/s"<<endl;
                file_3<<"Translational temperature slip"<<output->VARS[20][JJ]<<" K"<<endl;
                if(gas->MMRM>0)
                    file_3<<"Rotational temperature slip "<<output->VARS[21][JJ]<<" K"<<endl;
                if(gas->MSP>1)
                {
                    for(L=1;L<=gas->MSP;L++)
                    {
                        file_3<<"Species "<<L<<" percentage "<<output->VARS[L+35][JJ]<<endl;
                    }
                }
            }
        }

        file_3<<endl;
        //PPA=0;
        for(int i=0;i<gas->MSP+1;i++)
            PPA[i]=0;

        for(N=1;N<=geom->NCELLS;N++)
        {
            for(M=1;M<=gas->MSP;M++){
                PPA[M]=PPA[M]+output->VARSP[0][N][M];
            }
        }
        // WRITE (*,*)
        //cin.get();
        if(gas->MSP>1)
        {
            file_3<<"GAINS FROM REACTIONS"<<endl;
            file_3<<"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                          SPECIES "<<M<<" "<<gas->TREACG[1][M]<<" "<<gas->TREACG[2][M]<<" "<<gas->TREACG[3][M]<<" "<<gas->TREACG[4][M]<<endl;
            }
            file_3<<endl;
            file_3<<"LOSSES FROM REACTIONS"<<endl;
            file_3<<"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                          SPECIES "<<M<<" "<<gas->TREACL[1][M]<<" "<<gas->TREACL[2][M]<<" "<<gas->TREACL[3][M]<<" "<<gas->TREACL[4][M]<<endl;
            }
            file_3<<endl;
            file_3<<"TOTALS"<<endl;
            for(M=1;M<=gas->MSP;M++){
                file_3<<"                        SPECIES "<<M<<" GAINS "<<gas->TREACG[1][M]+gas->TREACG[2][M]+gas->TREACG[3][M]+gas->TREACG[4][M]<<" LOSSES "<<gas->TREACL[1][M]+gas->TREACL[2][M]+gas->TREACL[3][M]+gas->TREACL[4][M]<<endl;
            }
        }
        file_3<<endl;
        file_3<<"Flowfield properties "<<endl;
        file_3<< output->NSAMP<<" Samples"<<endl;
        file_3<<"Overall gas"<<endl;
        file_3<<"Cell x coord.      Sample       Number Dens. Density      u velocity   v velocity   w velocity   Trans. Temp. Rot. Temp.   Vib. Temp.    El. Temp.  Temperature  Mach no.     Mols/cell    m.c.t        m.f.p        mcs/mfp        speed      Pressure      TTX         TTY         TTZ   Species Fractions "<<endl;
        for(N=1;N<=geom->NCELLS;N++)
        {
            file_3<< N<<" ";
            for(M=1;M<=10;M++){
                file_3<<output->VAR[M][N]<<" ";
            }
            file_3<<output->VAR[22][N]<<" ";
            for(M=11;M<=21;M++){
                file_3<<output->VAR[M][N]<<" ";
            }
            for(L=1;M<=gas->MSP;M++){
                file_3<<output->VARSP[1][N][L]<<" ";
            }
            file_3<<endl;
        }
        file_3<<"Individual molecular species"<<endl;
        for(L=1;L<=gas->MSP;L++){
            file_3<<"Species "<<L<<endl;
            file_3<<"Cell x coord.      Sample       Percentage   Species TTx   Species TTy  Species TTz  Trans. Temp.  Rot. Temp.  Vib. Temp.   Spec. Temp  u Diff. Vel. v Diff. Vel. w. Diff. Vel. Elec. Temp."<<endl;
            for(N=1;N<=geom->NCELLS;N++){
                file_3<< N<<" "<<output->VAR[1][N]<<" ";
                for(M=0;M<=12;M++)
                    file_3<<output->VARSP[M][N][L]<<" ";
                file_3<<endl;
            }
        }
        //dout
        //999 FORMAT (I5,30G13.5)
        //998 FORMAT (G280.0)
        // 997 FORMAT (G188.0)
        // CLOSE (3)
        file_3.close();
    }
    if(calc->ICLASS==0 && calc->ISF==1){
        //--a homogeneous gas and the "unsteady sampling" option has been chosen-ASSUME THAT IT IS A RELAXATION TEST CASE FOR SECTION 6.2
        INITIALISE_SAMPLES();
        //write a special output file for internal temperatures and temperature versus collision number
        //dout
        file_10.open("RELAX.DAT", ios::app | ios::out);
        if(file_10.is_open()){
            cout<<"RELAX.DAT is opened"<<endl;
        }
        else{
            cout<<"RELAX.DAT not opened"<<endl;
        }
        // OPEN (10,FILE='RELAX.DAT',ACCESS='APPEND')
        A=2.0*calc->TOTCOL/molecs->NM; //--mean collisions
        //--VAR(11,N)   //--overall
        //--VAR(8,N)    //--translational
        //--VAR(9,N)    //--rotational
        //--VAR(10,N)   //--vibrational
        //--VAR(22,N)   //--electronic
        file_10<<setw(15)<<A<<setw(15)<<output->VAR[8][1]<<setw(15)<<output->VAR[9][1]<<setw(15)<<output->VAR[8][1]-output->VAR[9][1]<<endl;
        //file_10<<A<<"\t"<<output->VAR[11][1]<<"\t"<<output->VAR[8][1]<<"\t"<<output->VAR[9][1]<<"\t"<<output->VAR[10][1]<<"\t"<<output->VAR[22][1]<<endl;
        //file_10<<A<<"\t"<<output->VAR[8][1]<<"\t"<<output->VAR[9][1]<<"\t"<<output->VAR[8][1]-output->VAR[9][1]<<endl;
        //  WRITE (10,950) A,VAR(8,1),VAR(9,1),VAR(8,1)-VAR(9,1)   //--Generates output for Figs. 6.1 and 6.2
        //  WRITE (10,950) A,VAR(11,1),VAR(8,1),VAR(9,1),VAR(10,1),VAR(22,1)   //--Generates output for modal temperatures in Figs. 6.3, 6.5 +
        //  WRITE (10,950) A,0.5D00*(VAR(8,1)+VAR(9,1)),VAR(10,1),0.5D00*(VAR(8,1)+VAR(9,1))-VAR(10,1)  //--Generates output for Figs. 6.4
        //
        //--VARSP(8,N,L) //--overall temperature of species L
        //  WRITE (10,950) A,VARSP(8,1,3),VARSP(8,1,2),VARSP(8,1,5),VARSP(8,1,4),A  //--output for Fig 6.17
        // CLOSE (10)
        file_10.close();
    }
    //dout
    // 950 FORMAT (6G13.5)
    if(gas->IGAS==8||gas->IGAS==6||gas->IGAS==4)
    {
        //--Write a special output file for the composition of a reacting gas as a function of time
        //dout
        //OPEN (10,FILE='COMPOSITION.DAT',ACCESS='APPEND')
        file_10.open("COMPOSITION.DAT", ios::app | ios::out);
        if(file_10.is_open()){
            cout<<"COMPOSITION.DAT is opened"<<endl;
        }
        else{
            cout<<"COMPOSITION.DAT not opened"<<endl;
        }
        AS=molecs->NM;
        //dout
        AT=calc->FTIME*1.e6;
        if (gas->IGAS == 4)
            file_10<< AT <<" "<<(double)(NMS[1])/1000000<<" "<<A<<" "<<output->VAR[11][1]<<endl;    //--Data for fig
        if (gas->IGAS == 8)
            file_10<<AT<<" "<<NMS[1]/AS<<" "<<NMS[2]/AS<<" "<<NMS[3]/AS<<" "<<NMS[4]/AS<<" "<<NMS[5]/AS<<" "<<NMS[6]/AS<<" "<<NMS[7]/AS<<" "<<NMS[8]/AS<<" "<<output->VAR[11][1]<<endl;
        if (gas->IGAS == 6)
            file_10<<AT<<" "<<NMS[1]/AS<<" "<<NMS[2]/AS<<" "<<NMS[3]/AS<<" "<<NMS[4]/AS<<" "<<NMS[5]/AS<<" "<<output->VAR[11][1]<<endl;
        //dout
        // 888 FORMAT(10G13.5)
        file_10.close();
    }
    if(calc->FTIME>0.5e00*calc->DTM){
        //
        //--reset collision and transit times etc.
        //
        cout<<"Output files written "<<endl;
        DTMI=calc->DTM;
        if(calc->IMTS<2){
            if(calc->ICLASS>0)
                calc->DTM*=2;
            //--this makes it possible for DTM to increase, it will be reduced as necessary
            for(NN=1;NN<=geom->NCELLS;NN++)
            {
                CDTM[NN]=calc->DTM;
                B=geom->CELL[3][NN]-geom->CELL[2][NN] ;//--sampling cell width
                if(output->VAR[13][NN]>20.e00){
                    //consider the local collision rate
                    CDTM[NN]=output->VAR[14][NN]*calc->CPDTM;
                    //look also at sampling cell transit time based on the local flow speed
                    A=(B/(fabs(output->VAR[5][NN])))*calc->TPDTM;
                    if(A<CDTM[NN])
                        CDTM[NN]=A;
                }
                else{
                    //-- base the time step on a sampling cell transit time at the refence vmp
                    A=calc->TPDTM*B/gas->VMPM;
                    if(A<CDTM[NN])
                        CDTM[NN]=A;
                }
                if(CDTM[NN]<calc->DTM)
                    calc->DTM=CDTM[NN];
            }
        }
        else
        {
            //dout
            //memset(CDTM, calc->DTM, sizeof(*CDTM));
            for(int i=0;i<geom->NCELLS+1;i++)
                CDTM[i]= calc->DTM;
            //CDTM=calc->DTM;
        }
        for(N=1;N<=geom->NCELLS;N++){
            NN=geom->ICCELL[3][N];
            geom->CCELL[3][N]=0.5*CDTM[NN];
        }
        file_9<<"DTM changes  from "<<DTMI<<" to "<<calc->DTM<<endl;
        calc->DTSAMP=calc->DTSAMP*calc->DTM/DTMI;
        calc->DTOUT=calc->DTOUT*calc->DTM/DTMI;
    }
    else
    {
        INITIALISE_SAMPLES();
    }
    if(calc->ICLASS==1&& calc->ISF==1)
    {
        //*************************************************************************
        //--write TECPLOT data files for x-t diagram (unsteady calculation only)
        //--comment out if not needed
        //dout
        file_18.open("DS1xt.DAT", ios::app | ios::out);
        if(file_18.is_open()){
            cout<<"DS1xt.DAT is opened"<<endl;
        }
        else
            cout<<"DS1xt.DAT not opened"<<endl;
        // OPEN (18,FILE='DS1xt.DAT',ACCESS='APPEND')
        //--make sure that it is empty at the stary of the run
        SETXT();
        // CLOSE (18)
        file_18.close();
        //**************************************************************************
    }
    //WRITE (19,*) calc->FTIME,-output->VARS[5][1],-output->VARS[5][1]-output->VARS[6][1]
    
    file_7.open("PROFILE.DAT" , ios::out);
    if(file_7.is_open()){
        cout<<"PROFILE.DAT is opened"<<endl;
    }
    else
        cout<<"PROFILE.DAT not opened"<<endl;
    // OPEN (7,FILE='PROFILE.DAT',FORM='FORMATTED')
    //
    //OPEN (8,FILE='ENERGYPROF.DAT',FORM='FORMATTED')
    //
    // 995 FORMAT (22G13.5)
    // 996 FORMAT (12G14.6)
    for(N=1;N<=geom->NCELLS;N++)
    {
        //
        //--the following line is the default output
        //  WRITE (7,995) VAR(1,N),VAR(4,N),VAR(3,N),VAR(11,N),VAR(18,N),VAR(5,N),VAR(12,N),VAR(8,N),VAR(9,N),VAR(10,N),VAR(22,N),     &
        //        (VARSP(8,N,M),M=1,MSP),(VARSP(1,N,M),M=1,MSP)
        //
        //--calculate energies per unit mass (employed for re-entry shock wave in Section 7.5)
        C1=0.5e00*pow(output->VAR[5][N],2);    //--Kinetic
        C2=0.e00;                 //--Thermal
        C3=0.e00;                //--Rotational
        C4=0.e00;               //--Vibrational
        C5=0.e00;              //--Electronic
        C6=0.e00;             //--Formation
        for(L=1;L<=gas->MSP;L++)
        {
            //    C2=C2+3.D00*BOLTZ*VARSP(5,N,L)*VARSP(1,N,L)/SP(5,L)
            A=(output->CS[1][N][L]/output->VARSP[1][N][L])*gas->SP[5][L];
            if(output->CS[1][N][L]>0.5e00){
                C2=C2+0.5e00*(output->CS[5][N][L]+output->CS[6][N][L]+output->CS[7][N][L])*gas->SP[5][L]/A;
                if(gas->ISPR[1][L]>0)
                    C3=C3+output->CS[8][N][L];
                if(gas->ISPV[L]>0)
                    C4=C4+output->CS[10][N][L]*BOLTZ*gas->SPVM[1][1][L]/A;
                if(gas->NELL[L]>1)
                    C5=C5+output->CS[9][N][L]/A;
                C6=C6+gas->SP[6][L]*output->CS[1][N][L]/A;
            }
        }
        C2=C2-C1;
        //  A=0.5D00*VFX(1)**2+2.5D00*BOLTZ*FTMP(1)/(0.75*SP(5,2)+0.25*SP(5,1))
        C7=C1+C2+C3+C4+C5+C6;
        //
        //  WRITE (8,995) VAR(1,N),C1/A,C2/A,C3/A,C4/A,C5/A,C6/A,C7/A
        //
        //--the following lines are for normalised shock wave output in a simple gas (Sec 7.3)
        C1=gas->FND[2]-gas->FND[1];
        C2=gas->FTMP[2]-gas->FTMP[1];
        
        file_7<<output->VAR[1][N]<<" "<<output->VAR[2][N]<<" "<<(0.5*(output->VAR[20][N]+output->VAR[21][N])-gas->FTMP[1])/C2<<" "<<(output->VAR[19][N]-gas->FTMP[1])/C2<<" "<<(output->VAR[11][N]-gas->FTMP[1])/C2<<" "<<(output->VAR[3][N]-gas->FND[1])/C1<<endl;
        //--the following replaces sample size with density
        //C3=0.D00
        //DO L=1,MSP
        //  C3=C3+FND(1)*FSP(L,1)*SP(5,L)  //--upstream density
        //END DO
        //C4=0.D00
        //DO L=1,MSP
        //  C4=C4+FND(2)*FSP(L,2)*SP(5,L)  //--upstream density
        //END DO
        //
        //  WRITE (7,996) VAR(1,N),(VAR(4,N)-C3)/(C4-C3),(0.5*(VAR(20,N)+VAR(21,N))-FTMP(1))/C2,(VAR(19,N)-FTMP(1))/C2,(VAR(11,N)-FTMP(1))/C2,    &
        //        (VAR(3,N)-FND(1))/C1
        //--the following lines is for a single species in a gas mixture
        //  C1=C1*FSP(3,1)
        //  WRITE (7,996) VAR(1,N),VARSP(1,N,3),(0.5*(VARSP(3,N,3)+VARSP(4,N,3))-FTMP(1))/C2,(VARSP(2,N,3)-FTMP(1))/C2,(VARSP(5,N,3)-FTMP(1))/C2,(VAR(3,N)*VARSP(1,N,3)-FND(1)*FSP(3,1))/C1
        //
        //--the following line is for Couette flow (Sec 7.4)
        //  WRITE (7,996) VAR(1,N),VAR(2,N),VAR(5,N),VAR(6,N),VAR(7,N),VAR(11,N)
        //--the following line is for the breakdown of equilibrium in expansions (Sec 7.10)
        //  WRITE (7,996) VAR(1,N),VAR(2,N),VAR(12,N),VAR(4,N),VAR(5,N),VAR(8,N),VAR(9,N),VAR(10,N),VAR(11,N),VAR(19,N),VAR(20,N),VAR(21,N)
        //
    }
    if(calc->ISF==1)
        INITIALISE_SAMPLES();
    // CLOSE(7)
    file_7.close();
    //
    //--deallocate local variables
    //
    //dout
    for(int i=0;i<gas->MMVM+1;i++){
        delete [] TV[i];
    }
    delete [] TV;
    delete [] TVIB;
    delete [] VDOF;
    for(int i=0;i<gas->MSP+1;i++){
        delete [] THCOL[i];
    }
    delete [] THCOL;
    // DEALLOCATE (TV,TVIB,VDOF,THCOL,STAT=ERROR)
    // if(calc->ERROR)
    //     cout<<"PROGRAM COULD NOT DEALLOCATE OUTPUT VARIABLES"<<calc->ERROR;
    calc->TOUT=calc->TOUT+calc->DTOUT;
    return;
}

void COLLISIONS()
{
    //CALC calc;
    //MOLECS molecs;
    //GAS gas;
    //OUTPUT output;
    //GEOM_1D geom;
    start= clock();
    double duration;
    int N,NN,M,MM,L,LL,K,KK,KT,J,I,II,III,NSP,MAXLEV,IV,NSEL,KV,LS,MS,KS,JS,IIII,LZ,KL,IS,IREC,NLOOP,IA,IDISS,IEX,NEL,NAS,NPS,
    JJ,LIMLEV,KVV,KW,INIL,INIM,JI,LV,IVM,NMC,NVM,LSI,JX,MOLA,KR,JKV,NSC,KKV,IAX,NSTEP,NTRY,NLEVEL,NSTATE,IK,NK,MSI ;
    double A,AA,AAA,AB,B,BB,BBB,ABA,ASEL,DTC,SEP,VR,VRR,ECT,EVIB,ECC,ZV,ERM,C,OC,SD,D,CVR,PROB,RML,RMM,ECTOT,ETI,EREC,ET2,
    XMIN,XMAX,WFC,CENI,CENF,VRRT,EA,DEN,E1,E2,VRI,VRA ;
    double VRC[4],VCM[4],VRCP[4],VRCT[4];
    //   //N,M,K working integer
    // //LS,MS,KS,JS molecular species
    // //VRC components of the relative velocity
    // //RML,RMM molecule mass parameters
    // //VCM components of the center of mass velocity
    // //VRCP post-collision components of the relative velocity
    // //SEP the collision partner separation
    // //VRR the square of the relative speed
    // //VR the relative speed
    // //ECT relative translational energy
    // //EVIB vibrational energy
    // //ECC collision energy (rel trans +vib)
    // //MAXLEV maximum vibrational level
    // //ZV vibration collision number
    // //SDF the number of degrees of freedom associated with the collision
    // //ERM rotational energy
    // //NSEL integer number of selections
    // //NTRY number of attempts to find a second molecule
    // //CVR product of collision cross-section and relative speed
    // //PROB a probability
    // //KT third body molecule code
    // //ECTOT energy added at recmbination
    // //IREC initially 0, becomes 1 of a recombination occurs
    // //WFC weighting factor in the cell
    // //IEX is the reaction that occurs (1 if only one is possible)
    // //EA activation energy
    // //NPS the number of possible electronic states
    // //NAS the number of available electronic states
    //cout<<"START COLLISIONS"<<endl;
    //    dout
	cout<<geom->XB[1]<<" "<<geom->XB[2]<<endl;
    for( N=1;N<=geom->NCCELLS;N++)
    {    
        if((calc->FTIME-geom->CCELL[5][N])>geom->CCELL[3][N])
        {   
 	   // cout<<N <<"  "<<geom->CCELL[3][N]<<endl;
            DTC=2.e00*geom->CCELL[3][N];
            //calculate collisions appropriate to  time DTC
            if(geom->ICCELL[2][N]>1)
            {
                //no collisions calculated if there are less than two molecules in collision cell
                NN=geom->ICCELL[3][N];
                WFC=1.e00;
                if(geom->IWF==1 && geom->IVB==0)
                {
                    //dout
                    WFC=1.e00+geom->WFM*pow(geom->CELL[1][NN],geom->IFX);
                }
                geom->CCELL[5][N]=geom->CCELL[5][N]+DTC;
                if(geom->IVB==0)
                {
                    AAA=geom->CCELL[1][N];
                }
                if(geom->IVB==1)
                {
                    C=(geom->XB[2]+geom->VELOB*calc->FTIME-geom->XB[1])/(double)(geom->NDIV*geom->NCIS);
                    //dout
                    XMIN=geom->XB[1]+(double)(N-1)*C;
                    XMAX=XMIN+C;
                    //dout
                    WFC=1.e00+geom->WFM*pow((0.5e00*(XMIN+XMAX)),geom->IFX);
                    if(geom->IFX==0)
                    {
                        AAA=XMAX-XMIN;
                    }
                    if(geom->IFX==1)
                    {
                        AAA=PI*(pow(XMAX,2)-pow(XMIN,2)); //assumes unit length of full cylinder
                    }
                    if(geom->IFX==2)
                    {
                        AAA=1.33333333333333333333e00*PI*(pow(XMAX,3)-pow(XMIN,3));    //flow is in the full sphere
                    }
                }
                //these statements implement the N(N-1) scheme
                ASEL=0.5e00*geom->ICCELL[2][N]*(geom->ICCELL[2][N]-1)*WFC*calc->FNUM*geom->CCELL[4][N]*DTC/AAA+geom->CCELL[2][N];
                NSEL=ASEL;
                //dout
                geom->CCELL[2][N]=ASEL-(double)(NSEL);
                if(NSEL>0)
                {
                    I=0; //counts the number of selections
                    KL=0; //becomes 1 if it is the last selection
                    IIII=0; //becomes 1 if there is a recombination
                    for(KL=1;KL<=NSEL;KL++)
                    {
                        I=I+1;
                        III=0; //becomes 1 if there is no valid collision partner
                        if(geom->ICCELL[2][N]==2)
                        {
                            K=1+geom->ICCELL[1][N];
                            //dout
                            L=molecs->ICREF[K];
                            K=2+geom->ICCELL[1][N];
                            //dout
                            M=molecs->ICREF[K];
                            if(M==molecs->IPCP[L])
                            {
                                III=1;
                                geom->CCELL[5][N]=geom->CCELL[5][N]-DTC;
                            }
                        }
                        else
                        {
                            //dout
                            //                            RANDOM_NUMBER(RANF);
                            calc->RANF=((double)rand()/(double)RAND_MAX);
                            K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                            //dout
                            L=molecs->ICREF[K];
                            //one molecule has been selected at random
                            if(calc->NNC==0)
                            {
                                //select the collision partner at random
                                M=L;
                                NTRY=0;
                                while(M==L)
                                {
                                    //dout
                                    //                                    RANDOM_NUMBER(RANF);
                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                    K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                    M=molecs->ICREF[K];
                                    if(M==molecs->IPCP[L])
                                    {
                                        if(NTRY<5*geom->ICCELL[2][N])
                                        {
                                            M=L;
                                        }
                                        else
                                        {
                                            III = 1;
                                            geom->CCELL[5][N]=geom->CCELL[5][N]-DTC/ASEL;
                                            M=L+1;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //elect the nearest from the total number (< 30) or a random 30
                                if(geom->ICCELL[2][N]<30)
                                {
                                    LL=geom->ICCELL[2][N];
                                }
                                else
                                {
                                    LL=30;
                                }
                                SEP=1.0e10;
                                M=0;
                                for(J=1;J<=LL;J++)
                                {
                                    if(LL<30)
                                    {
                                        K=J+geom->ICCELL[1][N];
                                    }
                                    else
                                    {
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                    }
                                    MM=molecs->ICREF[K];
                                    if(MM != L)
                                    {
                                        //exclude the already selected molecule
                                        if(MM != molecs->IPCP[L])
                                        {
                                            //exclude the previous collision partner
                                            //dout
                                            A=fabs(molecs->PX[1][L]-molecs->PX[1][MM]);
                                            if(A<SEP&& A>1.e-8*geom->DDIV)
                                            {
                                                M=MM;
                                                SEP=A;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if(III==0)
                        {
                            for(KK=1;KK<=3;KK++)
                            {
                                VRC[KK]=molecs->PV[KK][L]-molecs->PV[KK][M];
                            }
                            VRR=VRC[1]*VRC[1]+VRC[2]*VRC[2]+VRC[3]*VRC[3];
                            VR=sqrt(VRR);
                            VRI=VR;
                            //Simple GAs
                            if(gas->MSP==1)
                            {
                                //dout
                                CVR=VR*gas->CXSS*pow(2.e00*BOLTZ*gas->SP[2][1]/(gas->RMAS*VRR),(gas->SP[3][1]-0.5e00))*gas->RGFS;
                                if(CVR>geom->CCELL[4][N])
                                {
                                    geom->CCELL[4][N]=CVR;
                                }
                                //dout
                                //                                RANDOM_NUMBER(RANF);
                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                if(calc->RANF<CVR/geom->CCELL[4][N])
                                {
                                    // the collision occurs
                                    if(M==molecs->IPCP[L]&& L==molecs->IPCP[M])
                                    {
                                        file_9<<"Duplicate collision"<<endl;
                                    }
                                    calc->TOTCOL=calc->TOTCOL+1.e00;
                                    calc->TCOL[1][1]=calc->TCOL[1][1]+2.e00;
                                    output->COLLS[NN]=output->COLLS[NN]+1.e000;
                                    output->WCOLLS[NN]=output->WCOLLS[NN]+WFC;
                                    //dout
                                    SEP=fabs(molecs->PX[1][L]-molecs->PX[1][M]);
                                    output->CLSEP[NN]=output->CLSEP[NN]+SEP;
                                    if(gas->ISPR[1][1]>0)
                                    {
                                        //Larsen-Borgnakke serial redistribution
                                        ECT=0.5e00*gas->RMAS*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            //consider the molecules in turn
                                            if(NSP==1)
                                            {
                                                K=L;
                                            }
                                            else
                                            {
                                                K=M;
                                            }
                                            if(gas->MMVM>0)
                                            {
                                                if(gas->ISPV[1]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[1];KV++)
                                                    {
                                                        EVIB=(double)(molecs->IPVIB[KV][K]*BOLTZ*gas->SPVM[1][KV][1]);
                                                        ECC=ECT+EVIB;
                                                        if(gas->SPVM[3][KV][1]>0.0)
                                                        {
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][1]);
                                                            B=gas->SPVM[4][KV][1]/gas->SPVM[3][KV][1]; //Tdiss/Tref
                                                            A= gas->SPVM[4][KV][1]/output->VAR[8][NN] ;//Tdiss/Ttrans
                                                            //ZV=(A**SPM(3,1,1))*(SPVM(3,KV,1)*(B**(-SPM(3,1,1))))**(((A**0.3333333D00)-1.D00)/((B**0.33333D00)-1.D00))
                                                            ZV=pow(A,gas->SPM[3][1][1])*pow(gas->SPVM[3][KV][1]*pow(B,-gas->SPM[3][1][1]),((pow(A,0.3333333e00)-1e00)/(pow(B,33333e00)-1.e00)));
                                                        }
                                                        else
                                                        {
                                                            ZV=gas->SPVM[2][KV][1];
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][1])+1;
                                                        }
                                                        //dout
                                                        //                                                        RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        if(1.e00/ZV>calc->RANF)
                                                        {
                                                            II=0;
                                                            while(II==0)
                                                            {
                                                                //dout
                                                                //                                                                RANDOM_NUMBER(RANF);
                                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                IV=calc->RANF*(MAXLEV+0.99999999e00);
                                                                molecs->IPVIB[KV][K]=IV;
                                                                EVIB=(double)(IV)*BOLTZ;
                                                                if(EVIB<ECC)
                                                                {
                                                                    PROB=pow((1.e00-EVIB/ECC),(1.5e00-gas->SPM[3][KV][1]));
                                                                    //PROB is the probability ratio of eqn (3.28)
                                                                    //dout
                                                                    //                                                                    RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    if(PROB>calc->RANF)
                                                                        II=1;
                                                                }
                                                            }
                                                            ECT=ECC-EVIB;
                                                        }
                                                    }
                                                }
                                            }
                                            //now rotation of this molecule
                                            //dout
                                            if(gas->ISPR[1][1] > 0)
                                            {
                                                if(gas->ISPR[2][1]==0)
                                                {
                                                    B=1.e00/gas->SPR[1][1];
                                                }
                                                else //use molecule rather than mean value
                                                {
                                                    B=1.e00/(gas->SPR[1][1]+gas->SPR[2][1]*output->VAR[8][NN]+gas->SPR[3][1]*pow(output->VAR[8][NN],2));
                                                }
                                                //dout
                                                //                                                RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF)
                                                {
                                                    ECC=ECT +molecs->PROT[K];
                                                    if(gas->ISPR[1][1]==2)
                                                    {
                                                        //dout
                                                        //                                                        RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        ERM=1.e00-pow(calc->RANF,1.e00/(2.5e00-gas->SP[3][1])); //eqn(5.46)
                                                    }
                                                    else
                                                    {
                                                        //dout
                                                        LBS(0.5e00*gas->ISPR[1][1]-1.e00,1.5e00-gas->SP[3][1],ERM);
                                                    }
                                                    molecs->PROT[K]=ERM*ECC;
                                                    ECT=ECC-molecs->PROT[K];
                                                }
                                            }
                                        }
                                        //adjust VR for the change in energy;
                                        VR=sqrt(2.e00*ECT/gas->SPM[1][1][1]);
                                    }
                                    //end of L-B redistribution
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        VCM[KK]=0.5e00*(molecs->PV[KK][L]+molecs->PV[KK][M]);
                                    }
                                    //dout
                                    if(fabs(gas->SP[4][1]-1.0) < 0.001)
                                    {
                                        //use the VHS logic //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*calc->RANF-1.e00;
                                        //B is the cosine of a random elevation angle
                                        A=sqrt(1.e00-B*B);
                                        VRCP[1]=B*VR;
                                        //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //C is a random azimuth angle
                                        //dout
                                        VRCP[2]=A*cos(C)*VR;
                                        VRCP[3]=A*sin(C)*VR;
                                    }
                                    else
                                    {
                                        //use the VSS logic //dout
                                        //                                        RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*(pow(calc->RANF,gas->SP[4][1]))-1.e00;
                                        //B is the cosine of the deflection angle for the VSS model (Eqn. 11.8) of Bird(1994))
                                        A=sqrt(1.e00-B*B);
                                        //dout
                                        //                                                 RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //dout
                                        OC=(double)cos(C);
                                        SD=(double)sin(C);
                                        D=sqrt(pow(VRC[2],2)+pow(VRC[3],2));
                                        VRA=VR/VRI;
                                        VRCP[1]=(B*VRC[1]+A*SD*D)*VRA;
                                        VRCP[2]=(B*VRC[2]+A*(VRI*VRC[3]*OC-VRC[1]*VRC[2]*SD)/D)*VRA;
                                        VRCP[3]=(B*VRC[2]+A*(VRI*VRC[2]*OC-VRC[1]*VRC[3]*SD)/D)*VRA;
                                        //the post-collision rel. velocity components are based on eqn (3.18)
                                    }
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        molecs->PV[KK][L]=VCM[KK]+0.5e00*VRCP[KK];
                                        molecs->PV[KK][M]=VCM[KK]-0.5e00*VRCP[KK];
                                    }
                                    molecs->IPCP[L]=M;
                                    molecs->IPCP[M]=L;
                                }
                            } //collision occurrence
                            else
                            {
                                //Gas Mixture
                                LS=fabs(molecs->IPSP[L]);
                                MS=fabs(molecs->IPSP[M]);
                                CVR=VR*gas->SPM[2][LS][MS]*pow(((2.e00*BOLTZ*gas->SPM[5][LS][MS])/((gas->SPM[1][LS][MS])*VRR)),(gas->SPM[3][LS][MS]-0.5e00))*gas->SPM[6][LS][MS];
                                if(CVR>geom->CCELL[4][N])
                                {
                                    geom->CCELL[4][N]=CVR;
                                }
                                //dout
                                //                                    RANDOM_NUMBER(RANF);
                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                if(calc->RANF<CVR/geom->CCELL[4][N] && molecs->IPCELL[L]>0 && molecs->IPCELL[M]>0)
                                {
                                    //the collision occurs (-ve IPCELL indicates recombined molecule marled for removal)
                                    if(M==molecs->IPCP[L] && L==molecs->IPCP[M])
                                    {
                                        file_9<<"Duplicate collision";
                                    }
                                    calc->TOTCOL=calc->TOTCOL+1.e00;
                                    calc->TCOL[LS][MS]=calc->TCOL[LS][MS]+1.e00;
                                    calc->TCOL[MS][LS]=calc->TCOL[MS][LS]+1.e00;
                                    output->COLLS[NN]=output->COLLS[NN]+1.e00;
                                    output->WCOLLS[NN]=output->WCOLLS[NN]+WFC;
                                    SEP=fabs(molecs->PX[1][L]-molecs->PX[1][M]);
                                    output->CLSEP[NN]=output->CLSEP[NN]+SEP;
                                    RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                    RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        VCM[KK]=RML*molecs->PV[KK][L]+RMM*molecs->PV[KK][M];
                                    }
                                    IDISS=0;
                                    IREC=0;
                                    IEX=0;
                                    //check for dissociation
                                    if(gas->ISPR[1][LS]>0 || gas->ISPR[1][MS]>0)
                                    {
                                        ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            if(NSP==1)
                                            {
                                                K=L; KS=LS; JS=MS;
                                            }
                                            else
                                            {
                                                K=M ; KS=MS ; JS=LS;
                                            }
                                            if(gas->MMVM>0)
                                            {
                                                if(gas->ISPV[KS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[KS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][K]>=0 && IDISS==0)
                                                        {
                                                            //do not redistribute to a dissociating molecule marked for removal
                                                            EVIB=(double)(molecs->IPVIB[KV][K]*BOLTZ*gas->SPVM[1][KV][KS]);
                                                            ECC=ECT+EVIB;
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                            LIMLEV=gas->SPVM[4][KV][KS]/gas->SPVM[1][KV][KS];
                                                            if(MAXLEV > LIMLEV)
                                                            {
                                                                //dissociation occurs subject to reduction factor  -  reflects the infinity of levels past the dissociation limit
                                                                //dout
                                                                //                                                                    RANDOM_NUMBER(RANF)
                                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                if(calc->RANF<gas->SPVM[5][KV][KS])
                                                                {
                                                                    IDISS=1;
                                                                    LZ=molecs->IPVIB[KV][K];
                                                                    output->NDISSL[LZ]=output->NDISSL[LZ]+1;
                                                                    ECT=ECT-BOLTZ*gas->SPVM[4][KV][KS]+EVIB;
                                                                    //adjust VR for the change in energy
                                                                    VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                                    VR=sqrt(VRR);
                                                                    molecs->IPVIB[KV][K]=-1;
                                                                    //a negative IPVIB marks a molecule for dissociation
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    IEX=0;    //becomes the reaction number if a reaction occurs
                                    IREC=0;   //becomes 1 if a recombination occurs
                                    if(IDISS==0)
                                    {
                                        //dissociation has not occurred
                                        //consider possible recombinations
                                        if(gas->ISPRC[LS][MS]>0 && geom->ICCELL[2][N]>2)
                                        {
                                            //possible recombination using model based on collision volume for equilibrium
                                            KT=L;
                                            //NTRY=0
                                            while(KT==L||KT==M)
                                            {
                                                NTRY+=1;
                                                // if(NTRY>100)
                                                // {
                                                //  cout>>"NTRY 3rd body"<<NTRY;
                                                // }
                                                //RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);\
                                                K=(int)(calc->RANF*(double)(geom->ICCELL[2][N]))+geom->ICCELL[1][N]+1;
                                                KT=molecs->ICREF[K];
                                            }
                                            KS=molecs->IPSP[KT];
                                            //the potential third body is KT OF species KS
                                            AA=(PI/6.e00)*pow((gas->SP[1][LS]+gas->SP[1][MS]+gas->SP[1][KS]),3); //reference volume
                                            BB=AA*gas->SPRC[1][LS][MS][KS]*pow(output->VAR[8][NN]/gas->SPVM[1][gas->ISPRK[LS][MS]][gas->ISPRC[LS][MS]],gas->SPRC[2][LS][MS][KS]);//collision volume
                                            B=BB*geom->ICCELL[2][N]*calc->FNUM/AAA;
                                            if(B>1.e00)
                                            {
                                                cout<<"THREE BODY PROBABILITY"<<B;
                                                //for low density flows in which three-body collisions are very rare, it is advisable to consider recombinations in only a small
                                                //fraction of collisions and to increase the pribability by the inverse of this fraction.  This message provides a warning if this
                                                //factor has been set to an excessively large value
                                            }
                                            //dout
                                            //                                                RANDOM_NUMBER(RANF);
                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                            if(calc->RANF<B)
                                            {
                                                IREC=1;
                                                calc->TRECOMB[gas->ISPRC[LS][MS]]=calc->TRECOMB[gas->ISPRC[LS][MS]]+1.e00;
                                                //the collision now becomes a collision between these with L having the center of mass velocity
                                                A=0.5e00*gas->SPM[1][LS][MS]*VRR ;//the relative energy of the recombining molecules
                                                if(gas->ISPR[1][LS]>0)
                                                    A=A+molecs->PROT[L];
                                                if(gas->MELE>1)
                                                    A=A+molecs->PELE[L];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[LS];KVV++)
                                                    {
                                                        JI=molecs->IPVIB[KVV][L];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        A=A+(double)(JI)*BOLTZ*gas->SPVM[1][KVV][LS];
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    A+=molecs->PROT[M];
                                                if(gas->MELE>1)
                                                    A=A+molecs->PELE[M];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[MS];KVV++)
                                                    {
                                                        JI=molecs->IPVIB[KVV][M];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        A=A+(double)(JI)*BOLTZ*gas->SPVM[1][KVV][MS];
                                                    }
                                                }
                                                gas->TREACL[2][LS]=gas->TREACL[2][LS]-1;
                                                gas->TREACL[2][MS]=gas->TREACL[2][MS]-1;
                                                LSI=LS;
                                                MSI=MS;
                                                LS=gas->ISPRC[LS][MS];
                                                molecs->IPSP[L]=LS;
                                                //any additional vibrational modes must be set to zero
                                                IVM=gas->ISPV[LSI];
                                                NMC=molecs->IPSP[L];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][L]=0;
                                                    }
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[KV]=0.e00;

                                                molecs->IPCELL[M]=-molecs->IPCELL[M]; //recombining molecule M marked for removal
                                                M=KT; //third body molecule is set as molecule M
                                                MS=KS;
                                                gas->TREACG[2][LS]=gas->TREACG[2][LS]+1;
                                                if(gas->ISPR[1][LS]>0)
                                                {
                                                    molecs->PROT[L]=0.e00;
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[L]=0.e00;
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[LS];KVV++)
                                                    {
                                                        if(molecs->IPVIB[KVV][L]<0)
                                                        {
                                                            molecs->IPVIB[KVV][L]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KVV][L]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                {
                                                    molecs->PROT[M]=molecs->PROT[KT];
                                                }
                                                if(gas->MELE>1)
                                                    molecs->PELE[M]=molecs->PELE[KT];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KVV=1;KVV<=gas->ISPV[MS];KVV++)
                                                    {
                                                        molecs->IPVIB[KVV][M]=molecs->IPVIB[KVV][KT];
                                                    }
                                                }
                                                ECTOT=A+gas->SPVM[4][1][LS]*BOLTZ ; //the energy added to this collision
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    molecs->PV[KK][L]=VCM[KK];
                                                }
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    VRC[KK]=molecs->PV[KK][L]-molecs->PV[KK][M];
                                                }
                                                VRR=VRC[1]*VRC[1]+VRC[2]*VRC[2]+VRC[3]*VRC[3];
                                                ECT=0.5e00*gas->SPM[1][LS][MS]*VRR*ECTOT;
                                                //set the vibrational energy of the recombined molecule L to enforce detailed balance
                                                IK=-1;
                                                NK=-1;
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                //NTRY=0;
                                                while(IK<0)
                                                {
                                                    // NTRY+=1;
                                                    // if(NTRY>100)
                                                    //   cout<<"NTRY VibEn"<<NTRY;
                                                    NK=NK+1;
                                                    BB=(output->VAR[8][NN]-gas->SPRT[1][LSI][MSI])*(gas->SPRP[2][LSI][MSI][NK]-gas->SPRP[1][LSI][MSI][NK])/(gas->SPRT[2][LSI][MSI]-gas->SPRT[1][LSI][MSI])-gas->SPRP[1][LSI][MSI][NK];
                                                    if(calc->RANF<BB)
                                                        IK=NK;
                                                }
                                                molecs->IPVIB[1][L]=IK;
                                                ECT=ECT-(double)(IK)*BOLTZ*gas->SPVM[1][gas->ISPRK[LSI][MSI]][LS];
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                VR=sqrt(VRR);
                                                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                                for(KK=1;KK<=3;KK++)
                                                {
                                                    VCM[KK]=RML*molecs->PV[KK][L]+RMM*molecs->PV[KK][M];
                                                }
                                            }
                                        }
                                        //consider exchange and chain reactions
                                        if(gas->NSPEX[LS][MS]>0 && IREC==0 && IDISS==0)
                                        {
                                            //possible exchange reaction
                                            //memset(gas->PSF,0.e00,sizeof(*gas->PSF));//gas->PSF=0.e00; //PSF(MMEX) PSF is the probability that this reaction will occur in this collision
                                            for(int i=0;i<gas->MMEX+1;i++)
                                                gas->PSF[i]=0.e00;
                                            
                                            for(JJ=1;JJ<=gas->NSPEX[LS][MS];JJ++)
                                            {
                                                if(LS==gas->ISPEX[JJ][1][LS][MS])
                                                {
                                                    K=L; KS=LS;JS=MS;
                                                }
                                                else
                                                {
                                                    K=M; KS=MS; JS=LS;
                                                }
                                                //the pre-collision molecule that splits is K of species KS
                                                if(gas->SPEX[3][JJ][LS][MS]<0.e00)
                                                    KV=gas->ISPEX[JJ][5][LS][MS];
                                                if(gas->SPEX[3][JJ][LS][MS]>0.e00)
                                                {
                                                    KV=gas->ISPEX[JJ][7][LS][MS];
                                                }
                                                JI=molecs->IPVIB[KV][K];
                                                if(JI<0)
                                                    JI=-JI;
                                                if(JI==99999)
                                                    JI=0;
                                                ECC=0.5e00*gas->SPM[1][LS][MS]*VRR+(double)(JI)*BOLTZ*gas->SPVM[1][KV][KS];
                                                if(gas->SPEX[3][JJ][KS][JS]>0.e00)
                                                {
                                                    //reverse exothermic reaction
                                                    gas->PSF[JJ]=(gas->SPEX[1][JJ][KS][JS]*pow(output->VAR[8][NN]/273.e00,gas->SPEX[2][JJ][KS][JS]))*exp(-gas->SPEX[6][JJ][KS][JS]/(BOLTZ*output->VAR[8][NN]));
                                                }
                                                else
                                                {
                                                    //forward endothermic reaction
                                                    MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                    EA=fabs(gas->SPEX[3][JJ][KS][JS]); //temporarily just the heat of reaction;
                                                    if(ECC>EA)
                                                    {
                                                        //the collision energy must exceed the heat of reaction
                                                        EA=EA+gas->SPEX[6][JJ][KS][JS]; //the activation energy now includes the energy barrier
                                                        DEN=0.e00;
                                                        for(IAX=0;IAX<=MAXLEV;IAX++)
                                                        {
                                                            DEN=DEN+pow((1.e00-(double)(IAX)*BOLTZ*gas->SPVM[1][KV][KS]/ECC),(1.5e00-gas->SPM[3][KS][JS]));
                                                        }
                                                        gas->PSF[JJ]=(double)(gas->ISPEX[JJ][6][LS][MS])*pow((1.e00-EA/ECC),(1.5e00-gas->SPM[3][KS][JS]))/DEN;
                                                    }
                                                }
                                            }
                                            if(gas->NSPEX[LS][MS]>1)
                                            {
                                                BB=0.e00;
                                                for(JJ=1;JJ<=gas->NSPEX[LS][MS];JJ++)
                                                {
                                                    BB=BB+gas->PSF[JJ];
                                                }
                                                //BB is the sum of the probabilities
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(BB>calc->RANF)
                                                {
                                                    BB=0.e00;
                                                    IEX=0;
                                                    JJ=0;
                                                    //NTRY=0;
                                                    while(JJ<gas->NSPEX[LS][MS]&& IEX==0)
                                                    {
                                                        // NTRY=NTRY+1;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout<<"NTRY find IEX"<<NTRY;
                                                        // }
                                                        JJ+=1;
                                                        BB+=gas->PSF[JJ];
                                                        if(BB>calc->RANF)
                                                            IEX=JJ;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                //dout
                                                //                                                    RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                IEX=0;
                                                if(gas->PSF[1]>calc->RANF)
                                                    IEX=1;
                                            }
                                            if(IEX>0)
                                            {
                                                //exchange or chain reaction occurs
                                                JX=gas->NEX[IEX][LS][MS];
                                                //cout<<"Reaction"<<JX;
                                                gas->TNEX[JX]=gas->TNEX[JX]+1.e00;
                                                //cout<<IEX<<L<<M<<LS<<MS;
                                                molecs->IPSP[L]=gas->ISPEX[IEX][3][LS][MS]; //L is now the new molecule that splits
                                                molecs->IPSP[M]=gas->ISPEX[IEX][4][LS][MS];
                                                LSI=LS;
                                                MSI=MS;
                                                //any additional vibrational modes must be set to zero
                                                IVM=gas->ISPV[LS];
                                                NMC=molecs->IPCP[L];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][L]=0;
                                                    }
                                                }
                                                IVM=gas->ISPV[MS];
                                                NMC=molecs->IPCP[M];
                                                NVM=gas->ISPV[NMC];
                                                if(NVM>IVM)
                                                {
                                                    for(KV=IVM+1;KV<=NVM;KV++)
                                                    {
                                                        molecs->IPVIB[KV][M]=0;
                                                    }
                                                }
                                                //put all pre-collision energies into the relative translational energy and adjust for the reaction energy
                                                ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                                if(gas->ISPR[1][LS]>0)
                                                    ECT=ECT+molecs->PROT[L];
                                                if(gas->MELE>1)
                                                    ECT=ECT+molecs->PELE[L];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[LS];KV++)
                                                    {
                                                        JI=molecs->IPVIB[KV][L];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        ECT=ECT+(double)(JI)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    ECT=ECT+molecs->PROT[M];
                                                if(gas->MELE>1)
                                                    ECT=ECT+molecs->PELE[M];
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[MS];KV++)
                                                    {
                                                        JI=molecs->IPVIB[KV][M];
                                                        if(JI<0)
                                                            JI=-JI;
                                                        if(JI==99999)
                                                            JI=0;
                                                        ECT=ECT+(double)(JI)*BOLTZ*gas->SPVM[1][KV][MS];
                                                    }
                                                }
                                                ECT=ECT+gas->SPEX[3][IEX][LS][MS];
                                                if(ECT<0.0)
                                                {
                                                    cout<<"-VE ECT "<<ECT<<endl;
                                                    cout<<"REACTION "<<JJ<<" BETWEEN "<<LS<<" "<<MS<<endl;
                                                    //dout
                                                    cin.get();
                                                    return ;
                                                }
                                                if(gas->SPEX[3][IEX][LS][MS]<0.e00)
                                                {
                                                    gas->TREACL[3][LS]=gas->TREACL[3][LS]-1;
                                                    gas->TREACL[3][MS]=gas->TREACL[3][MS]-1;
                                                    LS=molecs->IPSP[L] ;
                                                    MS=molecs->IPSP[M] ;
                                                    gas->TREACG[3][LS]=gas->TREACG[3][LS]+1;
                                                    gas->TREACG[3][MS]=gas->TREACG[3][MS]+1;
                                                }
                                                else
                                                {
                                                    gas->TREACL[4][LS]=gas->TREACL[4][LS]-1;
                                                    gas->TREACL[4][MS]=gas->TREACL[4][MS]-1;
                                                    LS=molecs->IPSP[L] ;
                                                    MS=molecs->IPSP[M] ;
                                                    gas->TREACG[4][LS]=gas->TREACG[4][LS]+1;
                                                    gas->TREACG[4][MS]=gas->TREACG[4][MS]+1;
                                                }
                                                RML=gas->SPM[1][LS][MS]/gas->SP[5][MS];
                                                RMM=gas->SPM[1][LS][MS]/gas->SP[5][LS];
                                                //calculate the new VRR to match ECT using the new molecular masses
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                                if(gas->ISPV[LS]>0)
                                                {
                                                    for(KV=1;gas->ISPV[LS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][L]<0)
                                                        {
                                                            molecs->IPVIB[KV][L]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KV][L]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][LS]>0)
                                                    molecs->PROT[L]=0;
                                                if(gas->MELE>1)
                                                    molecs->PELE[L]=0.e00;
                                                if(gas->ISPV[MS]>0)
                                                {
                                                    for(KV=1;gas->ISPV[MS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][M]<0)
                                                        {
                                                            molecs->IPVIB[KV][M]=-99999;
                                                        }
                                                        else
                                                        {
                                                            molecs->IPVIB[KV][M]=0;
                                                        }
                                                    }
                                                }
                                                if(gas->ISPR[1][MS]>0)
                                                    molecs->PROT[M]=0;
                                                if(gas->MELE>1)
                                                    molecs->PELE[M]=0.e00;
                                                //set vibrational level of product molecule in exothermic reaction to enforce detailed balance
                                                if(gas->SPEX[3][IEX][LSI][MSI]>0.e00)
                                                {
                                                    //exothermic exchange or chain reaction
                                                    IK=-1; //becomes 0 when the level is chosen
                                                    NK=-1;
                                                    //dout
                                                    //                                                        RANDOM_NUMBER(RANF);
                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                    //NTRY=0;
                                                    while(IK<0)
                                                    {
                                                        // NTRY=NTRY+1;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout>>"NTRY VibProd"<<NTRY<<endl;
                                                        // }
                                                        NK=NK+1;
                                                        BB=(output->VAR[8][NN]-gas->SPEX[4][IEX][LSI][MSI])*  (gas->SPREX[2][IEX][LSI][MSI][NK]-gas->SPREX[1][IEX][LSI][MSI][NK])/(gas->SPEX[5][IEX][LSI][MSI]-gas->SPEX[4][IEX][LSI][MSI])+gas->SPREX[1][IEX][LSI][MSI][NK];
                                                        if(calc->RANF<BB)
                                                            IK=NK;
                                                    }
                                                    if(gas->NSLEV[1][LS]>0)
                                                    {
                                                        IK+=gas->NSLEV[1][LS];
                                                        gas->NSLEV[1][LS]=0;
                                                    }
                                                    KV=gas->ISPEX[IEX][7][LSI][MSI];
                                                    molecs->IPVIB[KV][L]=IK;
                                                    EVIB=(double)(IK)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    ECT=ECT-EVIB;
                                                    if(ECT<0.e00)
                                                    {
                                                        //NTRY=0;
                                                        while(ECT<0.e00)
                                                        {
                                                            //NTRY+=1;
                                                            // if(NTRY>100)
                                                            //     cout<<"NTRY ECT<0"<<NTRY<<endl;
                                                            molecs->IPVIB[KV][L]=molecs->IPVIB[KV][L]-1;
                                                            gas->NSLEV[1][LS]+=1;
                                                            ECT=ECT+BOLTZ*gas->SPVM[1][KV][LS];
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    //for endothermic reaction, select vibration from vib. dist. at macroscopic temperature
                                                    //normal L-B selection would be from the excessively low energy after the endo. reaction
                                                    KV=gas->ISPEX[IEX][5][LS][MS];
                                                    //dout
                                                    SVIB(LS,output->VAR[8][NN],IK,KV);
                                                    if(gas->NSLEV[2][LS]>0)
                                                    {
                                                        IK=IK+gas->NSLEV[2][LS];
                                                        gas->NSLEV[2][LS]=0;
                                                    }
                                                    molecs->IPVIB[KV][L]=IK;
                                                    EVIB=(double)(IK)*BOLTZ*gas->SPVM[1][KV][LS];
                                                    ECT=ECT-EVIB;
                                                    if(ECT<0.e00)
                                                    {
                                                        //NTRY=0;
                                                        while(ECT<0.e00)
                                                        {
                                                            //NTRY+=1;
                                                            molecs->IPVIB[KV][L]-=1;
                                                            gas->NSLEV[2][LS]+=1;
                                                            ECT=ECT+BOLTZ*gas->SPVM[1][KV][LS];
                                                            // if(NTRY>100)
                                                            // {
                                                            //cout<<"NTRY ECT<0#2"<<NTRY<<endl;
                                                            // molecs->IPVIB[KV][L]=0;
                                                            //   ECT+=EVIB;
                                                            //   gas->NSLEV[2][LS]=0;
                                                            // }
                                                        }
                                                    }
                                                }
                                                //set rotational energy of molecule L to equilibrium at the macroscopic temperature
                                                SROT(LS,output->VAR[8][NN],molecs->PROT[L]);
                                                if(gas->SLER[LS]>1.e-21)
                                                {
                                                    molecs->PROT[L]+=gas->SLER[LS];
                                                    gas->SLER[LS]=1.e-21;
                                                }
                                                ECT-=molecs->PROT[L];
                                                ABA=molecs->PROT[L];
                                                if(ECT<0.e00)
                                                {
                                                    //NTRY=0;
                                                    while(ECT<0.e00)
                                                    {
                                                        //NTRY+=1;
                                                        BB=0.5e00*molecs->PROT[L];
                                                        gas->SLER[LS]+=BB;
                                                        molecs->PROT[L]=BB;
                                                        ECT+=BB;
                                                        // if(NTRY>100)
                                                        // {
                                                        //   cout<<"NTRY ECT<0#3"<<NTRY<<L<<endl;
                                                        //   ECT+=ABA;
                                                        //   molecs->PROT[L]=0;
                                                        //   gas->SLER[LS]=1.e-21;
                                                        // }
                                                    }
                                                }
                                                //calculate the new VRR to match ECT using the new molecular masses
                                                VRR=2.e00*ECT/gas->SPM[1][LS][MS];
                                            }
                                        }
                                    }
                            
                                        //end of reactions other than the deferred dissociation action in the DISSOCIATION subroutine
                                    if(IREC==0 && IDISS==0)
                                    {
                                        //recombined redistribution already made and there is a separate subroutine for dissociation
                                        //Larsen-Borgnakke serial redistribution
                                        ECT=0.5e00*gas->SPM[1][LS][MS]*VRR;
                                        for(NSP=1;NSP<=2;NSP++)
                                        {
                                            if(NSP==1)
                                            {
                                                K=L;KS=LS;JS=MS;
                                            }
                                            else
                                            {
                                                K=M; KS=MS; JS=LS;
                                            }
                                            //now electronic energy for this molecule
                                            if(gas->MELE>1)
                                            {
                                                B=1.e00/gas->QELC[3][1][KS];
                                                //dout
                                                //                                                        RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF)
                                                {
                                                    NPS=0;
                                                    ECC=ECT+molecs->PELE[K];
                                                    if(gas->NELL[KS]==1){
                                                        NPS=gas->QELC[1][1][KS]; //number of possible states is at least the degeneracy of the ground state
                                                    }
                                                    if(gas->NELL[KS]>1)
                                                    {
                                                        for(NEL=1;NEL<=gas->NELL[KS];NEL++)
                                                        {
                                                            if(ECC>BOLTZ*gas->QELC[2][NEL][KS])
                                                                NPS=NPS+gas->QELC[1][NEL][KS];
                                                        }
                                                        II=0;
                                                        //NTRY=0;
                                                        while(II==0)
                                                        {
                                                            //NTRY+=1;
                                                            // if(NTRY>100)
                                                            //           cout<<"NTRY ElecEn"<<NTRY<<endl;
                                                            //dout
                                                            //                                                                    RANDOM_NUMBER(RANF);
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            NSTATE=ceil(calc->RANF*NPS);//random state, now determine the energy level
                                                            NAS=0;
                                                            NLEVEL=-1;
                                                            for(NEL=1;NEL<=gas->NELL[KS];NEL++)
                                                            {
                                                                NAS= NAS+gas->QELC[1][NEL][KS];
                                                                if(NSTATE<=NAS && NLEVEL<0)
                                                                    NLEVEL=NEL;
                                                            }
                                                            //dout
                                                            //                                                                    RANDOM_NUMBER(RANF);
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            if((1.e00/(B*gas->QELC[3][NLEVEL][KS]))<calc->RANF)
                                                            {
                                                                II=1;
                                                            }
                                                            else
                                                            {
                                                                if(ECC>BOLTZ*gas->QELC[2][NLEVEL][KS])
                                                                {
                                                                    PROB=pow(1.e00-BOLTZ*gas->QELC[2][NLEVEL][KS]/ECC,(1.5e00-gas->SPM[3][KS][JS]));
                                                                    //dout
                                                                    //                                                                            RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    if(PROB>calc->RANF)
                                                                    {
                                                                        II=1;
                                                                        molecs->PELE[K]=BOLTZ*gas->QELC[2][NLEVEL][KS];
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        ECT=ECC-molecs->PELE[K];
                                                    }
                                                }
                                            }
                                            //now the vibrational energy for this molecule
                                            if(gas->MMVM>0 && IEX==0)
                                            {
                                                if(gas->ISPV[KS]>0)
                                                {
                                                    for(KV=1;KV<=gas->ISPV[KS];KV++)
                                                    {
                                                        if(molecs->IPVIB[KV][K]>=0 && IDISS==0) //do not redistribute to a dissociating molecule marked for removal
                                                        {
                                                            EVIB=(double)(molecs->IPVIB[KV][K])*BOLTZ*gas->SPVM[1][KV][KS];
                                                            ECC=ECT+EVIB;
                                                            MAXLEV=ECC/(BOLTZ*gas->SPVM[1][KV][KS]);
                                                            if(gas->SPVM[3][KV][KS]>0.0)
                                                            {   
                                                                B=gas->SPVM[4][KV][KS]/gas->SPVM[3][KV][KS];
                                                                A=gas->SPVM[4][KV][KS]/output->VAR[8][NN];
                                                               ZV = pow(A,gas->SPM[3][KS][JS])*pow((gas->SPVM[2][KV][KS]*pow(B,-gas->SPM[3][KS][JS])),((pow(A,0.3333333e00)-1.e00)/(pow(B,0.33333e00)-1.e00)));
                                                               
                                                            }
                                                            else
                                                                ZV=gas->SPVM[2][KV][KS];
                                                            //                                                                    RANDOM_NUMBER(RANF) //dout
                                                            calc->RANF=((double)rand()/(double)RAND_MAX);
                                                            if(1.e00/ZV>calc->RANF ||IREC==1)
                                                            {
                                                                II=0;
                                                                NSTEP=0;
                                                                while(II==0 && NSTEP<100000)
                                                                {
                                                                    NSTEP+=1;
                                                                    if(NSTEP>99000)
                                                                    {
                                                                        cout<<NSTEP<<" "<<ECC<<" "<<MAXLEV<<endl;
                                                                        //dout
                                                                        return ;
                                                                    }
                                                                    //                                                                            RANDOM_NUMBER(RANF);
                                                                    calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                    IV=calc->RANF*(MAXLEV+0.99999999e00);
                                                                    molecs->IPVIB[KV][K]=IV;
                                                                    EVIB=(double)(IV)*BOLTZ*gas->SPVM[1][KV][KS];
                                                                    if(EVIB<ECC)
                                                                    {
                                                                        PROB=pow(1.e00-EVIB/ECC,1.5e00-gas->SPVM[3][KS][JS]);
                                                                        //PROB is the probability ratio of eqn (3.28)
                                                                        //                                                                                RANDOM_NUMBER(RANF);
                                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                                        if(PROB>calc->RANF)
                                                                            II=1;
                                                                    }
                                                                }
                                                                ECT=ECC-EVIB;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            //now rotation of this molecule
                                            //dout
                                            if(gas->ISPR[1][KS] > 0)
                                            {
                                                if(gas->ISPR[2][KS]==0 && gas->ISPR[2][JS]==0)
                                                {
                                                    B=1.e00/gas->SPM[7][KS][JS];
                                                }
                                                else
                                                    B=1.e00/(gas->SPR[1][KS])+gas->SPR[2][KS]*output->VAR[8][NN]+gas->SPR[3][KS]*pow(output->VAR[8][NN],2);
                                                //                                                        RANDOM_NUMBER(RANF);
                                                calc->RANF=((double)rand()/(double)RAND_MAX);
                                                if(B>calc->RANF|| IREC==1)
                                                {
                                                    ECC=ECT+molecs->PROT[K];
                                                    if(gas->ISPR[1][KS]==2)
                                                    {
                                                        //                                                                RANDOM_NUMBER(RANF);
                                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                                        ERM=1.e00-pow(calc->RANF,(1.e00/(2.5e00-gas->SPM[3][KS][JS])));//eqn(5.46)
                                                    }
                                                    else
                                                        LBS(0.5e00*gas->ISPR[1][KS]-1.e00,1.5e00-gas->SPM[3][KS][JS],ERM);
                                                    molecs->PROT[K]=ERM*ECC;
                                                    ECT=ECC-molecs->PROT[K];
                                                }
                                            }
                                        }
                                        //adjust VR for the change in energy
                                        VR=sqrt(2.e00*ECT/gas->SPM[1][LS][MS]);
                                    }//end of L-B redistribution
                                    if(fabs(gas->SPM[8][LS][MS]-1.0)<0.001)
                                    {
                                        //use the VHS logic
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*calc->RANF-1.e00;
                                        //B is the cosine of a random elevation angle
                                        A=sqrt(1.e00-B*B);
                                        VRCP[1]=B*VR;
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        //C is a random azimuth angle;
                                        VRCP[2]=A*(double)cos(C)*VR;
                                        VRCP[3]=A*(double)sin(C)*VR;
                                    }
                                    else
                                    {
                                        //use the VSS logic
                                        //the VRCP terms do not allow properly for the change in VR - see new book  !STILL TO BE FIXED
                                        VRA=VR/VRI;
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        B=2.e00*pow(calc->RANF,gas->SP[4][1])-1.e00;
                                        // B is the cosine of the deflection angle for the VSS model
                                        A=sqrt(1.e00-B*B);
                                        //                                                RANDOM_NUMBER(RANF);
                                        calc->RANF=((double)rand()/(double)RAND_MAX);
                                        C=2.e00*PI*calc->RANF;
                                        OC=(double)cos(C);
                                        SD=(double)sin(C);
                                        D=sqrt(pow(VRC[2],2)+pow(VRC[3],2));
                                        VRCP[1]=(B*VRC[1]+A*SD*D)*VRA;
                                        VRCP[2]=(B*VRC[2]+A*(VRI*VRC[3]*OC-VRC[1]*VRC[2]*SD)/D)*VRA;
                                        VRCP[3]=(B*VRC[3]+A*(VRI*VRC[2]*OC+VRC[1]*VRC[3]*SD)/D)*VRA;
                                        //the post-collision rel. velocity components are based on eqn (3.18)
                                    }
                                    for(KK=1;KK<=3;KK++)
                                    {
                                        molecs->PV[KK][L]=VCM[KK]+RMM*VRCP[KK];
                                        molecs->PV[KK][M]=VCM[KK]-RMM*VRCP[KK];
                                    }
                                    molecs->IPCP[L]=M;
                                    molecs->IPCP[M]=L;
                                    //call energy(0,E2)
                                    // !              IF (Dfabs(E2-E1) > 1.D-14) read(*,*)
                                }////collision occurrence
                            }
                        }//separate simplegas / mixture coding
                    }
                }
            }
        }
    }//remove any recombined atoms
   duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;

    std::cout<<"printf: "<< duration <<'\n';

    for(N=1;N<=molecs->NM;N++)
    {
        if(molecs->IPCELL[N]<0)
            REMOVE_MOL(N); 
    }

    return;
}


	.text
	.file	"gpu_main.hip"
                                        # Start of file scope inline assembly
	.globl	_ZSt21ios_base_library_initv

                                        # End of file scope inline assembly
	.section	.text._ZN7ManageddlEPv,"axG",@progbits,_ZN7ManageddlEPv,comdat
	.weak	_ZN7ManageddlEPv                # -- Begin function _ZN7ManageddlEPv
	.p2align	1, 0x90
	.type	_ZN7ManageddlEPv,@function
_ZN7ManageddlEPv:                       # @_ZN7ManageddlEPv
.Lfunc_begin0:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception0
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movq	%rdi, %rbx
.Ltmp0:
	callq	hipDeviceSynchronize
.Ltmp1:
# %bb.1:
.Ltmp2:
	movq	%rbx, %rdi
	callq	hipFree
.Ltmp3:
# %bb.2:
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.LBB0_3:
	.cfi_def_cfa_offset 16
.Ltmp4:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end0:
	.size	_ZN7ManageddlEPv, .Lfunc_end0-_ZN7ManageddlEPv
	.cfi_endproc
	.section	.gcc_except_table._ZN7ManageddlEPv,"aG",@progbits,_ZN7ManageddlEPv,comdat
	.p2align	2, 0x0
GCC_except_table0:
.Lexception0:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase0-.Lttbaseref0
.Lttbaseref0:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
	.uleb128 .Ltmp0-.Lfunc_begin0           # >> Call Site 1 <<
	.uleb128 .Ltmp3-.Ltmp0                  #   Call between .Ltmp0 and .Ltmp3
	.uleb128 .Ltmp4-.Lfunc_begin0           #     jumps to .Ltmp4
	.byte	1                               #   On action: 1
.Lcst_end0:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase0:
	.p2align	2, 0x0
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function main
.LCPI1_0:
	.quad	0x3ff0000000000000              # double 1
	.text
	.globl	main
	.type	main,@function
main:                                   # @main
.Lfunc_begin1:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception1
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$560, %rsp                      # imm = 0x230
	.cfi_def_cfa_offset 608
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	leaq	32(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	movq	calc(%rip), %rax
	movabsq	$4294967297, %rcx               # imm = 0x100000001
	movq	%rcx, (%rax)
	movl	$1, 12(%rax)
	movl	$15, 64(%rax)
	movabsq	$4596373779694328218, %rcx      # imm = 0x3FC999999999999A
	movq	%rcx, 248(%rax)
	movabsq	$4602678819172646912, %rcx      # imm = 0x3FE0000000000000
	movq	%rcx, 256(%rax)
	movabsq	$8589934593, %rdx               # imm = 0x200000001
	movq	%rdx, 40(%rax)
	movabsq	$4617315517961601024, %rdx      # imm = 0x4014000000000000
	movq	%rdx, 136(%rax)
	movabsq	$4621819117588971520, %rdx      # imm = 0x4024000000000000
	movq	%rdx, 144(%rax)
	movq	%rcx, 208(%rax)
	movl	$0, 24(%rax)
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 272(%rax)
	movabsq	$4532020583610935537, %rcx      # imm = 0x3EE4F8B588E368F1
	movq	%rcx, 88(%rax)
.Ltmp5:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str, %esi
	movl	$12, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp6:
# %bb.1:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp7:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp8:
# %bb.2:                                # %.noexc237
.Ltmp9:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp10:
# %bb.3:                                # %.noexc238
.Ltmp11:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp12:
# %bb.4:                                # %_ZNSolsEPFRSoS_E.exit
.Ltmp13:
	movl	$file_9, %edi
	movl	$.L.str.7, %esi
	movl	$48, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp14:
# %bb.5:
	movl	$file_9+128, %edi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	je	.LBB1_6
# %bb.12:
.Ltmp15:
	movl	$file_9+16, %ebx
	movl	$file_9+16, %edi
	movl	$.L.str.8, %esi
	movl	$29, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp16:
# %bb.13:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit29
	movq	file_9+16(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp17:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp18:
# %bb.14:                               # %.noexc240
.Ltmp19:
	movsbl	%al, %esi
	movl	$file_9+16, %edi
	callq	_ZNSo3putEc
.Ltmp20:
# %bb.15:                               # %.noexc241
.Ltmp21:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp22:
# %bb.16:
	movl	$29, %edx
	movl	$.L.str.8, %esi
	jmp	.LBB1_7
.LBB1_6:
	movl	$54, %edx
	movl	$.L.str.9, %esi
.LBB1_7:                                # %.invoke410
.Ltmp23:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp24:
# %bb.8:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit33.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp25:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp26:
# %bb.9:                                # %.noexc248.invoke
.Ltmp27:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp28:
# %bb.10:                               # %.noexc249.invoke
.Ltmp29:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp30:
# %bb.11:                               # %_ZNSolsEPFRSoS_E.exit32
	xorl	%eax, %eax
	leaq	16(%rsp), %rbx
	movl	%eax, (%rbx)
	movq	geom(%rip), %rcx
	movl	%eax, 32(%rcx)
	movl	$_ZSt4cout, %r12d
	leaq	15(%rsp), %r14
.LBB1_22:                               # =>This Inner Loop Header: Depth=1
.Ltmp31:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.10, %esi
	movl	$12, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp32:
# %bb.23:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit35
                                        #   in Loop: Header=BB1_22 Depth=1
	movq	calc(%rip), %rax
	movl	(%rax), %esi
.Ltmp33:
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
.Ltmp34:
# %bb.24:                               #   in Loop: Header=BB1_22 Depth=1
	movq	%rax, %r15
	movb	$46, 15(%rsp)
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	cmpq	$0, 16(%r15,%rax)
	je	.LBB1_27
# %bb.25:                               #   in Loop: Header=BB1_22 Depth=1
.Ltmp35:
	movl	$1, %edx
	movq	%r15, %rdi
	movq	%r14, %rsi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp36:
# %bb.26:                               #   in Loop: Header=BB1_22 Depth=1
	movq	%rax, %r15
	jmp	.LBB1_28
.LBB1_27:                               #   in Loop: Header=BB1_22 Depth=1
.Ltmp37:
	movq	%r15, %rdi
	movl	$46, %esi
	callq	_ZNSo3putEc
.Ltmp38:
.LBB1_28:                               #   in Loop: Header=BB1_22 Depth=1
	movq	calc(%rip), %rax
	movl	4(%rax), %esi
.Ltmp39:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp40:
# %bb.29:                               #   in Loop: Header=BB1_22 Depth=1
	movq	%rax, %r15
	movb	$46, 15(%rsp)
	movq	(%rax), %rax
	movq	-24(%rax), %rax
	cmpq	$0, 16(%r15,%rax)
	je	.LBB1_32
# %bb.30:                               #   in Loop: Header=BB1_22 Depth=1
.Ltmp41:
	movl	$1, %edx
	movq	%r15, %rdi
	movq	%r14, %rsi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp42:
# %bb.31:                               #   in Loop: Header=BB1_22 Depth=1
	movq	%rax, %r15
	jmp	.LBB1_33
.LBB1_32:                               #   in Loop: Header=BB1_22 Depth=1
.Ltmp43:
	movq	%r15, %rdi
	movl	$46, %esi
	callq	_ZNSo3putEc
.Ltmp44:
.LBB1_33:                               #   in Loop: Header=BB1_22 Depth=1
	movq	calc(%rip), %rax
	movl	12(%rax), %esi
.Ltmp45:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp46:
# %bb.34:                               #   in Loop: Header=BB1_22 Depth=1
	movq	%rax, %r15
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r15, %rdi
.Ltmp47:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp48:
# %bb.35:                               # %.noexc252
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp49:
	movsbl	%al, %esi
	movq	%r15, %rdi
	callq	_ZNSo3putEc
.Ltmp50:
# %bb.36:                               # %.noexc253
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp51:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp52:
# %bb.37:                               # %_ZNSolsEPFRSoS_E.exit43
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp53:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.11, %esi
	movl	$33, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp54:
# %bb.38:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit45
                                        #   in Loop: Header=BB1_22 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp55:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp56:
# %bb.39:                               # %.noexc256
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp57:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp58:
# %bb.40:                               # %.noexc257
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp59:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp60:
# %bb.41:                               # %_ZNSolsEPFRSoS_E.exit47
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp61:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.12, %esi
	movl	$29, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp62:
# %bb.42:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit49
                                        #   in Loop: Header=BB1_22 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp63:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp64:
# %bb.43:                               # %.noexc260
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp65:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp66:
# %bb.44:                               # %.noexc261
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp67:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp68:
# %bb.45:                               # %_ZNSolsEPFRSoS_E.exit51
                                        #   in Loop: Header=BB1_22 Depth=1
.Ltmp69:
	movl	$_ZSt3cin, %edi
	movq	%rbx, %rsi
	callq	_ZNSirsERi
.Ltmp70:
# %bb.21:                               # %thread-pre-split
                                        #   in Loop: Header=BB1_22 Depth=1
	movl	16(%rsp), %eax
	leal	-3(%rax), %ecx
	cmpl	$-3, %ecx
	jbe	.LBB1_22
# %bb.46:
	cmpl	$1, %eax
	jne	.LBB1_52
# %bb.47:
.Ltmp72:
	movl	$file_9+16, %ebx
	movl	$file_9+16, %edi
	movl	$.L.str.13, %esi
	movl	$26, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp73:
# %bb.48:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit53
	movq	file_9+16(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp74:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp75:
# %bb.49:                               # %.noexc264
.Ltmp76:
	movsbl	%al, %esi
	movl	$file_9+16, %edi
	callq	_ZNSo3putEc
.Ltmp77:
# %bb.50:                               # %.noexc265
.Ltmp78:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp79:
# %bb.51:                               # %_ZNSolsEPFRSoS_E.exit55
	movl	16(%rsp), %eax
	cmpl	$2, %eax
	jne	.LBB1_127
.LBB1_52:                               # %_ZNSolsEPFRSoS_E.exit55.thread
.Ltmp80:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.14, %esi
	movl	$48, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp81:
# %bb.53:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit57
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp82:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp83:
# %bb.54:                               # %.noexc268
.Ltmp84:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp85:
# %bb.55:                               # %.noexc269
.Ltmp86:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp87:
# %bb.56:                               # %_ZNSolsEPFRSoS_E.exit59
.Ltmp88:
	leaq	20(%rsp), %rsi
	movl	$_ZSt3cin, %edi
	callq	_ZNSirsERi
.Ltmp89:
# %bb.57:
	cmpl	$1, 20(%rsp)
	jne	.LBB1_59
# %bb.58:
	movl	$18, %edx
	movl	$.L.str.15, %esi
	jmp	.LBB1_60
.LBB1_59:
	movl	$1, 16(%rsp)
	movl	$26, %edx
	movl	$.L.str.13, %esi
.LBB1_60:                               # %.invoke
.Ltmp90:
	movl	$file_9+16, %ebx
	movl	$file_9+16, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp91:
# %bb.61:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit65.invoke
	movq	file_9+16(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp92:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp93:
# %bb.62:                               # %.noexc276.invoke
.Ltmp94:
	movsbl	%al, %esi
	movl	$file_9+16, %edi
	callq	_ZNSo3putEc
.Ltmp95:
# %bb.63:                               # %.noexc277.invoke
.Ltmp96:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp97:
# %bb.64:                               # %_ZNSolsEPFRSoS_E.exit63
	movl	16(%rsp), %eax
	cmpl	$2, %eax
	jne	.LBB1_127
# %bb.65:
.Ltmp98:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.16, %esi
	movl	$33, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp99:
# %bb.66:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit69
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp100:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp101:
# %bb.67:                               # %.noexc280
.Ltmp102:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp103:
# %bb.68:                               # %.noexc281
.Ltmp104:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp105:
# %bb.69:                               # %_ZNSolsEPFRSoS_E.exit71
.Ltmp106:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.17, %esi
	movl	$38, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp107:
# %bb.70:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp108:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp109:
# %bb.71:                               # %.noexc284
.Ltmp110:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp111:
# %bb.72:                               # %.noexc285
.Ltmp112:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp113:
# %bb.73:                               # %_ZNSolsEPFRSoS_E.exit75
.Ltmp114:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.18, %esi
	movl	$44, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp115:
# %bb.74:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit77
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp116:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp117:
# %bb.75:                               # %.noexc288
.Ltmp118:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp119:
# %bb.76:                               # %.noexc289
.Ltmp120:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp121:
# %bb.77:                               # %_ZNSolsEPFRSoS_E.exit79
.Ltmp122:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.19, %esi
	movl	$40, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp123:
# %bb.78:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit81
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp124:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp125:
# %bb.79:                               # %.noexc292
.Ltmp126:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp127:
# %bb.80:                               # %.noexc293
.Ltmp128:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp129:
# %bb.81:                               # %_ZNSolsEPFRSoS_E.exit83
.Ltmp130:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.20, %esi
	movl	$40, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp131:
# %bb.82:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit85
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp132:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp133:
# %bb.83:                               # %.noexc296
.Ltmp134:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp135:
# %bb.84:                               # %.noexc297
.Ltmp136:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp137:
# %bb.85:                               # %_ZNSolsEPFRSoS_E.exit87
	movq	calc(%rip), %rsi
	addq	$56, %rsi
.Ltmp138:
	movl	$_ZSt3cin, %edi
	callq	_ZNSirsERi
.Ltmp139:
# %bb.86:
	movq	calc(%rip), %rax
	movl	$2, 60(%rax)
	movl	56(%rax), %edx
	movl	$1, %ecx
	cmpl	$2, %edx
	jl	.LBB1_88
# %bb.87:
	movl	$3, %ecx
	cmpl	$3, %edx
	jne	.LBB1_89
.LBB1_88:                               # %.sink.split
	movl	%ecx, 60(%rax)
.LBB1_89:
.Ltmp140:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.21, %esi
	movl	$41, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp141:
# %bb.90:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit89
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp142:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp143:
# %bb.91:                               # %.noexc300
.Ltmp144:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp145:
# %bb.92:                               # %.noexc301
.Ltmp146:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp147:
# %bb.93:                               # %_ZNSolsEPFRSoS_E.exit91
.Ltmp148:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.22, %esi
	movl	$41, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp149:
# %bb.94:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit93
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp150:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp151:
# %bb.95:                               # %.noexc304
.Ltmp152:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp153:
# %bb.96:                               # %.noexc305
.Ltmp154:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp155:
# %bb.97:                               # %_ZNSolsEPFRSoS_E.exit95
	movq	calc(%rip), %rsi
	addq	$20, %rsi
.Ltmp156:
	movl	$_ZSt3cin, %edi
	callq	_ZNSirsERi
.Ltmp157:
# %bb.98:
.Ltmp158:
	leaq	32(%rsp), %rdi
	movl	$.L.str.23, %esi
	movl	$48, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp159:
# %bb.99:
	leaq	160(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	je	.LBB1_104
# %bb.100:
.Ltmp170:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.24, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp171:
# %bb.101:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit97
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp172:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp173:
# %bb.102:                              # %.noexc308
.Ltmp174:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp175:
# %bb.103:                              # %.noexc309
.Ltmp176:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp177:
	jmp	.LBB1_109
.LBB1_104:
.Ltmp160:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.25, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp161:
# %bb.105:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit101
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp162:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp163:
# %bb.106:                              # %.noexc312
.Ltmp164:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp165:
# %bb.107:                              # %.noexc313
.Ltmp166:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp167:
# %bb.108:                              # %_ZNSolsEPFRSoS_E.exit103
.Ltmp168:
	movl	$_ZSt3cin, %edi
	callq	_ZNSi3getEv
.Ltmp169:
.LBB1_109:                              # %_ZNSolsEPFRSoS_E.exit99
	leaq	48(%rsp), %rdi
	movq	calc(%rip), %rax
	movl	56(%rax), %esi
.Ltmp178:
	callq	_ZNSolsEi
.Ltmp179:
# %bb.110:
	movq	calc(%rip), %rcx
	movl	20(%rcx), %esi
.Ltmp180:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp181:
# %bb.111:
.Ltmp182:
	leaq	32(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp183:
# %bb.112:
.Ltmp184:
	movl	$file_9+16, %edi
	movl	$.L.str.26, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp185:
# %bb.113:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit105
	movq	calc(%rip), %rax
	movl	56(%rax), %esi
.Ltmp186:
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
.Ltmp187:
# %bb.114:
.Ltmp188:
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp189:
# %bb.115:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit107
	movq	calc(%rip), %rax
	movl	20(%rax), %esi
.Ltmp190:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp191:
# %bb.116:
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp192:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp193:
# %bb.117:                              # %.noexc316
.Ltmp194:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp195:
# %bb.118:                              # %.noexc317
.Ltmp196:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp197:
# %bb.119:                              # %_ZNSolsEPFRSoS_E.exit109
.Ltmp198:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.26, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp199:
# %bb.120:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit111
	movq	calc(%rip), %rax
	movl	56(%rax), %esi
.Ltmp200:
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
.Ltmp201:
# %bb.121:
.Ltmp202:
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp203:
# %bb.122:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit113
	movq	calc(%rip), %rax
	movl	20(%rax), %esi
.Ltmp204:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp205:
# %bb.123:
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp206:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp207:
# %bb.124:                              # %.noexc320
.Ltmp208:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp209:
# %bb.125:                              # %.noexc321
.Ltmp210:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp211:
# %bb.126:                              # %_ZNSolsEPFRSoS_E.exit115thread-pre-split
	movl	16(%rsp), %eax
.LBB1_127:                              # %_ZNSolsEPFRSoS_E.exit115
	cmpl	$2, %eax
	je	.LBB1_145
# %bb.128:                              # %_ZNSolsEPFRSoS_E.exit115
	cmpl	$1, %eax
	jne	.LBB1_151
# %bb.129:
.Ltmp220:
	leaq	32(%rsp), %rdi
	movl	$.L.str.23, %esi
	movl	$8, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp221:
# %bb.130:
	leaq	160(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	je	.LBB1_135
# %bb.131:
.Ltmp232:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.24, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp233:
# %bb.132:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit117
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp234:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp235:
# %bb.133:                              # %.noexc324
.Ltmp236:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp237:
# %bb.134:                              # %.noexc325
.Ltmp238:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp239:
	jmp	.LBB1_140
.LBB1_145:
.Ltmp212:
	callq	_Z9READ_DATAv
.Ltmp213:
# %bb.146:
	movq	calc(%rip), %rax
	cmpl	$1, 56(%rax)
	jg	.LBB1_150
# %bb.147:
.Ltmp214:
	callq	_Z20SET_INITIAL_STATE_1Dv
.Ltmp215:
# %bb.148:
	movq	calc(%rip), %rax
	cmpl	$0, 56(%rax)
	jne	.LBB1_150
# %bb.149:
.Ltmp216:
	leaq	24(%rsp), %rsi
	xorl	%edi, %edi
	callq	_Z6ENERGYiRd
.Ltmp217:
.LBB1_150:                              # %.thread401
.Ltmp218:
	callq	_Z13WRITE_RESTARTv
.Ltmp219:
.LBB1_151:
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	88(%rax), %xmm1                 # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB1_195
# %bb.152:                              # %.lr.ph.preheader
	movl	$-177, %ebp
	movl	$_ZSt4cout, %r14d
.LBB1_153:                              # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	addsd	104(%rax), %xmm0
	movsd	%xmm0, 80(%rax)
.Ltmp249:
	movl	$file_9+16, %edi
	movl	$.L.str.43, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp250:
# %bb.154:                              #   in Loop: Header=BB1_153 Depth=1
	movq	file_9+16(%rip), %rax
	movq	-24(%rax), %rcx
	movq	$20, file_9+32(%rcx)
	movq	-24(%rax), %rax
	movq	$10, file_9+24(%rax)
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp251:
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp252:
# %bb.155:                              # %_ZNSolsEd.exit209
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp253:
	movq	%rax, %rbx
	movl	$.L.str.44, %esi
	movl	$6, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp254:
# %bb.156:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit211
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
.Ltmp255:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp256:
# %bb.157:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp257:
	movq	%rax, %rbx
	movl	$.L.str.45, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp258:
# %bb.158:                              #   in Loop: Header=BB1_153 Depth=1
	movq	(%rbx), %rax
	movq	-24(%rax), %rcx
	movl	24(%rbx,%rcx), %edx
	andl	%ebp, %edx
	orl	$32, %edx
	movl	%edx, 24(%rbx,%rcx)
	movq	-24(%rax), %rcx
	movq	$20, 16(%rbx,%rcx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rbx,%rax)
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp259:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp260:
# %bb.159:                              # %_ZNSolsEd.exit216
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp261:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp262:
# %bb.160:                              # %.noexc368
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp263:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp264:
# %bb.161:                              # %.noexc369
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp265:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp266:
# %bb.162:                              # %_ZNSolsEPFRSoS_E.exit218
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp267:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.46, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp268:
# %bb.163:                              #   in Loop: Header=BB1_153 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rcx
	movq	$20, _ZSt4cout+16(%rcx)
	movq	-24(%rax), %rax
	movq	$10, _ZSt4cout+8(%rax)
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp269:
	movl	$_ZSt4cout, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp270:
# %bb.164:                              # %_ZNSolsEd.exit222
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp271:
	movq	%rax, %rbx
	movl	$.L.str.44, %esi
	movl	$6, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp272:
# %bb.165:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit224
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
.Ltmp273:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp274:
# %bb.166:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp275:
	movq	%rax, %rbx
	movl	$.L.str.45, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp276:
# %bb.167:                              #   in Loop: Header=BB1_153 Depth=1
	movq	(%rbx), %rax
	movq	-24(%rax), %rcx
	movl	24(%rbx,%rcx), %edx
	andl	%ebp, %edx
	orl	$32, %edx
	movl	%edx, 24(%rbx,%rcx)
	movq	-24(%rax), %rcx
	movq	$20, 16(%rbx,%rcx)
	movq	-24(%rax), %rax
	movq	$10, 8(%rbx,%rax)
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp277:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp278:
# %bb.168:                              # %_ZNSolsEd.exit230
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp279:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp280:
# %bb.169:                              # %.noexc372
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp281:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp282:
# %bb.170:                              # %.noexc373
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp283:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp284:
# %bb.171:                              # %_ZNSolsEPFRSoS_E.exit232
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp285:
	callq	_Z17MOLECULES_MOVE_1Dv
.Ltmp286:
# %bb.172:                              #   in Loop: Header=BB1_153 Depth=1
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 4(%rax)
	je	.LBB1_174
# %bb.173:                              #   in Loop: Header=BB1_153 Depth=1
	testl	$-5, 8(%rax)
	jne	.LBB1_175
.LBB1_174:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp287:
	callq	_Z18MOLECULES_ENTER_1Dv
.Ltmp288:
.LBB1_175:                              #   in Loop: Header=BB1_153 Depth=1
	callq	_Z10INDEX_MOLSv
.Ltmp289:
	callq	_Z10COLLISIONSv
.Ltmp290:
# %bb.176:                              #   in Loop: Header=BB1_153 Depth=1
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	ucomisd	120(%rax), %xmm0
	jbe	.LBB1_186
# %bb.177:                              #   in Loop: Header=BB1_153 Depth=1
	movl	20(%rax), %ecx
	testl	%ecx, %ecx
	jne	.LBB1_180
# %bb.178:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp291:
	callq	_Z11SAMPLE_FLOWv
.Ltmp292:
# %bb.179:                              # %._crit_edge392
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	calc(%rip), %rax
	movl	20(%rax), %ecx
.LBB1_180:                              #   in Loop: Header=BB1_153 Depth=1
	cmpl	$1, %ecx
	jne	.LBB1_186
# %bb.181:                              #   in Loop: Header=BB1_153 Depth=1
	movsd	.LCPI1_0(%rip), %xmm0           # xmm0 = mem[0],zero
	subsd	208(%rax), %xmm0
	mulsd	192(%rax), %xmm0
	addsd	200(%rax), %xmm0
	ucomisd	80(%rax), %xmm0
	jbe	.LBB1_183
# %bb.182:                              #   in Loop: Header=BB1_153 Depth=1
	movsd	120(%rax), %xmm0                # xmm0 = mem[0],zero
	addsd	184(%rax), %xmm0
	movsd	%xmm0, 120(%rax)
	callq	_Z18INITIALISE_SAMPLESv
	movq	calc(%rip), %rax
	cmpl	$1, 20(%rax)
	jne	.LBB1_186
.LBB1_183:                              # %.thread402
                                        #   in Loop: Header=BB1_153 Depth=1
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI1_0(%rip), %xmm1           # xmm1 = mem[0],zero
	subsd	208(%rax), %xmm1
	mulsd	192(%rax), %xmm1
	addsd	200(%rax), %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB1_186
# %bb.184:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp293:
	callq	_Z11SAMPLE_FLOWv
.Ltmp294:
# %bb.185:                              # %._crit_edge399
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	calc(%rip), %rax
.LBB1_186:                              # %.thread403
                                        #   in Loop: Header=BB1_153 Depth=1
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	ucomisd	128(%rax), %xmm0
	jbe	.LBB1_194
# %bb.187:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp295:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.47, %esi
	movl	$14, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp296:
# %bb.188:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit234
                                        #   in Loop: Header=BB1_153 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp297:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp298:
# %bb.189:                              # %.noexc376
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp299:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp300:
# %bb.190:                              # %.noexc377
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp301:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp302:
# %bb.191:                              # %_ZNSolsEPFRSoS_E.exit236
                                        #   in Loop: Header=BB1_153 Depth=1
.Ltmp303:
	callq	_Z13WRITE_RESTARTv
.Ltmp304:
# %bb.192:                              #   in Loop: Header=BB1_153 Depth=1
.Ltmp305:
	callq	_Z14OUTPUT_RESULTSv
.Ltmp306:
# %bb.193:                              #   in Loop: Header=BB1_153 Depth=1
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 200(%rax)
.LBB1_194:                              #   in Loop: Header=BB1_153 Depth=1
	movsd	88(%rax), %xmm1                 # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	ja	.LBB1_153
.LBB1_195:                              # %._crit_edge
	leaq	32(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	xorl	%eax, %eax
	addq	$560, %rsp                      # imm = 0x230
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB1_135:
	.cfi_def_cfa_offset 608
.Ltmp222:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.25, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp223:
# %bb.136:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit121
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp224:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp225:
# %bb.137:                              # %.noexc328
.Ltmp226:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp227:
# %bb.138:                              # %.noexc329
.Ltmp228:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp229:
# %bb.139:                              # %_ZNSolsEPFRSoS_E.exit123
.Ltmp230:
	movl	$_ZSt3cin, %edi
	callq	_ZNSi3getEv
.Ltmp231:
.LBB1_140:                              # %_ZNSolsEPFRSoS_E.exit119
	movq	calc(%rip), %rsi
	addq	$56, %rsi
.Ltmp240:
	leaq	32(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp241:
# %bb.141:
	movq	calc(%rip), %rsi
	addq	$20, %rsi
.Ltmp242:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp243:
# %bb.142:
.Ltmp244:
	leaq	32(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp245:
# %bb.143:
.Ltmp246:
	callq	_Z12READ_RESTARTv
.Ltmp247:
# %bb.144:                              # %.unreachable
.LBB1_19:                               # %.loopexit.split-lp.loopexit.split-lp
.Ltmp248:
	jmp	.LBB1_20
.LBB1_17:                               # %.loopexit
.Ltmp307:
	jmp	.LBB1_20
.LBB1_18:                               # %.loopexit.split-lp.loopexit
.Ltmp71:
.LBB1_20:                               # %.loopexit.split-lp
	movq	%rax, %rbx
	leaq	32(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end1:
	.size	main, .Lfunc_end1-main
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table1:
.Lexception1:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
	.uleb128 .Lfunc_begin1-.Lfunc_begin1    # >> Call Site 1 <<
	.uleb128 .Ltmp5-.Lfunc_begin1           #   Call between .Lfunc_begin1 and .Ltmp5
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp5-.Lfunc_begin1           # >> Call Site 2 <<
	.uleb128 .Ltmp30-.Ltmp5                 #   Call between .Ltmp5 and .Ltmp30
	.uleb128 .Ltmp248-.Lfunc_begin1         #     jumps to .Ltmp248
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp31-.Lfunc_begin1          # >> Call Site 3 <<
	.uleb128 .Ltmp70-.Ltmp31                #   Call between .Ltmp31 and .Ltmp70
	.uleb128 .Ltmp71-.Lfunc_begin1          #     jumps to .Ltmp71
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp72-.Lfunc_begin1          # >> Call Site 4 <<
	.uleb128 .Ltmp219-.Ltmp72               #   Call between .Ltmp72 and .Ltmp219
	.uleb128 .Ltmp248-.Lfunc_begin1         #     jumps to .Ltmp248
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp249-.Lfunc_begin1         # >> Call Site 5 <<
	.uleb128 .Ltmp306-.Ltmp249              #   Call between .Ltmp249 and .Ltmp306
	.uleb128 .Ltmp307-.Lfunc_begin1         #     jumps to .Ltmp307
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp222-.Lfunc_begin1         # >> Call Site 6 <<
	.uleb128 .Ltmp247-.Ltmp222              #   Call between .Ltmp222 and .Ltmp247
	.uleb128 .Ltmp248-.Lfunc_begin1         #     jumps to .Ltmp248
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp247-.Lfunc_begin1         # >> Call Site 7 <<
	.uleb128 .Lfunc_end1-.Ltmp247           #   Call between .Ltmp247 and .Lfunc_end1
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end1:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_Z12READ_RESTARTv               # -- Begin function _Z12READ_RESTARTv
	.type	_Z12READ_RESTARTv,@function
_Z12READ_RESTARTv:                      # @_Z12READ_RESTARTv
.Lfunc_begin2:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception2
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$528, %rsp                      # imm = 0x210
	.cfi_def_cfa_offset 560
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsp, %r14
	movq	%r14, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	leaq	128(%rsp), %rbx
	movl	$_ZSt4cout, %r15d
.LBB2_1:                                # %_ZNSolsEPFRSoS_E.exit5
                                        # =>This Inner Loop Header: Depth=1
.Ltmp308:
	movl	$.L.str.190, %esi
	movq	%r14, %rdi
	movl	$12, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp309:
# %bb.2:                                #   in Loop: Header=BB2_1 Depth=1
	movq	%rbx, %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	jne	.LBB2_3
# %bb.36:                               #   in Loop: Header=BB2_1 Depth=1
.Ltmp310:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.192, %esi
	movl	$26, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp311:
# %bb.37:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit4
                                        #   in Loop: Header=BB2_1 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r15, %rdi
.Ltmp312:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp313:
# %bb.38:                               # %.noexc33
                                        #   in Loop: Header=BB2_1 Depth=1
.Ltmp314:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp315:
# %bb.39:                               # %.noexc34
                                        #   in Loop: Header=BB2_1 Depth=1
.Ltmp316:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp317:
	jmp	.LBB2_1
.LBB2_3:
.Ltmp319:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.191, %esi
	movl	$34, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp320:
# %bb.4:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp321:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp322:
# %bb.5:                                # %.noexc
.Ltmp323:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp324:
# %bb.6:                                # %.noexc31
.Ltmp325:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp326:
# %bb.7:                                # %_ZNSolsEPFRSoS_E.exit
	movq	geom(%rip), %rsi
	addq	$4, %rsi
.Ltmp327:
	movq	%rsp, %rdi
	callq	_ZNSirsERi
.Ltmp328:
# %bb.8:
	movq	geom(%rip), %rsi
.Ltmp329:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp330:
# %bb.9:
	movl	$432, %esi                      # imm = 0x1B0
	addq	gas(%rip), %rsi
.Ltmp331:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp332:
# %bb.10:
	movl	$428, %esi                      # imm = 0x1AC
	addq	gas(%rip), %rsi
.Ltmp333:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp334:
# %bb.11:
	movq	molecs(%rip), %rsi
	addq	$84, %rsi
.Ltmp335:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp336:
# %bb.12:
	movl	$436, %esi                      # imm = 0x1B4
	addq	gas(%rip), %rsi
.Ltmp337:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp338:
# %bb.13:
	movl	$424, %esi                      # imm = 0x1A8
	addq	gas(%rip), %rsi
.Ltmp339:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp340:
# %bb.14:
	movq	geom(%rip), %rsi
	addq	$20, %rsi
.Ltmp341:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp342:
# %bb.15:
	movq	geom(%rip), %rsi
	addq	$16, %rsi
.Ltmp343:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp344:
# %bb.16:
	movl	$444, %esi                      # imm = 0x1BC
	addq	gas(%rip), %rsi
.Ltmp345:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp346:
# %bb.17:
	movl	$448, %esi                      # imm = 0x1C0
	addq	gas(%rip), %rsi
.Ltmp347:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp348:
# %bb.18:
	movl	$452, %esi                      # imm = 0x1C4
	addq	gas(%rip), %rsi
.Ltmp349:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp350:
# %bb.19:
	movl	$456, %esi                      # imm = 0x1C8
	addq	gas(%rip), %rsi
.Ltmp351:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp352:
# %bb.20:
	movq	calc(%rip), %rsi
	addq	$60, %rsi
.Ltmp353:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp354:
# %bb.21:
.Ltmp355:
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp356:
# %bb.22:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB2_40
# %bb.23:
	movq	molecs(%rip), %rdi
	movq	calc(%rip), %rax
	movl	60(%rax), %esi
	incl	%esi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	40(%rdi), %rcx
.Ltmp377:
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp378:
# %bb.24:
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$56, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp379:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp380:
# %bb.25:                               # %_ZN6MOLECS10d_allocateEiRPd.exit
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp381:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp382:
# %bb.26:                               # %_ZN6MOLECS10d_allocateEiRPd.exit6
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	leaq	4(,%rax,4), %rsi
.Ltmp383:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp384:
# %bb.27:                               # %_ZN6MOLECS10i_allocateEiRPi.exit
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$8, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp385:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp386:
# %bb.28:                               # %_ZN6MOLECS10i_allocateEiRPi.exit7
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$16, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp387:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp388:
# %bb.29:                               # %_ZN6MOLECS10i_allocateEiRPi.exit8
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$24, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp389:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp390:
# %bb.30:                               # %_ZN6MOLECS10i_allocateEiRPi.exit9
	movq	molecs(%rip), %rdi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	48(%rdi), %rcx
.Ltmp391:
	movl	$4, %esi
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp392:
# %bb.31:
	movq	molecs(%rip), %rdi
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	incl	%esi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	32(%rdi), %rcx
.Ltmp393:
	callq	_ZN6MOLECS10i_allocateEiiRPPi
.Ltmp394:
	jmp	.LBB2_51
.LBB2_40:
	movq	molecs(%rip), %rdi
	movq	calc(%rip), %rcx
	movl	60(%rcx), %esi
	incl	%esi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	40(%rdi), %rcx
	cmpl	$0, 432(%rax)
	jle	.LBB2_44
# %bb.41:
.Ltmp361:
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp362:
# %bb.42:
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$56, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp363:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp364:
# %bb.43:                               # %_ZN6MOLECS10d_allocateEiRPd.exit11
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp365:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp366:
	jmp	.LBB2_46
.LBB2_44:
.Ltmp357:
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp358:
# %bb.45:
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$56, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp359:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp360:
.LBB2_46:                               # %_ZN6MOLECS10d_allocateEiRPd.exit18.invoke
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	leaq	4(,%rax,4), %rsi
.Ltmp367:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp368:
# %bb.47:                               # %_ZN6MOLECS10i_allocateEiRPi.exit19.invoke
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$8, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp369:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp370:
# %bb.48:                               # %_ZN6MOLECS10i_allocateEiRPi.exit20.invoke
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$16, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp371:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp372:
# %bb.49:                               # %_ZN6MOLECS10i_allocateEiRPi.exit21.invoke
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$24, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp373:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp374:
# %bb.50:                               # %_ZN6MOLECS10i_allocateEiRPi.exit22.invoke
	movq	molecs(%rip), %rdi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	48(%rdi), %rcx
.Ltmp375:
	movl	$4, %esi
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp376:
.LBB2_51:                               # %.invoke
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$72, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp395:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp396:
# %bb.52:                               # %_ZN6MOLECS10d_allocateEiRPd.exit10
	movq	geom(%rip), %rdi
	movl	16(%rdi), %edx
	movl	20(%rdi), %esi
	incl	%esi
	incl	%edx
	leaq	64(%rdi), %rcx
.Ltmp397:
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
.Ltmp398:
# %bb.53:
	movq	geom(%rip), %rdi
	movl	(%rdi), %edx
	incl	%edx
	leaq	136(%rdi), %rcx
.Ltmp399:
	movl	$5, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
.Ltmp400:
# %bb.54:
	movq	geom(%rip), %rdi
	movslq	(%rdi), %rax
	addq	$48, %rdi
	leaq	4(,%rax,4), %rsi
.Ltmp401:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp402:
# %bb.55:                               # %_ZN7GEOM_1D10i_allocateEiRPi.exit
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	leaq	144(%rdi), %rcx
.Ltmp403:
	movl	$6, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
.Ltmp404:
# %bb.56:
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	leaq	56(%rdi), %rcx
.Ltmp405:
	movl	$4, %esi
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
.Ltmp406:
# %bb.57:
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp407:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp408:
# %bb.58:                               # %_ZN6OUTPUT10d_allocateEiRPd.exit
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$72, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp409:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp410:
# %bb.59:                               # %_ZN6OUTPUT10d_allocateEiRPd.exit24
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$80, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp411:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp412:
# %bb.60:                               # %_ZN6OUTPUT10d_allocateEiRPd.exit25
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movslq	436(%rax), %rax
	addq	$88, %rdi
	leaq	8(,%rax,8), %rsi
.Ltmp413:
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp414:
# %bb.61:                               # %_ZN6OUTPUT10d_allocateEiRPd.exit26
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	leaq	136(%rdi), %rcx
.Ltmp415:
	movl	$24, %esi
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
.Ltmp416:
# %bb.62:
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	incl	%ecx
	leaq	176(%rdi), %r8
.Ltmp417:
	movl	$13, %esi
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
.Ltmp418:
# %bb.63:
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	addl	$36, %esi
	leaq	144(%rdi), %rcx
.Ltmp419:
	movl	$3, %edx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
.Ltmp420:
# %bb.64:
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	leal	10(%rcx), %esi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	incl	%ecx
	leaq	168(%rdi), %r8
.Ltmp421:
                                        # kill: def $ecx killed $ecx killed $rcx
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
.Ltmp422:
# %bb.65:
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	incl	%ecx
	leaq	192(%rdi), %r9
.Ltmp423:
	movl	$9, %esi
	movl	$3, %edx
	movl	$3, %r8d
	callq	_ZN6OUTPUT10d_allocateEiiiiRPPPPd
.Ltmp424:
# %bb.66:
	movq	output(%rip), %rdi
	leaq	152(%rdi), %rcx
.Ltmp425:
	movl	$7, %esi
	movl	$3, %edx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
.Ltmp426:
# %bb.67:
	movq	gas(%rip), %rax
	movl	428(%rax), %edx
	testl	%edx, %edx
	js	.LBB2_70
# %bb.68:
	movq	output(%rip), %rdi
	movl	424(%rax), %esi
	incl	%esi
	incl	%edx
	leaq	184(%rdi), %r8
.Ltmp427:
	movl	$151, %ecx
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
.Ltmp428:
# %bb.69:
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movl	428(%rax), %edx
	incl	%esi
	incl	%edx
	leaq	160(%rdi), %rcx
.Ltmp429:
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
.Ltmp430:
.LBB2_70:
.Ltmp431:
	callq	_Z12ALLOCATE_GASv
.Ltmp432:
# %bb.71:                               # %_ZNSolsEPFRSoS_E.exit30.preheader
	movq	%rsp, %r14
.LBB2_72:                               # %_ZNSolsEPFRSoS_E.exit30
                                        # =>This Inner Loop Header: Depth=1
.Ltmp433:
	movl	$.L.str.193, %esi
	movq	%r14, %rdi
	movl	$12, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp434:
# %bb.73:                               #   in Loop: Header=BB2_72 Depth=1
	movq	%rbx, %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	jne	.LBB2_74
# %bb.82:                               #   in Loop: Header=BB2_72 Depth=1
.Ltmp435:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.195, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp436:
# %bb.83:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit29
                                        #   in Loop: Header=BB2_72 Depth=1
.Ltmp437:
	movl	$_ZSt4cout, %edi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp438:
	jmp	.LBB2_72
.LBB2_74:
.Ltmp440:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.194, %esi
	movl	$31, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp441:
# %bb.75:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit27
.Ltmp442:
	movl	$_ZSt4cout, %edi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp443:
# %bb.76:                               # %_ZNSolsEPFRSoS_E.exit28
.Ltmp444:
	movq	%rsp, %rdi
	movl	$calc, %esi
	movl	$8, %edx
	callq	_ZNSi4readEPcl
.Ltmp445:
# %bb.77:
.Ltmp446:
	movq	%rsp, %rdi
	movl	$molecs, %esi
	movl	$8, %edx
	callq	_ZNSi4readEPcl
.Ltmp447:
# %bb.78:
.Ltmp448:
	movq	%rsp, %rdi
	movl	$gas, %esi
	movl	$8, %edx
	callq	_ZNSi4readEPcl
.Ltmp449:
# %bb.79:
.Ltmp450:
	movq	%rsp, %rdi
	movl	$geom, %esi
	movl	$8, %edx
	callq	_ZNSi4readEPcl
.Ltmp451:
# %bb.80:
.Ltmp452:
	movq	%rsp, %rdi
	movl	$output, %esi
	movl	$8, %edx
	callq	_ZNSi4readEPcl
.Ltmp453:
# %bb.81:
.Ltmp454:
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp455:
# %bb.84:
.LBB2_32:                               # %.loopexit
.Ltmp439:
	jmp	.LBB2_35
.LBB2_34:                               # %.loopexit.split-lp.loopexit.split-lp
.Ltmp456:
	jmp	.LBB2_35
.LBB2_33:                               # %.loopexit.split-lp.loopexit
.Ltmp318:
.LBB2_35:                               # %.loopexit.split-lp
	movq	%rax, %rbx
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end2:
	.size	_Z12READ_RESTARTv, .Lfunc_end2-_Z12READ_RESTARTv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table2:
.Lexception2:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end2-.Lcst_begin2
.Lcst_begin2:
	.uleb128 .Lfunc_begin2-.Lfunc_begin2    # >> Call Site 1 <<
	.uleb128 .Ltmp308-.Lfunc_begin2         #   Call between .Lfunc_begin2 and .Ltmp308
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp308-.Lfunc_begin2         # >> Call Site 2 <<
	.uleb128 .Ltmp317-.Ltmp308              #   Call between .Ltmp308 and .Ltmp317
	.uleb128 .Ltmp318-.Lfunc_begin2         #     jumps to .Ltmp318
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp319-.Lfunc_begin2         # >> Call Site 3 <<
	.uleb128 .Ltmp432-.Ltmp319              #   Call between .Ltmp319 and .Ltmp432
	.uleb128 .Ltmp456-.Lfunc_begin2         #     jumps to .Ltmp456
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp433-.Lfunc_begin2         # >> Call Site 4 <<
	.uleb128 .Ltmp438-.Ltmp433              #   Call between .Ltmp433 and .Ltmp438
	.uleb128 .Ltmp439-.Lfunc_begin2         #     jumps to .Ltmp439
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp440-.Lfunc_begin2         # >> Call Site 5 <<
	.uleb128 .Ltmp455-.Ltmp440              #   Call between .Ltmp440 and .Ltmp455
	.uleb128 .Ltmp456-.Lfunc_begin2         #     jumps to .Ltmp456
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp455-.Lfunc_begin2         # >> Call Site 6 <<
	.uleb128 .Lfunc_end2-.Ltmp455           #   Call between .Ltmp455 and .Lfunc_end2
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end2:
	.p2align	2, 0x0
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z14ADAPT_CELLS_1Dv
.LCPI3_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI3_1:
	.quad	0x3ff8000000000000              # double 1.5
.LCPI3_2:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI3_3:
	.quad	0xbfe0000000000000              # double -0.5
	.text
	.globl	_Z14ADAPT_CELLS_1Dv
	.type	_Z14ADAPT_CELLS_1Dv,@function
_Z14ADAPT_CELLS_1Dv:                    # @_Z14ADAPT_CELLS_1Dv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	geom(%rip), %rax
	movl	(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB3_1
# %bb.2:                                # %.lr.ph
	movq	output(%rip), %rdx
	movq	136(%rdx), %rdx
	movq	24(%rdx), %rdx
	movq	gas(%rip), %rsi
	movsd	80(%rsi), %xmm1                 # xmm1 = mem[0],zero
	incq	%rcx
	movsd	.LCPI3_0(%rip), %xmm0           # xmm0 = mem[0],zero
	movl	$1, %esi
.LBB3_3:                                # =>This Inner Loop Header: Depth=1
	movapd	%xmm0, %xmm2
	movsd	(%rdx,%rsi,8), %xmm0            # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
	maxsd	%xmm2, %xmm0
	incq	%rsi
	cmpq	%rsi, %rcx
	jne	.LBB3_3
# %bb.4:                                # %._crit_edge
	movsd	%xmm0, 8(%rsp)
	movl	$0, 20(%rax)
	ucomisd	.LCPI3_1(%rip), %xmm0
	jbe	.LBB3_8
# %bb.5:                                # %.lr.ph252.preheader
	xorl	%ecx, %ecx
	movsd	.LCPI3_2(%rip), %xmm1           # xmm1 = mem[0],zero
	movsd	.LCPI3_1(%rip), %xmm2           # xmm2 = mem[0],zero
.LBB3_6:                                # %.lr.ph252
                                        # =>This Inner Loop Header: Depth=1
	incl	%ecx
	mulsd	%xmm1, %xmm0
	ucomisd	%xmm2, %xmm0
	ja	.LBB3_6
# %bb.7:
	cmpl	$2, %ecx
	movl	$2, %edx
	cmovbl	%ecx, %edx
	movl	%edx, 20(%rax)
	jmp	.LBB3_8
.LBB3_1:                                # %._crit_edge.thread
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 8(%rsp)
	movl	$0, 20(%rax)
.LBB3_8:                                # %.thread
	movl	$file_9+16, %edi
	movl	$.L.str.161, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	20(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	movl	20(%rax), %edi
	movsd	.LCPI3_0(%rip), %xmm0           # xmm0 = mem[0],zero
	callq	ldexp@PLT
	cvttsd2si	%xmm0, %r13d
	movq	geom(%rip), %r15
	imull	12(%r15), %r13d
	movslq	20(%r15), %r14
	cmpq	$-1, %r14
	leaq	8(,%r14,8), %rdi
	movq	$-1, %r12
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	%rax, %rbx
	testq	%r14, %r14
	js	.LBB3_11
# %bb.9:                                # %.lr.ph260
	movslq	%r13d, %rax
	leaq	4(,%rax,4), %r14
	cmpl	$-1, %eax
	cmovlq	%r12, %r14
.LBB3_10:                               # =>This Inner Loop Header: Depth=1
	movq	%r14, %rdi
	callq	_Znam
	movq	%rax, 8(%rbx,%r12,8)
	movslq	20(%r15), %rax
	incq	%r12
	cmpq	%rax, %r12
	jl	.LBB3_10
.LBB3_11:                               # %._crit_edge261
	testl	%r13d, %r13d
	jle	.LBB3_14
# %bb.12:                               # %.lr.ph265.preheader
	movq	128(%r15), %rax
	movsd	16(%rax), %xmm1                 # xmm1 = mem[0],zero
	subsd	8(%rax), %xmm1
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r13d, %xmm0
	divsd	%xmm0, %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	negl	%r13d
	movl	$1, %ebp
	leaq	8(%rsp), %r14
	leaq	36(%rsp), %r15
	leaq	32(%rsp), %r12
.LBB3_13:                               # %.lr.ph265
                                        # =>This Inner Loop Header: Depth=1
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ebp, %xmm0
	addsd	.LCPI3_3(%rip), %xmm0
	mulsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	8(%rax), %xmm0
	movsd	%xmm0, 8(%rsp)
	movq	%r14, %rdi
	movq	%r15, %rsi
	movq	%r12, %rdx
	callq	_Z12FIND_CELL_1DRdRiS0_
	leal	1(%r13,%rbp), %eax
	movl	%ebp, %ecx
	incl	%ecx
	movl	%ecx, %ebp
	cmpl	$1, %eax
	jne	.LBB3_13
.LBB3_14:                               # %._crit_edge266
	movl	$file_9+16, %edi
	movl	$.L.str.162, %esi
	movl	$5, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	xorl	%esi, %esi
	callq	_ZNSo9_M_insertIPKvEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$file_9+16, %edi
	movl	$.L.str.163, %esi
	movl	$3, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	xorl	%esi, %esi
	callq	_ZNSo9_M_insertIPKvEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$_ZSt3cin, %edi
	callq	_ZNSi3getEv
	movl	$file_9+16, %edi
	movl	$.L.str.164, %esi
	movl	$20, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	12(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	$0, 8(%rsp)
	movq	geom(%rip), %rax
	movl	$0, (%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.165, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	xorpd	%xmm0, %xmm0
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$file_9+16, %edi
	movl	$.L.str.166, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	movl	8(%rax), %ecx
	imull	(%rax), %ecx
	movl	%ecx, 4(%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.167, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	4(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	cmpl	$0, 20(%rax)
	js	.LBB3_17
# %bb.15:                               # %.lr.ph270.preheader
	movq	$-1, %r14
.LBB3_16:                               # %.lr.ph270
                                        # =>This Inner Loop Header: Depth=1
	movq	64(%rax), %rax
	movq	8(%rax,%r14,8), %rdi
	callq	hipFree
	movq	geom(%rip), %rax
	movslq	20(%rax), %rcx
	incq	%r14
	cmpq	%rcx, %r14
	jl	.LBB3_16
.LBB3_17:                               # %._crit_edge271
	movq	64(%rax), %rdi
	callq	hipFree
	xorl	%r14d, %r14d
.LBB3_18:                               # =>This Inner Loop Header: Depth=1
	movq	geom(%rip), %rax
	movq	136(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	incq	%r14
	cmpq	$5, %r14
	jne	.LBB3_18
# %bb.19:
	movq	geom(%rip), %rax
	movq	136(%rax), %rdi
	callq	hipFree
	movq	geom(%rip), %rax
	movq	48(%rax), %rdi
	callq	hipFree
	xorl	%r14d, %r14d
.LBB3_20:                               # =>This Inner Loop Header: Depth=1
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	incq	%r14
	cmpq	$6, %r14
	jne	.LBB3_20
# %bb.21:
	movq	geom(%rip), %rax
	movq	144(%rax), %rdi
	callq	hipFree
	xorl	%r14d, %r14d
.LBB3_22:                               # =>This Inner Loop Header: Depth=1
	movq	geom(%rip), %rax
	movq	56(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	incq	%r14
	cmpq	$4, %r14
	jne	.LBB3_22
# %bb.23:
	movq	geom(%rip), %rax
	movq	56(%rax), %rdi
	callq	hipFree
	movq	output(%rip), %rax
	movq	64(%rax), %rdi
	callq	hipFree
	movq	output(%rip), %rax
	movq	72(%rax), %rdi
	callq	hipFree
	movq	output(%rip), %rax
	movq	80(%rax), %rdi
	callq	hipFree
	xorl	%r14d, %r14d
.LBB3_24:                               # =>This Inner Loop Header: Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	incq	%r14
	cmpq	$24, %r14
	jne	.LBB3_24
# %bb.25:
	movq	output(%rip), %rax
	movq	136(%rax), %rdi
	callq	hipFree
	xorl	%r14d, %r14d
.LBB3_26:                               # %.preheader243
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB3_28 Depth 2
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	js	.LBB3_29
# %bb.27:                               # %.lr.ph279.preheader
                                        #   in Loop: Header=BB3_26 Depth=1
	movq	$-1, %r15
.LBB3_28:                               # %.lr.ph279
                                        #   Parent Loop BB3_26 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rax
	movq	176(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movq	8(%rax,%r15,8), %rdi
	callq	hipFree
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	incq	%r15
	cmpq	%rax, %r15
	jl	.LBB3_28
.LBB3_29:                               # %._crit_edge280
                                        #   in Loop: Header=BB3_26 Depth=1
	movq	output(%rip), %rax
	movq	176(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	incq	%r14
	cmpq	$13, %r14
	jne	.LBB3_26
# %bb.30:
	movq	output(%rip), %rax
	movq	176(%rax), %rdi
	callq	hipFree
	movq	gas(%rip), %rax
	cmpl	$-9, 424(%rax)
	jl	.LBB3_36
# %bb.31:                               # %.preheader242.preheader
	xorl	%r14d, %r14d
.LBB3_32:                               # %.preheader242
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB3_34 Depth 2
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	js	.LBB3_35
# %bb.33:                               # %.lr.ph284.preheader
                                        #   in Loop: Header=BB3_32 Depth=1
	movq	$-1, %r15
.LBB3_34:                               # %.lr.ph284
                                        #   Parent Loop BB3_32 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rax
	movq	168(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movq	8(%rax,%r15,8), %rdi
	callq	hipFree
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	incq	%r15
	cmpq	%rax, %r15
	jl	.LBB3_34
.LBB3_35:                               # %._crit_edge285
                                        #   in Loop: Header=BB3_32 Depth=1
	movq	output(%rip), %rax
	movq	168(%rax), %rax
	movq	(%rax,%r14,8), %rdi
	callq	hipFree
	leaq	1(%r14), %rax
	movq	gas(%rip), %rcx
	movslq	424(%rcx), %rcx
	addq	$9, %rcx
	cmpq	%rcx, %r14
	movq	%rax, %r14
	jl	.LBB3_32
.LBB3_36:                               # %.preheader241
	movq	output(%rip), %rax
	movq	168(%rax), %rdi
	callq	hipFree
	movq	geom(%rip), %rdi
	movl	16(%rdi), %edx
	movl	20(%rdi), %esi
	incl	%esi
	leaq	64(%rdi), %rcx
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
	movq	geom(%rip), %rdi
	movl	(%rdi), %edx
	incl	%edx
	movl	$136, %r14d
	leaq	(%rdi,%r14), %rcx
	movl	$5, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
	movq	geom(%rip), %rdi
	movslq	(%rdi), %rax
	addq	$48, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	leaq	144(%rdi), %rcx
	movl	$6, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	leaq	56(%rdi), %rcx
	movl	$4, %esi
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
	movq	geom(%rip), %rax
	movq	output(%rip), %rdi
	movslq	(%rax), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$72, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$80, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	addq	%rdi, %r14
	movl	$24, %esi
	movq	%r14, %rcx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	incl	%ecx
	leaq	176(%rdi), %r8
	movl	$13, %esi
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	leal	11(%rcx), %esi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	incl	%ecx
	leaq	168(%rdi), %r8
                                        # kill: def $ecx killed $ecx killed $rcx
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
	movq	geom(%rip), %rax
	xorl	%ecx, %ecx
	movq	%rcx, (%rax)
	movq	%rcx, 64(%rax)
	movq	molecs(%rip), %rcx
	cmpl	$0, 80(%rcx)
	jle	.LBB3_40
# %bb.37:                               # %.lr.ph305.preheader
	movl	$4, %r15d
	movl	$8, %r12d
	xorl	%r13d, %r13d
	leaq	28(%rsp), %r14
.LBB3_38:                               # %.lr.ph305
                                        # =>This Inner Loop Header: Depth=1
	movq	40(%rcx), %rax
	movq	8(%rax), %rdi
	addq	%r12, %rdi
	movq	(%rcx), %rsi
	addq	%r15, %rsi
	movq	%r14, %rdx
	callq	_Z12FIND_CELL_1DRdRiS0_
	movq	molecs(%rip), %rcx
	movslq	80(%rcx), %rax
	incq	%r13
	addq	$4, %r15
	addq	$8, %r12
	cmpq	%rax, %r13
	jl	.LBB3_38
# %bb.39:                               # %..preheader_crit_edge
	movq	geom(%rip), %rax
.LBB3_40:                               # %.preheader
	cmpl	$0, 20(%rax)
	js	.LBB3_45
# %bb.41:                               # %.lr.ph313.preheader
	movq	$-1, %r14
.LBB3_42:                               # %.lr.ph313
                                        # =>This Inner Loop Header: Depth=1
	movq	8(%rbx,%r14,8), %rdi
	testq	%rdi, %rdi
	je	.LBB3_44
# %bb.43:                               #   in Loop: Header=BB3_42 Depth=1
	callq	_ZdaPv
	movq	geom(%rip), %rax
.LBB3_44:                               #   in Loop: Header=BB3_42 Depth=1
	movslq	20(%rax), %rcx
	incq	%r14
	cmpq	%rcx, %r14
	jl	.LBB3_42
.LBB3_45:                               # %._crit_edge314
	movq	%rbx, %rdi
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZdaPv                          # TAILCALL
.Lfunc_end3:
	.size	_Z14ADAPT_CELLS_1Dv, .Lfunc_end3-_Z14ADAPT_CELLS_1Dv
	.cfi_endproc
                                        # -- End function
	.globl	_Z10INDEX_MOLSv                 # -- Begin function _Z10INDEX_MOLSv
	.type	_Z10INDEX_MOLSv,@function
_Z10INDEX_MOLSv:                        # @_Z10INDEX_MOLSv
	.cfi_startproc
# %bb.0:
	movq	geom(%rip), %rax
	movl	4(%rax), %edx
	testl	%edx, %edx
	jle	.LBB4_3
# %bb.1:                                # %.lr.ph
	movq	56(%rax), %rcx
	movq	16(%rcx), %rcx
	xorl	%esi, %esi
.LBB4_2:                                # =>This Inner Loop Header: Depth=1
	movl	$0, 4(%rcx,%rsi,4)
	movslq	4(%rax), %rdx
	incq	%rsi
	cmpq	%rdx, %rsi
	jl	.LBB4_2
.LBB4_3:                                # %._crit_edge
	movq	molecs(%rip), %rcx
	movl	80(%rcx), %esi
	testl	%esi, %esi
	je	.LBB4_15
# %bb.4:                                # %.preheader30
	jle	.LBB4_8
# %bb.5:                                # %.lr.ph38
	movq	(%rcx), %rdx
	movq	56(%rax), %rsi
	movq	16(%rsi), %rdi
	xorl	%r8d, %r8d
.LBB4_6:                                # =>This Inner Loop Header: Depth=1
	movslq	4(%rdx,%r8,4), %rsi
	incl	(%rdi,%rsi,4)
	movslq	80(%rcx), %rsi
	incq	%r8
	cmpq	%rsi, %r8
	jl	.LBB4_6
# %bb.7:                                # %.preheader29.loopexit
	movl	4(%rax), %edx
.LBB4_8:                                # %.preheader29
	testl	%edx, %edx
	jle	.LBB4_12
# %bb.9:                                # %.lr.ph42
	movq	56(%rax), %rsi
	movq	8(%rsi), %rdx
	movq	16(%rsi), %rsi
	xorl	%edi, %edi
	xorl	%r8d, %r8d
.LBB4_10:                               # =>This Inner Loop Header: Depth=1
	movl	%r8d, 4(%rdx,%rdi,4)
	addl	4(%rsi,%rdi,4), %r8d
	movl	$0, 4(%rsi,%rdi,4)
	movslq	4(%rax), %r9
	incq	%rdi
	cmpq	%r9, %rdi
	jl	.LBB4_10
# %bb.11:                               # %.preheader.loopexit
	movl	80(%rcx), %esi
.LBB4_12:                               # %.preheader
	testl	%esi, %esi
	jle	.LBB4_15
# %bb.13:                               # %.lr.ph45
	movq	(%rcx), %rdx
	movq	16(%rcx), %rsi
	movq	56(%rax), %rdi
	movq	8(%rdi), %rax
	movq	16(%rdi), %rdi
	movl	$1, %r8d
.LBB4_14:                               # =>This Inner Loop Header: Depth=1
	movslq	(%rdx,%r8,4), %r9
	movslq	(%rdi,%r9,4), %r10
	leaq	1(%r10), %r11
	movl	%r11d, (%rdi,%r9,4)
	movslq	(%rax,%r9,4), %r9
	leaq	1(%r9,%r10), %r9
	movl	%r8d, (%rsi,%r9,4)
	leaq	1(%r8), %r9
	movslq	80(%rcx), %r10
	cmpq	%r10, %r8
	movq	%r9, %r8
	jl	.LBB4_14
.LBB4_15:                               # %.loopexit
	retq
.Lfunc_end4:
	.size	_Z10INDEX_MOLSv, .Lfunc_end4-_Z10INDEX_MOLSv
	.cfi_endproc
                                        # -- End function
	.globl	_Z13WRITE_RESTARTv              # -- Begin function _Z13WRITE_RESTARTv
	.type	_Z13WRITE_RESTARTv,@function
_Z13WRITE_RESTARTv:                     # @_Z13WRITE_RESTARTv
.Lfunc_begin3:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception3
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$528, %rsp                      # imm = 0x210
	.cfi_def_cfa_offset 576
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsp, %r14
	movq	%r14, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	leaq	128(%rsp), %r15
	leaq	16(%rsp), %rbx
	movl	$_ZSt4cout, %r13d
.LBB5_1:                                # %_ZNSolsEPFRSoS_E.exit14
                                        # =>This Inner Loop Header: Depth=1
.Ltmp457:
	movl	$.L.str.190, %esi
	movq	%r14, %rdi
	movl	$20, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp458:
# %bb.2:                                #   in Loop: Header=BB5_1 Depth=1
	movq	%r15, %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	je	.LBB5_3
# %bb.8:                                #   in Loop: Header=BB5_1 Depth=1
	movq	geom(%rip), %rax
	movl	4(%rax), %esi
.Ltmp459:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp460:
# %bb.9:                                #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp461:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp462:
# %bb.10:                               # %.noexc
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp463:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp464:
# %bb.11:                               # %.noexc19
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp465:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp466:
# %bb.12:                               # %_ZNSolsEPFRSoS_E.exit
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	geom(%rip), %rcx
	movl	(%rcx), %esi
.Ltmp467:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp468:
# %bb.13:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp469:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp470:
# %bb.14:                               # %.noexc21
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp471:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp472:
# %bb.15:                               # %.noexc22
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp473:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp474:
# %bb.16:                               # %_ZNSolsEPFRSoS_E.exit1
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	432(%rcx), %esi
.Ltmp475:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp476:
# %bb.17:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp477:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp478:
# %bb.18:                               # %.noexc25
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp479:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp480:
# %bb.19:                               # %.noexc26
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp481:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp482:
# %bb.20:                               # %_ZNSolsEPFRSoS_E.exit2
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	428(%rcx), %esi
.Ltmp483:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp484:
# %bb.21:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp485:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp486:
# %bb.22:                               # %.noexc29
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp487:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp488:
# %bb.23:                               # %.noexc30
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp489:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp490:
# %bb.24:                               # %_ZNSolsEPFRSoS_E.exit3
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	molecs(%rip), %rcx
	movl	84(%rcx), %esi
.Ltmp491:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp492:
# %bb.25:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp493:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp494:
# %bb.26:                               # %.noexc33
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp495:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp496:
# %bb.27:                               # %.noexc34
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp497:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp498:
# %bb.28:                               # %_ZNSolsEPFRSoS_E.exit4
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	436(%rcx), %esi
.Ltmp499:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp500:
# %bb.29:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp501:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp502:
# %bb.30:                               # %.noexc37
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp503:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp504:
# %bb.31:                               # %.noexc38
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp505:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp506:
# %bb.32:                               # %_ZNSolsEPFRSoS_E.exit5
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	424(%rcx), %esi
.Ltmp507:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp508:
# %bb.33:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp509:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp510:
# %bb.34:                               # %.noexc41
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp511:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp512:
# %bb.35:                               # %.noexc42
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp513:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp514:
# %bb.36:                               # %_ZNSolsEPFRSoS_E.exit6
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	geom(%rip), %rcx
	movl	20(%rcx), %esi
.Ltmp515:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp516:
# %bb.37:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp517:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp518:
# %bb.38:                               # %.noexc45
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp519:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp520:
# %bb.39:                               # %.noexc46
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp521:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp522:
# %bb.40:                               # %_ZNSolsEPFRSoS_E.exit7
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	geom(%rip), %rcx
	movl	16(%rcx), %esi
.Ltmp523:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp524:
# %bb.41:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp525:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp526:
# %bb.42:                               # %.noexc49
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp527:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp528:
# %bb.43:                               # %.noexc50
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp529:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp530:
# %bb.44:                               # %_ZNSolsEPFRSoS_E.exit8
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	444(%rcx), %esi
.Ltmp531:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp532:
# %bb.45:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp533:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp534:
# %bb.46:                               # %.noexc53
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp535:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp536:
# %bb.47:                               # %.noexc54
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp537:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp538:
# %bb.48:                               # %_ZNSolsEPFRSoS_E.exit9
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	448(%rcx), %esi
.Ltmp539:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp540:
# %bb.49:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp541:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp542:
# %bb.50:                               # %.noexc57
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp543:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp544:
# %bb.51:                               # %.noexc58
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp545:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp546:
# %bb.52:                               # %_ZNSolsEPFRSoS_E.exit10
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	452(%rcx), %esi
.Ltmp547:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp548:
# %bb.53:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp549:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp550:
# %bb.54:                               # %.noexc61
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp551:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp552:
# %bb.55:                               # %.noexc62
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp553:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp554:
# %bb.56:                               # %_ZNSolsEPFRSoS_E.exit11
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	gas(%rip), %rcx
	movl	456(%rcx), %esi
.Ltmp555:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp556:
# %bb.57:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp557:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp558:
# %bb.58:                               # %.noexc65
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp559:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp560:
# %bb.59:                               # %.noexc66
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp561:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp562:
# %bb.60:                               # %_ZNSolsEPFRSoS_E.exit12
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	calc(%rip), %rcx
	movl	60(%rcx), %esi
.Ltmp563:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp564:
# %bb.61:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp565:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp566:
# %bb.62:                               # %.noexc69
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp567:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp568:
# %bb.63:                               # %.noexc70
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp569:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp570:
# %bb.64:                               # %_ZNSolsEPFRSoS_E.exit13
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp571:
	movq	%r14, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp572:
# %bb.65:                               #   in Loop: Header=BB5_1 Depth=1
.Ltmp573:
	movl	$.L.str.193, %esi
	movq	%r14, %rdi
	movl	$20, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp574:
# %bb.66:                               #   in Loop: Header=BB5_1 Depth=1
	movq	%r15, %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	testb	%al, %al
	jne	.LBB5_71
# %bb.67:                               #   in Loop: Header=BB5_1 Depth=1
	movl	$35, %edx
	movl	$.L.str.199, %esi
	jmp	.LBB5_4
.LBB5_3:                                #   in Loop: Header=BB5_1 Depth=1
	movl	$38, %edx
	movl	$.L.str.198, %esi
.LBB5_4:                                # %.invoke
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp575:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp576:
# %bb.5:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit.invoke
                                        #   in Loop: Header=BB5_1 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r13, %rdi
.Ltmp577:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp578:
# %bb.6:                                # %.noexc73.invoke
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp579:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp580:
# %bb.7:                                # %.noexc74.invoke
                                        #   in Loop: Header=BB5_1 Depth=1
.Ltmp581:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp582:
	jmp	.LBB5_1
.LBB5_71:
.Ltmp584:
	movl	$calc, %esi
	movl	$8, %edx
	movq	%rbx, %rdi
	callq	_ZNSo5writeEPKcl
.Ltmp585:
# %bb.72:
.Ltmp586:
	movl	$molecs, %esi
	movl	$8, %edx
	movq	%rbx, %rdi
	callq	_ZNSo5writeEPKcl
.Ltmp587:
# %bb.73:
.Ltmp588:
	movl	$gas, %esi
	movl	$8, %edx
	movq	%rbx, %rdi
	callq	_ZNSo5writeEPKcl
.Ltmp589:
# %bb.74:
.Ltmp590:
	movl	$geom, %esi
	movl	$8, %edx
	movq	%rbx, %rdi
	callq	_ZNSo5writeEPKcl
.Ltmp591:
# %bb.75:
.Ltmp592:
	movl	$output, %esi
	movl	$8, %edx
	movq	%rbx, %rdi
	callq	_ZNSo5writeEPKcl
.Ltmp593:
# %bb.76:
.Ltmp594:
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp595:
# %bb.77:
.Ltmp596:
	movl	$file_9+16, %ebx
	movl	$file_9+16, %edi
	movl	$.L.str.200, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp597:
# %bb.78:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17
	movq	file_9+16(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp598:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp599:
# %bb.79:                               # %.noexc81
.Ltmp600:
	movsbl	%al, %esi
	movl	$file_9+16, %edi
	callq	_ZNSo3putEc
.Ltmp601:
# %bb.80:                               # %.noexc82
.Ltmp602:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp603:
# %bb.81:                               # %_ZNSolsEPFRSoS_E.exit18
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	addq	$528, %rsp                      # imm = 0x210
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB5_69:                               # %.loopexit.split-lp
	.cfi_def_cfa_offset 576
.Ltmp604:
	jmp	.LBB5_70
.LBB5_68:                               # %.loopexit
.Ltmp583:
.LBB5_70:
	movq	%rax, %rbx
	movq	%rsp, %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end5:
	.size	_Z13WRITE_RESTARTv, .Lfunc_end5-_Z13WRITE_RESTARTv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table5:
.Lexception3:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end3-.Lcst_begin3
.Lcst_begin3:
	.uleb128 .Lfunc_begin3-.Lfunc_begin3    # >> Call Site 1 <<
	.uleb128 .Ltmp457-.Lfunc_begin3         #   Call between .Lfunc_begin3 and .Ltmp457
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp457-.Lfunc_begin3         # >> Call Site 2 <<
	.uleb128 .Ltmp582-.Ltmp457              #   Call between .Ltmp457 and .Ltmp582
	.uleb128 .Ltmp583-.Lfunc_begin3         #     jumps to .Ltmp583
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp584-.Lfunc_begin3         # >> Call Site 3 <<
	.uleb128 .Ltmp603-.Ltmp584              #   Call between .Ltmp584 and .Ltmp603
	.uleb128 .Ltmp604-.Lfunc_begin3         #     jumps to .Ltmp604
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp603-.Lfunc_begin3         # >> Call Site 4 <<
	.uleb128 .Lfunc_end5-.Ltmp603           #   Call between .Ltmp603 and .Lfunc_end5
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end3:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_Z18INITIALISE_SAMPLESv         # -- Begin function _Z18INITIALISE_SAMPLESv
	.type	_Z18INITIALISE_SAMPLESv,@function
_Z18INITIALISE_SAMPLESv:                # @_Z18INITIALISE_SAMPLESv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	output(%rip), %r14
	movl	$0, (%r14)
	movq	calc(%rip), %rbp
	movsd	80(%rbp), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 32(%r14)
	movq	molecs(%rip), %rax
	movl	80(%rax), %eax
	movl	%eax, 4(%r14)
	movq	geom(%rip), %rax
	movq	%rax, 8(%rsp)                   # 8-byte Spill
	movl	(%rax), %eax
	testl	%eax, %eax
	js	.LBB6_2
# %bb.1:                                # %.lr.ph137
	movq	64(%r14), %rdi
	leaq	8(,%rax,8), %rbx
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	movq	72(%r14), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	movq	80(%r14), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
.LBB6_2:                                # %.preheader122
	movq	%r14, 16(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %r15
	movl	424(%r15), %r12d
	testl	%r12d, %r12d
	js	.LBB6_5
# %bb.3:                                # %.preheader121.lr.ph
	leaq	8(,%r12,8), %rbx
	leaq	1(%r12), %r14
	movq	328(%rbp), %rbp
	xorl	%r13d, %r13d
.LBB6_4:                                # %._crit_edge
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbp,%r13,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%r13
	cmpq	%r13, %r14
	jne	.LBB6_4
.LBB6_5:                                # %.preheader120
	xorl	%eax, %eax
.LBB6_6:                                # %.preheader119
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_8 Depth 2
	testl	%r12d, %r12d
	js	.LBB6_9
# %bb.7:                                # %.lr.ph148
                                        #   in Loop: Header=BB6_6 Depth=1
	movq	536(%r15), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rdx
.LBB6_8:                                #   Parent Loop BB6_6 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rdx,4)
	movslq	424(%r15), %r12
	incq	%rdx
	cmpq	%r12, %rdx
	jl	.LBB6_8
.LBB6_9:                                # %._crit_edge149
                                        #   in Loop: Header=BB6_6 Depth=1
	incq	%rax
	cmpq	$5, %rax
	jne	.LBB6_6
# %bb.10:                               # %.preheader118
	xorl	%eax, %eax
.LBB6_11:                               # %.preheader117
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_13 Depth 2
	testl	%r12d, %r12d
	js	.LBB6_14
# %bb.12:                               # %.lr.ph153
                                        #   in Loop: Header=BB6_11 Depth=1
	movq	544(%r15), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rdx
.LBB6_13:                               #   Parent Loop BB6_11 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rdx,4)
	movslq	424(%r15), %r12
	incq	%rdx
	cmpq	%r12, %rdx
	jl	.LBB6_13
.LBB6_14:                               # %._crit_edge154
                                        #   in Loop: Header=BB6_11 Depth=1
	incq	%rax
	cmpq	$5, %rax
	jne	.LBB6_11
# %bb.15:                               # %.preheader116
	cmpl	$-10, %r12d
	jle	.LBB6_16
# %bb.38:                               # %.preheader115.lr.ph
	movq	8(%rsp), %rax                   # 8-byte Reload
	movl	(%rax), %ecx
	leal	1(%r12), %eax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	leaq	(,%rax,8), %rbx
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	leal	1(%rcx), %r13d
	leal	9(%r12), %eax
	xorl	%ebp, %ebp
	testl	%eax, %eax
	cmovlel	%ebp, %eax
	incl	%eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
.LBB6_39:                               # %.preheader115
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_41 Depth 2
	cmpl	$0, 8(%rsp)                     # 4-byte Folded Reload
	js	.LBB6_44
# %bb.40:                               # %.preheader114.preheader
                                        #   in Loop: Header=BB6_39 Depth=1
	xorl	%r14d, %r14d
.LBB6_41:                               # %.preheader114
                                        #   Parent Loop BB6_39 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	testl	%r12d, %r12d
	js	.LBB6_43
# %bb.42:                               # %.lr.ph158
                                        #   in Loop: Header=BB6_41 Depth=2
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	168(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r14,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
.LBB6_43:                               # %._crit_edge159
                                        #   in Loop: Header=BB6_41 Depth=2
	incq	%r14
	cmpq	%r14, %r13
	jne	.LBB6_41
.LBB6_44:                               # %._crit_edge162
                                        #   in Loop: Header=BB6_39 Depth=1
	incq	%rbp
	cmpq	24(%rsp), %rbp                  # 8-byte Folded Reload
	jne	.LBB6_39
# %bb.45:
	movq	16(%rsp), %r8                   # 8-byte Reload
	movq	32(%rsp), %rax                  # 8-byte Reload
	jmp	.LBB6_17
.LBB6_16:                               # %.preheader116..preheader113_crit_edge
	leal	1(%r12), %eax
	movq	16(%rsp), %r8                   # 8-byte Reload
.LBB6_17:                               # %.preheader113
	movl	%eax, %r13d
	xorl	%eax, %eax
	xorps	%xmm0, %xmm0
.LBB6_18:                               # %.preheader112
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_19 Depth 2
                                        #       Child Loop BB6_21 Depth 3
	xorl	%ecx, %ecx
.LBB6_19:                               # %.preheader111
                                        #   Parent Loop BB6_18 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB6_21 Depth 3
	testl	%r12d, %r12d
	js	.LBB6_22
# %bb.20:                               # %.preheader110.lr.ph
                                        #   in Loop: Header=BB6_19 Depth=2
	movq	192(%r8), %rdx
	movq	(%rdx,%rax,8), %rdx
	movq	(%rdx,%rcx,8), %rdx
	xorl	%esi, %esi
.LBB6_21:                               # %.preheader110
                                        #   Parent Loop BB6_18 Depth=1
                                        #     Parent Loop BB6_19 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rdx,%rsi,8), %rdi
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	incq	%rsi
	cmpq	%rsi, %r13
	jne	.LBB6_21
.LBB6_22:                               # %._crit_edge168
                                        #   in Loop: Header=BB6_19 Depth=2
	incq	%rcx
	cmpq	$3, %rcx
	jne	.LBB6_19
# %bb.23:                               #   in Loop: Header=BB6_18 Depth=1
	incq	%rax
	cmpq	$9, %rax
	jne	.LBB6_18
# %bb.24:                               # %.preheader109
	movq	152(%r8), %rax
	xorl	%ecx, %ecx
	xorps	%xmm0, %xmm0
.LBB6_25:                               # %.preheader108
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rax,%rcx,8), %rdx
	movups	%xmm0, (%rdx)
	movq	$0, 16(%rdx)
	incq	%rcx
	cmpq	$7, %rcx
	jne	.LBB6_25
# %bb.26:                               # %.preheader107
	testl	%r12d, %r12d
	js	.LBB6_37
# %bb.27:                               # %.preheader106.lr.ph
	movl	428(%r15), %eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	leal	1(%rax), %ebp
	xorl	%eax, %eax
	movq	%rax, 8(%rsp)                   # 8-byte Spill
.LBB6_28:                               # %.preheader106
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_30 Depth 2
	cmpl	$0, 24(%rsp)                    # 4-byte Folded Reload
	js	.LBB6_31
# %bb.29:                               # %.preheader105.lr.ph
                                        #   in Loop: Header=BB6_28 Depth=1
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	184(%rax), %rax
	movq	8(%rsp), %rcx                   # 8-byte Reload
	movq	(%rax,%rcx,8), %r14
	xorl	%ebx, %ebx
.LBB6_30:                               # %.preheader105
                                        #   Parent Loop BB6_28 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%r14,%rbx,8), %rdi
	movl	$1208, %edx                     # imm = 0x4B8
	xorl	%esi, %esi
	callq	memset@PLT
	incq	%rbx
	cmpq	%rbx, %rbp
	jne	.LBB6_30
.LBB6_31:                               # %._crit_edge176
                                        #   in Loop: Header=BB6_28 Depth=1
	movq	8(%rsp), %rcx                   # 8-byte Reload
	incq	%rcx
	movq	%rcx, %rax
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	cmpq	%r13, %rcx
	jne	.LBB6_28
# %bb.32:                               # %.preheader104
	testl	%r12d, %r12d
	movq	16(%rsp), %r14                  # 8-byte Reload
	js	.LBB6_37
# %bb.33:                               # %.preheader.lr.ph
	movl	428(%r15), %r15d
	leal	1(%r15), %ebx
	shlq	$3, %rbx
	xorl	%r12d, %r12d
.LBB6_34:                               # %.preheader
                                        # =>This Inner Loop Header: Depth=1
	testl	%r15d, %r15d
	js	.LBB6_36
# %bb.35:                               # %.lr.ph181
                                        #   in Loop: Header=BB6_34 Depth=1
	movq	160(%r14), %rax
	movq	(%rax,%r12,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
.LBB6_36:                               # %._crit_edge182
                                        #   in Loop: Header=BB6_34 Depth=1
	incq	%r12
	cmpq	%r12, %r13
	jne	.LBB6_34
.LBB6_37:                               # %._crit_edge185
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end6:
	.size	_Z18INITIALISE_SAMPLESv, .Lfunc_end6-_Z18INITIALISE_SAMPLESv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z9READ_DATAv
.LCPI7_0:
	.quad	0x444b1ae4d6e2ef51              # double 1.0000000000000001E+21
.LCPI7_1:
	.quad	0xbff0000000000000              # double -1
.LCPI7_2:
	.quad	0x3ff0000000000000              # double 1
	.text
	.globl	_Z9READ_DATAv
	.type	_Z9READ_DATAv,@function
_Z9READ_DATAv:                          # @_Z9READ_DATAv
.Lfunc_begin4:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception4
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	subq	$1064, %rsp                     # imm = 0x428
	.cfi_def_cfa_offset 1104
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	8(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
.Ltmp605:
	leaq	536(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
.Ltmp606:
# %bb.1:
	movq	calc(%rip), %rax
	movl	56(%rax), %eax
	testl	%eax, %eax
	jne	.LBB7_13
# %bb.2:
.Ltmp608:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.76, %esi
	movl	$30, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp609:
# %bb.3:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp610:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp611:
# %bb.4:                                # %.noexc
.Ltmp612:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp613:
# %bb.5:                                # %.noexc207
.Ltmp614:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp615:
# %bb.6:                                # %_ZNSolsEPFRSoS_E.exit
.Ltmp616:
	leaq	536(%rsp), %rdi
	movl	$.L.str.77, %esi
	movl	$8, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp617:
# %bb.7:
.Ltmp618:
	leaq	8(%rsp), %rdi
	movl	$.L.str.78, %esi
	movl	$16, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp619:
# %bb.8:
	leaq	24(%rsp), %rbx
.Ltmp620:
	movl	$.L.str.79, %esi
	movl	$29, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp621:
# %bb.9:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit21
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp622:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp623:
# %bb.10:                               # %.noexc209
.Ltmp624:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp625:
# %bb.11:                               # %.noexc210
.Ltmp626:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp627:
# %bb.12:                               # %.noexc210._ZNSolsEPFRSoS_E.exit22_crit_edge
	movq	calc(%rip), %rax
	movl	56(%rax), %eax
.LBB7_13:                               # %_ZNSolsEPFRSoS_E.exit22
	cmpl	$1, %eax
	jne	.LBB7_24
# %bb.14:
.Ltmp628:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.80, %esi
	movl	$30, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp629:
# %bb.15:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit23
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp630:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp631:
# %bb.16:                               # %.noexc213
.Ltmp632:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp633:
# %bb.17:                               # %.noexc214
.Ltmp634:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp635:
# %bb.18:                               # %_ZNSolsEPFRSoS_E.exit24
.Ltmp636:
	leaq	536(%rsp), %rdi
	movl	$.L.str.81, %esi
	movl	$8, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp637:
# %bb.19:
.Ltmp638:
	leaq	8(%rsp), %rdi
	movl	$.L.str.82, %esi
	movl	$16, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp639:
# %bb.20:
	leaq	24(%rsp), %rbx
.Ltmp640:
	movl	$.L.str.79, %esi
	movl	$29, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp641:
# %bb.21:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit25
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp642:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp643:
# %bb.22:                               # %.noexc217
.Ltmp644:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp645:
# %bb.23:                               # %.noexc218
.Ltmp646:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp647:
.LBB7_24:                               # %_ZNSolsEPFRSoS_E.exit26
.Ltmp648:
	leaq	536(%rsp), %rdi
	leaq	4(%rsp), %rsi
	callq	_ZNSirsERi
.Ltmp649:
# %bb.25:
	leaq	24(%rsp), %rbx
.Ltmp650:
	movl	$.L.str.83, %esi
	movl	$31, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp651:
# %bb.26:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit27
	movl	4(%rsp), %esi
.Ltmp652:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp653:
# %bb.27:
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp654:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp655:
# %bb.28:                               # %.noexc221
.Ltmp656:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp657:
# %bb.29:                               # %.noexc222
.Ltmp658:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp659:
# %bb.30:                               # %_ZNSolsEPFRSoS_E.exit28
.Ltmp660:
	leaq	536(%rsp), %rdi
	movq	%rsp, %rsi
	callq	_ZNSirsERi
.Ltmp661:
# %bb.31:
.Ltmp662:
	movl	$.L.str.84, %esi
	movl	$31, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp663:
# %bb.32:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit29
	movl	(%rsp), %esi
.Ltmp664:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp665:
# %bb.33:
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp666:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp667:
# %bb.34:                               # %.noexc225
.Ltmp668:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp669:
# %bb.35:                               # %.noexc226
.Ltmp670:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp671:
# %bb.36:                               # %_ZNSolsEPFRSoS_E.exit30
	movq	calc(%rip), %rsi
	addq	$8, %rsi
.Ltmp672:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp673:
# %bb.37:
.Ltmp674:
	movl	$.L.str.85, %esi
	movl	$59, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp675:
# %bb.38:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit31
	movq	calc(%rip), %rax
	movl	8(%rax), %esi
.Ltmp676:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp677:
# %bb.39:
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp678:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp679:
# %bb.40:                               # %.noexc229
.Ltmp680:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp681:
# %bb.41:                               # %.noexc230
.Ltmp682:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp683:
# %bb.42:                               # %_ZNSolsEPFRSoS_E.exit32
	movl	$440, %esi                      # imm = 0x1B8
	addq	gas(%rip), %rsi
.Ltmp684:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp685:
# %bb.43:
	movq	gas(%rip), %rax
	movl	440(%rax), %esi
.Ltmp686:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp687:
# %bb.44:
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp688:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp689:
# %bb.45:                               # %.noexc233
.Ltmp690:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp691:
# %bb.46:                               # %.noexc234
.Ltmp692:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp693:
# %bb.47:                               # %_ZNSolsEPFRSoS_E.exit33
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
	cmpl	$1, %eax
	jne	.LBB7_54
# %bb.48:
.Ltmp694:
	movl	$.L.str.86, %esi
	movl	$17, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp695:
# %bb.49:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit34
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp696:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp697:
# %bb.50:                               # %.noexc237
.Ltmp698:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp699:
# %bb.51:                               # %.noexc238
.Ltmp700:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp701:
# %bb.52:                               # %_ZNSolsEPFRSoS_E.exit35
.Ltmp702:
	callq	_Z11HARD_SPHEREv
.Ltmp703:
# %bb.53:                               # %_ZNSolsEPFRSoS_E.exit35._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_54:
	cmpl	$2, %eax
	jne	.LBB7_61
# %bb.55:
.Ltmp704:
	movl	$.L.str.87, %esi
	movl	$6, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp705:
# %bb.56:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit36
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp706:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp707:
# %bb.57:                               # %.noexc241
.Ltmp708:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp709:
# %bb.58:                               # %.noexc242
.Ltmp710:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp711:
# %bb.59:                               # %_ZNSolsEPFRSoS_E.exit37
.Ltmp712:
	callq	_Z5ARGONv
.Ltmp713:
# %bb.60:                               # %_ZNSolsEPFRSoS_E.exit37._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_61:
	cmpl	$3, %eax
	jne	.LBB7_68
# %bb.62:
.Ltmp714:
	movl	$.L.str.88, %esi
	movl	$14, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp715:
# %bb.63:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit38
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp716:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp717:
# %bb.64:                               # %.noexc245
.Ltmp718:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp719:
# %bb.65:                               # %.noexc246
.Ltmp720:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp721:
# %bb.66:                               # %_ZNSolsEPFRSoS_E.exit39
.Ltmp722:
	callq	_Z14IDEAL_NITROGENv
.Ltmp723:
# %bb.67:                               # %_ZNSolsEPFRSoS_E.exit39._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_68:
	cmpl	$4, %eax
	jne	.LBB7_75
# %bb.69:
.Ltmp724:
	movl	$.L.str.89, %esi
	movl	$12, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp725:
# %bb.70:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit40
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp726:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp727:
# %bb.71:                               # %.noexc249
.Ltmp728:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp729:
# %bb.72:                               # %.noexc250
.Ltmp730:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp731:
# %bb.73:                               # %_ZNSolsEPFRSoS_E.exit41
.Ltmp732:
	callq	_Z11REAL_OXYGENv
.Ltmp733:
# %bb.74:                               # %_ZNSolsEPFRSoS_E.exit41._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_75:
	cmpl	$5, %eax
	jne	.LBB7_82
# %bb.76:
.Ltmp734:
	movl	$.L.str.90, %esi
	movl	$10, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp735:
# %bb.77:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit42
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp736:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp737:
# %bb.78:                               # %.noexc253
.Ltmp738:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp739:
# %bb.79:                               # %.noexc254
.Ltmp740:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp741:
# %bb.80:                               # %_ZNSolsEPFRSoS_E.exit43
.Ltmp742:
	callq	_Z9IDEAL_AIRv
.Ltmp743:
# %bb.81:                               # %_ZNSolsEPFRSoS_E.exit43._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_82:
	cmpl	$6, %eax
	jne	.LBB7_89
# %bb.83:
.Ltmp744:
	movl	$.L.str.91, %esi
	movl	$20, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp745:
# %bb.84:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit44
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp746:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp747:
# %bb.85:                               # %.noexc257
.Ltmp748:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp749:
# %bb.86:                               # %.noexc258
.Ltmp750:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp751:
# %bb.87:                               # %_ZNSolsEPFRSoS_E.exit45
.Ltmp752:
	callq	_Z8REAL_AIRv
.Ltmp753:
# %bb.88:                               # %_ZNSolsEPFRSoS_E.exit45._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_89:
	cmpl	$7, %eax
	jne	.LBB7_96
# %bb.90:
.Ltmp754:
	movl	$.L.str.92, %esi
	movl	$27, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp755:
# %bb.91:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit46
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp756:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp757:
# %bb.92:                               # %.noexc261
.Ltmp758:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp759:
# %bb.93:                               # %.noexc262
.Ltmp760:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp761:
# %bb.94:                               # %_ZNSolsEPFRSoS_E.exit47
.Ltmp762:
	callq	_Z18HELIUM_ARGON_XENONv
.Ltmp763:
# %bb.95:                               # %_ZNSolsEPFRSoS_E.exit47._crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB7_96:
	cmpl	$8, %eax
	jne	.LBB7_102
# %bb.97:
.Ltmp764:
	movl	$.L.str.93, %esi
	movl	$16, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp765:
# %bb.98:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit48
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp766:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp767:
# %bb.99:                               # %.noexc265
.Ltmp768:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp769:
# %bb.100:                              # %.noexc266
.Ltmp770:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp771:
# %bb.101:                              # %_ZNSolsEPFRSoS_E.exit49
.Ltmp772:
	callq	_Z15OXYGEN_HYDROGENv
.Ltmp773:
.LBB7_102:
.Ltmp774:
	movl	$.L.str.94, %esi
	movl	$25, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp775:
# %bb.103:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit50
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp776:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp777:
# %bb.104:                              # %.noexc269
.Ltmp778:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp779:
# %bb.105:                              # %.noexc270
.Ltmp780:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp781:
# %bb.106:                              # %_ZNSolsEPFRSoS_E.exit51
	movq	gas(%rip), %rsi
	addq	$80, %rsi
.Ltmp782:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp783:
# %bb.107:                              # %_ZNSirsERd.exit
.Ltmp784:
	movl	$.L.str.95, %esi
	movl	$29, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp785:
# %bb.108:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit52
	movq	gas(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp786:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp787:
# %bb.109:                              # %_ZNSolsEd.exit
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp788:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp789:
# %bb.110:                              # %.noexc273
.Ltmp790:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp791:
# %bb.111:                              # %.noexc274
.Ltmp792:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp793:
# %bb.112:                              # %_ZNSolsEPFRSoS_E.exit53
	movq	gas(%rip), %rsi
	addq	$104, %rsi
.Ltmp794:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp795:
# %bb.113:                              # %_ZNSirsERd.exit54
.Ltmp796:
	movl	$.L.str.96, %esi
	movl	$26, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp797:
# %bb.114:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit55
	movq	gas(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp798:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp799:
# %bb.115:                              # %_ZNSolsEd.exit56
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp800:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp801:
# %bb.116:                              # %.noexc277
.Ltmp802:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp803:
# %bb.117:                              # %.noexc278
.Ltmp804:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp805:
# %bb.118:                              # %_ZNSolsEPFRSoS_E.exit57
	movq	gas(%rip), %rsi
	cmpl	$0, 428(%rsi)
	jle	.LBB7_126
# %bb.119:
	subq	$-128, %rsi
.Ltmp806:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp807:
# %bb.120:                              # %_ZNSirsERd.exit58
.Ltmp808:
	movl	$.L.str.97, %esi
	movl	$53, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp809:
# %bb.121:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit59
	movq	gas(%rip), %rax
	movsd	128(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp810:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp811:
# %bb.122:                              # %_ZNSolsEd.exit60
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp812:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp813:
# %bb.123:                              # %.noexc281
.Ltmp814:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp815:
# %bb.124:                              # %.noexc282
.Ltmp816:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp817:
# %bb.125:                              # %.noexc282._ZNSolsEPFRSoS_E.exit61_crit_edge
	movq	gas(%rip), %rsi
.LBB7_126:                              # %_ZNSolsEPFRSoS_E.exit61
	movq	calc(%rip), %rax
	cmpl	$1, 56(%rax)
	jne	.LBB7_140
# %bb.127:
	addq	$152, %rsi
.Ltmp818:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp819:
# %bb.128:                              # %_ZNSirsERd.exit62
.Ltmp820:
	movl	$.L.str.98, %esi
	movl	$42, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp821:
# %bb.129:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit63
	movq	gas(%rip), %rax
	movsd	152(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp822:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp823:
# %bb.130:                              # %_ZNSolsEd.exit64
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp824:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp825:
# %bb.131:                              # %.noexc285
.Ltmp826:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp827:
# %bb.132:                              # %.noexc286
.Ltmp828:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp829:
# %bb.133:                              # %_ZNSolsEPFRSoS_E.exit65
	movl	$176, %esi
	addq	gas(%rip), %rsi
.Ltmp830:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp831:
# %bb.134:                              # %_ZNSirsERd.exit66
.Ltmp832:
	movl	$.L.str.99, %esi
	movl	$42, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp833:
# %bb.135:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit67
	movq	gas(%rip), %rax
	movsd	176(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp834:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp835:
# %bb.136:                              # %_ZNSolsEd.exit68
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp836:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp837:
# %bb.137:                              # %.noexc289
.Ltmp838:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp839:
# %bb.138:                              # %.noexc290
.Ltmp840:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp841:
# %bb.139:                              # %.noexc290._ZNSolsEPFRSoS_E.exit69_crit_edge
	movq	gas(%rip), %rsi
.LBB7_140:                              # %_ZNSolsEPFRSoS_E.exit69
	cmpl	$2, 424(%rsi)
	jl	.LBB7_155
# %bb.141:                              # %.lr.ph.preheader
	movl	$1, %r15d
	leaq	536(%rsp), %r14
.LBB7_142:                              # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movq	312(%rsi), %rax
	movq	(%rax,%r15,8), %rsi
	addq	$8, %rsi
.Ltmp842:
	movq	%r14, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp843:
# %bb.143:                              # %_ZNSirsERd.exit70
                                        #   in Loop: Header=BB7_142 Depth=1
.Ltmp844:
	movl	$.L.str.100, %esi
	movl	$25, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp845:
# %bb.144:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit71
                                        #   in Loop: Header=BB7_142 Depth=1
.Ltmp846:
	movq	%rbx, %rdi
	movl	%r15d, %esi
	callq	_ZNSolsEi
.Ltmp847:
# %bb.145:                              #   in Loop: Header=BB7_142 Depth=1
.Ltmp848:
	movq	%rax, %r12
	movl	$.L.str.64, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp849:
# %bb.146:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit72
                                        #   in Loop: Header=BB7_142 Depth=1
	movq	gas(%rip), %rax
	movq	312(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp850:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp851:
# %bb.147:                              # %_ZNSolsEd.exit73
                                        #   in Loop: Header=BB7_142 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp852:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp853:
# %bb.148:                              # %.noexc293
                                        #   in Loop: Header=BB7_142 Depth=1
.Ltmp854:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp855:
# %bb.149:                              # %.noexc294
                                        #   in Loop: Header=BB7_142 Depth=1
.Ltmp856:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp857:
# %bb.150:                              # %_ZNSolsEPFRSoS_E.exit74
                                        #   in Loop: Header=BB7_142 Depth=1
	leaq	1(%r15), %rax
	movq	gas(%rip), %rsi
	movslq	424(%rsi), %rcx
	cmpq	%rcx, %r15
	movq	%rax, %r15
	jl	.LBB7_142
	jmp	.LBB7_156
.LBB7_155:
	movq	312(%rsi), %rax
	movq	8(%rax), %rax
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 8(%rax)
.LBB7_156:                              # %.loopexit472
	movq	calc(%rip), %rax
	movl	56(%rax), %ecx
	testl	%ecx, %ecx
	jne	.LBB7_158
# %bb.157:
	movq	geom(%rip), %rcx
	movabsq	$4294967296, %rdx               # imm = 0x100000000
	movq	%rdx, 24(%rcx)
	movq	128(%rcx), %rdi
	xorl	%r8d, %r8d
	movq	%r8, 8(%rdi)
	movsd	.LCPI7_0(%rip), %xmm0           # xmm0 = mem[0],zero
	divsd	80(%rsi), %xmm0
	movsd	%xmm0, 16(%rdi)
	movq	40(%rcx), %rcx
	movabsq	$4294967297, %rdi               # imm = 0x100000001
	movq	%rdi, 4(%rcx)
	movq	%r8, 152(%rsi)
	movq	%rdx, 28(%rax)
	movl	$0, 36(%rax)
	imull	$10000, 8(%rax), %ecx           # imm = 0x2710
	movl	%ecx, 16(%rax)
	movl	56(%rax), %ecx
.LBB7_158:
	cmpl	$1, %ecx
	jne	.LBB7_455
# %bb.159:
	movq	geom(%rip), %rsi
	addq	$24, %rsi
.Ltmp859:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp860:
# %bb.160:
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
	testl	%ecx, %ecx
	jne	.LBB7_166
# %bb.161:
.Ltmp861:
	movl	$.L.str.101, %esi
	movl	$10, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp862:
# %bb.162:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit75
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp863:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp864:
# %bb.163:                              # %.noexc297
.Ltmp865:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp866:
# %bb.164:                              # %.noexc298
.Ltmp867:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp868:
# %bb.165:                              # %.noexc298._ZNSolsEPFRSoS_E.exit76_crit_edge
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
.LBB7_166:                              # %_ZNSolsEPFRSoS_E.exit76
	cmpl	$1, %ecx
	jne	.LBB7_172
# %bb.167:
.Ltmp869:
	movl	$.L.str.102, %esi
	movl	$16, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp870:
# %bb.168:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit77
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp871:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp872:
# %bb.169:                              # %.noexc301
.Ltmp873:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp874:
# %bb.170:                              # %.noexc302
.Ltmp875:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp876:
# %bb.171:                              # %.noexc302._ZNSolsEPFRSoS_E.exit78_crit_edge
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
.LBB7_172:                              # %_ZNSolsEPFRSoS_E.exit78
	cmpl	$2, %ecx
	jne	.LBB7_178
# %bb.173:
.Ltmp877:
	movl	$.L.str.103, %esi
	movl	$14, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp878:
# %bb.174:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit79
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp879:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp880:
# %bb.175:                              # %.noexc305
.Ltmp881:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp882:
# %bb.176:                              # %.noexc306
.Ltmp883:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp884:
# %bb.177:                              # %.noexc306._ZNSolsEPFRSoS_E.exit80_crit_edge
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
.LBB7_178:                              # %_ZNSolsEPFRSoS_E.exit80
	incl	%ecx
	movl	%ecx, 28(%rax)
	movq	128(%rax), %rsi
	addq	$8, %rsi
.Ltmp885:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp886:
# %bb.179:                              # %_ZNSirsERd.exit81
.Ltmp887:
	movl	$.L.str.104, %esi
	movl	$28, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp888:
# %bb.180:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp889:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp890:
# %bb.181:                              # %_ZNSolsEd.exit83
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp891:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp892:
# %bb.182:                              # %.noexc309
.Ltmp893:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp894:
# %bb.183:                              # %.noexc310
.Ltmp895:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp896:
# %bb.184:                              # %_ZNSolsEPFRSoS_E.exit84
	movq	geom(%rip), %rax
	movq	40(%rax), %rsi
	addq	$4, %rsi
.Ltmp897:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp898:
# %bb.185:
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
	testl	%ecx, %ecx
	jne	.LBB7_191
# %bb.186:
.Ltmp899:
	movl	$.L.str.105, %esi
	movl	$45, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp900:
# %bb.187:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit85
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp901:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp902:
# %bb.188:                              # %.noexc313
.Ltmp903:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp904:
# %bb.189:                              # %.noexc314
.Ltmp905:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp906:
# %bb.190:                              # %.noexc314._ZNSolsEPFRSoS_E.exit86_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
.LBB7_191:                              # %_ZNSolsEPFRSoS_E.exit86
	cmpl	$1, %ecx
	jne	.LBB7_197
# %bb.192:
.Ltmp907:
	movl	$.L.str.106, %esi
	movl	$47, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp908:
# %bb.193:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit87
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp909:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp910:
# %bb.194:                              # %.noexc317
.Ltmp911:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp912:
# %bb.195:                              # %.noexc318
.Ltmp913:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp914:
# %bb.196:                              # %.noexc318._ZNSolsEPFRSoS_E.exit88_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
.LBB7_197:                              # %_ZNSolsEPFRSoS_E.exit88
	cmpl	$2, %ecx
	jne	.LBB7_203
# %bb.198:
.Ltmp915:
	movl	$.L.str.107, %esi
	movl	$43, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp916:
# %bb.199:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit89
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp917:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp918:
# %bb.200:                              # %.noexc321
.Ltmp919:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp920:
# %bb.201:                              # %.noexc322
.Ltmp921:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp922:
# %bb.202:                              # %.noexc322._ZNSolsEPFRSoS_E.exit90_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
.LBB7_203:                              # %_ZNSolsEPFRSoS_E.exit90
	cmpl	$3, %ecx
	jne	.LBB7_209
# %bb.204:
.Ltmp923:
	movl	$.L.str.108, %esi
	movl	$36, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp924:
# %bb.205:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit91
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp925:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp926:
# %bb.206:                              # %.noexc325
.Ltmp927:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp928:
# %bb.207:                              # %.noexc326
.Ltmp929:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp930:
# %bb.208:                              # %.noexc326._ZNSolsEPFRSoS_E.exit92_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
.LBB7_209:                              # %_ZNSolsEPFRSoS_E.exit92
	cmpl	$4, %ecx
	jne	.LBB7_215
# %bb.210:
.Ltmp931:
	movl	$.L.str.109, %esi
	movl	$45, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp932:
# %bb.211:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit93
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp933:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp934:
# %bb.212:                              # %.noexc329
.Ltmp935:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp936:
# %bb.213:                              # %.noexc330
.Ltmp937:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp938:
# %bb.214:                              # %.noexc330._ZNSolsEPFRSoS_E.exit94_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx), %ecx
.LBB7_215:                              # %_ZNSolsEPFRSoS_E.exit94
	cmpl	$2, %ecx
	jne	.LBB7_236
# %bb.216:
.Ltmp939:
	movl	$.L.str.110, %esi
	movl	$65, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp940:
# %bb.217:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit95
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp941:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp942:
# %bb.218:                              # %.noexc333
.Ltmp943:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp944:
# %bb.219:                              # %.noexc334
.Ltmp945:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp946:
# %bb.220:                              # %_ZNSolsEPFRSoS_E.exit96
	movl	$200, %esi
	addq	gas(%rip), %rsi
.Ltmp947:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp948:
# %bb.221:                              # %_ZNSirsERd.exit97
.Ltmp949:
	movl	$.L.str.111, %esi
	movl	$34, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp950:
# %bb.222:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit98
	movq	gas(%rip), %rax
	movsd	200(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp951:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp952:
# %bb.223:                              # %_ZNSolsEd.exit99
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp953:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp954:
# %bb.224:                              # %.noexc337
.Ltmp955:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp956:
# %bb.225:                              # %.noexc338
.Ltmp957:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp958:
# %bb.226:                              # %_ZNSolsEPFRSoS_E.exit100
	movl	$224, %esi
	addq	gas(%rip), %rsi
.Ltmp959:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp960:
# %bb.227:                              # %_ZNSirsERd.exit101
.Ltmp961:
	movl	$.L.str.112, %esi
	movl	$39, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp962:
# %bb.228:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit102
	movq	gas(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp963:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp964:
# %bb.229:                              # %_ZNSolsEd.exit103
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp965:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp966:
# %bb.230:                              # %.noexc341
.Ltmp967:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp968:
# %bb.231:                              # %.noexc342
.Ltmp969:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp970:
# %bb.232:                              # %_ZNSolsEPFRSoS_E.exit104
	movl	$248, %esi
	addq	gas(%rip), %rsi
.Ltmp971:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp972:
# %bb.233:                              # %_ZNSirsERd.exit105
.Ltmp973:
	movl	$.L.str.113, %esi
	movl	$51, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp974:
# %bb.234:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit106
	movq	gas(%rip), %rax
	movsd	248(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp975:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp976:
# %bb.235:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit106._ZNSolsEd.exit107_crit_edge
	movq	geom(%rip), %rax
.LBB7_236:                              # %_ZNSolsEd.exit107
	movq	128(%rax), %rsi
	addq	$16, %rsi
.Ltmp977:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp978:
# %bb.237:                              # %_ZNSirsERd.exit108
.Ltmp979:
	movl	$.L.str.114, %esi
	movl	$28, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp980:
# %bb.238:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit109
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp981:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp982:
# %bb.239:                              # %_ZNSolsEd.exit110
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp983:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp984:
# %bb.240:                              # %.noexc345
.Ltmp985:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp986:
# %bb.241:                              # %.noexc346
.Ltmp987:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp988:
# %bb.242:                              # %_ZNSolsEPFRSoS_E.exit111
	movq	geom(%rip), %rax
	movq	40(%rax), %rsi
	addq	$8, %rsi
.Ltmp989:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp990:
# %bb.243:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	movl	8(%rax), %ecx
	testl	%ecx, %ecx
	jne	.LBB7_249
# %bb.244:
.Ltmp991:
	movl	$.L.str.115, %esi
	movl	$47, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp992:
# %bb.245:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit112
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp993:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp994:
# %bb.246:                              # %.noexc349
.Ltmp995:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp996:
# %bb.247:                              # %.noexc350
.Ltmp997:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp998:
# %bb.248:                              # %.noexc350._ZNSolsEPFRSoS_E.exit113_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	movl	8(%rax), %ecx
.LBB7_249:                              # %_ZNSolsEPFRSoS_E.exit113
	cmpl	$1, %ecx
	jne	.LBB7_255
# %bb.250:
.Ltmp999:
	movl	$.L.str.116, %esi
	movl	$47, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1000:
# %bb.251:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit114
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1001:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1002:
# %bb.252:                              # %.noexc353
.Ltmp1003:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1004:
# %bb.253:                              # %.noexc354
.Ltmp1005:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1006:
# %bb.254:                              # %.noexc354._ZNSolsEPFRSoS_E.exit115_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	movl	8(%rax), %ecx
.LBB7_255:                              # %_ZNSolsEPFRSoS_E.exit115
	cmpl	$2, %ecx
	jne	.LBB7_261
# %bb.256:
.Ltmp1007:
	movl	$.L.str.117, %esi
	movl	$44, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1008:
# %bb.257:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit116
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1009:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1010:
# %bb.258:                              # %.noexc357
.Ltmp1011:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1012:
# %bb.259:                              # %.noexc358
.Ltmp1013:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1014:
# %bb.260:                              # %.noexc358._ZNSolsEPFRSoS_E.exit117_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	movl	8(%rax), %ecx
.LBB7_261:                              # %_ZNSolsEPFRSoS_E.exit117
	cmpl	$3, %ecx
	jne	.LBB7_267
# %bb.262:
.Ltmp1015:
	movl	$.L.str.118, %esi
	movl	$37, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1016:
# %bb.263:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit118
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1017:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1018:
# %bb.264:                              # %.noexc361
.Ltmp1019:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1020:
# %bb.265:                              # %.noexc362
.Ltmp1021:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1022:
# %bb.266:                              # %.noexc362._ZNSolsEPFRSoS_E.exit119_crit_edge
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
.LBB7_267:                              # %_ZNSolsEPFRSoS_E.exit119
	movq	calc(%rip), %rcx
	movl	$0, 76(%rcx)
	cmpl	$4, 8(%rax)
	jne	.LBB7_274
# %bb.268:
.Ltmp1023:
	movl	$.L.str.119, %esi
	movl	$88, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1024:
# %bb.269:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit120
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1025:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1026:
# %bb.270:                              # %.noexc365
.Ltmp1027:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1028:
# %bb.271:                              # %.noexc366
.Ltmp1029:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1030:
# %bb.272:                              # %_ZNSolsEPFRSoS_E.exit121
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jne	.LBB7_274
# %bb.273:
	movq	calc(%rip), %rax
	movl	$1, 76(%rax)
.LBB7_274:
	movq	geom(%rip), %rsi
	movq	40(%rsi), %rax
	cmpl	$2, 8(%rax)
	jne	.LBB7_298
# %bb.275:
.Ltmp1031:
	movl	$.L.str.120, %esi
	movl	$66, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1032:
# %bb.276:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit122
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1033:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1034:
# %bb.277:                              # %.noexc369
.Ltmp1035:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1036:
# %bb.278:                              # %.noexc370
.Ltmp1037:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1038:
# %bb.279:                              # %_ZNSolsEPFRSoS_E.exit123
	movl	$200, %esi
	addq	gas(%rip), %rsi
.Ltmp1039:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1040:
# %bb.280:                              # %_ZNSirsERd.exit124
.Ltmp1041:
	movl	$.L.str.111, %esi
	movl	$34, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1042:
# %bb.281:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit125
	movq	gas(%rip), %rax
	movsd	200(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1043:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1044:
# %bb.282:                              # %_ZNSolsEd.exit126
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1045:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1046:
# %bb.283:                              # %.noexc373
.Ltmp1047:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1048:
# %bb.284:                              # %.noexc374
.Ltmp1049:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1050:
# %bb.285:                              # %_ZNSolsEPFRSoS_E.exit127
	movl	$224, %esi
	addq	gas(%rip), %rsi
.Ltmp1051:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1052:
# %bb.286:                              # %_ZNSirsERd.exit128
.Ltmp1053:
	movl	$.L.str.112, %esi
	movl	$39, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1054:
# %bb.287:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129
	movq	gas(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1055:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1056:
# %bb.288:                              # %_ZNSolsEd.exit130
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1057:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1058:
# %bb.289:                              # %.noexc377
.Ltmp1059:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1060:
# %bb.290:                              # %.noexc378
.Ltmp1061:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1062:
# %bb.291:                              # %_ZNSolsEPFRSoS_E.exit131
	movl	$248, %esi
	addq	gas(%rip), %rsi
.Ltmp1063:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1064:
# %bb.292:                              # %_ZNSirsERd.exit132
.Ltmp1065:
	movl	$.L.str.113, %esi
	movl	$51, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1066:
# %bb.293:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit133
	movq	gas(%rip), %rax
	movsd	248(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1067:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1068:
# %bb.294:                              # %_ZNSolsEd.exit134
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1069:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1070:
# %bb.295:                              # %.noexc381
.Ltmp1071:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1072:
# %bb.296:                              # %.noexc382
.Ltmp1073:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1074:
# %bb.297:                              # %.noexc382._ZNSolsEPFRSoS_E.exit135_crit_edge
	movq	geom(%rip), %rsi
.LBB7_298:                              # %_ZNSolsEPFRSoS_E.exit135
	cmpl	$0, 24(%rsi)
	jle	.LBB7_319
# %bb.299:
	addq	$36, %rsi
.Ltmp1075:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1076:
# %bb.300:
	movq	geom(%rip), %rax
	movl	36(%rax), %eax
	testl	%eax, %eax
	jne	.LBB7_306
# %bb.301:
.Ltmp1077:
	movl	$.L.str.121, %esi
	movl	$37, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1078:
# %bb.302:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit136
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1079:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1080:
# %bb.303:                              # %.noexc385
.Ltmp1081:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1082:
# %bb.304:                              # %.noexc386
.Ltmp1083:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1084:
# %bb.305:                              # %.noexc386._ZNSolsEPFRSoS_E.exit137_crit_edge
	movq	geom(%rip), %rax
	movl	36(%rax), %eax
.LBB7_306:                              # %_ZNSolsEPFRSoS_E.exit137
	cmpl	$1, %eax
	jne	.LBB7_319
# %bb.307:
.Ltmp1085:
	movl	$.L.str.122, %esi
	movl	$34, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1086:
# %bb.308:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit138
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1087:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1088:
# %bb.309:                              # %.noexc389
.Ltmp1089:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1090:
# %bb.310:                              # %.noexc390
.Ltmp1091:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1092:
# %bb.311:                              # %_ZNSolsEPFRSoS_E.exit139
	movq	geom(%rip), %rsi
	cmpl	$1, 36(%rsi)
	jne	.LBB7_319
# %bb.312:
	addq	$96, %rsi
.Ltmp1093:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1094:
# %bb.313:                              # %_ZNSirsERd.exit140
.Ltmp1095:
	movl	$.L.str.123, %esi
	movl	$46, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1096:
# %bb.314:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit141
	movq	geom(%rip), %rax
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1097:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1098:
# %bb.315:                              # %_ZNSolsEd.exit142
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1099:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1100:
# %bb.316:                              # %.noexc393
.Ltmp1101:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1102:
# %bb.317:                              # %.noexc394
.Ltmp1103:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1104:
# %bb.318:                              # %_ZNSolsEPFRSoS_E.exit143
	movq	geom(%rip), %rax
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	addsd	.LCPI7_1(%rip), %xmm0
	movq	128(%rax), %rcx
	divsd	16(%rcx), %xmm0
	movsd	%xmm0, 96(%rax)
.LBB7_319:                              # %_ZNSolsEPFRSoS_E.exit139.thread
	movq	calc(%rip), %rsi
	addq	$32, %rsi
.Ltmp1105:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1106:
# %bb.320:
	movq	calc(%rip), %rsi
	movl	32(%rsi), %eax
	testl	%eax, %eax
	jne	.LBB7_326
# %bb.321:
.Ltmp1107:
	movl	$.L.str.124, %esi
	movl	$36, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1108:
# %bb.322:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit144
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1109:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1110:
# %bb.323:                              # %.noexc397
.Ltmp1111:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1112:
# %bb.324:                              # %.noexc398
.Ltmp1113:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1114:
# %bb.325:                              # %.noexc398._ZNSolsEPFRSoS_E.exit145_crit_edge
	movq	calc(%rip), %rsi
	movl	32(%rsi), %eax
.LBB7_326:                              # %_ZNSolsEPFRSoS_E.exit145
	cmpl	$1, %eax
	jne	.LBB7_332
# %bb.327:
.Ltmp1115:
	movl	$.L.str.125, %esi
	movl	$57, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1116:
# %bb.328:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit146
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1117:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1118:
# %bb.329:                              # %.noexc401
.Ltmp1119:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1120:
# %bb.330:                              # %.noexc402
.Ltmp1121:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1122:
# %bb.331:                              # %.noexc402._ZNSolsEPFRSoS_E.exit147_crit_edge
	movq	calc(%rip), %rsi
.LBB7_332:                              # %_ZNSolsEPFRSoS_E.exit147
	addq	$28, %rsi
.Ltmp1123:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1124:
# %bb.333:
	movq	calc(%rip), %rax
	movl	28(%rax), %eax
	testl	%eax, %eax
	jne	.LBB7_339
# %bb.334:
.Ltmp1125:
	movl	$.L.str.126, %esi
	movl	$47, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1126:
# %bb.335:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit148
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1127:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1128:
# %bb.336:                              # %.noexc405
.Ltmp1129:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1130:
# %bb.337:                              # %.noexc406
.Ltmp1131:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1132:
# %bb.338:                              # %.noexc406._ZNSolsEPFRSoS_E.exit149_crit_edge
	movq	calc(%rip), %rax
	movl	28(%rax), %eax
.LBB7_339:                              # %_ZNSolsEPFRSoS_E.exit149
	cmpl	$1, %eax
	jne	.LBB7_411
# %bb.340:
	movq	geom(%rip), %rax
	cmpl	$0, 24(%rax)
	jne	.LBB7_346
# %bb.341:
.Ltmp1133:
	movl	$.L.str.127, %esi
	movl	$74, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1134:
# %bb.342:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit150
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1135:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1136:
# %bb.343:                              # %.noexc409
.Ltmp1137:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1138:
# %bb.344:                              # %.noexc410
.Ltmp1139:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1140:
# %bb.345:                              # %_ZNSolsEPFRSoS_E.exit151
	movq	calc(%rip), %rax
	cmpl	$1, 28(%rax)
	jne	.LBB7_411
.LBB7_346:                              # %_ZNSolsEPFRSoS_E.exit151.thread
	movq	geom(%rip), %rax
	cmpl	$0, 24(%rax)
	jle	.LBB7_363
# %bb.347:
	cmpl	$1, 36(%rax)
	jne	.LBB7_352
# %bb.348:
.Ltmp1314:
	movl	$.L.str.128, %esi
	movl	$69, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1315:
# %bb.349:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit152
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1316:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1317:
# %bb.350:                              # %.noexc413
.Ltmp1318:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1319:
# %bb.351:                              # %.noexc414
.Ltmp1320:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1321:
	jmp	.LBB7_465
.LBB7_352:
.Ltmp1141:
	movl	$.L.str.129, %esi
	movl	$27, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1142:
# %bb.353:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit154
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1143:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1144:
# %bb.354:                              # %.noexc417
.Ltmp1145:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1146:
# %bb.355:                              # %.noexc418
.Ltmp1147:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1148:
# %bb.356:                              # %_ZNSolsEPFRSoS_E.exit155
	movq	geom(%rip), %rsi
	addq	$80, %rsi
.Ltmp1149:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1150:
# %bb.357:                              # %_ZNSirsERd.exit156
.Ltmp1151:
	movl	$.L.str.130, %esi
	movl	$39, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1152:
# %bb.358:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit157
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1153:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1154:
# %bb.359:                              # %_ZNSolsEd.exit158
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1155:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1156:
# %bb.360:                              # %.noexc421
.Ltmp1157:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1158:
# %bb.361:                              # %.noexc422
.Ltmp1159:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1160:
# %bb.362:                              # %_ZNSolsEPFRSoS_E.exit159
	movq	calc(%rip), %rax
	cmpl	$1, 28(%rax)
	jne	.LBB7_411
.LBB7_363:                              # %_ZNSolsEPFRSoS_E.exit159.thread592
.Ltmp1161:
	movl	$.L.str.131, %esi
	movl	$54, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1162:
# %bb.364:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit160
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1163:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1164:
# %bb.365:                              # %.noexc425
.Ltmp1165:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1166:
# %bb.366:                              # %.noexc426
.Ltmp1167:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1168:
# %bb.367:                              # %_ZNSolsEPFRSoS_E.exit161
	movq	gas(%rip), %rsi
	addq	$88, %rsi
.Ltmp1169:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1170:
# %bb.368:                              # %_ZNSirsERd.exit162
.Ltmp1171:
	movl	$.L.str.95, %esi
	movl	$29, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1172:
# %bb.369:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit163
	movq	gas(%rip), %rax
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1173:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1174:
# %bb.370:                              # %_ZNSolsEd.exit164
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1175:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1176:
# %bb.371:                              # %.noexc429
.Ltmp1177:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1178:
# %bb.372:                              # %.noexc430
.Ltmp1179:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1180:
# %bb.373:                              # %_ZNSolsEPFRSoS_E.exit165
	movq	gas(%rip), %rsi
	addq	$112, %rsi
.Ltmp1181:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1182:
# %bb.374:                              # %_ZNSirsERd.exit166
.Ltmp1183:
	movl	$.L.str.96, %esi
	movl	$26, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1184:
# %bb.375:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit167
	movq	gas(%rip), %rax
	movsd	112(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1185:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1186:
# %bb.376:                              # %_ZNSolsEd.exit168
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1187:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1188:
# %bb.377:                              # %.noexc433
.Ltmp1189:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1190:
# %bb.378:                              # %.noexc434
.Ltmp1191:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1192:
# %bb.379:                              # %_ZNSolsEPFRSoS_E.exit169
	movq	gas(%rip), %rsi
	cmpl	$0, 428(%rsi)
	jle	.LBB7_387
# %bb.380:
	addq	$136, %rsi
.Ltmp1193:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1194:
# %bb.381:                              # %_ZNSirsERd.exit170
.Ltmp1195:
	movl	$.L.str.97, %esi
	movl	$53, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1196:
# %bb.382:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit171
	movq	gas(%rip), %rax
	movsd	136(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1197:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1198:
# %bb.383:                              # %_ZNSolsEd.exit172
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1199:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1200:
# %bb.384:                              # %.noexc437
.Ltmp1201:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1202:
# %bb.385:                              # %.noexc438
.Ltmp1203:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1204:
# %bb.386:                              # %.noexc438._ZNSolsEPFRSoS_E.exit173_crit_edge
	movq	gas(%rip), %rsi
.LBB7_387:                              # %_ZNSolsEPFRSoS_E.exit173
	addq	$160, %rsi
.Ltmp1205:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1206:
# %bb.388:                              # %_ZNSirsERd.exit174
.Ltmp1207:
	movl	$.L.str.98, %esi
	movl	$42, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1208:
# %bb.389:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit175
	movq	gas(%rip), %rax
	movsd	160(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1209:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1210:
# %bb.390:                              # %_ZNSolsEd.exit176
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1211:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1212:
# %bb.391:                              # %.noexc441
.Ltmp1213:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1214:
# %bb.392:                              # %.noexc442
.Ltmp1215:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1216:
# %bb.393:                              # %_ZNSolsEPFRSoS_E.exit177
	movl	$184, %esi
	addq	gas(%rip), %rsi
.Ltmp1217:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1218:
# %bb.394:                              # %_ZNSirsERd.exit178
.Ltmp1219:
	movl	$.L.str.99, %esi
	movl	$42, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1220:
# %bb.395:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit179
	movq	gas(%rip), %rax
	movsd	184(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1221:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1222:
# %bb.396:                              # %_ZNSolsEd.exit180
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1223:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1224:
# %bb.397:                              # %.noexc445
.Ltmp1225:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1226:
# %bb.398:                              # %.noexc446
.Ltmp1227:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1228:
# %bb.399:                              # %_ZNSolsEPFRSoS_E.exit181
	movq	gas(%rip), %rax
	cmpl	$2, 424(%rax)
	jl	.LBB7_410
# %bb.400:                              # %.lr.ph480.preheader
	movl	$1, %r15d
	leaq	536(%rsp), %r14
.LBB7_401:                              # %.lr.ph480
                                        # =>This Inner Loop Header: Depth=1
	movq	312(%rax), %rax
	movq	(%rax,%r15,8), %rsi
	addq	$16, %rsi
.Ltmp1229:
	movq	%r14, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1230:
# %bb.402:                              # %_ZNSirsERd.exit182
                                        #   in Loop: Header=BB7_401 Depth=1
.Ltmp1231:
	movl	$.L.str.132, %esi
	movl	$24, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1232:
# %bb.403:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit183
                                        #   in Loop: Header=BB7_401 Depth=1
.Ltmp1233:
	movq	%rbx, %rdi
	movl	%r15d, %esi
	callq	_ZNSolsEi
.Ltmp1234:
# %bb.404:                              #   in Loop: Header=BB7_401 Depth=1
.Ltmp1235:
	movq	%rax, %r12
	movl	$.L.str.64, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1236:
# %bb.405:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit184
                                        #   in Loop: Header=BB7_401 Depth=1
	movq	gas(%rip), %rax
	movq	312(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1237:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1238:
# %bb.406:                              # %_ZNSolsEd.exit185
                                        #   in Loop: Header=BB7_401 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1239:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1240:
# %bb.407:                              # %.noexc449
                                        #   in Loop: Header=BB7_401 Depth=1
.Ltmp1241:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1242:
# %bb.408:                              # %.noexc450
                                        #   in Loop: Header=BB7_401 Depth=1
.Ltmp1243:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1244:
# %bb.409:                              # %_ZNSolsEPFRSoS_E.exit186
                                        #   in Loop: Header=BB7_401 Depth=1
	leaq	1(%r15), %rcx
	movq	gas(%rip), %rax
	movslq	424(%rax), %rdx
	cmpq	%rdx, %r15
	movq	%rcx, %r15
	jl	.LBB7_401
	jmp	.LBB7_411
.LBB7_410:
	movq	312(%rax), %rax
	movq	8(%rax), %rax
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 16(%rax)
.LBB7_411:                              # %.loopexit
	movq	geom(%rip), %rsi
	cmpl	$0, 24(%rsi)
	jne	.LBB7_430
# %bb.412:
	movq	40(%rsi), %rax
	cmpl	$0, 4(%rax)
	jne	.LBB7_430
# %bb.413:
	movq	calc(%rip), %rsi
	addq	$36, %rsi
.Ltmp1246:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1247:
# %bb.414:
	movq	calc(%rip), %rax
	movl	36(%rax), %eax
	cmpl	$2, %eax
	je	.LBB7_426
# %bb.415:
	cmpl	$1, %eax
	je	.LBB7_419
# %bb.416:
	testl	%eax, %eax
	jne	.LBB7_428
# %bb.417:
.Ltmp1264:
	movl	$.L.str.133, %esi
	movl	$28, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1265:
# %bb.418:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit187
.Ltmp1266:
	movq	%rbx, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1267:
	jmp	.LBB7_428
.LBB7_419:
	movq	geom(%rip), %rsi
	addq	$120, %rsi
.Ltmp1252:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1253:
# %bb.420:                              # %_ZNSirsERd.exit189
.Ltmp1254:
	movl	$.L.str.134, %esi
	movl	$67, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1255:
# %bb.421:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit190
	movq	geom(%rip), %rax
	movsd	120(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1256:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1257:
# %bb.422:                              # %_ZNSolsEd.exit191
.Ltmp1258:
	movq	%rax, %r14
	movl	$.L.str.135, %esi
	movl	$5, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1259:
# %bb.423:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit192
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1260:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1261:
# %bb.424:                              # %_ZNSolsEd.exit193
.Ltmp1262:
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1263:
# %bb.425:                              # %_ZNSolsEPFRSoS_E.exit194
	movsd	.LCPI7_2(%rip), %xmm0           # xmm0 = mem[0],zero
	movq	geom(%rip), %rsi
	jmp	.LBB7_429
.LBB7_426:
.Ltmp1248:
	movl	$.L.str.136, %esi
	movl	$63, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1249:
# %bb.427:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit195
.Ltmp1250:
	movq	%rbx, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1251:
.LBB7_428:
	movq	geom(%rip), %rsi
	movq	128(%rsi), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	addsd	.LCPI7_1(%rip), %xmm0
	movsd	%xmm0, 120(%rsi)
	xorpd	%xmm0, %xmm0
.LBB7_429:                              # %.sink.split
	movsd	%xmm0, 112(%rsi)
.LBB7_430:
	movl	$0, 32(%rsi)
	movq	$0, 88(%rsi)
	movq	40(%rsi), %rax
	cmpl	$1, 8(%rax)
	jne	.LBB7_449
# %bb.431:
.Ltmp1268:
	addq	$32, %rsi
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1269:
# %bb.432:
	movq	geom(%rip), %rax
	movl	32(%rax), %eax
	testl	%eax, %eax
	jne	.LBB7_438
# %bb.433:
.Ltmp1270:
	movl	$.L.str.137, %esi
	movl	$32, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1271:
# %bb.434:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit197
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1272:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1273:
# %bb.435:                              # %.noexc453
.Ltmp1274:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1275:
# %bb.436:                              # %.noexc454
.Ltmp1276:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1277:
# %bb.437:                              # %.noexc454._ZNSolsEPFRSoS_E.exit198_crit_edge
	movq	geom(%rip), %rax
	movl	32(%rax), %eax
.LBB7_438:                              # %_ZNSolsEPFRSoS_E.exit198
	cmpl	$1, %eax
	jne	.LBB7_449
# %bb.439:
.Ltmp1278:
	movl	$.L.str.138, %esi
	movl	$46, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1279:
# %bb.440:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit199
	movq	24(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1280:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1281:
# %bb.441:                              # %.noexc457
.Ltmp1282:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1283:
# %bb.442:                              # %.noexc458
.Ltmp1284:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1285:
# %bb.443:                              # %_ZNSolsEPFRSoS_E.exit200
	movq	geom(%rip), %rsi
	addq	$88, %rsi
.Ltmp1286:
	leaq	536(%rsp), %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp1287:
# %bb.444:                              # %_ZNSirsERd.exit201
.Ltmp1288:
	movl	$.L.str.139, %esi
	movl	$36, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1289:
# %bb.445:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit202
	movq	geom(%rip), %rax
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1290:
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1291:
# %bb.446:                              # %_ZNSolsEd.exit203
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1292:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1293:
# %bb.447:                              # %.noexc461
.Ltmp1294:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1295:
# %bb.448:                              # %.noexc462
.Ltmp1296:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1297:
.LBB7_449:                              # %_ZNSolsEPFRSoS_E.exit204
	movq	calc(%rip), %rsi
	addq	$16, %rsi
.Ltmp1298:
	leaq	536(%rsp), %rdi
	callq	_ZNSirsERi
.Ltmp1299:
# %bb.450:
.Ltmp1300:
	movl	$.L.str.140, %esi
	movl	$54, %edx
	movq	%rbx, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1301:
# %bb.451:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit205
	movq	calc(%rip), %rax
	movl	16(%rax), %esi
.Ltmp1302:
	movq	%rbx, %rdi
	callq	_ZNSolsEi
.Ltmp1303:
# %bb.452:
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp1304:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1305:
# %bb.453:                              # %.noexc465
.Ltmp1306:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp1307:
# %bb.454:                              # %.noexc466
.Ltmp1308:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1309:
.LBB7_455:                              # %_ZNSolsEPFRSoS_E.exit206
.Ltmp1310:
	leaq	8(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp1311:
# %bb.456:
.Ltmp1312:
	leaq	536(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp1313:
# %bb.457:
	movq	calc(%rip), %rax
	cmpl	$0, 28(%rax)
	jne	.LBB7_465
# %bb.458:
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$0, 8(%rax)
	jne	.LBB7_465
# %bb.459:
	movq	gas(%rip), %rcx
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movsd	104(%rcx), %xmm1                # xmm1 = mem[0],zero
	movsd	%xmm0, 88(%rcx)
	movsd	%xmm1, 112(%rcx)
	cmpl	$0, 428(%rcx)
	jle	.LBB7_461
# %bb.460:
	movsd	128(%rcx), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, 136(%rcx)
.LBB7_461:
	movsd	152(%rcx), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, 160(%rcx)
	movl	424(%rcx), %eax
	movq	312(%rcx), %rcx
	cmpl	$2, %eax
	jl	.LBB7_464
# %bb.462:                              # %.preheader
	incq	%rax
	movl	$1, %edx
.LBB7_463:                              # =>This Inner Loop Header: Depth=1
	movq	(%rcx,%rdx,8), %rsi
	movsd	8(%rsi), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, 16(%rsi)
	incq	%rdx
	cmpq	%rdx, %rax
	jne	.LBB7_463
	jmp	.LBB7_465
.LBB7_464:
	movq	8(%rcx), %rax
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 16(%rax)
.LBB7_465:                              # %_ZNSolsEPFRSoS_E.exit153
	leaq	536(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	leaq	8(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	addq	$1064, %rsp                     # imm = 0x428
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB7_466:
	.cfi_def_cfa_offset 1104
.Ltmp607:
	movq	%rax, %rbx
	jmp	.LBB7_467
.LBB7_151:                              # %.loopexit470
.Ltmp1245:
	jmp	.LBB7_154
.LBB7_153:                              # %.loopexit.split-lp.loopexit.split-lp
.Ltmp1322:
	jmp	.LBB7_154
.LBB7_152:                              # %.loopexit.split-lp.loopexit
.Ltmp858:
.LBB7_154:                              # %.loopexit.split-lp
	movq	%rax, %rbx
	leaq	536(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
.LBB7_467:
	leaq	8(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end7:
	.size	_Z9READ_DATAv, .Lfunc_end7-_Z9READ_DATAv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table7:
.Lexception4:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end4-.Lcst_begin4
.Lcst_begin4:
	.uleb128 .Lfunc_begin4-.Lfunc_begin4    # >> Call Site 1 <<
	.uleb128 .Ltmp605-.Lfunc_begin4         #   Call between .Lfunc_begin4 and .Ltmp605
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp605-.Lfunc_begin4         # >> Call Site 2 <<
	.uleb128 .Ltmp606-.Ltmp605              #   Call between .Ltmp605 and .Ltmp606
	.uleb128 .Ltmp607-.Lfunc_begin4         #     jumps to .Ltmp607
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp608-.Lfunc_begin4         # >> Call Site 3 <<
	.uleb128 .Ltmp841-.Ltmp608              #   Call between .Ltmp608 and .Ltmp841
	.uleb128 .Ltmp1322-.Lfunc_begin4        #     jumps to .Ltmp1322
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp842-.Lfunc_begin4         # >> Call Site 4 <<
	.uleb128 .Ltmp857-.Ltmp842              #   Call between .Ltmp842 and .Ltmp857
	.uleb128 .Ltmp858-.Lfunc_begin4         #     jumps to .Ltmp858
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp859-.Lfunc_begin4         # >> Call Site 5 <<
	.uleb128 .Ltmp1228-.Ltmp859             #   Call between .Ltmp859 and .Ltmp1228
	.uleb128 .Ltmp1322-.Lfunc_begin4        #     jumps to .Ltmp1322
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1229-.Lfunc_begin4        # >> Call Site 6 <<
	.uleb128 .Ltmp1244-.Ltmp1229            #   Call between .Ltmp1229 and .Ltmp1244
	.uleb128 .Ltmp1245-.Lfunc_begin4        #     jumps to .Ltmp1245
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1246-.Lfunc_begin4        # >> Call Site 7 <<
	.uleb128 .Ltmp1313-.Ltmp1246            #   Call between .Ltmp1246 and .Ltmp1313
	.uleb128 .Ltmp1322-.Lfunc_begin4        #     jumps to .Ltmp1322
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1313-.Lfunc_begin4        # >> Call Site 8 <<
	.uleb128 .Lfunc_end7-.Ltmp1313          #   Call between .Ltmp1313 and .Lfunc_end7
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end4:
	.p2align	2, 0x0
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z20SET_INITIAL_STATE_1Dv
.LCPI8_0:
	.quad	0x4008000000000000              # double 3
.LCPI8_1:
	.quad	0x4010c152382d7365              # double 4.1887902047863905
.LCPI8_2:
	.quad	0x400921fb54442d18              # double 3.1415926535897931
.LCPI8_3:
	.quad	0x3ff0000000000000              # double 1
.LCPI8_4:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI8_5:
	.quad	0x3b40b0edf6c91c1b              # double 2.7613160000000003E-23
.LCPI8_6:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI8_7:
	.quad	0x4000000000000000              # double 2
.LCPI8_8:
	.quad	0x3fe921fb54442d18              # double 0.78539816339744828
.LCPI8_9:
	.quad	0x4004000000000000              # double 2.5
.LCPI8_10:
	.quad	0x400c5bf891b4ef6b              # double 3.5449077018110322
.LCPI8_12:
	.quad	0x3eb0c6f7a0b5ed8d              # double 9.9999999999999995E-7
.LCPI8_13:
	.quad	0x3fd0000000000000              # double 0.25
.LCPI8_14:
	.quad	0x3fb999999999999a              # double 0.10000000000000001
.LCPI8_15:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI8_16:
	.quad	0x402921fb54442d18              # double 12.566370614359172
.LCPI8_17:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
.LCPI8_19:
	.quad	0x3ffc5bf891b4ef6b              # double 1.7724538509055161
.LCPI8_20:
	.quad	0x3ff199999999999a              # double 1.1000000000000001
.LCPI8_21:
	.quad	0xbfe0000000000000              # double -0.5
.LCPI8_22:
	.quad	0x3f847ae147ae147b              # double 0.01
.LCPI8_23:
	.quad	0x3f50624dd2f1a9fc              # double 0.001
.LCPI8_24:
	.quad	0x3f1a36e2eb1c432d              # double 1.0E-4
.LCPI8_25:
	.quad	0x3b20b0edf6c91c1b              # double 6.9032900000000006E-24
.LCPI8_26:
	.quad	0xc008000000000000              # double -3
.LCPI8_27:
	.quad	0x8000000000000000              # double -0
.LCPI8_29:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI8_11:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
.LCPI8_18:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
.LCPI8_28:
	.zero	16
	.text
	.globl	_Z20SET_INITIAL_STATE_1Dv
	.type	_Z20SET_INITIAL_STATE_1Dv,@function
_Z20SET_INITIAL_STATE_1Dv:              # @_Z20SET_INITIAL_STATE_1Dv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$312, %rsp                      # imm = 0x138
	.cfi_def_cfa_offset 368
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	xorps	%xmm0, %xmm0
	movaps	%xmm0, 192(%rsp)
	movaps	%xmm0, 176(%rsp)
	movq	calc(%rip), %rcx
	imull	$10000, 8(%rcx), %eax           # imm = 0x2710
	orl	$2, %eax
	movl	%eax, 68(%rcx)
	cltd
	idivl	16(%rcx)
	movq	geom(%rip), %rcx
	movl	%eax, 12(%rcx)
	movl	$file_9+16, %edi
	movl	$.L.str.141, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	12(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rdi
	movl	12(%rdi), %edx
	movl	%edx, 16(%rdi)
	movl	$0, 20(%rdi)
	incl	%edx
	leaq	64(%rdi), %rcx
	movl	$1, %esi
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movsd	16(%rcx), %xmm0                 # xmm0 = mem[0],zero
	subsd	8(%rcx), %xmm0
	movl	12(%rax), %ecx
	cvtsi2sd	%ecx, %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 72(%rax)
	movl	%ecx, (%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.142, %esi
	movl	$32, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	calc(%rip), %rcx
	movl	16(%rcx), %eax
	cltd
	idivl	64(%rcx)
	movq	geom(%rip), %rcx
	movl	%eax, 8(%rcx)
	imull	12(%rcx), %eax
	movl	%eax, 4(%rcx)
	movl	$file_9+16, %edi
	movl	$.L.str.143, %esi
	movl	$33, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	4(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
	testl	%ecx, %ecx
	je	.LBB8_1
# %bb.9:                                # %.thread
	movq	calc(%rip), %rdx
	cmpl	$0, 28(%rdx)
	je	.LBB8_4
# %bb.10:                               # %.thread334
	cmpl	$1, %ecx
	jne	.LBB8_12
# %bb.11:
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	movsd	16(%rax), %xmm2                 # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm1
	mulsd	%xmm2, %xmm2
	subsd	%xmm0, %xmm2
	subsd	%xmm1, %xmm0
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm0
	mulsd	88(%rax), %xmm2
	addsd	%xmm0, %xmm2
	mulsd	.LCPI8_2(%rip), %xmm2
	jmp	.LBB8_15
.LBB8_1:
	movq	$0, 80(%rax)
	movq	calc(%rip), %rdx
	cmpl	$0, 28(%rdx)
	movq	128(%rax), %rax
	je	.LBB8_2
# %bb.8:                                # %.thread335
	xorpd	%xmm0, %xmm0
	subsd	8(%rax), %xmm0
	movq	gas(%rip), %rcx
	mulsd	80(%rcx), %xmm0
	movsd	16(%rax), %xmm2                 # xmm2 = mem[0],zero
	mulsd	88(%rcx), %xmm2
	addsd	%xmm0, %xmm2
	jmp	.LBB8_15
.LBB8_4:                                # %.thread332
	cmpl	$1, %ecx
	jne	.LBB8_6
# %bb.5:
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movsd	16(%rax), %xmm2                 # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	mulsd	%xmm0, %xmm0
	subsd	%xmm0, %xmm2
	mulsd	.LCPI8_2(%rip), %xmm2
	jmp	.LBB8_3
.LBB8_12:
	cmpl	$2, %ecx
	jne	.LBB8_16
# %bb.13:
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	subsd	%xmm0, %xmm2
	movq	gas(%rip), %rax
	mulsd	88(%rax), %xmm2
	addsd	16(%rsp), %xmm2                 # 8-byte Folded Reload
	mulsd	.LCPI8_1(%rip), %xmm2
	jmp	.LBB8_14
.LBB8_2:                                # %.thread333
	movsd	16(%rax), %xmm2                 # xmm2 = mem[0],zero
	subsd	8(%rax), %xmm2
.LBB8_3:                                # %.thread769.sink.split
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm2
	jmp	.LBB8_15
.LBB8_6:
	cmpl	$2, %ecx
	jne	.LBB8_16
# %bb.7:
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	subsd	%xmm0, %xmm2
	mulsd	.LCPI8_1(%rip), %xmm2
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm2
.LBB8_14:                               # %.thread769.sink.split
	movq	calc(%rip), %rdx
.LBB8_15:                               # %.thread769.sink.split
	xorps	%xmm0, %xmm0
	cvtsi2sdl	68(%rdx), %xmm0
	divsd	%xmm0, %xmm2
	movsd	%xmm2, 96(%rdx)
.LBB8_16:                               # %.thread769
	movsd	96(%rdx), %xmm0                 # xmm0 = mem[0],zero
	mulsd	272(%rdx), %xmm0
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	maxsd	%xmm0, %xmm1
	movsd	%xmm1, 96(%rdx)
	movq	$0, 80(%rdx)
	xorpd	%xmm0, %xmm0
	movupd	%xmm0, 216(%rdx)
	movq	output(%rip), %rax
	movl	$0, 12(%rax)
	movq	gas(%rip), %r15
	movl	424(%r15), %r12d
	testl	%r12d, %r12d
	js	.LBB8_21
# %bb.17:                               # %.preheader401.lr.ph
	leaq	8(,%r12,8), %rbx
	leaq	1(%r12), %r13
	movq	%rdx, 16(%rsp)                  # 8-byte Spill
	movq	328(%rdx), %rbp
	xorl	%r14d, %r14d
.LBB8_18:                               # %._crit_edge
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbp,%r14,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%r14
	cmpq	%r14, %r13
	jne	.LBB8_18
# %bb.19:                               # %.preheader400
	testl	%r12d, %r12d
	movq	16(%rsp), %r14                  # 8-byte Reload
	js	.LBB8_21
# %bb.20:                               # %.lr.ph427
	movq	288(%r14), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	movq	296(%r14), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
.LBB8_21:                               # %.preheader398
	xorl	%eax, %eax
.LBB8_22:                               # %.preheader397
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_24 Depth 2
	testl	%r12d, %r12d
	js	.LBB8_25
# %bb.23:                               # %.lr.ph430
                                        #   in Loop: Header=BB8_22 Depth=1
	movq	536(%r15), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rdx
.LBB8_24:                               #   Parent Loop BB8_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rdx,4)
	movslq	424(%r15), %r12
	incq	%rdx
	cmpq	%r12, %rdx
	jl	.LBB8_24
.LBB8_25:                               # %._crit_edge431
                                        #   in Loop: Header=BB8_22 Depth=1
	incq	%rax
	cmpq	$5, %rax
	jne	.LBB8_22
# %bb.26:                               # %.preheader396
	xorl	%eax, %eax
.LBB8_27:                               # %.preheader395
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_29 Depth 2
	testl	%r12d, %r12d
	js	.LBB8_30
# %bb.28:                               # %.lr.ph435
                                        #   in Loop: Header=BB8_27 Depth=1
	movq	544(%r15), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rdx
.LBB8_29:                               #   Parent Loop BB8_27 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rdx,4)
	movslq	424(%r15), %r12
	incq	%rdx
	cmpq	%r12, %rdx
	jl	.LBB8_29
.LBB8_30:                               # %._crit_edge436
                                        #   in Loop: Header=BB8_27 Depth=1
	incq	%rax
	cmpq	$5, %rax
	jne	.LBB8_27
# %bb.31:                               # %.preheader394
	movl	448(%r15), %eax
	testl	%eax, %eax
	js	.LBB8_33
# %bb.32:                               # %.lr.ph440
	movq	280(%r15), %rdi
	leaq	8(,%rax,8), %rdx
	xorl	%esi, %esi
	callq	memset@PLT
.LBB8_33:                               # %.preheader393
	movq	geom(%rip), %rdi
	cmpl	$0, 12(%rdi)
	jle	.LBB8_36
# %bb.34:                               # %.lr.ph443
	movq	64(%rdi), %rax
	movq	(%rax), %rax
	movl	$-1, %ecx
	xorl	%edx, %edx
.LBB8_35:                               # =>This Inner Loop Header: Depth=1
	movl	%ecx, 4(%rax,%rdx,4)
	movslq	12(%rdi), %rsi
	incq	%rdx
	decl	%ecx
	cmpq	%rsi, %rdx
	jl	.LBB8_35
.LBB8_36:                               # %._crit_edge444
	movl	(%rdi), %edx
	incl	%edx
	movl	$136, %r14d
	leaq	(%rdi,%r14), %rcx
	movl	$5, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
	movq	geom(%rip), %rdi
	movslq	(%rdi), %rax
	addq	$48, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	movl	$144, %ebx
	leaq	(%rdi,%rbx), %rcx
	movl	$6, %esi
	callq	_ZN7GEOM_1D10d_allocateEiiRPPd
	movq	geom(%rip), %rdi
	movl	4(%rdi), %edx
	incl	%edx
	leaq	56(%rdi), %rcx
	movl	$4, %esi
	callq	_ZN7GEOM_1D10i_allocateEiiRPPi
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$72, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	addq	$80, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movslq	436(%rax), %rax
	addq	$88, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	addq	%rdi, %r14
	movl	$24, %esi
	movq	%r14, %rcx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
	movq	output(%rip), %rdi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	incl	%ecx
	leaq	176(%rdi), %r8
	movl	$13, %esi
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	addl	$36, %esi
	addq	%rdi, %rbx
	movl	$3, %edx
	movq	%rbx, %rcx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	leal	10(%rcx), %esi
	movq	geom(%rip), %rax
	movl	(%rax), %edx
	incl	%edx
	incl	%ecx
	leaq	168(%rdi), %r8
                                        # kill: def $ecx killed $ecx killed $rcx
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	incl	%ecx
	leaq	192(%rdi), %r9
	movl	$9, %esi
	movl	$3, %edx
	movl	$3, %r8d
	callq	_ZN6OUTPUT10d_allocateEiiiiRPPPPd
	movq	output(%rip), %rdi
	leaq	152(%rdi), %rcx
	movl	$7, %esi
	movl	$3, %edx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
	movq	gas(%rip), %rax
	movl	428(%rax), %edx
	testl	%edx, %edx
	js	.LBB8_38
# %bb.37:
	movq	output(%rip), %rdi
	movl	424(%rax), %esi
	incl	%esi
	incl	%edx
	leaq	184(%rdi), %r8
	movl	$151, %ecx
	callq	_ZN6OUTPUT10d_allocateEiiiRPPPd
	movq	output(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %esi
	movl	428(%rax), %edx
	incl	%esi
	incl	%edx
	leaq	160(%rdi), %rcx
	callq	_ZN6OUTPUT10d_allocateEiiRPPd
.LBB8_38:
	callq	_Z18INITIALISE_SAMPLESv
	movl	44(%rsp), %ebx
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	jle	.LBB8_60
# %bb.39:                               # %.lr.ph459.preheader
	movl	$1, %r14d
.LBB8_40:                               # %.lr.ph459
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_49 Depth 2
	leaq	-1(%r14), %r15
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r15, %xmm0
	mulsd	72(%rax), %xmm0
	movq	128(%rax), %rdx
	movq	136(%rax), %rcx
	addsd	8(%rdx), %xmm0
	movq	16(%rcx), %rdx
	movsd	%xmm0, (%rdx,%r14,8)
	addsd	72(%rax), %xmm0
	movq	24(%rcx), %rsi
	movsd	%xmm0, (%rsi,%r14,8)
	movsd	72(%rax), %xmm0                 # xmm0 = mem[0],zero
	mulsd	.LCPI8_4(%rip), %xmm0
	addsd	(%rdx,%r14,8), %xmm0
	movq	8(%rcx), %rdi
	movsd	%xmm0, (%rdi,%r14,8)
	movl	24(%rax), %edi
	cmpl	$2, %edi
	je	.LBB8_45
# %bb.41:                               # %.lr.ph459
                                        #   in Loop: Header=BB8_40 Depth=1
	cmpl	$1, %edi
	je	.LBB8_44
# %bb.42:                               # %.lr.ph459
                                        #   in Loop: Header=BB8_40 Depth=1
	testl	%edi, %edi
	jne	.LBB8_47
# %bb.43:                               # %.thread336
                                        #   in Loop: Header=BB8_40 Depth=1
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	subsd	(%rdx,%r14,8), %xmm1
	jmp	.LBB8_46
.LBB8_44:                               #   in Loop: Header=BB8_40 Depth=1
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	movsd	(%rdx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	subsd	%xmm0, %xmm1
	mulsd	.LCPI8_2(%rip), %xmm1
	jmp	.LBB8_46
.LBB8_45:                               #   in Loop: Header=BB8_40 Depth=1
	movsd	(%rsi,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movq	136(%rax), %rax
	movq	16(%rax), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	mulsd	.LCPI8_1(%rip), %xmm1
	movq	geom(%rip), %rax
	movq	136(%rax), %rcx
.LBB8_46:                               # %.thread774.sink.split
                                        #   in Loop: Header=BB8_40 Depth=1
	movq	32(%rcx), %rcx
	movsd	%xmm1, (%rcx,%r14,8)
.LBB8_47:                               # %.thread774
                                        #   in Loop: Header=BB8_40 Depth=1
	imull	8(%rax), %r15d
	movq	48(%rax), %rcx
	movl	%r15d, (%rcx,%r14,4)
	movl	8(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB8_59
# %bb.48:                               # %.lr.ph450
                                        #   in Loop: Header=BB8_40 Depth=1
	xorl	%r15d, %r15d
.LBB8_49:                               #   Parent Loop BB8_40 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	48(%rax), %rdx
	movl	(%rdx,%r14,4), %ebx
	leaq	(%r15,%rbx), %r12
	incq	%r12
	movq	136(%rax), %rdx
	xorps	%xmm2, %xmm2
	cvtsi2sd	%r15, %xmm2
	movq	16(%rdx), %rdx
	movsd	72(%rax), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ecx, %xmm1
	mulsd	%xmm0, %xmm2
	divsd	%xmm1, %xmm2
	addsd	(%rdx,%r14,8), %xmm2
	divsd	%xmm1, %xmm0
	addsd	%xmm2, %xmm0
	movl	24(%rax), %ecx
	cmpl	$2, %ecx
	je	.LBB8_56
# %bb.50:                               #   in Loop: Header=BB8_49 Depth=2
	cmpl	$1, %ecx
	je	.LBB8_53
# %bb.51:                               #   in Loop: Header=BB8_49 Depth=2
	testl	%ecx, %ecx
	jne	.LBB8_55
# %bb.52:                               # %.thread337
                                        #   in Loop: Header=BB8_49 Depth=2
	subsd	%xmm2, %xmm0
	jmp	.LBB8_54
.LBB8_53:                               #   in Loop: Header=BB8_49 Depth=2
	mulsd	%xmm0, %xmm0
	mulsd	%xmm2, %xmm2
	subsd	%xmm2, %xmm0
	mulsd	.LCPI8_2(%rip), %xmm0
.LBB8_54:                               # %._crit_edge720.sink.split
                                        #   in Loop: Header=BB8_49 Depth=2
	movq	144(%rax), %rcx
	movq	8(%rcx), %rcx
	movslq	%r12d, %rdx
	movsd	%xmm0, (%rcx,%rdx,8)
.LBB8_55:                               # %._crit_edge720
                                        #   in Loop: Header=BB8_49 Depth=2
	movq	144(%rax), %rcx
	movslq	%r12d, %rdx
	jmp	.LBB8_57
.LBB8_56:                               #   in Loop: Header=BB8_49 Depth=2
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	callq	pow
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	pow
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	mulsd	.LCPI8_1(%rip), %xmm1
	movq	geom(%rip), %rax
	movq	144(%rax), %rcx
	movq	8(%rcx), %rsi
	movslq	%r12d, %rdx
	movsd	%xmm1, (%rsi,%rdx,8)
.LBB8_57:                               #   in Loop: Header=BB8_49 Depth=2
	movq	16(%rcx), %rcx
	movq	$0, (%rcx,%rdx,8)
	movq	56(%rax), %rcx
	movq	24(%rcx), %rcx
	movl	%r14d, (%rcx,%rdx,4)
	movslq	8(%rax), %rcx
	incq	%r15
	cmpq	%rcx, %r15
	jl	.LBB8_49
# %bb.58:                               # %._crit_edge451.loopexit
                                        #   in Loop: Header=BB8_40 Depth=1
	addl	%r15d, %ebx
.LBB8_59:                               # %._crit_edge451
                                        #   in Loop: Header=BB8_40 Depth=1
	movq	gas(%rip), %rcx
	movsd	104(%rcx), %xmm0                # xmm0 = mem[0],zero
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	88(%rcx), %rdx
	movsd	%xmm0, (%rdx,%r14,8)
	movq	64(%rcx), %rcx
	movsd	%xmm0, (%rcx,%r14,8)
	leaq	1(%r14), %rcx
	movslq	(%rax), %rdx
	cmpq	%rdx, %r14
	movq	%rcx, %r14
	jl	.LBB8_40
.LBB8_60:                               # %._crit_edge460
	movl	%ebx, 44(%rsp)
	movl	36(%rax), %ecx
	cmpl	$1, %ecx
	je	.LBB8_63
# %bb.61:                               # %._crit_edge460
	testl	%ecx, %ecx
	jne	.LBB8_68
# %bb.62:                               # %.thread338
	movabsq	$4607182418800017408, %rcx      # imm = 0x3FF0000000000000
	movq	%rcx, 104(%rax)
	jmp	.LBB8_68
.LBB8_63:
	cmpl	$0, (%rax)
	jle	.LBB8_64
# %bb.65:                               # %.lr.ph469.preheader
	xorpd	%xmm1, %xmm1
	xorl	%ebx, %ebx
	xorpd	%xmm2, %xmm2
.LBB8_66:                               # %.lr.ph469
                                        # =>This Inner Loop Header: Depth=1
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movq	136(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	32(%rcx), %rcx
	movsd	8(%rcx,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 64(%rsp)                 # 8-byte Spill
	movsd	8(%rdx,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	64(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	.LCPI8_3(%rip), %xmm0
	movsd	8(%rsp), %xmm3                  # 8-byte Reload
                                        # xmm3 = mem[0],zero
	divsd	%xmm0, %xmm3
	addsd	%xmm3, %xmm2
	movq	geom(%rip), %rax
	movslq	(%rax), %rcx
	incq	%rbx
	cmpq	%rcx, %rbx
	jl	.LBB8_66
	jmp	.LBB8_67
.LBB8_64:
	xorpd	%xmm2, %xmm2
	xorpd	%xmm1, %xmm1
.LBB8_67:                               # %._crit_edge470
	movsd	%xmm1, 56(%rsp)
	movsd	%xmm2, 72(%rsp)
	movapd	%xmm1, %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, 104(%rax)
	movq	calc(%rip), %rax
	mulsd	96(%rax), %xmm2
	divsd	%xmm1, %xmm2
	movsd	%xmm2, 96(%rax)
.LBB8_68:
	movl	$file_9+16, %edi
	movl	$.L.str.144, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB8_69
# %bb.70:                               # %.lr.ph481.preheader
	xorpd	%xmm3, %xmm3
	xorl	%ebx, %ebx
	movsd	.LCPI8_0(%rip), %xmm4           # xmm4 = mem[0],zero
	movsd	.LCPI8_5(%rip), %xmm5           # xmm5 = mem[0],zero
	xorpd	%xmm2, %xmm2
	xorpd	%xmm1, %xmm1
.LBB8_71:                               # %.lr.ph481
                                        # =>This Inner Loop Header: Depth=1
	movq	320(%rax), %rcx
	movq	40(%rcx), %rcx
	movsd	8(%rcx,%rbx,8), %xmm6           # xmm6 = mem[0],zero
	movq	312(%rax), %rcx
	movq	8(%rcx,%rbx,8), %rcx
	movsd	8(%rcx), %xmm7                  # xmm7 = mem[0],zero
	movq	488(%rax), %rcx
	movq	8(%rcx), %rcx
	xorps	%xmm8, %xmm8
	cvtsi2sdl	4(%rcx,%rbx,4), %xmm8
	addsd	%xmm4, %xmm8
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	mulsd	%xmm5, %xmm0
	divsd	%xmm6, %xmm0
	ucomisd	%xmm3, %xmm0
	jb	.LBB8_73
# %bb.72:                               #   in Loop: Header=BB8_71 Depth=1
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB8_74
.LBB8_73:                               # %call.sqrt
                                        #   in Loop: Header=BB8_71 Depth=1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movsd	%xmm6, 8(%rsp)                  # 8-byte Spill
	movsd	%xmm7, 64(%rsp)                 # 8-byte Spill
	movsd	%xmm8, 48(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	48(%rsp), %xmm8                 # 8-byte Reload
                                        # xmm8 = mem[0],zero
	movsd	64(%rsp), %xmm7                 # 8-byte Reload
                                        # xmm7 = mem[0],zero
	movsd	8(%rsp), %xmm6                  # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	.LCPI8_5(%rip), %xmm5           # xmm5 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm4           # xmm4 = mem[0],zero
	xorpd	%xmm3, %xmm3
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB8_74:                               # %.lr.ph481.split
                                        #   in Loop: Header=BB8_71 Depth=1
	movq	gas(%rip), %rax
	movq	344(%rax), %rcx
	movq	8(%rcx,%rbx,8), %rdx
	movsd	%xmm0, 8(%rdx)
	movq	geom(%rip), %rsi
	movq	40(%rsi), %rsi
	cmpl	$0, 8(%rsi)
	je	.LBB8_76
# %bb.75:                               #   in Loop: Header=BB8_71 Depth=1
	movq	calc(%rip), %rsi
	cmpl	$1, 28(%rsi)
	jne	.LBB8_80
.LBB8_76:                               #   in Loop: Header=BB8_71 Depth=1
	movsd	112(%rax), %xmm0                # xmm0 = mem[0],zero
	mulsd	%xmm5, %xmm0
	movq	320(%rax), %rax
	movq	40(%rax), %rax
	divsd	8(%rax,%rbx,8), %xmm0
	ucomisd	%xmm3, %xmm0
	jb	.LBB8_78
# %bb.77:                               #   in Loop: Header=BB8_71 Depth=1
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB8_79
.LBB8_78:                               # %call.sqrt1108
                                        #   in Loop: Header=BB8_71 Depth=1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movsd	%xmm6, 8(%rsp)                  # 8-byte Spill
	movsd	%xmm7, 64(%rsp)                 # 8-byte Spill
	movsd	%xmm8, 48(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	48(%rsp), %xmm8                 # 8-byte Reload
                                        # xmm8 = mem[0],zero
	movsd	64(%rsp), %xmm7                 # 8-byte Reload
                                        # xmm7 = mem[0],zero
	movsd	8(%rsp), %xmm6                  # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	.LCPI8_5(%rip), %xmm5           # xmm5 = mem[0],zero
	movsd	.LCPI8_0(%rip), %xmm4           # xmm4 = mem[0],zero
	xorpd	%xmm3, %xmm3
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB8_79:                               # %.split
                                        #   in Loop: Header=BB8_71 Depth=1
	movq	gas(%rip), %rax
	movq	344(%rax), %rcx
	movq	8(%rcx,%rbx,8), %rdx
	movsd	%xmm0, 16(%rdx)
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	movq	calc(%rip), %rsi
.LBB8_80:                               #   in Loop: Header=BB8_71 Depth=1
	mulsd	%xmm4, %xmm0
	movq	280(%rsi), %rsi
	movsd	%xmm0, 8(%rsi,%rbx,8)
	testq	%rbx, %rbx
	je	.LBB8_81
# %bb.82:                               #   in Loop: Header=BB8_71 Depth=1
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	ucomisd	24(%rax), %xmm0
	ja	.LBB8_83
	jmp	.LBB8_84
.LBB8_81:                               #   in Loop: Header=BB8_71 Depth=1
	movq	8(%rcx), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
.LBB8_83:                               #   in Loop: Header=BB8_71 Depth=1
	movsd	%xmm0, 24(%rax)
.LBB8_84:                               #   in Loop: Header=BB8_71 Depth=1
	mulsd	%xmm7, %xmm6
	addsd	%xmm6, %xmm2
	mulsd	%xmm7, %xmm8
	addsd	%xmm8, %xmm1
	movslq	424(%rax), %rcx
	incq	%rbx
	cmpq	%rcx, %rbx
	jl	.LBB8_71
# %bb.85:                               # %._crit_edge482.loopexit
	incl	%ebx
	jmp	.LBB8_86
.LBB8_69:
	movl	$1, %ebx
	xorpd	%xmm1, %xmm1
	xorpd	%xmm2, %xmm2
.LBB8_86:                               # %._crit_edge482
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movl	%ebx, 44(%rsp)
	movsd	%xmm2, 56(%rsp)
	movsd	%xmm1, 72(%rsp)
	movl	$file_9+16, %edi
	movl	$.L.str.145, %esi
	movl	$7, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movsd	24(%rax), %xmm0                 # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	104(%rax), %xmm1                # xmm1 = mem[0],zero
	movsd	(%rsp), %xmm4                   # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movapd	%xmm4, %xmm2
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 32(%rax)
	movsd	.LCPI8_6(%rip), %xmm2           # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 40(%rax)
	movsd	152(%rax), %xmm5                # xmm5 = mem[0],zero
	movsd	.LCPI8_7(%rip), %xmm0           # xmm0 = mem[0],zero
	addsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	divsd	%xmm0, %xmm3
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	divsd	%xmm4, %xmm0
	ucomisd	.LCPI8_29(%rip), %xmm0
	jb	.LBB8_88
# %bb.87:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB8_89
.LBB8_88:                               # %call.sqrt1109
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
.LBB8_89:                               # %._crit_edge482.split
	divsd	%xmm0, %xmm5
	movq	gas(%rip), %rax
	movsd	%xmm5, 48(%rax)
	movl	424(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB8_238
# %bb.90:                               # %.preheader392.preheader
	movl	$1, %ebx
.LBB8_91:                               # %.preheader392
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_94 Depth 2
	testl	%ecx, %ecx
	jle	.LBB8_92
# %bb.93:                               # %.lr.ph490
                                        #   in Loop: Header=BB8_91 Depth=1
	movq	320(%rax), %rsi
	movq	352(%rax), %rdx
	xorl	%r14d, %r14d
.LBB8_94:                               #   Parent Loop BB8_91 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	8(%rsi), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rax,%r14,8), %xmm0
	movsd	.LCPI8_4(%rip), %xmm1           # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movq	32(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movsd	%xmm0, 8(%rcx,%r14,8)
	movq	24(%rsi), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rcx,%r14,8), %xmm0
	mulsd	%xmm1, %xmm0
	movq	24(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movsd	%xmm0, 8(%rcx,%r14,8)
	movq	16(%rsi), %rdi
	movsd	(%rdi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rdi,%r14,8), %xmm0
	mulsd	%xmm1, %xmm0
	movq	40(%rdx), %rdi
	movq	(%rdi,%rbx,8), %rdi
	movsd	%xmm0, 8(%rdi,%r14,8)
	movq	40(%rsi), %rsi
	movsd	(%rsi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	8(%rsi,%r14,8), %xmm1           # xmm1 = mem[0],zero
	movapd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	divsd	%xmm2, %xmm1
	mulsd	%xmm0, %xmm1
	movq	8(%rdx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movsd	%xmm1, 8(%rsi,%r14,8)
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rax,%r14,8), %xmm0
	mulsd	%xmm0, %xmm0
	mulsd	.LCPI8_8(%rip), %xmm0
	movq	16(%rdx), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	%xmm0, 8(%rax,%r14,8)
	movsd	.LCPI8_9(%rip), %xmm0           # xmm0 = mem[0],zero
	subsd	8(%rcx,%r14,8), %xmm0
	callq	tgamma
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	movq	352(%rax), %rdx
	movq	48(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movsd	%xmm1, 8(%rcx,%r14,8)
	movq	320(%rax), %rsi
	movq	32(%rsi), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rcx,%r14,8), %xmm0
	mulsd	.LCPI8_4(%rip), %xmm0
	movq	64(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movsd	%xmm0, 8(%rcx,%r14,8)
	movq	488(%rax), %rcx
	movq	8(%rcx), %rcx
	cmpl	$0, (%rcx,%rbx,4)
	movl	4(%rcx,%r14,4), %ecx
	jle	.LBB8_99
# %bb.95:                               #   in Loop: Header=BB8_94 Depth=2
	testl	%ecx, %ecx
	jle	.LBB8_97
# %bb.96:                               # %.thread777
                                        #   in Loop: Header=BB8_94 Depth=2
	movq	328(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%rcx,%r14,8), %xmm0
	mulsd	.LCPI8_4(%rip), %xmm0
	jmp	.LBB8_102
.LBB8_99:                               #   in Loop: Header=BB8_94 Depth=2
	jne	.LBB8_103
# %bb.100:                              #   in Loop: Header=BB8_94 Depth=2
	testl	%ecx, %ecx
	jle	.LBB8_103
# %bb.101:                              #   in Loop: Header=BB8_94 Depth=2
	movq	328(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	8(%rcx,%r14,8), %xmm0           # xmm0 = mem[0],zero
	jmp	.LBB8_102
.LBB8_97:                               #   in Loop: Header=BB8_94 Depth=2
	jne	.LBB8_103
# %bb.98:                               #   in Loop: Header=BB8_94 Depth=2
	movq	328(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
.LBB8_102:                              # %.thread780.sink.split
                                        #   in Loop: Header=BB8_94 Depth=2
	movq	56(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movsd	%xmm0, 8(%rcx,%r14,8)
.LBB8_103:                              # %.thread780
                                        #   in Loop: Header=BB8_94 Depth=2
	movl	424(%rax), %ecx
	movslq	%ecx, %rdi
	incq	%r14
	cmpq	%rdi, %r14
	jl	.LBB8_94
	jmp	.LBB8_104
.LBB8_92:                               # %.preheader392.._crit_edge491_crit_edge
                                        #   in Loop: Header=BB8_91 Depth=1
	movslq	%ecx, %rdi
.LBB8_104:                              # %._crit_edge491
                                        #   in Loop: Header=BB8_91 Depth=1
	leaq	1(%rbx), %rdx
	cmpq	%rdi, %rbx
	movq	%rdx, %rbx
	jl	.LBB8_91
# %bb.105:                              # %._crit_edge498
	cmpl	$1, %ecx
	jne	.LBB8_107
# %bb.106:                              # %.thread786
	movq	352(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	8(%rdx), %rdx
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, (%rax)
	movq	16(%rcx), %rdx
	movq	8(%rdx), %rdx
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rax)
	movq	48(%rcx), %rcx
	movq	8(%rcx), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, 16(%rax)
	movl	$1, %ecx
	jmp	.LBB8_108
.LBB8_107:
	jl	.LBB8_238
.LBB8_108:                              # %.lr.ph511.preheader
	movl	$1, %ebx
.LBB8_109:                              # %.lr.ph511
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_111 Depth 2
	movq	272(%rax), %rdx
	movq	$0, (%rdx,%rbx,8)
	testl	%ecx, %ecx
	jle	.LBB8_237
# %bb.110:                              # %.lr.ph506.preheader
                                        #   in Loop: Header=BB8_109 Depth=1
	xorpd	%xmm1, %xmm1
	xorl	%r14d, %r14d
.LBB8_111:                              # %.lr.ph506
                                        #   Parent Loop BB8_109 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movq	352(%rax), %rcx
	movq	24(%rcx), %rdx
	movq	32(%rcx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movsd	8(%rsi,%r14,8), %xmm0           # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	mulsd	.LCPI8_10(%rip), %xmm0
	mulsd	80(%rax), %xmm0
	movq	312(%rax), %rsi
	movq	8(%rsi,%r14,8), %rsi
	mulsd	8(%rsi), %xmm0
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	movq	40(%rcx), %rax
	movq	(%rax,%rbx,8), %rax
	divsd	8(%rax,%r14,8), %xmm0
	movq	(%rdx,%rbx,8), %rax
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	subsd	8(%rax,%r14,8), %xmm1
	callq	pow
	movapd	%xmm0, %xmm3
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	8(%rax), %rcx
	movq	40(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	8(%rax,%r14,8), %xmm0           # xmm0 = mem[0],zero
	mulsd	.LCPI8_5(%rip), %xmm0
	movq	(%rcx,%rbx,8), %rax
	divsd	8(%rax,%r14,8), %xmm0
	ucomisd	.LCPI8_29(%rip), %xmm0
	jb	.LBB8_113
# %bb.112:                              #   in Loop: Header=BB8_111 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB8_114
.LBB8_113:                              # %call.sqrt1110
                                        #   in Loop: Header=BB8_111 Depth=2
	movsd	%xmm3, 8(%rsp)                  # 8-byte Spill
	callq	sqrt
	movsd	8(%rsp), %xmm3                  # 8-byte Reload
                                        # xmm3 = mem[0],zero
.LBB8_114:                              # %.lr.ph506.split
                                        #   in Loop: Header=BB8_111 Depth=2
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	%xmm3, %xmm2
	mulsd	%xmm0, %xmm2
	addsd	%xmm2, %xmm1
	movq	gas(%rip), %rax
	movq	272(%rax), %rcx
	movsd	%xmm1, (%rcx,%rbx,8)
	movl	424(%rax), %ecx
	movslq	%ecx, %rdx
	incq	%r14
	cmpq	%rdx, %r14
	jl	.LBB8_111
	jmp	.LBB8_115
.LBB8_237:                              # %.lr.ph511.._crit_edge507_crit_edge
                                        #   in Loop: Header=BB8_109 Depth=1
	movslq	%ecx, %rdx
.LBB8_115:                              # %._crit_edge507
                                        #   in Loop: Header=BB8_109 Depth=1
	leaq	1(%rbx), %rsi
	cmpq	%rdx, %rbx
	movq	%rsi, %rbx
	jl	.LBB8_109
# %bb.116:                              # %._crit_edge512
	movl	%esi, 44(%rsp)
	testl	%ecx, %ecx
	jle	.LBB8_117
# %bb.118:                              # %.lr.ph521
	movq	272(%rax), %rdx
	movq	312(%rax), %rsi
	incl	%ecx
	xorpd	%xmm0, %xmm0
	movl	$1, %edi
.LBB8_119:                              # =>This Inner Loop Header: Depth=1
	movq	(%rsi,%rdi,8), %r8
	movsd	8(%r8), %xmm1                   # xmm1 = mem[0],zero
	mulsd	(%rdx,%rdi,8), %xmm1
	addsd	%xmm1, %xmm0
	incq	%rdi
	cmpq	%rdi, %rcx
	jne	.LBB8_119
	jmp	.LBB8_120
.LBB8_238:                              # %._crit_edge512.thread
	movl	$1, 44(%rsp)
.LBB8_117:
	xorpd	%xmm0, %xmm0
.LBB8_120:                              # %._crit_edge522
	movsd	%xmm0, 56(%rsp)
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movsd	%xmm1, 64(%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.146, %esi
	movl	$32, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movsd	64(%rax), %xmm0                 # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB8_239
# %bb.121:                              # %.lr.ph534.preheader
	movl	$1, %ebx
.LBB8_122:                              # %.lr.ph534
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_124 Depth 2
	movq	304(%rax), %rdx
	movq	$0, (%rdx,%rbx,8)
	testl	%ecx, %ecx
	jle	.LBB8_240
# %bb.123:                              # %.lr.ph528.preheader
                                        #   in Loop: Header=BB8_122 Depth=1
	xorpd	%xmm1, %xmm1
	xorl	%r14d, %r14d
.LBB8_124:                              # %.lr.ph528
                                        #   Parent Loop BB8_122 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movq	352(%rax), %rcx
	movq	24(%rcx), %rdx
	movq	32(%rcx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movsd	8(%rsi,%r14,8), %xmm0           # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	mulsd	.LCPI8_2(%rip), %xmm0
	mulsd	80(%rax), %xmm0
	movq	312(%rax), %rsi
	movq	8(%rsi,%r14,8), %rsi
	mulsd	8(%rsi), %xmm0
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	movq	40(%rcx), %rax
	movq	(%rax,%rbx,8), %rax
	divsd	8(%rax,%r14,8), %xmm0
	movq	(%rdx,%rbx,8), %rax
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	subsd	8(%rax,%r14,8), %xmm1
	callq	pow
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	40(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	divsd	8(%rax,%r14,8), %xmm1
	movapd	%xmm0, %xmm3
	addsd	.LCPI8_3(%rip), %xmm1
	ucomisd	.LCPI8_29(%rip), %xmm1
	jb	.LBB8_126
# %bb.125:                              #   in Loop: Header=BB8_124 Depth=2
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm1, %xmm0
	jmp	.LBB8_127
.LBB8_126:                              # %call.sqrt1111
                                        #   in Loop: Header=BB8_124 Depth=2
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)                  # 8-byte Spill
	callq	sqrt
	movsd	8(%rsp), %xmm3                  # 8-byte Reload
                                        # xmm3 = mem[0],zero
.LBB8_127:                              # %.lr.ph528.split
                                        #   in Loop: Header=BB8_124 Depth=2
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	%xmm3, %xmm2
	mulsd	%xmm0, %xmm2
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm2, %xmm1
	movq	gas(%rip), %rax
	movq	304(%rax), %rdx
	movsd	%xmm1, (%rdx,%rbx,8)
	movl	424(%rax), %ecx
	movslq	%ecx, %rsi
	incq	%r14
	cmpq	%rsi, %r14
	jl	.LBB8_124
	jmp	.LBB8_128
.LBB8_240:                              # %.lr.ph534.._crit_edge529_crit_edge
                                        #   in Loop: Header=BB8_122 Depth=1
	movslq	%ecx, %rsi
	xorpd	%xmm1, %xmm1
.LBB8_128:                              # %._crit_edge529
                                        #   in Loop: Header=BB8_122 Depth=1
	movsd	.LCPI8_3(%rip), %xmm0           # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rdx,%rbx,8)
	leaq	1(%rbx), %rdx
	cmpq	%rsi, %rbx
	movq	%rdx, %rbx
	jl	.LBB8_122
# %bb.129:                              # %._crit_edge535
	movq	$0, 56(%rax)
	testl	%ecx, %ecx
	jle	.LBB8_130
# %bb.131:                              # %.lr.ph542
	movq	304(%rax), %rdx
	movq	312(%rax), %rsi
	incl	%ecx
	xorpd	%xmm0, %xmm0
	movl	$1, %edi
.LBB8_132:                              # =>This Inner Loop Header: Depth=1
	movq	(%rsi,%rdi,8), %r8
	movsd	8(%r8), %xmm1                   # xmm1 = mem[0],zero
	mulsd	(%rdx,%rdi,8), %xmm1
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 56(%rax)
	incq	%rdi
	cmpq	%rdi, %rcx
	jne	.LBB8_132
	jmp	.LBB8_133
.LBB8_239:                              # %._crit_edge535.thread
	movq	$0, 56(%rax)
.LBB8_130:
	movl	$1, %ecx
.LBB8_133:                              # %._crit_edge543
	movl	%ecx, 44(%rsp)
	movl	$file_9+16, %edi
	movl	$.L.str.147, %esi
	movl	$32, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movsd	56(%rax), %xmm0                 # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rcx
	movsd	64(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movq	calc(%rip), %rax
	movsd	%xmm0, 264(%rax)
	cmpl	$1, 56(%rax)
	jne	.LBB8_135
# %bb.134:
	movq	geom(%rip), %rdx
	movq	128(%rdx), %rdx
	movsd	16(%rdx), %xmm1                 # xmm1 = mem[0],zero
	subsd	8(%rdx), %xmm1
	divsd	24(%rcx), %xmm1
	movsd	%xmm1, 264(%rax)
.LBB8_135:
	mulsd	248(%rax), %xmm0
	movsd	%xmm0, 104(%rax)
	movsd	152(%rcx), %xmm2                # xmm2 = mem[0],zero
	movapd	.LCPI8_11(%rip), %xmm1          # xmm1 = [NaN,NaN]
	andpd	%xmm2, %xmm1
	ucomisd	.LCPI8_12(%rip), %xmm1
	movq	geom(%rip), %rdx
	movsd	72(%rdx), %xmm1                 # xmm1 = mem[0],zero
	movsd	.LCPI8_4(%rip), %xmm3           # xmm3 = mem[0],zero
	mulsd	%xmm1, %xmm3
	jbe	.LBB8_137
# %bb.136:
	divsd	%xmm2, %xmm3
	mulsd	256(%rax), %xmm3
	jmp	.LBB8_138
.LBB8_137:
	divsd	24(%rcx), %xmm3
.LBB8_138:
	cmpl	$1, 32(%rdx)
	jne	.LBB8_141
# %bb.139:
	mulsd	.LCPI8_13(%rip), %xmm1
	movsd	88(%rdx), %xmm2                 # xmm2 = mem[0],zero
	andpd	.LCPI8_11(%rip), %xmm2
	addsd	24(%rcx), %xmm2
	divsd	%xmm2, %xmm1
	movsd	%xmm1, 72(%rsp)
	ucomisd	%xmm1, %xmm3
	jbe	.LBB8_141
# %bb.140:
	movsd	%xmm1, 56(%rsp)
	movapd	%xmm1, %xmm3
.LBB8_141:
	movsd	%xmm3, (%rsp)                   # 8-byte Spill
	movapd	%xmm3, %xmm1
	minsd	%xmm0, %xmm1
	mulsd	.LCPI8_14(%rip), %xmm1
	movsd	%xmm1, 104(%rax)
	mulsd	136(%rax), %xmm1
	movsd	%xmm1, 184(%rax)
	movsd	144(%rax), %xmm0                # xmm0 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 192(%rax)
	movsd	%xmm1, 120(%rax)
	movsd	%xmm0, 128(%rax)
	movq	$0, 232(%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.148, %esi
	movl	$46, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	cmpl	$0, 4(%rax)
	jle	.LBB8_144
# %bb.142:                              # %.lr.ph549.preheader
	movq	calc(%rip), %rcx
	movq	144(%rax), %rax
	xorl	%ebx, %ebx
.LBB8_143:                              # %.lr.ph549
                                        # =>This Inner Loop Header: Depth=1
	movsd	104(%rcx), %xmm0                # xmm0 = mem[0],zero
	mulsd	.LCPI8_4(%rip), %xmm0
	movq	24(%rax), %rcx
	movsd	%xmm0, 8(%rcx,%rbx,8)
	movq	gas(%rip), %rcx
	movsd	24(%rcx), %xmm0                 # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	movq	352(%rcx), %rcx
	movq	16(%rcx), %rcx
	movq	8(%rcx), %rcx
	mulsd	8(%rcx), %xmm0
	movq	32(%rax), %rax
	movsd	%xmm0, 8(%rax,%rbx,8)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI8_15(%rip), %xmm0
	movq	calc(%rip), %rcx
	movsd	%xmm0, 152(%rcx)
	movq	geom(%rip), %rdx
	movq	144(%rdx), %rax
	movq	16(%rax), %rsi
	movsd	%xmm0, 8(%rsi,%rbx,8)
	movq	40(%rax), %rsi
	movq	$0, 8(%rsi,%rbx,8)
	movslq	4(%rdx), %rdx
	incq	%rbx
	cmpq	%rdx, %rbx
	jl	.LBB8_143
.LBB8_144:                              # %.preheader391
	movl	$1, %ebx
	movsd	72(%rsp), %xmm1                 # xmm1 = mem[0],zero
                                        # implicit-def: $xmm0
                                        # implicit-def: $xmm5
	movsd	(%rsp), %xmm3                   # 8-byte Reload
                                        # xmm3 = mem[0],zero
.LBB8_145:                              # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_157 Depth 2
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	(%rcx,%rbx,4), %ecx
	testl	%ecx, %ecx
	je	.LBB8_148
# %bb.146:                              #   in Loop: Header=BB8_145 Depth=1
	cmpq	$2, %rbx
	jne	.LBB8_164
# %bb.147:                              #   in Loop: Header=BB8_145 Depth=1
	cmpl	$4, %ecx
	jne	.LBB8_164
.LBB8_148:                              #   in Loop: Header=BB8_145 Depth=1
	movl	24(%rax), %ecx
	movsd	.LCPI8_3(%rip), %xmm2           # xmm2 = mem[0],zero
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	testl	%ecx, %ecx
	je	.LBB8_150
# %bb.149:                              #   in Loop: Header=BB8_145 Depth=1
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.LBB8_150:                              #   in Loop: Header=BB8_145 Depth=1
	cmpl	$2, %ecx
	je	.LBB8_153
# %bb.151:                              #   in Loop: Header=BB8_145 Depth=1
	cmpl	$1, %ecx
	jne	.LBB8_155
# %bb.152:                              # %.thread340
                                        #   in Loop: Header=BB8_145 Depth=1
	movq	128(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	.LCPI8_17(%rip), %xmm0
	jmp	.LBB8_154
.LBB8_153:                              #   in Loop: Header=BB8_145 Depth=1
	movq	128(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	mulsd	.LCPI8_16(%rip), %xmm0
.LBB8_154:                              #   in Loop: Header=BB8_145 Depth=1
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.LBB8_155:                              #   in Loop: Header=BB8_145 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB8_163
# %bb.156:                              # %.lr.ph558.preheader
                                        #   in Loop: Header=BB8_145 Depth=1
	xorl	%r14d, %r14d
.LBB8_157:                              # %.lr.ph558
                                        #   Parent Loop BB8_145 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpl	$2, %ebx
	je	.LBB8_160
# %bb.158:                              # %.lr.ph558
                                        #   in Loop: Header=BB8_157 Depth=2
	cmpl	$1, %ebx
	jne	.LBB8_162
# %bb.159:                              # %.thread342
                                        #   in Loop: Header=BB8_157 Depth=2
	movsd	152(%rax), %xmm5                # xmm5 = mem[0],zero
	movl	$1, %ecx
	jmp	.LBB8_161
.LBB8_160:                              #   in Loop: Header=BB8_157 Depth=2
	movsd	160(%rax), %xmm5                # xmm5 = mem[0],zero
	xorpd	.LCPI8_18(%rip), %xmm5
	movl	$2, %ecx
.LBB8_161:                              # %.sink.split
                                        #   in Loop: Header=BB8_157 Depth=2
	movq	344(%rax), %rax
	movq	8(%rax,%r14,8), %rax
	divsd	(%rax,%rcx,8), %xmm5
.LBB8_162:                              #   in Loop: Header=BB8_157 Depth=2
	movapd	%xmm5, 16(%rsp)                 # 16-byte Spill
	movapd	%xmm5, %xmm0
	callq	erf
	movapd	%xmm0, %xmm1
	movsd	.LCPI8_3(%rip), %xmm0           # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movapd	16(%rsp), %xmm0                 # 16-byte Reload
	xorpd	.LCPI8_18(%rip), %xmm0
	mulsd	16(%rsp), %xmm0                 # 16-byte Folded Reload
	callq	exp
	movapd	16(%rsp), %xmm5                 # 16-byte Reload
	movsd	(%rsp), %xmm3                   # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movq	gas(%rip), %rax
	movq	368(%rax), %rcx
	movq	24(%rcx), %rdx
	movq	8(%rdx,%r14,8), %rdx
	movsd	%xmm5, (%rdx,%rbx,8)
	movapd	%xmm5, %xmm1
	mulsd	%xmm5, %xmm1
	addsd	.LCPI8_7(%rip), %xmm1
	sqrtsd	%xmm1, %xmm1
	addsd	%xmm5, %xmm1
	movq	32(%rcx), %rdx
	movq	8(%rdx,%r14,8), %rdx
	movsd	%xmm1, (%rdx,%rbx,8)
	movapd	%xmm5, %xmm2
	addsd	%xmm5, %xmm2
	subsd	%xmm1, %xmm2
	mulsd	%xmm5, %xmm2
	addsd	.LCPI8_3(%rip), %xmm2
	mulsd	.LCPI8_4(%rip), %xmm2
	movq	40(%rcx), %rdx
	movq	8(%rdx,%r14,8), %rdx
	movsd	%xmm2, (%rdx,%rbx,8)
	movq	344(%rax), %rdx
	movq	8(%rdx,%r14,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	.LCPI8_0(%rip), %xmm1
	movq	48(%rcx), %rsi
	movq	8(%rsi,%r14,8), %rsi
	movsd	%xmm1, (%rsi,%rbx,8)
	movapd	%xmm5, %xmm1
	movsd	.LCPI8_19(%rip), %xmm4          # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm1
	mulsd	%xmm3, %xmm1
	movsd	72(%rax,%rbx,8), %xmm2          # xmm2 = mem[0],zero
	mulsd	8(%rsp), %xmm2                  # 8-byte Folded Reload
	movq	312(%rax), %rsi
	movq	8(%rsi,%r14,8), %rsi
	mulsd	(%rsi,%rbx,8), %xmm2
	mulsd	(%rdx,%rbx,8), %xmm2
	addsd	%xmm0, %xmm1
	mulsd	%xmm1, %xmm2
	movq	calc(%rip), %rdx
	movsd	96(%rdx), %xmm0                 # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	mulsd	%xmm4, %xmm0
	divsd	%xmm0, %xmm2
	movq	8(%rcx), %rdx
	movq	8(%rdx,%r14,8), %rdx
	movsd	%xmm2, (%rdx,%rbx,8)
	movq	16(%rcx), %rcx
	movq	8(%rcx,%r14,8), %rcx
	movq	$0, (%rcx,%rbx,8)
	movslq	424(%rax), %rcx
	incq	%r14
	cmpq	%rcx, %r14
	jl	.LBB8_157
.LBB8_163:                              #   in Loop: Header=BB8_145 Depth=1
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
.LBB8_164:                              # %.loopexit390
                                        #   in Loop: Header=BB8_145 Depth=1
	incq	%rbx
	cmpq	$3, %rbx
	jne	.LBB8_145
# %bb.165:
	movsd	%xmm3, 56(%rsp)
	movsd	%xmm1, 72(%rsp)
	movq	calc(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	68(%rax), %xmm0
	mulsd	.LCPI8_20(%rip), %xmm0
	cvttsd2si	%xmm0, %edx
	movq	molecs(%rip), %rdi
	movl	%edx, 84(%rdi)
	movq	gas(%rip), %rcx
	cmpl	$0, 428(%rcx)
	jle	.LBB8_167
# %bb.166:
	movl	60(%rax), %esi
	incl	%esi
	incl	%edx
	leaq	40(%rdi), %rcx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$56, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$64, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$8, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$16, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$24, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	48(%rdi), %rcx
	movl	$4, %esi
	callq	_ZN6MOLECS10d_allocateEiiRPPd
	movq	molecs(%rip), %rdi
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	incl	%esi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	32(%rdi), %rcx
	callq	_ZN6MOLECS10i_allocateEiiRPPi
	jmp	.LBB8_171
.LBB8_167:
	movl	432(%rcx), %ebx
	movl	60(%rax), %esi
	incl	%esi
	incl	%edx
	leaq	40(%rdi), %rcx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$56, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rsi
	incq	%rsi
	testl	%ebx, %ebx
	jle	.LBB8_169
# %bb.168:
	addq	$64, %rdi
	shlq	$3, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	leaq	4(,%rax,4), %rsi
	jmp	.LBB8_170
.LBB8_169:
	movslq	%esi, %rsi
	shlq	$2, %rsi
.LBB8_170:
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$8, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$16, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$24, %rdi
	leaq	4(,%rax,4), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rdi
	movl	84(%rdi), %edx
	incl	%edx
	leaq	48(%rdi), %rcx
	movl	$4, %esi
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.LBB8_171:
	movq	molecs(%rip), %rdi
	movslq	84(%rdi), %rax
	addq	$72, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	molecs(%rip), %rax
	movl	$0, 80(%rax)
	movq	calc(%rip), %rax
	xorl	%ecx, %ecx
	cmpl	$1, 32(%rax)
	jne	.LBB8_236
# %bb.172:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.149, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$1, 44(%rsp)
	movq	gas(%rip), %rcx
	cmpl	$0, 424(%rcx)
	jle	.LBB8_173
# %bb.174:                              # %.preheader389.lr.ph
	movq	calc(%rip), %rax
	movl	$1, %ebp
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
	xorpd	%xmm3, %xmm3
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
.LBB8_175:                              # %.preheader389
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB8_177 Depth 2
                                        #       Child Loop BB8_191 Depth 3
                                        #         Child Loop BB8_204 Depth 4
                                        #           Child Loop BB8_205 Depth 5
                                        #         Child Loop BB8_216 Depth 4
                                        #         Child Loop BB8_227 Depth 4
	xorpd	%xmm0, %xmm0
	movapd	%xmm0, 128(%rsp)
	movq	$0, 144(%rsp)
	movl	28(%rax), %edx
	testl	%edx, %edx
	js	.LBB8_234
# %bb.176:                              # %.lr.ph602
                                        #   in Loop: Header=BB8_175 Depth=1
	movl	$1, %ebx
.LBB8_177:                              #   Parent Loop BB8_175 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB8_191 Depth 3
                                        #         Child Loop BB8_204 Depth 4
                                        #           Child Loop BB8_205 Depth 5
                                        #         Child Loop BB8_216 Depth 4
                                        #         Child Loop BB8_227 Depth 4
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	testl	%edx, %edx
	je	.LBB8_181
# %bb.178:                              #   in Loop: Header=BB8_177 Depth=2
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm1
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movsd	16(%rcx), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	mulsd	88(%rax), %xmm1
	addsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movsd	%xmm1, 56(%rsp)
	movq	calc(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	68(%rax), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	geom(%rip), %rax
	cmpq	$1, %rbx
	jne	.LBB8_180
# %bb.179:                              # %.thread344
                                        #   in Loop: Header=BB8_177 Depth=2
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	mulsd	80(%rax), %xmm1
	divsd	(%rsp), %xmm1                   # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	movq	312(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	8(%rax), %xmm1
	cvttsd2si	%xmm1, %eax
	movslq	%eax, %r14
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rax
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 96(%rsp)                 # 8-byte Spill
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movb	$1, %r15b
	movsd	%xmm0, 88(%rsp)                 # 8-byte Spill
	jmp	.LBB8_185
.LBB8_181:                              #   in Loop: Header=BB8_177 Depth=2
	xorps	%xmm0, %xmm0
	cvtsi2sdl	68(%rax), %xmm0
	movq	gas(%rip), %rcx
	movq	312(%rcx), %rcx
	movq	(%rcx,%rbp,8), %rcx
	mulsd	8(%rcx), %xmm0
	movq	geom(%rip), %rcx
	mulsd	104(%rcx), %xmm0
	cvttsd2si	%xmm0, %r14
	movq	128(%rcx), %rdx
	movsd	8(%rdx), %xmm1                  # xmm1 = mem[0],zero
	movsd	16(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 96(%rsp)                 # 8-byte Spill
	movb	$1, %r15b
	movsd	%xmm1, 88(%rsp)                 # 8-byte Spill
	movapd	%xmm1, %xmm0
	cmpq	$1, %rbx
	jne	.LBB8_182
	jmp	.LBB8_185
.LBB8_180:                              # %.thread353
                                        #   in Loop: Header=BB8_177 Depth=2
	movq	128(%rax), %rcx
	movsd	16(%rcx), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	callq	pow
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	mulsd	88(%rax), %xmm1
	divsd	(%rsp), %xmm1                   # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	movq	312(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	16(%rax), %xmm1
	cvttsd2si	%xmm1, %eax
	movslq	%eax, %r14
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rdx
	movsd	16(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 96(%rsp)                 # 8-byte Spill
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 88(%rsp)                 # 8-byte Spill
	movq	calc(%rip), %rax
.LBB8_182:                              #   in Loop: Header=BB8_177 Depth=2
	cmpl	$1, 28(%rax)
	jne	.LBB8_183
# %bb.184:                              # %._crit_edge736
                                        #   in Loop: Header=BB8_177 Depth=2
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	xorl	%r15d, %r15d
.LBB8_185:                              #   in Loop: Header=BB8_177 Depth=2
	movsd	96(%rcx), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rcx), %xmm1
	callq	pow
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	addsd	.LCPI8_3(%rip), %xmm0
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	cmpq	$2, %rbx
	jne	.LBB8_186
# %bb.187:                              #   in Loop: Header=BB8_177 Depth=2
	movq	geom(%rip), %rax
	movl	28(%rax), %eax
	cmpl	$2, %eax
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	jl	.LBB8_189
# %bb.188:                              #   in Loop: Header=BB8_177 Depth=2
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	movsd	96(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	movsd	%xmm0, 120(%rsp)                # 8-byte Spill
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	movsd	88(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	120(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r14, %xmm0
	divsd	%xmm0, %xmm1
	movsd	%xmm1, 120(%rsp)                # 8-byte Spill
	movsd	88(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 64(%rsp)                 # 8-byte Spill
	jmp	.LBB8_189
.LBB8_186:                              #   in Loop: Header=BB8_177 Depth=2
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
.LBB8_189:                              #   in Loop: Header=BB8_177 Depth=2
	cmpq	$2, %r14
	jl	.LBB8_232
# %bb.190:                              # %.lr.ph593
                                        #   in Loop: Header=BB8_177 Depth=2
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r14, %xmm0
	movsd	%xmm0, 160(%rsp)                # 8-byte Spill
	movsd	96(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	subsd	88(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	%xmm0, 96(%rsp)                 # 8-byte Spill
	movl	$1, %r13d
	movl	$1, %r12d
	notb	%r15b
	movq	%r14, 112(%rsp)                 # 8-byte Spill
	movl	%r15d, 84(%rsp)                 # 4-byte Spill
.LBB8_191:                              #   Parent Loop BB8_175 Depth=1
                                        #     Parent Loop BB8_177 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB8_204 Depth 4
                                        #           Child Loop BB8_205 Depth 5
                                        #         Child Loop BB8_216 Depth 4
                                        #         Child Loop BB8_227 Depth 4
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rax
	movl	28(%rax), %eax
	cmpl	$1, %eax
	setne	%cl
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	testb	%cl, %r15b
	jne	.LBB8_193
# %bb.192:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	88(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r12, %xmm0
	addsd	.LCPI8_21(%rip), %xmm0
	divsd	160(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	28(%rax), %xmm1
	movsd	96(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	addsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	movq	geom(%rip), %rax
	xorps	%xmm2, %xmm2
	cvtsi2sdl	28(%rax), %xmm2
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	divsd	%xmm2, %xmm1
	callq	pow
	jmp	.LBB8_194
.LBB8_193:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	64(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	addsd	120(%rsp), %xmm0                # 8-byte Folded Reload
	movq	geom(%rip), %rax
	xorps	%xmm2, %xmm2
	cvtsi2sdl	28(%rax), %xmm2
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
	divsd	%xmm2, %xmm1
	callq	pow
	movsd	%xmm0, 64(%rsp)                 # 8-byte Spill
.LBB8_194:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	%xmm0, 56(%rsp)
	movq	geom(%rip), %rax
	cmpl	$0, 36(%rax)
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	je	.LBB8_195
# %bb.196:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	96(%rax), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	addsd	.LCPI8_3(%rip), %xmm0
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	cmpl	$1, %r13d
	movl	%r13d, %eax
	movl	$10, %ecx
	cmovel	%ecx, %eax
	movsd	.LCPI8_14(%rip), %xmm0          # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	cmovbel	%r13d, %eax
	cmpl	$10, %eax
	movl	%eax, %ecx
	movl	$100, %edx
	cmovel	%edx, %ecx
	movsd	.LCPI8_22(%rip), %xmm0          # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	cmovbel	%eax, %ecx
	cmpl	$100, %ecx
	movl	%ecx, %eax
	movl	$1000, %edx                     # imm = 0x3E8
	cmovel	%edx, %eax
	movsd	.LCPI8_23(%rip), %xmm0          # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	cmovbel	%ecx, %eax
	cmpl	$1000, %eax                     # imm = 0x3E8
	movl	%eax, %r13d
	movl	$10000, %ecx                    # imm = 0x2710
	cmovel	%ecx, %r13d
	movsd	.LCPI8_24(%rip), %xmm0          # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	cmovbel	%eax, %r13d
	jmp	.LBB8_197
.LBB8_195:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	.LCPI8_3(%rip), %xmm1           # xmm1 = mem[0],zero
.LBB8_197:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movsd	%xmm1, 72(%rsp)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI8_15(%rip), %xmm0
	movq	calc(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sd	%r13d, %xmm1
	movsd	%xmm0, 152(%rax)
	mulsd	(%rsp), %xmm1                   # 8-byte Folded Reload
	ucomisd	%xmm0, %xmm1
	jbe	.LBB8_198
# %bb.199:                              #   in Loop: Header=BB8_191 Depth=3
	movl	%r13d, (%rsp)                   # 4-byte Spill
	movq	molecs(%rip), %rax
	movslq	80(%rax), %rdx
	leaq	1(%rdx), %rcx
	movl	%ecx, 80(%rax)
	movq	40(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rcx,%rdx,8)
	movq	8(%rax), %rsi
	movl	%ebp, 4(%rsi,%rdx,4)
	movq	56(%rax), %rdx
	movslq	80(%rax), %rsi
	movq	$0, (%rdx,%rsi,8)
	movq	geom(%rip), %rdx
	movl	32(%rdx), %edx
	testl	%edx, %edx
	jne	.LBB8_201
# %bb.200:                              #   in Loop: Header=BB8_191 Depth=3
	leaq	(%rcx,%rsi,8), %rdi
	shlq	$2, %rsi
	addq	(%rax), %rsi
	leaq	104(%rsp), %rdx
	callq	_Z12FIND_CELL_1DRdRiS0_
	movq	geom(%rip), %rax
	movl	32(%rax), %edx
.LBB8_201:                              #   in Loop: Header=BB8_191 Depth=3
	movq	%r12, 8(%rsp)                   # 8-byte Spill
	cmpl	$1, %edx
	leaq	240(%rsp), %r14
	jne	.LBB8_203
# %bb.202:                              #   in Loop: Header=BB8_191 Depth=3
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdx
	movslq	80(%rax), %rsi
	leaq	(,%rsi,8), %rcx
	movq	8(%rdx), %rdi
	addq	%rcx, %rdi
	shlq	$2, %rsi
	addq	(%rax), %rsi
	addq	56(%rax), %rcx
	leaq	104(%rsp), %rdx
	callq	_Z15FIND_CELL_MB_1DRdRiS0_S_
.LBB8_203:                              # %.preheader.preheader
                                        #   in Loop: Header=BB8_191 Depth=3
	movl	$1, %r12d
.LBB8_204:                              # %.preheader
                                        #   Parent Loop BB8_175 Depth=1
                                        #     Parent Loop BB8_177 Depth=2
                                        #       Parent Loop BB8_191 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB8_205 Depth 5
	movq	%r14, %r13
	movl	$1, %r15d
.LBB8_205:                              #   Parent Loop BB8_175 Depth=1
                                        #     Parent Loop BB8_177 Depth=2
                                        #       Parent Loop BB8_191 Depth=3
                                        #         Parent Loop BB8_204 Depth=4
                                        # =>        This Inner Loop Header: Depth=5
	movq	gas(%rip), %rax
	movq	344(%rax), %rax
	leaq	(,%rbx,8), %rdx
	addq	(%rax,%rbp,8), %rdx
	leaq	56(%rsp), %rdi
	leaq	72(%rsp), %rsi
	callq	_Z5RVELCRdS_S_
	movsd	56(%rsp), %xmm1                 # xmm1 = mem[0],zero
	movsd	72(%rsp), %xmm2                 # xmm2 = mem[0],zero
	ucomisd	%xmm1, %xmm2
	movsd	176(%rsp,%r15,8), %xmm0         # xmm0 = mem[0],zero
	xorpd	%xmm3, %xmm3
	cmpltsd	%xmm3, %xmm0
	jbe	.LBB8_207
# %bb.206:                              #   in Loop: Header=BB8_205 Depth=5
	andpd	%xmm0, %xmm2
	andnpd	%xmm1, %xmm0
	orpd	%xmm2, %xmm0
	jmp	.LBB8_208
.LBB8_207:                              #   in Loop: Header=BB8_205 Depth=5
	andpd	%xmm0, %xmm1
	andnpd	%xmm2, %xmm0
	orpd	%xmm1, %xmm0
.LBB8_208:                              #   in Loop: Header=BB8_205 Depth=5
	movsd	%xmm0, (%r13)
	incq	%r15
	addq	$24, %r13
	cmpq	$4, %r15
	jne	.LBB8_205
# %bb.209:                              #   in Loop: Header=BB8_204 Depth=4
	movq	gas(%rip), %rax
	movq	488(%rax), %rcx
	movq	8(%rcx), %rcx
	cmpl	$0, (%rcx,%rbp,4)
	jle	.LBB8_211
# %bb.210:                              #   in Loop: Header=BB8_204 Depth=4
	leaq	(%rax,%rbx,8), %rsi
	addq	$96, %rsi
	leaq	(%rsp,%r12,8), %rdx
	addq	$128, %rdx
	leaq	44(%rsp), %rdi
	callq	_Z4SROTRiRdS0_
.LBB8_211:                              #   in Loop: Header=BB8_204 Depth=4
	incq	%r12
	addq	$8, %r14
	cmpq	$3, %r12
	jne	.LBB8_204
# %bb.212:                              #   in Loop: Header=BB8_191 Depth=3
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	488(%rax), %rdx
	movq	40(%rcx), %rcx
	movsd	(%rcx,%rbp,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	.LCPI8_4(%rip), %xmm2
	movsd	240(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	248(%rsp), %xmm1                # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	264(%rsp), %xmm3                # xmm3 = mem[0],zero
	mulsd	%xmm3, %xmm3
	addsd	%xmm0, %xmm3
	movsd	288(%rsp), %xmm0                # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	136(%rsp), %xmm0
	movsd	96(%rax,%rbx,8), %xmm3          # xmm3 = mem[0],zero
	mulsd	.LCPI8_25(%rip), %xmm3
	divsd	%xmm3, %xmm0
	movsd	.LCPI8_26(%rip), %xmm6          # xmm6 = mem[0],zero
	addsd	%xmm6, %xmm0
	movq	8(%rdx), %rcx
	movl	(%rcx,%rbp,4), %ecx
	cvtsi2sd	%ecx, %xmm4
	subsd	%xmm4, %xmm0
	movsd	%xmm0, 56(%rsp)
	mulsd	%xmm1, %xmm1
	movsd	272(%rsp), %xmm5                # xmm5 = mem[0],zero
	mulsd	%xmm5, %xmm5
	addsd	%xmm1, %xmm5
	movsd	296(%rsp), %xmm1                # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	addsd	%xmm5, %xmm1
	mulsd	%xmm2, %xmm1
	addsd	144(%rsp), %xmm1
	divsd	%xmm3, %xmm1
	addsd	%xmm6, %xmm1
	subsd	%xmm4, %xmm1
	movsd	%xmm1, 72(%rsp)
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	xorpd	%xmm2, %xmm2
	ucomisd	%xmm3, %xmm2
	seta	%dl
	setbe	%r8b
	xorl	%esi, %esi
	ucomisd	%xmm0, %xmm1
	jbe	.LBB8_214
# %bb.213:                              #   in Loop: Header=BB8_191 Depth=3
	ucomisd	%xmm3, %xmm2
	seta	%sil
	incq	%rsi
	movl	%r8d, %edi
	jmp	.LBB8_215
.LBB8_198:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	jmp	.LBB8_231
.LBB8_214:                              #   in Loop: Header=BB8_191 Depth=3
	ucomisd	%xmm3, %xmm2
	setbe	%sil
	incq	%rsi
	movl	%edx, %edi
	movl	%r8d, %edx
.LBB8_215:                              #   in Loop: Header=BB8_191 Depth=3
	leaq	240(%rsp), %r13
	leaq	44(%rsp), %r12
	movq	molecs(%rip), %r8
	movq	48(%r8), %r10
	movslq	80(%r8), %r9
	leaq	-8(,%rsi,8), %r11
	addq	%r13, %r11
	movl	$1, %r14d
.LBB8_216:                              #   Parent Loop BB8_175 Depth=1
                                        #     Parent Loop BB8_177 Depth=2
                                        #       Parent Loop BB8_191 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movsd	(%r11), %xmm2                   # xmm2 = mem[0],zero
	movq	(%r10,%r14,8), %r15
	movsd	%xmm2, (%r15,%r9,8)
	addsd	176(%rsp,%r14,8), %xmm2
	movsd	%xmm2, 176(%rsp,%r14,8)
	incq	%r14
	addq	$24, %r11
	cmpq	$4, %r14
	jne	.LBB8_216
# %bb.217:                              #   in Loop: Header=BB8_191 Depth=3
	movl	$4, 104(%rsp)
	movq	8(%r10), %r11
	movsd	(%r11,%r9,8), %xmm2             # xmm2 = mem[0],zero
	addsd	144(%rax,%rbx,8), %xmm2
	movsd	%xmm2, (%r11,%r9,8)
	movq	16(%r10), %r10
	movsd	(%r10,%r9,8), %xmm2             # xmm2 = mem[0],zero
	addsd	168(%rax,%rbx,8), %xmm2
	movsd	%xmm2, (%r10,%r9,8)
	testl	%ecx, %ecx
	jle	.LBB8_219
# %bb.218:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	128(%rsp,%rsi,8), %xmm2         # xmm2 = mem[0],zero
	movq	64(%r8), %rcx
	movsd	%xmm2, (%rcx,%r9,8)
.LBB8_219:                              #   in Loop: Header=BB8_191 Depth=3
	testb	%dil, %dil
	leaq	108(%rsp), %r15
	jne	.LBB8_221
# %bb.220:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	.LCPI8_27(%rip), %xmm0          # xmm0 = mem[0],zero
.LBB8_221:                              #   in Loop: Header=BB8_191 Depth=3
	testb	%dl, %dl
	jne	.LBB8_223
# %bb.222:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	.LCPI8_27(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB8_223:                              #   in Loop: Header=BB8_191 Depth=3
	addsd	%xmm0, %xmm3
	addsd	%xmm1, %xmm3
	cmpl	$0, 428(%rax)
	movl	(%rsp), %r13d                   # 4-byte Reload
	jle	.LBB8_224
# %bb.225:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movq	472(%rax), %rcx
	cmpl	$0, (%rcx,%rbp,4)
	jle	.LBB8_228
# %bb.226:                              # %.lr.ph587.preheader
                                        #   in Loop: Header=BB8_191 Depth=3
	movl	$1, 108(%rsp)
	xorl	%r14d, %r14d
.LBB8_227:                              # %.lr.ph587
                                        #   Parent Loop BB8_175 Depth=1
                                        #     Parent Loop BB8_177 Depth=2
                                        #       Parent Loop BB8_191 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	leaq	(%rax,%rbx,8), %rsi
	addq	$120, %rsi
	movq	molecs(%rip), %rax
	movq	32(%rax), %rcx
	movslq	80(%rax), %rdx
	shlq	$2, %rdx
	addq	8(%rcx,%r14,8), %rdx
	movq	%r12, %rdi
	movq	%r15, %rcx
	callq	_Z4SVIBRiRdS_S_
	leal	2(%r14), %eax
	movl	%eax, 108(%rsp)
	movq	gas(%rip), %rax
	movq	472(%rax), %rcx
	movslq	(%rcx,%rbp,4), %rcx
	incq	%r14
	cmpq	%rcx, %r14
	jl	.LBB8_227
.LBB8_228:                              # %.loopexit
                                        #   in Loop: Header=BB8_191 Depth=3
	movsd	120(%rax,%rbx,8), %xmm0         # xmm0 = mem[0],zero
	movsd	%xmm0, 168(%rsp)
	cmpl	$2, 452(%rax)
	jl	.LBB8_230
# %bb.229:                              #   in Loop: Header=BB8_191 Depth=3
	movq	molecs(%rip), %rax
	movslq	80(%rax), %rdx
	shlq	$3, %rdx
	addq	72(%rax), %rdx
	movq	%r12, %rdi
	leaq	168(%rsp), %rsi
	callq	_Z4SELERiRdS0_
.LBB8_230:                              #   in Loop: Header=BB8_191 Depth=3
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movq	112(%rsp), %r14                 # 8-byte Reload
	movl	84(%rsp), %r15d                 # 4-byte Reload
	movq	8(%rsp), %r12                   # 8-byte Reload
	movl	(%rsp), %r13d                   # 4-byte Reload
	jmp	.LBB8_231
.LBB8_224:                              #   in Loop: Header=BB8_191 Depth=3
	movq	112(%rsp), %r14                 # 8-byte Reload
	movl	84(%rsp), %r15d                 # 4-byte Reload
	movq	8(%rsp), %r12                   # 8-byte Reload
.LBB8_231:                              #   in Loop: Header=BB8_191 Depth=3
	movl	%r13d, %eax
	addq	%rax, %r12
	cmpq	%r14, %r12
	jl	.LBB8_191
	jmp	.LBB8_232
.LBB8_183:                              #   in Loop: Header=BB8_177 Depth=2
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
.LBB8_232:                              # %.loopexit387
                                        #   in Loop: Header=BB8_177 Depth=2
	leaq	1(%rbx), %rcx
	movq	calc(%rip), %rax
	movslq	28(%rax), %rdx
	cmpq	%rdx, %rbx
	movq	%rcx, %rbx
	jle	.LBB8_177
# %bb.233:                              # %._crit_edge603.loopexit
                                        #   in Loop: Header=BB8_175 Depth=1
	movq	gas(%rip), %rcx
.LBB8_234:                              # %._crit_edge603
                                        #   in Loop: Header=BB8_175 Depth=1
	leaq	1(%rbp), %rdx
	movl	%edx, 44(%rsp)
	movslq	424(%rcx), %rsi
	cmpq	%rsi, %rbp
	movq	%rdx, %rbp
	jl	.LBB8_175
	jmp	.LBB8_235
.LBB8_173:
	xorpd	%xmm3, %xmm3
.LBB8_235:                              # %._crit_edge612
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movl	$file_9+16, %edi
	movl	$.L.str.150, %esi
	movl	$5, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	leaq	176(%rsp), %rsi
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIPKvEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$file_9+16, %edi
	movl	$.L.str.151, %esi
	movl	$5, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	molecs(%rip), %rax
	movl	80(%rax), %ecx
	movq	calc(%rip), %rax
.LBB8_236:
	movl	%ecx, 68(%rax)
	callq	_Z11SAMPLE_FLOWv
	callq	_Z14OUTPUT_RESULTSv
	movq	calc(%rip), %rax
	movsd	128(%rax), %xmm0                # xmm0 = mem[0],zero
	subsd	192(%rax), %xmm0
	movsd	%xmm0, 128(%rax)
	addq	$312, %rsp                      # imm = 0x138
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end8:
	.size	_Z20SET_INITIAL_STATE_1Dv, .Lfunc_end8-_Z20SET_INITIAL_STATE_1Dv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z6ENERGYiRd
.LCPI9_0:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI9_1:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI9_2:
	.quad	0x3c9cd2b297d889bc              # double 9.9999999999999997E-17
	.text
	.globl	_Z6ENERGYiRd
	.type	_Z6ENERGYiRd,@function
_Z6ENERGYiRd:                           # @_Z6ENERGYiRd
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %rbx
	movq	$0, (%rsi)
	movq	molecs(%rip), %rax
	testl	%edi, %edi
	je	.LBB9_1
# %bb.17:
	movq	(%rax), %rdx
	movslq	%edi, %rcx
	cmpl	$0, (%rdx,%rcx,4)
	jle	.LBB9_23
# %bb.18:
	movq	8(%rax), %rdx
	movslq	(%rdx,%rcx,4), %rdx
	movq	gas(%rip), %rsi
	movq	320(%rsi), %rdi
	movq	48(%rdi), %r8
	xorpd	%xmm1, %xmm1
	addsd	(%r8,%rdx,8), %xmm1
	movsd	%xmm1, (%rbx)
	movq	40(%rdi), %rdi
	movsd	(%rdi,%rdx,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	.LCPI9_0(%rip), %xmm2
	movq	48(%rax), %rdi
	movq	8(%rdi), %r8
	movq	16(%rdi), %r9
	movsd	(%r8,%rcx,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	(%r9,%rcx,8), %xmm3             # xmm3 = mem[0],zero
	mulsd	%xmm3, %xmm3
	addsd	%xmm0, %xmm3
	movq	24(%rdi), %rdi
	movsd	(%rdi,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%rbx)
	movq	488(%rsi), %rdi
	movq	8(%rdi), %rdi
	cmpl	$0, (%rdi,%rdx,4)
	jle	.LBB9_20
# %bb.19:
	movq	64(%rax), %rdi
	addsd	(%rdi,%rcx,8), %xmm0
	movsd	%xmm0, (%rbx)
.LBB9_20:
	movq	472(%rsi), %rdi
	movl	(%rdi,%rdx,4), %edi
	testl	%edi, %edi
	jle	.LBB9_23
# %bb.21:                               # %.preheader84
	movq	32(%rax), %rax
	movq	360(%rsi), %rsi
	movq	8(%rsi), %rsi
	incq	%rdi
	movl	$1, %r8d
	movsd	.LCPI9_1(%rip), %xmm1           # xmm1 = mem[0],zero
.LBB9_22:                               # =>This Inner Loop Header: Depth=1
	movq	(%rax,%r8,8), %r9
	xorps	%xmm2, %xmm2
	cvtsi2sdl	(%r9,%rcx,4), %xmm2
	mulsd	%xmm1, %xmm2
	movq	(%rsi,%r8,8), %r9
	mulsd	(%r9,%rdx,8), %xmm2
	addsd	%xmm2, %xmm0
	movsd	%xmm0, (%rbx)
	incq	%r8
	cmpq	%r8, %rdi
	jne	.LBB9_22
.LBB9_23:                               # %.loopexit85
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB9_1:                                # %.preheader83
	.cfi_def_cfa_offset 48
	cmpl	$0, 80(%rax)
	jle	.LBB9_16
# %bb.2:                                # %.lr.ph.preheader
	movl	$1, %r14d
	movq	gas(%rip), %rcx
	movsd	.LCPI9_1(%rip), %xmm5           # xmm5 = mem[0],zero
	movsd	.LCPI9_2(%rip), %xmm6           # xmm6 = mem[0],zero
                                        # implicit-def: $xmm2
.LBB9_3:                                # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB9_9 Depth 2
	movq	(%rax), %rdx
	cmpl	$0, (%rdx,%r14,4)
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	jle	.LBB9_4
# %bb.5:                                #   in Loop: Header=BB9_3 Depth=1
	movq	8(%rax), %rdx
	movslq	(%rdx,%r14,4), %rdx
	movq	320(%rcx), %rsi
	movq	48(%rsi), %rdi
	movsd	(%rdi,%rdx,8), %xmm2            # xmm2 = mem[0],zero
	addsd	%xmm0, %xmm2
	movsd	%xmm2, (%rbx)
	movq	40(%rsi), %rsi
	movsd	(%rsi,%rdx,8), %xmm3            # xmm3 = mem[0],zero
	mulsd	.LCPI9_0(%rip), %xmm3
	movq	48(%rax), %rsi
	movq	8(%rsi), %rdi
	movq	16(%rsi), %r8
	movsd	(%rdi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	movsd	(%r8,%r14,8), %xmm4             # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm4
	addsd	%xmm1, %xmm4
	movq	24(%rsi), %rsi
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	addsd	%xmm4, %xmm1
	mulsd	%xmm3, %xmm1
	addsd	%xmm2, %xmm1
	movsd	%xmm1, (%rbx)
	movq	488(%rcx), %rsi
	movq	8(%rsi), %rsi
	cmpl	$0, (%rsi,%rdx,4)
	jle	.LBB9_7
# %bb.6:                                #   in Loop: Header=BB9_3 Depth=1
	movq	64(%rax), %rsi
	addsd	(%rsi,%r14,8), %xmm1
	movsd	%xmm1, (%rbx)
.LBB9_7:                                #   in Loop: Header=BB9_3 Depth=1
	movq	472(%rcx), %rsi
	movl	(%rsi,%rdx,4), %esi
	testl	%esi, %esi
	jle	.LBB9_10
# %bb.8:                                # %.preheader
                                        #   in Loop: Header=BB9_3 Depth=1
	movq	32(%rax), %rdi
	movq	360(%rcx), %r8
	movq	8(%r8), %r8
	incq	%rsi
	movl	$1, %r9d
.LBB9_9:                                #   Parent Loop BB9_3 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rdi,%r9,8), %r10
	xorps	%xmm2, %xmm2
	cvtsi2sdl	(%r10,%r14,4), %xmm2
	mulsd	%xmm5, %xmm2
	movq	(%r8,%r9,8), %r10
	mulsd	(%r10,%rdx,8), %xmm2
	addsd	%xmm2, %xmm1
	movsd	%xmm1, (%rbx)
	incq	%r9
	cmpq	%r9, %rsi
	jne	.LBB9_9
.LBB9_10:                               #   in Loop: Header=BB9_3 Depth=1
	movapd	%xmm0, %xmm2
	jmp	.LBB9_11
.LBB9_4:                                #   in Loop: Header=BB9_3 Depth=1
	movapd	%xmm0, %xmm1
.LBB9_11:                               # %.loopexit
                                        #   in Loop: Header=BB9_3 Depth=1
	cmpl	$2, 452(%rcx)
	jl	.LBB9_13
# %bb.12:                               #   in Loop: Header=BB9_3 Depth=1
	movq	72(%rax), %rdx
	addsd	(%rdx,%r14,8), %xmm1
	movsd	%xmm1, (%rbx)
.LBB9_13:                               #   in Loop: Header=BB9_3 Depth=1
	subsd	%xmm2, %xmm1
	ucomisd	%xmm6, %xmm1
	jbe	.LBB9_15
# %bb.14:                               #   in Loop: Header=BB9_3 Depth=1
	movl	$_ZSt4cout, %edi
	movl	$.L.str.179, %esi
	movl	$4, %edx
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movl	%r14d, %esi
	callq	_ZNSolsEi
	movq	%rax, %r15
	movl	$.L.str.180, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	subsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r15
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r15, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r15, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	.LCPI9_2(%rip), %xmm6           # xmm6 = mem[0],zero
	movsd	.LCPI9_1(%rip), %xmm5           # xmm5 = mem[0],zero
	movq	molecs(%rip), %rax
	movq	gas(%rip), %rcx
.LBB9_15:                               #   in Loop: Header=BB9_3 Depth=1
	leaq	1(%r14), %rdx
	movslq	80(%rax), %rsi
	cmpq	%rsi, %r14
	movq	%rdx, %r14
	jl	.LBB9_3
.LBB9_16:                               # %._crit_edge
	movl	$file_9+16, %edi
	movl	$.L.str.181, %esi
	movl	$16, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	file_9+16(%rip), %rax
	movq	-24(%rax), %rax
	movq	$25, file_9+24(%rax)
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	movq	%r14, %rdi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$_ZSt4cout, %edi
	movl	$.L.str.181, %esi
	movl	$16, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rax
	movq	$20, _ZSt4cout+8(%rax)
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	movl	$_ZSt4cout, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	movq	%rbx, %rdi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end9:
	.size	_Z6ENERGYiRd, .Lfunc_end9-_Z6ENERGYiRd
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z17MOLECULES_MOVE_1Dv
.LCPI10_0:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI10_1:
	.quad	0x3ff0000000000000              # double 1
.LCPI10_3:
	.quad	0x3ff004189374bc6a              # double 1.0009999999999999
.LCPI10_4:
	.quad	0xbff0000000000000              # double -1
.LCPI10_5:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI10_6:
	.quad	0x3ff199999999999a              # double 1.1000000000000001
.LCPI10_8:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI10_2:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
.LCPI10_7:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.text
	.globl	_Z17MOLECULES_MOVE_1Dv
	.type	_Z17MOLECULES_MOVE_1Dv,@function
_Z17MOLECULES_MOVE_1Dv:                 # @_Z17MOLECULES_MOVE_1Dv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$120, %rsp
	.cfi_def_cfa_offset 176
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$4, 8(%rax)
	jne	.LBB10_5
# %bb.1:
	movq	calc(%rip), %rbx
	cmpl	$1, 76(%rbx)
	jne	.LBB10_5
# %bb.2:                                # %.preheader147
	movq	gas(%rip), %rax
	movl	424(%rax), %eax
	testl	%eax, %eax
	js	.LBB10_4
# %bb.3:                                # %.lr.ph
	movq	304(%rbx), %rdi
	leaq	8(,%rax,8), %rdx
	xorl	%esi, %esi
	callq	memset@PLT
.LBB10_4:                               # %._crit_edge
	movq	molecs(%rip), %rax
	movl	80(%rax), %eax
	movl	%eax, 72(%rbx)
.LBB10_5:
	movl	$1, 44(%rsp)
	movq	molecs(%rip), %rax
	cmpl	$0, 80(%rax)
	jle	.LBB10_100
# %bb.6:                                # %.lr.ph165.preheader
	movl	$1, %ebx
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
	leaq	96(%rsp), %r12
	leaq	32(%rsp), %rbp
	leaq	44(%rsp), %r13
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
                                        # implicit-def: $xmm1
.LBB10_7:                               # %.lr.ph165
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB10_26 Depth 2
                                        #     Child Loop BB10_58 Depth 2
                                        #     Child Loop BB10_72 Depth 2
                                        #     Child Loop BB10_78 Depth 2
                                        #       Child Loop BB10_81 Depth 3
                                        #       Child Loop BB10_86 Depth 3
	movq	calc(%rip), %rsi
	movl	44(%rsi), %ecx
	testl	$-3, %ecx
	jne	.LBB10_9
# %bb.8:                                #   in Loop: Header=BB10_7 Depth=1
	movsd	104(%rsi), %xmm1                # xmm1 = mem[0],zero
.LBB10_9:                               #   in Loop: Header=BB10_7 Depth=1
	movslq	%ebx, %r15
	cmpl	$1, %ecx
	jne	.LBB10_11
# %bb.10:                               #   in Loop: Header=BB10_7 Depth=1
	movq	(%rax), %rcx
	movslq	(%rcx,%r15,4), %rcx
	movq	geom(%rip), %rdx
	movq	144(%rdx), %rdx
	movq	24(%rdx), %rdx
	movsd	(%rdx,%rcx,8), %xmm1            # xmm1 = mem[0],zero
	addsd	%xmm1, %xmm1
.LBB10_11:                              #   in Loop: Header=BB10_7 Depth=1
	movsd	80(%rsi), %xmm0                 # xmm0 = mem[0],zero
	movq	56(%rax), %rcx
	movsd	(%rcx,%r15,8), %xmm6            # xmm6 = mem[0],zero
	subsd	%xmm6, %xmm0
	movsd	%xmm1, 48(%rsp)                 # 8-byte Spill
	mulsd	.LCPI10_0(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB10_98
# %bb.12:                               #   in Loop: Header=BB10_7 Depth=1
	movq	geom(%rip), %rdx
	cmpl	$1, 36(%rdx)
	jne	.LBB10_13
# %bb.14:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	96(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rdx), %xmm1
	callq	pow
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movapd	%xmm0, %xmm5
	mulsd	(%rsp), %xmm5                   # 8-byte Folded Reload
	addsd	%xmm3, %xmm5
	movq	molecs(%rip), %rax
	movq	56(%rax), %rcx
	movsd	(%rcx,%r15,8), %xmm6            # xmm6 = mem[0],zero
	movq	calc(%rip), %rsi
	movq	geom(%rip), %rdx
	jmp	.LBB10_15
.LBB10_13:                              #   in Loop: Header=BB10_7 Depth=1
	movapd	%xmm3, %xmm5
.LBB10_15:                              #   in Loop: Header=BB10_7 Depth=1
	movsd	48(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movapd	%xmm4, %xmm0
	addsd	%xmm6, %xmm0
	movsd	%xmm0, (%rcx,%r15,8)
	movsd	216(%rsi), %xmm0                # xmm0 = mem[0],zero
	addsd	%xmm3, %xmm0
	movsd	%xmm0, 216(%rsi)
	movq	40(%rax), %rsi
	movq	8(%rsi), %rsi
	movsd	(%rsi,%r15,8), %xmm1            # xmm1 = mem[0],zero
	movsd	%xmm1, 96(%rsp)
	movq	48(%rax), %rax
	movq	8(%rax), %rdi
	movsd	(%rdi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movapd	%xmm4, %xmm7
	mulsd	%xmm0, %xmm7
	movsd	%xmm7, 32(%rsp)
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	addsd	%xmm7, %xmm1
	movsd	%xmm1, 8(%rsp)
	movl	24(%rdx), %esi
	testl	%esi, %esi
	jle	.LBB10_24
# %bb.16:                               #   in Loop: Header=BB10_7 Depth=1
	movq	$0, 16(%rsp)
	movq	24(%rax), %r8
	movsd	(%r8,%r15,8), %xmm2             # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	movsd	%xmm2, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm2, 24(%rsp)
	xorpd	%xmm3, %xmm3
	cmpl	$2, %esi
	jne	.LBB10_18
# %bb.17:                               #   in Loop: Header=BB10_7 Depth=1
	movq	16(%rax), %r8
	movsd	(%r8,%r15,8), %xmm3             # xmm3 = mem[0],zero
	mulsd	48(%rsp), %xmm3                 # 8-byte Folded Reload
	movsd	%xmm3, 16(%rsp)
.LBB10_18:                              # %.thread203
                                        #   in Loop: Header=BB10_7 Depth=1
	movapd	%xmm1, %xmm2
	mulsd	%xmm1, %xmm2
	movsd	%xmm3, 64(%rsp)                 # 8-byte Spill
	mulsd	%xmm3, %xmm3
	addsd	%xmm2, %xmm3
	movsd	56(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm3, %xmm2
	sqrtsd	%xmm2, %xmm2
	movsd	%xmm2, 104(%rsp)                # 8-byte Spill
	jmp	.LBB10_19
.LBB10_24:                              #   in Loop: Header=BB10_7 Depth=1
	je	.LBB10_25
.LBB10_19:                              #   in Loop: Header=BB10_7 Depth=1
	movq	128(%rdx), %r8
	movsd	8(%r8), %xmm2                   # xmm2 = mem[0],zero
	ucomisd	%xmm1, %xmm2
	movsd	%xmm5, 72(%rsp)                 # 8-byte Spill
	jbe	.LBB10_51
# %bb.20:                               #   in Loop: Header=BB10_7 Depth=1
	ucomisd	.LCPI10_8(%rip), %xmm2
	jbe	.LBB10_51
# %bb.21:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	%xmm7, (%rsp)                   # 8-byte Spill
	addq	$8, %r8
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	leaq	88(%rsp), %r9
	callq	_Z3RBCRdS_S_S_S_S_
	movsd	88(%rsp), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI10_1(%rip), %xmm1          # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB10_67
# %bb.22:                               #   in Loop: Header=BB10_7 Depth=1
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 4(%rax)
	jne	.LBB10_97
# %bb.23:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 32(%rsp)
	movsd	64(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 64(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 16(%rsp)
	movsd	56(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 24(%rsp)
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	leaq	(,%r15,8), %r10
	movq	8(%rax), %r9
	addq	%r10, %r9
	movq	16(%rax), %r11
	addq	%r10, %r11
	addq	24(%rax), %r10
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	leaq	8(%rsp), %r14
	movq	%r14, %r8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	pushq	%r11
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movq	%r13, %rdi
	movl	$1, %esi
	movq	%r14, %rdx
	callq	_Z10REFLECT_1DRiiRd
	jmp	.LBB10_67
.LBB10_51:                              #   in Loop: Header=BB10_7 Depth=1
	leaq	(%rdi,%r15,8), %r9
	movl	32(%rdx), %edi
	cmpl	$1, %edi
	je	.LBB10_59
# %bb.52:                               #   in Loop: Header=BB10_7 Depth=1
	testl	%edi, %edi
	jne	.LBB10_66
# %bb.53:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	104(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	ucomisd	16(%r8), %xmm0
	jbe	.LBB10_66
# %bb.54:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	%xmm7, (%rsp)                   # 8-byte Spill
	addq	$16, %r8
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	leaq	88(%rsp), %r9
	callq	_Z3RBCRdS_S_S_S_S_
	movsd	88(%rsp), %xmm0                 # xmm0 = mem[0],zero
	movsd	.LCPI10_1(%rip), %xmm1          # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB10_67
# %bb.55:                               #   in Loop: Header=BB10_7 Depth=1
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 8(%rax)
	jne	.LBB10_97
# %bb.56:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 32(%rsp)
	movsd	64(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 64(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 16(%rsp)
	movsd	56(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 24(%rsp)
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	leaq	(,%r15,8), %r10
	movq	8(%rax), %r9
	addq	%r10, %r9
	movq	16(%rax), %r11
	addq	%r10, %r11
	addq	24(%rax), %r10
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	leaq	8(%rsp), %r8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	pushq	%r11
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm1
	mulsd	.LCPI10_3(%rip), %xmm1
	movsd	%xmm1, 8(%rsp)
	ucomisd	%xmm0, %xmm1
	jbe	.LBB10_67
# %bb.57:                               # %.lr.ph152.preheader
                                        #   in Loop: Header=BB10_7 Depth=1
	leaq	8(%rsp), %r14
.LBB10_58:                              # %.lr.ph152
                                        #   Parent Loop BB10_7 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	%r13, %rdi
	movl	$2, %esi
	movq	%r14, %rdx
	callq	_Z10REFLECT_1DRiiRd
	movsd	8(%rsp), %xmm0                  # xmm0 = mem[0],zero
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	ucomisd	16(%rax), %xmm0
	ja	.LBB10_58
	jmp	.LBB10_67
.LBB10_59:                              #   in Loop: Header=BB10_7 Depth=1
	movsd	16(%r8), %xmm4                  # xmm4 = mem[0],zero
	movsd	88(%rdx), %xmm1                 # xmm1 = mem[0],zero
	movsd	(%rcx,%r15,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm2
	addsd	%xmm4, %xmm2
	movsd	104(%rsp), %xmm3                # 8-byte Reload
                                        # xmm3 = mem[0],zero
	ucomisd	%xmm2, %xmm3
	jbe	.LBB10_66
# %bb.60:                               #   in Loop: Header=BB10_7 Depth=1
	cmpl	$2, %esi
	movsd	64(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	je	.LBB10_64
# %bb.61:                               #   in Loop: Header=BB10_7 Depth=1
	cmpl	$1, %esi
	leaq	8(%rsp), %r8
	movsd	112(%rsp), %xmm2                # 8-byte Reload
                                        # xmm2 = mem[0],zero
	jne	.LBB10_63
# %bb.62:                               # %.thread213
                                        #   in Loop: Header=BB10_7 Depth=1
	mulsd	%xmm0, %xmm0
	movq	16(%rax), %rcx
	movsd	(%rcx,%r15,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm0, %xmm2
	sqrtsd	%xmm2, %xmm2
.LBB10_63:                              # %._crit_edge183
                                        #   in Loop: Header=BB10_7 Depth=1
	movq	16(%rax), %rcx
	movq	24(%rax), %rax
	jmp	.LBB10_65
.LBB10_66:                              # %.thread111
                                        #   in Loop: Header=BB10_7 Depth=1
	leaq	(,%r15,8), %r10
	movq	16(%rax), %r11
	addq	%r10, %r11
	addq	24(%rax), %r10
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	leaq	8(%rsp), %r8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	pushq	%r11
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
.LBB10_67:                              # %.loopexit146
                                        #   in Loop: Header=BB10_7 Depth=1
	movsd	8(%rsp), %xmm0                  # xmm0 = mem[0],zero
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movq	molecs(%rip), %rdx
	movq	56(%rdx), %rdx
	movsd	(%rdx,%r15,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	88(%rax), %xmm1
	addsd	16(%rcx), %xmm1
	ucomisd	%xmm1, %xmm0
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	jbe	.LBB10_69
# %bb.68:                               #   in Loop: Header=BB10_7 Depth=1
	movl	$_ZSt4cout, %edi
	movl	%ebx, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%r14, %rdi
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movq	molecs(%rip), %rdx
	movq	56(%rdx), %rdx
	movsd	(%rdx,%r15,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	88(%rax), %xmm0
	addsd	16(%rcx), %xmm0
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movq	geom(%rip), %rax
.LBB10_69:                              #   in Loop: Header=BB10_7 Depth=1
	cmpl	$1, 36(%rax)
	jne	.LBB10_93
# %bb.70:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	96(%rax), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, 80(%rsp)                 # 8-byte Spill
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	mulsd	80(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	.LCPI10_1(%rip), %xmm1          # xmm1 = mem[0],zero
	addsd	%xmm1, %xmm0
	movsd	72(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	divsd	%xmm0, %xmm2
	xorl	%ebp, %ebp
	ucomisd	%xmm1, %xmm2
	jb	.LBB10_73
# %bb.71:                               # %.preheader144.preheader
                                        #   in Loop: Header=BB10_7 Depth=1
	xorl	%ebp, %ebp
	movsd	.LCPI10_4(%rip), %xmm0          # xmm0 = mem[0],zero
.LBB10_72:                              # %.preheader144
                                        #   Parent Loop BB10_7 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	incl	%ebp
	addsd	%xmm0, %xmm2
	ucomisd	%xmm1, %xmm2
	jae	.LBB10_72
.LBB10_73:                              # %.loopexit145
                                        #   in Loop: Header=BB10_7 Depth=1
	movsd	%xmm2, 72(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI10_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	xorl	%r12d, %r12d
	movsd	72(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	setae	%r12b
	addl	%ebp, %r12d
	je	.LBB10_74
# %bb.75:                               #   in Loop: Header=BB10_7 Depth=1
	cmpl	$2, %r12d
	jl	.LBB10_76
# %bb.77:                               # %.preheader143
                                        #   in Loop: Header=BB10_7 Depth=1
	movl	$1, %ebp
	movq	molecs(%rip), %rax
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
.LBB10_78:                              #   Parent Loop BB10_7 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB10_81 Depth 3
                                        #       Child Loop BB10_86 Depth 3
	movl	80(%rax), %ecx
	cmpl	84(%rax), %ecx
	jl	.LBB10_80
# %bb.79:                               #   in Loop: Header=BB10_78 Depth=2
	movsd	.LCPI10_6(%rip), %xmm0          # xmm0 = mem[0],zero
	callq	_Z10EXTEND_MNMd
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movq	molecs(%rip), %rax
	movl	80(%rax), %ecx
.LBB10_80:                              #   in Loop: Header=BB10_78 Depth=2
	movslq	%ecx, %rdx
	leaq	1(%rdx), %rsi
	leal	1(%rdx), %ecx
	movl	%ecx, 80(%rax)
	movq	40(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	%xmm0, 8(%rcx,%rdx,8)
	movq	48(%rax), %rdx
	movl	$1, %edi
.LBB10_81:                              #   Parent Loop BB10_7 Depth=1
                                        #     Parent Loop BB10_78 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rdx,%rdi,8), %r8
	movsd	(%r8,%r15,8), %xmm1             # xmm1 = mem[0],zero
	movsd	%xmm1, (%r8,%rsi,8)
	incq	%rdi
	cmpq	$4, %rdi
	jne	.LBB10_81
# %bb.82:                               #   in Loop: Header=BB10_78 Depth=2
	movq	gas(%rip), %rdx
	cmpl	$0, 432(%rdx)
	jle	.LBB10_84
# %bb.83:                               #   in Loop: Header=BB10_78 Depth=2
	movq	64(%rax), %rdi
	movsd	(%rdi,%r15,8), %xmm1            # xmm1 = mem[0],zero
	movsd	%xmm1, (%rdi,%rsi,8)
.LBB10_84:                              #   in Loop: Header=BB10_78 Depth=2
	movq	(%rax), %rdi
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%rdi,%r15,4), %xmm1
	andpd	.LCPI10_7(%rip), %xmm1
	cvttsd2si	%xmm1, %r8d
	movl	%r8d, (%rdi,%rsi,4)
	movq	8(%rax), %rsi
	movl	(%rsi,%r15,4), %edi
	movslq	80(%rax), %r8
	movl	%edi, (%rsi,%r8,4)
	movq	24(%rax), %rsi
	movl	(%rsi,%r15,4), %edi
	movslq	80(%rax), %r8
	movl	%edi, (%rsi,%r8,4)
	cmpl	$0, 428(%rdx)
	jle	.LBB10_87
# %bb.85:                               # %.lr.ph156
                                        #   in Loop: Header=BB10_78 Depth=2
	movq	32(%rax), %rsi
	xorl	%edi, %edi
.LBB10_86:                              #   Parent Loop BB10_7 Depth=1
                                        #     Parent Loop BB10_78 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	8(%rsi,%rdi,8), %r8
	movl	(%r8,%r15,4), %r9d
	movslq	80(%rax), %r10
	movl	%r9d, (%r8,%r10,4)
	movslq	428(%rdx), %r8
	incq	%rdi
	cmpq	%r8, %rdi
	jl	.LBB10_86
.LBB10_87:                              # %.loopexit
                                        #   in Loop: Header=BB10_78 Depth=2
	movq	56(%rax), %rdx
	movsd	(%rdx,%r15,8), %xmm2            # xmm2 = mem[0],zero
	movslq	80(%rax), %rsi
	movsd	%xmm2, (%rdx,%rsi,8)
	movsd	(%rcx,%rsi,8), %xmm1            # xmm1 = mem[0],zero
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rdx
	mulsd	88(%rcx), %xmm2
	addsd	16(%rdx), %xmm2
	ucomisd	%xmm2, %xmm1
	jbe	.LBB10_89
# %bb.88:                               #   in Loop: Header=BB10_78 Depth=2
	movl	$_ZSt4cout, %edi
	movl	$.L.str.187, %esi
	movl	$4, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	40(%rax), %rcx
	movq	8(%rcx), %rcx
	movslq	80(%rax), %rax
	movsd	(%rcx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movq	128(%rax), %rcx
	movq	molecs(%rip), %rdx
	movq	56(%rdx), %rsi
	movslq	80(%rdx), %rdx
	movsd	(%rsi,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	88(%rax), %xmm0
	addsd	16(%rcx), %xmm0
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movq	molecs(%rip), %rax
.LBB10_89:                              #   in Loop: Header=BB10_78 Depth=2
	incl	%ebp
	cmpl	%r12d, %ebp
	jne	.LBB10_78
# %bb.90:                               #   in Loop: Header=BB10_7 Depth=1
	leaq	96(%rsp), %r12
	jmp	.LBB10_92
.LBB10_25:                              # %.preheader142.preheader
                                        #   in Loop: Header=BB10_7 Depth=1
	xorl	%r14d, %r14d
	xorl	%ebp, %ebp
	movsd	%xmm6, 80(%rsp)                 # 8-byte Spill
.LBB10_26:                              # %.preheader142
                                        #   Parent Loop BB10_7 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	%ebp, %eax
	movl	$1, %ebp
	testl	%eax, %eax
	je	.LBB10_27
.LBB10_50:                              # %.thread
                                        #   in Loop: Header=BB10_26 Depth=2
	incq	%r14
	cmpq	$2, %r14
	jne	.LBB10_26
	jmp	.LBB10_46
.LBB10_27:                              #   in Loop: Header=BB10_26 Depth=2
	testq	%r14, %r14
	je	.LBB10_28
# %bb.29:                               #   in Loop: Header=BB10_26 Depth=2
	xorl	%ebp, %ebp
	cmpq	$1, %r14
	jne	.LBB10_50
# %bb.30:                               #   in Loop: Header=BB10_26 Depth=2
	movsd	8(%rsp), %xmm1                  # xmm1 = mem[0],zero
	movq	geom(%rip), %rax
	movq	128(%rax), %rdx
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rcx
	movslq	%ebx, %rsi
	mulsd	(%rcx,%rsi,8), %xmm0
	addsd	16(%rdx), %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.LBB10_31
	jmp	.LBB10_91
.LBB10_28:                              #   in Loop: Header=BB10_26 Depth=2
	movsd	8(%rsp), %xmm1                  # xmm1 = mem[0],zero
	movq	geom(%rip), %rax
	movq	128(%rax), %rdx
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	xorl	%ebp, %ebp
	ucomisd	%xmm1, %xmm0
	jbe	.LBB10_50
.LBB10_31:                              #   in Loop: Header=BB10_26 Depth=2
	movq	40(%rax), %rsi
	movl	4(%rsi,%r14,4), %ecx
	xorl	%ebp, %ebp
	cmpl	$4, %ecx
	ja	.LBB10_39
# %bb.32:                               #   in Loop: Header=BB10_26 Depth=2
	movl	$25, %edi
	btl	%ecx, %edi
	jae	.LBB10_39
# %bb.33:                               #   in Loop: Header=BB10_26 Depth=2
	movsd	120(%rax), %xmm0                # xmm0 = mem[0],zero
	ucomisd	8(%rdx), %xmm0
	jbe	.LBB10_35
# %bb.34:                               #   in Loop: Header=BB10_26 Depth=2
	movq	molecs(%rip), %rax
	movq	8(%rax), %rax
	movslq	%ebx, %rcx
	movslq	(%rax,%rcx,4), %rax
	movq	calc(%rip), %rcx
	movsd	232(%rcx), %xmm0                # xmm0 = mem[0],zero
	movq	gas(%rip), %rdx
	movq	320(%rdx), %rdx
	movq	40(%rdx), %rdx
	subsd	(%rdx,%rax,8), %xmm0
	movsd	%xmm0, 232(%rcx)
.LBB10_35:                              #   in Loop: Header=BB10_26 Depth=2
	movsd	%xmm1, 72(%rsp)                 # 8-byte Spill
	cmpl	$4, 8(%rsi)
	jne	.LBB10_38
# %bb.36:                               #   in Loop: Header=BB10_26 Depth=2
	movq	calc(%rip), %rax
	cmpl	$1, 76(%rax)
	jne	.LBB10_38
# %bb.37:                               #   in Loop: Header=BB10_26 Depth=2
	movq	molecs(%rip), %rcx
	movq	8(%rcx), %rcx
	movslq	%ebx, %rdx
	movslq	(%rcx,%rdx,4), %rcx
	movq	304(%rax), %rax
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm3, %xmm0
	movsd	%xmm0, (%rax,%rcx,8)
.LBB10_38:                              #   in Loop: Header=BB10_26 Depth=2
	movq	%r13, %rdi
	callq	_Z10REMOVE_MOLRi
	decl	%ebx
	movl	%ebx, 44(%rsp)
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	movl	4(%rcx,%r14,4), %ecx
	movl	$1, %ebp
	movsd	80(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	72(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB10_39:                              #   in Loop: Header=BB10_26 Depth=2
	cmpl	$2, %ecx
	je	.LBB10_48
# %bb.40:                               #   in Loop: Header=BB10_26 Depth=2
	cmpl	$1, %ecx
	jne	.LBB10_49
# %bb.41:                               #   in Loop: Header=BB10_26 Depth=2
	testq	%r14, %r14
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
	je	.LBB10_43
# %bb.42:                               #   in Loop: Header=BB10_26 Depth=2
	movl	32(%rax), %ecx
	testl	%ecx, %ecx
	jne	.LBB10_44
.LBB10_43:                              #   in Loop: Header=BB10_26 Depth=2
	movq	128(%rax), %rax
	movsd	8(%rax,%r14,8), %xmm0           # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 8(%rsp)
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movslq	%ebx, %rcx
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	xorpd	.LCPI10_2(%rip), %xmm0
	movlpd	%xmm0, (%rax,%rcx,8)
	jmp	.LBB10_50
.LBB10_48:                              #   in Loop: Header=BB10_26 Depth=2
	leal	1(%r14), %esi
	movq	%r13, %rdi
	leaq	8(%rsp), %rdx
	callq	_Z10REFLECT_1DRiiRd
	movsd	80(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
.LBB10_49:                              # %.thread
                                        #   in Loop: Header=BB10_26 Depth=2
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
	jmp	.LBB10_50
.LBB10_74:                              #   in Loop: Header=BB10_7 Depth=1
	leaq	96(%rsp), %r12
	leaq	32(%rsp), %rbp
	jmp	.LBB10_97
.LBB10_76:                              #   in Loop: Header=BB10_7 Depth=1
	leaq	96(%rsp), %r12
	leaq	32(%rsp), %rbp
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	jmp	.LBB10_93
.LBB10_64:                              #   in Loop: Header=BB10_7 Depth=1
	mulsd	%xmm0, %xmm0
	movq	16(%rax), %rcx
	movq	24(%rax), %rax
	movsd	(%rcx,%r15,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm0, %xmm2
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm2, %xmm0
	xorps	%xmm2, %xmm2
	sqrtsd	%xmm0, %xmm2
	leaq	8(%rsp), %r8
.LBB10_65:                              #   in Loop: Header=BB10_7 Depth=1
	mulsd	%xmm1, %xmm6
	addsd	%xmm6, %xmm4
	subsd	(%rsp), %xmm4                   # 8-byte Folded Reload
	movsd	%xmm2, 112(%rsp)                # 8-byte Spill
	movapd	%xmm2, %xmm0
	subsd	%xmm1, %xmm0
	divsd	%xmm0, %xmm4
	movsd	%xmm4, (%rsp)                   # 8-byte Spill
	movapd	%xmm4, %xmm0
	divsd	48(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	%xmm0, 88(%rsp)
	mulsd	%xmm0, %xmm7
	movsd	%xmm7, 32(%rsp)
	mulsd	%xmm0, %xmm3
	movsd	%xmm3, 64(%rsp)                 # 8-byte Spill
	movsd	%xmm3, 16(%rsp)
	movsd	56(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 24(%rsp)
	leaq	(%rcx,%r15,8), %r10
	leaq	(%rax,%r15,8), %rax
	movq	%r12, %rdi
	movq	%rbp, %rsi
	leaq	16(%rsp), %rdx
	leaq	24(%rsp), %rcx
	pushq	%rax
	.cfi_adjust_cfa_offset 8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movq	geom(%rip), %rcx
	movsd	88(%rcx), %xmm0                 # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	subsd	(%rax,%r15,8), %xmm0
	movsd	%xmm0, (%rax,%r15,8)
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	subsd	(%rsp), %xmm1                   # 8-byte Folded Reload
	mulsd	%xmm0, %xmm1
	addsd	8(%rsp), %xmm1
	movsd	%xmm1, 8(%rsp)
	movl	44(%rsp), %ebx
	movslq	%ebx, %r15
	jmp	.LBB10_67
.LBB10_44:                              #   in Loop: Header=BB10_7 Depth=1
	cmpl	$1, %ecx
	jne	.LBB10_46
# %bb.45:                               #   in Loop: Header=BB10_7 Depth=1
	movq	128(%rax), %rcx
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm6
	addsd	16(%rcx), %xmm6
	movsd	(%rsp), %xmm4                   # 8-byte Reload
                                        # xmm4 = mem[0],zero
	subsd	%xmm4, %xmm6
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movslq	%ebx, %rcx
	movsd	(%rax,%rcx,8), %xmm1            # xmm1 = mem[0],zero
	movapd	%xmm1, %xmm2
	subsd	%xmm0, %xmm2
	divsd	%xmm2, %xmm6
	addsd	%xmm0, %xmm0
	subsd	%xmm1, %xmm0
	mulsd	%xmm6, %xmm1
	addsd	%xmm4, %xmm1
	movsd	%xmm0, (%rax,%rcx,8)
	movsd	48(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	subsd	%xmm6, %xmm2
	mulsd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	movsd	%xmm2, 8(%rsp)
.LBB10_46:                              # %.thread.thread
                                        #   in Loop: Header=BB10_7 Depth=1
	testl	%ebp, %ebp
	je	.LBB10_91
# %bb.47:                               #   in Loop: Header=BB10_7 Depth=1
	leaq	32(%rsp), %rbp
	jmp	.LBB10_98
.LBB10_91:                              # %..thread128_crit_edge
                                        #   in Loop: Header=BB10_7 Depth=1
	movsd	8(%rsp), %xmm0                  # xmm0 = mem[0],zero
.LBB10_92:                              # %.thread128
                                        #   in Loop: Header=BB10_7 Depth=1
	leaq	32(%rsp), %rbp
.LBB10_93:                              # %.thread128
                                        #   in Loop: Header=BB10_7 Depth=1
	movq	molecs(%rip), %rax
	movq	40(%rax), %rcx
	movq	8(%rcx), %rcx
	movslq	%ebx, %r14
	movsd	%xmm0, (%rcx,%r14,8)
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rcx
	ucomisd	8(%rcx), %xmm0
	jbe	.LBB10_96
# %bb.94:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	16(%rcx), %xmm1                 # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB10_96
# %bb.95:                               #   in Loop: Header=BB10_7 Depth=1
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
	jmp	.LBB10_99
.LBB10_96:                              #   in Loop: Header=BB10_7 Depth=1
	movl	$_ZSt4cout, %edi
	movl	%r14d, %esi
	callq	_ZNSolsEi
	movq	%rax, %r15
	movl	$.L.str.188, %esi
	movl	$22, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r15
	movl	$.L.str.189, %esi
	movl	$5, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.LBB10_97:                              # %.thread133.sink.split
                                        #   in Loop: Header=BB10_7 Depth=1
	movq	%r13, %rdi
	callq	_Z10REMOVE_MOLRi
	decl	%ebx
	movsd	.LCPI10_1(%rip), %xmm3          # xmm3 = mem[0],zero
.LBB10_98:                              # %.thread133
                                        #   in Loop: Header=BB10_7 Depth=1
	incl	%ebx
	movl	%ebx, 44(%rsp)
	movq	molecs(%rip), %rax
.LBB10_99:                              # %.backedge
                                        #   in Loop: Header=BB10_7 Depth=1
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	cmpl	80(%rax), %ebx
	jle	.LBB10_7
.LBB10_100:                             # %._crit_edge166
	addq	$120, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end10:
	.size	_Z17MOLECULES_MOVE_1Dv, .Lfunc_end10-_Z17MOLECULES_MOVE_1Dv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0                          # -- Begin function _Z18MOLECULES_ENTER_1Dv
.LCPI11_0:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
.LCPI11_6:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0
.LCPI11_1:
	.quad	0x3ff199999999999a              # double 1.1000000000000001
.LCPI11_2:
	.quad	0xc008000000000000              # double -3
.LCPI11_3:
	.quad	0x4008000000000000              # double 3
.LCPI11_4:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI11_5:
	.quad	0x3fefffffca501acb              # double 0.99999990000000005
.LCPI11_7:
	.quad	0x3f50624dd2f1a9fc              # double 0.001
.LCPI11_8:
	.quad	0x0000000000000000              # double 0
	.text
	.globl	_Z18MOLECULES_ENTER_1Dv
	.type	_Z18MOLECULES_ENTER_1Dv,@function
_Z18MOLECULES_ENTER_1Dv:                # @_Z18MOLECULES_ENTER_1Dv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$136, %rsp
	.cfi_def_cfa_offset 192
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	calc(%rip), %rax
	movq	$0, 232(%rax)
	movl	$1, %r13d
	leaq	4(%rsp), %rbx
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
.LBB11_1:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB11_8 Depth 2
                                        #       Child Loop BB11_17 Depth 3
                                        #         Child Loop BB11_20 Depth 4
                                        #         Child Loop BB11_28 Depth 4
	movq	geom(%rip), %rax
	movq	40(%rax), %rcx
	testl	$-5, (%rcx,%r13,4)
	jne	.LBB11_50
# %bb.2:                                #   in Loop: Header=BB11_1 Depth=1
	movl	$1, %r15d
	cmpq	$2, %r13
	jne	.LBB11_6
# %bb.3:                                #   in Loop: Header=BB11_1 Depth=1
	movq	calc(%rip), %rcx
	cmpl	$1, 28(%rcx)
	jne	.LBB11_6
# %bb.4:                                #   in Loop: Header=BB11_1 Depth=1
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
	ucomisd	.LCPI11_8(%rip), %xmm0
	jbe	.LBB11_6
# %bb.5:                                #   in Loop: Header=BB11_1 Depth=1
	movl	$2, %r15d
.LBB11_6:                               #   in Loop: Header=BB11_1 Depth=1
	movl	$1, 4(%rsp)
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB11_50
# %bb.7:                                # %.lr.ph105
                                        #   in Loop: Header=BB11_1 Depth=1
	movl	$1, %r12d
.LBB11_8:                               #   Parent Loop BB11_1 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB11_17 Depth 3
                                        #         Child Loop BB11_20 Depth 4
                                        #         Child Loop BB11_28 Depth 4
	movq	368(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	(%rdx,%r12,8), %rdx
	movsd	(%rdx,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movq	calc(%rip), %rdx
	mulsd	104(%rdx), %xmm0
	movq	16(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	addsd	(%rcx,%r13,8), %xmm0
	movq	geom(%rip), %rsi
	movq	40(%rsi), %rsi
	cmpl	$4, 8(%rsi)
	jne	.LBB11_12
# %bb.9:                                #   in Loop: Header=BB11_8 Depth=2
	cmpl	$1, 76(%rdx)
	jne	.LBB11_12
# %bb.10:                               #   in Loop: Header=BB11_8 Depth=2
	cmpq	$1, %r13
	jne	.LBB11_13
# %bb.11:                               # %.thread
                                        #   in Loop: Header=BB11_8 Depth=2
	cvttpd2dq	%xmm0, %xmm1
	cvtdq2pd	%xmm1, %xmm1
	movq	312(%rdx), %rdx
	movlps	%xmm1, (%rdx,%r12,8)
	jmp	.LBB11_12
.LBB11_13:                              #   in Loop: Header=BB11_8 Depth=2
	cmpq	$2, %r13
	jne	.LBB11_12
# %bb.14:                               #   in Loop: Header=BB11_8 Depth=2
	movq	304(%rdx), %rsi
	movq	312(%rdx), %rdi
	movsd	(%rsi,%r12,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rdi,%r12,8), %xmm0
	movq	320(%rdx), %rdx
	subsd	(%rdx,%r12,8), %xmm0
	movapd	%xmm0, %xmm1
	xorpd	%xmm2, %xmm2
	maxsd	%xmm0, %xmm2
	xorpd	.LCPI11_0(%rip), %xmm0
	cmpltsd	%xmm0, %xmm1
	andpd	%xmm0, %xmm1
	xorpd	%xmm0, %xmm0
	movlpd	%xmm1, (%rdx,%r12,8)
	cvttsd2si	%xmm2, %edx
	jmp	.LBB11_15
.LBB11_12:                              #   in Loop: Header=BB11_8 Depth=2
	cvttsd2si	%xmm0, %edx
	cvttpd2dq	%xmm0, %xmm1
	cvtdq2pd	%xmm1, %xmm1
	subsd	%xmm1, %xmm0
.LBB11_15:                              #   in Loop: Header=BB11_8 Depth=2
	movsd	%xmm0, (%rcx,%r13,8)
	testl	%edx, %edx
	jle	.LBB11_49
# %bb.16:                               # %.preheader95.preheader
                                        #   in Loop: Header=BB11_8 Depth=2
	movq	molecs(%rip), %rax
	movl	$1, %r14d
	movl	%edx, 8(%rsp)                   # 4-byte Spill
.LBB11_17:                              # %.preheader95
                                        #   Parent Loop BB11_1 Depth=1
                                        #     Parent Loop BB11_8 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB11_20 Depth 4
                                        #         Child Loop BB11_28 Depth 4
	movl	80(%rax), %ecx
	cmpl	84(%rax), %ecx
	jl	.LBB11_19
# %bb.18:                               #   in Loop: Header=BB11_17 Depth=3
	movl	$_ZSt4cout, %edi
	movl	$.L.str.152, %esi
	movl	$32, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	movl	$_ZSt4cout, %eax
	addq	%rax, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	.LCPI11_1(%rip), %xmm0          # xmm0 = mem[0],zero
	callq	_Z10EXTEND_MNMd
	movq	molecs(%rip), %rax
	movl	80(%rax), %ecx
.LBB11_19:                              #   in Loop: Header=BB11_17 Depth=3
	incl	%ecx
	movl	%ecx, 80(%rax)
	movq	gas(%rip), %rax
	movq	368(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r13,8), %xmm1            # xmm1 = mem[0],zero
	movapd	%xmm1, %xmm2
	addsd	.LCPI11_2(%rip), %xmm2
	maxsd	.LCPI11_8(%rip), %xmm2
	movsd	.LCPI11_3(%rip), %xmm0          # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm1
	maxsd	%xmm0, %xmm1
	movsd	%xmm2, 72(%rsp)                 # 8-byte Spill
	subsd	%xmm2, %xmm1
	movsd	%xmm1, 80(%rsp)                 # 8-byte Spill
.LBB11_20:                              # %.backedge
                                        #   Parent Loop BB11_1 Depth=1
                                        #     Parent Loop BB11_8 Depth=2
                                        #       Parent Loop BB11_17 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	movsd	.LCPI11_4(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm1, %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	80(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	72(%rsp), %xmm0                 # 8-byte Folded Reload
	movq	gas(%rip), %rax
	movq	368(%rax), %rax
	movq	24(%rax), %rcx
	movq	32(%rax), %rdx
	movq	(%rcx,%r12,8), %rcx
	movapd	%xmm0, %xmm1
	subsd	(%rcx,%r13,8), %xmm1
	movapd	%xmm0, 112(%rsp)                # 16-byte Spill
	addsd	%xmm0, %xmm0
	movq	(%rdx,%r12,8), %rcx
	divsd	(%rcx,%r13,8), %xmm0
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	movq	40(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm1, %xmm1
	subsd	%xmm1, %xmm0
	callq	exp
	mulsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI11_4(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	32(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB11_20
# %bb.21:                               #   in Loop: Header=BB11_17 Depth=3
	movq	molecs(%rip), %rax
	movq	gas(%rip), %rcx
	movq	344(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movapd	112(%rsp), %xmm0                # 16-byte Reload
	mulsd	(%rcx,%r15,8), %xmm0
	movslq	80(%rax), %rsi
	movq	48(%rax), %rax
	movq	8(%rax), %rdi
	cmpq	$2, %r13
	jne	.LBB11_23
# %bb.22:                               #   in Loop: Header=BB11_17 Depth=3
	xorpd	.LCPI11_0(%rip), %xmm0
.LBB11_23:                              #   in Loop: Header=BB11_17 Depth=3
	leaq	(%rcx,%r15,8), %rdx
	movsd	%xmm0, (%rdi,%rsi,8)
	shlq	$3, %rsi
	movq	16(%rax), %rdi
	addq	%rsi, %rdi
	addq	24(%rax), %rsi
	callq	_Z5RVELCRdS_S_
	movq	molecs(%rip), %rax
	movq	48(%rax), %rcx
	movq	16(%rcx), %rsi
	movslq	80(%rax), %rdx
	movsd	(%rsi,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	movq	gas(%rip), %rcx
	addsd	168(%rcx,%r13,8), %xmm0
	movsd	%xmm0, (%rsi,%rdx,8)
	movq	488(%rcx), %rsi
	movq	8(%rsi), %rsi
	cmpl	$0, (%rsi,%r12,4)
	jle	.LBB11_25
# %bb.24:                               #   in Loop: Header=BB11_17 Depth=3
	leaq	(%rcx,%r15,8), %rsi
	addq	$96, %rsi
	shlq	$3, %rdx
	addq	64(%rax), %rdx
	movq	%rbx, %rdi
	callq	_Z4SROTRiRdS0_
	movq	gas(%rip), %rcx
.LBB11_25:                              #   in Loop: Header=BB11_17 Depth=3
	cmpl	$0, 428(%rcx)
	movq	%r14, 56(%rsp)                  # 8-byte Spill
	jle	.LBB11_29
# %bb.26:                               # %.preheader
                                        #   in Loop: Header=BB11_17 Depth=3
	movl	$1, 12(%rsp)
	movq	472(%rcx), %rax
	cmpl	$0, (%rax,%r12,4)
	jle	.LBB11_29
# %bb.27:                               # %.lr.ph.preheader
                                        #   in Loop: Header=BB11_17 Depth=3
	xorl	%r14d, %r14d
	leaq	12(%rsp), %rbx
	leaq	4(%rsp), %rbp
.LBB11_28:                              # %.lr.ph
                                        #   Parent Loop BB11_1 Depth=1
                                        #     Parent Loop BB11_8 Depth=2
                                        #       Parent Loop BB11_17 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	leaq	(%rcx,%r15,8), %rsi
	addq	$120, %rsi
	movq	molecs(%rip), %rax
	movq	32(%rax), %rcx
	movslq	80(%rax), %rdx
	shlq	$2, %rdx
	addq	8(%rcx,%r14,8), %rdx
	movq	%rbp, %rdi
	movq	%rbx, %rcx
	callq	_Z4SVIBRiRdS_S_
	leal	2(%r14), %eax
	movl	%eax, 12(%rsp)
	movq	gas(%rip), %rcx
	movq	472(%rcx), %rax
	movslq	(%rax,%r12,4), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB11_28
.LBB11_29:                              # %.loopexit94
                                        #   in Loop: Header=BB11_17 Depth=3
	cmpl	$2, 452(%rcx)
	movq	molecs(%rip), %rax
	jl	.LBB11_30
# %bb.31:                               #   in Loop: Header=BB11_17 Depth=3
	leaq	(%rcx,%r15,8), %rsi
	addq	$96, %rsi
	movslq	80(%rax), %rdx
	shlq	$3, %rdx
	addq	72(%rax), %rdx
	leaq	4(%rsp), %rbx
	movq	%rbx, %rdi
	callq	_Z4SELERiRdS0_
	movq	molecs(%rip), %rax
	jmp	.LBB11_32
.LBB11_30:                              #   in Loop: Header=BB11_17 Depth=3
	leaq	4(%rsp), %rbx
.LBB11_32:                              #   in Loop: Header=BB11_17 Depth=3
	movq	56(%rsp), %r14                  # 8-byte Reload
	movq	72(%rax), %rdx
	movslq	80(%rax), %rcx
	movsd	(%rdx,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	.LCPI11_8(%rip), %xmm0
	ja	.LBB11_47
# %bb.33:                               #   in Loop: Header=BB11_17 Depth=3
	movq	8(%rax), %rax
	movl	%r12d, (%rax,%rcx,4)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI11_4(%rip), %xmm0
	movq	calc(%rip), %rdx
	movsd	%xmm0, 152(%rdx)
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rax
	movsd	(%rax,%r13,8), %xmm1            # xmm1 = mem[0],zero
	movsd	%xmm1, 104(%rsp)
	mulsd	104(%rdx), %xmm0
	movq	molecs(%rip), %rax
	movq	48(%rax), %r8
	movq	8(%r8), %rdi
	movslq	80(%rax), %rsi
	movsd	(%rdi,%rsi,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 96(%rsp)
	movl	24(%rcx), %r9d
	cmpq	$2, %r13
	je	.LBB11_35
# %bb.34:                               #   in Loop: Header=BB11_17 Depth=3
	testl	%r9d, %r9d
	jne	.LBB11_36
.LBB11_35:                              #   in Loop: Header=BB11_17 Depth=3
	addsd	%xmm2, %xmm1
	movsd	%xmm1, 64(%rsp)
	movsd	%xmm1, 48(%rsp)                 # 8-byte Spill
.LBB11_36:                              #   in Loop: Header=BB11_17 Depth=3
	cmpq	$1, %r13
	jne	.LBB11_41
# %bb.37:                               #   in Loop: Header=BB11_17 Depth=3
	testl	%r9d, %r9d
	jle	.LBB11_69
# %bb.38:                               #   in Loop: Header=BB11_17 Depth=3
	movq	16(%r8), %rax
	movsd	(%rax,%rsi,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 88(%rsp)
	movq	$0, 16(%rsp)
	movq	24(%r8), %rcx
	cmpl	$2, %r9d
	jne	.LBB11_40
# %bb.39:                               #   in Loop: Header=BB11_17 Depth=3
	mulsd	(%rcx,%rsi,8), %xmm0
	movsd	%xmm0, 16(%rsp)
.LBB11_40:                              # %._crit_edge138
                                        #   in Loop: Header=BB11_17 Depth=3
	leaq	(%rdi,%rsi,8), %r9
	leaq	(%rax,%rsi,8), %rax
	leaq	(%rcx,%rsi,8), %r10
	leaq	104(%rsp), %rdi
	leaq	96(%rsp), %rsi
	leaq	88(%rsp), %rdx
	leaq	16(%rsp), %rcx
	leaq	64(%rsp), %r8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	pushq	%rax
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movsd	64(%rsp), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	movq	molecs(%rip), %rax
	movq	calc(%rip), %rdx
	movslq	80(%rax), %rsi
	movq	geom(%rip), %rcx
	jmp	.LBB11_41
.LBB11_69:                              #   in Loop: Header=BB11_17 Depth=3
	movq	$0, 16(%rsp)
.LBB11_41:                              #   in Loop: Header=BB11_17 Depth=3
	movq	40(%rax), %rdi
	movslq	60(%rdx), %r8
	movq	(%rdi,%r8,8), %rdi
	movsd	48(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, (%rdi,%rsi,8)
	movsd	80(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movq	56(%rax), %rdx
	movsd	%xmm0, (%rdx,%rsi,8)
	movl	32(%rcx), %edx
	testl	%edx, %edx
	jne	.LBB11_43
# %bb.42:                               #   in Loop: Header=BB11_17 Depth=3
	leaq	(%rdi,%rsi,8), %rdi
	shlq	$2, %rsi
	addq	(%rax), %rsi
	leaq	24(%rsp), %rdx
	callq	_Z12FIND_CELL_1DRdRiS0_
	movq	geom(%rip), %rcx
	movl	32(%rcx), %edx
	movq	molecs(%rip), %rax
.LBB11_43:                              #   in Loop: Header=BB11_17 Depth=3
	cmpl	$1, %edx
	jne	.LBB11_45
# %bb.44:                               #   in Loop: Header=BB11_17 Depth=3
	movq	40(%rax), %rdx
	movq	calc(%rip), %rcx
	movslq	60(%rcx), %rdi
	movslq	80(%rax), %rsi
	leaq	(,%rsi,8), %rcx
	movq	(%rdx,%rdi,8), %rdi
	addq	%rcx, %rdi
	shlq	$2, %rsi
	addq	(%rax), %rsi
	addq	56(%rax), %rcx
	leaq	24(%rsp), %rdx
	callq	_Z15FIND_CELL_MB_1DRdRiS0_S_
	movq	molecs(%rip), %rax
	movq	geom(%rip), %rcx
.LBB11_45:                              #   in Loop: Header=BB11_17 Depth=3
	movq	24(%rax), %rdx
	movslq	80(%rax), %rsi
	movl	$0, (%rdx,%rsi,4)
	movsd	120(%rcx), %xmm0                # xmm0 = mem[0],zero
	movq	128(%rcx), %rcx
	ucomisd	8(%rcx), %xmm0
	jbe	.LBB11_47
# %bb.46:                               #   in Loop: Header=BB11_17 Depth=3
	movq	calc(%rip), %rcx
	movsd	232(%rcx), %xmm0                # xmm0 = mem[0],zero
	movq	gas(%rip), %rdx
	movq	320(%rdx), %rdx
	movq	40(%rdx), %rdx
	addsd	(%rdx,%r12,8), %xmm0
	movsd	%xmm0, 232(%rcx)
.LBB11_47:                              #   in Loop: Header=BB11_17 Depth=3
	movl	8(%rsp), %edx                   # 4-byte Reload
	leal	1(%r14), %ecx
	cmpl	%edx, %r14d
	movl	%ecx, %r14d
	jne	.LBB11_17
# %bb.48:                               # %.loopexit96.loopexit
                                        #   in Loop: Header=BB11_8 Depth=2
	movq	gas(%rip), %rax
.LBB11_49:                              # %.loopexit96
                                        #   in Loop: Header=BB11_8 Depth=2
	leaq	1(%r12), %rcx
	movl	%ecx, 4(%rsp)
	movslq	424(%rax), %rdx
	cmpq	%rdx, %r12
	movq	%rcx, %r12
	jl	.LBB11_8
.LBB11_50:                              # %.loopexit97
                                        #   in Loop: Header=BB11_1 Depth=1
	incq	%r13
	cmpq	$3, %r13
	jne	.LBB11_1
# %bb.51:
	movq	geom(%rip), %rax
	movsd	120(%rax), %xmm0                # xmm0 = mem[0],zero
	movq	128(%rax), %rcx
	ucomisd	8(%rcx), %xmm0
	jbe	.LBB11_68
# %bb.52:
	movsd	112(%rax), %xmm0                # xmm0 = mem[0],zero
	movq	calc(%rip), %rax
	mulsd	232(%rax), %xmm0
	addsd	240(%rax), %xmm0
	movsd	%xmm0, 232(%rax)
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB11_67
# %bb.53:                               # %.lr.ph114.preheader
	xorl	%ebp, %ebp
	movl	$_ZSt4cout, %r14d
	leaq	28(%rsp), %rbx
.LBB11_54:                              # %.lr.ph114
                                        # =>This Inner Loop Header: Depth=1
	incl	%ebp
	cmpl	$10000, %ebp                    # imm = 0x2710
	jne	.LBB11_57
# %bb.55:                               #   in Loop: Header=BB11_54 Depth=1
	movl	$_ZSt4cout, %edi
	movl	$.L.str.153, %esi
	movl	$35, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	calc(%rip), %rax
	movq	$0, 232(%rax)
	movq	gas(%rip), %rcx
	movl	424(%rcx), %ecx
	testl	%ecx, %ecx
	js	.LBB11_57
# %bb.56:                               # %.lr.ph111
                                        #   in Loop: Header=BB11_54 Depth=1
	movq	280(%rax), %rdi
	leaq	8(,%rcx,8), %rdx
	xorl	%esi, %esi
	callq	memset@PLT
.LBB11_57:                              # %.loopexit
                                        #   in Loop: Header=BB11_54 Depth=1
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	movsd	.LCPI11_4(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm1, %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	molecs(%rip), %rcx
	xorps	%xmm1, %xmm1
	cvtsi2sdl	80(%rcx), %xmm1
	mulsd	%xmm0, %xmm1
	addsd	.LCPI11_5(%rip), %xmm1
	cvttsd2si	%xmm1, %edx
	movl	%edx, 28(%rsp)
	movq	40(%rcx), %rcx
	movslq	60(%rax), %rsi
	movq	(%rcx,%rsi,8), %rcx
	movslq	%edx, %r15
	movsd	(%rcx,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	geom(%rip), %rcx
	ucomisd	120(%rcx), %xmm0
	jbe	.LBB11_65
# %bb.58:                               #   in Loop: Header=BB11_54 Depth=1
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI11_4(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rcx
	movsd	176(%rcx), %xmm0                # xmm0 = mem[0],zero
	movapd	.LCPI11_6(%rip), %xmm1          # xmm1 = [NaN,NaN]
	andpd	%xmm1, %xmm0
	movsd	.LCPI11_7(%rip), %xmm2          # xmm2 = mem[0],zero
	ucomisd	%xmm0, %xmm2
	movq	molecs(%rip), %rcx
	movq	48(%rcx), %rdx
	jbe	.LBB11_60
# %bb.59:                               #   in Loop: Header=BB11_54 Depth=1
	movq	16(%rdx), %rsi
	movq	24(%rdx), %rdx
	movsd	(%rsi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	(%rdx,%r15,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm1, %xmm0
	jmp	.LBB11_61
.LBB11_60:                              #   in Loop: Header=BB11_54 Depth=1
	movq	24(%rdx), %rdx
	movsd	(%rdx,%r15,8), %xmm0            # xmm0 = mem[0],zero
	andpd	%xmm1, %xmm0
.LBB11_61:                              #   in Loop: Header=BB11_54 Depth=1
	movq	8(%rcx), %rcx
	movslq	(%rcx,%r15,4), %r15
	movq	280(%rax), %rax
	ucomisd	(%rax,%r15,8), %xmm0
	jbe	.LBB11_63
# %bb.62:                               #   in Loop: Header=BB11_54 Depth=1
	movsd	%xmm0, (%rax,%r15,8)
.LBB11_63:                              #   in Loop: Header=BB11_54 Depth=1
	movapd	%xmm0, 32(%rsp)                 # 16-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI11_4(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	280(%rax), %rcx
	movapd	32(%rsp), %xmm1                 # 16-byte Reload
	divsd	(%rcx,%r15,8), %xmm1
	ucomisd	%xmm0, %xmm1
	jbe	.LBB11_65
# %bb.64:                               #   in Loop: Header=BB11_54 Depth=1
	movq	%rbx, %rdi
	callq	_Z10REMOVE_MOLRi
	movq	calc(%rip), %rax
	movsd	232(%rax), %xmm0                # xmm0 = mem[0],zero
	movq	gas(%rip), %rcx
	movq	320(%rcx), %rcx
	movq	40(%rcx), %rcx
	subsd	(%rcx,%r15,8), %xmm0
	movsd	%xmm0, 232(%rax)
	xorl	%ebp, %ebp
.LBB11_65:                              #   in Loop: Header=BB11_54 Depth=1
	movsd	232(%rax), %xmm0                # xmm0 = mem[0],zero
	cmpl	$9999, %ebp                     # imm = 0x270F
	jg	.LBB11_67
# %bb.66:                               #   in Loop: Header=BB11_54 Depth=1
	ucomisd	.LCPI11_8(%rip), %xmm0
	ja	.LBB11_54
.LBB11_67:                              # %._crit_edge
	movsd	%xmm0, 240(%rax)
.LBB11_68:
	addq	$136, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end11:
	.size	_Z18MOLECULES_ENTER_1Dv, .Lfunc_end11-_Z18MOLECULES_ENTER_1Dv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z10COLLISIONSv
.LCPI12_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI12_1:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI12_2:
	.quad	0x400921fb54442d18              # double 3.1415926535897931
.LCPI12_3:
	.quad	0x4008000000000000              # double 3
.LCPI12_4:
	.quad	0x4010c152382d7365              # double 4.1887902047863905
.LCPI12_5:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI12_6:
	.quad	0x4202a05f20000000              # double 1.0E+10
.LCPI12_8:
	.quad	0x3e45798ee2308c3a              # double 1.0E-8
.LCPI12_9:
	.quad	0x3b40b0edf6c91c1b              # double 2.7613160000000003E-23
.LCPI12_10:
	.quad	0xbfe0000000000000              # double -0.5
.LCPI12_11:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI12_12:
	.quad	0xbb30b0edf6c91c1b              # double -1.3806580000000001E-23
.LCPI12_13:
	.quad	0x3fe0c152382d7365              # double 0.52359877559829882
.LCPI12_14:
	.quad	0x3ff8000000000000              # double 1.5
.LCPI12_15:
	.quad	0x4071100000000000              # double 273
.LCPI12_16:
	.quad	0x3b92e3b40a0e9b4f              # double 9.9999999999999991E-22
.LCPI12_18:
	.quad	0x3fd55555318abc87              # double 0.3333333
.LCPI12_19:
	.quad	0xbff0000000000000              # double -1
.LCPI12_20:
	.quad	0x3fd555475a31a4be              # double 0.33333000000000002
.LCPI12_21:
	.quad	0x3feffffffaa19c47              # double 0.99999998999999994
.LCPI12_22:
	.quad	0x4004000000000000              # double 2.5
.LCPI12_23:
	.quad	0x3f50624dd2f1a9fc              # double 0.001
.LCPI12_24:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
.LCPI12_25:
	.quad	0x4000000000000000              # double 2
.LCPI12_26:
	.quad	0x40e046a000000000              # double 33333
.LCPI12_27:
	.quad	0x412e848000000000              # double 1.0E+6
.LCPI12_28:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI12_7:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
.LCPI12_17:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z10COLLISIONSv
	.type	_Z10COLLISIONSv,@function
_Z10COLLISIONSv:                        # @_Z10COLLISIONSv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$408, %rsp                      # imm = 0x198
	.cfi_def_cfa_offset 464
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	callq	clock
	movq	%rax, start(%rip)
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movl	$_ZSt4cout, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	16(%rax), %xmm0                 # xmm0 = mem[0],zero
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$1, 132(%rsp)
	movq	geom(%rip), %rax
	cmpl	$0, 4(%rax)
	jle	.LBB12_362
# %bb.1:                                # %.lr.ph1377
	movl	$1, %ebx
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
                                        # implicit-def: $r13d
                                        # implicit-def: $r15d
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
.LBB12_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB12_23 Depth 2
                                        #       Child Loop BB12_36 Depth 3
                                        #       Child Loop BB12_28 Depth 3
                                        #       Child Loop BB12_48 Depth 3
                                        #       Child Loop BB12_111 Depth 3
                                        #       Child Loop BB12_115 Depth 3
                                        #         Child Loop BB12_121 Depth 4
                                        #       Child Loop BB12_139 Depth 3
                                        #       Child Loop BB12_193 Depth 3
                                        #         Child Loop BB12_203 Depth 4
                                        #       Child Loop BB12_210 Depth 3
                                        #       Child Loop BB12_215 Depth 3
                                        #       Child Loop BB12_226 Depth 3
                                        #       Child Loop BB12_230 Depth 3
                                        #       Child Loop BB12_238 Depth 3
                                        #       Child Loop BB12_247 Depth 3
                                        #       Child Loop BB12_254 Depth 3
                                        #       Child Loop BB12_262 Depth 3
                                        #       Child Loop BB12_283 Depth 3
                                        #       Child Loop BB12_269 Depth 3
                                        #       Child Loop BB12_277 Depth 3
                                        #       Child Loop BB12_289 Depth 3
                                        #       Child Loop BB12_292 Depth 3
                                        #         Child Loop BB12_297 Depth 4
                                        #         Child Loop BB12_301 Depth 4
                                        #           Child Loop BB12_304 Depth 5
                                        #         Child Loop BB12_316 Depth 4
                                        #           Child Loop BB12_322 Depth 5
                                        #       Child Loop BB12_153 Depth 3
                                        #       Child Loop BB12_162 Depth 3
                                        #       Child Loop BB12_165 Depth 3
                                        #       Child Loop BB12_175 Depth 3
                                        #       Child Loop BB12_177 Depth 3
                                        #       Child Loop BB12_179 Depth 3
                                        #       Child Loop BB12_181 Depth 3
                                        #       Child Loop BB12_188 Depth 3
                                        #       Child Loop BB12_355 Depth 3
                                        #       Child Loop BB12_59 Depth 3
                                        #         Child Loop BB12_62 Depth 4
                                        #           Child Loop BB12_67 Depth 5
                                        #       Child Loop BB12_87 Depth 3
                                        #       Child Loop BB12_98 Depth 3
	movq	calc(%rip), %rcx
	movsd	80(%rcx), %xmm1                 # xmm1 = mem[0],zero
	movq	144(%rax), %rcx
	movq	24(%rcx), %rsi
	movq	40(%rcx), %rdx
	movslq	%ebx, %r14
	movsd	(%rdx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	subsd	%xmm0, %xmm1
	movsd	(%rsi,%r14,8), %xmm4            # xmm4 = mem[0],zero
	ucomisd	%xmm4, %xmm1
	jbe	.LBB12_361
# %bb.3:                                #   in Loop: Header=BB12_2 Depth=1
	movq	56(%rax), %rsi
	movq	16(%rsi), %rdi
	cmpl	$2, (%rdi,%r14,4)
	jl	.LBB12_361
# %bb.4:                                #   in Loop: Header=BB12_2 Depth=1
	movapd	%xmm4, %xmm1
	movq	24(%rsi), %rsi
	movslq	(%rsi,%r14,4), %rsi
	movq	%rsi, 96(%rsp)                  # 8-byte Spill
	cmpl	$1, 36(%rax)
	jne	.LBB12_5
# %bb.6:                                #   in Loop: Header=BB12_2 Depth=1
	cmpl	$0, 32(%rax)
	je	.LBB12_7
.LBB12_5:                               #   in Loop: Header=BB12_2 Depth=1
	movsd	%xmm2, 208(%rsp)                # 8-byte Spill
.LBB12_8:                               #   in Loop: Header=BB12_2 Depth=1
	addsd	%xmm1, %xmm1
	movsd	%xmm1, 184(%rsp)                # 8-byte Spill
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%rdx,%r14,8)
	movl	32(%rax), %edx
	cmpl	$1, %edx
	movsd	224(%rsp), %xmm2                # 8-byte Reload
                                        # xmm2 = mem[0],zero
	je	.LBB12_11
# %bb.9:                                #   in Loop: Header=BB12_2 Depth=1
	testl	%edx, %edx
	jne	.LBB12_20
# %bb.10:                               # %.thread
                                        #   in Loop: Header=BB12_2 Depth=1
	movq	8(%rcx), %rcx
	movsd	(%rcx,%r14,8), %xmm2            # xmm2 = mem[0],zero
	jmp	.LBB12_20
.LBB12_11:                              #   in Loop: Header=BB12_2 Depth=1
	movq	128(%rax), %rcx
	movsd	88(%rax), %xmm2                 # xmm2 = mem[0],zero
	movq	calc(%rip), %rdx
	mulsd	80(%rdx), %xmm2
	addsd	16(%rcx), %xmm2
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	movl	8(%rax), %ecx
	imull	12(%rax), %ecx
	subsd	%xmm0, %xmm2
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ecx, %xmm1
	divsd	%xmm1, %xmm2
	leal	-1(%rbx), %ecx
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ecx, %xmm1
	mulsd	%xmm2, %xmm1
	addsd	%xmm0, %xmm1
	addsd	%xmm1, %xmm2
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movapd	%xmm1, %xmm0
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	addsd	%xmm2, %xmm0
	mulsd	%xmm3, %xmm0
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	mulsd	80(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	.LCPI12_0(%rip), %xmm0
	movsd	%xmm0, 208(%rsp)                # 8-byte Spill
	movq	geom(%rip), %rax
	movl	24(%rax), %ecx
	testl	%ecx, %ecx
	je	.LBB12_12
# %bb.13:                               #   in Loop: Header=BB12_2 Depth=1
	movsd	224(%rsp), %xmm2                # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	8(%rsp), %xmm4                  # 8-byte Reload
                                        # xmm4 = mem[0],zero
	jmp	.LBB12_14
.LBB12_7:                               #   in Loop: Header=BB12_2 Depth=1
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	136(%rax), %rcx
	movq	8(%rcx), %rcx
	movq	96(%rsp), %rdx                  # 8-byte Reload
	movsd	(%rcx,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm1, 184(%rsp)                # 8-byte Spill
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	movsd	184(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	addsd	.LCPI12_0(%rip), %xmm0
	movsd	%xmm0, 208(%rsp)                # 8-byte Spill
	movq	geom(%rip), %rax
	movq	144(%rax), %rcx
	movq	40(%rcx), %rdx
	movsd	(%rdx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	jmp	.LBB12_8
.LBB12_12:                              #   in Loop: Header=BB12_2 Depth=1
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm2
	movsd	8(%rsp), %xmm4                  # 8-byte Reload
                                        # xmm4 = mem[0],zero
	subsd	%xmm4, %xmm2
.LBB12_14:                              #   in Loop: Header=BB12_2 Depth=1
	movapd	%xmm0, %xmm3
	mulsd	%xmm0, %xmm3
	movapd	%xmm4, %xmm1
	mulsd	%xmm4, %xmm1
	subsd	%xmm1, %xmm3
	mulsd	.LCPI12_2(%rip), %xmm3
	cmpl	$1, %ecx
	je	.LBB12_16
# %bb.15:                               #   in Loop: Header=BB12_2 Depth=1
	movapd	%xmm2, %xmm3
.LBB12_16:                              #   in Loop: Header=BB12_2 Depth=1
	cmpl	$2, %ecx
	jne	.LBB12_17
# %bb.18:                               #   in Loop: Header=BB12_2 Depth=1
	movsd	.LCPI12_3(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, 224(%rsp)                # 8-byte Spill
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_3(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	movsd	224(%rsp), %xmm2                # 8-byte Reload
                                        # xmm2 = mem[0],zero
	subsd	%xmm0, %xmm2
	mulsd	.LCPI12_4(%rip), %xmm2
	movq	geom(%rip), %rax
	jmp	.LBB12_19
.LBB12_17:                              #   in Loop: Header=BB12_2 Depth=1
	movapd	%xmm3, %xmm2
.LBB12_19:                              #   in Loop: Header=BB12_2 Depth=1
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
.LBB12_20:                              #   in Loop: Header=BB12_2 Depth=1
	movq	56(%rax), %rcx
	movq	16(%rcx), %rcx
	movl	(%rcx,%r14,4), %ecx
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ecx, %xmm1
	movq	144(%rax), %rdx
	decl	%ecx
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ecx, %xmm0
	mulsd	%xmm3, %xmm1
	mulsd	%xmm1, %xmm0
	mulsd	208(%rsp), %xmm0                # 8-byte Folded Reload
	movq	calc(%rip), %rcx
	mulsd	96(%rcx), %xmm0
	movq	16(%rdx), %rcx
	movq	32(%rdx), %rdx
	mulsd	(%rdx,%r14,8), %xmm0
	movsd	184(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm0
	movsd	%xmm2, 224(%rsp)                # 8-byte Spill
	divsd	%xmm2, %xmm0
	addsd	(%rcx,%r14,8), %xmm0
	cvttsd2si	%xmm0, %edx
	cvttpd2dq	%xmm0, %xmm1
	cvtdq2pd	%xmm1, %xmm1
	movapd	%xmm0, %xmm2
	subsd	%xmm1, %xmm2
	movsd	%xmm2, (%rcx,%r14,8)
	movl	%edx, 284(%rsp)                 # 4-byte Spill
	testl	%edx, %edx
	jle	.LBB12_21
# %bb.22:                               # %.preheader1219
                                        #   in Loop: Header=BB12_2 Depth=1
	movapd	%xmm4, %xmm1
	divsd	%xmm0, %xmm1
	movsd	%xmm1, 352(%rsp)                # 8-byte Spill
	movl	$1, %eax
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm4, %xmm1
	movq	96(%rsp), %rbx                  # 8-byte Reload
.LBB12_23:                              #   Parent Loop BB12_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB12_36 Depth 3
                                        #       Child Loop BB12_28 Depth 3
                                        #       Child Loop BB12_48 Depth 3
                                        #       Child Loop BB12_111 Depth 3
                                        #       Child Loop BB12_115 Depth 3
                                        #         Child Loop BB12_121 Depth 4
                                        #       Child Loop BB12_139 Depth 3
                                        #       Child Loop BB12_193 Depth 3
                                        #         Child Loop BB12_203 Depth 4
                                        #       Child Loop BB12_210 Depth 3
                                        #       Child Loop BB12_215 Depth 3
                                        #       Child Loop BB12_226 Depth 3
                                        #       Child Loop BB12_230 Depth 3
                                        #       Child Loop BB12_238 Depth 3
                                        #       Child Loop BB12_247 Depth 3
                                        #       Child Loop BB12_254 Depth 3
                                        #       Child Loop BB12_262 Depth 3
                                        #       Child Loop BB12_283 Depth 3
                                        #       Child Loop BB12_269 Depth 3
                                        #       Child Loop BB12_277 Depth 3
                                        #       Child Loop BB12_289 Depth 3
                                        #       Child Loop BB12_292 Depth 3
                                        #         Child Loop BB12_297 Depth 4
                                        #         Child Loop BB12_301 Depth 4
                                        #           Child Loop BB12_304 Depth 5
                                        #         Child Loop BB12_316 Depth 4
                                        #           Child Loop BB12_322 Depth 5
                                        #       Child Loop BB12_153 Depth 3
                                        #       Child Loop BB12_162 Depth 3
                                        #       Child Loop BB12_165 Depth 3
                                        #       Child Loop BB12_175 Depth 3
                                        #       Child Loop BB12_177 Depth 3
                                        #       Child Loop BB12_179 Depth 3
                                        #       Child Loop BB12_181 Depth 3
                                        #       Child Loop BB12_188 Depth 3
                                        #       Child Loop BB12_355 Depth 3
                                        #       Child Loop BB12_59 Depth 3
                                        #         Child Loop BB12_62 Depth 4
                                        #           Child Loop BB12_67 Depth 5
                                        #       Child Loop BB12_87 Depth 3
                                        #       Child Loop BB12_98 Depth 3
	movq	%rax, 360(%rsp)                 # 8-byte Spill
	movq	geom(%rip), %rcx
	movq	56(%rcx), %rax
	movq	16(%rax), %rdx
	movslq	132(%rsp), %rbp
	cmpl	$2, (%rdx,%rbp,4)
	movq	%rbp, 80(%rsp)                  # 8-byte Spill
	jne	.LBB12_26
# %bb.24:                               #   in Loop: Header=BB12_23 Depth=2
	movq	8(%rax), %rax
	movslq	(%rax,%rbp,4), %rdx
	movq	molecs(%rip), %rax
	movq	16(%rax), %rsi
	movq	24(%rax), %rdi
	movslq	4(%rsi,%rdx,4), %r14
	movl	8(%rsi,%rdx,4), %edx
	cmpl	(%rdi,%r14,4), %edx
	jne	.LBB12_47
# %bb.25:                               # %.thread1136
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	144(%rcx), %rax
	movq	40(%rax), %rax
	movsd	(%rax,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rax,%rbp,8)
	jmp	.LBB12_359
.LBB12_26:                              #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rdx
	movsd	%xmm0, 152(%rdx)
	movq	geom(%rip), %rcx
	movq	56(%rcx), %rax
	movq	8(%rax), %rsi
	movq	16(%rax), %rax
	movq	%rbp, %rdi
	movl	(%rax,%rbp,4), %ebp
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ebp, %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2si	%xmm1, %eax
	movslq	(%rsi,%rdi,4), %rsi
	movslq	%eax, %rdi
	addq	%rsi, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rsi
	movl	4(%rsi,%rdi,4), %r14d
	movslq	%r14d, %rbx
	cmpl	$0, 40(%rdx)
	je	.LBB12_27
# %bb.33:                               #   in Loop: Header=BB12_23 Depth=2
	testl	%ebp, %ebp
	jle	.LBB12_34
# %bb.35:                               # %.lr.ph
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	%r14, 176(%rsp)                 # 8-byte Spill
	cmpl	$30, %ebp
	movl	$30, %r14d
	cmovll	%ebp, %r14d
	negl	%r14d
	movl	$1, %r12d
	movl	$0, 64(%rsp)                    # 4-byte Folded Spill
	movsd	.LCPI12_6(%rip), %xmm0          # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.LBB12_36:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	cmpl	$29, %ebp
	jg	.LBB12_38
# %bb.37:                               #   in Loop: Header=BB12_36 Depth=3
	movq	56(%rcx), %rdx
	movq	8(%rdx), %rdx
	movq	80(%rsp), %rsi                  # 8-byte Reload
	movl	(%rdx,%rsi,4), %edx
	addl	%r12d, %edx
	jmp	.LBB12_39
.LBB12_38:                              #   in Loop: Header=BB12_36 Depth=3
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	geom(%rip), %rcx
	movq	56(%rcx), %rax
	movq	16(%rax), %rdx
	movq	80(%rsp), %rsi                  # 8-byte Reload
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%rdx,%rsi,4), %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2si	%xmm1, %edx
	movq	8(%rax), %rax
	movl	(%rax,%rsi,4), %eax
	addl	%eax, %edx
	incl	%edx
	movq	molecs(%rip), %rax
.LBB12_39:                              #   in Loop: Header=BB12_36 Depth=3
	movq	16(%rax), %rsi
	movslq	%edx, %rdx
	movl	(%rsi,%rdx,4), %edx
	cmpl	176(%rsp), %edx                 # 4-byte Folded Reload
	je	.LBB12_44
# %bb.40:                               #   in Loop: Header=BB12_36 Depth=3
	movq	24(%rax), %rsi
	cmpl	(%rsi,%rbx,4), %edx
	je	.LBB12_44
# %bb.41:                               #   in Loop: Header=BB12_36 Depth=3
	movslq	%edx, %rsi
	movq	40(%rax), %rdi
	movq	8(%rdi), %rdi
	movsd	(%rdi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rdi,%rsi,8), %xmm0
	andpd	.LCPI12_7(%rip), %xmm0
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_44
# %bb.42:                               #   in Loop: Header=BB12_36 Depth=3
	movsd	72(%rcx), %xmm1                 # xmm1 = mem[0],zero
	mulsd	.LCPI12_8(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB12_44
# %bb.43:                               #   in Loop: Header=BB12_36 Depth=3
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movl	%edx, 64(%rsp)                  # 4-byte Spill
.LBB12_44:                              #   in Loop: Header=BB12_36 Depth=3
	leal	(%r14,%r12), %edx
	incl	%edx
	movl	%r12d, %esi
	incl	%esi
	movl	%esi, %r12d
	cmpl	$1, %edx
	jne	.LBB12_36
# %bb.45:                               #   in Loop: Header=BB12_23 Depth=2
	movq	96(%rsp), %rbx                  # 8-byte Reload
	movq	176(%rsp), %r14                 # 8-byte Reload
	movl	64(%rsp), %edx                  # 4-byte Reload
	jmp	.LBB12_46
.LBB12_27:                              # %.preheader1216
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	80(%rsp), %rbp                  # 8-byte Reload
.LBB12_28:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	geom(%rip), %rcx
	movq	56(%rcx), %rax
	movq	8(%rax), %rsi
	movq	16(%rax), %rax
	movl	(%rax,%rbp,4), %edx
	xorps	%xmm1, %xmm1
	cvtsi2sd	%edx, %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2si	%xmm1, %eax
	movslq	(%rsi,%rbp,4), %rsi
	movslq	%eax, %rdi
	addq	%rsi, %rdi
	movq	molecs(%rip), %rax
	movq	16(%rax), %rsi
	movq	24(%rax), %r8
	movl	4(%rsi,%rdi,4), %esi
	cmpl	(%r8,%rbx,4), %esi
	jne	.LBB12_31
# %bb.29:                               #   in Loop: Header=BB12_28 Depth=3
	movl	%r14d, %esi
	testl	%edx, %edx
	jle	.LBB12_30
.LBB12_31:                              #   in Loop: Header=BB12_28 Depth=3
	cmpl	%r14d, %esi
	je	.LBB12_28
# %bb.32:                               #   in Loop: Header=BB12_23 Depth=2
	movq	96(%rsp), %rbx                  # 8-byte Reload
	movl	%esi, %edx
	jmp	.LBB12_47
.LBB12_34:                              #   in Loop: Header=BB12_23 Depth=2
	xorl	%edx, %edx
	movq	96(%rsp), %rbx                  # 8-byte Reload
.LBB12_46:                              # %.preheader1215
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	80(%rsp), %rbp                  # 8-byte Reload
.LBB12_47:                              # %.preheader1215
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	48(%rax), %rcx
	movslq	%r14d, %r12
	movl	%edx, 64(%rsp)                  # 4-byte Spill
	movslq	%edx, %rdi
	movl	$1, %edx
.LBB12_48:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rcx,%rdx,8), %rsi
	movsd	(%rsi,%r12,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rsi,%rdi,8), %xmm0
	movsd	%xmm0, 320(%rsp,%rdx,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB12_48
# %bb.49:                               #   in Loop: Header=BB12_23 Depth=2
	movq	%rdi, 56(%rsp)                  # 8-byte Spill
	movsd	328(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	336(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm1, 256(%rsp)                # 8-byte Spill
	movapd	%xmm1, %xmm3
	mulsd	%xmm1, %xmm3
	movsd	%xmm0, 264(%rsp)                # 8-byte Spill
	movapd	%xmm0, %xmm1
	mulsd	%xmm0, %xmm1
	addsd	%xmm1, %xmm3
	movsd	344(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, 272(%rsp)                # 8-byte Spill
	mulsd	%xmm0, %xmm0
	addsd	%xmm0, %xmm3
	xorps	%xmm2, %xmm2
	sqrtsd	%xmm3, %xmm2
	movq	gas(%rip), %rcx
	cmpl	$1, 424(%rcx)
	movq	%r14, 176(%rsp)                 # 8-byte Spill
	movq	%r12, 72(%rsp)                  # 8-byte Spill
	movsd	%xmm2, 216(%rsp)                # 8-byte Spill
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	jne	.LBB12_100
# %bb.50:                               #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movsd	%xmm1, 160(%rsp)                # 8-byte Spill
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	320(%rcx), %rax
	movq	16(%rax), %rdx
	movq	24(%rax), %rax
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	mulsd	.LCPI12_9(%rip), %xmm0
	movsd	(%rcx), %xmm1                   # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	divsd	%xmm1, %xmm0
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	addsd	.LCPI12_10(%rip), %xmm1
	callq	pow
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movq	gas(%rip), %rax
	mulsd	16(%rax), %xmm0
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	ucomisd	(%rax,%rbp,8), %xmm0
	jbe	.LBB12_52
# %bb.51:                               #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, (%rax,%rbp,8)
.LBB12_52:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rcx
	movsd	%xmm0, 152(%rcx)
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	(%rax,%rbp,8), %xmm1
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_103
# %bb.53:                               #   in Loop: Header=BB12_23 Depth=2
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdx
	movl	64(%rsp), %esi                  # 4-byte Reload
	cmpl	(%rdx,%r12,4), %esi
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	jne	.LBB12_54
# %bb.55:                               #   in Loop: Header=BB12_23 Depth=2
	movq	56(%rsp), %rsi                  # 8-byte Reload
	cmpl	(%rdx,%rsi,4), %r14d
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	jne	.LBB12_57
# %bb.56:                               #   in Loop: Header=BB12_23 Depth=2
	movl	$file_9+16, %edi
	movl	$.L.str.307, %esi
	movl	$19, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	file_9+16(%rip), %rax
	movq	-24(%rax), %rdi
	movl	$file_9+16, %eax
	addq	%rax, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$file_9+16, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movq	calc(%rip), %rcx
	movq	molecs(%rip), %rax
	jmp	.LBB12_57
.LBB12_100:                             #   in Loop: Header=BB12_23 Depth=2
	movq	8(%rax), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	(%rax,%r12,4), %xmm0
	movapd	.LCPI12_7(%rip), %xmm1          # xmm1 = [NaN,NaN]
	andpd	%xmm1, %xmm0
	cvttsd2si	%xmm0, %edi
	movl	%edi, 172(%rsp)
	movq	56(%rsp), %rdx                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	(%rax,%rdx,4), %xmm0
	andpd	%xmm1, %xmm0
	cvttsd2si	%xmm0, %esi
	movq	352(%rcx), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movl	%edi, 136(%rsp)                 # 4-byte Spill
	movslq	%edi, %rbx
	movq	(%rdx,%rbx,8), %rdx
	movl	%esi, 160(%rsp)                 # 4-byte Spill
	movslq	%esi, %rbp
	movsd	(%rdx,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm2, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	40(%rax), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movsd	(%rdx,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	.LCPI12_9(%rip), %xmm0
	movq	(%rcx,%rbx,8), %rcx
	movsd	(%rcx,%rbp,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	divsd	%xmm1, %xmm0
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	(%rax,%rbp,8), %xmm1            # xmm1 = mem[0],zero
	addsd	.LCPI12_10(%rip), %xmm1
	callq	pow
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	48(%rax), %rax
	movq	%rbx, 48(%rsp)                  # 8-byte Spill
	movq	(%rax,%rbx,8), %rax
	movq	%rbp, 40(%rsp)                  # 8-byte Spill
	mulsd	(%rax,%rbp,8), %xmm0
	movq	80(%rsp), %rbx                  # 8-byte Reload
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	ucomisd	(%rax,%rbx,8), %xmm0
	jbe	.LBB12_102
# %bb.101:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, (%rax,%rbx,8)
.LBB12_102:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rcx
	movsd	%xmm0, 152(%rcx)
	movq	geom(%rip), %rax
	movq	144(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	(%rax,%rbx,8), %xmm1
	ucomisd	%xmm0, %xmm1
	movl	$0, %ebp
	movq	96(%rsp), %rbx                  # 8-byte Reload
	jbe	.LBB12_103
# %bb.104:                              #   in Loop: Header=BB12_23 Depth=2
	movq	molecs(%rip), %rax
	movq	(%rax), %rdx
	cmpl	$0, (%rdx,%r12,4)
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	184(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	jle	.LBB12_359
# %bb.105:                              #   in Loop: Header=BB12_23 Depth=2
	movq	56(%rsp), %rsi                  # 8-byte Reload
	cmpl	$0, (%rdx,%rsi,4)
	jle	.LBB12_359
# %bb.106:                              #   in Loop: Header=BB12_23 Depth=2
	movq	24(%rax), %rdx
	movl	64(%rsp), %esi                  # 4-byte Reload
	cmpl	(%rdx,%r12,4), %esi
	jne	.LBB12_107
# %bb.108:                              #   in Loop: Header=BB12_23 Depth=2
	movq	56(%rsp), %rsi                  # 8-byte Reload
	cmpl	(%rdx,%rsi,4), %r14d
	movq	%rsi, %r14
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movq	48(%rsp), %r11                  # 8-byte Reload
	jne	.LBB12_110
# %bb.109:                              #   in Loop: Header=BB12_23 Depth=2
	movl	$file_9+16, %edi
	movl	$.L.str.307, %esi
	movl	$19, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	48(%rsp), %r11                  # 8-byte Reload
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movq	calc(%rip), %rcx
	movq	molecs(%rip), %rax
	jmp	.LBB12_110
.LBB12_103:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	jmp	.LBB12_358
.LBB12_54:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
.LBB12_57:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	224(%rcx), %xmm4                # xmm4 = mem[0],zero
	addsd	%xmm2, %xmm4
	movsd	%xmm4, 224(%rcx)
	movq	328(%rcx), %rcx
	movq	8(%rcx), %rcx
	movsd	8(%rcx), %xmm4                  # xmm4 = mem[0],zero
	addsd	.LCPI12_25(%rip), %xmm4
	movsd	%xmm4, 8(%rcx)
	movq	output(%rip), %rcx
	movq	64(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm4            # xmm4 = mem[0],zero
	addsd	%xmm2, %xmm4
	movsd	%xmm4, (%rdx,%rbx,8)
	movq	72(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm4            # xmm4 = mem[0],zero
	addsd	208(%rsp), %xmm4                # 8-byte Folded Reload
	movsd	%xmm4, (%rdx,%rbx,8)
	movq	40(%rax), %rdx
	movq	8(%rdx), %rdx
	movsd	(%rdx,%r12,8), %xmm4            # xmm4 = mem[0],zero
	movq	56(%rsp), %rsi                  # 8-byte Reload
	subsd	(%rdx,%rsi,8), %xmm4
	andpd	.LCPI12_7(%rip), %xmm4
	movq	80(%rcx), %rcx
	addsd	(%rcx,%rbx,8), %xmm4
	movsd	%xmm4, (%rcx,%rbx,8)
	movq	gas(%rip), %rcx
	movq	488(%rcx), %rdx
	movq	8(%rdx), %rdx
	cmpl	$0, 4(%rdx)
	movsd	216(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	jle	.LBB12_86
# %bb.58:                               #   in Loop: Header=BB12_23 Depth=2
	movsd	(%rcx), %xmm4                   # xmm4 = mem[0],zero
	mulsd	%xmm1, %xmm4
	mulsd	%xmm4, %xmm0
	movl	$1, %ebp
	movl	68(%rsp), %r13d
.LBB12_59:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB12_62 Depth 4
                                        #           Child Loop BB12_67 Depth 5
	cmpl	$1, %ebp
	movl	64(%rsp), %r15d                 # 4-byte Reload
	cmovel	%r14d, %r15d
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB12_72
# %bb.60:                               #   in Loop: Header=BB12_59 Depth=3
	movq	472(%rax), %rcx
	cmpl	$0, 4(%rcx)
	jle	.LBB12_72
# %bb.61:                               # %.lr.ph1359
                                        #   in Loop: Header=BB12_59 Depth=3
	movslq	%r15d, %r14
	movl	$1, %r12d
.LBB12_62:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_59 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB12_67 Depth 5
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	xorps	%xmm5, %xmm5
	cvtsi2sdl	(%rcx,%r14,4), %xmm5
	mulsd	%xmm3, %xmm5
	movq	360(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	24(%rcx), %rsi
	movq	(%rdx,%r12,8), %rdx
	movsd	8(%rdx), %xmm4                  # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm5
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	addsd	%xmm0, %xmm5
	movq	(%rsi,%r12,8), %rdx
	movsd	8(%rdx), %xmm1                  # xmm1 = mem[0],zero
	ucomisd	.LCPI12_28(%rip), %xmm1
	movsd	%xmm5, 8(%rsp)                  # 8-byte Spill
	jbe	.LBB12_64
# %bb.63:                               #   in Loop: Header=BB12_62 Depth=4
	mulsd	%xmm3, %xmm4
	divsd	%xmm4, %xmm5
	movapd	%xmm5, 112(%rsp)                # 16-byte Spill
	movq	32(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm2
	divsd	%xmm1, %xmm2
	movsd	%xmm2, 80(%rsp)                 # 8-byte Spill
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rcx
	divsd	(%rcx,%rbx,8), %xmm0
	movsd	%xmm0, 40(%rsp)                 # 8-byte Spill
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	8(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	movq	gas(%rip), %rax
	movq	352(%rax), %rcx
	movq	360(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, 136(%rsp)                # 8-byte Spill
	movq	24(%rcx), %rax
	movq	8(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	xorps	.LCPI12_17(%rip), %xmm1
	movsd	80(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	mulsd	136(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, 136(%rsp)                # 8-byte Spill
	movsd	40(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_18(%rip), %xmm1         # xmm1 = mem[0],zero
	callq	pow
	movapd	%xmm0, %xmm1
	movsd	.LCPI12_19(%rip), %xmm0         # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 40(%rsp)                 # 8-byte Spill
	movsd	80(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_26(%rip), %xmm1         # xmm1 = mem[0],zero
	callq	pow
	addsd	.LCPI12_19(%rip), %xmm0
	movsd	40(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movsd	136(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	mulsd	48(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	jmp	.LBB12_65
.LBB12_64:                              #   in Loop: Header=BB12_62 Depth=4
	movq	16(%rcx), %rax
	movq	(%rax,%r12,8), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	mulsd	%xmm3, %xmm4
	divsd	%xmm4, %xmm5
	addsd	%xmm2, %xmm5
	movapd	%xmm5, 112(%rsp)                # 16-byte Spill
.LBB12_65:                              #   in Loop: Header=BB12_62 Depth=4
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm2, %xmm1
	divsd	80(%rsp), %xmm1                 # 8-byte Folded Reload
	ucomisd	%xmm0, %xmm1
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	jbe	.LBB12_70
# %bb.66:                               # %.preheader
                                        #   in Loop: Header=BB12_62 Depth=4
	cvttpd2dq	112(%rsp), %xmm0        # 16-byte Folded Reload
	cvtdq2pd	%xmm0, %xmm0
	addsd	.LCPI12_21(%rip), %xmm0
	movapd	%xmm0, 80(%rsp)                 # 16-byte Spill
.LBB12_67:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_59 Depth=3
                                        #         Parent Loop BB12_62 Depth=4
                                        # =>        This Inner Loop Header: Depth=5
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	80(%rsp), %xmm0                 # 16-byte Folded Reload
	cvttsd2si	%xmm0, %eax
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	cvttpd2dq	%xmm0, %xmm0
	cvtdq2pd	%xmm0, %xmm1
	movl	%eax, (%rcx,%r14,4)
	mulsd	.LCPI12_11(%rip), %xmm1
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	.LBB12_67
# %bb.68:                               #   in Loop: Header=BB12_67 Depth=5
	movapd	%xmm1, 16(%rsp)                 # 16-byte Spill
	movapd	16(%rsp), %xmm1                 # 16-byte Reload
	divsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	8(%rax), %xmm1
	callq	pow
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	callq	rand
	movapd	16(%rsp), %xmm1                 # 16-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	112(%rsp), %xmm2                # 8-byte Reload
                                        # xmm2 = mem[0],zero
	ucomisd	%xmm0, %xmm2
	jbe	.LBB12_67
# %bb.69:                               #   in Loop: Header=BB12_62 Depth=4
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_70:                              #   in Loop: Header=BB12_62 Depth=4
	leaq	1(%r12), %r13
	movq	gas(%rip), %rax
	movq	472(%rax), %rcx
	movslq	4(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%r13, %r12
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	jl	.LBB12_62
# %bb.71:                               # %.loopexit1173.loopexit
                                        #   in Loop: Header=BB12_59 Depth=3
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	movq	176(%rsp), %r14                 # 8-byte Reload
	movq	72(%rsp), %r12                  # 8-byte Reload
.LBB12_72:                              # %.loopexit1173
                                        #   in Loop: Header=BB12_59 Depth=3
	movq	488(%rax), %rcx
	movq	8(%rcx), %rdx
	cmpl	$0, 4(%rdx)
	jle	.LBB12_81
# %bb.73:                               #   in Loop: Header=BB12_59 Depth=3
	movq	16(%rcx), %rcx
	cmpl	$0, 4(%rcx)
	movq	328(%rax), %rax
	movq	8(%rax), %rcx
	movsd	8(%rcx), %xmm3                  # xmm3 = mem[0],zero
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	je	.LBB12_75
# %bb.74:                               #   in Loop: Header=BB12_59 Depth=3
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	movq	16(%rax), %rcx
	movq	24(%rax), %rax
	movsd	8(%rcx), %xmm2                  # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm2
	addsd	%xmm2, %xmm3
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm1
	mulsd	8(%rax), %xmm1
	addsd	%xmm1, %xmm3
.LBB12_75:                              #   in Loop: Header=BB12_59 Depth=3
	divsd	%xmm3, %xmm2
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_76
# %bb.77:                               #   in Loop: Header=BB12_59 Depth=3
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movslq	%r15d, %rbx
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	addsd	(%rax,%rbx,8), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movq	gas(%rip), %rax
	movq	488(%rax), %rcx
	movq	8(%rcx), %rcx
	movl	4(%rcx), %ecx
	cmpl	$2, %ecx
	jne	.LBB12_79
# %bb.78:                               #   in Loop: Header=BB12_59 Depth=3
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movsd	.LCPI12_22(%rip), %xmm2         # xmm2 = mem[0],zero
	subsd	8(%rax), %xmm2
	movsd	.LCPI12_0(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm2, %xmm1
	callq	pow
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm2, %xmm1
	subsd	%xmm0, %xmm1
	movsd	%xmm1, 232(%rsp)
	jmp	.LBB12_80
.LBB12_76:                              #   in Loop: Header=BB12_59 Depth=3
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	jmp	.LBB12_81
.LBB12_79:                              #   in Loop: Header=BB12_59 Depth=3
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ecx, %xmm0
	mulsd	.LCPI12_1(%rip), %xmm0
	addsd	.LCPI12_19(%rip), %xmm0
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	8(%rax), %xmm1
	leaq	232(%rsp), %rdi
	callq	_Z3LBSddRd
	movsd	232(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_80:                              #   in Loop: Header=BB12_59 Depth=3
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movsd	%xmm1, (%rax,%rbx,8)
	subsd	%xmm1, %xmm0
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	movsd	.LCPI12_11(%rip), %xmm3         # xmm3 = mem[0],zero
	movq	96(%rsp), %rbx                  # 8-byte Reload
.LBB12_81:                              #   in Loop: Header=BB12_59 Depth=3
	incl	%ebp
	cmpl	$3, %ebp
	jne	.LBB12_59
# %bb.82:                               #   in Loop: Header=BB12_23 Depth=2
	movl	%r13d, 68(%rsp)
	addsd	%xmm0, %xmm0
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	8(%rax), %rax
	divsd	8(%rax), %xmm0
	xorpd	%xmm2, %xmm2
	ucomisd	%xmm2, %xmm0
	jb	.LBB12_84
# %bb.83:                               #   in Loop: Header=BB12_23 Depth=2
	xorps	%xmm4, %xmm4
	sqrtsd	%xmm0, %xmm4
	jmp	.LBB12_85
.LBB12_30:                              # %.loopexit1217.thread1637
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	144(%rcx), %rax
	movq	40(%rax), %rax
	movsd	(%rax,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	subsd	352(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, (%rax,%rbp,8)
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	184(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movq	96(%rsp), %rbx                  # 8-byte Reload
	jmp	.LBB12_359
.LBB12_84:                              # %call.sqrt
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	sqrt
	movsd	.LCPI12_1(%rip), %xmm1          # xmm1 = mem[0],zero
	movapd	%xmm0, %xmm4
.LBB12_85:                              # %.split
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	molecs(%rip), %rax
	movl	%r13d, %r15d
.LBB12_86:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm4, 8(%rsp)                  # 8-byte Spill
	movq	48(%rax), %rax
	movl	$1, %ecx
	movq	56(%rsp), %rsi                  # 8-byte Reload
.LBB12_87:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rax,%rcx,8), %rdx
	movsd	(%rdx,%r12,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%rdx,%rsi,8), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	%xmm0, 368(%rsp,%rcx,8)
	incq	%rcx
	cmpq	$4, %rcx
	jne	.LBB12_87
# %bb.88:                               #   in Loop: Header=BB12_23 Depth=2
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	movsd	.LCPI12_19(%rip), %xmm0         # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm1
	andpd	.LCPI12_7(%rip), %xmm1
	movapd	%xmm1, 16(%rsp)                 # 16-byte Spill
	callq	rand
	movsd	.LCPI12_23(%rip), %xmm0         # xmm0 = mem[0],zero
	ucomisd	16(%rsp), %xmm0                 # 16-byte Folded Reload
	xorps	%xmm2, %xmm2
	cvtsi2sd	%eax, %xmm2
	divsd	.LCPI12_5(%rip), %xmm2
	movq	calc(%rip), %rax
	movsd	%xmm2, 152(%rax)
	jbe	.LBB12_93
# %bb.89:                               #   in Loop: Header=BB12_23 Depth=2
	addsd	%xmm2, %xmm2
	addsd	.LCPI12_19(%rip), %xmm2
	movapd	%xmm2, %xmm1
	mulsd	%xmm2, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB12_91
# %bb.90:                               #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_92
.LBB12_93:                              #   in Loop: Header=BB12_23 Depth=2
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	movapd	%xmm2, %xmm0
	callq	pow
	addsd	%xmm0, %xmm0
	addsd	.LCPI12_19(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movapd	%xmm0, %xmm1
	mulsd	%xmm0, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB12_95
# %bb.94:                               #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_96
.LBB12_91:                              # %call.sqrt1945
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm2, 80(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	80(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB12_92:                              # %.split1944
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 296(%rsp)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI12_24(%rip), %xmm0
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	callq	cos
	mulsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 304(%rsp)
	movsd	80(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	movapd	%xmm0, %xmm6
	mulsd	16(%rsp), %xmm6                 # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm6                  # 8-byte Folded Reload
	jmp	.LBB12_97
.LBB12_95:                              # %call.sqrt1947
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	sqrt
.LBB12_96:                              # %.split1946
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI12_24(%rip), %xmm0
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	callq	cos
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	movsd	48(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	movsd	160(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	144(%rsp), %xmm1                # 8-byte Folded Reload
	sqrtsd	%xmm1, %xmm1
	movsd	216(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movsd	8(%rsp), %xmm8                  # 8-byte Reload
                                        # xmm8 = mem[0],zero
	divsd	%xmm4, %xmm8
	movsd	256(%rsp), %xmm7                # 8-byte Reload
                                        # xmm7 = mem[0],zero
	movapd	%xmm7, %xmm2
	movsd	16(%rsp), %xmm9                 # 8-byte Reload
                                        # xmm9 = mem[0],zero
	mulsd	%xmm9, %xmm2
	movsd	80(%rsp), %xmm10                # 8-byte Reload
                                        # xmm10 = mem[0],zero
	movapd	%xmm10, %xmm3
	mulsd	%xmm0, %xmm3
	mulsd	%xmm1, %xmm3
	addsd	%xmm2, %xmm3
	mulsd	%xmm8, %xmm3
	movsd	%xmm3, 296(%rsp)
	movsd	264(%rsp), %xmm6                # 8-byte Reload
                                        # xmm6 = mem[0],zero
	mulsd	%xmm6, %xmm9
	movsd	272(%rsp), %xmm5                # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movapd	%xmm5, %xmm2
	mulsd	%xmm4, %xmm2
	movsd	112(%rsp), %xmm11               # 8-byte Reload
                                        # xmm11 = mem[0],zero
	mulsd	%xmm11, %xmm2
	movapd	%xmm7, %xmm3
	mulsd	%xmm6, %xmm3
	mulsd	%xmm0, %xmm3
	subsd	%xmm3, %xmm2
	mulsd	%xmm10, %xmm2
	divsd	%xmm1, %xmm2
	addsd	%xmm9, %xmm2
	mulsd	%xmm8, %xmm2
	movsd	%xmm2, 304(%rsp)
	mulsd	%xmm4, %xmm6
	mulsd	%xmm11, %xmm6
	mulsd	%xmm5, %xmm7
	mulsd	%xmm0, %xmm7
	subsd	%xmm7, %xmm6
	mulsd	%xmm10, %xmm6
	divsd	%xmm1, %xmm6
	addsd	%xmm9, %xmm6
	mulsd	%xmm8, %xmm6
.LBB12_97:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm6, 312(%rsp)
	movq	molecs(%rip), %rax
	movq	48(%rax), %rcx
	movl	$1, %edx
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movq	56(%rsp), %rdi                  # 8-byte Reload
.LBB12_98:                              #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	368(%rsp,%rdx,8), %xmm0         # xmm0 = mem[0],zero
	movsd	288(%rsp,%rdx,8), %xmm1         # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	movapd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	movq	(%rcx,%rdx,8), %rsi
	movsd	%xmm2, (%rsi,%r12,8)
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rsi,%rdi,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB12_98
# %bb.99:                               #   in Loop: Header=BB12_23 Depth=2
	movq	24(%rax), %rax
	movl	64(%rsp), %ecx                  # 4-byte Reload
	movl	%ecx, (%rax,%r12,4)
	movl	%r14d, (%rax,%rdi,4)
.LBB12_357:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_358:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	184(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB12_359:                             #   in Loop: Header=BB12_23 Depth=2
	movq	360(%rsp), %rcx                 # 8-byte Reload
	leal	1(%rcx), %eax
	cmpl	284(%rsp), %ecx                 # 4-byte Folded Reload
                                        # kill: def $eax killed $eax def $rax
	jne	.LBB12_23
	jmp	.LBB12_360
.LBB12_107:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movq	56(%rsp), %r14                  # 8-byte Reload
	movq	48(%rsp), %r11                  # 8-byte Reload
.LBB12_110:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	224(%rcx), %xmm0                # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 224(%rcx)
	movq	328(%rcx), %rcx
	movq	(%rcx,%r11,8), %rdx
	movq	40(%rsp), %rsi                  # 8-byte Reload
	movsd	(%rdx,%rsi,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	%xmm0, (%rdx,%rsi,8)
	movq	(%rcx,%rsi,8), %rcx
	movsd	(%rcx,%r11,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	%xmm0, (%rcx,%r11,8)
	movq	output(%rip), %rcx
	movq	64(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	%xmm0, (%rdx,%rbx,8)
	movq	72(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	208(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, (%rdx,%rbx,8)
	movq	40(%rax), %rdx
	movq	8(%rdx), %rdx
	movsd	(%rdx,%r12,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rdx,%r14,8), %xmm0
	andpd	.LCPI12_7(%rip), %xmm0
	movq	80(%rcx), %rcx
	addsd	(%rcx,%rbx,8), %xmm0
	movsd	%xmm0, (%rcx,%rbx,8)
	movq	%r12, %rdi
	movq	gas(%rip), %r12
	movq	320(%r12), %rcx
	movq	352(%r12), %rdx
	movq	8(%rdx), %rdx
	movq	(%rdx,%r11,8), %rdx
	movsd	(%rdx,%rsi,8), %xmm6            # xmm6 = mem[0],zero
	movq	40(%rcx), %rcx
	movapd	%xmm6, %xmm0
	divsd	(%rcx,%rsi,8), %xmm0
	movapd	%xmm6, %xmm4
	divsd	(%rcx,%r11,8), %xmm4
	movq	48(%rax), %rcx
	movl	$1, %edx
.LBB12_111:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rcx,%rdx,8), %rsi
	movsd	(%rsi,%rdi,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	(%rsi,%r14,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	addsd	%xmm1, %xmm2
	movsd	%xmm2, 368(%rsp,%rdx,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB12_111
# %bb.112:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm4, 200(%rsp)                # 8-byte Spill
	movq	488(%r12), %rcx
	movq	8(%rcx), %rcx
	cmpl	$0, (%rcx,%r11,4)
	jg	.LBB12_114
# %bb.113:                              #   in Loop: Header=BB12_23 Depth=2
	movq	40(%rsp), %rdx                  # 8-byte Reload
	cmpl	$0, (%rcx,%rdx,4)
	jle	.LBB12_136
.LBB12_114:                             #   in Loop: Header=BB12_23 Depth=2
	mulsd	%xmm3, %xmm6
	mulsd	%xmm5, %xmm6
	xorl	%r14d, %r14d
	movl	$1, %r13d
	movsd	216(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
.LBB12_115:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB12_121 Depth 4
	cmpl	$1, %r13d
	movl	64(%rsp), %ecx                  # 4-byte Reload
	cmovel	176(%rsp), %ecx                 # 4-byte Folded Reload
	cmpl	$0, 428(%r12)
	jle	.LBB12_132
# %bb.116:                              #   in Loop: Header=BB12_115 Depth=3
	cmpl	$1, %r13d
	movl	160(%rsp), %edx                 # 4-byte Reload
	cmovel	136(%rsp), %edx                 # 4-byte Folded Reload
	movq	472(%r12), %rsi
	movslq	%edx, %rbx
	cmpl	$0, (%rsi,%rbx,4)
	jle	.LBB12_117
# %bb.118:                              # %.preheader1178
                                        #   in Loop: Header=BB12_115 Depth=3
	movq	472(%r12), %rdx
	cmpl	$0, (%rdx,%rbx,4)
	jle	.LBB12_119
# %bb.120:                              # %.lr.ph1250
                                        #   in Loop: Header=BB12_115 Depth=3
	movslq	%ecx, %rbp
	xorl	%r15d, %r15d
.LBB12_121:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_115 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	32(%rax), %rcx
	movq	8(%rcx,%r15,8), %rcx
	movl	(%rcx,%rbp,4), %ecx
	testl	%ecx, %ecx
	js	.LBB12_130
# %bb.122:                              #   in Loop: Header=BB12_121 Depth=4
	testl	%r14d, %r14d
	jne	.LBB12_130
# %bb.123:                              #   in Loop: Header=BB12_121 Depth=4
	xorps	%xmm7, %xmm7
	cvtsi2sd	%ecx, %xmm7
	movsd	.LCPI12_11(%rip), %xmm4         # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm7
	movq	360(%r12), %rcx
	movq	8(%rcx), %rdx
	movq	32(%rcx), %rcx
	movq	8(%rdx,%r15,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm7
	movapd	%xmm6, %xmm1
	addsd	%xmm7, %xmm1
	movq	8(%rcx,%r15,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm2            # xmm2 = mem[0],zero
	divsd	%xmm0, %xmm2
	mulsd	%xmm4, %xmm0
	divsd	%xmm0, %xmm1
	cvttsd2si	%xmm1, %ecx
	cvttsd2si	%xmm2, %edx
	xorl	%r14d, %r14d
	cmpl	%edx, %ecx
	jle	.LBB12_130
# %bb.124:                              #   in Loop: Header=BB12_121 Depth=4
	movsd	%xmm7, 112(%rsp)                # 8-byte Spill
	movsd	%xmm6, 8(%rsp)                  # 8-byte Spill
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %r12
	movq	360(%r12), %rcx
	movq	40(%rcx), %rax
	movq	8(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	movq	molecs(%rip), %rax
	jbe	.LBB12_125
# %bb.126:                              #   in Loop: Header=BB12_121 Depth=4
	movq	32(%rax), %rax
	movq	8(%rax,%r15,8), %rax
	movslq	(%rax,%rbp,4), %rax
	movq	output(%rip), %rdx
	movq	24(%rdx), %rdx
	incl	(%rdx,%rax,4)
	movq	32(%rcx), %rax
	movq	8(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	.LCPI12_12(%rip), %xmm0
	movsd	8(%rsp), %xmm6                  # 8-byte Reload
                                        # xmm6 = mem[0],zero
	addsd	%xmm0, %xmm6
	addsd	112(%rsp), %xmm6                # 8-byte Folded Reload
	movapd	%xmm6, %xmm5
	addsd	%xmm6, %xmm5
	movq	352(%r12), %rax
	movq	8(%rax), %rax
	movq	48(%rsp), %rcx                  # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	40(%rsp), %rcx                  # 8-byte Reload
	divsd	(%rax,%rcx,8), %xmm5
	xorpd	%xmm0, %xmm0
	ucomisd	%xmm0, %xmm5
	jb	.LBB12_128
# %bb.127:                              #   in Loop: Header=BB12_121 Depth=4
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm5, %xmm0
	jmp	.LBB12_129
.LBB12_125:                             #   in Loop: Header=BB12_121 Depth=4
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movsd	8(%rsp), %xmm6                  # 8-byte Reload
                                        # xmm6 = mem[0],zero
	jmp	.LBB12_130
.LBB12_128:                             # %call.sqrt1949
                                        #   in Loop: Header=BB12_121 Depth=4
	movapd	%xmm5, %xmm0
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	movsd	%xmm6, 8(%rsp)                  # 8-byte Spill
	callq	sqrt
	movsd	8(%rsp), %xmm6                  # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
.LBB12_129:                             # %.split1948
                                        #   in Loop: Header=BB12_121 Depth=4
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movq	molecs(%rip), %rax
	movq	32(%rax), %rcx
	movq	8(%rcx,%r15,8), %rcx
	movl	$-1, (%rcx,%rbp,4)
	movl	$1, %r14d
	movq	gas(%rip), %r12
.LBB12_130:                             #   in Loop: Header=BB12_121 Depth=4
	movq	472(%r12), %rcx
	movslq	(%rcx,%rbx,4), %rcx
	incq	%r15
	cmpq	%rcx, %r15
	jl	.LBB12_121
# %bb.131:                              # %.loopexit1179.loopexit
                                        #   in Loop: Header=BB12_115 Depth=3
	incl	%r15d
	xorl	%ebp, %ebp
	movq	96(%rsp), %rbx                  # 8-byte Reload
	movq	48(%rsp), %r11                  # 8-byte Reload
	jmp	.LBB12_132
.LBB12_119:                             #   in Loop: Header=BB12_115 Depth=3
	movl	$1, %r15d
.LBB12_117:                             #   in Loop: Header=BB12_115 Depth=3
	movq	96(%rsp), %rbx                  # 8-byte Reload
.LBB12_132:                             # %.loopexit1179
                                        #   in Loop: Header=BB12_115 Depth=3
	incl	%r13d
	cmpl	$3, %r13d
	jne	.LBB12_115
# %bb.133:                              #   in Loop: Header=BB12_23 Depth=2
	movl	%r15d, 68(%rsp)
	movl	%r15d, %r13d
	testl	%r14d, %r14d
	je	.LBB12_136
# %bb.134:                              #   in Loop: Header=BB12_23 Depth=2
	movl	%r15d, %edi
	movsd	.LCPI12_19(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	200(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
.LBB12_135:                             # %.thread1150._crit_edge
                                        #   in Loop: Header=BB12_23 Depth=2
	movslq	136(%rsp), %rbp                 # 4-byte Folded Reload
	movslq	160(%rsp), %rcx                 # 4-byte Folded Reload
	movl	%r15d, %r13d
	movl	%edi, %r15d
.LBB12_345:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm4, 200(%rsp)                # 8-byte Spill
	movq	352(%r12), %rax
	movq	64(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm3, %xmm0
	andpd	.LCPI12_7(%rip), %xmm0
	movsd	.LCPI12_23(%rip), %xmm1         # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_350
# %bb.346:                              #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm2, %xmm2
	cvtsi2sd	%eax, %xmm2
	divsd	.LCPI12_5(%rip), %xmm2
	movq	calc(%rip), %rax
	movsd	%xmm2, 152(%rax)
	addsd	%xmm2, %xmm2
	addsd	.LCPI12_19(%rip), %xmm2
	movapd	%xmm2, %xmm1
	mulsd	%xmm2, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	movq	176(%rsp), %r14                 # 8-byte Reload
	movq	72(%rsp), %r12                  # 8-byte Reload
	jb	.LBB12_348
# %bb.347:                              #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_349
.LBB12_136:                             # %.thread1142
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	520(%r12), %rax
	movq	(%rax,%r11,8), %rax
	movq	40(%rsp), %rcx                  # 8-byte Reload
	cmpl	$0, (%rax,%rcx,4)
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	jle	.LBB12_145
# %bb.137:                              #   in Loop: Header=BB12_23 Depth=2
	movq	geom(%rip), %rax
	movq	56(%rax), %rax
	movq	16(%rax), %rax
	movq	80(%rsp), %rcx                  # 8-byte Reload
	cmpl	$3, (%rax,%rcx,4)
	jl	.LBB12_145
# %bb.138:                              # %.preheader1214.preheader
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	176(%rsp), %r14                 # 8-byte Reload
	movl	64(%rsp), %r12d                 # 4-byte Reload
.LBB12_139:                             # %.preheader1214
                                        #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	geom(%rip), %rax
	movq	56(%rax), %rax
	movq	16(%rax), %rcx
	movq	80(%rsp), %rdx                  # 8-byte Reload
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%rcx,%rdx,4), %xmm1
	mulsd	%xmm0, %xmm1
	cvttsd2si	%xmm1, %ecx
	movq	8(%rax), %rax
	movslq	(%rax,%rdx,4), %rax
	movslq	%ecx, %rcx
	addq	%rax, %rcx
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdx
	movl	4(%rdx,%rcx,4), %ecx
	cmpl	%r14d, %ecx
	je	.LBB12_139
# %bb.140:                              # %.preheader1214
                                        #   in Loop: Header=BB12_139 Depth=3
	cmpl	%r12d, %ecx
	je	.LBB12_139
# %bb.141:                              #   in Loop: Header=BB12_23 Depth=2
	movl	%ecx, 196(%rsp)                 # 4-byte Spill
	movslq	%ecx, %rdx
	movq	8(%rax), %rax
	movq	gas(%rip), %rcx
	movq	320(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	48(%rsp), %r12                  # 8-byte Reload
	movsd	(%rcx,%r12,8), %xmm0            # xmm0 = mem[0],zero
	movq	40(%rsp), %rsi                  # 8-byte Reload
	addsd	(%rcx,%rsi,8), %xmm0
	movq	%rdx, 248(%rsp)                 # 8-byte Spill
	movl	(%rax,%rdx,4), %eax
	movl	%eax, 240(%rsp)                 # 4-byte Spill
	movslq	%eax, %r14
	addsd	(%rcx,%r14,8), %xmm0
	movsd	.LCPI12_3(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	mulsd	.LCPI12_13(%rip), %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	400(%rax), %rdx
	movq	8(%rdx), %rsi
	movq	(%rsi,%r12,8), %rsi
	movq	40(%rsp), %rdi                  # 8-byte Reload
	movq	(%rsi,%rdi,8), %rsi
	mulsd	(%rsi,%r14,8), %xmm0
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	movq	output(%rip), %rsi
	movq	136(%rsi), %rsi
	movq	64(%rsi), %rsi
	movsd	(%rsi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	%rdi, %rbx
	movq	8(%rcx), %rcx
	movq	528(%rax), %rsi
	movq	(%rsi,%r12,8), %rsi
	movslq	(%rsi,%rdi,4), %rsi
	movq	(%rcx,%rsi,8), %rcx
	movq	520(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movslq	(%rax,%rdi,4), %rax
	divsd	(%rcx,%rax,8), %xmm0
	movq	16(%rdx), %rax
	movq	(%rax,%r12,8), %rax
	movq	(%rax,%rdi,8), %rax
	movq	%r14, 8(%rsp)                   # 8-byte Spill
	movsd	(%rax,%r14,8), %xmm1            # xmm1 = mem[0],zero
	callq	pow
	mulsd	112(%rsp), %xmm0                # 8-byte Folded Reload
	movq	geom(%rip), %rax
	movq	56(%rax), %rax
	movq	16(%rax), %rax
	movq	80(%rsp), %rcx                  # 8-byte Reload
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%rax,%rcx,4), %xmm1
	mulsd	%xmm0, %xmm1
	movq	calc(%rip), %rax
	mulsd	96(%rax), %xmm1
	divsd	224(%rsp), %xmm1                # 8-byte Folded Reload
	movsd	%xmm1, 80(%rsp)                 # 8-byte Spill
	ucomisd	.LCPI12_0(%rip), %xmm1
	jbe	.LBB12_143
# %bb.142:                              #   in Loop: Header=BB12_23 Depth=2
	movl	$_ZSt4cout, %edi
	movl	$.L.str.308, %esi
	movl	$22, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movsd	80(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
.LBB12_143:                             #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	80(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	movq	gas(%rip), %r12
	jbe	.LBB12_144
# %bb.147:                              #   in Loop: Header=BB12_23 Depth=2
	movq	296(%rax), %rax
	movq	520(%r12), %rcx
	movq	48(%rsp), %rsi                  # 8-byte Reload
	movq	(%rcx,%rsi,8), %rdi
	movslq	(%rdi,%rbx,4), %rcx
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	.LCPI12_0(%rip), %xmm0
	movsd	%xmm0, (%rax,%rcx,8)
	movq	352(%r12), %rax
	movq	488(%r12), %rcx
	movq	8(%rax), %rax
	movq	%rax, 80(%rsp)                  # 8-byte Spill
	movq	(%rax,%rsi,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm2          # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm0
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	mulsd	%xmm0, %xmm3
	movq	8(%rcx), %rax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	cmpl	$0, (%rax,%rsi,4)
	movq	molecs(%rip), %rcx
	jle	.LBB12_149
# %bb.148:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %rdx
	movq	72(%rsp), %rax                  # 8-byte Reload
	addsd	(%rdx,%rax,8), %xmm3
.LBB12_149:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_11(%rip), %xmm1         # xmm1 = mem[0],zero
	movl	452(%r12), %r8d
	cmpl	$2, %r8d
	jl	.LBB12_151
# %bb.150:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rdx
	movq	72(%rsp), %rax                  # 8-byte Reload
	addsd	(%rdx,%rax,8), %xmm3
.LBB12_151:                             #   in Loop: Header=BB12_23 Depth=2
	movq	472(%r12), %rdx
	movl	(%rdx,%rsi,4), %r9d
	testl	%r9d, %r9d
	jle	.LBB12_154
# %bb.152:                              # %.preheader1212
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r10
	movq	360(%r12), %r11
	movq	8(%r11), %r11
	incq	%r9
	movl	$1, %ebx
	movq	72(%rsp), %rax                  # 8-byte Reload
	movq	48(%rsp), %rsi                  # 8-byte Reload
.LBB12_153:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r10,%rbx,8), %r14
	movl	(%r14,%rax,4), %ebp
	movl	%ebp, %r14d
	negl	%r14d
	cmovsl	%ebp, %r14d
	xorl	%ebp, %ebp
	cmpl	$99999, %r14d                   # imm = 0x1869F
	cmovel	%ebp, %r14d
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r14d, %xmm0
	mulsd	%xmm1, %xmm0
	movq	(%r11,%rbx,8), %r14
	mulsd	(%r14,%rsi,8), %xmm0
	addsd	%xmm0, %xmm3
	incq	%rbx
	cmpq	%rbx, %r9
	jne	.LBB12_153
.LBB12_154:                             # %.loopexit1213
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	40(%rsp), %rbx                  # 8-byte Reload
	movq	16(%rsp), %rax                  # 8-byte Reload
	cmpl	$0, (%rax,%rbx,4)
	jle	.LBB12_155
# %bb.156:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %r9
	movq	56(%rsp), %rax                  # 8-byte Reload
	addsd	(%r9,%rax,8), %xmm3
	jmp	.LBB12_157
.LBB12_350:                             #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	32(%rax), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	callq	pow
	addsd	%xmm0, %xmm0
	addsd	.LCPI12_19(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movapd	%xmm0, %xmm1
	mulsd	%xmm0, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	movq	176(%rsp), %r14                 # 8-byte Reload
	movq	72(%rsp), %r12                  # 8-byte Reload
	jb	.LBB12_352
# %bb.351:                              #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_353
.LBB12_348:                             # %call.sqrt1954
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	16(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB12_349:                             # %.split1953
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	mulsd	144(%rsp), %xmm2                # 8-byte Folded Reload
	movsd	%xmm2, 296(%rsp)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI12_24(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	callq	cos
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	mulsd	144(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, 304(%rsp)
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	movapd	%xmm0, %xmm4
	mulsd	8(%rsp), %xmm4                  # 8-byte Folded Reload
	mulsd	144(%rsp), %xmm4                # 8-byte Folded Reload
	jmp	.LBB12_354
.LBB12_352:                             # %call.sqrt1956
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	sqrt
.LBB12_353:                             # %.split1955
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	216(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	144(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movsd	%xmm1, 144(%rsp)                # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI12_24(%rip), %xmm0
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	callq	cos
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	movsd	112(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	movsd	264(%rsp), %xmm5                # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movapd	%xmm5, %xmm1
	mulsd	%xmm5, %xmm1
	movsd	272(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movapd	%xmm4, %xmm2
	mulsd	%xmm4, %xmm2
	addsd	%xmm1, %xmm2
	xorps	%xmm1, %xmm1
	sqrtsd	%xmm2, %xmm1
	movsd	8(%rsp), %xmm7                  # 8-byte Reload
                                        # xmm7 = mem[0],zero
	movapd	%xmm7, %xmm2
	movsd	256(%rsp), %xmm6                # 8-byte Reload
                                        # xmm6 = mem[0],zero
	mulsd	%xmm6, %xmm2
	movsd	16(%rsp), %xmm8                 # 8-byte Reload
                                        # xmm8 = mem[0],zero
	movapd	%xmm8, %xmm3
	mulsd	%xmm0, %xmm3
	mulsd	%xmm1, %xmm3
	addsd	%xmm2, %xmm3
	movsd	144(%rsp), %xmm9                # 8-byte Reload
                                        # xmm9 = mem[0],zero
	mulsd	%xmm9, %xmm3
	movsd	%xmm3, 296(%rsp)
	movapd	%xmm7, %xmm2
	mulsd	%xmm5, %xmm2
	movsd	216(%rsp), %xmm10               # 8-byte Reload
                                        # xmm10 = mem[0],zero
	movapd	%xmm10, %xmm3
	mulsd	%xmm4, %xmm3
	movsd	80(%rsp), %xmm11                # 8-byte Reload
                                        # xmm11 = mem[0],zero
	mulsd	%xmm11, %xmm3
	mulsd	%xmm5, %xmm10
	mulsd	%xmm6, %xmm5
	mulsd	%xmm0, %xmm5
	subsd	%xmm5, %xmm3
	mulsd	%xmm8, %xmm3
	divsd	%xmm1, %xmm3
	addsd	%xmm2, %xmm3
	mulsd	%xmm9, %xmm3
	movsd	%xmm3, 304(%rsp)
	mulsd	%xmm4, %xmm7
	mulsd	%xmm11, %xmm10
	mulsd	%xmm6, %xmm4
	mulsd	%xmm0, %xmm4
	addsd	%xmm10, %xmm4
	mulsd	%xmm8, %xmm4
	divsd	%xmm1, %xmm4
	addsd	%xmm7, %xmm4
	mulsd	%xmm9, %xmm4
.LBB12_354:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm4, 312(%rsp)
	movq	molecs(%rip), %rcx
	movq	48(%rcx), %rdx
	movslq	64(%rsp), %rax                  # 4-byte Folded Reload
	movl	$1, %esi
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	200(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
.LBB12_355:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	368(%rsp,%rsi,8), %xmm0         # xmm0 = mem[0],zero
	movsd	288(%rsp,%rsi,8), %xmm1         # xmm1 = mem[0],zero
	mulsd	%xmm4, %xmm1
	movapd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	movq	(%rdx,%rsi,8), %rdi
	movsd	%xmm2, (%rdi,%r12,8)
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rdi,%rax,8)
	incq	%rsi
	cmpq	$4, %rsi
	jne	.LBB12_355
# %bb.356:                              #   in Loop: Header=BB12_23 Depth=2
	movq	24(%rcx), %rcx
	movl	%eax, (%rcx,%r12,4)
	movl	%r14d, (%rcx,%rax,4)
	jmp	.LBB12_357
.LBB12_144:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movq	48(%rsp), %r11                  # 8-byte Reload
.LBB12_145:                             # %.loopexit1202
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	552(%r12), %rax
	movq	(%rax,%r11,8), %rax
	xorl	%r15d, %r15d
	movq	40(%rsp), %rbx                  # 8-byte Reload
	cmpl	$0, (%rax,%rbx,4)
	jle	.LBB12_146
# %bb.190:                              # %.preheader1201
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	444(%r12), %eax
	testl	%eax, %eax
	js	.LBB12_192
# %bb.191:                              # %.lr.ph1285
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	288(%r12), %rdi
	leaq	8(,%rax,8), %rdx
	xorl	%esi, %esi
	callq	memset@PLT
	movq	48(%rsp), %r11                  # 8-byte Reload
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
.LBB12_192:                             # %.lr.ph1297.preheader
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	$1, %r9d
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_193:                             # %.lr.ph1297
                                        #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB12_203 Depth 4
	movq	584(%r12), %rax
	movq	(%rax,%r9,8), %rax
	movq	8(%rax), %rcx
	movq	(%rcx,%r11,8), %rcx
	cmpl	%r11d, (%rcx,%rbx,4)
	movq	392(%r12), %rcx
	movl	136(%rsp), %edx                 # 4-byte Reload
	movl	%edx, %esi
	movl	160(%rsp), %edi                 # 4-byte Reload
	cmovel	%edi, %esi
	cmovel	%edx, %edi
	movl	64(%rsp), %edx                  # 4-byte Reload
	cmovel	176(%rsp), %edx                 # 4-byte Folded Reload
	movq	24(%rcx), %r8
	movq	%r9, 112(%rsp)                  # 8-byte Spill
	movq	(%r8,%r9,8), %r8
	movq	(%r8,%r11,8), %r9
	movsd	(%r9,%rbx,8), %xmm0             # xmm0 = mem[0],zero
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_195
# %bb.194:                              #   in Loop: Header=BB12_193 Depth=3
	movq	40(%rax), %r9
	movq	(%r9,%r11,8), %r9
	movl	(%r9,%rbx,4), %r13d
.LBB12_195:                             #   in Loop: Header=BB12_193 Depth=3
	ucomisd	.LCPI12_28(%rip), %xmm0
	jbe	.LBB12_197
# %bb.196:                              #   in Loop: Header=BB12_193 Depth=3
	movq	56(%rax), %r9
	movq	(%r9,%r11,8), %r9
	movl	(%r9,%rbx,4), %r13d
.LBB12_197:                             #   in Loop: Header=BB12_193 Depth=3
	movq	molecs(%rip), %r9
	movq	32(%r9), %r9
	movslq	%r13d, %r15
	movq	(%r9,%r15,8), %r9
	movslq	%edx, %rdx
	movl	(%r9,%rdx,4), %edx
	movl	%edx, %r9d
	negl	%r9d
	cmovsl	%edx, %r9d
	cmpl	$99999, %r9d                    # imm = 0x1869F
	cmovel	%ebp, %r9d
	movq	352(%r12), %rdx
	movq	8(%rdx), %r10
	movq	(%r10,%r11,8), %r10
	movsd	(%r10,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	xorps	%xmm6, %xmm6
	cvtsi2sd	%r9d, %xmm6
	mulsd	%xmm3, %xmm0
	movsd	.LCPI12_11(%rip), %xmm4         # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm6
	movslq	%edi, %r14
	movq	(%r8,%r14,8), %rdi
	movslq	%esi, %rbx
	movsd	(%rdi,%rbx,8), %xmm7            # xmm7 = mem[0],zero
	ucomisd	.LCPI12_28(%rip), %xmm7
	jbe	.LBB12_199
# %bb.198:                              #   in Loop: Header=BB12_193 Depth=3
	movq	8(%rcx), %rax
	movq	16(%rcx), %rcx
	movq	112(%rsp), %rbp                 # 8-byte Reload
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	movq	96(%rsp), %r15                  # 8-byte Reload
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	divsd	.LCPI12_15(%rip), %xmm0
	movq	(%rcx,%rbp,8), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	callq	pow
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %rax
	movq	392(%rax), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%r15,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	.LCPI12_12(%rip), %xmm1
	divsd	%xmm1, %xmm0
	callq	exp
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	jmp	.LBB12_206
.LBB12_199:                             #   in Loop: Header=BB12_193 Depth=3
	movq	360(%r12), %rsi
	mulsd	%xmm5, %xmm0
	movq	8(%rsi), %rsi
	movq	(%rsi,%r15,8), %rsi
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm6
	addsd	%xmm0, %xmm6
	mulsd	%xmm4, %xmm1
	andpd	.LCPI12_7(%rip), %xmm7
	ucomisd	%xmm7, %xmm6
	movq	112(%rsp), %rbp                 # 8-byte Reload
	jbe	.LBB12_207
# %bb.200:                              #   in Loop: Header=BB12_193 Depth=3
	movapd	%xmm6, %xmm0
	divsd	%xmm1, %xmm0
	cvttsd2si	%xmm0, %r12d
	movq	48(%rcx), %rcx
	movq	(%rcx,%rbp,8), %rcx
	movq	(%rcx,%r14,8), %rcx
	addsd	(%rcx,%rbx,8), %xmm7
	testl	%r12d, %r12d
	js	.LBB12_201
# %bb.202:                              # %.lr.ph1290.preheader
                                        #   in Loop: Header=BB12_193 Depth=3
	movapd	%xmm7, 144(%rsp)                # 16-byte Spill
	incl	%r12d
	xorl	%ebp, %ebp
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	%xmm6, 80(%rsp)                 # 8-byte Spill
.LBB12_203:                             # %.lr.ph1290
                                        #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_193 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ebp, %xmm0
	mulsd	.LCPI12_12(%rip), %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	8(%rcx), %rcx
	movq	(%rcx,%r15,8), %rcx
	mulsd	(%rcx,%r14,8), %xmm0
	movq	352(%rax), %rax
	divsd	%xmm6, %xmm0
	addsd	%xmm2, %xmm0
	movq	24(%rax), %rax
	movq	(%rax,%r14,8), %rax
	subsd	(%rax,%rbx,8), %xmm1
	callq	pow
	movsd	80(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	8(%rsp), %xmm3                  # 8-byte Reload
                                        # xmm3 = mem[0],zero
	addsd	%xmm0, %xmm3
	movsd	%xmm3, 8(%rsp)                  # 8-byte Spill
	incl	%ebp
	cmpl	%ebp, %r12d
	jne	.LBB12_203
# %bb.204:                              # %._crit_edge1291.loopexit
                                        #   in Loop: Header=BB12_193 Depth=3
	movq	gas(%rip), %rax
	movq	352(%rax), %rdx
	movq	584(%rax), %rax
	movq	112(%rsp), %rcx                 # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	48(%rsp), %r11                  # 8-byte Reload
	movapd	144(%rsp), %xmm7                # 16-byte Reload
	jmp	.LBB12_205
.LBB12_201:                             #   in Loop: Header=BB12_193 Depth=3
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
.LBB12_205:                             # %._crit_edge1291
                                        #   in Loop: Header=BB12_193 Depth=3
	movq	48(%rax), %rax
	movq	(%rax,%r11,8), %rax
	movq	40(%rsp), %rcx                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	(%rax,%rcx,4), %xmm0
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	divsd	%xmm6, %xmm7
	movapd	%xmm2, %xmm0
	subsd	%xmm7, %xmm0
	movq	24(%rdx), %rax
	movq	(%rax,%r14,8), %rax
	subsd	(%rax,%rbx,8), %xmm1
	callq	pow
	mulsd	144(%rsp), %xmm0                # 8-byte Folded Reload
	divsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movq	112(%rsp), %rbp                 # 8-byte Reload
.LBB12_206:                             # %.sink.split
                                        #   in Loop: Header=BB12_193 Depth=3
	movq	gas(%rip), %r12
	movq	288(%r12), %rax
	movsd	%xmm0, (%rax,%rbp,8)
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movq	48(%rsp), %r11                  # 8-byte Reload
.LBB12_207:                             #   in Loop: Header=BB12_193 Depth=3
	leaq	1(%rbp), %r15
	movq	552(%r12), %rax
	movq	(%rax,%r11,8), %rax
	movq	40(%rsp), %rbx                  # 8-byte Reload
	movslq	(%rax,%rbx,4), %rax
	cmpq	%rax, %rbp
	movq	%r15, %r9
	movq	56(%rsp), %r14                  # 8-byte Reload
	movl	$0, %ebp
	jl	.LBB12_193
# %bb.208:                              # %._crit_edge1298
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%eax, %eax
	movl	%r13d, 68(%rsp)
	cmpl	$2, %eax
	jl	.LBB12_220
# %bb.209:                              # %.preheader1199
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	288(%r12), %rcx
	incq	%rax
	xorpd	%xmm0, %xmm0
	movl	$1, %edx
.LBB12_210:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	addsd	(%rcx,%rdx,8), %xmm0
	incq	%rdx
	cmpq	%rdx, %rax
	jne	.LBB12_210
# %bb.211:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	movq	gas(%rip), %r12
	movl	$0, %r15d
	jbe	.LBB12_212
# %bb.213:                              # %.preheader1198
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	552(%r12), %rax
	movq	48(%rsp), %rsi                  # 8-byte Reload
	movq	(%rax,%rsi,8), %rax
	movl	(%rax,%rbx,4), %ecx
	testl	%ecx, %ecx
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	jle	.LBB12_291
# %bb.214:                              # %.lr.ph1307
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	288(%r12), %rdx
	xorpd	%xmm1, %xmm1
	xorl	%eax, %eax
.LBB12_215:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	addsd	8(%rdx,%rax,8), %xmm1
	incq	%rax
	ucomisd	%xmm0, %xmm1
	ja	.LBB12_217
# %bb.216:                              #   in Loop: Header=BB12_215 Depth=3
	cmpq	%rcx, %rax
	jb	.LBB12_215
.LBB12_217:                             # %._crit_edge1308.loopexit
                                        #   in Loop: Header=BB12_23 Depth=2
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_291
# %bb.218:                              # %._crit_edge1308
                                        #   in Loop: Header=BB12_23 Depth=2
	testl	%eax, %eax
	jle	.LBB12_219
# %bb.223:                              # %._crit_edge1308..thread1153_crit_edge
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%eax, %r15d
	jmp	.LBB12_224
.LBB12_146:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	jmp	.LBB12_291
.LBB12_220:                             #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %r12
	movq	288(%r12), %rax
	movsd	8(%rax), %xmm1                  # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_221
# %bb.222:                              #   in Loop: Header=BB12_23 Depth=2
	movl	$1, %eax
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movq	48(%rsp), %rsi                  # 8-byte Reload
.LBB12_224:                             # %.thread1153
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	280(%r12), %rcx
	movq	576(%r12), %rdx
	movl	%eax, %edi
	movq	(%rdx,%rdi,8), %rax
	movq	(%rax,%rsi,8), %rax
	movslq	(%rax,%rbx,4), %rax
	movsd	(%rcx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	%xmm0, (%rcx,%rax,8)
	movq	584(%r12), %rax
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	movq	(%rax,%rdi,8), %rdi
	movq	24(%rdi), %rcx
	movq	(%rcx,%rsi,8), %rcx
	movl	(%rcx,%rbx,4), %edx
	movq	molecs(%rip), %rcx
	movq	8(%rcx), %rbp
	movq	72(%rsp), %rax                  # 8-byte Reload
	movl	%edx, (%rbp,%rax,4)
	movq	%rdi, 144(%rsp)                 # 8-byte Spill
	movq	32(%rdi), %rdx
	movq	(%rdx,%rsi,8), %rdx
	movl	(%rdx,%rbx,4), %edx
	movl	%edx, (%rbp,%r14,4)
	movq	472(%r12), %rdx
	movslq	(%rdx,%rsi,4), %r11
	movq	24(%rcx), %rsi
	movslq	(%rsi,%rax,4), %r8
	movl	(%rdx,%r8,4), %r8d
	cmpl	%r11d, %r8d
	xorpd	%xmm2, %xmm2
	jle	.LBB12_228
# %bb.225:                              # %.preheader1196
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r10
	leal	1(%r8), %r9d
	leaq	(%r10,%r11,8), %r10
	addq	$8, %r10
	subl	%r11d, %r8d
	xorl	%r11d, %r11d
	movq	72(%rsp), %rax                  # 8-byte Reload
.LBB12_226:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r10,%r11,8), %rbx
	movl	$0, (%rbx,%rax,4)
	incq	%r11
	cmpl	%r11d, %r8d
	jne	.LBB12_226
# %bb.227:                              # %.loopexit1197
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%r9d, 68(%rsp)
	movq	40(%rsp), %rbx                  # 8-byte Reload
.LBB12_228:                             #   in Loop: Header=BB12_23 Depth=2
	movslq	(%rdx,%rbx,4), %r10
	movslq	(%rsi,%r14,4), %rsi
	movl	(%rdx,%rsi,4), %esi
	cmpl	%r10d, %esi
	jle	.LBB12_232
# %bb.229:                              # %.preheader1194
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r9
	leal	1(%rsi), %r8d
	leaq	(%r9,%r10,8), %r9
	addq	$8, %r9
	subl	%r10d, %esi
	xorl	%r10d, %r10d
.LBB12_230:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r9,%r10,8), %r11
	movl	$0, (%r11,%r14,4)
	incq	%r10
	cmpl	%r10d, %esi
	jne	.LBB12_230
# %bb.231:                              # %.loopexit1195
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%r8d, 68(%rsp)
.LBB12_232:                             #   in Loop: Header=BB12_23 Depth=2
	movq	352(%r12), %rsi
	movq	488(%r12), %r9
	movq	8(%rsi), %rax
	movq	48(%rsp), %rdi                  # 8-byte Reload
	movq	%rax, 112(%rsp)                 # 8-byte Spill
	movq	(%rax,%rdi,8), %rsi
	movsd	(%rsi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm3, %xmm0
	mulsd	%xmm0, %xmm5
	movq	8(%r9), %rsi
	cmpl	$0, (%rsi,%rdi,4)
	jle	.LBB12_234
# %bb.233:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %r9
	movq	72(%rsp), %rax                  # 8-byte Reload
	addsd	(%r9,%rax,8), %xmm5
.LBB12_234:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_11(%rip), %xmm1         # xmm1 = mem[0],zero
	movl	452(%r12), %r9d
	cmpl	$2, %r9d
	jl	.LBB12_236
# %bb.235:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %r10
	movq	72(%rsp), %rax                  # 8-byte Reload
	addsd	(%r10,%rax,8), %xmm5
.LBB12_236:                             #   in Loop: Header=BB12_23 Depth=2
	movl	(%rdx,%rdi,4), %r10d
	testl	%r10d, %r10d
	movq	%rsi, 80(%rsp)                  # 8-byte Spill
	jle	.LBB12_240
# %bb.237:                              # %.preheader1192
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	%rbp, 16(%rsp)                  # 8-byte Spill
	movq	32(%rcx), %r11
	movq	360(%r12), %rbx
	movq	8(%rbx), %rbx
	leaq	1(%r10), %r14
	movl	$1, %ebp
	xorl	%r13d, %r13d
	movq	72(%rsp), %rsi                  # 8-byte Reload
.LBB12_238:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r11,%rbp,8), %rax
	movl	(%rax,%rsi,4), %r8d
	movl	%r8d, %eax
	negl	%eax
	cmovsl	%r8d, %eax
	cmpl	$99999, %eax                    # imm = 0x1869F
	cmovel	%r13d, %eax
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	mulsd	%xmm1, %xmm0
	movq	(%rbx,%rbp,8), %rax
	mulsd	(%rax,%rdi,8), %xmm0
	addsd	%xmm0, %xmm5
	incq	%rbp
	cmpq	%rbp, %r14
	jne	.LBB12_238
# %bb.239:                              # %.loopexit1193
                                        #   in Loop: Header=BB12_23 Depth=2
	incl	%r10d
	movl	%r10d, 68(%rsp)
	movq	80(%rsp), %rsi                  # 8-byte Reload
	movq	16(%rsp), %rbp                  # 8-byte Reload
.LBB12_240:                             #   in Loop: Header=BB12_23 Depth=2
	movq	40(%rsp), %r8                   # 8-byte Reload
	cmpl	$0, (%rsi,%r8,4)
	movl	$0, %r14d
	jle	.LBB12_242
# %bb.241:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %rax
	movq	56(%rsp), %rsi                  # 8-byte Reload
	addsd	(%rax,%rsi,8), %xmm5
.LBB12_242:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, %r9d
	jl	.LBB12_244
# %bb.243:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rax
	movq	56(%rsp), %rsi                  # 8-byte Reload
	addsd	(%rax,%rsi,8), %xmm5
.LBB12_244:                             #   in Loop: Header=BB12_23 Depth=2
	movl	(%rdx,%r8,4), %r9d
	testl	%r9d, %r9d
	jle	.LBB12_245
# %bb.246:                              # %.preheader1190
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r10
	movq	360(%r12), %rax
	movq	8(%rax), %r11
	incq	%r9
	movl	$1, %ebx
	movq	56(%rsp), %rsi                  # 8-byte Reload
	movq	40(%rsp), %r13                  # 8-byte Reload
.LBB12_247:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r10,%rbx,8), %rax
	movl	(%rax,%rsi,4), %eax
	movl	%eax, %r8d
	negl	%r8d
	cmovsl	%eax, %r8d
	cmpl	$99999, %r8d                    # imm = 0x1869F
	cmovel	%r14d, %r8d
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r8d, %xmm0
	mulsd	%xmm1, %xmm0
	movq	(%r11,%rbx,8), %rax
	mulsd	(%rax,%r13,8), %xmm0
	addsd	%xmm0, %xmm5
	incq	%rbx
	cmpq	%rbx, %r9
	jne	.LBB12_247
	jmp	.LBB12_248
.LBB12_212:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	jmp	.LBB12_291
.LBB12_221:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	xorl	%r15d, %r15d
	jmp	.LBB12_291
.LBB12_245:                             #   in Loop: Header=BB12_23 Depth=2
	movq	40(%rsp), %r13                  # 8-byte Reload
.LBB12_248:                             # %.loopexit1191
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	392(%r12), %rax
	movq	24(%rax), %rax
	movq	8(%rsp), %rsi                   # 8-byte Reload
	movq	(%rax,%rsi,8), %rax
	movq	48(%rsp), %rsi                  # 8-byte Reload
	movq	(%rax,%rsi,8), %r9
	movsd	(%r9,%r13,8), %xmm0             # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm5
	ucomisd	%xmm5, %xmm2
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	ja	.LBB12_371
# %bb.249:                              #   in Loop: Header=BB12_23 Depth=2
	movq	%r13, %rbx
	ucomisd	%xmm0, %xmm2
	movq	544(%r12), %r10
	jbe	.LBB12_251
# %bb.250:                              #   in Loop: Header=BB12_23 Depth=2
	movq	24(%r10), %rax
	decl	(%rax,%rsi,4)
	decl	(%rax,%rbx,4)
	movq	72(%rsp), %rax                  # 8-byte Reload
	movl	(%rbp,%rax,4), %r10d
	movq	56(%rsp), %r11                  # 8-byte Reload
	movl	(%rbp,%r11,4), %esi
	movq	536(%r12), %rax
	movq	24(%rax), %rax
	jmp	.LBB12_252
.LBB12_251:                             #   in Loop: Header=BB12_23 Depth=2
	movq	32(%r10), %rax
	decl	(%rax,%rsi,4)
	decl	(%rax,%rbx,4)
	movq	72(%rsp), %rax                  # 8-byte Reload
	movl	(%rbp,%rax,4), %r10d
	movq	56(%rsp), %r11                  # 8-byte Reload
	movl	(%rbp,%r11,4), %esi
	movq	536(%r12), %rax
	movq	32(%rax), %rax
.LBB12_252:                             #   in Loop: Header=BB12_23 Depth=2
	movslq	%r10d, %r15
	incl	(%rax,%r15,4)
	movl	%esi, 160(%rsp)                 # 4-byte Spill
	movslq	%esi, %rbp
	leaq	(%rax,%rbp,4), %rdi
	movq	80(%rsp), %r14                  # 8-byte Reload
	incl	(%rdi)
	movl	%r10d, 172(%rsp)
	movq	112(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	movq	320(%r12), %rax
	movq	40(%rax), %rax
	divsd	(%rax,%r15,8), %xmm0
	movsd	%xmm0, 200(%rsp)                # 8-byte Spill
	cmpl	$0, (%rdx,%r15,4)
	jle	.LBB12_256
# %bb.253:                              # %.preheader1188
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r8
	movl	$1, %edi
	movq	72(%rsp), %rsi                  # 8-byte Reload
.LBB12_254:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r8,%rdi,8), %rax
	movl	(%rax,%rsi,4), %r10d
	sarl	$31, %r10d
	andl	$-99999, %r10d                  # imm = 0xFFFE7961
	movl	%r10d, (%rax,%rsi,4)
	incq	%rdi
	cmpl	$0, (%rdx,%r15,4)
	jne	.LBB12_254
# %bb.255:                              # %.loopexit1189
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%edi, 68(%rsp)
.LBB12_256:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$0, (%r14,%r15,4)
	jle	.LBB12_258
# %bb.257:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %rax
	movq	72(%rsp), %rsi                  # 8-byte Reload
	movq	$0, (%rax,%rsi,8)
.LBB12_258:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, 452(%r12)
	jl	.LBB12_260
# %bb.259:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rax
	movq	72(%rsp), %rsi                  # 8-byte Reload
	movq	$0, (%rax,%rsi,8)
.LBB12_260:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$0, (%rdx,%rbp,4)
	jle	.LBB12_263
# %bb.261:                              # %.preheader1186
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %rdi
	addq	$8, %rdi
.LBB12_262:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rdi), %rax
	movl	(%rax,%r11,4), %r8d
	sarl	$31, %r8d
	andl	$-99999, %r8d                   # imm = 0xFFFE7961
	movl	%r8d, (%rax,%r11,4)
	addq	$8, %rdi
	cmpl	$0, (%rdx,%rbp,4)
	jne	.LBB12_262
.LBB12_263:                             # %.loopexit1187
                                        #   in Loop: Header=BB12_23 Depth=2
	cmpl	$0, (%r14,%rbp,4)
	jle	.LBB12_265
# %bb.264:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %rax
	movq	$0, (%rax,%r11,8)
.LBB12_265:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, 452(%r12)
	jl	.LBB12_267
# %bb.266:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rax
	movq	$0, (%rax,%r11,8)
.LBB12_267:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	(%r9,%rbx,8), %xmm0             # xmm0 = mem[0],zero
	ucomisd	%xmm2, %xmm0
	movq	72(%rsp), %r14                  # 8-byte Reload
	jbe	.LBB12_278
# %bb.268:                              # %.lr.ph1325
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	movq	96(%rsp), %r9                   # 8-byte Reload
	movsd	(%rax,%r9,8), %xmm1             # xmm1 = mem[0],zero
	movq	gas(%rip), %rax
	movq	392(%rax), %rcx
	movq	416(%rax), %rdx
	movq	32(%rcx), %rsi
	movq	40(%rcx), %rdi
	movq	8(%rsp), %r8                    # 8-byte Reload
	movq	(%rsi,%r8,8), %rcx
	movq	48(%rsp), %r10                  # 8-byte Reload
	movq	(%rcx,%r10,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm3            # xmm3 = mem[0],zero
	subsd	%xmm3, %xmm1
	movq	8(%rdx), %rsi
	movq	16(%rdx), %rcx
	movq	(%rcx,%r8,8), %rcx
	movq	(%rcx,%r10,8), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movq	(%rsi,%r8,8), %rdx
	movq	(%rdx,%r10,8), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movq	(%rdi,%r8,8), %rsi
	movq	(%rsi,%r10,8), %rsi
	movsd	(%rsi,%rbx,8), %xmm2            # xmm2 = mem[0],zero
	subsd	%xmm3, %xmm2
	movl	$-1, %r8d
	xorl	%edi, %edi
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
.LBB12_269:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%rcx,%rdi,8), %xmm3            # xmm3 = mem[0],zero
	movsd	(%rdx,%rdi,8), %xmm4            # xmm4 = mem[0],zero
	subsd	%xmm4, %xmm3
	mulsd	%xmm1, %xmm3
	divsd	%xmm2, %xmm3
	addsd	%xmm4, %xmm3
	ucomisd	%xmm0, %xmm3
	movl	%edi, %esi
	ja	.LBB12_271
# %bb.270:                              #   in Loop: Header=BB12_269 Depth=3
	movl	%r8d, %esi
.LBB12_271:                             #   in Loop: Header=BB12_269 Depth=3
	incq	%rdi
	movl	%esi, %r8d
	testl	%esi, %esi
	js	.LBB12_269
# %bb.272:                              # %._crit_edge1326
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	560(%rax), %rcx
	movq	8(%rcx), %rdx
	movl	%esi, 168(%rsp)
	movl	(%rdx,%r15,4), %ecx
	testl	%ecx, %ecx
	jle	.LBB12_274
# %bb.273:                              #   in Loop: Header=BB12_23 Depth=2
	addl	%ecx, %esi
	movl	%esi, 168(%rsp)
	movl	$0, (%rdx,%r15,4)
.LBB12_274:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_11(%rip), %xmm2         # xmm2 = mem[0],zero
	movq	584(%rax), %rcx
	movq	8(%rsp), %rdi                   # 8-byte Reload
	movq	(%rcx,%rdi,8), %rcx
	movq	56(%rcx), %rcx
	movq	(%rcx,%r10,8), %rcx
	movslq	(%rcx,%rbx,4), %r8
	movl	%r8d, 68(%rsp)
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rdi
	movq	(%rdi,%r8,8), %rdi
	movl	%esi, (%rdi,%r14,4)
	xorps	%xmm1, %xmm1
	cvtsi2sd	%esi, %xmm1
	mulsd	.LCPI12_12(%rip), %xmm1
	movq	360(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r8,8), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm1
	addsd	%xmm1, %xmm5
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm5, %xmm1
	jbe	.LBB12_275
# %bb.276:                              # %.preheader1182
                                        #   in Loop: Header=BB12_23 Depth=2
	mulsd	%xmm2, %xmm0
.LBB12_277:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	decl	(%rdi,%r14,4)
	incl	(%rdx,%r15,4)
	addsd	%xmm0, %xmm5
	ucomisd	%xmm5, %xmm1
	ja	.LBB12_277
.LBB12_275:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm5, 16(%rsp)                 # 8-byte Spill
	jmp	.LBB12_285
.LBB12_278:                             #   in Loop: Header=BB12_23 Depth=2
	movq	144(%rsp), %rax                 # 8-byte Reload
	movq	40(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movslq	(%rax,%rbp,4), %rbx
	movl	%ebx, 68(%rsp)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	96(%rsp), %rcx                  # 8-byte Reload
	leaq	(,%rcx,8), %rsi
	addq	64(%rax), %rsi
	leaq	172(%rsp), %rdi
	leaq	168(%rsp), %rdx
	leaq	68(%rsp), %rcx
	callq	_Z4SVIBRiRdS_S_
	movq	gas(%rip), %rsi
	movq	560(%rsi), %rax
	movq	16(%rax), %rax
	movl	(%rax,%r15,4), %ecx
	movl	168(%rsp), %edi
	testl	%ecx, %ecx
	jle	.LBB12_280
# %bb.279:                              #   in Loop: Header=BB12_23 Depth=2
	addl	%ecx, %edi
	movl	%edi, 168(%rsp)
	movl	$0, (%rax,%r15,4)
.LBB12_280:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	.LCPI12_11(%rip), %xmm2         # xmm2 = mem[0],zero
	movsd	16(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movl	%edi, (%rdx,%r14,4)
	cvtsi2sd	%edi, %xmm1
	mulsd	.LCPI12_12(%rip), %xmm1
	movq	360(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movsd	(%rsi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm1
	addsd	%xmm1, %xmm3
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm3, %xmm1
	jbe	.LBB12_281
# %bb.282:                              # %.preheader1184
                                        #   in Loop: Header=BB12_23 Depth=2
	mulsd	%xmm2, %xmm0
	movq	96(%rsp), %r9                   # 8-byte Reload
.LBB12_283:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	decl	(%rdx,%r14,4)
	incl	(%rax,%r15,4)
	addsd	%xmm0, %xmm3
	ucomisd	%xmm3, %xmm1
	ja	.LBB12_283
# %bb.284:                              #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	jmp	.LBB12_285
.LBB12_155:                             #   in Loop: Header=BB12_23 Depth=2
	movq	56(%rsp), %rax                  # 8-byte Reload
.LBB12_157:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, %r8d
	jl	.LBB12_159
# %bb.158:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %r8
	addsd	(%r8,%rax,8), %xmm3
.LBB12_159:                             #   in Loop: Header=BB12_23 Depth=2
	movl	(%rdx,%rbx,4), %r8d
	testl	%r8d, %r8d
	jle	.LBB12_160
# %bb.161:                              # %.preheader1210
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r9
	movq	360(%r12), %r10
	movq	8(%r10), %r10
	incq	%r8
	movl	$1, %r11d
	xorl	%r14d, %r14d
	movq	56(%rsp), %rsi                  # 8-byte Reload
.LBB12_162:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r9,%r11,8), %rbx
	movl	(%rbx,%rsi,4), %ebx
	movl	%ebx, %ebp
	negl	%ebp
	cmovsl	%ebx, %ebp
	cmpl	$99999, %ebp                    # imm = 0x1869F
	cmovel	%r14d, %ebp
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ebp, %xmm0
	mulsd	%xmm1, %xmm0
	movq	(%r10,%r11,8), %rbx
	movq	40(%rsp), %rax                  # 8-byte Reload
	mulsd	(%rbx,%rax,8), %xmm0
	movq	40(%rsp), %rbx                  # 8-byte Reload
	addsd	%xmm0, %xmm3
	incq	%r11
	cmpq	%r11, %r8
	jne	.LBB12_162
	jmp	.LBB12_163
.LBB12_160:                             #   in Loop: Header=BB12_23 Depth=2
	movq	56(%rsp), %rsi                  # 8-byte Reload
.LBB12_163:                             # %.loopexit1211
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	544(%r12), %r8
	movq	16(%r8), %r8
	movq	48(%rsp), %r9                   # 8-byte Reload
	decl	(%r8,%r9,4)
	decl	(%r8,%rbx,4)
	movl	(%rdi,%rbx,4), %r8d
	movl	%r8d, 172(%rsp)
	movq	8(%rcx), %rdi
	movq	72(%rsp), %rax                  # 8-byte Reload
	movl	%r8d, (%rdi,%rax,4)
	movslq	(%rdx,%r9,4), %r9
	movl	%r8d, 136(%rsp)                 # 4-byte Spill
	movslq	%r8d, %rbp
	movl	(%rdx,%rbp,4), %edi
	cmpl	%r9d, %edi
	movq	96(%rsp), %rbx                  # 8-byte Reload
	jle	.LBB12_167
# %bb.164:                              # %.preheader1208
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %r8
	leal	1(%rdi), %r13d
	leaq	(%r8,%r9,8), %r8
	addq	$8, %r8
	subl	%r9d, %edi
	xorl	%r9d, %r9d
	movq	72(%rsp), %rax                  # 8-byte Reload
.LBB12_165:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r8,%r9,8), %r10
	movl	$0, (%r10,%rax,4)
	incq	%r9
	cmpl	%r9d, %edi
	jne	.LBB12_165
# %bb.166:                              # %.loopexit1209
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%r13d, 68(%rsp)
	movl	%r13d, %r15d
.LBB12_167:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, 452(%r12)
	movl	%r15d, %eax
	jl	.LBB12_169
# %bb.168:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rdi
	movslq	%r13d, %r8
	movq	$0, (%rdi,%r8,8)
	movl	%r13d, %eax
.LBB12_169:                             #   in Loop: Header=BB12_23 Depth=2
	movl	%eax, 112(%rsp)                 # 4-byte Spill
	movq	(%rcx), %rdi
	negl	(%rdi,%rsi,4)
	movq	536(%r12), %rdi
	movq	16(%rdi), %rdi
	incl	(%rdi,%rbp,4)
	movq	16(%rsp), %rax                  # 8-byte Reload
	cmpl	$0, (%rax,%rbp,4)
	movq	248(%rsp), %r15                 # 8-byte Reload
	jle	.LBB12_171
# %bb.170:                              #   in Loop: Header=BB12_23 Depth=2
	movq	64(%rcx), %rsi
	movq	72(%rsp), %rax                  # 8-byte Reload
	movq	$0, (%rsi,%rax,8)
.LBB12_171:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$2, 452(%r12)
	jl	.LBB12_173
# %bb.172:                              #   in Loop: Header=BB12_23 Depth=2
	movq	72(%rcx), %rsi
	movq	72(%rsp), %rax                  # 8-byte Reload
	movq	$0, (%rsi,%rax,8)
.LBB12_173:                             #   in Loop: Header=BB12_23 Depth=2
	cmpl	$0, (%rdx,%rbp,4)
	movq	72(%rsp), %r14                  # 8-byte Reload
	jle	.LBB12_176
# %bb.174:                              # %.lr.ph1273
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	32(%rcx), %rsi
	xorl	%edi, %edi
.LBB12_175:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	8(%rsi,%rdi,8), %r8
	movl	(%r8,%r14,4), %r9d
	sarl	$31, %r9d
	andl	$-99999, %r9d                   # imm = 0xFFFE7961
	movl	%r9d, (%r8,%r14,4)
	movslq	(%rdx,%rbp,4), %r8
	incq	%rdi
	cmpq	%r8, %rdi
	jl	.LBB12_175
.LBB12_176:                             # %.loopexit1205
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	360(%r12), %rdx
	movq	32(%rdx), %rdx
	movq	8(%rdx), %rdx
	movsd	(%rdx,%rbp,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movq	48(%rcx), %rcx
	movl	$1, %edx
.LBB12_177:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	368(%rsp,%rdx,8), %xmm1         # xmm1 = mem[0],zero
	movq	(%rcx,%rdx,8), %rsi
	movsd	%xmm1, (%rsi,%r14,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB12_177
# %bb.178:                              # %.preheader1203.preheader
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	$1, %edx
.LBB12_179:                             # %.preheader1203
                                        #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rcx,%rdx,8), %rsi
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	subsd	(%rsi,%r15,8), %xmm1
	movsd	%xmm1, 320(%rsp,%rdx,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB12_179
# %bb.180:                              # %.lr.ph1279
                                        #   in Loop: Header=BB12_23 Depth=2
	addsd	%xmm0, %xmm3
	movsd	328(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	336(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	%xmm0, 256(%rsp)                # 8-byte Spill
	mulsd	%xmm0, %xmm0
	movsd	%xmm1, 264(%rsp)                # 8-byte Spill
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	movsd	344(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, 272(%rsp)                # 8-byte Spill
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	movq	80(%rsp), %rax                  # 8-byte Reload
	movq	(%rax,%rbp,8), %rax
	movq	8(%rsp), %rcx                   # 8-byte Reload
	movsd	(%rax,%rcx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm1
	mulsd	%xmm0, %xmm1
	mulsd	%xmm3, %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	movq	gas(%rip), %rax
	movq	384(%rax), %rcx
	movq	408(%rax), %rdx
	movq	8(%rcx), %rsi
	movq	16(%rcx), %rdi
	movq	48(%rsp), %r9                   # 8-byte Reload
	movq	(%rsi,%r9,8), %rcx
	movq	40(%rsp), %r8                   # 8-byte Reload
	movsd	(%rcx,%r8,8), %xmm3             # xmm3 = mem[0],zero
	subsd	%xmm3, %xmm1
	movq	8(%rdx), %rsi
	movq	16(%rdx), %rcx
	movq	(%rcx,%r9,8), %rcx
	movq	(%rcx,%r8,8), %rcx
	movq	(%rsi,%r9,8), %rdx
	movq	(%rdx,%r8,8), %rdx
	movq	(%rdi,%r9,8), %rsi
	movsd	(%rsi,%r8,8), %xmm2             # xmm2 = mem[0],zero
	subsd	%xmm3, %xmm2
	movl	$-1, %r8d
	xorl	%esi, %esi
.LBB12_181:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%rcx,%rsi,8), %xmm3            # xmm3 = mem[0],zero
	movsd	(%rdx,%rsi,8), %xmm4            # xmm4 = mem[0],zero
	subsd	%xmm4, %xmm3
	mulsd	%xmm1, %xmm3
	divsd	%xmm2, %xmm3
	subsd	%xmm4, %xmm3
	ucomisd	%xmm0, %xmm3
	movl	%esi, %edi
	ja	.LBB12_183
# %bb.182:                              #   in Loop: Header=BB12_181 Depth=3
	movl	%r8d, %edi
.LBB12_183:                             #   in Loop: Header=BB12_181 Depth=3
	incq	%rsi
	movl	%edi, %r8d
	testl	%edi, %edi
	js	.LBB12_181
# %bb.184:                              # %._crit_edge
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	352(%rax), %rcx
	movq	360(%rax), %rdx
	movq	8(%rcx), %rcx
	movq	(%rcx,%rbp,8), %rcx
	movq	8(%rsp), %rsi                   # 8-byte Reload
	movsd	(%rcx,%rsi,8), %xmm2            # xmm2 = mem[0],zero
	movq	528(%rax), %rax
	movq	(%rax,%r9,8), %rax
	movq	8(%rdx), %rcx
	movl	%edi, 168(%rsp)
	movq	molecs(%rip), %rdx
	movq	32(%rdx), %rdx
	movq	8(%rdx), %rdx
	movl	%edi, (%rdx,%r14,4)
	xorps	%xmm1, %xmm1
	cvtsi2sd	%edi, %xmm1
	mulsd	.LCPI12_12(%rip), %xmm1
	movq	40(%rsp), %rdx                  # 8-byte Reload
	movslq	(%rax,%rdx,4), %rax
	movq	(%rcx,%rax,8), %rax
	mulsd	(%rax,%rbp,8), %xmm1
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	addsd	%xmm1, %xmm0
	addsd	%xmm0, %xmm0
	divsd	%xmm2, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB12_186
# %bb.185:                              #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_187
.LBB12_186:                             # %call.sqrt1950
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	sqrt
.LBB12_187:                             # %._crit_edge.split
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movsd	.LCPI12_19(%rip), %xmm3         # xmm3 = mem[0],zero
	movl	112(%rsp), %edi                 # 4-byte Reload
	movq	gas(%rip), %r12
	movq	320(%r12), %rax
	movq	352(%r12), %rcx
	movq	8(%rcx), %rcx
	movq	(%rcx,%rbp,8), %rcx
	movq	8(%rsp), %rdx                   # 8-byte Reload
	movsd	(%rcx,%rdx,8), %xmm4            # xmm4 = mem[0],zero
	movq	40(%rax), %rax
	movapd	%xmm4, %xmm0
	divsd	(%rax,%rdx,8), %xmm0
	divsd	(%rax,%rbp,8), %xmm4
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movl	$1, %ecx
	movq	72(%rsp), %rsi                  # 8-byte Reload
.LBB12_188:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rax,%rcx,8), %rdx
	movsd	(%rdx,%rsi,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	(%rdx,%r15,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	addsd	%xmm1, %xmm2
	movsd	%xmm2, 368(%rsp,%rcx,8)
	incq	%rcx
	cmpq	$4, %rcx
	jne	.LBB12_188
# %bb.189:                              #   in Loop: Header=BB12_23 Depth=2
	movl	%r13d, %r15d
	movl	240(%rsp), %eax                 # 4-byte Reload
	movl	%eax, 160(%rsp)                 # 4-byte Spill
	movl	196(%rsp), %eax                 # 4-byte Reload
	movl	%eax, 64(%rsp)                  # 4-byte Spill
	jmp	.LBB12_135
.LBB12_281:                             #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movq	96(%rsp), %r9                   # 8-byte Reload
.LBB12_285:                             # %.loopexit1183
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	leaq	(,%r9,8), %rsi
	addq	64(%rax), %rsi
	leaq	(,%r14,8), %rdx
	addq	64(%rcx), %rdx
	leaq	172(%rsp), %rdi
	callq	_Z4SROTRiRdS0_
	movq	gas(%rip), %r12
	movq	296(%r12), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	.LCPI12_16(%rip), %xmm0
	movq	molecs(%rip), %rcx
	movq	64(%rcx), %rcx
	jbe	.LBB12_287
# %bb.286:                              #   in Loop: Header=BB12_23 Depth=2
	addsd	(%rcx,%r14,8), %xmm0
	movsd	%xmm0, (%rcx,%r14,8)
	movabsq	$4292743757239851855, %rdx      # imm = 0x3B92E3B40A0E9B4F
	movq	%rdx, (%rax,%r15,8)
.LBB12_287:                             # %.loopexit1183._crit_edge
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movsd	16(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	subsd	%xmm0, %xmm5
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm5, %xmm1
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	.LCPI12_1(%rip), %xmm3          # xmm3 = mem[0],zero
	jbe	.LBB12_290
# %bb.288:                              # %.preheader1180.preheader
                                        #   in Loop: Header=BB12_23 Depth=2
	xorpd	%xmm4, %xmm4
	movq	72(%rsp), %rdx                  # 8-byte Reload
.LBB12_289:                             # %.preheader1180
                                        #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	mulsd	%xmm3, %xmm0
	movsd	(%rax,%r15,8), %xmm1            # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%rax,%r15,8)
	movsd	%xmm0, (%rcx,%rdx,8)
	addsd	%xmm0, %xmm5
	ucomisd	%xmm5, %xmm4
	ja	.LBB12_289
.LBB12_290:                             # %.loopexit1181
                                        #   in Loop: Header=BB12_23 Depth=2
	addsd	%xmm5, %xmm5
	movq	352(%r12), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r15,8), %rax
	divsd	(%rax,%rbp,8), %xmm5
	movl	$1, %r15d
	movl	172(%rsp), %eax
	movl	%eax, 136(%rsp)                 # 4-byte Spill
.LBB12_291:                             # %._crit_edge1308.thread
                                        #   in Loop: Header=BB12_23 Depth=2
	movq	352(%r12), %rax
	movq	8(%rax), %rax
	movslq	136(%rsp), %rbp                 # 4-byte Folded Reload
	movq	(%rax,%rbp,8), %rax
	movslq	160(%rsp), %rcx                 # 4-byte Folded Reload
	movq	%rcx, 240(%rsp)                 # 8-byte Spill
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm3, %xmm0
	mulsd	%xmm5, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movl	$1, %r12d
	movl	68(%rsp), %r13d
	movq	%rbp, 248(%rsp)                 # 8-byte Spill
	movl	%r15d, 196(%rsp)                # 4-byte Spill
.LBB12_292:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB12_297 Depth 4
                                        #         Child Loop BB12_301 Depth 4
                                        #           Child Loop BB12_304 Depth 5
                                        #         Child Loop BB12_316 Depth 4
                                        #           Child Loop BB12_322 Depth 5
	cmpl	$1, %r12d
	movl	136(%rsp), %eax                 # 4-byte Reload
	movl	%eax, %ecx
	movl	160(%rsp), %ebx                 # 4-byte Reload
	cmovel	%ebx, %ecx
	movl	%ecx, 48(%rsp)                  # 4-byte Spill
	cmovel	%eax, %ebx
	movl	64(%rsp), %r14d                 # 4-byte Reload
	cmovel	176(%rsp), %r14d                # 4-byte Folded Reload
	movq	gas(%rip), %rax
	cmpl	$2, 452(%rax)
	jl	.LBB12_311
# %bb.293:                              #   in Loop: Header=BB12_292 Depth=3
	movl	%r14d, 40(%rsp)                 # 4-byte Spill
	movq	376(%rax), %rax
	movq	24(%rax), %rax
	movq	8(%rax), %rax
	movslq	%ebx, %r14
	divsd	(%rax,%r14,8), %xmm2
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	callq	rand
	movsd	.LCPI12_5(%rip), %xmm1          # xmm1 = mem[0],zero
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	%xmm1, %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	movq	gas(%rip), %rax
	jbe	.LBB12_294
# %bb.295:                              #   in Loop: Header=BB12_292 Depth=3
	movq	480(%rax), %rcx
	movl	(%rcx,%r14,4), %ecx
	cmpl	$2, %ecx
	jl	.LBB12_294
# %bb.296:                              # %.preheader1177
                                        #   in Loop: Header=BB12_292 Depth=3
	movq	molecs(%rip), %rdx
	movq	72(%rdx), %rdx
	movslq	40(%rsp), %rsi                  # 4-byte Folded Reload
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movq	%rsi, 56(%rsp)                  # 8-byte Spill
	addsd	(%rdx,%rsi,8), %xmm2
	movq	376(%rax), %rax
	movq	16(%rax), %rdx
	incq	%rcx
	xorl	%edi, %edi
	movl	$1, %esi
.LBB12_297:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_292 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	(%rdx,%rsi,8), %r8
	movsd	(%r8,%r14,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	.LCPI12_11(%rip), %xmm0
	ucomisd	%xmm0, %xmm2
	jbe	.LBB12_299
# %bb.298:                              #   in Loop: Header=BB12_297 Depth=4
	xorps	%xmm0, %xmm0
	cvtsi2sd	%edi, %xmm0
	movq	8(%rax), %rdi
	movq	(%rdi,%rsi,8), %rdi
	addsd	(%rdi,%r14,8), %xmm0
	cvttsd2si	%xmm0, %edi
.LBB12_299:                             #   in Loop: Header=BB12_297 Depth=4
	incq	%rsi
	cmpq	%rsi, %rcx
	jne	.LBB12_297
# %bb.300:                              # %.preheader1176
                                        #   in Loop: Header=BB12_292 Depth=3
	xorps	%xmm0, %xmm0
	cvtsi2sd	%edi, %xmm0
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	movslq	48(%rsp), %rbp                  # 4-byte Folded Reload
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
.LBB12_301:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_292 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB12_304 Depth 5
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	80(%rsp), %xmm0                 # 8-byte Folded Reload
	callq	ceil@PLT
	movq	gas(%rip), %rdx
	movq	480(%rdx), %rax
	movl	(%rax,%r14,4), %eax
	testl	%eax, %eax
	jle	.LBB12_302
# %bb.303:                              # %.lr.ph1336
                                        #   in Loop: Header=BB12_301 Depth=4
	cvttsd2si	%xmm0, %ecx
	movq	376(%rdx), %rdx
	movq	8(%rdx), %rdx
	incq	%rax
	xorl	%edi, %edi
	movl	$-1, %r15d
	movl	$1, %esi
.LBB12_304:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_292 Depth=3
                                        #         Parent Loop BB12_301 Depth=4
                                        # =>        This Inner Loop Header: Depth=5
	xorps	%xmm0, %xmm0
	cvtsi2sd	%edi, %xmm0
	movq	(%rdx,%rsi,8), %rdi
	addsd	(%rdi,%r14,8), %xmm0
	cvttsd2si	%xmm0, %edi
	testl	%r15d, %r15d
	movl	%esi, %r8d
	cmovnsl	%r15d, %r8d
	cmpl	%edi, %ecx
	cmovlel	%r8d, %r15d
	incq	%rsi
	cmpq	%rsi, %rax
	jne	.LBB12_304
	jmp	.LBB12_305
.LBB12_302:                             #   in Loop: Header=BB12_301 Depth=4
	movl	$-1, %r15d
.LBB12_305:                             # %._crit_edge1337
                                        #   in Loop: Header=BB12_301 Depth=4
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	movsd	.LCPI12_5(%rip), %xmm3          # xmm3 = mem[0],zero
	divsd	%xmm3, %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	376(%rax), %rcx
	movq	24(%rcx), %rdx
	movslq	%r15d, %r15
	movq	(%rdx,%r15,8), %rdx
	movsd	(%rdx,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	16(%rsp), %xmm1                 # 8-byte Folded Reload
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	divsd	%xmm1, %xmm2
	ucomisd	%xmm2, %xmm0
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	ja	.LBB12_309
# %bb.306:                              #   in Loop: Header=BB12_301 Depth=4
	movq	16(%rcx), %rcx
	movq	(%rcx,%r15,8), %rcx
	movsd	(%rcx,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	.LCPI12_11(%rip), %xmm1
	ucomisd	%xmm1, %xmm2
	jbe	.LBB12_301
# %bb.307:                              #   in Loop: Header=BB12_301 Depth=4
	divsd	%xmm2, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	(%rax,%rbp,8), %xmm1
	callq	pow
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	callq	rand
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	.LCPI12_5(%rip), %xmm3          # xmm3 = mem[0],zero
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	%xmm3, %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	112(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_301
# %bb.308:                              #   in Loop: Header=BB12_292 Depth=3
	movq	gas(%rip), %rax
	movq	376(%rax), %rax
	movq	16(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	.LCPI12_11(%rip), %xmm0
	movq	molecs(%rip), %rax
	movq	72(%rax), %rax
	movq	56(%rsp), %rcx                  # 8-byte Reload
	movsd	%xmm0, (%rax,%rcx,8)
.LBB12_309:                             # %.loopexit1681
                                        #   in Loop: Header=BB12_292 Depth=3
	movq	molecs(%rip), %rax
	movq	72(%rax), %rax
	movq	56(%rsp), %rcx                  # 8-byte Reload
	subsd	(%rax,%rcx,8), %xmm2
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %rax
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movl	196(%rsp), %r15d                # 4-byte Reload
	movq	248(%rsp), %rbp                 # 8-byte Reload
	jmp	.LBB12_310
.LBB12_294:                             #   in Loop: Header=BB12_292 Depth=3
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_310:                             # %.thread1159
                                        #   in Loop: Header=BB12_292 Depth=3
	movl	40(%rsp), %r14d                 # 4-byte Reload
.LBB12_311:                             # %.thread1159
                                        #   in Loop: Header=BB12_292 Depth=3
	testl	%r15d, %r15d
	jne	.LBB12_313
# %bb.312:                              # %.thread1159
                                        #   in Loop: Header=BB12_292 Depth=3
	cmpl	$0, 428(%rax)
	jle	.LBB12_313
# %bb.314:                              #   in Loop: Header=BB12_292 Depth=3
	movq	472(%rax), %rcx
	movslq	%ebx, %rbx
	cmpl	$0, (%rcx,%rbx,4)
	jle	.LBB12_329
# %bb.315:                              # %.lr.ph1345
                                        #   in Loop: Header=BB12_292 Depth=3
	movl	%r14d, 40(%rsp)                 # 4-byte Spill
	movslq	%r14d, %r14
	movslq	48(%rsp), %rbp                  # 4-byte Folded Reload
	movl	$1, %r13d
.LBB12_316:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_292 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB12_322 Depth 5
	movq	%r13, %r15
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rcx
	movq	(%rcx,%r13,8), %rcx
	movl	(%rcx,%r14,4), %r13d
	testl	%r13d, %r13d
	js	.LBB12_327
# %bb.317:                              #   in Loop: Header=BB12_316 Depth=4
	movq	360(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	24(%rcx), %rsi
	movq	(%rdx,%r15,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 80(%rsp)                 # 8-byte Spill
	movq	(%rsi,%r15,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm2            # xmm2 = mem[0],zero
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm2
	jbe	.LBB12_319
# %bb.318:                              #   in Loop: Header=BB12_316 Depth=4
	movq	32(%rcx), %rcx
	movq	(%rcx,%r15,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm1
	divsd	%xmm2, %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rcx
	movq	96(%rsp), %rdx                  # 8-byte Reload
	divsd	(%rcx,%rdx,8), %xmm0
	movsd	%xmm0, 56(%rsp)                 # 8-byte Spill
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	(%rax,%rbp,8), %xmm1            # xmm1 = mem[0],zero
	callq	pow
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	movq	gas(%rip), %rax
	movq	352(%rax), %rcx
	movq	360(%rax), %rax
	movq	16(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movq	24(%rcx), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	(%rax,%rbp,8), %xmm1            # xmm1 = mem[0],zero
	xorps	.LCPI12_17(%rip), %xmm1
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	mulsd	144(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movsd	56(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_18(%rip), %xmm1         # xmm1 = mem[0],zero
	callq	pow
	movapd	%xmm0, %xmm1
	movsd	.LCPI12_19(%rip), %xmm0         # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 56(%rsp)                 # 8-byte Spill
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	.LCPI12_20(%rip), %xmm1         # xmm1 = mem[0],zero
	callq	pow
	addsd	.LCPI12_19(%rip), %xmm0
	movsd	56(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movsd	144(%rsp), %xmm0                # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	mulsd	112(%rsp), %xmm0                # 8-byte Folded Reload
	jmp	.LBB12_320
.LBB12_319:                             #   in Loop: Header=BB12_316 Depth=4
	movq	16(%rcx), %rax
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
.LBB12_320:                             #   in Loop: Header=BB12_316 Depth=4
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm2, %xmm1
	divsd	16(%rsp), %xmm1                 # 8-byte Folded Reload
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_327
# %bb.321:                              # %.preheader1171
                                        #   in Loop: Header=BB12_316 Depth=4
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r13d, %xmm0
	movsd	.LCPI12_11(%rip), %xmm1         # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movsd	80(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	mulsd	%xmm3, %xmm0
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	addsd	%xmm0, %xmm2
	mulsd	%xmm1, %xmm3
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	movapd	%xmm2, %xmm0
	divsd	%xmm3, %xmm0
	cvttsd2si	%xmm0, %eax
	movl	%eax, 56(%rsp)                  # 4-byte Spill
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	addsd	.LCPI12_21(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movl	$99000, %r13d                   # imm = 0x182B8
.LBB12_322:                             #   Parent Loop BB12_2 Depth=1
                                        #     Parent Loop BB12_23 Depth=2
                                        #       Parent Loop BB12_292 Depth=3
                                        #         Parent Loop BB12_316 Depth=4
                                        # =>        This Inner Loop Header: Depth=5
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	cvttsd2si	%xmm0, %eax
	movq	molecs(%rip), %rcx
	movq	32(%rcx), %rcx
	movq	(%rcx,%r15,8), %rcx
	cvttpd2dq	%xmm0, %xmm0
	movl	%eax, (%rcx,%r14,4)
	cvtdq2pd	%xmm0, %xmm2
	mulsd	.LCPI12_11(%rip), %xmm2
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	8(%rax), %rcx
	movq	(%rcx,%r15,8), %rcx
	mulsd	(%rcx,%rbx,8), %xmm2
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	ucomisd	%xmm2, %xmm0
	jbe	.LBB12_324
# %bb.323:                              #   in Loop: Header=BB12_322 Depth=5
	movapd	%xmm2, %xmm1
	divsd	%xmm0, %xmm1
	movsd	.LCPI12_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	(%rax,%rbp,8), %xmm1
	movapd	%xmm2, 80(%rsp)                 # 16-byte Spill
	callq	pow
	movsd	%xmm0, 112(%rsp)                # 8-byte Spill
	callq	rand
	movapd	80(%rsp), %xmm2                 # 16-byte Reload
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	112(%rsp), %xmm3                # 8-byte Reload
                                        # xmm3 = mem[0],zero
	ucomisd	%xmm0, %xmm3
	ja	.LBB12_326
.LBB12_324:                             #   in Loop: Header=BB12_322 Depth=5
	decl	%r13d
	jne	.LBB12_322
	jmp	.LBB12_325
.LBB12_326:                             #   in Loop: Header=BB12_316 Depth=4
	subsd	%xmm2, %xmm1
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_327:                             #   in Loop: Header=BB12_316 Depth=4
	leaq	1(%r15), %r13
	movq	gas(%rip), %rax
	movq	472(%rax), %rcx
	movslq	(%rcx,%rbx,4), %rcx
	cmpq	%rcx, %r15
	jl	.LBB12_316
# %bb.328:                              # %.loopexit1175.loopexit
                                        #   in Loop: Header=BB12_292 Depth=3
	movl	196(%rsp), %r15d                # 4-byte Reload
	movq	248(%rsp), %rbp                 # 8-byte Reload
	movl	40(%rsp), %r14d                 # 4-byte Reload
	jmp	.LBB12_329
.LBB12_313:                             # %.thread1159..loopexit1175_crit_edge
                                        #   in Loop: Header=BB12_292 Depth=3
	movslq	%ebx, %rbx
.LBB12_329:                             # %.loopexit1175
                                        #   in Loop: Header=BB12_292 Depth=3
	movq	488(%rax), %rcx
	movq	8(%rcx), %rdx
	cmpl	$0, (%rdx,%rbx,4)
	jle	.LBB12_340
# %bb.330:                              #   in Loop: Header=BB12_292 Depth=3
	movq	16(%rcx), %rdx
	cmpl	$0, (%rdx,%rbx,4)
	jne	.LBB12_333
# %bb.331:                              #   in Loop: Header=BB12_292 Depth=3
	movslq	48(%rsp), %rcx                  # 4-byte Folded Reload
	cmpl	$0, (%rdx,%rcx,4)
	je	.LBB12_332
.LBB12_333:                             #   in Loop: Header=BB12_292 Depth=3
	movq	328(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movapd	%xmm2, %xmm0
	divsd	(%rcx,%rbx,8), %xmm0
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rcx
	movq	96(%rsp), %rsi                  # 8-byte Reload
	movsd	(%rcx,%rsi,8), %xmm2            # xmm2 = mem[0],zero
	movsd	(%rdx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm1
	addsd	%xmm0, %xmm1
	movq	24(%rax), %rax
	mulsd	%xmm2, %xmm2
	mulsd	(%rax,%rbx,8), %xmm2
	addsd	%xmm1, %xmm2
.LBB12_334:                             #   in Loop: Header=BB12_292 Depth=3
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB12_335
# %bb.336:                              #   in Loop: Header=BB12_292 Depth=3
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movslq	%r14d, %r14
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	addsd	(%rax,%r14,8), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %rax
	movq	488(%rax), %rcx
	movq	8(%rcx), %rcx
	movl	(%rcx,%rbx,4), %ecx
	cmpl	$2, %ecx
	jne	.LBB12_338
# %bb.337:                              #   in Loop: Header=BB12_292 Depth=3
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI12_5(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movslq	48(%rsp), %rcx                  # 4-byte Folded Reload
	movsd	.LCPI12_22(%rip), %xmm2         # xmm2 = mem[0],zero
	subsd	(%rax,%rcx,8), %xmm2
	movsd	.LCPI12_0(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm2, %xmm1
	callq	pow
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm2, %xmm1
	subsd	%xmm0, %xmm1
	movsd	%xmm1, 232(%rsp)
	jmp	.LBB12_339
.LBB12_335:                             #   in Loop: Header=BB12_292 Depth=3
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	jmp	.LBB12_340
.LBB12_338:                             #   in Loop: Header=BB12_292 Depth=3
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ecx, %xmm0
	mulsd	.LCPI12_1(%rip), %xmm0
	addsd	.LCPI12_19(%rip), %xmm0
	movq	352(%rax), %rax
	movq	24(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movslq	48(%rsp), %rcx                  # 4-byte Folded Reload
	movsd	.LCPI12_14(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	(%rax,%rcx,8), %xmm1
	leaq	232(%rsp), %rdi
	callq	_Z3LBSddRd
	movsd	232(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB12_339:                             #   in Loop: Header=BB12_292 Depth=3
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movq	molecs(%rip), %rax
	movq	64(%rax), %rax
	movsd	%xmm1, (%rax,%r14,8)
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.LBB12_340:                             #   in Loop: Header=BB12_292 Depth=3
	movq	96(%rsp), %rbx                  # 8-byte Reload
	incl	%r12d
	cmpl	$3, %r12d
	jne	.LBB12_292
	jmp	.LBB12_341
.LBB12_332:                             #   in Loop: Header=BB12_292 Depth=3
	movq	352(%rax), %rax
	movq	56(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	divsd	(%rax,%rcx,8), %xmm2
	jmp	.LBB12_334
.LBB12_341:                             #   in Loop: Header=BB12_23 Depth=2
	movl	%r13d, 68(%rsp)
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movq	240(%rsp), %rcx                 # 8-byte Reload
	divsd	(%rax,%rcx,8), %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB12_343
# %bb.342:                              #   in Loop: Header=BB12_23 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB12_344
.LBB12_343:                             # %call.sqrt1952
                                        #   in Loop: Header=BB12_23 Depth=2
	callq	sqrt
.LBB12_344:                             # %.split1951
                                        #   in Loop: Header=BB12_23 Depth=2
	movsd	%xmm0, 144(%rsp)                # 8-byte Spill
	movsd	.LCPI12_19(%rip), %xmm3         # xmm3 = mem[0],zero
	movsd	200(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movq	gas(%rip), %r12
	movl	%r13d, %r15d
	movq	240(%rsp), %rcx                 # 8-byte Reload
	jmp	.LBB12_345
.LBB12_219:                             # %._crit_edge1308.._crit_edge1308.thread_crit_edge
                                        #   in Loop: Header=BB12_23 Depth=2
	movl	%eax, %r15d
	jmp	.LBB12_291
.LBB12_21:                              #   in Loop: Header=BB12_2 Depth=1
	movsd	.LCPI12_0(%rip), %xmm2          # xmm2 = mem[0],zero
	jmp	.LBB12_361
.LBB12_360:                             # %.loopexit1220.loopexit
                                        #   in Loop: Header=BB12_2 Depth=1
	movl	132(%rsp), %ebx
	movq	geom(%rip), %rax
.LBB12_361:                             # %.loopexit1220
                                        #   in Loop: Header=BB12_2 Depth=1
	leal	1(%rbx), %ecx
	movl	%ecx, 132(%rsp)
	cmpl	4(%rax), %ebx
	movl	%ecx, %ebx
	jl	.LBB12_2
.LBB12_362:                             # %._crit_edge1378
	callq	clock
	subq	start(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sd	%rax, %xmm0
	divsd	.LCPI12_27(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movl	$_ZSt4cout, %edi
	movl	$.L.str.312, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movb	$10, 111(%rsp)
	movq	(%rax), %rcx
	movq	-24(%rcx), %rcx
	cmpq	$0, 16(%rax,%rcx)
	je	.LBB12_364
# %bb.363:
	leaq	111(%rsp), %rsi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	jmp	.LBB12_365
.LBB12_325:
	movl	$_ZSt4cout, %edi
	movl	$99001, %esi                    # imm = 0x182B9
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	56(%rsp), %esi                  # 4-byte Reload
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$408, %rsp                      # imm = 0x198
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.LBB12_364:
	.cfi_def_cfa_offset 464
	movq	%rax, %rdi
	movl	$10, %esi
	callq	_ZNSo3putEc
.LBB12_365:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit
	movl	$1, 132(%rsp)
	movq	molecs(%rip), %rax
	cmpl	$0, 80(%rax)
	jle	.LBB12_370
# %bb.366:                              # %.lr.ph1381.preheader
	xorl	%r14d, %r14d
	leaq	132(%rsp), %rbx
.LBB12_367:                             # %.lr.ph1381
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rax), %rcx
	cmpl	$0, 4(%rcx,%r14,4)
	jns	.LBB12_369
# %bb.368:                              #   in Loop: Header=BB12_367 Depth=1
	movq	%rbx, %rdi
	callq	_Z10REMOVE_MOLRi
	movq	molecs(%rip), %rax
.LBB12_369:                             #   in Loop: Header=BB12_367 Depth=1
	leal	2(%r14), %ecx
	movl	%ecx, 132(%rsp)
	movslq	80(%rax), %rcx
	incq	%r14
	cmpq	%rcx, %r14
	jl	.LBB12_367
.LBB12_370:                             # %.loopexit
	addq	$408, %rsp                      # imm = 0x198
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB12_371:
	.cfi_def_cfa_offset 464
	movl	$_ZSt4cout, %edi
	movl	$.L.str.309, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
	movl	$_ZSt4cout, %edi
	movl	$.L.str.310, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movl	%r15d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.311, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	136(%rsp), %esi                 # 4-byte Reload
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	160(%rsp), %esi                 # 4-byte Reload
	callq	_ZNSolsEi
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
	movl	$_ZSt3cin, %edi
	addq	$408, %rsp                      # imm = 0x198
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSi3getEv                     # TAILCALL
.Lfunc_end12:
	.size	_Z10COLLISIONSv, .Lfunc_end12-_Z10COLLISIONSv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z11SAMPLE_FLOWv
.LCPI13_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI13_2:
	.quad	0x3fe0000000000000              # double 0.5
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI13_1:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.text
	.globl	_Z11SAMPLE_FLOWv
	.type	_Z11SAMPLE_FLOWv,@function
_Z11SAMPLE_FLOWv:                       # @_Z11SAMPLE_FLOWv
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	output(%rip), %rax
	incl	(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.155, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	output(%rip), %rax
	movl	(%rax), %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.156, %esi
	movl	$19, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	output(%rip), %rax
	movl	(%rax), %esi
	movq	%rbx, %rdi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	molecs(%rip), %rcx
	cmpl	$0, 80(%rcx)
	jle	.LBB13_19
# %bb.1:                                # %.lr.ph.preheader
	movl	$1, %ebx
	movq	geom(%rip), %rax
	movsd	.LCPI13_0(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB13_2:                               # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB13_9 Depth 2
                                        #     Child Loop BB13_17 Depth 2
	movq	(%rcx), %rdx
	movslq	(%rdx,%rbx,4), %r15
	movq	56(%rax), %rdx
	movq	24(%rdx), %rdx
	movl	(%rdx,%r15,4), %r14d
	cmpl	$1, 36(%rax)
	movapd	%xmm2, %xmm0
	jne	.LBB13_4
# %bb.3:                                #   in Loop: Header=BB13_2 Depth=1
	movsd	96(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	40(%rcx), %rcx
	movq	8(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	xorps	%xmm1, %xmm1
	cvtsi2sdl	24(%rax), %xmm1
	callq	pow
	movsd	.LCPI13_0(%rip), %xmm2          # xmm2 = mem[0],zero
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	addsd	%xmm2, %xmm0
.LBB13_4:                               #   in Loop: Header=BB13_2 Depth=1
	testl	%r14d, %r14d
	jle	.LBB13_22
# %bb.5:                                #   in Loop: Header=BB13_2 Depth=1
	movq	geom(%rip), %rax
	cmpl	(%rax), %r14d
	jg	.LBB13_22
# %bb.6:                                #   in Loop: Header=BB13_2 Depth=1
	movq	gas(%rip), %rdi
	cmpl	$2, 424(%rdi)
	movl	$1, %esi
	movq	molecs(%rip), %rcx
	jl	.LBB13_8
# %bb.7:                                #   in Loop: Header=BB13_2 Depth=1
	movq	8(%rcx), %rdx
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%rdx,%rbx,4), %xmm1
	andpd	.LCPI13_1(%rip), %xmm1
	cvttsd2si	%xmm1, %esi
.LBB13_8:                               #   in Loop: Header=BB13_2 Depth=1
	movq	output(%rip), %rdx
	movq	168(%rdx), %rdx
	movq	(%rdx), %r8
	movq	(%r8,%r14,8), %r8
	movslq	%esi, %rsi
	movsd	(%r8,%rsi,8), %xmm1             # xmm1 = mem[0],zero
	addsd	%xmm2, %xmm1
	movsd	%xmm1, (%r8,%rsi,8)
	movq	8(%rdx), %r8
	movq	(%r8,%r14,8), %r8
	movsd	(%r8,%rsi,8), %xmm1             # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%r8,%rsi,8)
	movq	48(%rcx), %r8
	xorl	%r9d, %r9d
.LBB13_9:                               #   Parent Loop BB13_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	16(%rdx,%r9,8), %r10
	movq	(%r10,%r14,8), %r10
	movq	8(%r8,%r9,8), %r11
	movsd	(%r11,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	addsd	(%r10,%rsi,8), %xmm1
	movsd	%xmm1, (%r10,%rsi,8)
	movq	40(%rdx,%r9,8), %r10
	movq	(%r10,%r14,8), %r10
	movsd	(%r11,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm1
	addsd	(%r10,%rsi,8), %xmm1
	movsd	%xmm1, (%r10,%rsi,8)
	incq	%r9
	cmpq	$3, %r9
	jne	.LBB13_9
# %bb.10:                               #   in Loop: Header=BB13_2 Depth=1
	cmpl	$0, 432(%rdi)
	jle	.LBB13_12
# %bb.11:                               #   in Loop: Header=BB13_2 Depth=1
	movq	64(%rdx), %r8
	movq	(%r8,%r14,8), %r8
	movq	64(%rcx), %r9
	movsd	(%r9,%rbx,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	addsd	(%r8,%rsi,8), %xmm1
	movsd	%xmm1, (%r8,%rsi,8)
.LBB13_12:                              #   in Loop: Header=BB13_2 Depth=1
	cmpl	$2, 452(%rdi)
	jl	.LBB13_14
# %bb.13:                               #   in Loop: Header=BB13_2 Depth=1
	movq	72(%rdx), %r8
	movq	(%r8,%r14,8), %r8
	movq	72(%rcx), %r9
	movsd	(%r9,%rbx,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	addsd	(%r8,%rsi,8), %xmm1
	movsd	%xmm1, (%r8,%rsi,8)
.LBB13_14:                              #   in Loop: Header=BB13_2 Depth=1
	cmpl	$0, 428(%rdi)
	jle	.LBB13_18
# %bb.15:                               #   in Loop: Header=BB13_2 Depth=1
	movq	472(%rdi), %rdi
	movl	(%rdi,%rsi,4), %edi
	testl	%edi, %edi
	jle	.LBB13_18
# %bb.16:                               # %.preheader
                                        #   in Loop: Header=BB13_2 Depth=1
	movq	32(%rcx), %r8
	xorl	%r9d, %r9d
.LBB13_17:                              #   Parent Loop BB13_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	80(%rdx,%r9,8), %r10
	movq	8(%r8,%r9,8), %r11
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%r11,%rbx,4), %xmm1
	movq	(%r10,%r14,8), %r10
	mulsd	%xmm0, %xmm1
	addsd	(%r10,%rsi,8), %xmm1
	movsd	%xmm1, (%r10,%rsi,8)
	incq	%r9
	cmpq	%r9, %rdi
	jne	.LBB13_17
.LBB13_18:                              # %.loopexit
                                        #   in Loop: Header=BB13_2 Depth=1
	leaq	1(%rbx), %rdx
	movslq	80(%rcx), %rsi
	cmpq	%rsi, %rbx
	movq	%rdx, %rbx
	jl	.LBB13_2
.LBB13_19:                              # %._crit_edge
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	104(%rax), %xmm1                # xmm1 = mem[0],zero
	mulsd	.LCPI13_2(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB13_21
# %bb.20:
	movsd	120(%rax), %xmm0                # xmm0 = mem[0],zero
	addsd	184(%rax), %xmm0
	movsd	%xmm0, 120(%rax)
.LBB13_21:
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB13_22:
	.cfi_def_cfa_offset 48
	movl	$_ZSt4cout, %edi
	movl	$.L.str.157, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movl	%r14d, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.158, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%r14, %rdi
	movl	%r15d, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.159, %esi
	movl	$11, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%r14, %rdi
	movl	%ebx, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.160, %esi
	movl	$6, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end13:
	.size	_Z11SAMPLE_FLOWv, .Lfunc_end13-_Z11SAMPLE_FLOWv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z14OUTPUT_RESULTSv
.LCPI14_0:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI14_1:
	.quad	0x402921fb54442d18              # double 12.566370614359172
.LCPI14_2:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
.LCPI14_3:
	.quad	0x3eb0c6f7a0b5ed8d              # double 9.9999999999999995E-7
.LCPI14_4:
	.quad	0x4008000000000000              # double 3
.LCPI14_5:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI14_6:
	.quad	0x44beaccb0dc67a28              # double 1.4485846603575976E+23
.LCPI14_7:
	.quad	0x4059000000000000              # double 100
.LCPI14_8:
	.quad	0x3ff199999999999a              # double 1.1000000000000001
.LCPI14_9:
	.quad	0x3fb999999999999a              # double 0.10000000000000001
.LCPI14_10:
	.quad	0x3ff0000000000000              # double 1
.LCPI14_12:
	.quad	0x3b490964f22daa28              # double 4.1419740000000001E-23
.LCPI14_14:
	.quad	0x3ddb7cdfd9d7bdbb              # double 1.0E-10
.LCPI14_15:
	.quad	0x3f847ae147ae147b              # double 0.01
.LCPI14_16:
	.quad	0x3ee4f8b588e368f1              # double 1.0000000000000001E-5
.LCPI14_17:
	.quad	0x4000000000000000              # double 2
.LCPI14_18:
	.quad	0x4202a05f20000000              # double 1.0E+10
.LCPI14_19:
	.quad	0x3fed7b7414a4d2b3              # double 0.92132000000000003
.LCPI14_20:
	.quad	0x408f400000000000              # double 1000
.LCPI14_21:
	.quad	0x3ff20dd750429b6d              # double 1.1283791670955126
.LCPI14_22:
	.quad	0x3b40b0edf6c91c1b              # double 2.7613160000000003E-23
.LCPI14_23:
	.quad	0x400c5bf891b4ef6b              # double 3.5449077018110322
.LCPI14_24:
	.quad	0x3b50b0edf6c91c1b              # double 5.5226320000000005E-23
.LCPI14_25:
	.quad	0x412e848000000000              # double 1.0E+6
.LCPI14_26:
	.quad	0x4034000000000000              # double 20
.LCPI14_27:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI14_11:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
.LCPI14_13:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z14OUTPUT_RESULTSv
	.type	_Z14OUTPUT_RESULTSv,@function
_Z14OUTPUT_RESULTSv:                    # @_Z14OUTPUT_RESULTSv
.Lfunc_begin5:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception5
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$2280, %rsp                     # imm = 0x8E8
	.cfi_def_cfa_offset 2336
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	leaq	696(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
.Ltmp1323:
	leaq	1224(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
.Ltmp1324:
# %bb.1:
.Ltmp1326:
	leaq	1752(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
.Ltmp1327:
# %bb.2:
	leaq	400(%rsp), %rcx
	movq	%rcx, -16(%rcx)
	xorl	%eax, %eax
	movq	%rax, -8(%rcx)
	movb	%al, (%rcx)
	leaq	368(%rsp), %rcx
	movq	%rcx, -16(%rcx)
	movq	%rax, -8(%rcx)
	movb	%al, (%rcx)
	movq	gas(%rip), %rbx
	movslq	428(%rbx), %r14
	cmpq	$-1, %r14
	leaq	8(,%r14,8), %rax
	movq	$-1, %rdi
	cmovgeq	%rax, %rdi
.Ltmp1329:
	callq	_Znam
	movq	%rax, 112(%rsp)                 # 8-byte Spill
.Ltmp1330:
# %bb.3:                                # %.preheader2368
	testl	%r14d, %r14d
	js	.LBB14_7
# %bb.4:                                # %.lr.ph
	movq	$-1, %r14
	movq	$-1, %r15
.LBB14_5:                               # =>This Inner Loop Header: Depth=1
	movslq	424(%rbx), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r14, %rdi
.Ltmp1331:
	callq	_Znam
.Ltmp1332:
# %bb.6:                                #   in Loop: Header=BB14_5 Depth=1
	movq	112(%rsp), %rcx                 # 8-byte Reload
	movq	%rax, 8(%rcx,%r15,8)
	movslq	428(%rbx), %rax
	incq	%r15
	cmpq	%rax, %r15
	jl	.LBB14_5
.LBB14_7:                               # %._crit_edge
	movslq	424(%rbx), %r15
	cmpq	$-1, %r15
	leaq	8(,%r15,8), %rdi
	movq	$-1, %r12
	movq	%rdi, (%rsp)                    # 8-byte Spill
	cmovlq	%r12, %rdi
.Ltmp1334:
	callq	_Znam
	movq	%rax, 80(%rsp)                  # 8-byte Spill
.Ltmp1335:
# %bb.8:
	movq	geom(%rip), %r14
	movslq	(%r14), %r13
	cmpq	$-1, %r13
	leaq	8(,%r13,8), %rdi
	cmovlq	%r12, %rdi
.Ltmp1336:
	callq	_Znam
	movq	%rax, 176(%rsp)                 # 8-byte Spill
.Ltmp1337:
# %bb.9:                                # %.preheader2367
	testl	%r13d, %r13d
	js	.LBB14_10
# %bb.45:                               # %.lr.ph2401.preheader
	xorl	%r12d, %r12d
	movq	$-1, %r13
.LBB14_46:                              # %.lr.ph2401
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_49 Depth 2
	movslq	428(%rbx), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r13, %rdi
.Ltmp1338:
	callq	_Znam
.Ltmp1339:
# %bb.47:                               #   in Loop: Header=BB14_46 Depth=1
	movq	%rax, %r15
	movq	176(%rsp), %rax                 # 8-byte Reload
	movq	%r15, (%rax,%r12,8)
	cmpl	$0, 428(%rbx)
	js	.LBB14_51
# %bb.48:                               # %.lr.ph2397.preheader
                                        #   in Loop: Header=BB14_46 Depth=1
	movq	$-1, %rbp
.LBB14_49:                              # %.lr.ph2397
                                        #   Parent Loop BB14_46 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movslq	424(%rbx), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r13, %rdi
.Ltmp1341:
	callq	_Znam
.Ltmp1342:
# %bb.50:                               #   in Loop: Header=BB14_49 Depth=2
	movq	%rax, 8(%r15,%rbp,8)
	movslq	428(%rbx), %rax
	incq	%rbp
	cmpq	%rax, %rbp
	jl	.LBB14_49
.LBB14_51:                              # %._crit_edge2398
                                        #   in Loop: Header=BB14_46 Depth=1
	leaq	1(%r12), %rax
	movslq	(%r14), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_46
# %bb.37:                               # %._crit_edge2402.loopexit
	movslq	424(%rbx), %r15
	leaq	8(,%r15,8), %rax
	movq	%r15, %r13
	incq	%r13
	movl	%r13d, %ebp
	jmp	.LBB14_38
.LBB14_10:
	movq	%r15, %r13
	incq	%r13
	movl	%r13d, %ebp
	movq	(%rsp), %rax                    # 8-byte Reload
.LBB14_38:                              # %._crit_edge2402
	cmpl	$-1, %r15d
	movq	$-1, %r12
	movq	%rax, (%rsp)                    # 8-byte Spill
	cmovgeq	%rax, %r12
.Ltmp1344:
	movq	%r12, %rdi
	callq	_Znam
	movq	%rax, 96(%rsp)                  # 8-byte Spill
.Ltmp1345:
# %bb.39:
.Ltmp1346:
	movq	%r12, %rdi
	callq	_Znam
	movq	%rax, 104(%rsp)                 # 8-byte Spill
.Ltmp1347:
# %bb.40:
.Ltmp1348:
	movq	%r12, %rdi
	callq	_Znam
	movq	%rax, 312(%rsp)                 # 8-byte Spill
.Ltmp1349:
# %bb.41:
	shlq	$2, %r13
	cmpl	$-1, %r15d
	movq	$-1, %rdi
	cmovgeq	%r13, %rdi
.Ltmp1350:
	callq	_Znam
	movq	%rax, 40(%rsp)                  # 8-byte Spill
.Ltmp1351:
# %bb.42:
.Ltmp1352:
	movq	%r12, %rdi
	callq	_Znam
	movq	%rax, 136(%rsp)                 # 8-byte Spill
.Ltmp1353:
# %bb.43:                               # %.preheader2366
	testl	%r15d, %r15d
	js	.LBB14_44
# %bb.68:                               # %.lr.ph2405.preheader
	movq	$-1, %r12
	movq	$-1, %r13
.LBB14_69:                              # %.lr.ph2405
                                        # =>This Inner Loop Header: Depth=1
	movslq	%ebp, %rdi
	shlq	$3, %rdi
	cmpl	$-1, %r15d
	cmovlq	%r12, %rdi
.Ltmp1354:
	callq	_Znam
.Ltmp1355:
# %bb.70:                               #   in Loop: Header=BB14_69 Depth=1
	movq	136(%rsp), %rcx                 # 8-byte Reload
	movq	%rax, 8(%rcx,%r13,8)
	movslq	424(%rbx), %r15
	leaq	1(%r15), %rbp
	incq	%r13
	cmpq	%r15, %r13
	jl	.LBB14_69
# %bb.53:                               # %._crit_edge2406.loopexit
	shlq	$3, %rbp
	movq	%rbp, %rdi
	jmp	.LBB14_54
.LBB14_44:
	movq	(%rsp), %rdi                    # 8-byte Reload
.LBB14_54:                              # %._crit_edge2406
	cmpl	$-1, %r15d
	movq	$-1, %rbx
	cmovlq	%rbx, %rdi
.Ltmp1357:
	callq	_Znam
	movq	%rax, 168(%rsp)                 # 8-byte Spill
.Ltmp1358:
# %bb.55:
	movslq	(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%rbx, %rdi
.Ltmp1359:
	callq	_Znam
.Ltmp1360:
# %bb.56:
	movq	calc(%rip), %rcx
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movsd	104(%rcx), %xmm1                # xmm1 = mem[0],zero
	mulsd	.LCPI14_0(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	movq	%rax, 64(%rsp)                  # 8-byte Spill
	jbe	.LBB14_109
# %bb.57:
	movq	output(%rip), %rax
	movl	8(%rax), %ecx
	leal	1(%rcx), %edx
	leal	-9998(%rcx), %esi
	cmpl	$9999, %ecx                     # imm = 0x270F
	cmovll	%edx, %esi
	movl	%esi, 8(%rax)
.Ltmp1361:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.201, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1362:
# %bb.58:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	output(%rip), %rax
	movl	8(%rax), %esi
.Ltmp1363:
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
.Ltmp1364:
# %bb.59:
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1365:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1366:
# %bb.60:                               # %.noexc1862
.Ltmp1367:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1368:
# %bb.61:                               # %.noexc1863
.Ltmp1369:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1370:
# %bb.62:                               # %_ZNSolsEPFRSoS_E.exit
	movq	calc(%rip), %rax
	cmpl	$0, 20(%rax)
	je	.LBB14_63
# %bb.72:
	movq	output(%rip), %rax
	movl	$10000, %ebx                    # imm = 0x2710
	addl	8(%rax), %ebx
	movl	%ebx, %r15d
	negl	%r15d
	cmovsl	%ebx, %r15d
	movl	$1, %r13d
	cmpl	$10, %r15d
	jb	.LBB14_81
# %bb.73:                               # %.lr.ph.i.i.preheader
	movl	$4, %r13d
	movl	$3518437209, %eax               # imm = 0xD1B71759
	movl	%r15d, %ecx
.LBB14_74:                              # %.lr.ph.i.i
                                        # =>This Inner Loop Header: Depth=1
	cmpl	$99, %ecx
	jbe	.LBB14_75
# %bb.76:                               #   in Loop: Header=BB14_74 Depth=1
	cmpl	$999, %ecx                      # imm = 0x3E7
	jbe	.LBB14_77
# %bb.78:                               #   in Loop: Header=BB14_74 Depth=1
	cmpl	$10000, %ecx                    # imm = 0x2710
	jb	.LBB14_81
# %bb.79:                               #   in Loop: Header=BB14_74 Depth=1
	movl	%ecx, %edx
	imulq	%rax, %rdx
	shrq	$45, %rdx
	addl	$4, %r13d
	cmpl	$99999, %ecx                    # imm = 0x1869F
	movl	%edx, %ecx
	ja	.LBB14_74
# %bb.80:                               # %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i.loopexit
	addl	$-3, %r13d
	jmp	.LBB14_81
.LBB14_63:
.Ltmp1401:
	leaq	696(%rsp), %rdi
	movl	$.L.str.202, %esi
	movl	$16, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp1402:
# %bb.64:                               # %.invoke
	leaq	824(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.203, %ecx
	movl	$.L.str.204, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %edx
	xorq	$21, %rdx
.Ltmp1403:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1404:
# %bb.65:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1129.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp1405:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1406:
# %bb.66:                               # %.noexc1865.invoke
.Ltmp1407:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp1408:
# %bb.67:                               # %.noexc1866.invoke
.Ltmp1409:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1410:
	jmp	.LBB14_109
.LBB14_75:
	addl	$-2, %r13d
	jmp	.LBB14_81
.LBB14_77:
	decl	%r13d
.LBB14_81:                              # %_ZNSt8__detail14__to_chars_lenIjEEjT_i.exit.i
	shrl	$31, %ebx
	leal	(%rbx,%r13), %esi
	leaq	432(%rsp), %rbp
	movq	%rbp, -16(%rbp)
.Ltmp1371:
	leaq	416(%rsp), %rdi
	movl	$45, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc
.Ltmp1372:
# %bb.82:                               # %_ZNSt7__cxx119to_stringEi.exit
	movl	%ebx, %edi
	leaq	416(%rsp), %r14
	addq	(%r14), %rdi
	movl	%r13d, %esi
	movl	%r15d, %edx
	callq	_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_
	leaq	352(%rsp), %rdi
	movq	%r14, %rsi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_
	movq	(%r14), %rdi
	cmpq	%rbp, %rdi
	je	.LBB14_84
# %bb.83:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i
	callq	_ZdlPv
.LBB14_84:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit
	movq	352(%rsp), %r12
	movq	360(%rsp), %r13
	leaq	336(%rsp), %r15
	movq	%r15, -16(%r15)
	movq	$0, -8(%r15)
	movb	$0, (%r15)
	leaq	2(%r13), %rsi
.Ltmp1374:
	leaq	320(%rsp), %rdi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm
.Ltmp1375:
# %bb.85:
.Ltmp1376:
	leaq	320(%rsp), %rdi
	movl	$.L.str.205, %esi
	movl	$2, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm
.Ltmp1377:
# %bb.86:
.Ltmp1378:
	leaq	320(%rsp), %rdi
	movq	%r12, %rsi
	movq	%r13, %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm
.Ltmp1379:
# %bb.87:                               # %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_.exit
.Ltmp1381:
	leaq	320(%rsp), %rdi
	movl	$.L.str.206, %esi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc
.Ltmp1382:
# %bb.88:                               # %.noexc
	movq	%rax, %r12
	movq	%rbp, 416(%rsp)
	movq	(%rax), %rsi
	movq	%rax, %rbx
	addq	$16, %rbx
	cmpq	%rbx, %rsi
	je	.LBB14_89
# %bb.91:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1133
	movq	%rsi, 416(%rsp)
	movq	16(%r12), %rax
	movq	%rax, 432(%rsp)
	movq	8(%r12), %r13
	jmp	.LBB14_92
.LBB14_89:
	movq	8(%r12), %r13
	leaq	1(%r13), %rdx
	movq	%rbp, %rdi
	callq	memcpy@PLT
.LBB14_92:
	leaq	416(%rsp), %r14
	movq	%r13, 8(%r14)
	movq	%rbx, (%r12)
	movq	$0, 8(%r12)
	movb	$0, 16(%r12)
	leaq	384(%rsp), %rdi
	movq	%r14, %rsi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_
	movq	(%r14), %rdi
	cmpq	%rbp, %rdi
	je	.LBB14_94
# %bb.93:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1134
	callq	_ZdlPv
.LBB14_94:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1136
	movq	320(%rsp), %rdi
	cmpq	%r15, %rdi
	je	.LBB14_96
# %bb.95:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1137
	callq	_ZdlPv
.LBB14_96:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1139
	leaq	824(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movq	384(%rsp), %rsi
	movq	392(%rsp), %rdx
	testb	%al, %al
	je	.LBB14_104
# %bb.97:
.Ltmp1390:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1391:
# %bb.98:                               # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit
.Ltmp1392:
	movq	%rax, %r13
	movl	$.L.str.207, %esi
	movl	$10, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1393:
# %bb.99:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1142
	movq	(%r13), %rax
	movq	-24(%rax), %rdi
	addq	%r13, %rdi
.Ltmp1394:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1395:
	jmp	.LBB14_107
.LBB14_104:
.Ltmp1384:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1385:
# %bb.105:                              # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit1149
.Ltmp1386:
	movq	%rax, %r13
	movl	$.L.str.208, %esi
	movl	$11, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1387:
# %bb.106:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1151
	movq	(%r13), %rax
	movq	-24(%rax), %rdi
	addq	%r13, %rdi
.Ltmp1388:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1389:
.LBB14_107:                             # %.noexc1877.invoke
.Ltmp1396:
	movsbl	%al, %esi
	movq	%r13, %rdi
	callq	_ZNSo3putEc
.Ltmp1397:
# %bb.108:                              # %.noexc1878.invoke
.Ltmp1398:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1399:
.LBB14_109:                             # %_ZNSolsEPFRSoS_E.exit1130
	movq	geom(%rip), %r13
	movl	(%r13), %ebx
	movq	output(%rip), %r14
	leal	1(%rbx), %r12d
	shlq	$3, %r12
	xorl	%r15d, %r15d
.LBB14_110:                             # %.preheader2365
                                        # =>This Inner Loop Header: Depth=1
	testl	%ebx, %ebx
	js	.LBB14_112
# %bb.111:                              # %.lr.ph2411
                                        #   in Loop: Header=BB14_110 Depth=1
	movq	136(%r14), %rax
	movq	(%rax,%r15,8), %rdi
	xorl	%esi, %esi
	movq	%r12, %rdx
	callq	memset@PLT
.LBB14_112:                             # %._crit_edge2412
                                        #   in Loop: Header=BB14_110 Depth=1
	incq	%r15
	cmpq	$24, %r15
	jne	.LBB14_110
# %bb.113:
	movl	24(%r13), %edx
	movq	calc(%rip), %rsi
	movq	output(%rip), %r15
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
	testl	%edx, %edx
	jne	.LBB14_115
# %bb.114:
	movsd	80(%rsi), %xmm0                 # xmm0 = mem[0],zero
	movsd	96(%rsi), %xmm1                 # xmm1 = mem[0],zero
	subsd	32(%r15), %xmm0
	divsd	%xmm0, %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movsd	%xmm1, 48(%rsp)
.LBB14_115:
	movq	40(%r13), %rdi
	movq	gas(%rip), %rax
	movq	%rax, 144(%rsp)                 # 8-byte Spill
	movl	$1, %r12d
	leaq	456(%rsp), %r14
	movq	%r13, 184(%rsp)                 # 8-byte Spill
	movl	%edx, 88(%rsp)                  # 4-byte Spill
	movq	%rsi, 120(%rsp)                 # 8-byte Spill
	movq	%rdi, 128(%rsp)                 # 8-byte Spill
.LBB14_116:                             # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_125 Depth 2
                                        #       Child Loop BB14_126 Depth 3
                                        #         Child Loop BB14_127 Depth 4
	cmpl	$2, %edx
	je	.LBB14_119
# %bb.117:                              #   in Loop: Header=BB14_116 Depth=1
	cmpl	$1, %edx
	jne	.LBB14_121
# %bb.118:                              # %.thread
                                        #   in Loop: Header=BB14_116 Depth=1
	movsd	96(%rsi), %xmm0                 # xmm0 = mem[0],zero
	movq	128(%r13), %rax
	movsd	(%rax,%r12,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	.LCPI14_2(%rip), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.LBB14_120
.LBB14_119:                             #   in Loop: Header=BB14_116 Depth=1
	movsd	96(%rsi), %xmm0                 # xmm0 = mem[0],zero
	movq	128(%r13), %rax
	movsd	(%rax,%r12,8), %xmm1            # xmm1 = mem[0],zero
	movapd	%xmm1, %xmm2
	mulsd	.LCPI14_1(%rip), %xmm2
	divsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
.LBB14_120:                             # %.sink.split
                                        #   in Loop: Header=BB14_116 Depth=1
	movsd	80(%rsi), %xmm1                 # xmm1 = mem[0],zero
	subsd	32(%r15), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
.LBB14_121:                             #   in Loop: Header=BB14_116 Depth=1
	cmpl	$2, (%rdi,%r12,4)
	jne	.LBB14_140
# %bb.122:                              # %.preheader2361.preheader
                                        #   in Loop: Header=BB14_116 Depth=1
	movl	$240, %edx
	leaq	448(%rsp), %rdi
	xorl	%esi, %esi
	callq	memset@PLT
	movq	144(%rsp), %rax                 # 8-byte Reload
	movl	424(%rax), %eax
	testl	%eax, %eax
	jle	.LBB14_123
# %bb.124:                              # %.preheader2360.lr.ph
                                        #   in Loop: Header=BB14_116 Depth=1
	movq	192(%r15), %rcx
	leaq	1(%rax), %rdx
	movl	$1, %esi
.LBB14_125:                             # %.preheader2360
                                        #   Parent Loop BB14_116 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_126 Depth 3
                                        #         Child Loop BB14_127 Depth 4
	movq	%r14, %rdi
	xorl	%r8d, %r8d
.LBB14_126:                             # %.preheader2359
                                        #   Parent Loop BB14_116 Depth=1
                                        #     Parent Loop BB14_125 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB14_127 Depth 4
	movq	(%rcx,%r8,8), %r9
	movq	(%r9,%r12,8), %r9
	movq	(%r9,%rsi,8), %r9
	xorl	%r10d, %r10d
.LBB14_127:                             #   Parent Loop BB14_116 Depth=1
                                        #     Parent Loop BB14_125 Depth=2
                                        #       Parent Loop BB14_126 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movsd	(%rdi,%r10,8), %xmm0            # xmm0 = mem[0],zero
	addsd	8(%r9,%r10,8), %xmm0
	movsd	%xmm0, (%rdi,%r10,8)
	incq	%r10
	cmpq	$2, %r10
	jne	.LBB14_127
# %bb.128:                              #   in Loop: Header=BB14_126 Depth=3
	incq	%r8
	addq	$24, %rdi
	cmpq	$9, %r8
	jne	.LBB14_126
# %bb.129:                              #   in Loop: Header=BB14_125 Depth=2
	incq	%rsi
	cmpq	%rdx, %rsi
	jne	.LBB14_125
# %bb.130:                              # %._crit_edge2420.loopexit
                                        #   in Loop: Header=BB14_116 Depth=1
	movsd	456(%rsp), %xmm15               # xmm15 = mem[0],zero
	movsd	480(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	488(%rsp), %xmm14               # xmm14 = mem[0],zero
	movsd	504(%rsp), %xmm11               # xmm11 = mem[0],zero
	movsd	512(%rsp), %xmm12               # xmm12 = mem[0],zero
	movsd	528(%rsp), %xmm9                # xmm9 = mem[0],zero
	movsd	536(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	%xmm1, 72(%rsp)                 # 8-byte Spill
	movsd	552(%rsp), %xmm7                # xmm7 = mem[0],zero
	movsd	560(%rsp), %xmm10               # xmm10 = mem[0],zero
	movsd	576(%rsp), %xmm5                # xmm5 = mem[0],zero
	movsd	584(%rsp), %xmm8                # xmm8 = mem[0],zero
	movsd	600(%rsp), %xmm3                # xmm3 = mem[0],zero
	movsd	608(%rsp), %xmm6                # xmm6 = mem[0],zero
	movsd	624(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	632(%rsp), %xmm4                # xmm4 = mem[0],zero
	movsd	648(%rsp), %xmm13               # xmm13 = mem[0],zero
	jmp	.LBB14_131
.LBB14_123:                             #   in Loop: Header=BB14_116 Depth=1
	xorpd	%xmm13, %xmm13
	xorpd	%xmm4, %xmm4
	xorpd	%xmm1, %xmm1
	xorpd	%xmm6, %xmm6
	xorpd	%xmm3, %xmm3
	xorpd	%xmm8, %xmm8
	xorpd	%xmm5, %xmm5
	xorpd	%xmm10, %xmm10
	xorpd	%xmm7, %xmm7
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 72(%rsp)                 # 8-byte Spill
	xorpd	%xmm9, %xmm9
	xorpd	%xmm12, %xmm12
	xorpd	%xmm11, %xmm11
	xorpd	%xmm14, %xmm14
	xorps	%xmm15, %xmm15
.LBB14_131:                             # %._crit_edge2420
                                        #   in Loop: Header=BB14_116 Depth=1
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movq	144(%r15), %rcx
	movq	(%rcx), %rdx
	movsd	%xmm15, (%rdx,%r12,8)
	movq	8(%rcx), %rdx
	movsd	%xmm0, (%rdx,%r12,8)
	movq	16(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm0, %xmm15
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm15
	movq	24(%rcx), %rdx
	movsd	%xmm15, (%rdx,%r12,8)
	mulsd	%xmm2, %xmm14
	movq	32(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm11, %xmm14
	movq	40(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	movapd	%xmm12, %xmm15
	mulsd	%xmm12, %xmm14
	movq	48(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm9, %xmm14
	movq	56(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	movsd	72(%rsp), %xmm12                # 8-byte Reload
                                        # xmm12 = mem[0],zero
	mulsd	%xmm12, %xmm14
	movq	64(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm7, %xmm14
	movq	72(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm10, %xmm14
	movq	80(%rcx), %rdx
	movsd	%xmm14, (%rdx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm5, %xmm14
	movq	88(%rcx), %rax
	movq	%rax, 56(%rsp)                  # 8-byte Spill
	movsd	%xmm14, (%rax,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm8, %xmm14
	movq	96(%rcx), %rax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	movsd	%xmm14, (%rax,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm3, %xmm14
	movq	104(%rcx), %r10
	movsd	%xmm14, (%r10,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm6, %xmm14
	movq	112(%rcx), %rdi
	movsd	%xmm14, (%rdi,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm1, %xmm14
	movq	120(%rcx), %rbx
	movsd	%xmm14, (%rbx,%r12,8)
	movapd	%xmm2, %xmm14
	mulsd	%xmm4, %xmm14
	movq	128(%rcx), %r11
	movsd	%xmm14, (%r11,%r12,8)
	mulsd	%xmm2, %xmm13
	movq	264(%rcx), %r8
	movsd	%xmm13, (%r8,%r12,8)
	movsd	656(%rsp), %xmm13               # xmm13 = mem[0],zero
	mulsd	%xmm2, %xmm13
	movq	272(%rcx), %r9
	movsd	%xmm13, (%r9,%r12,8)
	movq	152(%r15), %r13
	movq	8(%r13), %rbp
	movsd	(%rbp,%r12,8), %xmm13           # xmm13 = mem[0],zero
	ucomisd	.LCPI14_3(%rip), %xmm13
	movapd	%xmm15, %xmm2
	jbe	.LBB14_134
# %bb.132:                              #   in Loop: Header=BB14_116 Depth=1
	movq	16(%r13), %rax
	movq	24(%r13), %rdx
	movsd	(%rdx,%r12,8), %xmm13           # xmm13 = mem[0],zero
	divsd	(%rax,%r12,8), %xmm13
	movq	152(%rcx), %rdx
	movsd	%xmm13, (%rdx,%r12,8)
	movq	32(%r13), %rsi
	movsd	(%rsi,%r12,8), %xmm14           # xmm14 = mem[0],zero
	movsd	(%rax,%r12,8), %xmm15           # xmm15 = mem[0],zero
	mulsd	%xmm13, %xmm15
	mulsd	%xmm13, %xmm15
	subsd	%xmm15, %xmm14
	movsd	(%rbp,%r12,8), %xmm13           # xmm13 = mem[0],zero
	mulsd	.LCPI14_4(%rip), %xmm13
	mulsd	.LCPI14_5(%rip), %xmm13
	divsd	%xmm13, %xmm14
	movq	144(%rsp), %rsi                 # 8-byte Reload
	subsd	192(%rsi,%r12,8), %xmm14
	movq	160(%rcx), %rax
	movsd	%xmm14, (%rax,%r12,8)
	movsd	(%rdx,%r12,8), %xmm13           # xmm13 = mem[0],zero
	subsd	240(%rsi,%r12,8), %xmm13
	movsd	%xmm13, (%rdx,%r12,8)
	movq	48(%r13), %rax
	movsd	(%rax,%r12,8), %xmm14           # xmm14 = mem[0],zero
	xorpd	%xmm13, %xmm13
	ucomisd	.LCPI14_3(%rip), %xmm14
	movq	120(%rsp), %rsi                 # 8-byte Reload
	jbe	.LBB14_135
# %bb.133:                              #   in Loop: Header=BB14_116 Depth=1
	movq	40(%r13), %rax
	movsd	(%rax,%r12,8), %xmm13           # xmm13 = mem[0],zero
	divsd	%xmm14, %xmm13
	mulsd	.LCPI14_6(%rip), %xmm13
	movq	144(%rsp), %rax                 # 8-byte Reload
	subsd	192(%rax,%r12,8), %xmm13
	jmp	.LBB14_135
.LBB14_134:                             #   in Loop: Header=BB14_116 Depth=1
	movq	152(%rcx), %rax
	xorl	%edx, %edx
	movq	%rdx, (%rax,%r12,8)
	movq	160(%rcx), %rax
	movq	%rdx, (%rax,%r12,8)
	xorpd	%xmm13, %xmm13
	movq	120(%rsp), %rsi                 # 8-byte Reload
.LBB14_135:                             #   in Loop: Header=BB14_116 Depth=1
	movq	168(%rcx), %rax
	movsd	%xmm13, (%rax,%r12,8)
	addsd	%xmm2, %xmm11
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm11
	movq	176(%rcx), %rax
	movsd	%xmm11, (%rax,%r12,8)
	addsd	%xmm12, %xmm9
	mulsd	%xmm2, %xmm9
	movq	184(%rcx), %rax
	movsd	%xmm9, (%rax,%r12,8)
	addsd	%xmm10, %xmm7
	mulsd	%xmm2, %xmm7
	movq	192(%rcx), %rax
	movsd	%xmm7, (%rax,%r12,8)
	addsd	%xmm8, %xmm5
	mulsd	%xmm2, %xmm5
	movq	200(%rcx), %rax
	movsd	%xmm5, (%rax,%r12,8)
	addsd	%xmm6, %xmm3
	mulsd	%xmm2, %xmm3
	movq	208(%rcx), %rax
	movsd	%xmm3, (%rax,%r12,8)
	addsd	%xmm4, %xmm1
	mulsd	%xmm2, %xmm1
	movq	216(%rcx), %rax
	movsd	%xmm1, (%rax,%r12,8)
	movsd	672(%rsp), %xmm1                # xmm1 = mem[0],zero
	addsd	680(%rsp), %xmm1
	mulsd	%xmm2, %xmm1
	movq	224(%rcx), %rax
	movsd	%xmm1, (%rax,%r12,8)
	movq	56(%rsp), %rax                  # 8-byte Reload
	movsd	(%rax,%r12,8), %xmm1            # xmm1 = mem[0],zero
	addsd	(%r10,%r12,8), %xmm1
	addsd	(%rbx,%r12,8), %xmm1
	addsd	(%r8,%r12,8), %xmm1
	movq	232(%rcx), %rax
	movsd	%xmm1, (%rax,%r12,8)
	movq	32(%rsp), %rdx                  # 8-byte Reload
	movsd	(%rdx,%r12,8), %xmm1            # xmm1 = mem[0],zero
	addsd	(%rdi,%r12,8), %xmm1
	addsd	(%r11,%r12,8), %xmm1
	addsd	(%r9,%r12,8), %xmm1
	movq	240(%rcx), %rdx
	movsd	%xmm1, (%rdx,%r12,8)
	addsd	(%rax,%r12,8), %xmm1
	movq	248(%rcx), %rax
	movsd	%xmm1, (%rax,%r12,8)
	movsd	(%r8,%r12,8), %xmm1             # xmm1 = mem[0],zero
	addsd	(%r9,%r12,8), %xmm1
	movq	280(%rcx), %rax
	movsd	%xmm1, (%rax,%r12,8)
	cmpq	$0, 24(%rsp)                    # 8-byte Folded Reload
	movq	184(%rsp), %r13                 # 8-byte Reload
	movl	88(%rsp), %edx                  # 4-byte Reload
	movq	128(%rsp), %rdi                 # 8-byte Reload
	jne	.LBB14_136
.LBB14_140:                             # %.loopexit2362
                                        #   in Loop: Header=BB14_116 Depth=1
	incq	%r12
	cmpq	$3, %r12
	jne	.LBB14_116
# %bb.141:                              # %.preheader2358
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 48(%rsp)
	movl	(%r13), %eax
	movq	gas(%rip), %rcx
	movq	%rcx, 24(%rsp)                  # 8-byte Spill
	movq	%rax, (%rsp)                    # 8-byte Spill
	leal	1(%rax), %r15d
	xorl	%r13d, %r13d
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
.LBB14_142:                             # %.preheader2357
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_144 Depth 2
	cmpl	$0, (%rsp)                      # 4-byte Folded Reload
	js	.LBB14_147
# %bb.143:                              # %.preheader2356.lr.ph
                                        #   in Loop: Header=BB14_142 Depth=1
	movq	24(%rsp), %rax                  # 8-byte Reload
	movl	424(%rax), %ebp
	movq	output(%rip), %r14
	leal	1(%rbp), %r12d
	shlq	$3, %r12
	xorl	%ebx, %ebx
.LBB14_144:                             # %.preheader2356
                                        #   Parent Loop BB14_142 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	testl	%ebp, %ebp
	js	.LBB14_146
# %bb.145:                              # %.lr.ph2432
                                        #   in Loop: Header=BB14_144 Depth=2
	movq	176(%r14), %rax
	movq	(%rax,%r13,8), %rax
	movq	(%rax,%rbx,8), %rdi
	xorl	%esi, %esi
	movq	%r12, %rdx
	callq	memset@PLT
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
.LBB14_146:                             # %._crit_edge2433
                                        #   in Loop: Header=BB14_144 Depth=2
	incq	%rbx
	cmpq	%rbx, %r15
	jne	.LBB14_144
.LBB14_147:                             # %._crit_edge2436
                                        #   in Loop: Header=BB14_142 Depth=1
	incq	%r13
	cmpq	$13, %r13
	jne	.LBB14_142
# %bb.148:                              # %.preheader2355
	movq	geom(%rip), %rax
	movl	(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB14_149
# %bb.150:                              # %.lr.ph2554
	movl	$1, %r14d
                                        # implicit-def: $xmm13
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	96(%rsp), %r13                  # 8-byte Reload
	movq	64(%rsp), %r15                  # 8-byte Reload
.LBB14_151:                             # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_159 Depth 2
                                        #       Child Loop BB14_160 Depth 3
                                        #     Child Loop BB14_169 Depth 2
                                        #       Child Loop BB14_174 Depth 3
                                        #     Child Loop BB14_184 Depth 2
                                        #     Child Loop BB14_194 Depth 2
                                        #       Child Loop BB14_196 Depth 3
                                        #       Child Loop BB14_205 Depth 3
                                        #     Child Loop BB14_213 Depth 2
                                        #     Child Loop BB14_219 Depth 2
                                        #     Child Loop BB14_226 Depth 2
                                        #       Child Loop BB14_228 Depth 3
                                        #       Child Loop BB14_231 Depth 3
                                        #       Child Loop BB14_238 Depth 3
                                        #     Child Loop BB14_251 Depth 2
                                        #     Child Loop BB14_258 Depth 2
                                        #     Child Loop BB14_268 Depth 2
                                        #     Child Loop BB14_274 Depth 2
	cmpq	$120, %r14
	je	.LBB14_284
# %bb.152:                              #   in Loop: Header=BB14_151 Depth=1
	movq	calc(%rip), %rcx
	movsd	96(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movq	136(%rax), %rdx
	movq	32(%rdx), %rdx
	divsd	(%rdx,%r14,8), %xmm0
	movq	output(%rip), %r9
	xorps	%xmm1, %xmm1
	cvtsi2sdl	(%r9), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 48(%rsp)
	cmpl	$1, 32(%rax)
	jne	.LBB14_154
# %bb.153:                              #   in Loop: Header=BB14_151 Depth=1
	movq	128(%rax), %rdx
	movsd	%xmm1, 24(%rsp)                 # 8-byte Spill
	movsd	8(%rdx), %xmm1                  # xmm1 = mem[0],zero
	movsd	16(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	88(%rax), %xmm2                 # xmm2 = mem[0],zero
	mulsd	.LCPI14_0(%rip), %xmm2
	movsd	80(%rcx), %xmm3                 # xmm3 = mem[0],zero
	subsd	32(%r9), %xmm3
	mulsd	%xmm2, %xmm3
	addsd	%xmm0, %xmm3
	subsd	%xmm1, %xmm0
	subsd	%xmm1, %xmm3
	divsd	%xmm3, %xmm0
	movl	24(%rax), %eax
	incl	%eax
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	movsd	%xmm13, (%rsp)                  # 8-byte Spill
	callq	pow
	movsd	(%rsp), %xmm13                  # 8-byte Reload
                                        # xmm13 = mem[0],zero
	movsd	24(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, 48(%rsp)
	movq	output(%rip), %r9
.LBB14_154:                             #   in Loop: Header=BB14_151 Depth=1
	movsd	%xmm1, 24(%rsp)                 # 8-byte Spill
	xorpd	%xmm0, %xmm0
	movapd	%xmm0, 288(%rsp)
	movapd	%xmm0, 272(%rsp)
	movapd	%xmm0, 256(%rsp)
	movapd	%xmm0, 240(%rsp)
	movapd	%xmm0, 224(%rsp)
	movapd	%xmm0, 208(%rsp)
	movapd	%xmm0, 192(%rsp)
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ebp
	testl	%ebp, %ebp
	jle	.LBB14_155
# %bb.158:                              # %.lr.ph2445
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	%r9, %rax
	movq	168(%r9), %rcx
	movq	(%rcx), %rdx
	movq	8(%rcx), %rsi
	movq	(%rdx,%r14,8), %rdx
	movq	%rdx, (%rsp)                    # 8-byte Spill
	movq	(%rsi,%r14,8), %rsi
	movq	320(%rdi), %r8
	movq	488(%rdi), %rbx
	movq	40(%r8), %rdi
	movq	40(%rcx), %r8
	movq	(%r8,%r14,8), %rdx
	movq	%rdx, 72(%rsp)                  # 8-byte Spill
	movq	48(%rcx), %r9
	movq	(%r9,%r14,8), %r9
	movq	56(%rcx), %r10
	movq	(%r10,%r14,8), %r10
	movq	72(%rcx), %r11
	movq	(%r11,%r14,8), %r11
	movq	8(%rbx), %rbx
	incq	%rbp
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	movl	$1, %r15d
	movsd	%xmm0, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm0, 88(%rsp)                 # 8-byte Spill
.LBB14_159:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_160 Depth 3
	movq	%rbp, %r8
	movq	(%rsp), %rdx                    # 8-byte Reload
	movsd	(%rdx,%r15,8), %xmm6            # xmm6 = mem[0],zero
	movsd	(%rsi,%r15,8), %xmm5            # xmm5 = mem[0],zero
	movsd	(%rdi,%r15,8), %xmm4            # xmm4 = mem[0],zero
	mulsd	%xmm6, %xmm4
	movq	output(%rip), %r12
	xorl	%ebp, %ebp
	movsd	.LCPI14_8(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB14_160:                             #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_159 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%rdi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	16(%rcx,%rbp), %r13
	movq	(%r13,%r14,8), %r13
	mulsd	(%r13,%r15,8), %xmm0
	addsd	216(%rsp,%rbp), %xmm0
	movsd	%xmm0, 216(%rsp,%rbp)
	movsd	(%rsi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	%xmm2, %xmm0
	jbe	.LBB14_162
# %bb.161:                              #   in Loop: Header=BB14_160 Depth=3
	movq	40(%rcx,%rbp), %r13
	movq	(%r13,%r14,8), %r13
	movsd	(%r13,%r15,8), %xmm1            # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movq	176(%rax), %r13
	movq	16(%r13,%rbp), %r13
	movq	(%r13,%r14,8), %r13
	movsd	%xmm1, (%r13,%r15,8)
	movq	168(%r12), %r13
	movq	16(%r13,%rbp), %rdx
	movq	(%rdx,%r14,8), %rdx
	movsd	(%rdx,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	8(%r13), %rdx
	movq	(%rdx,%r14,8), %rdx
	divsd	(%rdx,%r15,8), %xmm0
	movq	176(%r12), %rdx
	movq	72(%rdx,%rbp), %rdx
	movq	(%rdx,%r14,8), %rdx
	movsd	%xmm0, (%rdx,%r15,8)
.LBB14_162:                             #   in Loop: Header=BB14_160 Depth=3
	addq	$8, %rbp
	cmpq	$24, %rbp
	jne	.LBB14_160
# %bb.163:                              #   in Loop: Header=BB14_159 Depth=2
	movsd	(%rdi,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	72(%rsp), %rdx                  # 8-byte Reload
	movsd	(%rdx,%r15,8), %xmm7            # xmm7 = mem[0],zero
	movsd	(%r9,%r15,8), %xmm8             # xmm8 = mem[0],zero
	movapd	%xmm7, %xmm3
	addsd	%xmm8, %xmm3
	movsd	(%r10,%r15,8), %xmm9            # xmm9 = mem[0],zero
	addsd	%xmm9, %xmm3
	mulsd	%xmm0, %xmm3
	addsd	240(%rsp), %xmm3
	movsd	%xmm3, 240(%rsp)
	movapd	%xmm0, %xmm2
	mulsd	%xmm7, %xmm2
	addsd	272(%rsp), %xmm2
	movsd	%xmm2, 272(%rsp)
	movsd	280(%rsp), %xmm1                # xmm1 = mem[0],zero
	movsd	296(%rsp), %xmm10               # xmm10 = mem[0],zero
	movapd	%xmm0, %xmm11
	mulsd	%xmm8, %xmm11
	addsd	%xmm1, %xmm11
	mulsd	%xmm9, %xmm0
	addsd	%xmm11, %xmm0
	movsd	%xmm0, 288(%rsp)
	addsd	(%r11,%r15,8), %xmm10
	movsd	%xmm10, 296(%rsp)
	movsd	(%rsi,%r15,8), %xmm10           # xmm10 = mem[0],zero
	ucomisd	.LCPI14_0(%rip), %xmm10
	jbe	.LBB14_165
# %bb.164:                              #   in Loop: Header=BB14_159 Depth=2
	addsd	248(%rsp), %xmm7
	addsd	%xmm8, %xmm7
	addsd	%xmm9, %xmm7
	movsd	%xmm7, 248(%rsp)
.LBB14_165:                             #   in Loop: Header=BB14_159 Depth=2
	movl	(%rbx,%r15,4), %ebp
	testl	%ebp, %ebp
	jle	.LBB14_167
# %bb.166:                              #   in Loop: Header=BB14_159 Depth=2
	movsd	256(%rsp), %xmm7                # xmm7 = mem[0],zero
	movq	64(%rcx), %rdx
	movq	(%rdx,%r14,8), %rdx
	addsd	(%rdx,%r15,8), %xmm7
	movsd	%xmm7, 256(%rsp)
	xorps	%xmm7, %xmm7
	cvtsi2sd	%ebp, %xmm7
	mulsd	%xmm7, %xmm10
	addsd	264(%rsp), %xmm10
	movsd	%xmm10, 264(%rsp)
.LBB14_167:                             #   in Loop: Header=BB14_159 Depth=2
	movsd	88(%rsp), %xmm7                 # 8-byte Reload
                                        # xmm7 = mem[0],zero
	addsd	%xmm6, %xmm7
	movsd	%xmm7, 88(%rsp)                 # 8-byte Spill
	movsd	56(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
	addsd	%xmm5, %xmm6
	movsd	%xmm6, 56(%rsp)                 # 8-byte Spill
	movsd	32(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	addsd	%xmm4, %xmm5
	movsd	%xmm5, 32(%rsp)                 # 8-byte Spill
	incq	%r15
	movq	%r8, %rbp
	cmpq	%r8, %r15
	jne	.LBB14_159
# %bb.156:                              # %.preheader2354
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	56(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movsd	%xmm4, 200(%rsp)
	movsd	32(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movsd	%xmm4, 208(%rsp)
	movq	gas(%rip), %r15
	movl	424(%r15), %eax
	movq	output(%rip), %r9
	movsd	88(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movsd	%xmm4, 192(%rsp)
	testl	%eax, %eax
	jle	.LBB14_157
# %bb.168:                              # %.lr.ph2455
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	168(%r9), %rcx
	movq	%r9, 144(%rsp)                  # 8-byte Spill
	movq	176(%r9), %rdx
	movq	%rcx, 72(%rsp)                  # 8-byte Spill
	movq	8(%rcx), %rsi
	movq	(%rsi,%r14,8), %rsi
	movq	(%rdx), %rdi
	movq	8(%rdx), %r8
	movq	(%rdi,%r14,8), %rcx
	movq	%rcx, (%rsp)                    # 8-byte Spill
	movq	(%r8,%r14,8), %r8
	movq	48(%rdx), %r9
	movq	(%r9,%r14,8), %r9
	movq	56(%rdx), %r10
	movq	(%r10,%r14,8), %r10
	movq	64(%rdx), %r11
	movq	(%r11,%r14,8), %r11
	movq	40(%rdx), %rbx
	movq	(%rbx,%r14,8), %rbx
	movq	320(%r15), %r12
	movq	488(%r15), %r13
	movq	40(%r12), %r15
	movq	8(%r13), %r12
	incq	%rax
	movl	$1, %ebp
.LBB14_169:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_174 Depth 3
	movsd	56(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	ucomisd	.LCPI14_9(%rip), %xmm4
	movsd	(%rsi,%rbp,8), %xmm4            # xmm4 = mem[0],zero
	movq	(%rsp), %rcx                    # 8-byte Reload
	movsd	%xmm4, (%rcx,%rbp,8)
	movl	$0, %ecx
	movq	%rcx, (%r8,%rbp,8)
	movq	%rcx, (%r9,%rbp,8)
	movq	%rcx, (%r10,%rbp,8)
	movq	%rcx, (%r11,%rbp,8)
	jbe	.LBB14_173
# %bb.170:                              #   in Loop: Header=BB14_169 Depth=2
	movq	72(%rsp), %rcx                  # 8-byte Reload
	movq	8(%rcx), %r13
	movq	(%r13,%r14,8), %r13
	movsd	(%r13,%rbp,8), %xmm4            # xmm4 = mem[0],zero
	divsd	56(%rsp), %xmm4                 # 8-byte Folded Reload
	movq	8(%rdx), %r13
	movq	(%r13,%r14,8), %r13
	movsd	%xmm4, (%r13,%rbp,8)
	movl	(%r12,%rbp,4), %r13d
	testl	%r13d, %r13d
	jle	.LBB14_173
# %bb.171:                              #   in Loop: Header=BB14_169 Depth=2
	movsd	(%rsi,%rbp,8), %xmm4            # xmm4 = mem[0],zero
	ucomisd	.LCPI14_0(%rip), %xmm4
	jbe	.LBB14_173
# %bb.172:                              #   in Loop: Header=BB14_169 Depth=2
	movq	72(%rsp), %rcx                  # 8-byte Reload
	movq	64(%rcx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbp,8), %xmm5            # xmm5 = mem[0],zero
	xorps	%xmm6, %xmm6
	cvtsi2sd	%r13d, %xmm6
	mulsd	.LCPI14_6(%rip), %xmm5
	mulsd	%xmm6, %xmm4
	divsd	%xmm4, %xmm5
	movsd	%xmm5, (%r9,%rbp,8)
.LBB14_173:                             #   in Loop: Header=BB14_169 Depth=2
	movq	$0, (%rbx,%rbp,8)
	xorl	%r13d, %r13d
.LBB14_174:                             #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_169 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%r15,%rbp,8), %xmm5            # xmm5 = mem[0],zero
	divsd	%xmm12, %xmm5
	movq	16(%rdx,%r13,8), %rcx
	movq	72(%rdx,%r13,8), %rdi
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbp,8), %xmm4            # xmm4 = mem[0],zero
	movq	(%rdi,%r14,8), %rdi
	movsd	(%rdi,%rbp,8), %xmm6            # xmm6 = mem[0],zero
	mulsd	%xmm6, %xmm6
	subsd	%xmm6, %xmm4
	mulsd	%xmm5, %xmm4
	movsd	%xmm4, (%rcx,%rbp,8)
	addsd	(%rbx,%rbp,8), %xmm4
	movsd	%xmm4, (%rbx,%rbp,8)
	incq	%r13
	cmpq	$3, %r13
	jne	.LBB14_174
# %bb.175:                              #   in Loop: Header=BB14_169 Depth=2
	movsd	.LCPI14_4(%rip), %xmm7          # xmm7 = mem[0],zero
	divsd	%xmm7, %xmm4
	movsd	%xmm4, (%rbx,%rbp,8)
	mulsd	%xmm7, %xmm4
	xorps	%xmm5, %xmm5
	cvtsi2sdl	(%r12,%rbp,4), %xmm5
	movsd	(%r9,%rbp,8), %xmm6             # xmm6 = mem[0],zero
	mulsd	%xmm5, %xmm6
	addsd	%xmm4, %xmm6
	addsd	%xmm7, %xmm5
	divsd	%xmm5, %xmm6
	movsd	%xmm6, (%r11,%rbp,8)
	incq	%rbp
	cmpq	%rax, %rbp
	jne	.LBB14_169
# %bb.176:                              #   in Loop: Header=BB14_151 Depth=1
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	96(%rsp), %r13                  # 8-byte Reload
	movq	64(%rsp), %r15                  # 8-byte Reload
	movq	144(%rsp), %r9                  # 8-byte Reload
	jmp	.LBB14_177
.LBB14_155:                             #   in Loop: Header=BB14_151 Depth=1
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 88(%rsp)                 # 8-byte Spill
	movsd	%xmm0, 56(%rsp)                 # 8-byte Spill
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	xorpd	%xmm3, %xmm3
	xorpd	%xmm2, %xmm2
	xorpd	%xmm1, %xmm1
	jmp	.LBB14_177
.LBB14_157:                             #   in Loop: Header=BB14_151 Depth=1
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	96(%rsp), %r13                  # 8-byte Reload
	movq	64(%rsp), %r15                  # 8-byte Reload
.LBB14_177:                             # %._crit_edge2456
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	geom(%rip), %rax
	movl	32(%rax), %ecx
	cmpl	$1, %ecx
	je	.LBB14_181
# %bb.178:                              # %._crit_edge2456
                                        #   in Loop: Header=BB14_151 Depth=1
	testl	%ecx, %ecx
	jne	.LBB14_180
# %bb.179:                              # %.thread3119
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	136(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r14,8), %xmm4            # xmm4 = mem[0],zero
	movq	136(%r9), %rax
	movq	8(%rax), %rax
	movsd	%xmm4, (%rax,%r14,8)
.LBB14_180:                             # %._crit_edge3079
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	136(%r9), %rax
	jmp	.LBB14_182
.LBB14_181:                             #   in Loop: Header=BB14_151 Depth=1
	movq	128(%rax), %rcx
	movsd	88(%rax), %xmm4                 # xmm4 = mem[0],zero
	movq	calc(%rip), %rdx
	mulsd	80(%rdx), %xmm4
	addsd	16(%rcx), %xmm4
	movsd	8(%rcx), %xmm5                  # xmm5 = mem[0],zero
	subsd	%xmm5, %xmm4
	xorps	%xmm6, %xmm6
	cvtsi2sdl	12(%rax), %xmm6
	divsd	%xmm6, %xmm4
	leal	-1(%r14), %eax
	xorps	%xmm6, %xmm6
	cvtsi2sd	%eax, %xmm6
	addsd	.LCPI14_0(%rip), %xmm6
	mulsd	%xmm4, %xmm6
	addsd	%xmm5, %xmm6
	movq	136(%r9), %rax
	movq	8(%rax), %rcx
	movsd	%xmm6, (%rcx,%r14,8)
.LBB14_182:                             #   in Loop: Header=BB14_151 Depth=1
	movq	16(%rax), %rcx
	movsd	88(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
	movsd	%xmm4, (%rcx,%r14,8)
	movsd	56(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
	ucomisd	.LCPI14_0(%rip), %xmm6
	jbe	.LBB14_183
# %bb.185:                              #   in Loop: Header=BB14_151 Depth=1
	movapd	%xmm6, %xmm4
	mulsd	24(%rsp), %xmm4                 # 8-byte Folded Reload
	movq	24(%rax), %rcx
	movsd	%xmm4, (%rcx,%r14,8)
	movsd	32(%rsp), %xmm7                 # 8-byte Reload
                                        # xmm7 = mem[0],zero
	mulsd	%xmm7, %xmm4
	divsd	%xmm6, %xmm4
	movq	32(%rax), %rdx
	movsd	%xmm4, (%rdx,%r14,8)
	movsd	216(%rsp), %xmm4                # xmm4 = mem[0],zero
	divsd	%xmm7, %xmm4
	movq	40(%rax), %r8
	movsd	%xmm4, (%r8,%r14,8)
	movsd	224(%rsp), %xmm4                # xmm4 = mem[0],zero
	divsd	%xmm7, %xmm4
	movq	48(%rax), %rdi
	movsd	%xmm4, (%rdi,%r14,8)
	movsd	232(%rsp), %xmm8                # xmm8 = mem[0],zero
	divsd	%xmm7, %xmm8
	movq	56(%rax), %rsi
	movsd	%xmm8, (%rsi,%r14,8)
	movsd	(%r8,%r14,8), %xmm4             # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm4
	movsd	(%rdi,%r14,8), %xmm5            # xmm5 = mem[0],zero
	mulsd	%xmm5, %xmm5
	addsd	%xmm4, %xmm5
	mulsd	%xmm8, %xmm8
	addsd	%xmm5, %xmm8
	movsd	.LCPI14_10(%rip), %xmm4         # xmm4 = mem[0],zero
	ucomisd	%xmm4, %xmm6
	movsd	%xmm8, 128(%rsp)                # 8-byte Spill
	jbe	.LBB14_187
# %bb.186:                              #   in Loop: Header=BB14_151 Depth=1
	movapd	%xmm8, %xmm4
	mulsd	%xmm7, %xmm4
	subsd	%xmm4, %xmm3
	movapd	.LCPI14_11(%rip), %xmm5         # xmm5 = [NaN,NaN]
	andpd	%xmm5, %xmm3
	movapd	%xmm6, %xmm4
	mulsd	.LCPI14_12(%rip), %xmm4
	divsd	%xmm4, %xmm3
	movq	64(%rax), %rdx
	movsd	%xmm3, (%rdx,%r14,8)
	movsd	(%r8,%r14,8), %xmm3             # xmm3 = mem[0],zero
	mulsd	%xmm3, %xmm3
	mulsd	%xmm7, %xmm3
	subsd	%xmm3, %xmm2
	andpd	%xmm5, %xmm2
	movapd	%xmm6, %xmm3
	mulsd	%xmm12, %xmm3
	divsd	%xmm3, %xmm2
	movq	152(%rax), %r8
	movsd	%xmm2, (%r8,%r14,8)
	movsd	(%rdi,%r14,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	mulsd	%xmm7, %xmm2
	subsd	%xmm2, %xmm1
	andpd	%xmm5, %xmm1
	divsd	%xmm3, %xmm1
	movq	160(%rax), %rdi
	movsd	%xmm1, (%rdi,%r14,8)
	movsd	(%rsi,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	mulsd	%xmm7, %xmm1
	subsd	%xmm1, %xmm0
	andpd	%xmm5, %xmm0
	divsd	%xmm3, %xmm0
	jmp	.LBB14_188
.LBB14_183:                             # %.preheader2352.preheader
                                        #   in Loop: Header=BB14_151 Depth=1
	movl	$3, %ecx
.LBB14_184:                             # %.preheader2352
                                        #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rax,%rcx,8), %rdx
	movq	$0, (%rdx,%r14,8)
	incq	%rcx
	cmpq	$23, %rcx
	jne	.LBB14_184
	jmp	.LBB14_283
.LBB14_187:                             #   in Loop: Header=BB14_151 Depth=1
	movq	64(%rax), %rdx
	movabsq	$4607182418800017408, %rdi      # imm = 0x3FF0000000000000
	movq	%rdi, (%rdx,%r14,8)
	movq	152(%rax), %rsi
	movq	%rdi, (%rsi,%r14,8)
	movq	160(%rax), %rsi
	movq	%rdi, (%rsi,%r14,8)
	movapd	%xmm4, %xmm0
.LBB14_188:                             #   in Loop: Header=BB14_151 Depth=1
	movq	168(%rax), %rsi
	movsd	%xmm0, (%rsi,%r14,8)
	movsd	264(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	256(%rsp), %xmm1                # xmm1 = mem[0],zero
	mulsd	.LCPI14_6(%rip), %xmm1
	divsd	%xmm0, %xmm1
	movsd	.LCPI14_9(%rip), %xmm2          # xmm2 = mem[0],zero
	cmpltsd	%xmm0, %xmm2
	andpd	%xmm1, %xmm2
	movq	72(%rax), %rsi
	movlpd	%xmm2, (%rsi,%r14,8)
	movq	gas(%rip), %r15
	movsd	104(%r15), %xmm1                # xmm1 = mem[0],zero
	movq	80(%rax), %rdi
	movsd	%xmm1, (%rdi,%r14,8)
	movapd	%xmm0, %xmm3
	movsd	.LCPI14_4(%rip), %xmm2          # xmm2 = mem[0],zero
	addsd	%xmm2, %xmm3
	movsd	(%rdx,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm1
	divsd	%xmm6, %xmm0
	addsd	%xmm1, %xmm0
	mulsd	(%rsi,%r14,8), %xmm0
	divsd	%xmm6, %xmm3
	movsd	%xmm3, 120(%rsp)                # 8-byte Spill
	divsd	%xmm3, %xmm0
	movq	88(%rax), %rsi
	movsd	%xmm0, (%rsi,%r14,8)
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm12, %xmm0
	mulsd	(%rdx,%r14,8), %xmm0
	movq	144(%rax), %rax
	movsd	%xmm0, (%rax,%r14,8)
	cmpl	$0, 428(%r15)
	jle	.LBB14_189
# %bb.190:                              # %.preheader2351
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	gas(%rip), %r15
	movl	424(%r15), %r10d
	testl	%r10d, %r10d
	jle	.LBB14_191
# %bb.193:                              # %.lr.ph2469
                                        #   in Loop: Header=BB14_151 Depth=1
	movl	$1, %ebx
.LBB14_194:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_196 Depth 3
                                        #       Child Loop BB14_205 Depth 3
	movq	$0, (%r13,%rbx,8)
	movq	472(%r15), %rax
	cmpl	$0, (%rax,%rbx,4)
	jle	.LBB14_209
# %bb.195:                              # %.lr.ph2460
                                        #   in Loop: Header=BB14_194 Depth=2
	movq	176(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%r14,8), %r12
	xorpd	%xmm2, %xmm2
	xorl	%ebp, %ebp
.LBB14_196:                             #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_194 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	168(%r9), %rax
	movq	80(%rax,%rbp,8), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	ucomisd	%xmm1, %xmm12
	jbe	.LBB14_202
# %bb.197:                              #   in Loop: Header=BB14_196 Depth=3
	movq	112(%rsp), %rax                 # 8-byte Reload
	movq	8(%rax,%rbp,8), %rax
	xorl	%ecx, %ecx
	movq	%rcx, (%rax,%rbx,8)
	movq	8(%r12,%rbp,8), %rax
	movq	%rcx, (%rax,%rbx,8)
	xorpd	%xmm0, %xmm0
	jmp	.LBB14_203
.LBB14_202:                             #   in Loop: Header=BB14_196 Depth=3
	movq	360(%r15), %rcx
	movq	8(%rcx), %rcx
	movq	8(%rcx,%rbp,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movq	8(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	addsd	%xmm1, %xmm0
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	callq	log
	movsd	24(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movq	112(%rsp), %rax                 # 8-byte Reload
	movq	8(%rax,%rbp,8), %rax
	movsd	%xmm1, (%rax,%rbx,8)
	movq	output(%rip), %rax
	movq	168(%rax), %rax
	movq	80(%rax,%rbp,8), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	movq	8(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movapd	%xmm1, %xmm2
	divsd	%xmm0, %xmm2
	addsd	%xmm2, %xmm2
	movsd	%xmm2, 24(%rsp)                 # 8-byte Spill
	divsd	%xmm1, %xmm0
	addsd	.LCPI14_10(%rip), %xmm0
	callq	log
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	movq	8(%r12,%rbp,8), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	movq	output(%rip), %r9
.LBB14_203:                             #   in Loop: Header=BB14_196 Depth=3
	movq	96(%rsp), %rax                  # 8-byte Reload
	addsd	%xmm0, %xmm2
	movsd	%xmm2, (%rax,%rbx,8)
	movq	gas(%rip), %r15
	movq	472(%r15), %rax
	movslq	(%rax,%rbx,4), %r13
	incq	%rbp
	cmpq	%r13, %rbp
	jl	.LBB14_196
# %bb.198:                              # %.preheader2346
                                        #   in Loop: Header=BB14_194 Depth=2
	movl	424(%r15), %r10d
	testl	%r10d, %r10d
	movq	80(%rsp), %r12                  # 8-byte Reload
	js	.LBB14_200
# %bb.199:                              # %.lr.ph2463.preheader
                                        #   in Loop: Header=BB14_194 Depth=2
	leaq	8(,%r10,8), %rdx
	movq	%r12, %rdi
	xorl	%esi, %esi
	movq	%r9, %rbp
	movq	%r10, %r12
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	callq	memset@PLT
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movq	%r12, %r10
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	%rbp, %r9
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
.LBB14_200:                             # %.preheader2344
                                        #   in Loop: Header=BB14_194 Depth=2
	movl	%r13d, %eax
	testl	%eax, %eax
	jle	.LBB14_201
# %bb.204:                              # %.lr.ph2466
                                        #   in Loop: Header=BB14_194 Depth=2
	incq	%rax
	movl	$1, %ecx
	movq	96(%rsp), %r13                  # 8-byte Reload
	movsd	.LCPI14_3(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB14_205:                             #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_194 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	ucomisd	%xmm1, %xmm2
	jbe	.LBB14_207
# %bb.206:                              #   in Loop: Header=BB14_205 Depth=3
	movq	112(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rcx,8), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	176(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%r14,8), %rdx
	movq	(%rdx,%rcx,8), %rdx
	mulsd	(%rdx,%rbx,8), %xmm0
	divsd	%xmm2, %xmm0
	addsd	(%r12,%rbx,8), %xmm0
	jmp	.LBB14_208
.LBB14_207:                             #   in Loop: Header=BB14_205 Depth=3
	movsd	128(%r15), %xmm0                # xmm0 = mem[0],zero
.LBB14_208:                             #   in Loop: Header=BB14_205 Depth=3
	movsd	%xmm0, (%r12,%rbx,8)
	incq	%rcx
	cmpq	%rcx, %rax
	jne	.LBB14_205
	jmp	.LBB14_210
.LBB14_209:                             #   in Loop: Header=BB14_194 Depth=2
	movq	calc(%rip), %rax
	movsd	112(%rax), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, (%r12,%rbx,8)
	movq	$0, (%r13,%rbx,8)
	jmp	.LBB14_210
.LBB14_201:                             # %.preheader2344..loopexit2345_crit_edge
                                        #   in Loop: Header=BB14_194 Depth=2
	movsd	(%r12,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	96(%rsp), %r13                  # 8-byte Reload
.LBB14_210:                             # %.loopexit2345
                                        #   in Loop: Header=BB14_194 Depth=2
	movq	176(%r9), %rax
	movq	56(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	leaq	1(%rbx), %rax
	movslq	%r10d, %rcx
	cmpq	%rcx, %rbx
	movq	%rax, %rbx
	jl	.LBB14_194
# %bb.211:                              # %._crit_edge2470
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	gas(%rip), %r15
	movl	424(%r15), %r10d
	movq	output(%rip), %r9
	testl	%r10d, %r10d
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	jle	.LBB14_192
# %bb.212:                              # %.lr.ph2476
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	472(%r15), %rcx
	leaq	1(%r10), %rax
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movl	$1, %edx
.LBB14_213:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpl	$0, (%rcx,%rdx,4)
	jle	.LBB14_215
# %bb.214:                              #   in Loop: Header=BB14_213 Depth=2
	movq	168(%r9), %rsi
	movq	8(%rsi), %rsi
	movq	(%rsi,%r14,8), %rsi
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	addsd	(%rsi,%rdx,8), %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
.LBB14_215:                             #   in Loop: Header=BB14_213 Depth=2
	incq	%rdx
	cmpq	%rdx, %rax
	jne	.LBB14_213
# %bb.216:                              # %.preheader2350
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 48(%rsp)
	testl	%r10d, %r10d
	jle	.LBB14_217
# %bb.218:                              # %.lr.ph2484
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	472(%r15), %rcx
	xorpd	%xmm0, %xmm0
	movl	$1, %edx
.LBB14_219:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpl	$0, (%rcx,%rdx,4)
	jle	.LBB14_221
# %bb.220:                              #   in Loop: Header=BB14_219 Depth=2
	movq	168(%r9), %rsi
	movq	8(%rsi), %rsi
	movq	(%rsi,%r14,8), %rsi
	movsd	(%rsi,%rdx,8), %xmm1            # xmm1 = mem[0],zero
	divsd	24(%rsp), %xmm1                 # 8-byte Folded Reload
	addsd	(%r12,%rdx,8), %xmm0
	subsd	%xmm1, %xmm0
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
.LBB14_221:                             #   in Loop: Header=BB14_219 Depth=2
	incq	%rdx
	cmpq	%rdx, %rax
	jne	.LBB14_219
	jmp	.LBB14_222
.LBB14_189:                             # %._crit_edge3031
                                        #   in Loop: Header=BB14_151 Depth=1
	movl	424(%r15), %r10d
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	jmp	.LBB14_223
.LBB14_191:                             # %._crit_edge2470.thread
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	output(%rip), %r9
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB14_192:                             # %.preheader2350.thread
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	$0, 48(%rsp)
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
.LBB14_222:                             # %._crit_edge2485
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	136(%r9), %rax
	movq	80(%rax), %rax
	movsd	%xmm0, (%rax,%r14,8)
.LBB14_223:                             #   in Loop: Header=BB14_151 Depth=1
	testl	%r10d, %r10d
	jle	.LBB14_224
# %bb.225:                              # %.lr.ph2514.preheader
                                        #   in Loop: Header=BB14_151 Depth=1
	movl	$1, %ebx
	movq	%r9, %r12
.LBB14_226:                             # %.lr.ph2514
                                        #   Parent Loop BB14_151 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_228 Depth 3
                                        #       Child Loop BB14_231 Depth 3
                                        #       Child Loop BB14_238 Depth 3
	movq	176(%r12), %rax
	movq	(%rax), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	.LCPI14_0(%rip), %xmm0
	jbe	.LBB14_227
# %bb.230:                              # %.preheader2341
                                        #   in Loop: Header=BB14_226 Depth=2
	movq	136(%r12), %rax
	movq	176(%r12), %rcx
	xorl	%edx, %edx
.LBB14_231:                             #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_226 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	72(%rcx,%rdx,8), %rsi
	movq	(%rsi,%r14,8), %rsi
	movsd	(%rsi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	40(%rax,%rdx,8), %rdi
	subsd	(%rdi,%r14,8), %xmm0
	movsd	%xmm0, (%rsi,%rbx,8)
	incq	%rdx
	cmpq	$3, %rdx
	jne	.LBB14_231
# %bb.232:                              #   in Loop: Header=BB14_226 Depth=2
	cmpl	$2, 452(%r15)
	jl	.LBB14_229
# %bb.233:                              # %.preheader2340
                                        #   in Loop: Header=BB14_226 Depth=2
	testl	%r10d, %r10d
	js	.LBB14_235
# %bb.234:                              # %.lr.ph2494.preheader
                                        #   in Loop: Header=BB14_226 Depth=2
	movl	%r10d, %eax
	leaq	8(,%rax,8), %rdx
	movq	104(%rsp), %rdi                 # 8-byte Reload
	xorl	%esi, %esi
	movq	%r9, %rbp
	callq	memset@PLT
	movq	%rbp, %r9
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
.LBB14_235:                             # %._crit_edge2495
                                        #   in Loop: Header=BB14_226 Depth=2
	movq	480(%r15), %rax
	cmpl	$0, (%rax,%rbx,4)
	jle	.LBB14_236
# %bb.237:                              # %.lr.ph2503.preheader
                                        #   in Loop: Header=BB14_226 Depth=2
	xorpd	%xmm3, %xmm3
	xorl	%r12d, %r12d
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
.LBB14_238:                             # %.lr.ph2503
                                        #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_226 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	176(%r9), %rax
	movq	40(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	.LBB14_240
# %bb.239:                              #   in Loop: Header=BB14_238 Depth=3
	movq	376(%r15), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	8(%rax,%r12,8), %rax
	movsd	(%rax,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movapd	%xmm1, (%rsp)                   # 16-byte Spill
	movq	8(%rcx,%r12,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 184(%rsp)                # 8-byte Spill
	movapd	%xmm1, %xmm0
	xorpd	.LCPI14_13(%rip), %xmm0
	movapd	%xmm0, 144(%rsp)                # 16-byte Spill
	movsd	%xmm3, 72(%rsp)                 # 8-byte Spill
	callq	exp
	mulsd	184(%rsp), %xmm0                # 8-byte Folded Reload
	movsd	24(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 24(%rsp)                 # 8-byte Spill
	movq	gas(%rip), %rax
	movq	376(%rax), %rax
	movq	8(%rax), %rax
	movq	8(%rax,%r12,8), %rax
	movapd	(%rsp), %xmm0                   # 16-byte Reload
	mulsd	(%rax,%rbx,8), %xmm0
	movapd	%xmm0, (%rsp)                   # 16-byte Spill
	movapd	144(%rsp), %xmm0                # 16-byte Reload
	callq	exp
	movsd	72(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
	mulsd	(%rsp), %xmm0                   # 16-byte Folded Reload
	addsd	%xmm0, %xmm3
	movq	output(%rip), %r9
	movq	gas(%rip), %r15
.LBB14_240:                             #   in Loop: Header=BB14_238 Depth=3
	movq	480(%r15), %rax
	movslq	(%rax,%rbx,4), %rax
	incq	%r12
	cmpq	%rax, %r12
	jl	.LBB14_238
# %bb.241:                              # %._crit_edge2504
                                        #   in Loop: Header=BB14_226 Depth=2
	ucomisd	.LCPI14_14(%rip), %xmm3
	jbe	.LBB14_242
# %bb.1038:                             #   in Loop: Header=BB14_226 Depth=2
	movq	168(%r9), %rax
	movq	8(%rax), %rcx
	movq	72(%rax), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	(%rcx,%r14,8), %rax
	divsd	(%rax,%rbx,8), %xmm0
	mulsd	%xmm12, %xmm3
	divsd	24(%rsp), %xmm3                 # 8-byte Folded Reload
	divsd	%xmm3, %xmm0
	movq	%r9, %r12
	movq	%r9, %rax
	jmp	.LBB14_244
.LBB14_227:                             # %.preheader2342.preheader
                                        #   in Loop: Header=BB14_226 Depth=2
	xorl	%ecx, %ecx
.LBB14_228:                             # %.preheader2342
                                        #   Parent Loop BB14_151 Depth=1
                                        #     Parent Loop BB14_226 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	64(%rax,%rcx,8), %rdx
	movq	(%rdx,%r14,8), %rdx
	movq	$0, (%rdx,%rbx,8)
	incq	%rcx
	cmpq	$5, %rcx
	jne	.LBB14_228
.LBB14_229:                             #   in Loop: Header=BB14_226 Depth=2
	movq	%r9, %rax
.LBB14_247:                             # %.loopexit2343
                                        #   in Loop: Header=BB14_226 Depth=2
	leaq	1(%rbx), %rcx
	movslq	424(%r15), %r10
	movq	%rax, %r9
	cmpq	%r10, %rbx
	movq	%rcx, %rbx
	jl	.LBB14_226
	jmp	.LBB14_248
.LBB14_236:                             #   in Loop: Header=BB14_226 Depth=2
	xorpd	%xmm0, %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	jmp	.LBB14_243
.LBB14_242:                             #   in Loop: Header=BB14_226 Depth=2
	movq	%r9, %r12
.LBB14_243:                             # %._crit_edge2504.thread
                                        #   in Loop: Header=BB14_226 Depth=2
	movq	%r9, %rax
	movq	136(%r12), %rcx
	movq	88(%rcx), %rcx
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r12, %r9
.LBB14_244:                             #   in Loop: Header=BB14_226 Depth=2
	movq	176(%r9), %rcx
	movq	96(%rcx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	%xmm0, (%rcx,%rbx,8)
	movq	104(%rsp), %rcx                 # 8-byte Reload
	movq	$0, (%rcx,%rbx,8)
	movq	176(%r12), %rcx
	movq	40(%rcx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	.LBB14_246
# %bb.245:                              # %thread-pre-split
                                        #   in Loop: Header=BB14_226 Depth=2
	movq	168(%r12), %rcx
	movq	8(%rcx), %rdx
	movq	72(%rcx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	addsd	%xmm1, %xmm1
	movq	(%rdx,%r14,8), %rcx
	divsd	(%rcx,%rbx,8), %xmm1
	mulsd	%xmm12, %xmm0
	divsd	%xmm0, %xmm1
	movq	104(%rsp), %rcx                 # 8-byte Reload
	movsd	%xmm1, (%rcx,%rbx,8)
	movsd	.LCPI14_15(%rip), %xmm0         # xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	jbe	.LBB14_247
.LBB14_246:                             # %thread-pre-split.thread
                                        #   in Loop: Header=BB14_226 Depth=2
	movq	136(%r12), %rcx
	movq	176(%r12), %rdx
	movq	88(%rcx), %rcx
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	96(%rdx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movsd	%xmm0, (%rcx,%rbx,8)
	jmp	.LBB14_247
.LBB14_224:                             #   in Loop: Header=BB14_151 Depth=1
	movq	%r9, %r12
.LBB14_248:                             # %._crit_edge2515
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 48(%rsp)
	movl	452(%r15), %eax
	cmpl	$2, %eax
	jl	.LBB14_263
# %bb.249:                              # %.preheader2349
                                        #   in Loop: Header=BB14_151 Depth=1
	testl	%r10d, %r10d
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	168(%rsp), %rbx                 # 8-byte Reload
	jle	.LBB14_262
# %bb.250:                              # %.lr.ph2522
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	output(%rip), %rdx
	leal	1(%r10), %ecx
	xorpd	%xmm0, %xmm0
	movl	$1, %esi
.LBB14_251:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	104(%rsp), %rdi                 # 8-byte Reload
	movsd	(%rdi,%rsi,8), %xmm1            # xmm1 = mem[0],zero
	ucomisd	.LCPI14_16(%rip), %xmm1
	jbe	.LBB14_253
# %bb.252:                              #   in Loop: Header=BB14_251 Depth=2
	movq	168(%rdx), %rdi
	movq	8(%rdi), %rdi
	movq	(%rdi,%r14,8), %rdi
	addsd	(%rdi,%rsi,8), %xmm0
.LBB14_253:                             #   in Loop: Header=BB14_251 Depth=2
	incq	%rsi
	cmpq	%rsi, %rcx
	jne	.LBB14_251
# %bb.254:                              # %._crit_edge2523
                                        #   in Loop: Header=BB14_151 Depth=1
	ucomisd	.LCPI14_27(%rip), %xmm0
	jbe	.LBB14_262
# %bb.255:                              #   in Loop: Header=BB14_151 Depth=1
	movq	output(%rip), %rdx
	testl	%r10d, %r10d
	jle	.LBB14_256
# %bb.257:                              # %.lr.ph2531
                                        #   in Loop: Header=BB14_151 Depth=1
	xorpd	%xmm1, %xmm1
	movl	$1, %esi
	xorpd	%xmm0, %xmm0
.LBB14_258:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	104(%rsp), %rdi                 # 8-byte Reload
	movsd	(%rdi,%rsi,8), %xmm2            # xmm2 = mem[0],zero
	ucomisd	.LCPI14_16(%rip), %xmm2
	jbe	.LBB14_260
# %bb.259:                              #   in Loop: Header=BB14_258 Depth=2
	movq	168(%rdx), %rdi
	movq	176(%rdx), %r8
	movq	96(%r8), %r8
	movq	(%r8,%r14,8), %r8
	movq	8(%rdi), %rdi
	movq	(%rdi,%r14,8), %rdi
	movsd	(%rdi,%rsi,8), %xmm2            # xmm2 = mem[0],zero
	movsd	(%r8,%rsi,8), %xmm3             # xmm3 = mem[0],zero
	mulsd	%xmm2, %xmm3
	addsd	%xmm3, %xmm0
	addsd	%xmm2, %xmm1
.LBB14_260:                             #   in Loop: Header=BB14_258 Depth=2
	incq	%rsi
	cmpq	%rsi, %rcx
	jne	.LBB14_258
	jmp	.LBB14_261
.LBB14_263:                             #   in Loop: Header=BB14_151 Depth=1
	movsd	104(%r15), %xmm0                # xmm0 = mem[0],zero
	movq	136(%r12), %rcx
	movq	80(%rsp), %r12                  # 8-byte Reload
	movq	168(%rsp), %rbx                 # 8-byte Reload
	jmp	.LBB14_264
.LBB14_262:                             # %._crit_edge2523.thread
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	88(%rcx), %rdx
	movsd	(%rdx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	jmp	.LBB14_264
.LBB14_217:                             #   in Loop: Header=BB14_151 Depth=1
	xorpd	%xmm0, %xmm0
	jmp	.LBB14_222
.LBB14_256:                             #   in Loop: Header=BB14_151 Depth=1
	xorpd	%xmm0, %xmm0
	xorpd	%xmm1, %xmm1
.LBB14_261:                             # %._crit_edge2532
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	%xmm0, 48(%rsp)
	divsd	%xmm1, %xmm0
	movq	136(%rdx), %rcx
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB14_264:                             #   in Loop: Header=BB14_151 Depth=1
	movq	176(%rcx), %rdx
	movsd	%xmm0, (%rdx,%r14,8)
	cmpl	$0, 428(%r15)
	jle	.LBB14_265
# %bb.266:                              # %.preheader2348
                                        #   in Loop: Header=BB14_151 Depth=1
	testl	%r10d, %r10d
	movsd	.LCPI14_4(%rip), %xmm4          # xmm4 = mem[0],zero
	jle	.LBB14_271
# %bb.267:                              # %.lr.ph2537
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	output(%rip), %rdx
	movq	gas(%rip), %rdi
	movl	%r10d, %ecx
	shlq	$2, %rcx
	movq	176(%rdx), %rdx
	movq	40(%rdx), %rsi
	movq	48(%rdx), %r8
	movq	(%rsi,%r14,8), %rsi
	movq	488(%rdi), %rdi
	movq	8(%rdi), %rdi
	movq	(%r8,%r14,8), %r8
	movq	56(%rdx), %r9
	movq	(%r9,%r14,8), %r9
	movq	64(%rdx), %r10
	movq	(%r10,%r14,8), %r10
	xorl	%r11d, %r11d
.LBB14_268:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	8(%r13,%r11,2), %xmm1           # xmm1 = mem[0],zero
	movq	104(%rsp), %rbx                 # 8-byte Reload
	movsd	8(%rbx,%r11,2), %xmm0           # xmm0 = mem[0],zero
	movsd	8(%rsi,%r11,2), %xmm2           # xmm2 = mem[0],zero
	xorps	%xmm3, %xmm3
	cvtsi2sdl	4(%rdi,%r11), %xmm3
	mulsd	%xmm4, %xmm2
	mulsd	8(%r8,%r11,2), %xmm3
	addsd	%xmm2, %xmm3
	movsd	8(%r9,%r11,2), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm2
	addsd	%xmm3, %xmm2
	cmpl	$2, %eax
	jl	.LBB14_270
# %bb.269:                              #   in Loop: Header=BB14_268 Depth=2
	movq	96(%rdx), %rbx
	movq	(%rbx,%r14,8), %rbx
	movsd	8(%rbx,%r11,2), %xmm3           # xmm3 = mem[0],zero
	mulsd	%xmm0, %xmm3
	addsd	%xmm3, %xmm2
.LBB14_270:                             #   in Loop: Header=BB14_268 Depth=2
	movq	488(%r15), %rbx
	movq	8(%rbx), %rbx
	xorps	%xmm3, %xmm3
	cvtsi2sdl	4(%rbx,%r11), %xmm3
	movsd	.LCPI14_4(%rip), %xmm4          # xmm4 = mem[0],zero
	addsd	%xmm4, %xmm3
	addsd	%xmm3, %xmm1
	addsd	%xmm1, %xmm0
	divsd	%xmm0, %xmm2
	movsd	%xmm2, 8(%r10,%r11,2)
	movq	168(%rsp), %rbx                 # 8-byte Reload
	movsd	%xmm0, 8(%rbx,%r11,2)
	addq	$4, %r11
	cmpq	%r11, %rcx
	jne	.LBB14_268
.LBB14_271:                             # %._crit_edge2538
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	movq	output(%rip), %rax
	testl	%ecx, %ecx
	jle	.LBB14_272
# %bb.273:                              # %.lr.ph2545
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	168(%rax), %rsi
	movq	176(%rax), %rdx
	movq	64(%rdx), %rdx
	movq	(%rdx,%r14,8), %rdx
	movq	8(%rsi), %rsi
	movq	(%rsi,%r14,8), %rsi
	incq	%rcx
	xorpd	%xmm1, %xmm1
	movl	$1, %edi
	xorpd	%xmm0, %xmm0
	movq	64(%rsp), %r15                  # 8-byte Reload
.LBB14_274:                             #   Parent Loop BB14_151 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rbx,%rdi,8), %xmm2            # xmm2 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	(%rsi,%rdi,8), %xmm3            # xmm3 = mem[0],zero
	movsd	(%rdx,%rdi,8), %xmm4            # xmm4 = mem[0],zero
	mulsd	%xmm3, %xmm4
	addsd	%xmm4, %xmm0
	mulsd	%xmm3, %xmm2
	addsd	%xmm2, %xmm1
	incq	%rdi
	cmpq	%rdi, %rcx
	jne	.LBB14_274
	jmp	.LBB14_275
.LBB14_265:                             # %._crit_edge3039
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	88(%rcx), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	64(%rsp), %r15                  # 8-byte Reload
	jmp	.LBB14_276
.LBB14_272:                             #   in Loop: Header=BB14_151 Depth=1
	xorpd	%xmm0, %xmm0
	xorpd	%xmm1, %xmm1
	movq	64(%rsp), %r15                  # 8-byte Reload
.LBB14_275:                             # %._crit_edge2546
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	%xmm0, 48(%rsp)
	divsd	%xmm1, %xmm0
	movq	136(%rax), %rcx
	movq	88(%rcx), %rax
	movsd	%xmm0, (%rax,%r14,8)
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB14_276:                             #   in Loop: Header=BB14_151 Depth=1
	movq	40(%rcx), %rax
	movq	48(%rcx), %rdx
	movsd	(%rax,%r14,8), %xmm6            # xmm6 = mem[0],zero
	movsd	(%rdx,%r14,8), %xmm3            # xmm3 = mem[0],zero
	movq	56(%rcx), %rax
	movsd	(%rax,%r14,8), %xmm5            # xmm5 = mem[0],zero
	movsd	120(%rsp), %xmm1                # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	.LCPI14_17(%rip), %xmm1
	mulsd	%xmm0, %xmm1
	movsd	56(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm12, %xmm0
	divsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
	ucomisd	.LCPI14_27(%rip), %xmm0
	jb	.LBB14_278
# %bb.277:                              #   in Loop: Header=BB14_151 Depth=1
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB14_279
.LBB14_278:                             # %call.sqrt
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	%xmm3, (%rsp)                   # 8-byte Spill
	movsd	%xmm5, 24(%rsp)                 # 8-byte Spill
	movsd	%xmm6, 32(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	32(%rsp), %xmm6                 # 8-byte Reload
                                        # xmm6 = mem[0],zero
	movsd	24(%rsp), %xmm5                 # 8-byte Reload
                                        # xmm5 = mem[0],zero
	movsd	(%rsp), %xmm3                   # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	.LCPI14_5(%rip), %xmm12         # xmm12 = mem[0],zero
.LBB14_279:                             # %.split
                                        #   in Loop: Header=BB14_151 Depth=1
	movsd	128(%rsp), %xmm4                # 8-byte Reload
                                        # xmm4 = mem[0],zero
	mulsd	%xmm6, %xmm6
	mulsd	%xmm3, %xmm3
	addsd	%xmm6, %xmm3
	mulsd	%xmm5, %xmm5
	addsd	%xmm3, %xmm5
	sqrtsd	%xmm5, %xmm13
	movapd	%xmm13, %xmm1
	divsd	%xmm0, %xmm1
	divsd	120(%rsp), %xmm1                # 8-byte Folded Reload
	movq	output(%rip), %rcx
	movq	136(%rcx), %rax
	movq	96(%rax), %rdx
	movsd	%xmm1, (%rdx,%r14,8)
	xorps	%xmm0, %xmm0
	cvtsi2sdl	(%rcx), %xmm0
	movsd	88(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movq	104(%rax), %rdx
	movsd	%xmm1, (%rdx,%r14,8)
	movq	64(%rcx), %rdx
	movsd	(%rdx,%r14,8), %xmm1            # xmm1 = mem[0],zero
	ucomisd	.LCPI14_17(%rip), %xmm1
	jbe	.LBB14_281
# %bb.280:                              #   in Loop: Header=BB14_151 Depth=1
	movq	calc(%rip), %rsi
	movsd	80(%rsi), %xmm1                 # xmm1 = mem[0],zero
	subsd	32(%rcx), %xmm1
	mulsd	.LCPI14_0(%rip), %xmm1
	movsd	56(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movapd	%xmm3, %xmm2
	divsd	%xmm0, %xmm2
	mulsd	%xmm1, %xmm2
	movq	72(%rcx), %rsi
	divsd	(%rsi,%r14,8), %xmm2
	movq	112(%rax), %rsi
	movsd	%xmm2, (%rsi,%r14,8)
	movsd	248(%rsp), %xmm0                # xmm0 = mem[0],zero
	divsd	%xmm3, %xmm0
	subsd	%xmm4, %xmm0
	andpd	.LCPI14_11(%rip), %xmm0
	xorps	%xmm1, %xmm1
	sqrtsd	%xmm0, %xmm1
	mulsd	.LCPI14_19(%rip), %xmm1
	mulsd	%xmm2, %xmm1
	movq	120(%rax), %rsi
	movsd	%xmm1, (%rsi,%r14,8)
	movq	80(%rcx), %rcx
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	(%rdx,%r14,8), %xmm1
	divsd	%xmm1, %xmm0
	movl	$16, %ecx
	jmp	.LBB14_282
.LBB14_281:                             #   in Loop: Header=BB14_151 Depth=1
	movq	112(%rax), %rcx
	movabsq	$4756540486875873280, %rdx      # imm = 0x4202A05F20000000
	movq	%rdx, (%rcx,%r14,8)
	movq	24(%rax), %rcx
	movsd	.LCPI14_18(%rip), %xmm0         # xmm0 = mem[0],zero
	divsd	(%rcx,%r14,8), %xmm0
	movl	$15, %ecx
.LBB14_282:                             # %.loopexit2353.sink.split
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	(%rax,%rcx,8), %rcx
	movsd	%xmm0, (%rcx,%r14,8)
.LBB14_283:                             # %.loopexit2353
                                        #   in Loop: Header=BB14_151 Depth=1
	movq	136(%rax), %rax
	movsd	%xmm13, (%rax,%r14,8)
	movq	geom(%rip), %rax
	movl	(%rax), %ecx
.LBB14_284:                             #   in Loop: Header=BB14_151 Depth=1
	leaq	1(%r14), %rdx
	movslq	%ecx, %rsi
	cmpq	%rsi, %r14
	movq	%rdx, %r14
	jl	.LBB14_151
	jmp	.LBB14_285
.LBB14_136:                             # %.lr.ph2427
	xorl	%eax, %eax
	movsd	.LCPI14_7(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB14_137:                             # =>This Inner Loop Header: Depth=1
	xorpd	%xmm2, %xmm2
	ucomisd	%xmm2, %xmm0
	jbe	.LBB14_139
# %bb.138:                              #   in Loop: Header=BB14_137 Depth=1
	movq	192(%r15), %rdx
	movq	8(%rdx), %rdx
	movq	(%rdx,%r12,8), %rdx
	movq	8(%rdx,%rax), %rdx
	movsd	8(%rdx), %xmm2                  # xmm2 = mem[0],zero
	mulsd	%xmm1, %xmm2
	divsd	%xmm0, %xmm2
.LBB14_139:                             #   in Loop: Header=BB14_137 Depth=1
	movq	288(%rcx,%rax), %rdx
	movsd	%xmm2, (%rdx,%r12,8)
	addq	$8, %rax
	jmp	.LBB14_137
.LBB14_149:
	movq	64(%rsp), %r15                  # 8-byte Reload
.LBB14_285:                             # %._crit_edge2555
	movq	calc(%rip), %rcx
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	xorpd	%xmm1, %xmm1
	mulsd	104(%rcx), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB14_867
# %bb.286:
	cmpl	$1, 56(%rcx)
	jne	.LBB14_304
# %bb.287:
	movl	24(%rax), %eax
	testl	%eax, %eax
	jne	.LBB14_293
# %bb.288:
	leaq	712(%rsp), %r12
.Ltmp1411:
	movl	$.L.str.209, %esi
	movl	$45, %edx
	movq	%r12, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1412:
# %bb.289:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1155
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1413:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1414:
# %bb.290:                              # %.noexc1881
.Ltmp1415:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1416:
# %bb.291:                              # %.noexc1882
.Ltmp1417:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1418:
# %bb.292:                              # %.noexc1882._ZNSolsEPFRSoS_E.exit1157_crit_edge
	movq	geom(%rip), %rax
	movl	24(%rax), %eax
.LBB14_293:                             # %_ZNSolsEPFRSoS_E.exit1157
	cmpl	$1, %eax
	jne	.LBB14_299
# %bb.294:
	leaq	712(%rsp), %r12
.Ltmp1419:
	movl	$.L.str.210, %esi
	movl	$35, %edx
	movq	%r12, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1420:
# %bb.295:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1159
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1421:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1422:
# %bb.296:                              # %.noexc1885
.Ltmp1423:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1424:
# %bb.297:                              # %.noexc1886
.Ltmp1425:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1426:
# %bb.298:                              # %.noexc1886._ZNSolsEPFRSoS_E.exit1161_crit_edge
	movq	geom(%rip), %rax
	movl	24(%rax), %eax
.LBB14_299:                             # %_ZNSolsEPFRSoS_E.exit1161
	cmpl	$2, %eax
	jne	.LBB14_304
# %bb.300:
	leaq	712(%rsp), %r12
.Ltmp1427:
	movl	$.L.str.211, %esi
	movl	$33, %edx
	movq	%r12, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1428:
# %bb.301:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1163
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1429:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1430:
# %bb.302:                              # %.noexc1889
.Ltmp1431:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1432:
# %bb.303:                              # %.noexc1890
.Ltmp1433:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1434:
.LBB14_304:                             # %_ZNSolsEPFRSoS_E.exit1165
	leaq	712(%rsp), %rbp
	movq	(%rbp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1435:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1436:
# %bb.305:                              # %.noexc1893
.Ltmp1437:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1438:
# %bb.306:                              # %.noexc1894
.Ltmp1439:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1440:
# %bb.307:                              # %_ZNSolsEPFRSoS_E.exit1167
.Ltmp1441:
	movl	$.L.str.212, %esi
	movl	$9, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1442:
# %bb.308:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1169
	movq	output(%rip), %rax
	movl	8(%rax), %esi
.Ltmp1443:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp1444:
# %bb.309:
.Ltmp1445:
	movq	%rax, %r14
	movl	$.L.str.213, %esi
	movl	$6, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1446:
# %bb.310:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1171
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1447:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1448:
# %bb.311:                              # %_ZNSolsEd.exit
.Ltmp1449:
	movq	%rax, %r14
	movl	$.L.str.214, %esi
	movl	$6, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1450:
# %bb.312:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1174
	movq	output(%rip), %rax
	movl	(%rax), %esi
.Ltmp1451:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp1452:
# %bb.313:
.Ltmp1453:
	movq	%rax, %r14
	movl	$.L.str.215, %esi
	movl	$14, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1454:
# %bb.314:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1176
	movq	output(%rip), %rax
	movsd	32(%rax), %xmm0                 # xmm0 = mem[0],zero
.Ltmp1455:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1456:
# %bb.315:                              # %_ZNSolsEd.exit1178
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1457:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1458:
# %bb.316:                              # %.noexc1897
.Ltmp1459:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1460:
# %bb.317:                              # %.noexc1898
.Ltmp1461:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1462:
# %bb.318:                              # %_ZNSolsEPFRSoS_E.exit1180
	movq	calc(%rip), %rax
	cvttsd2si	216(%rax), %rax
	movq	%rax, (%rsp)                    # 8-byte Spill
.Ltmp1463:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.216, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1464:
# %bb.319:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1182
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
.Ltmp1465:
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
.Ltmp1466:
# %bb.320:
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1467:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1468:
# %bb.321:                              # %.noexc1901
.Ltmp1469:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1470:
# %bb.322:                              # %.noexc1902
.Ltmp1471:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1472:
# %bb.323:                              # %_ZNSolsEPFRSoS_E.exit1184.preheader
	movq	gas(%rip), %rax
	movl	424(%rax), %eax
	testl	%eax, %eax
	movq	40(%rsp), %rbx                  # 8-byte Reload
	js	.LBB14_325
# %bb.324:                              # %_ZNSolsEPFRSoS_E.exit1184.preheader2699
	leaq	4(,%rax,4), %rdx
	movq	%rbx, %rdi
	xorl	%esi, %esi
	callq	memset@PLT
.LBB14_325:                             # %.preheader2338
	movq	molecs(%rip), %rcx
	movl	80(%rcx), %eax
	testl	%eax, %eax
	jle	.LBB14_328
# %bb.326:                              # %.lr.ph2562
	movq	8(%rcx), %rcx
	incq	%rax
	movl	$1, %edx
.LBB14_327:                             # =>This Inner Loop Header: Depth=1
	movslq	(%rcx,%rdx,4), %rsi
	incl	(%rbx,%rsi,4)
	incq	%rdx
	cmpq	%rdx, %rax
	jne	.LBB14_327
.LBB14_328:                             # %._crit_edge2563
.Ltmp1473:
	movl	$.L.str.217, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1474:
# %bb.329:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1186
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
.Ltmp1475:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp1476:
# %bb.330:
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1477:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1478:
# %bb.331:                              # %.noexc1905
.Ltmp1479:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1480:
# %bb.332:                              # %.noexc1906
.Ltmp1481:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1482:
# %bb.333:                              # %_ZNSolsEPFRSoS_E.exit1188.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	movq	40(%rsp), %rbx                  # 8-byte Reload
	jle	.LBB14_350
# %bb.334:                              # %.lr.ph2566.preheader
	movl	$1, %r12d
.LBB14_335:                             # %.lr.ph2566
                                        # =>This Inner Loop Header: Depth=1
.Ltmp1483:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.218, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1484:
# %bb.336:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1190
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1485:
	movl	$_ZSt4cout, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1486:
# %bb.337:                              #   in Loop: Header=BB14_335 Depth=1
.Ltmp1487:
	movq	%rax, %r14
	movl	$.L.str.219, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1488:
# %bb.338:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1192
                                        #   in Loop: Header=BB14_335 Depth=1
	movl	(%rbx,%r12,4), %r13d
.Ltmp1489:
	movq	%r14, %rdi
	movl	%r13d, %esi
	callq	_ZNSolsEi
.Ltmp1490:
# %bb.339:                              #   in Loop: Header=BB14_335 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1491:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1492:
# %bb.340:                              # %.noexc1909
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1493:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1494:
# %bb.341:                              # %.noexc1910
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1495:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1496:
# %bb.342:                              # %_ZNSolsEPFRSoS_E.exit1194
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1497:
	movl	$.L.str.220, %esi
	movl	$8, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1498:
# %bb.343:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1196
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1499:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1500:
# %bb.344:                              #   in Loop: Header=BB14_335 Depth=1
.Ltmp1501:
	movq	%rax, %r14
	movl	$.L.str.221, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1502:
# %bb.345:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1198
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1503:
	movq	%r14, %rdi
	movl	%r13d, %esi
	callq	_ZNSolsEi
.Ltmp1504:
# %bb.346:                              #   in Loop: Header=BB14_335 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1505:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1506:
# %bb.347:                              # %.noexc1913
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1507:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1508:
# %bb.348:                              # %.noexc1914
                                        #   in Loop: Header=BB14_335 Depth=1
.Ltmp1509:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1510:
# %bb.349:                              # %_ZNSolsEPFRSoS_E.exit1200
                                        #   in Loop: Header=BB14_335 Depth=1
	leaq	1(%r12), %rcx
	movq	gas(%rip), %rax
	movslq	424(%rax), %rdx
	cmpq	%rdx, %r12
	movq	%rcx, %r12
	jl	.LBB14_335
.LBB14_350:                             # %_ZNSolsEPFRSoS_E.exit1188._crit_edge
	cmpl	$0, 448(%rax)
	jle	.LBB14_408
# %bb.351:
.Ltmp1512:
	leaq	48(%rsp), %rsi
	xorl	%edi, %edi
	callq	_Z6ENERGYiRd
.Ltmp1513:
# %bb.352:                              # %.preheader2332
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_408
# %bb.353:                              # %.lr.ph2570.preheader
	xorl	%r15d, %r15d
.LBB14_354:                             # %.lr.ph2570
                                        # =>This Inner Loop Header: Depth=1
	movq	472(%rax), %rcx
	cmpl	$0, 4(%rcx,%r15,4)
	jle	.LBB14_383
# %bb.355:                              #   in Loop: Header=BB14_354 Depth=1
.Ltmp1514:
	movl	$file_9+16, %edi
	movl	$.L.str.222, %esi
	movl	$3, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1515:
# %bb.356:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1202
                                        #   in Loop: Header=BB14_354 Depth=1
	leaq	1(%r15), %r12
.Ltmp1516:
	movl	$file_9+16, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1517:
# %bb.357:                              #   in Loop: Header=BB14_354 Depth=1
.Ltmp1518:
	movq	%rax, %r14
	movl	$.L.str.223, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1519:
# %bb.358:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1204
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	288(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1520:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1521:
# %bb.359:                              # %_ZNSolsEd.exit1206
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1522:
	movq	%rax, %r14
	movl	$.L.str.224, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1523:
# %bb.360:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1208
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1524:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1525:
# %bb.361:                              # %_ZNSolsEd.exit1210
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1526:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1527:
# %bb.362:                              # %.noexc1917
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1528:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1529:
# %bb.363:                              # %.noexc1918
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1530:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1531:
# %bb.364:                              # %_ZNSolsEPFRSoS_E.exit1212
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1532:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.225, %esi
	movl	$2, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1533:
# %bb.365:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1214
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1534:
	movl	$_ZSt4cout, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1535:
# %bb.366:                              #   in Loop: Header=BB14_354 Depth=1
.Ltmp1536:
	movq	%rax, %r14
	movl	$.L.str.226, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1537:
# %bb.367:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1216
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	288(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1538:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1539:
# %bb.368:                              # %_ZNSolsEd.exit1218
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1540:
	movq	%rax, %r14
	movl	$.L.str.224, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1541:
# %bb.369:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1220
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1542:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1543:
# %bb.370:                              # %_ZNSolsEd.exit1222
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1544:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1545:
# %bb.371:                              # %.noexc1921
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1546:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1547:
# %bb.372:                              # %.noexc1922
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1548:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1549:
# %bb.373:                              # %_ZNSolsEPFRSoS_E.exit1224
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1550:
	movl	$.L.str.222, %esi
	movl	$3, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1551:
# %bb.374:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1226
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1552:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1553:
# %bb.375:                              #   in Loop: Header=BB14_354 Depth=1
.Ltmp1554:
	movq	%rax, %r14
	movl	$.L.str.223, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1555:
# %bb.376:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1228
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	288(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1556:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1557:
# %bb.377:                              # %_ZNSolsEd.exit1230
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1558:
	movq	%rax, %r14
	movl	$.L.str.224, %esi
	movl	$9, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1559:
# %bb.378:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1232
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	calc(%rip), %rax
	movq	296(%rax), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1560:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1561:
# %bb.379:                              # %_ZNSolsEd.exit1234
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1562:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1563:
# %bb.380:                              # %.noexc1925
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1564:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1565:
# %bb.381:                              # %.noexc1926
                                        #   in Loop: Header=BB14_354 Depth=1
.Ltmp1566:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1567:
# %bb.382:                              # %.noexc1926._ZNSolsEPFRSoS_E.exit1236_crit_edge
                                        #   in Loop: Header=BB14_354 Depth=1
	movq	gas(%rip), %rax
.LBB14_383:                             # %_ZNSolsEPFRSoS_E.exit1236
                                        #   in Loop: Header=BB14_354 Depth=1
	movslq	424(%rax), %rcx
	incq	%r15
	cmpq	%rcx, %r15
	jl	.LBB14_354
# %bb.384:                              # %.preheader2328
	testl	%ecx, %ecx
	movq	64(%rsp), %r15                  # 8-byte Reload
	jle	.LBB14_408
# %bb.385:                              # %.lr.ph2573.preheader
	movl	$1, %r12d
.LBB14_386:                             # %.lr.ph2573
                                        # =>This Inner Loop Header: Depth=1
.Ltmp1569:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.227, %esi
	movl	$13, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1570:
# %bb.387:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1238
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1571:
	movl	$_ZSt4cout, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1572:
# %bb.388:                              #   in Loop: Header=BB14_386 Depth=1
.Ltmp1573:
	movq	%rax, %r14
	movl	$.L.str.228, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1574:
# %bb.389:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1240
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1575:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1576:
# %bb.390:                              # %_ZNSolsEd.exit1242
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1577:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1578:
# %bb.391:                              # %.noexc1929
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1579:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1580:
# %bb.392:                              # %.noexc1930
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1581:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1582:
# %bb.393:                              # %_ZNSolsEPFRSoS_E.exit1244
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1583:
	movl	$file_9+16, %edi
	movl	$.L.str.229, %esi
	movl	$14, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1584:
# %bb.394:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1246
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1585:
	movl	$file_9+16, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1586:
# %bb.395:                              #   in Loop: Header=BB14_386 Depth=1
.Ltmp1587:
	movq	%rax, %r14
	movl	$.L.str.230, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1588:
# %bb.396:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1248
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1589:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1590:
# %bb.397:                              # %_ZNSolsEd.exit1250
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1591:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1592:
# %bb.398:                              # %.noexc1933
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1593:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1594:
# %bb.399:                              # %.noexc1934
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1595:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1596:
# %bb.400:                              # %_ZNSolsEPFRSoS_E.exit1252
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1597:
	movl	$.L.str.229, %esi
	movl	$14, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1598:
# %bb.401:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1254
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1599:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1600:
# %bb.402:                              #   in Loop: Header=BB14_386 Depth=1
.Ltmp1601:
	movq	%rax, %r14
	movl	$.L.str.230, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1602:
# %bb.403:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1256
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	gas(%rip), %rax
	movq	280(%rax), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1603:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1604:
# %bb.404:                              # %_ZNSolsEd.exit1258
                                        #   in Loop: Header=BB14_386 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1605:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1606:
# %bb.405:                              # %.noexc1937
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1607:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1608:
# %bb.406:                              # %.noexc1938
                                        #   in Loop: Header=BB14_386 Depth=1
.Ltmp1609:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1610:
# %bb.407:                              # %_ZNSolsEPFRSoS_E.exit1260
                                        #   in Loop: Header=BB14_386 Depth=1
	leaq	1(%r12), %rax
	movq	gas(%rip), %rcx
	movslq	424(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_386
.LBB14_408:                             # %.loopexit2329
.Ltmp1612:
	movl	$.L.str.231, %esi
	movl	$25, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1613:
# %bb.409:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1262
.Ltmp1614:
	movq	%rbp, %rdi
	movq	(%rsp), %rsi                    # 8-byte Reload
	callq	_ZNSo9_M_insertIxEERSoT_
.Ltmp1615:
# %bb.410:                              # %_ZNSolsEx.exit
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1616:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1617:
# %bb.411:                              # %.noexc1941
.Ltmp1618:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1619:
# %bb.412:                              # %.noexc1942
.Ltmp1620:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1621:
# %bb.413:                              # %_ZNSolsEPFRSoS_E.exit1265
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
.Ltmp1622:
	movl	$.L.str.232, %esi
	movl	$25, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1623:
# %bb.414:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1267
	cvttsd2si	(%rsp), %rsi            # 8-byte Folded Reload
.Ltmp1624:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIxEERSoT_
.Ltmp1625:
# %bb.415:                              # %_ZNSolsEx.exit1269
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1626:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1627:
# %bb.416:                              # %.noexc1945
.Ltmp1628:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1629:
# %bb.417:                              # %.noexc1946
.Ltmp1630:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1631:
# %bb.418:                              # %_ZNSolsEPFRSoS_E.exit1271
.Ltmp1632:
	movl	$.L.str.233, %esi
	movl	$53, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1633:
# %bb.419:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1273
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1634:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1635:
# %bb.420:                              # %.noexc1949
.Ltmp1636:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1637:
# %bb.421:                              # %.noexc1950
.Ltmp1638:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1639:
# %bb.422:                              # %_ZNSolsEPFRSoS_E.exit1275.preheader
	movq	gas(%rip), %rax
	movl	424(%rax), %ecx
	testl	%ecx, %ecx
	jle	.LBB14_444
# %bb.423:                              # %.lr.ph2586.preheader
	movl	$1, %ebx
.LBB14_424:                             # %.lr.ph2586
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_427 Depth 2
                                        #     Child Loop BB14_436 Depth 2
	cmpl	$8, 440(%rax)
	je	.LBB14_434
# %bb.425:                              # %.preheader2322
                                        #   in Loop: Header=BB14_424 Depth=1
	testl	%ecx, %ecx
	jle	.LBB14_430
# %bb.426:                              # %.lr.ph2576.preheader
                                        #   in Loop: Header=BB14_424 Depth=1
	xorl	%r14d, %r14d
.LBB14_427:                             # %.lr.ph2576
                                        #   Parent Loop BB14_424 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	calc(%rip), %rax
	movq	328(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	8(%rax,%r14,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1640:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1641:
# %bb.428:                              # %_ZNSolsEd.exit1277
                                        #   in Loop: Header=BB14_427 Depth=2
.Ltmp1642:
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1643:
# %bb.429:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1279
                                        #   in Loop: Header=BB14_427 Depth=2
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB14_427
.LBB14_430:                             # %._crit_edge2577
                                        #   in Loop: Header=BB14_424 Depth=1
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1645:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1646:
# %bb.431:                              # %.noexc1953
                                        #   in Loop: Header=BB14_424 Depth=1
.Ltmp1647:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1648:
# %bb.432:                              # %.noexc1954
                                        #   in Loop: Header=BB14_424 Depth=1
.Ltmp1649:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1650:
# %bb.433:                              # %_ZNSolsEPFRSoS_E.exit1281
                                        #   in Loop: Header=BB14_424 Depth=1
	movq	gas(%rip), %rax
	cmpl	$8, 440(%rax)
	jne	.LBB14_443
.LBB14_434:                             # %.preheader2318
                                        #   in Loop: Header=BB14_424 Depth=1
	cmpl	$0, 424(%rax)
	jle	.LBB14_439
# %bb.435:                              # %.lr.ph2580.preheader
                                        #   in Loop: Header=BB14_424 Depth=1
	xorl	%r14d, %r14d
.LBB14_436:                             # %.lr.ph2580
                                        #   Parent Loop BB14_424 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	calc(%rip), %rax
	movq	328(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	8(%rax,%r14,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp1651:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1652:
# %bb.437:                              # %_ZNSolsEd.exit1283
                                        #   in Loop: Header=BB14_436 Depth=2
.Ltmp1653:
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1654:
# %bb.438:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1285
                                        #   in Loop: Header=BB14_436 Depth=2
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB14_436
.LBB14_439:                             # %._crit_edge2581
                                        #   in Loop: Header=BB14_424 Depth=1
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1656:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1657:
# %bb.440:                              # %.noexc1957
                                        #   in Loop: Header=BB14_424 Depth=1
.Ltmp1658:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1659:
# %bb.441:                              # %.noexc1958
                                        #   in Loop: Header=BB14_424 Depth=1
.Ltmp1660:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1661:
# %bb.442:                              # %.noexc1958._ZNSolsEPFRSoS_E.exit1287_crit_edge
                                        #   in Loop: Header=BB14_424 Depth=1
	movq	gas(%rip), %rax
.LBB14_443:                             # %_ZNSolsEPFRSoS_E.exit1287
                                        #   in Loop: Header=BB14_424 Depth=1
	leaq	1(%rbx), %rdx
	movslq	424(%rax), %rcx
	cmpq	%rcx, %rbx
	movq	%rdx, %rbx
	jl	.LBB14_424
.LBB14_444:                             # %_ZNSolsEPFRSoS_E.exit1275._crit_edge
	callq	clock
	movq	%rax, %r14
.Ltmp1663:
	movl	$.L.str.234, %esi
	movl	$17, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1664:
# %bb.445:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1289
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r14d, %xmm0
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	divsd	.LCPI14_20(%rip), %xmm0
.Ltmp1665:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1666:
# %bb.446:                              # %_ZNSolsEd.exit1291
.Ltmp1667:
	movq	%rax, %r12
	movl	$.L.str.235, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1668:
# %bb.447:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1293
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1669:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1670:
# %bb.448:                              # %.noexc1961
.Ltmp1671:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1672:
# %bb.449:                              # %.noexc1962
.Ltmp1673:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1674:
# %bb.450:                              # %_ZNSolsEPFRSoS_E.exit1295
.Ltmp1675:
	movl	$.L.str.236, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1676:
# %bb.451:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1297
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
	subsd	160(%rax), %xmm0
	mulsd	.LCPI14_20(%rip), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp1677:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1678:
# %bb.452:                              # %_ZNSolsEd.exit1299
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1679:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1680:
# %bb.453:                              # %.noexc1965
.Ltmp1681:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1682:
# %bb.454:                              # %.noexc1966
.Ltmp1683:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1684:
# %bb.455:                              # %_ZNSolsEPFRSoS_E.exit1301
.Ltmp1685:
	movl	$.L.str.237, %esi
	movl	$25, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1686:
# %bb.456:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1303
	movq	calc(%rip), %rax
	movsd	216(%rax), %xmm0                # xmm0 = mem[0],zero
	subsd	168(%rax), %xmm0
	mulsd	.LCPI14_20(%rip), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp1687:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1688:
# %bb.457:                              # %_ZNSolsEd.exit1305
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1689:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1690:
# %bb.458:                              # %.noexc1969
.Ltmp1691:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1692:
# %bb.459:                              # %.noexc1970
.Ltmp1693:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1694:
# %bb.460:                              # %_ZNSolsEPFRSoS_E.exit1307
	movq	calc(%rip), %rax
	cmpl	$0, 56(%rax)
	jne	.LBB14_541
# %bb.461:
	movq	gas(%rip), %rcx
	cmpl	$0, 428(%rcx)
	jne	.LBB14_541
# %bb.462:
	cmpl	$0, 20(%rax)
	jne	.LBB14_541
# %bb.463:
	movq	geom(%rip), %rcx
	movl	4(%rcx), %eax
	testl	%eax, %eax
	jle	.LBB14_464
# %bb.465:                              # %.lr.ph2594
	movq	144(%rcx), %rsi
	movq	40(%rsi), %rcx
	movq	24(%rsi), %rdx
	movq	32(%rsi), %rsi
	incq	%rax
	xorpd	%xmm1, %xmm1
	movl	$1, %edi
	xorpd	%xmm0, %xmm0
	xorpd	%xmm2, %xmm2
.LBB14_466:                             # =>This Inner Loop Header: Depth=1
	addsd	(%rcx,%rdi,8), %xmm2
	addsd	(%rsi,%rdi,8), %xmm1
	addsd	(%rdx,%rdi,8), %xmm0
	incq	%rdi
	cmpq	%rdi, %rax
	jne	.LBB14_466
	jmp	.LBB14_467
.LBB14_464:
	xorpd	%xmm2, %xmm2
	xorpd	%xmm0, %xmm0
	xorpd	%xmm1, %xmm1
.LBB14_467:                             # %._crit_edge2595
	movsd	%xmm1, 24(%rsp)                 # 8-byte Spill
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movsd	%xmm2, 48(%rsp)
.Ltmp1695:
	movl	$.L.str.238, %esi
	movl	$18, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1696:
# %bb.468:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1309
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp1697:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1698:
# %bb.469:                              # %_ZNSolsEd.exit1311
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1699:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1700:
# %bb.470:                              # %.noexc1973
.Ltmp1701:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1702:
# %bb.471:                              # %.noexc1974
.Ltmp1703:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1704:
# %bb.472:                              # %_ZNSolsEPFRSoS_E.exit1313
.Ltmp1705:
	movl	$.L.str.239, %esi
	movl	$29, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1706:
# %bb.473:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1315
	movq	molecs(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	80(%rax), %xmm0
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	4(%rax), %xmm1
	divsd	%xmm1, %xmm0
.Ltmp1707:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1708:
# %bb.474:                              # %_ZNSolsEd.exit1317
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1709:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1710:
# %bb.475:                              # %.noexc1977
.Ltmp1711:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1712:
# %bb.476:                              # %.noexc1978
.Ltmp1713:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1714:
# %bb.477:                              # %_ZNSolsEPFRSoS_E.exit1319
.Ltmp1715:
	movl	$.L.str.240, %esi
	movl	$21, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1716:
# %bb.478:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1321
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	4(%rax), %xmm1
	movq	calc(%rip), %rax
	mulsd	80(%rax), %xmm1
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
.Ltmp1717:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1718:
# %bb.479:                              # %_ZNSolsEd.exit1323
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1719:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1720:
# %bb.480:                              # %.noexc1981
.Ltmp1721:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1722:
# %bb.481:                              # %.noexc1982
.Ltmp1723:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1724:
# %bb.482:                              # %_ZNSolsEPFRSoS_E.exit1325
.Ltmp1725:
	movl	$.L.str.241, %esi
	movl	$47, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1726:
# %bb.483:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1327
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	4(%rax), %xmm1
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
.Ltmp1727:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1728:
# %bb.484:                              # %_ZNSolsEd.exit1329
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1729:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1730:
# %bb.485:                              # %.noexc1985
.Ltmp1731:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1732:
# %bb.486:                              # %.noexc1986
.Ltmp1733:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1734:
# %bb.487:                              # %_ZNSolsEPFRSoS_E.exit1331
.Ltmp1735:
	movl	$.L.str.242, %esi
	movl	$35, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1736:
# %bb.488:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1333
	movq	geom(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	4(%rax), %xmm1
	movsd	32(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
.Ltmp1737:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1738:
# %bb.489:                              # %_ZNSolsEd.exit1335
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1739:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1740:
# %bb.490:                              # %.noexc1989
.Ltmp1741:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1742:
# %bb.491:                              # %.noexc1990
.Ltmp1743:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1744:
# %bb.492:                              # %_ZNSolsEPFRSoS_E.exit1337
	movq	gas(%rip), %rax
	cmpl	$1, 424(%rax)
	jne	.LBB14_499
# %bb.493:
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	24(%rcx), %rcx
	movsd	8(%rcx), %xmm1                  # xmm1 = mem[0],zero
	mulsd	.LCPI14_23(%rip), %xmm1
	movq	320(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movsd	8(%rcx), %xmm2                  # xmm2 = mem[0],zero
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	mulsd	.LCPI14_24(%rip), %xmm0
	mulsd	%xmm2, %xmm2
	movq	40(%rax), %rax
	divsd	8(%rax), %xmm0
	mulsd	%xmm1, %xmm2
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB14_495
# %bb.494:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB14_496
.LBB14_499:
.Ltmp1745:
	movl	$.L.str.244, %esi
	movl	$44, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1746:
# %bb.500:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1345
.Ltmp1747:
	movq	%rbp, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1748:
# %bb.501:                              # %_ZNSolsEPFRSoS_E.exit1347.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_522
# %bb.502:                              # %.lr.ph2604.preheader
	movl	$1, %r12d
.LBB14_503:                             # %.lr.ph2604
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_510 Depth 2
.Ltmp1749:
	movl	$.L.str.245, %esi
	movl	$27, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1750:
# %bb.504:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1349
                                        #   in Loop: Header=BB14_503 Depth=1
.Ltmp1751:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1752:
# %bb.505:                              #   in Loop: Header=BB14_503 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1753:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1754:
# %bb.506:                              # %.noexc1993
                                        #   in Loop: Header=BB14_503 Depth=1
.Ltmp1755:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1756:
# %bb.507:                              # %.noexc1994
                                        #   in Loop: Header=BB14_503 Depth=1
.Ltmp1757:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1758:
# %bb.508:                              # %_ZNSolsEPFRSoS_E.exit1351.preheader
                                        #   in Loop: Header=BB14_503 Depth=1
	movq	gas(%rip), %rax
	movslq	424(%rax), %rcx
	testq	%rcx, %rcx
	jle	.LBB14_521
# %bb.509:                              # %.lr.ph2601
                                        #   in Loop: Header=BB14_503 Depth=1
	movq	136(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx,%r12,8), %rbx
	xorl	%r15d, %r15d
.LBB14_510:                             #   Parent Loop BB14_503 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rcx
	movq	136(%rcx), %rdx
	movq	176(%rcx), %rcx
	movq	24(%rdx), %rdx
	movsd	8(%rdx), %xmm1                  # xmm1 = mem[0],zero
	mulsd	.LCPI14_21(%rip), %xmm1
	movq	8(%rcx), %rcx
	movq	8(%rcx), %rcx
	mulsd	8(%rcx,%r15,8), %xmm1
	movq	352(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movq	(%rdx,%r12,8), %rdx
	mulsd	8(%rdx,%r15,8), %xmm1
	movq	40(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	8(%rax,%r15,8), %xmm0           # xmm0 = mem[0],zero
	mulsd	.LCPI14_22(%rip), %xmm0
	movq	(%rcx,%r12,8), %rax
	divsd	8(%rax,%r15,8), %xmm0
	ucomisd	.LCPI14_27(%rip), %xmm0
	jb	.LBB14_512
# %bb.511:                              #   in Loop: Header=BB14_510 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB14_513
.LBB14_512:                             # %call.sqrt3636
                                        #   in Loop: Header=BB14_510 Depth=2
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	callq	sqrt
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB14_513:                             # %.split3635
                                        #   in Loop: Header=BB14_510 Depth=2
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	movq	352(%rax), %rax
	movq	24(%rax), %rcx
	movq	40(%rax), %rax
	movq	(%rax,%r12,8), %rax
	divsd	8(%rax,%r15,8), %xmm0
	movq	(%rcx,%r12,8), %rax
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	8(%rax,%r15,8), %xmm1
	callq	pow
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	movsd	%xmm0, 8(%rbx,%r15,8)
.Ltmp1760:
	movl	$.L.str.246, %esi
	movl	$13, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1761:
# %bb.514:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1353
                                        #   in Loop: Header=BB14_510 Depth=2
	leal	1(%r15), %esi
.Ltmp1762:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp1763:
# %bb.515:                              #   in Loop: Header=BB14_510 Depth=2
.Ltmp1764:
	movq	%rax, %r13
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1765:
# %bb.516:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1355
                                        #   in Loop: Header=BB14_510 Depth=2
	movq	calc(%rip), %rax
	movq	328(%rax), %rcx
	movq	(%rcx,%r12,8), %rcx
	movsd	8(%rcx,%r15,8), %xmm0           # xmm0 = mem[0],zero
	movq	molecs(%rip), %rcx
	xorps	%xmm1, %xmm1
	cvtsi2sdl	80(%rcx), %xmm1
	movq	gas(%rip), %rcx
	movq	312(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	mulsd	8(%rcx), %xmm1
	movsd	80(%rax), %xmm2                 # xmm2 = mem[0],zero
	movq	output(%rip), %rax
	subsd	32(%rax), %xmm2
	mulsd	%xmm1, %xmm2
	divsd	%xmm2, %xmm0
	divsd	8(%rbx,%r15,8), %xmm0
.Ltmp1766:
	movq	%r13, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1767:
# %bb.517:                              # %_ZNSolsEd.exit1357
                                        #   in Loop: Header=BB14_510 Depth=2
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1768:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1769:
# %bb.518:                              # %.noexc1997
                                        #   in Loop: Header=BB14_510 Depth=2
.Ltmp1770:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1771:
# %bb.519:                              # %.noexc1998
                                        #   in Loop: Header=BB14_510 Depth=2
.Ltmp1772:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1773:
# %bb.520:                              # %_ZNSolsEPFRSoS_E.exit1359
                                        #   in Loop: Header=BB14_510 Depth=2
	movq	gas(%rip), %rax
	movslq	424(%rax), %rcx
	incq	%r15
	cmpq	%rcx, %r15
	jl	.LBB14_510
.LBB14_521:                             # %_ZNSolsEPFRSoS_E.exit1347
                                        #   in Loop: Header=BB14_503 Depth=1
	leaq	1(%r12), %rax
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_503
.LBB14_522:                             # %_ZNSolsEPFRSoS_E.exit1347._crit_edge
.Ltmp1775:
	movq	%rbp, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1776:
	movq	64(%rsp), %r15                  # 8-byte Reload
# %bb.523:                              # %_ZNSolsEPFRSoS_E.exit1361.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_541
# %bb.524:                              # %.lr.ph2610.preheader
	movl	$1, %r12d
.LBB14_525:                             # %.lr.ph2610
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_532 Depth 2
.Ltmp1777:
	movl	$.L.str.247, %esi
	movl	$30, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1778:
# %bb.526:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1363
                                        #   in Loop: Header=BB14_525 Depth=1
.Ltmp1779:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp1780:
# %bb.527:                              #   in Loop: Header=BB14_525 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1781:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1782:
# %bb.528:                              # %.noexc2001
                                        #   in Loop: Header=BB14_525 Depth=1
.Ltmp1783:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1784:
# %bb.529:                              # %.noexc2002
                                        #   in Loop: Header=BB14_525 Depth=1
.Ltmp1785:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1786:
# %bb.530:                              # %_ZNSolsEPFRSoS_E.exit1365.preheader
                                        #   in Loop: Header=BB14_525 Depth=1
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	testq	%rax, %rax
	jle	.LBB14_540
# %bb.531:                              # %.lr.ph2607.preheader
                                        #   in Loop: Header=BB14_525 Depth=1
	movl	$1, %r13d
.LBB14_532:                             # %.lr.ph2607
                                        #   Parent Loop BB14_525 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
.Ltmp1788:
	movl	$.L.str.246, %esi
	movl	$13, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1789:
# %bb.533:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1367
                                        #   in Loop: Header=BB14_532 Depth=2
.Ltmp1790:
	movq	%rbp, %rdi
	movl	%r13d, %esi
	callq	_ZNSolsEi
.Ltmp1791:
# %bb.534:                              #   in Loop: Header=BB14_532 Depth=2
.Ltmp1792:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1793:
# %bb.535:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1369
                                        #   in Loop: Header=BB14_532 Depth=2
	movq	calc(%rip), %rax
	movq	328(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1794:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1795:
# %bb.536:                              # %_ZNSolsEd.exit1371
                                        #   in Loop: Header=BB14_532 Depth=2
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1796:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1797:
# %bb.537:                              # %.noexc2005
                                        #   in Loop: Header=BB14_532 Depth=2
.Ltmp1798:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1799:
# %bb.538:                              # %.noexc2006
                                        #   in Loop: Header=BB14_532 Depth=2
.Ltmp1800:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1801:
# %bb.539:                              # %_ZNSolsEPFRSoS_E.exit1373
                                        #   in Loop: Header=BB14_532 Depth=2
	leaq	1(%r13), %rcx
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	cmpq	%rax, %r13
	movq	%rcx, %r13
	jl	.LBB14_532
.LBB14_540:                             # %_ZNSolsEPFRSoS_E.exit1361
                                        #   in Loop: Header=BB14_525 Depth=1
	leaq	1(%r12), %rcx
	cmpq	%rax, %r12
	movq	%rcx, %r12
	jl	.LBB14_525
	jmp	.LBB14_541
.LBB14_495:                             # %call.sqrt3634
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	callq	sqrt
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB14_496:                             # %.split3633
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, (%rsp)                   # 8-byte Spill
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	16(%rax), %rcx
	divsd	8(%rcx), %xmm0
	movq	24(%rax), %rax
	movsd	.LCPI14_10(%rip), %xmm1         # xmm1 = mem[0],zero
	subsd	8(%rax), %xmm1
	callq	pow
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movsd	%xmm0, 48(%rsp)
.Ltmp1803:
	movl	$.L.str.243, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1804:
# %bb.497:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1339
	movq	calc(%rip), %rax
	movq	molecs(%rip), %rcx
	xorps	%xmm1, %xmm1
	cvtsi2sdl	80(%rcx), %xmm1
	movq	328(%rax), %rcx
	movq	8(%rcx), %rcx
	movsd	80(%rax), %xmm2                 # xmm2 = mem[0],zero
	movq	output(%rip), %rax
	subsd	32(%rax), %xmm2
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
	mulsd	%xmm1, %xmm2
	divsd	%xmm2, %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp1805:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1806:
# %bb.498:                              # %_ZNSolsEd.exit1341
.Ltmp1807:
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp1808:
.LBB14_541:                             # %_ZNSolsEPFRSoS_E.exit1343
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1809:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1810:
# %bb.542:                              # %.noexc2009
.Ltmp1811:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1812:
# %bb.543:                              # %.noexc2010
.Ltmp1813:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1814:
# %bb.544:                              # %_ZNSolsEPFRSoS_E.exit1375
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, 4(%rax)
	je	.LBB14_546
# %bb.545:
	cmpl	$1, 8(%rax)
	jne	.LBB14_550
.LBB14_546:
.Ltmp1815:
	movl	$.L.str.248, %esi
	movl	$18, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1816:
# %bb.547:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1377
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1817:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1818:
# %bb.548:                              # %.noexc2013
.Ltmp1819:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1820:
# %bb.549:                              # %.noexc2014
.Ltmp1821:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1822:
.LBB14_550:                             # %_ZNSolsEPFRSoS_E.exit1379.preheader
	movl	$1, %r13d
.LBB14_551:                             # %_ZNSolsEPFRSoS_E.exit1379
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_701 Depth 2
	movq	geom(%rip), %rax
	movq	40(%rax), %rax
	cmpl	$2, (%rax,%r13,4)
	jne	.LBB14_709
# %bb.552:                              #   in Loop: Header=BB14_551 Depth=1
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp1823:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1824:
# %bb.553:                              # %.noexc2017
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1825:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp1826:
# %bb.554:                              # %.noexc2018
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1827:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1828:
# %bb.555:                              # %_ZNSolsEPFRSoS_E.exit1381
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1829:
	movl	$.L.str.249, %esi
	movl	$11, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1830:
# %bb.556:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1383
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1831:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1832:
# %bb.557:                              # %_ZNSolsEd.exit1385
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1833:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1834:
# %bb.558:                              # %.noexc2021
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1835:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1836:
# %bb.559:                              # %.noexc2022
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1837:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1838:
# %bb.560:                              # %_ZNSolsEPFRSoS_E.exit1387
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1839:
	movl	$.L.str.250, %esi
	movl	$16, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1840:
# %bb.561:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1389
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1841:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1842:
# %bb.562:                              # %_ZNSolsEd.exit1391
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1843:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1844:
# %bb.563:                              # %.noexc2025
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1845:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1846:
# %bb.564:                              # %.noexc2026
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1847:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1848:
# %bb.565:                              # %_ZNSolsEPFRSoS_E.exit1393
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1849:
	movl	$.L.str.251, %esi
	movl	$12, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1850:
# %bb.566:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1395
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	24(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1851:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1852:
# %bb.567:                              # %_ZNSolsEd.exit1397
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1853:
	movq	%rax, %r12
	movl	$.L.str.252, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1854:
# %bb.568:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1399
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1855:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1856:
# %bb.569:                              # %.noexc2029
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1857:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1858:
# %bb.570:                              # %.noexc2030
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1859:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1860:
# %bb.571:                              # %_ZNSolsEPFRSoS_E.exit1401
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1861:
	movl	$.L.str.253, %esi
	movl	$13, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1862:
# %bb.572:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1403
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	40(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1863:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1864:
# %bb.573:                              # %_ZNSolsEd.exit1405
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1865:
	movq	%rax, %r14
	movl	$.L.str.254, %esi
	movl	$15, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1866:
# %bb.574:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1407
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	48(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1867:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1868:
# %bb.575:                              # %_ZNSolsEd.exit1409
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1869:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1870:
# %bb.576:                              # %.noexc2033
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1871:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1872:
# %bb.577:                              # %.noexc2034
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1873:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1874:
# %bb.578:                              # %_ZNSolsEPFRSoS_E.exit1411
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1875:
	movl	$.L.str.255, %esi
	movl	$9, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1876:
# %bb.579:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1413
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	40(%rax), %rcx
	movq	48(%rax), %rax
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%rax,%r13,8), %xmm0
.Ltmp1877:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1878:
# %bb.580:                              # %_ZNSolsEd.exit1415
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1879:
	movq	%rax, %r12
	movl	$.L.str.256, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1880:
# %bb.581:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1417
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1881:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1882:
# %bb.582:                              # %.noexc2037
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1883:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1884:
# %bb.583:                              # %.noexc2038
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1885:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1886:
# %bb.584:                              # %_ZNSolsEPFRSoS_E.exit1419
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1887:
	movl	$.L.str.257, %esi
	movl	$12, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1888:
# %bb.585:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1421
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	56(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1889:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1890:
# %bb.586:                              # %_ZNSolsEd.exit1423
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1891:
	movq	%rax, %r14
	movl	$.L.str.258, %esi
	movl	$14, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1892:
# %bb.587:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1425
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	64(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1893:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1894:
# %bb.588:                              # %_ZNSolsEd.exit1427
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp1895:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1896:
# %bb.589:                              # %.noexc2041
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1897:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp1898:
# %bb.590:                              # %.noexc2042
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1899:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1900:
# %bb.591:                              # %_ZNSolsEPFRSoS_E.exit1429
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1901:
	movl	$.L.str.259, %esi
	movl	$12, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1902:
# %bb.592:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1431
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	56(%rax), %rcx
	movq	64(%rax), %rax
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rax,%r13,8), %xmm0
.Ltmp1903:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1904:
# %bb.593:                              # %_ZNSolsEd.exit1433
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1905:
	movq	%rax, %r12
	movl	$.L.str.256, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1906:
# %bb.594:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1435
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1907:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1908:
# %bb.595:                              # %.noexc2045
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1909:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1910:
# %bb.596:                              # %.noexc2046
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1911:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1912:
# %bb.597:                              # %_ZNSolsEPFRSoS_E.exit1437
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1913:
	movl	$.L.str.260, %esi
	movl	$12, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1914:
# %bb.598:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1439
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	72(%rax), %rcx
	movq	80(%rax), %rax
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
	subsd	(%rax,%r13,8), %xmm0
.Ltmp1915:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1916:
# %bb.599:                              # %_ZNSolsEd.exit1441
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1917:
	movq	%rax, %r12
	movl	$.L.str.256, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1918:
# %bb.600:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1443
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1919:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1920:
# %bb.601:                              # %.noexc2049
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1921:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1922:
# %bb.602:                              # %.noexc2050
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1923:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1924:
# %bb.603:                              # %_ZNSolsEPFRSoS_E.exit1445
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1925:
	movl	$.L.str.261, %esi
	movl	$33, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1926:
# %bb.604:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1447
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	88(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1927:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1928:
# %bb.605:                              # %_ZNSolsEd.exit1449
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1929:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1930:
# %bb.606:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1451
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1931:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1932:
# %bb.607:                              # %.noexc2053
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1933:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1934:
# %bb.608:                              # %.noexc2054
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1935:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1936:
# %bb.609:                              # %_ZNSolsEPFRSoS_E.exit1453
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.LBB14_617
# %bb.610:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp1937:
	movl	$.L.str.263, %esi
	movl	$30, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1938:
# %bb.611:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1455
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	104(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1939:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1940:
# %bb.612:                              # %_ZNSolsEd.exit1457
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1941:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1942:
# %bb.613:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1459
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1943:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1944:
# %bb.614:                              # %.noexc2057
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1945:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1946:
# %bb.615:                              # %.noexc2058
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1947:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1948:
# %bb.616:                              # %.noexc2058._ZNSolsEPFRSoS_E.exit1461_crit_edge
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
.LBB14_617:                             # %_ZNSolsEPFRSoS_E.exit1461
                                        #   in Loop: Header=BB14_551 Depth=1
	cmpl	$0, 428(%rax)
	jle	.LBB14_625
# %bb.618:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp1949:
	movl	$.L.str.264, %esi
	movl	$31, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1950:
# %bb.619:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1463
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	120(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1951:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1952:
# %bb.620:                              # %_ZNSolsEd.exit1465
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1953:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1954:
# %bb.621:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1467
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1955:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1956:
# %bb.622:                              # %.noexc2061
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1957:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1958:
# %bb.623:                              # %.noexc2062
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1959:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1960:
# %bb.624:                              # %.noexc2062._ZNSolsEPFRSoS_E.exit1469_crit_edge
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
.LBB14_625:                             # %_ZNSolsEPFRSoS_E.exit1469
                                        #   in Loop: Header=BB14_551 Depth=1
	cmpl	$2, 452(%rax)
	jl	.LBB14_632
# %bb.626:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp1961:
	movl	$.L.str.265, %esi
	movl	$30, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1962:
# %bb.627:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1471
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	264(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1963:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1964:
# %bb.628:                              # %_ZNSolsEd.exit1473
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1965:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1966:
# %bb.629:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1475
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1967:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1968:
# %bb.630:                              # %.noexc2065
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1969:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1970:
# %bb.631:                              # %.noexc2066
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1971:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1972:
.LBB14_632:                             # %_ZNSolsEPFRSoS_E.exit1477
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1973:
	movl	$.L.str.266, %esi
	movl	$25, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1974:
# %bb.633:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1479
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	232(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1975:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1976:
# %bb.634:                              # %_ZNSolsEd.exit1481
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1977:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1978:
# %bb.635:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1483
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1979:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1980:
# %bb.636:                              # %.noexc2069
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1981:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1982:
# %bb.637:                              # %.noexc2070
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1983:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1984:
# %bb.638:                              # %_ZNSolsEPFRSoS_E.exit1485
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1985:
	movl	$.L.str.267, %esi
	movl	$34, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1986:
# %bb.639:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1487
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	96(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1987:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp1988:
# %bb.640:                              # %_ZNSolsEd.exit1489
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1989:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1990:
# %bb.641:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1491
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp1991:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp1992:
# %bb.642:                              # %.noexc2073
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1993:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp1994:
# %bb.643:                              # %.noexc2074
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp1995:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp1996:
# %bb.644:                              # %_ZNSolsEPFRSoS_E.exit1493
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.LBB14_652
# %bb.645:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp1997:
	movl	$.L.str.268, %esi
	movl	$31, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1998:
# %bb.646:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1495
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	112(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp1999:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2000:
# %bb.647:                              # %_ZNSolsEd.exit1497
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2001:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2002:
# %bb.648:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1499
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2003:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2004:
# %bb.649:                              # %.noexc2077
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2005:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2006:
# %bb.650:                              # %.noexc2078
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2007:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2008:
# %bb.651:                              # %.noexc2078._ZNSolsEPFRSoS_E.exit1501_crit_edge
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
.LBB14_652:                             # %_ZNSolsEPFRSoS_E.exit1501
                                        #   in Loop: Header=BB14_551 Depth=1
	cmpl	$0, 428(%rax)
	jle	.LBB14_660
# %bb.653:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp2009:
	movl	$.L.str.269, %esi
	movl	$32, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2010:
# %bb.654:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1503
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	128(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2011:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2012:
# %bb.655:                              # %_ZNSolsEd.exit1505
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2013:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2014:
# %bb.656:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1507
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2015:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2016:
# %bb.657:                              # %.noexc2081
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2017:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2018:
# %bb.658:                              # %.noexc2082
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2019:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2020:
# %bb.659:                              # %.noexc2082._ZNSolsEPFRSoS_E.exit1509_crit_edge
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
.LBB14_660:                             # %_ZNSolsEPFRSoS_E.exit1509
                                        #   in Loop: Header=BB14_551 Depth=1
	cmpl	$2, 452(%rax)
	jl	.LBB14_667
# %bb.661:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp2021:
	movl	$.L.str.270, %esi
	movl	$31, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2022:
# %bb.662:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1511
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	272(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2023:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2024:
# %bb.663:                              # %_ZNSolsEd.exit1513
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2025:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2026:
# %bb.664:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1515
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2027:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2028:
# %bb.665:                              # %.noexc2085
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2029:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2030:
# %bb.666:                              # %.noexc2086
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2031:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2032:
.LBB14_667:                             # %_ZNSolsEPFRSoS_E.exit1517
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2033:
	movl	$.L.str.271, %esi
	movl	$26, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2034:
# %bb.668:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1519
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	240(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2035:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2036:
# %bb.669:                              # %_ZNSolsEd.exit1521
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2037:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2038:
# %bb.670:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1523
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2039:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2040:
# %bb.671:                              # %.noexc2089
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2041:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2042:
# %bb.672:                              # %.noexc2090
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2043:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2044:
# %bb.673:                              # %_ZNSolsEPFRSoS_E.exit1525
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2045:
	movl	$.L.str.272, %esi
	movl	$14, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2046:
# %bb.674:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1527
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	248(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2047:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2048:
# %bb.675:                              # %_ZNSolsEd.exit1529
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2049:
	movq	%rax, %r12
	movl	$.L.str.262, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2050:
# %bb.676:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1531
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2051:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2052:
# %bb.677:                              # %.noexc2093
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2053:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2054:
# %bb.678:                              # %.noexc2094
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2055:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2056:
# %bb.679:                              # %_ZNSolsEPFRSoS_E.exit1533
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2057:
	movl	$.L.str.273, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2058:
# %bb.680:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1535
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	152(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2059:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2060:
# %bb.681:                              # %_ZNSolsEd.exit1537
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2061:
	movq	%rax, %r12
	movl	$.L.str.274, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2062:
# %bb.682:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1539
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2063:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2064:
# %bb.683:                              # %.noexc2097
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2065:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2066:
# %bb.684:                              # %.noexc2098
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2067:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2068:
# %bb.685:                              # %_ZNSolsEPFRSoS_E.exit1541
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2069:
	movl	$.L.str.275, %esi
	movl	$30, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2070:
# %bb.686:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1543
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	160(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2071:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2072:
# %bb.687:                              # %_ZNSolsEd.exit1545
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2073:
	movq	%rax, %r12
	movl	$.L.str.276, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2074:
# %bb.688:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1547
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2075:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2076:
# %bb.689:                              # %.noexc2101
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2077:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2078:
# %bb.690:                              # %.noexc2102
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2079:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2080:
# %bb.691:                              # %_ZNSolsEPFRSoS_E.exit1549
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 432(%rax)
	jle	.LBB14_699
# %bb.692:                              #   in Loop: Header=BB14_551 Depth=1
.Ltmp2081:
	movl	$.L.str.277, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2082:
# %bb.693:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1551
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	168(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2083:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2084:
# %bb.694:                              # %_ZNSolsEd.exit1553
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2085:
	movq	%rax, %r12
	movl	$.L.str.276, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2086:
# %bb.695:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1555
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2087:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2088:
# %bb.696:                              # %.noexc2105
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2089:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2090:
# %bb.697:                              # %.noexc2106
                                        #   in Loop: Header=BB14_551 Depth=1
.Ltmp2091:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2092:
# %bb.698:                              # %.noexc2106._ZNSolsEPFRSoS_E.exit1557_crit_edge
                                        #   in Loop: Header=BB14_551 Depth=1
	movq	gas(%rip), %rax
.LBB14_699:                             # %_ZNSolsEPFRSoS_E.exit1557
                                        #   in Loop: Header=BB14_551 Depth=1
	cmpl	$2, 424(%rax)
	jl	.LBB14_709
# %bb.700:                              # %.lr.ph2613.preheader
                                        #   in Loop: Header=BB14_551 Depth=1
	xorl	%ebx, %ebx
.LBB14_701:                             # %.lr.ph2613
                                        #   Parent Loop BB14_551 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
.Ltmp2094:
	movl	$.L.str.220, %esi
	movl	$8, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2095:
# %bb.702:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1559
                                        #   in Loop: Header=BB14_701 Depth=2
	leal	1(%rbx), %esi
.Ltmp2096:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp2097:
# %bb.703:                              #   in Loop: Header=BB14_701 Depth=2
.Ltmp2098:
	movq	%rax, %r14
	movl	$.L.str.278, %esi
	movl	$12, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2099:
# %bb.704:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1561
                                        #   in Loop: Header=BB14_701 Depth=2
	movq	output(%rip), %rax
	movq	144(%rax), %rax
	movq	288(%rax,%rbx,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2100:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2101:
# %bb.705:                              # %_ZNSolsEd.exit1563
                                        #   in Loop: Header=BB14_701 Depth=2
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2102:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2103:
# %bb.706:                              # %.noexc2109
                                        #   in Loop: Header=BB14_701 Depth=2
.Ltmp2104:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2105:
# %bb.707:                              # %.noexc2110
                                        #   in Loop: Header=BB14_701 Depth=2
.Ltmp2106:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2107:
# %bb.708:                              # %_ZNSolsEPFRSoS_E.exit1565
                                        #   in Loop: Header=BB14_701 Depth=2
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	incq	%rbx
	cmpq	%rax, %rbx
	jl	.LBB14_701
.LBB14_709:                             # %.loopexit2302
                                        #   in Loop: Header=BB14_551 Depth=1
	incq	%r13
	cmpq	$3, %r13
	jne	.LBB14_551
# %bb.710:
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2109:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2110:
# %bb.711:                              # %.noexc2113
.Ltmp2111:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2112:
# %bb.712:                              # %.noexc2114
.Ltmp2113:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2114:
# %bb.713:                              # %_ZNSolsEPFRSoS_E.exit1567.preheader
	movq	gas(%rip), %rax
	movl	424(%rax), %ebx
	testl	%ebx, %ebx
	movq	312(%rsp), %r14                 # 8-byte Reload
	js	.LBB14_715
# %bb.714:                              # %_ZNSolsEPFRSoS_E.exit1567.preheader2698
	leaq	8(,%rbx,8), %rdx
	movq	%r14, %rdi
	xorl	%esi, %esi
	callq	memset@PLT
.LBB14_715:                             # %.preheader2300
	movq	geom(%rip), %rax
	movl	(%rax), %eax
	testl	%eax, %eax
	jle	.LBB14_721
# %bb.716:                              # %.preheader2299.lr.ph
	movq	output(%rip), %rcx
	leal	1(%rbx), %edx
	incq	%rax
	movl	$1, %esi
.LBB14_717:                             # %.preheader2299
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_719 Depth 2
	testl	%ebx, %ebx
	jle	.LBB14_720
# %bb.718:                              # %.lr.ph2621
                                        #   in Loop: Header=BB14_717 Depth=1
	movq	176(%rcx), %rdi
	movq	(%rdi), %rdi
	movq	(%rdi,%rsi,8), %rdi
	movl	$1, %r8d
.LBB14_719:                             #   Parent Loop BB14_717 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r14,%r8,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%rdi,%r8,8), %xmm0
	movsd	%xmm0, (%r14,%r8,8)
	incq	%r8
	cmpq	%r8, %rdx
	jne	.LBB14_719
.LBB14_720:                             # %._crit_edge2622
                                        #   in Loop: Header=BB14_717 Depth=1
	incq	%rsi
	cmpq	%rax, %rsi
	jne	.LBB14_717
.LBB14_721:                             # %._crit_edge2625
	cmpl	$2, %ebx
	jl	.LBB14_792
# %bb.722:
.Ltmp2115:
	movl	$.L.str.279, %esi
	movl	$20, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2116:
# %bb.723:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1569
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2117:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2118:
# %bb.724:                              # %.noexc2117
.Ltmp2119:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2120:
# %bb.725:                              # %.noexc2118
.Ltmp2121:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2122:
# %bb.726:                              # %_ZNSolsEPFRSoS_E.exit1571
.Ltmp2123:
	movl	$.L.str.280, %esi
	movl	$69, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2124:
# %bb.727:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1573
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2125:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2126:
# %bb.728:                              # %.noexc2121
.Ltmp2127:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2128:
# %bb.729:                              # %.noexc2122
.Ltmp2129:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2130:
# %bb.730:                              # %_ZNSolsEPFRSoS_E.exit1575.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_746
# %bb.731:                              # %.lr.ph2628.preheader
	movl	$1, %r12d
.LBB14_732:                             # %.lr.ph2628
                                        # =>This Inner Loop Header: Depth=1
.Ltmp2131:
	movl	$.L.str.281, %esi
	movl	$34, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2132:
# %bb.733:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1577
                                        #   in Loop: Header=BB14_732 Depth=1
.Ltmp2133:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp2134:
# %bb.734:                              #   in Loop: Header=BB14_732 Depth=1
.Ltmp2135:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2136:
# %bb.735:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1579
                                        #   in Loop: Header=BB14_732 Depth=1
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2137:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2138:
# %bb.736:                              #   in Loop: Header=BB14_732 Depth=1
.Ltmp2139:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2140:
# %bb.737:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1581
                                        #   in Loop: Header=BB14_732 Depth=1
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	16(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2141:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2142:
# %bb.738:                              #   in Loop: Header=BB14_732 Depth=1
.Ltmp2143:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2144:
# %bb.739:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1583
                                        #   in Loop: Header=BB14_732 Depth=1
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	24(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2145:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2146:
# %bb.740:                              #   in Loop: Header=BB14_732 Depth=1
.Ltmp2147:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2148:
# %bb.741:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1585
                                        #   in Loop: Header=BB14_732 Depth=1
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	32(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2149:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2150:
# %bb.742:                              #   in Loop: Header=BB14_732 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2151:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2152:
# %bb.743:                              # %.noexc2125
                                        #   in Loop: Header=BB14_732 Depth=1
.Ltmp2153:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2154:
# %bb.744:                              # %.noexc2126
                                        #   in Loop: Header=BB14_732 Depth=1
.Ltmp2155:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2156:
# %bb.745:                              # %_ZNSolsEPFRSoS_E.exit1587
                                        #   in Loop: Header=BB14_732 Depth=1
	leaq	1(%r12), %rax
	movq	gas(%rip), %rcx
	movslq	424(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_732
.LBB14_746:                             # %_ZNSolsEPFRSoS_E.exit1575._crit_edge
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2158:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2159:
# %bb.747:                              # %.noexc2129
.Ltmp2160:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2161:
# %bb.748:                              # %.noexc2130
.Ltmp2162:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2163:
# %bb.749:                              # %_ZNSolsEPFRSoS_E.exit1589
.Ltmp2164:
	movl	$.L.str.282, %esi
	movl	$21, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2165:
# %bb.750:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1591
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2166:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2167:
# %bb.751:                              # %.noexc2133
.Ltmp2168:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2169:
# %bb.752:                              # %.noexc2134
.Ltmp2170:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2171:
# %bb.753:                              # %_ZNSolsEPFRSoS_E.exit1593
.Ltmp2172:
	movl	$.L.str.280, %esi
	movl	$69, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2173:
# %bb.754:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1595
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2174:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2175:
# %bb.755:                              # %.noexc2137
.Ltmp2176:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2177:
# %bb.756:                              # %.noexc2138
.Ltmp2178:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2179:
# %bb.757:                              # %_ZNSolsEPFRSoS_E.exit1597.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_773
# %bb.758:                              # %.lr.ph2631.preheader
	movl	$1, %r12d
.LBB14_759:                             # %.lr.ph2631
                                        # =>This Inner Loop Header: Depth=1
.Ltmp2180:
	movl	$.L.str.281, %esi
	movl	$34, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2181:
# %bb.760:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1599
                                        #   in Loop: Header=BB14_759 Depth=1
.Ltmp2182:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp2183:
# %bb.761:                              #   in Loop: Header=BB14_759 Depth=1
.Ltmp2184:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2185:
# %bb.762:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1601
                                        #   in Loop: Header=BB14_759 Depth=1
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	8(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2186:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2187:
# %bb.763:                              #   in Loop: Header=BB14_759 Depth=1
.Ltmp2188:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2189:
# %bb.764:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1603
                                        #   in Loop: Header=BB14_759 Depth=1
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	16(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2190:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2191:
# %bb.765:                              #   in Loop: Header=BB14_759 Depth=1
.Ltmp2192:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2193:
# %bb.766:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1605
                                        #   in Loop: Header=BB14_759 Depth=1
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	24(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2194:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2195:
# %bb.767:                              #   in Loop: Header=BB14_759 Depth=1
.Ltmp2196:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2197:
# %bb.768:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1607
                                        #   in Loop: Header=BB14_759 Depth=1
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	32(%rax), %rax
	movl	(%rax,%r12,4), %esi
.Ltmp2198:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp2199:
# %bb.769:                              #   in Loop: Header=BB14_759 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2200:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2201:
# %bb.770:                              # %.noexc2141
                                        #   in Loop: Header=BB14_759 Depth=1
.Ltmp2202:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2203:
# %bb.771:                              # %.noexc2142
                                        #   in Loop: Header=BB14_759 Depth=1
.Ltmp2204:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2205:
# %bb.772:                              # %_ZNSolsEPFRSoS_E.exit1609
                                        #   in Loop: Header=BB14_759 Depth=1
	leaq	1(%r12), %rax
	movq	gas(%rip), %rcx
	movslq	424(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_759
.LBB14_773:                             # %_ZNSolsEPFRSoS_E.exit1597._crit_edge
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2207:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2208:
# %bb.774:                              # %.noexc2145
.Ltmp2209:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2210:
# %bb.775:                              # %.noexc2146
.Ltmp2211:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2212:
# %bb.776:                              # %_ZNSolsEPFRSoS_E.exit1611
.Ltmp2213:
	movl	$.L.str.283, %esi
	movl	$6, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2214:
# %bb.777:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1613
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2215:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2216:
# %bb.778:                              # %.noexc2149
.Ltmp2217:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2218:
# %bb.779:                              # %.noexc2150
.Ltmp2219:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2220:
# %bb.780:                              # %_ZNSolsEPFRSoS_E.exit1615.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_792
# %bb.781:                              # %.lr.ph2634.preheader
	xorl	%ebx, %ebx
.LBB14_782:                             # %.lr.ph2634
                                        # =>This Inner Loop Header: Depth=1
.Ltmp2221:
	movl	$.L.str.284, %esi
	movl	$32, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2222:
# %bb.783:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1617
                                        #   in Loop: Header=BB14_782 Depth=1
	leal	1(%rbx), %esi
.Ltmp2223:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp2224:
# %bb.784:                              #   in Loop: Header=BB14_782 Depth=1
.Ltmp2225:
	movq	%rax, %r12
	movl	$.L.str.285, %esi
	movl	$7, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2226:
# %bb.785:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1619
                                        #   in Loop: Header=BB14_782 Depth=1
	movq	gas(%rip), %rax
	movq	536(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movl	4(%rdx,%rbx,4), %esi
	addl	4(%rcx,%rbx,4), %esi
	movq	24(%rax), %rcx
	addl	4(%rcx,%rbx,4), %esi
	movq	32(%rax), %rax
	addl	4(%rax,%rbx,4), %esi
.Ltmp2227:
	movq	%r12, %rdi
	callq	_ZNSolsEi
.Ltmp2228:
# %bb.786:                              #   in Loop: Header=BB14_782 Depth=1
.Ltmp2229:
	movq	%rax, %r12
	movl	$.L.str.286, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2230:
# %bb.787:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1621
                                        #   in Loop: Header=BB14_782 Depth=1
	movq	gas(%rip), %rax
	movq	544(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rdx
	movl	4(%rdx,%rbx,4), %esi
	addl	4(%rcx,%rbx,4), %esi
	movq	24(%rax), %rcx
	addl	4(%rcx,%rbx,4), %esi
	movq	32(%rax), %rax
	addl	4(%rax,%rbx,4), %esi
.Ltmp2231:
	movq	%r12, %rdi
	callq	_ZNSolsEi
.Ltmp2232:
# %bb.788:                              #   in Loop: Header=BB14_782 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2233:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2234:
# %bb.789:                              # %.noexc2153
                                        #   in Loop: Header=BB14_782 Depth=1
.Ltmp2235:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2236:
# %bb.790:                              # %.noexc2154
                                        #   in Loop: Header=BB14_782 Depth=1
.Ltmp2237:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2238:
# %bb.791:                              # %_ZNSolsEPFRSoS_E.exit1623
                                        #   in Loop: Header=BB14_782 Depth=1
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	incq	%rbx
	cmpq	%rax, %rbx
	jl	.LBB14_782
.LBB14_792:                             # %.loopexit2291
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2240:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2241:
# %bb.793:                              # %.noexc2157
.Ltmp2242:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2243:
# %bb.794:                              # %.noexc2158
.Ltmp2244:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2245:
# %bb.795:                              # %_ZNSolsEPFRSoS_E.exit1625
.Ltmp2246:
	movl	$.L.str.287, %esi
	movl	$21, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2247:
# %bb.796:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1627
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2248:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2249:
# %bb.797:                              # %.noexc2161
.Ltmp2250:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2251:
# %bb.798:                              # %.noexc2162
.Ltmp2252:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2253:
# %bb.799:                              # %_ZNSolsEPFRSoS_E.exit1629
	movq	output(%rip), %rax
	movl	(%rax), %esi
.Ltmp2254:
	movq	%rbp, %rdi
	callq	_ZNSolsEi
.Ltmp2255:
# %bb.800:
.Ltmp2256:
	movq	%rax, %r12
	movl	$.L.str.288, %esi
	movl	$8, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2257:
# %bb.801:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1631
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2258:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2259:
# %bb.802:                              # %.noexc2165
.Ltmp2260:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2261:
# %bb.803:                              # %.noexc2166
.Ltmp2262:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2263:
# %bb.804:                              # %_ZNSolsEPFRSoS_E.exit1633
.Ltmp2264:
	movl	$.L.str.289, %esi
	movl	$11, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2265:
# %bb.805:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1635
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2266:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2267:
# %bb.806:                              # %.noexc2169
.Ltmp2268:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2269:
# %bb.807:                              # %.noexc2170
.Ltmp2270:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2271:
# %bb.808:                              # %_ZNSolsEPFRSoS_E.exit1637
.Ltmp2272:
	movl	$.L.str.290, %esi
	movl	$301, %edx                      # imm = 0x12D
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2273:
# %bb.809:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1639
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2274:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2275:
# %bb.810:                              # %.noexc2173
.Ltmp2276:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2277:
# %bb.811:                              # %.noexc2174
.Ltmp2278:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2279:
# %bb.812:                              # %_ZNSolsEPFRSoS_E.exit1641.preheader
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	jle	.LBB14_835
# %bb.813:                              # %.lr.ph2643.preheader
	movl	$1, %r12d
.LBB14_814:                             # %.lr.ph2643
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_817 Depth 2
                                        #     Child Loop BB14_823 Depth 2
                                        #     Child Loop BB14_828 Depth 2
.Ltmp2280:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp2281:
# %bb.815:                              #   in Loop: Header=BB14_814 Depth=1
.Ltmp2282:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2283:
# %bb.816:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1643.preheader.preheader
                                        #   in Loop: Header=BB14_814 Depth=1
	movl	$1, %ebx
.LBB14_817:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1643.preheader
                                        #   Parent Loop BB14_814 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2284:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2285:
# %bb.818:                              # %_ZNSolsEd.exit1645
                                        #   in Loop: Header=BB14_817 Depth=2
.Ltmp2286:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2287:
# %bb.819:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1647
                                        #   in Loop: Header=BB14_817 Depth=2
	incq	%rbx
	cmpq	$11, %rbx
	jne	.LBB14_817
# %bb.820:                              #   in Loop: Header=BB14_814 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	176(%rax), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2289:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2290:
# %bb.821:                              # %_ZNSolsEd.exit1649
                                        #   in Loop: Header=BB14_814 Depth=1
.Ltmp2291:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2292:
# %bb.822:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1651.preheader.preheader
                                        #   in Loop: Header=BB14_814 Depth=1
	xorl	%ebx, %ebx
.LBB14_823:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1651.preheader
                                        #   Parent Loop BB14_814 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax,%rbx,8), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2293:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2294:
# %bb.824:                              # %_ZNSolsEd.exit1653
                                        #   in Loop: Header=BB14_823 Depth=2
.Ltmp2295:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2296:
# %bb.825:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1655
                                        #   in Loop: Header=BB14_823 Depth=2
	incq	%rbx
	cmpq	$11, %rbx
	jne	.LBB14_823
# %bb.826:                              # %.preheader2280
                                        #   in Loop: Header=BB14_814 Depth=1
	movq	gas(%rip), %rax
	cmpl	$22, 424(%rax)
	jl	.LBB14_831
# %bb.827:                              # %.lr.ph2639.preheader
                                        #   in Loop: Header=BB14_814 Depth=1
	movl	$21, %ebx
.LBB14_828:                             # %.lr.ph2639
                                        #   Parent Loop BB14_814 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	output(%rip), %rax
	movq	176(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2298:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2299:
# %bb.829:                              # %_ZNSolsEd.exit1657
                                        #   in Loop: Header=BB14_828 Depth=2
.Ltmp2300:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2301:
# %bb.830:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1659
                                        #   in Loop: Header=BB14_828 Depth=2
	movq	gas(%rip), %rax
	incl	%ebx
	cmpl	424(%rax), %ebx
	jl	.LBB14_828
.LBB14_831:                             # %._crit_edge2640
                                        #   in Loop: Header=BB14_814 Depth=1
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2303:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2304:
# %bb.832:                              # %.noexc2177
                                        #   in Loop: Header=BB14_814 Depth=1
.Ltmp2305:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2306:
# %bb.833:                              # %.noexc2178
                                        #   in Loop: Header=BB14_814 Depth=1
.Ltmp2307:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2308:
# %bb.834:                              # %_ZNSolsEPFRSoS_E.exit1661
                                        #   in Loop: Header=BB14_814 Depth=1
	leaq	1(%r12), %rax
	movq	geom(%rip), %rcx
	movslq	(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_814
.LBB14_835:                             # %_ZNSolsEPFRSoS_E.exit1641._crit_edge
.Ltmp2310:
	movl	$.L.str.291, %esi
	movl	$28, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2311:
# %bb.836:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1663
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2312:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2313:
# %bb.837:                              # %.noexc2181
.Ltmp2314:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2315:
# %bb.838:                              # %.noexc2182
.Ltmp2316:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2317:
# %bb.839:                              # %_ZNSolsEPFRSoS_E.exit1665.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	jle	.LBB14_865
# %bb.840:                              # %.lr.ph2650.preheader
	movl	$1, %r12d
.LBB14_841:                             # %.lr.ph2650
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB14_852 Depth 2
                                        #       Child Loop BB14_857 Depth 3
.Ltmp2318:
	movl	$.L.str.220, %esi
	movl	$8, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2319:
# %bb.842:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1667
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2320:
	movq	%rbp, %rdi
	movl	%r12d, %esi
	callq	_ZNSolsEi
.Ltmp2321:
# %bb.843:                              #   in Loop: Header=BB14_841 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2322:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2323:
# %bb.844:                              # %.noexc2185
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2324:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2325:
# %bb.845:                              # %.noexc2186
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2326:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2327:
# %bb.846:                              # %_ZNSolsEPFRSoS_E.exit1669
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2328:
	movl	$.L.str.292, %esi
	movl	$187, %edx
	movq	%rbp, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2329:
# %bb.847:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1671
                                        #   in Loop: Header=BB14_841 Depth=1
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2330:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2331:
# %bb.848:                              # %.noexc2189
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2332:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2333:
# %bb.849:                              # %.noexc2190
                                        #   in Loop: Header=BB14_841 Depth=1
.Ltmp2334:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2335:
# %bb.850:                              # %_ZNSolsEPFRSoS_E.exit1673.preheader
                                        #   in Loop: Header=BB14_841 Depth=1
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	jle	.LBB14_864
# %bb.851:                              # %.lr.ph2647.preheader
                                        #   in Loop: Header=BB14_841 Depth=1
	movl	$1, %r13d
.LBB14_852:                             # %.lr.ph2647
                                        #   Parent Loop BB14_841 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB14_857 Depth 3
.Ltmp2337:
	movq	%rbp, %rdi
	movl	%r13d, %esi
	callq	_ZNSolsEi
.Ltmp2338:
# %bb.853:                              #   in Loop: Header=BB14_852 Depth=2
.Ltmp2339:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2340:
# %bb.854:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1675
                                        #   in Loop: Header=BB14_852 Depth=2
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2341:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2342:
# %bb.855:                              # %_ZNSolsEd.exit1677
                                        #   in Loop: Header=BB14_852 Depth=2
.Ltmp2343:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2344:
# %bb.856:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1679.preheader.preheader
                                        #   in Loop: Header=BB14_852 Depth=2
	xorl	%ebx, %ebx
.LBB14_857:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1679.preheader
                                        #   Parent Loop BB14_841 Depth=1
                                        #     Parent Loop BB14_852 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	output(%rip), %rax
	movq	176(%rax), %rax
	movq	(%rax,%rbx,8), %rax
	movq	(%rax,%r13,8), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2345:
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2346:
# %bb.858:                              # %_ZNSolsEd.exit1681
                                        #   in Loop: Header=BB14_857 Depth=3
.Ltmp2347:
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2348:
# %bb.859:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1683
                                        #   in Loop: Header=BB14_857 Depth=3
	incq	%rbx
	cmpq	$13, %rbx
	jne	.LBB14_857
# %bb.860:                              #   in Loop: Header=BB14_852 Depth=2
	movq	712(%rsp), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp2350:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2351:
# %bb.861:                              # %.noexc2193
                                        #   in Loop: Header=BB14_852 Depth=2
.Ltmp2352:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp2353:
# %bb.862:                              # %.noexc2194
                                        #   in Loop: Header=BB14_852 Depth=2
.Ltmp2354:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2355:
# %bb.863:                              # %_ZNSolsEPFRSoS_E.exit1685
                                        #   in Loop: Header=BB14_852 Depth=2
	leaq	1(%r13), %rax
	movq	geom(%rip), %rcx
	movslq	(%rcx), %rcx
	cmpq	%rcx, %r13
	movq	%rax, %r13
	jl	.LBB14_852
.LBB14_864:                             # %_ZNSolsEPFRSoS_E.exit1665
                                        #   in Loop: Header=BB14_841 Depth=1
	leaq	1(%r12), %rax
	movq	gas(%rip), %rcx
	movslq	424(%rcx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB14_841
.LBB14_865:                             # %_ZNSolsEPFRSoS_E.exit1665._crit_edge
.Ltmp2357:
	leaq	696(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2358:
# %bb.866:                              # %_ZNSolsEPFRSoS_E.exit1665._crit_edge._crit_edge
	movq	calc(%rip), %rcx
.LBB14_867:
	cmpl	$0, 56(%rcx)
	jne	.LBB14_882
# %bb.868:
	cmpl	$1, 20(%rcx)
	jne	.LBB14_882
# %bb.869:
	callq	_Z18INITIALISE_SAMPLESv
.Ltmp2359:
	leaq	1224(%rsp), %rdi
	movl	$.L.str.293, %esi
	movl	$17, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2360:
# %bb.870:                              # %.invoke3243
	leaq	1352(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.294, %ecx
	movl	$.L.str.295, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$20, %edx
	subq	%rax, %rdx
.Ltmp2361:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2362:
# %bb.871:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1687.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2363:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2364:
# %bb.872:                              # %.noexc2197.invoke
.Ltmp2365:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2366:
# %bb.873:                              # %.noexc2198.invoke
.Ltmp2367:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2368:
# %bb.874:
	movq	calc(%rip), %rax
	movsd	224(%rax), %xmm0                # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	movq	molecs(%rip), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sdl	80(%rax), %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, 48(%rsp)
	leaq	1240(%rsp), %rdi
	movq	(%rdi), %rax
	movq	-24(%rax), %rax
	movq	$15, 1256(%rsp,%rax)
.Ltmp2369:
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2370:
# %bb.875:
	movq	(%rax), %rcx
	movq	-24(%rcx), %rcx
	movq	$15, 16(%rax,%rcx)
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2371:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2372:
# %bb.876:
	movq	(%rax), %rcx
	movq	-24(%rcx), %rcx
	movq	$15, 16(%rax,%rcx)
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	72(%rcx), %rcx
	movsd	8(%rcx), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2373:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2374:
# %bb.877:
	movq	(%rax), %rcx
	movq	-24(%rcx), %rcx
	movq	$15, 16(%rax,%rcx)
	movq	output(%rip), %rcx
	movq	136(%rcx), %rcx
	movq	64(%rcx), %rdx
	movq	72(%rcx), %rcx
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	subsd	8(%rcx), %xmm0
.Ltmp2375:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2376:
# %bb.878:                              # %_ZNSolsEd.exit1701
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2377:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2378:
# %bb.879:                              # %.noexc2205
.Ltmp2379:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2380:
# %bb.880:                              # %.noexc2206
.Ltmp2381:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2382:
# %bb.881:                              # %_ZNSolsEPFRSoS_E.exit1703
.Ltmp2383:
	leaq	1224(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2384:
.LBB14_882:
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
	cmpl	$8, %eax
	ja	.LBB14_943
# %bb.883:
	movl	$336, %ecx                      # imm = 0x150
	btl	%eax, %ecx
	jae	.LBB14_943
# %bb.884:
.Ltmp2385:
	leaq	1224(%rsp), %rdi
	movl	$.L.str.296, %esi
	movl	$17, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2386:
# %bb.885:                              # %.invoke3244
	leaq	1352(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.297, %ecx
	movl	$.L.str.298, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$26, %edx
	subq	%rax, %rdx
.Ltmp2387:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2388:
# %bb.886:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1705.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2389:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2390:
# %bb.887:                              # %.noexc2209.invoke
.Ltmp2391:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2392:
# %bb.888:                              # %.noexc2210.invoke
.Ltmp2393:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2394:
# %bb.889:                              # %_ZNSolsEPFRSoS_E.exit1707
	movq	molecs(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	80(%rax), %xmm0
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	mulsd	.LCPI14_25(%rip), %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
	cmpl	$4, %eax
	jne	.LBB14_901
# %bb.890:
	leaq	1240(%rsp), %rdi
.Ltmp2395:
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2396:
# %bb.891:                              # %_ZNSolsEd.exit1713
.Ltmp2397:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2398:
# %bb.892:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1715
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	4(%rax), %xmm0
	divsd	.LCPI14_25(%rip), %xmm0
.Ltmp2399:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2400:
# %bb.893:                              # %_ZNSolsEd.exit1717
.Ltmp2401:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2402:
# %bb.894:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1719
	movsd	48(%rsp), %xmm0                 # xmm0 = mem[0],zero
.Ltmp2403:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2404:
# %bb.895:                              # %_ZNSolsEd.exit1721
.Ltmp2405:
	movq	%rax, %r12
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2406:
# %bb.896:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1723
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2407:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2408:
# %bb.897:                              # %_ZNSolsEd.exit1725
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2409:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2410:
# %bb.898:                              # %.noexc2217
.Ltmp2411:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2412:
# %bb.899:                              # %.noexc2218
.Ltmp2413:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2414:
# %bb.900:                              # %.noexc2218._ZNSolsEPFRSoS_E.exit1727_crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB14_901:                             # %_ZNSolsEPFRSoS_E.exit1727
	cmpl	$8, %eax
	jne	.LBB14_925
# %bb.902:
	leaq	1240(%rsp), %rdi
.Ltmp2415:
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2416:
# %bb.903:                              # %_ZNSolsEd.exit1729
.Ltmp2417:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2418:
# %bb.904:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1731
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	4(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2419:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2420:
# %bb.905:                              # %_ZNSolsEd.exit1733
.Ltmp2421:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2422:
# %bb.906:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1735
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	8(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2423:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2424:
# %bb.907:                              # %_ZNSolsEd.exit1737
.Ltmp2425:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2426:
# %bb.908:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1739
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	12(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2427:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2428:
# %bb.909:                              # %_ZNSolsEd.exit1741
.Ltmp2429:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2430:
# %bb.910:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1743
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	16(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2431:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2432:
# %bb.911:                              # %_ZNSolsEd.exit1745
.Ltmp2433:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2434:
# %bb.912:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1747
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	20(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2435:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2436:
# %bb.913:                              # %_ZNSolsEd.exit1749
.Ltmp2437:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2438:
# %bb.914:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1751
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	24(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2439:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2440:
# %bb.915:                              # %_ZNSolsEd.exit1753
.Ltmp2441:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2442:
# %bb.916:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1755
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	28(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2443:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2444:
# %bb.917:                              # %_ZNSolsEd.exit1757
.Ltmp2445:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2446:
# %bb.918:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1759
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	32(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2447:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2448:
# %bb.919:                              # %_ZNSolsEd.exit1761
.Ltmp2449:
	movq	%rax, %r12
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2450:
# %bb.920:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1763
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2451:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2452:
# %bb.921:                              # %_ZNSolsEd.exit1765
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2453:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2454:
# %bb.922:                              # %.noexc2221
.Ltmp2455:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2456:
# %bb.923:                              # %.noexc2222
.Ltmp2457:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2458:
# %bb.924:                              # %.noexc2222._ZNSolsEPFRSoS_E.exit1767_crit_edge
	movq	gas(%rip), %rax
	movl	440(%rax), %eax
.LBB14_925:                             # %_ZNSolsEPFRSoS_E.exit1767
	cmpl	$6, %eax
	jne	.LBB14_942
# %bb.926:
	leaq	1240(%rsp), %rdi
.Ltmp2459:
	movsd	24(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2460:
# %bb.927:                              # %_ZNSolsEd.exit1769
.Ltmp2461:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2462:
# %bb.928:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1771
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	4(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2463:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2464:
# %bb.929:                              # %_ZNSolsEd.exit1773
.Ltmp2465:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2466:
# %bb.930:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1775
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	8(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2467:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2468:
# %bb.931:                              # %_ZNSolsEd.exit1777
.Ltmp2469:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2470:
# %bb.932:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1779
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	12(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2471:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2472:
# %bb.933:                              # %_ZNSolsEd.exit1781
.Ltmp2473:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2474:
# %bb.934:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1783
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	16(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2475:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2476:
# %bb.935:                              # %_ZNSolsEd.exit1785
.Ltmp2477:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2478:
# %bb.936:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1787
	movq	40(%rsp), %rax                  # 8-byte Reload
	xorps	%xmm0, %xmm0
	cvtsi2sdl	20(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2479:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2480:
# %bb.937:                              # %_ZNSolsEd.exit1789
.Ltmp2481:
	movq	%rax, %r12
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2482:
# %bb.938:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1791
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax), %xmm0                  # xmm0 = mem[0],zero
.Ltmp2483:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2484:
# %bb.939:                              # %_ZNSolsEd.exit1793
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2485:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2486:
# %bb.940:                              # %.noexc2225
.Ltmp2487:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2488:
# %bb.941:                              # %.noexc2226
.Ltmp2489:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2490:
.LBB14_942:                             # %_ZNSolsEPFRSoS_E.exit1795
.Ltmp2491:
	leaq	1224(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2492:
.LBB14_943:
	movq	calc(%rip), %rax
	movsd	80(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	104(%rax), %xmm1                # xmm1 = mem[0],zero
	mulsd	.LCPI14_0(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB14_977
# %bb.944:
.Ltmp2493:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.299, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2494:
# %bb.945:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1797
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2495:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2496:
# %bb.946:                              # %.noexc2229
.Ltmp2497:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2498:
# %bb.947:                              # %.noexc2230
.Ltmp2499:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2500:
# %bb.948:                              # %_ZNSolsEPFRSoS_E.exit1799
	movq	calc(%rip), %rdx
	movsd	104(%rdx), %xmm1                # xmm1 = mem[0],zero
	cmpl	$2, 44(%rdx)
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	jge	.LBB14_949
# %bb.952:
	cmpl	$0, 56(%rdx)
	movapd	%xmm1, %xmm0
	jle	.LBB14_954
# %bb.953:
	movapd	%xmm1, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 104(%rdx)
.LBB14_954:
	movq	geom(%rip), %rcx
	movl	(%rcx), %eax
	testl	%eax, %eax
	jle	.LBB14_955
# %bb.956:                              # %.lr.ph2659
	movq	136(%rcx), %rdi
	movq	16(%rdi), %rsi
	movq	24(%rdi), %rdi
	movq	output(%rip), %r8
	movq	136(%r8), %r8
	movq	104(%r8), %r9
	movq	gas(%rip), %r10
	leaq	1(%rax), %r11
	movl	$1, %ebx
	movsd	.LCPI14_26(%rip), %xmm1         # xmm1 = mem[0],zero
	movapd	.LCPI14_11(%rip), %xmm2         # xmm2 = [NaN,NaN]
.LBB14_957:                             # =>This Inner Loop Header: Depth=1
	movsd	%xmm0, (%r15,%rbx,8)
	movsd	(%rdi,%rbx,8), %xmm3            # xmm3 = mem[0],zero
	subsd	(%rsi,%rbx,8), %xmm3
	movsd	(%r9,%rbx,8), %xmm4             # xmm4 = mem[0],zero
	ucomisd	%xmm1, %xmm4
	jbe	.LBB14_959
# %bb.958:                              #   in Loop: Header=BB14_957 Depth=1
	movq	112(%r8), %r14
	movsd	(%r14,%rbx,8), %xmm4            # xmm4 = mem[0],zero
	mulsd	248(%rdx), %xmm4
	movsd	%xmm4, (%r15,%rbx,8)
	movq	40(%r8), %r14
	movsd	(%r14,%rbx,8), %xmm5            # xmm5 = mem[0],zero
	andpd	%xmm2, %xmm5
	divsd	%xmm5, %xmm3
	mulsd	256(%rdx), %xmm3
	ucomisd	%xmm3, %xmm4
	ja	.LBB14_960
	jmp	.LBB14_961
.LBB14_959:                             #   in Loop: Header=BB14_957 Depth=1
	mulsd	256(%rdx), %xmm3
	divsd	24(%r10), %xmm3
	ucomisd	%xmm3, %xmm0
	jbe	.LBB14_962
.LBB14_960:                             # %.sink.split3223
                                        #   in Loop: Header=BB14_957 Depth=1
	movsd	%xmm3, (%r15,%rbx,8)
	movapd	%xmm3, %xmm4
.LBB14_961:                             #   in Loop: Header=BB14_957 Depth=1
	ucomisd	%xmm4, %xmm0
	jbe	.LBB14_962
# %bb.963:                              #   in Loop: Header=BB14_957 Depth=1
	movsd	%xmm4, 104(%rdx)
	jmp	.LBB14_964
.LBB14_962:                             #   in Loop: Header=BB14_957 Depth=1
	movapd	%xmm0, %xmm4
.LBB14_964:                             # %.thread3137
                                        #   in Loop: Header=BB14_957 Depth=1
	incq	%rbx
	movapd	%xmm4, %xmm0
	cmpq	%rbx, %r11
	jne	.LBB14_957
	jmp	.LBB14_965
.LBB14_977:
	callq	_Z18INITIALISE_SAMPLESv
	movq	calc(%rip), %rax
	jmp	.LBB14_978
.LBB14_949:                             # %.preheader2270
	movq	geom(%rip), %rcx
	movl	(%rcx), %eax
	testl	%eax, %eax
	js	.LBB14_969
# %bb.950:                              # %.lr.ph2653.preheader
	leaq	1(%rax), %rdx
	xorl	%esi, %esi
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
.LBB14_951:                             # %.lr.ph2653
                                        # =>This Inner Loop Header: Depth=1
	movsd	%xmm0, (%r15,%rsi,8)
	incq	%rsi
	cmpq	%rsi, %rdx
	jne	.LBB14_951
	jmp	.LBB14_966
.LBB14_955:
	movsd	48(%rsp), %xmm3                 # xmm3 = mem[0],zero
.LBB14_965:                             # %.loopexit2269
	movsd	%xmm3, 48(%rsp)
.LBB14_966:                             # %.loopexit2271
	testl	%eax, %eax
	jle	.LBB14_969
# %bb.967:                              # %.lr.ph2665
	movq	56(%rcx), %rdx
	movq	144(%rcx), %rsi
	movq	24(%rdx), %rcx
	movq	24(%rsi), %rdx
	incl	%eax
	movl	$1, %esi
	movsd	.LCPI14_0(%rip), %xmm0          # xmm0 = mem[0],zero
.LBB14_968:                             # =>This Inner Loop Header: Depth=1
	movslq	(%rcx,%rsi,4), %rdi
	movsd	(%r15,%rdi,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	%xmm1, (%rdx,%rsi,8)
	incq	%rsi
	cmpq	%rsi, %rax
	jne	.LBB14_968
.LBB14_969:                             # %._crit_edge2666
.Ltmp2501:
	movl	$file_9+16, %edi
	movl	$.L.str.300, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2502:
# %bb.970:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1801
.Ltmp2503:
	movl	$file_9+16, %edi
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2504:
# %bb.971:                              # %_ZNSolsEd.exit1803
.Ltmp2505:
	movq	%rax, %r14
	movl	$.L.str.42, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2506:
# %bb.972:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1805
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
.Ltmp2507:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2508:
# %bb.973:                              # %_ZNSolsEd.exit1807
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2509:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2510:
# %bb.974:                              # %.noexc2233
.Ltmp2511:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2512:
# %bb.975:                              # %.noexc2234
.Ltmp2513:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2514:
# %bb.976:                              # %_ZNSolsEPFRSoS_E.exit1809
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	movsd	184(%rax), %xmm1                # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	(%rsp), %xmm2                   # 8-byte Reload
                                        # xmm2 = mem[0],zero
	divsd	%xmm2, %xmm1
	movsd	%xmm1, 184(%rax)
	mulsd	192(%rax), %xmm0
	divsd	%xmm2, %xmm0
	movsd	%xmm0, 192(%rax)
.LBB14_978:
	cmpl	$1, 56(%rax)
	jne	.LBB14_987
# %bb.979:
	cmpl	$1, 20(%rax)
	jne	.LBB14_987
# %bb.980:
.Ltmp2515:
	movl	$file_18, %edi
	movl	$.L.str.301, %esi
	movl	$17, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2516:
# %bb.981:                              # %.invoke3245
	movl	$file_18+128, %edi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.302, %ecx
	movl	$.L.str.303, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$20, %edx
	subq	%rax, %rdx
.Ltmp2517:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2518:
# %bb.982:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1811.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2519:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2520:
# %bb.983:                              # %.noexc2237.invoke
.Ltmp2521:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2522:
# %bb.984:                              # %.noexc2238.invoke
.Ltmp2523:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2524:
# %bb.985:                              # %_ZNSolsEPFRSoS_E.exit1813
.Ltmp2525:
	callq	_Z5SETXTv
.Ltmp2526:
# %bb.986:
.Ltmp2527:
	movl	$file_18, %edi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2528:
.LBB14_987:
.Ltmp2529:
	leaq	1752(%rsp), %rdi
	movl	$.L.str.304, %esi
	movl	$16, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2530:
# %bb.988:                              # %.invoke3246
	leaq	1880(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.305, %ecx
	movl	$.L.str.306, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$22, %edx
	subq	%rax, %rdx
.Ltmp2531:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2532:
# %bb.989:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1819.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2533:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2534:
# %bb.990:                              # %.noexc2245.invoke
.Ltmp2535:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2536:
# %bb.991:                              # %.noexc2246.invoke
.Ltmp2537:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2538:
# %bb.992:                              # %_ZNSolsEPFRSoS_E.exit1821
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	jle	.LBB14_1009
# %bb.993:                              # %.lr.ph2686
	leaq	1768(%rsp), %r12
	xorl	%ebx, %ebx
.LBB14_994:                             # %._crit_edge2678
                                        # =>This Inner Loop Header: Depth=1
	movq	gas(%rip), %rax
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
	movsd	112(%rax), %xmm1                # xmm1 = mem[0],zero
	subsd	80(%rax), %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	subsd	104(%rax), %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	8(%rax), %rax
	movsd	8(%rax,%rbx,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp2539:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2540:
# %bb.995:                              # %_ZNSolsEd.exit1827
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2541:
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2542:
# %bb.996:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1829
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	16(%rax), %rax
	movsd	8(%rax,%rbx,8), %xmm0           # xmm0 = mem[0],zero
.Ltmp2543:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2544:
# %bb.997:                              # %_ZNSolsEd.exit1831
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2545:
	movq	%rax, %r13
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2546:
# %bb.998:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1833
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	160(%rax), %rcx
	movq	168(%rax), %rax
	movsd	8(%rcx,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	addsd	8(%rax,%rbx,8), %xmm0
	mulsd	.LCPI14_0(%rip), %xmm0
	movq	gas(%rip), %rax
	subsd	104(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2547:
	movq	%r13, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2548:
# %bb.999:                              # %_ZNSolsEd.exit1835
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2549:
	movq	%rax, %r13
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2550:
# %bb.1000:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1837
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	152(%rax), %rax
	movsd	8(%rax,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	subsd	104(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2551:
	movq	%r13, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2552:
# %bb.1001:                             # %_ZNSolsEd.exit1839
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2553:
	movq	%rax, %r13
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2554:
# %bb.1002:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1841
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	88(%rax), %rax
	movsd	8(%rax,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	subsd	104(%rax), %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
.Ltmp2555:
	movq	%r13, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2556:
# %bb.1003:                             # %_ZNSolsEd.exit1843
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2557:
	movq	%rax, %r13
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2558:
# %bb.1004:                             # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit1845
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	output(%rip), %rax
	movq	136(%rax), %rax
	movq	24(%rax), %rax
	movsd	8(%rax,%rbx,8), %xmm0           # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	subsd	80(%rax), %xmm0
	divsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
.Ltmp2559:
	movq	%r13, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2560:
# %bb.1005:                             # %_ZNSolsEd.exit1847
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2561:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2562:
# %bb.1006:                             # %.noexc2253
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2563:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2564:
# %bb.1007:                             # %.noexc2254
                                        #   in Loop: Header=BB14_994 Depth=1
.Ltmp2565:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2566:
# %bb.1008:                             # %_ZNSolsEPFRSoS_E.exit1849
                                        #   in Loop: Header=BB14_994 Depth=1
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	incq	%rbx
	cmpq	%rax, %rbx
	jl	.LBB14_994
.LBB14_1009:                            # %._crit_edge2687
	movq	calc(%rip), %rax
	cmpl	$1, 20(%rax)
	jne	.LBB14_1011
# %bb.1010:
	callq	_Z18INITIALISE_SAMPLESv
.LBB14_1011:
.Ltmp2568:
	leaq	1752(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2569:
# %bb.1012:                             # %.preheader
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	movq	80(%rsp), %r14                  # 8-byte Reload
	movq	96(%rsp), %r15                  # 8-byte Reload
	js	.LBB14_1017
# %bb.1013:                             # %.lr.ph2691.preheader
	movq	$-1, %rbx
.LBB14_1014:                            # %.lr.ph2691
                                        # =>This Inner Loop Header: Depth=1
	movq	112(%rsp), %rcx                 # 8-byte Reload
	movq	8(%rcx,%rbx,8), %rdi
	testq	%rdi, %rdi
	je	.LBB14_1016
# %bb.1015:                             #   in Loop: Header=BB14_1014 Depth=1
	callq	_ZdaPv
	movq	gas(%rip), %rax
.LBB14_1016:                            #   in Loop: Header=BB14_1014 Depth=1
	movslq	428(%rax), %rcx
	incq	%rbx
	cmpq	%rcx, %rbx
	jl	.LBB14_1014
.LBB14_1017:                            # %._crit_edge2692
	movq	112(%rsp), %rdi                 # 8-byte Reload
	callq	_ZdaPv
	movq	%r14, %rdi
	callq	_ZdaPv
	movq	%r15, %rdi
	callq	_ZdaPv
	movq	gas(%rip), %rax
	cmpl	$0, 424(%rax)
	js	.LBB14_1022
# %bb.1018:                             # %.lr.ph2696.preheader
	movq	$-1, %rbx
.LBB14_1019:                            # %.lr.ph2696
                                        # =>This Inner Loop Header: Depth=1
	movq	136(%rsp), %rcx                 # 8-byte Reload
	movq	8(%rcx,%rbx,8), %rdi
	testq	%rdi, %rdi
	je	.LBB14_1021
# %bb.1020:                             #   in Loop: Header=BB14_1019 Depth=1
	callq	_ZdaPv
	movq	gas(%rip), %rax
.LBB14_1021:                            #   in Loop: Header=BB14_1019 Depth=1
	movslq	424(%rax), %rcx
	incq	%rbx
	cmpq	%rcx, %rbx
	jl	.LBB14_1019
.LBB14_1022:                            # %._crit_edge2697
	movq	136(%rsp), %rdi                 # 8-byte Reload
	callq	_ZdaPv
	movq	calc(%rip), %rax
	movsd	128(%rax), %xmm0                # xmm0 = mem[0],zero
	addsd	192(%rax), %xmm0
	movsd	%xmm0, 128(%rax)
	movq	352(%rsp), %rdi
	leaq	368(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB14_1024
# %bb.1023:                             # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1850
	callq	_ZdlPv
.LBB14_1024:                            # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1852
	movq	384(%rsp), %rdi
	leaq	400(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB14_1026
# %bb.1025:                             # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1853
	callq	_ZdlPv
.LBB14_1026:                            # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1855
	leaq	1752(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	leaq	1224(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	leaq	696(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	addq	$2280, %rsp                     # imm = 0x8E8
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB14_100:
	.cfi_def_cfa_offset 2336
.Ltmp1383:
	jmp	.LBB14_101
.LBB14_1037:
.Ltmp1373:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.LBB14_26:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1787:
	jmp	.LBB14_1028
.LBB14_28:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1759:
	jmp	.LBB14_1028
.LBB14_90:
.Ltmp1380:
.LBB14_101:
	movq	%rax, %rbx
	movq	320(%rsp), %rdi
	cmpq	%r15, %rdi
	je	.LBB14_1029
# %bb.102:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1145
	callq	_ZdlPv
	jmp	.LBB14_1029
.LBB14_12:
.Ltmp1328:
	movq	%rax, %rbx
	jmp	.LBB14_1034
.LBB14_11:
.Ltmp1325:
	movq	%rax, %rbx
	jmp	.LBB14_1035
.LBB14_103:
.Ltmp1400:
	jmp	.LBB14_1028
.LBB14_1036:
.Ltmp1340:
	jmp	.LBB14_1028
.LBB14_71:
.Ltmp1356:
	jmp	.LBB14_1028
.LBB14_36:
.Ltmp1333:
	jmp	.LBB14_1028
.LBB14_25:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1802:
	jmp	.LBB14_1028
.LBB14_27:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1774:
	jmp	.LBB14_1028
.LBB14_31:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1662:
	jmp	.LBB14_1028
.LBB14_20:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2239:
	jmp	.LBB14_1028
.LBB14_21:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2206:
	jmp	.LBB14_1028
.LBB14_22:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2157:
	jmp	.LBB14_1028
.LBB14_19:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2309:
	jmp	.LBB14_1028
.LBB14_32:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1611:
	jmp	.LBB14_1028
.LBB14_15:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2336:
	jmp	.LBB14_1028
.LBB14_33:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1568:
	jmp	.LBB14_1028
.LBB14_35:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp
.Ltmp2570:
	jmp	.LBB14_1028
.LBB14_34:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1511:
	jmp	.LBB14_1028
.LBB14_30:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1644:
	jmp	.LBB14_1028
.LBB14_1027:                            # %.loopexit
.Ltmp2567:
	jmp	.LBB14_1028
.LBB14_29:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp1655:
	jmp	.LBB14_1028
.LBB14_16:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2302:
	jmp	.LBB14_1028
.LBB14_52:
.Ltmp1343:
	jmp	.LBB14_1028
.LBB14_17:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2297:
	jmp	.LBB14_1028
.LBB14_18:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2288:
	jmp	.LBB14_1028
.LBB14_23:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2108:
	jmp	.LBB14_1028
.LBB14_24:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2093:
	jmp	.LBB14_1028
.LBB14_14:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2356:
	jmp	.LBB14_1028
.LBB14_13:                              # %.loopexit.split-lp.loopexit
.Ltmp2349:
.LBB14_1028:                            # %.loopexit.split-lp
	movq	%rax, %rbx
.LBB14_1029:                            # %.loopexit.split-lp
	movq	352(%rsp), %rdi
	leaq	368(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB14_1031
# %bb.1030:                             # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1856
	callq	_ZdlPv
.LBB14_1031:                            # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1858
	movq	384(%rsp), %rdi
	leaq	400(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB14_1033
# %bb.1032:                             # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1859
	callq	_ZdlPv
.LBB14_1033:                            # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1861
	leaq	1752(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
.LBB14_1034:
	leaq	1224(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
.LBB14_1035:
	leaq	696(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end14:
	.size	_Z14OUTPUT_RESULTSv, .Lfunc_end14-_Z14OUTPUT_RESULTSv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table14:
.Lexception5:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase1-.Lttbaseref1
.Lttbaseref1:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end5-.Lcst_begin5
.Lcst_begin5:
	.uleb128 .Lfunc_begin5-.Lfunc_begin5    # >> Call Site 1 <<
	.uleb128 .Ltmp1323-.Lfunc_begin5        #   Call between .Lfunc_begin5 and .Ltmp1323
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1323-.Lfunc_begin5        # >> Call Site 2 <<
	.uleb128 .Ltmp1324-.Ltmp1323            #   Call between .Ltmp1323 and .Ltmp1324
	.uleb128 .Ltmp1325-.Lfunc_begin5        #     jumps to .Ltmp1325
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1326-.Lfunc_begin5        # >> Call Site 3 <<
	.uleb128 .Ltmp1327-.Ltmp1326            #   Call between .Ltmp1326 and .Ltmp1327
	.uleb128 .Ltmp1328-.Lfunc_begin5        #     jumps to .Ltmp1328
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1329-.Lfunc_begin5        # >> Call Site 4 <<
	.uleb128 .Ltmp1330-.Ltmp1329            #   Call between .Ltmp1329 and .Ltmp1330
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1331-.Lfunc_begin5        # >> Call Site 5 <<
	.uleb128 .Ltmp1332-.Ltmp1331            #   Call between .Ltmp1331 and .Ltmp1332
	.uleb128 .Ltmp1333-.Lfunc_begin5        #     jumps to .Ltmp1333
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1334-.Lfunc_begin5        # >> Call Site 6 <<
	.uleb128 .Ltmp1337-.Ltmp1334            #   Call between .Ltmp1334 and .Ltmp1337
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1338-.Lfunc_begin5        # >> Call Site 7 <<
	.uleb128 .Ltmp1339-.Ltmp1338            #   Call between .Ltmp1338 and .Ltmp1339
	.uleb128 .Ltmp1340-.Lfunc_begin5        #     jumps to .Ltmp1340
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1341-.Lfunc_begin5        # >> Call Site 8 <<
	.uleb128 .Ltmp1342-.Ltmp1341            #   Call between .Ltmp1341 and .Ltmp1342
	.uleb128 .Ltmp1343-.Lfunc_begin5        #     jumps to .Ltmp1343
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1344-.Lfunc_begin5        # >> Call Site 9 <<
	.uleb128 .Ltmp1353-.Ltmp1344            #   Call between .Ltmp1344 and .Ltmp1353
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1354-.Lfunc_begin5        # >> Call Site 10 <<
	.uleb128 .Ltmp1355-.Ltmp1354            #   Call between .Ltmp1354 and .Ltmp1355
	.uleb128 .Ltmp1356-.Lfunc_begin5        #     jumps to .Ltmp1356
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1357-.Lfunc_begin5        # >> Call Site 11 <<
	.uleb128 .Ltmp1410-.Ltmp1357            #   Call between .Ltmp1357 and .Ltmp1410
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1371-.Lfunc_begin5        # >> Call Site 12 <<
	.uleb128 .Ltmp1372-.Ltmp1371            #   Call between .Ltmp1371 and .Ltmp1372
	.uleb128 .Ltmp1373-.Lfunc_begin5        #     jumps to .Ltmp1373
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp1374-.Lfunc_begin5        # >> Call Site 13 <<
	.uleb128 .Ltmp1379-.Ltmp1374            #   Call between .Ltmp1374 and .Ltmp1379
	.uleb128 .Ltmp1380-.Lfunc_begin5        #     jumps to .Ltmp1380
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1381-.Lfunc_begin5        # >> Call Site 14 <<
	.uleb128 .Ltmp1382-.Ltmp1381            #   Call between .Ltmp1381 and .Ltmp1382
	.uleb128 .Ltmp1383-.Lfunc_begin5        #     jumps to .Ltmp1383
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1382-.Lfunc_begin5        # >> Call Site 15 <<
	.uleb128 .Ltmp1390-.Ltmp1382            #   Call between .Ltmp1382 and .Ltmp1390
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1390-.Lfunc_begin5        # >> Call Site 16 <<
	.uleb128 .Ltmp1399-.Ltmp1390            #   Call between .Ltmp1390 and .Ltmp1399
	.uleb128 .Ltmp1400-.Lfunc_begin5        #     jumps to .Ltmp1400
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1399-.Lfunc_begin5        # >> Call Site 17 <<
	.uleb128 .Ltmp1411-.Ltmp1399            #   Call between .Ltmp1399 and .Ltmp1411
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1411-.Lfunc_begin5        # >> Call Site 18 <<
	.uleb128 .Ltmp1472-.Ltmp1411            #   Call between .Ltmp1411 and .Ltmp1472
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1472-.Lfunc_begin5        # >> Call Site 19 <<
	.uleb128 .Ltmp1473-.Ltmp1472            #   Call between .Ltmp1472 and .Ltmp1473
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1473-.Lfunc_begin5        # >> Call Site 20 <<
	.uleb128 .Ltmp1482-.Ltmp1473            #   Call between .Ltmp1473 and .Ltmp1482
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1483-.Lfunc_begin5        # >> Call Site 21 <<
	.uleb128 .Ltmp1510-.Ltmp1483            #   Call between .Ltmp1483 and .Ltmp1510
	.uleb128 .Ltmp1511-.Lfunc_begin5        #     jumps to .Ltmp1511
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1512-.Lfunc_begin5        # >> Call Site 22 <<
	.uleb128 .Ltmp1513-.Ltmp1512            #   Call between .Ltmp1512 and .Ltmp1513
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1514-.Lfunc_begin5        # >> Call Site 23 <<
	.uleb128 .Ltmp1567-.Ltmp1514            #   Call between .Ltmp1514 and .Ltmp1567
	.uleb128 .Ltmp1568-.Lfunc_begin5        #     jumps to .Ltmp1568
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1569-.Lfunc_begin5        # >> Call Site 24 <<
	.uleb128 .Ltmp1610-.Ltmp1569            #   Call between .Ltmp1569 and .Ltmp1610
	.uleb128 .Ltmp1611-.Lfunc_begin5        #     jumps to .Ltmp1611
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1612-.Lfunc_begin5        # >> Call Site 25 <<
	.uleb128 .Ltmp1639-.Ltmp1612            #   Call between .Ltmp1612 and .Ltmp1639
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1640-.Lfunc_begin5        # >> Call Site 26 <<
	.uleb128 .Ltmp1643-.Ltmp1640            #   Call between .Ltmp1640 and .Ltmp1643
	.uleb128 .Ltmp1644-.Lfunc_begin5        #     jumps to .Ltmp1644
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1645-.Lfunc_begin5        # >> Call Site 27 <<
	.uleb128 .Ltmp1650-.Ltmp1645            #   Call between .Ltmp1645 and .Ltmp1650
	.uleb128 .Ltmp1662-.Lfunc_begin5        #     jumps to .Ltmp1662
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1651-.Lfunc_begin5        # >> Call Site 28 <<
	.uleb128 .Ltmp1654-.Ltmp1651            #   Call between .Ltmp1651 and .Ltmp1654
	.uleb128 .Ltmp1655-.Lfunc_begin5        #     jumps to .Ltmp1655
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1656-.Lfunc_begin5        # >> Call Site 29 <<
	.uleb128 .Ltmp1661-.Ltmp1656            #   Call between .Ltmp1656 and .Ltmp1661
	.uleb128 .Ltmp1662-.Lfunc_begin5        #     jumps to .Ltmp1662
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1663-.Lfunc_begin5        # >> Call Site 30 <<
	.uleb128 .Ltmp1748-.Ltmp1663            #   Call between .Ltmp1663 and .Ltmp1748
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1749-.Lfunc_begin5        # >> Call Site 31 <<
	.uleb128 .Ltmp1758-.Ltmp1749            #   Call between .Ltmp1749 and .Ltmp1758
	.uleb128 .Ltmp1759-.Lfunc_begin5        #     jumps to .Ltmp1759
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1760-.Lfunc_begin5        # >> Call Site 32 <<
	.uleb128 .Ltmp1773-.Ltmp1760            #   Call between .Ltmp1760 and .Ltmp1773
	.uleb128 .Ltmp1774-.Lfunc_begin5        #     jumps to .Ltmp1774
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1775-.Lfunc_begin5        # >> Call Site 33 <<
	.uleb128 .Ltmp1776-.Ltmp1775            #   Call between .Ltmp1775 and .Ltmp1776
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1777-.Lfunc_begin5        # >> Call Site 34 <<
	.uleb128 .Ltmp1786-.Ltmp1777            #   Call between .Ltmp1777 and .Ltmp1786
	.uleb128 .Ltmp1787-.Lfunc_begin5        #     jumps to .Ltmp1787
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1788-.Lfunc_begin5        # >> Call Site 35 <<
	.uleb128 .Ltmp1801-.Ltmp1788            #   Call between .Ltmp1788 and .Ltmp1801
	.uleb128 .Ltmp1802-.Lfunc_begin5        #     jumps to .Ltmp1802
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1803-.Lfunc_begin5        # >> Call Site 36 <<
	.uleb128 .Ltmp1822-.Ltmp1803            #   Call between .Ltmp1803 and .Ltmp1822
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp1823-.Lfunc_begin5        # >> Call Site 37 <<
	.uleb128 .Ltmp2092-.Ltmp1823            #   Call between .Ltmp1823 and .Ltmp2092
	.uleb128 .Ltmp2093-.Lfunc_begin5        #     jumps to .Ltmp2093
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2094-.Lfunc_begin5        # >> Call Site 38 <<
	.uleb128 .Ltmp2107-.Ltmp2094            #   Call between .Ltmp2094 and .Ltmp2107
	.uleb128 .Ltmp2108-.Lfunc_begin5        #     jumps to .Ltmp2108
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2109-.Lfunc_begin5        # >> Call Site 39 <<
	.uleb128 .Ltmp2114-.Ltmp2109            #   Call between .Ltmp2109 and .Ltmp2114
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2114-.Lfunc_begin5        # >> Call Site 40 <<
	.uleb128 .Ltmp2115-.Ltmp2114            #   Call between .Ltmp2114 and .Ltmp2115
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2115-.Lfunc_begin5        # >> Call Site 41 <<
	.uleb128 .Ltmp2130-.Ltmp2115            #   Call between .Ltmp2115 and .Ltmp2130
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2131-.Lfunc_begin5        # >> Call Site 42 <<
	.uleb128 .Ltmp2156-.Ltmp2131            #   Call between .Ltmp2131 and .Ltmp2156
	.uleb128 .Ltmp2157-.Lfunc_begin5        #     jumps to .Ltmp2157
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2158-.Lfunc_begin5        # >> Call Site 43 <<
	.uleb128 .Ltmp2179-.Ltmp2158            #   Call between .Ltmp2158 and .Ltmp2179
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2180-.Lfunc_begin5        # >> Call Site 44 <<
	.uleb128 .Ltmp2205-.Ltmp2180            #   Call between .Ltmp2180 and .Ltmp2205
	.uleb128 .Ltmp2206-.Lfunc_begin5        #     jumps to .Ltmp2206
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2207-.Lfunc_begin5        # >> Call Site 45 <<
	.uleb128 .Ltmp2220-.Ltmp2207            #   Call between .Ltmp2207 and .Ltmp2220
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2221-.Lfunc_begin5        # >> Call Site 46 <<
	.uleb128 .Ltmp2238-.Ltmp2221            #   Call between .Ltmp2221 and .Ltmp2238
	.uleb128 .Ltmp2239-.Lfunc_begin5        #     jumps to .Ltmp2239
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2240-.Lfunc_begin5        # >> Call Site 47 <<
	.uleb128 .Ltmp2279-.Ltmp2240            #   Call between .Ltmp2240 and .Ltmp2279
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2280-.Lfunc_begin5        # >> Call Site 48 <<
	.uleb128 .Ltmp2283-.Ltmp2280            #   Call between .Ltmp2280 and .Ltmp2283
	.uleb128 .Ltmp2309-.Lfunc_begin5        #     jumps to .Ltmp2309
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2284-.Lfunc_begin5        # >> Call Site 49 <<
	.uleb128 .Ltmp2287-.Ltmp2284            #   Call between .Ltmp2284 and .Ltmp2287
	.uleb128 .Ltmp2288-.Lfunc_begin5        #     jumps to .Ltmp2288
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2289-.Lfunc_begin5        # >> Call Site 50 <<
	.uleb128 .Ltmp2292-.Ltmp2289            #   Call between .Ltmp2289 and .Ltmp2292
	.uleb128 .Ltmp2309-.Lfunc_begin5        #     jumps to .Ltmp2309
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2293-.Lfunc_begin5        # >> Call Site 51 <<
	.uleb128 .Ltmp2296-.Ltmp2293            #   Call between .Ltmp2293 and .Ltmp2296
	.uleb128 .Ltmp2297-.Lfunc_begin5        #     jumps to .Ltmp2297
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2298-.Lfunc_begin5        # >> Call Site 52 <<
	.uleb128 .Ltmp2301-.Ltmp2298            #   Call between .Ltmp2298 and .Ltmp2301
	.uleb128 .Ltmp2302-.Lfunc_begin5        #     jumps to .Ltmp2302
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2303-.Lfunc_begin5        # >> Call Site 53 <<
	.uleb128 .Ltmp2308-.Ltmp2303            #   Call between .Ltmp2303 and .Ltmp2308
	.uleb128 .Ltmp2309-.Lfunc_begin5        #     jumps to .Ltmp2309
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2310-.Lfunc_begin5        # >> Call Site 54 <<
	.uleb128 .Ltmp2317-.Ltmp2310            #   Call between .Ltmp2310 and .Ltmp2317
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2318-.Lfunc_begin5        # >> Call Site 55 <<
	.uleb128 .Ltmp2335-.Ltmp2318            #   Call between .Ltmp2318 and .Ltmp2335
	.uleb128 .Ltmp2336-.Lfunc_begin5        #     jumps to .Ltmp2336
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2337-.Lfunc_begin5        # >> Call Site 56 <<
	.uleb128 .Ltmp2344-.Ltmp2337            #   Call between .Ltmp2337 and .Ltmp2344
	.uleb128 .Ltmp2356-.Lfunc_begin5        #     jumps to .Ltmp2356
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2345-.Lfunc_begin5        # >> Call Site 57 <<
	.uleb128 .Ltmp2348-.Ltmp2345            #   Call between .Ltmp2345 and .Ltmp2348
	.uleb128 .Ltmp2349-.Lfunc_begin5        #     jumps to .Ltmp2349
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2350-.Lfunc_begin5        # >> Call Site 58 <<
	.uleb128 .Ltmp2355-.Ltmp2350            #   Call between .Ltmp2350 and .Ltmp2355
	.uleb128 .Ltmp2356-.Lfunc_begin5        #     jumps to .Ltmp2356
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2357-.Lfunc_begin5        # >> Call Site 59 <<
	.uleb128 .Ltmp2538-.Ltmp2357            #   Call between .Ltmp2357 and .Ltmp2538
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2539-.Lfunc_begin5        # >> Call Site 60 <<
	.uleb128 .Ltmp2566-.Ltmp2539            #   Call between .Ltmp2539 and .Ltmp2566
	.uleb128 .Ltmp2567-.Lfunc_begin5        #     jumps to .Ltmp2567
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2568-.Lfunc_begin5        # >> Call Site 61 <<
	.uleb128 .Ltmp2569-.Ltmp2568            #   Call between .Ltmp2568 and .Ltmp2569
	.uleb128 .Ltmp2570-.Lfunc_begin5        #     jumps to .Ltmp2570
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2569-.Lfunc_begin5        # >> Call Site 62 <<
	.uleb128 .Lfunc_end14-.Ltmp2569         #   Call between .Ltmp2569 and .Lfunc_end14
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end5:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase1:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_Z12ALLOCATE_GASv               # -- Begin function _Z12ALLOCATE_GASv
	.type	_Z12ALLOCATE_GASv,@function
_Z12ALLOCATE_GASv:                      # @_Z12ALLOCATE_GASv
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	gas(%rip), %rdi
	movl	424(%rdi), %esi
	incl	%esi
	movl	$312, %ebx                      # imm = 0x138
	leaq	(%rdi,%rbx), %rcx
	movl	$3, %edx
	callq	_ZN3GAS10d_allocateEiiRPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	movl	$320, %r14d                     # imm = 0x140
	leaq	(%rdi,%r14), %rcx
	movl	$7, %esi
	callq	_ZN3GAS10d_allocateEiiRPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	movl	$328, %r15d                     # imm = 0x148
	leaq	(%rdi,%r15), %rcx
	movl	$4, %esi
	callq	_ZN3GAS10d_allocateEiiRPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	leal	1(%rcx), %edx
	leaq	352(%rdi), %r8
	movl	$9, %esi
                                        # kill: def $ecx killed $ecx killed $rcx
	callq	_ZN3GAS10d_allocateEiiiRPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	488(%rdi), %rcx
	movl	$3, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movslq	424(%rdi), %rsi
	incq	%rsi
	addq	$472, %rdi                      # imm = 0x1D8
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	368(%rdi), %r8
	movl	$7, %esi
	movl	$3, %ecx
	callq	_ZN3GAS10d_allocateEiiiRPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %esi
	incl	%esi
	leaq	344(%rdi), %rcx
	movl	$3, %edx
	callq	_ZN3GAS10d_allocateEiiRPPd
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	movl	$280, %r12d                     # imm = 0x118
	movq	calc(%rip), %rdi
	addq	%r12, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movslq	424(%rdi), %rax
	addq	$272, %rdi                      # imm = 0x110
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	calc(%rip), %rdi
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	incl	%edx
	addq	%rdi, %r15
	movl	%edx, %esi
	movq	%r15, %rcx
	callq	_ZN4CALC10d_allocateEiiRPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	520(%rdi), %rcx
	movl	%edx, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	528(%rdi), %rcx
	movl	%edx, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	incl	%ecx
	leaq	400(%rdi), %r9
	movl	$5, %esi
	movl	%ecx, %edx
	movl	%ecx, %r8d
	callq	_ZN3GAS10d_allocateEiiiiRPPPPd
	movq	gas(%rip), %rdi
	movslq	424(%rdi), %rsi
	incq	%rsi
	addq	$480, %rdi                      # imm = 0x1E0
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	452(%rdi), %edx
	incl	%edx
	incl	%ecx
	leaq	376(%rdi), %r8
	movl	$4, %esi
	callq	_ZN3GAS10d_allocateEiiiRPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	456(%rdi), %r8d
	incl	%ecx
	incl	%r8d
	leaq	408(%rdi), %r9
	movl	$3, %esi
	movl	%ecx, %edx
	callq	_ZN3GAS10d_allocateEiiiiRPPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	incl	%ecx
	leaq	384(%rdi), %r8
	movl	$3, %esi
	movl	%ecx, %edx
	callq	_ZN3GAS10d_allocateEiiiRPPPd
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	addq	calc(%rip), %r14
	leaq	8(,%rax,8), %rsi
	movq	%r14, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movslq	424(%rdi), %rax
	movl	$304, %r14d                     # imm = 0x130
	addq	%r14, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	addq	calc(%rip), %r14
	leaq	8(,%rax,8), %rsi
	movq	%r14, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	addq	calc(%rip), %rbx
	leaq	8(,%rax,8), %rsi
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	444(%rdi), %esi
	incl	%esi
	incl	%ecx
	leaq	576(%rdi), %r8
	movl	%ecx, %edx
	callq	_ZN3GAS10i_allocateEiiiRPPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	552(%rdi), %rcx
	movl	%edx, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	444(%rdi), %edx
	incl	%edx
	incl	%ecx
	leaq	392(%rdi), %r9
	movl	$7, %esi
	movl	%ecx, %r8d
	callq	_ZN3GAS10d_allocateEiiiiRPPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	444(%rdi), %esi
	incl	%esi
	incl	%ecx
	leaq	584(%rdi), %r9
	movl	$8, %edx
	movl	%ecx, %r8d
	callq	_ZN3GAS10i_allocateEiiiiRPPPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	536(%rdi), %rcx
	movl	$5, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movslq	444(%rdi), %rax
	addq	$288, %rdi                      # imm = 0x120
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	544(%rdi), %rcx
	movl	$5, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movslq	448(%rdi), %rax
	addq	%r12, %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	444(%rdi), %edx
	incl	%edx
	incl	%ecx
	movl	456(%rdi), %r9d
	incl	%r9d
	leaq	416(%rdi), %rax
	movq	%rax, (%rsp)
	movl	$3, %esi
	movl	%ecx, %r8d
	callq	_ZN3GAS10d_allocateEiiiiiRPPPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	incl	%edx
	leaq	560(%rdi), %rcx
	movl	$3, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movslq	424(%rdi), %rax
	addq	$296, %rdi                      # imm = 0x128
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	428(%rdi), %edx
	testl	%edx, %edx
	js	.LBB15_2
# %bb.1:
	incl	%edx
	movl	424(%rdi), %ecx
	incl	%ecx
	leaq	360(%rdi), %r8
	movl	$6, %esi
	callq	_ZN3GAS10d_allocateEiiiRPPPd
	movq	gas(%rip), %rdi
	movl	424(%rdi), %ecx
	movl	428(%rdi), %edx
	incl	%edx
	incl	%ecx
	leaq	568(%rdi), %r8
	movl	$3, %esi
	callq	_ZN3GAS10i_allocateEiiiRPPPi
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	movl	$288, %edi                      # imm = 0x120
	addq	calc(%rip), %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rax
	movslq	424(%rax), %rax
	movl	$296, %edi                      # imm = 0x128
	addq	calc(%rip), %rdi
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
.LBB15_2:
	movl	436(%rdi), %eax
	testl	%eax, %eax
	jle	.LBB15_4
# %bb.3:
	addq	$264, %rdi                      # imm = 0x108
	leaq	8(,%rax,8), %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	movq	gas(%rip), %rdi
	movl	436(%rdi), %edx
	incl	%edx
	leaq	496(%rdi), %rcx
	movl	$3, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movl	436(%rdi), %edx
	incl	%edx
	leaq	504(%rdi), %rcx
	movl	$7, %esi
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
	movl	424(%rdi), %edx
	movl	436(%rdi), %esi
	incl	%esi
	incl	%edx
	leaq	512(%rdi), %rcx
	callq	_ZN3GAS10i_allocateEiiRPPi
	movq	gas(%rip), %rdi
.LBB15_4:
	movl	424(%rdi), %eax
	testl	%eax, %eax
	js	.LBB15_5
# %bb.6:                                # %.lr.ph
	movq	calc(%rip), %rcx
	movq	320(%rcx), %rdi
	leaq	8(,%rax,8), %rdx
	xorl	%esi, %esi
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	memset@PLT                      # TAILCALL
.LBB15_5:                               # %._crit_edge
	.cfi_def_cfa_offset 48
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end15:
	.size	_Z12ALLOCATE_GASv, .Lfunc_end15-_Z12ALLOCATE_GASv
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10d_allocateEiiRPPd,"axG",@progbits,_ZN3GAS10d_allocateEiiRPPd,comdat
	.weak	_ZN3GAS10d_allocateEiiRPPd      # -- Begin function _ZN3GAS10d_allocateEiiRPPd
	.p2align	1, 0x90
	.type	_ZN3GAS10d_allocateEiiRPPd,@function
_ZN3GAS10d_allocateEiiRPPd:             # @_ZN3GAS10d_allocateEiiRPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,8), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB16_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$3, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB16_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB16_2
.LBB16_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end16:
	.size	_ZN3GAS10d_allocateEiiRPPd, .Lfunc_end16-_ZN3GAS10d_allocateEiiRPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10d_allocateEiiiRPPPd,"axG",@progbits,_ZN3GAS10d_allocateEiiiRPPPd,comdat
	.weak	_ZN3GAS10d_allocateEiiiRPPPd    # -- Begin function _ZN3GAS10d_allocateEiiiRPPPd
	.p2align	1, 0x90
	.type	_ZN3GAS10d_allocateEiiiRPPPd,@function
_ZN3GAS10d_allocateEiiiRPPPd:           # @_ZN3GAS10d_allocateEiiiRPPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %rbx
	movl	%ecx, %r15d
	movl	%edx, 12(%rsp)                  # 4-byte Spill
	movl	%esi, %r12d
	movslq	%esi, %r14
	leaq	(,%r14,8), %rsi
	movq	%r8, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB17_6
# %bb.1:                                # %.lr.ph19
	movslq	12(%rsp), %rax                  # 4-byte Folded Reload
	leaq	(,%rax,8), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	%r15d, %r15
	shlq	$3, %r15
	movl	%r12d, %r12d
	movl	%eax, %r13d
	shlq	$3, %r13
	xorl	%ebp, %ebp
.LBB17_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB17_4 Depth 2
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 12(%rsp)                    # 4-byte Folded Reload
	jle	.LBB17_5
# %bb.3:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB17_2 Depth=1
	xorl	%r14d, %r14d
.LBB17_4:                               # %.lr.ph
                                        #   Parent Loop BB17_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rdi
	addq	%r14, %rdi
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r14
	cmpq	%r14, %r13
	jne	.LBB17_4
.LBB17_5:                               # %._crit_edge
                                        #   in Loop: Header=BB17_2 Depth=1
	incq	%rbp
	cmpq	%r12, %rbp
	jne	.LBB17_2
.LBB17_6:                               # %._crit_edge20
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end17:
	.size	_ZN3GAS10d_allocateEiiiRPPPd, .Lfunc_end17-_ZN3GAS10d_allocateEiiiRPPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10i_allocateEiiRPPi,"axG",@progbits,_ZN3GAS10i_allocateEiiRPPi,comdat
	.weak	_ZN3GAS10i_allocateEiiRPPi      # -- Begin function _ZN3GAS10i_allocateEiiRPPi
	.p2align	1, 0x90
	.type	_ZN3GAS10i_allocateEiiRPPi,@function
_ZN3GAS10i_allocateEiiRPPi:             # @_ZN3GAS10i_allocateEiiRPPi
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,4), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB18_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$2, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB18_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB18_2
.LBB18_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end18:
	.size	_ZN3GAS10i_allocateEiiRPPi, .Lfunc_end18-_ZN3GAS10i_allocateEiiRPPi
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN4CALC10d_allocateEiiRPPd,"axG",@progbits,_ZN4CALC10d_allocateEiiRPPd,comdat
	.weak	_ZN4CALC10d_allocateEiiRPPd     # -- Begin function _ZN4CALC10d_allocateEiiRPPd
	.p2align	1, 0x90
	.type	_ZN4CALC10d_allocateEiiRPPd,@function
_ZN4CALC10d_allocateEiiRPPd:            # @_ZN4CALC10d_allocateEiiRPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,8), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB19_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$3, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB19_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB19_2
.LBB19_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end19:
	.size	_ZN4CALC10d_allocateEiiRPPd, .Lfunc_end19-_ZN4CALC10d_allocateEiiRPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10d_allocateEiiiiRPPPPd,"axG",@progbits,_ZN3GAS10d_allocateEiiiiRPPPPd,comdat
	.weak	_ZN3GAS10d_allocateEiiiiRPPPPd  # -- Begin function _ZN3GAS10d_allocateEiiiiRPPPPd
	.p2align	1, 0x90
	.type	_ZN3GAS10d_allocateEiiiiRPPPPd,@function
_ZN3GAS10d_allocateEiiiiRPPPPd:         # @_ZN3GAS10d_allocateEiiiiRPPPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r9, %rbx
	movl	%r8d, %r13d
	movl	%ecx, 4(%rsp)                   # 4-byte Spill
	movl	%edx, (%rsp)                    # 4-byte Spill
	movl	%esi, %ebp
	movslq	%esi, %r14
	leaq	(,%r14,8), %rsi
	movq	%r9, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB20_9
# %bb.1:                                # %.lr.ph32
	movslq	(%rsp), %rax                    # 4-byte Folded Reload
	leaq	(,%rax,8), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	4(%rsp), %rcx                   # 4-byte Folded Reload
	leaq	(,%rcx,8), %rdx
	movq	%rdx, 32(%rsp)                  # 8-byte Spill
	movslq	%r13d, %r13
	shlq	$3, %r13
	movl	%ebp, %edx
	movq	%rdx, 8(%rsp)                   # 8-byte Spill
	movl	%eax, %eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movl	%ecx, %r14d
	shlq	$3, %r14
	xorl	%ebp, %ebp
.LBB20_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB20_4 Depth 2
                                        #       Child Loop BB20_6 Depth 3
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, (%rsp)                      # 4-byte Folded Reload
	jle	.LBB20_8
# %bb.3:                                # %.lr.ph28.preheader
                                        #   in Loop: Header=BB20_2 Depth=1
	xorl	%r12d, %r12d
.LBB20_4:                               # %.lr.ph28
                                        #   Parent Loop BB20_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB20_6 Depth 3
	movq	(%rbx), %rax
	leaq	(,%r12,8), %rdi
	addq	(%rax,%rbp,8), %rdi
	movq	32(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 4(%rsp)                     # 4-byte Folded Reload
	jle	.LBB20_7
# %bb.5:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB20_4 Depth=2
	xorl	%r15d, %r15d
.LBB20_6:                               # %.lr.ph
                                        #   Parent Loop BB20_2 Depth=1
                                        #     Parent Loop BB20_4 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r12,8), %rdi
	addq	%r15, %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r15
	cmpq	%r15, %r14
	jne	.LBB20_6
.LBB20_7:                               # %._crit_edge
                                        #   in Loop: Header=BB20_4 Depth=2
	incq	%r12
	cmpq	24(%rsp), %r12                  # 8-byte Folded Reload
	jne	.LBB20_4
.LBB20_8:                               # %._crit_edge29
                                        #   in Loop: Header=BB20_2 Depth=1
	incq	%rbp
	cmpq	8(%rsp), %rbp                   # 8-byte Folded Reload
	jne	.LBB20_2
.LBB20_9:                               # %._crit_edge33
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end20:
	.size	_ZN3GAS10d_allocateEiiiiRPPPPd, .Lfunc_end20-_ZN3GAS10d_allocateEiiiiRPPPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10i_allocateEiiiRPPPi,"axG",@progbits,_ZN3GAS10i_allocateEiiiRPPPi,comdat
	.weak	_ZN3GAS10i_allocateEiiiRPPPi    # -- Begin function _ZN3GAS10i_allocateEiiiRPPPi
	.p2align	1, 0x90
	.type	_ZN3GAS10i_allocateEiiiRPPPi,@function
_ZN3GAS10i_allocateEiiiRPPPi:           # @_ZN3GAS10i_allocateEiiiRPPPi
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %rbx
	movl	%ecx, %r15d
	movl	%edx, 12(%rsp)                  # 4-byte Spill
	movl	%esi, %r12d
	movslq	%esi, %r14
	leaq	(,%r14,4), %rsi
	movq	%r8, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB21_6
# %bb.1:                                # %.lr.ph19
	movslq	12(%rsp), %rax                  # 4-byte Folded Reload
	leaq	(,%rax,4), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	%r15d, %r15
	shlq	$2, %r15
	movl	%r12d, %r12d
	movl	%eax, %r13d
	shlq	$3, %r13
	xorl	%ebp, %ebp
.LBB21_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB21_4 Depth 2
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 12(%rsp)                    # 4-byte Folded Reload
	jle	.LBB21_5
# %bb.3:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB21_2 Depth=1
	xorl	%r14d, %r14d
.LBB21_4:                               # %.lr.ph
                                        #   Parent Loop BB21_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rdi
	addq	%r14, %rdi
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r14
	cmpq	%r14, %r13
	jne	.LBB21_4
.LBB21_5:                               # %._crit_edge
                                        #   in Loop: Header=BB21_2 Depth=1
	incq	%rbp
	cmpq	%r12, %rbp
	jne	.LBB21_2
.LBB21_6:                               # %._crit_edge20
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end21:
	.size	_ZN3GAS10i_allocateEiiiRPPPi, .Lfunc_end21-_ZN3GAS10i_allocateEiiiRPPPi
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10i_allocateEiiiiRPPPPi,"axG",@progbits,_ZN3GAS10i_allocateEiiiiRPPPPi,comdat
	.weak	_ZN3GAS10i_allocateEiiiiRPPPPi  # -- Begin function _ZN3GAS10i_allocateEiiiiRPPPPi
	.p2align	1, 0x90
	.type	_ZN3GAS10i_allocateEiiiiRPPPPi,@function
_ZN3GAS10i_allocateEiiiiRPPPPi:         # @_ZN3GAS10i_allocateEiiiiRPPPPi
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r9, %rbx
	movl	%r8d, %r13d
	movl	%ecx, 4(%rsp)                   # 4-byte Spill
	movl	%edx, (%rsp)                    # 4-byte Spill
	movl	%esi, %ebp
	movslq	%esi, %r14
	leaq	(,%r14,4), %rsi
	movq	%r9, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB22_9
# %bb.1:                                # %.lr.ph32
	movslq	(%rsp), %rax                    # 4-byte Folded Reload
	leaq	(,%rax,4), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	4(%rsp), %rcx                   # 4-byte Folded Reload
	leaq	(,%rcx,4), %rdx
	movq	%rdx, 32(%rsp)                  # 8-byte Spill
	movslq	%r13d, %r13
	shlq	$2, %r13
	movl	%ebp, %edx
	movq	%rdx, 8(%rsp)                   # 8-byte Spill
	movl	%eax, %eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movl	%ecx, %r14d
	shlq	$3, %r14
	xorl	%ebp, %ebp
.LBB22_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB22_4 Depth 2
                                        #       Child Loop BB22_6 Depth 3
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, (%rsp)                      # 4-byte Folded Reload
	jle	.LBB22_8
# %bb.3:                                # %.lr.ph28.preheader
                                        #   in Loop: Header=BB22_2 Depth=1
	xorl	%r12d, %r12d
.LBB22_4:                               # %.lr.ph28
                                        #   Parent Loop BB22_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB22_6 Depth 3
	movq	(%rbx), %rax
	leaq	(,%r12,8), %rdi
	addq	(%rax,%rbp,8), %rdi
	movq	32(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 4(%rsp)                     # 4-byte Folded Reload
	jle	.LBB22_7
# %bb.5:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB22_4 Depth=2
	xorl	%r15d, %r15d
.LBB22_6:                               # %.lr.ph
                                        #   Parent Loop BB22_2 Depth=1
                                        #     Parent Loop BB22_4 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r12,8), %rdi
	addq	%r15, %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r15
	cmpq	%r15, %r14
	jne	.LBB22_6
.LBB22_7:                               # %._crit_edge
                                        #   in Loop: Header=BB22_4 Depth=2
	incq	%r12
	cmpq	24(%rsp), %r12                  # 8-byte Folded Reload
	jne	.LBB22_4
.LBB22_8:                               # %._crit_edge29
                                        #   in Loop: Header=BB22_2 Depth=1
	incq	%rbp
	cmpq	8(%rsp), %rbp                   # 8-byte Folded Reload
	jne	.LBB22_2
.LBB22_9:                               # %._crit_edge33
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end22:
	.size	_ZN3GAS10i_allocateEiiiiRPPPPi, .Lfunc_end22-_ZN3GAS10i_allocateEiiiiRPPPPi
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN3GAS10d_allocateEiiiiiRPPPPPd,"axG",@progbits,_ZN3GAS10d_allocateEiiiiiRPPPPPd,comdat
	.weak	_ZN3GAS10d_allocateEiiiiiRPPPPPd # -- Begin function _ZN3GAS10d_allocateEiiiiiRPPPPPd
	.p2align	1, 0x90
	.type	_ZN3GAS10d_allocateEiiiiiRPPPPPd,@function
_ZN3GAS10d_allocateEiiiiiRPPPPPd:       # @_ZN3GAS10d_allocateEiiiiiRPPPPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$88, %rsp
	.cfi_def_cfa_offset 144
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%r9d, %r12d
	movl	%r8d, 20(%rsp)                  # 4-byte Spill
	movl	%ecx, 16(%rsp)                  # 4-byte Spill
	movl	%edx, 12(%rsp)                  # 4-byte Spill
	movl	%esi, %ebp
	movq	144(%rsp), %r13
	movslq	%esi, %rbx
	leaq	(,%rbx,8), %rsi
	movq	%r13, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%ebx, %ebx
	jle	.LBB23_12
# %bb.1:                                # %.lr.ph46
	movslq	12(%rsp), %rax                  # 4-byte Folded Reload
	leaq	(,%rax,8), %rcx
	movq	%rcx, 32(%rsp)                  # 8-byte Spill
	movslq	16(%rsp), %rcx                  # 4-byte Folded Reload
	leaq	(,%rcx,8), %rdx
	movq	%rdx, 48(%rsp)                  # 8-byte Spill
	movslq	20(%rsp), %rdx                  # 4-byte Folded Reload
	leaq	(,%rdx,8), %rsi
	movq	%rsi, 72(%rsp)                  # 8-byte Spill
	movslq	%r12d, %rsi
	shlq	$3, %rsi
	movq	%rsi, 64(%rsp)                  # 8-byte Spill
	movl	%ebp, %esi
	movq	%rsi, 24(%rsp)                  # 8-byte Spill
	movl	%eax, %eax
	movq	%rax, 40(%rsp)                  # 8-byte Spill
	movl	%ecx, %eax
	movq	%rax, 56(%rsp)                  # 8-byte Spill
	movl	%edx, %eax
	shlq	$3, %rax
	movq	%rax, 80(%rsp)                  # 8-byte Spill
	xorl	%ebx, %ebx
.LBB23_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB23_4 Depth 2
                                        #       Child Loop BB23_6 Depth 3
                                        #         Child Loop BB23_8 Depth 4
	leaq	(,%rbx,8), %rdi
	addq	(%r13), %rdi
	movq	32(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 12(%rsp)                    # 4-byte Folded Reload
	jle	.LBB23_11
# %bb.3:                                # %.lr.ph42.preheader
                                        #   in Loop: Header=BB23_2 Depth=1
	xorl	%r14d, %r14d
.LBB23_4:                               # %.lr.ph42
                                        #   Parent Loop BB23_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB23_6 Depth 3
                                        #         Child Loop BB23_8 Depth 4
	movq	(%r13), %rax
	leaq	(,%r14,8), %rdi
	addq	(%rax,%rbx,8), %rdi
	movq	48(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 16(%rsp)                    # 4-byte Folded Reload
	jle	.LBB23_10
# %bb.5:                                # %.lr.ph38.preheader
                                        #   in Loop: Header=BB23_4 Depth=2
	xorl	%r12d, %r12d
.LBB23_6:                               # %.lr.ph38
                                        #   Parent Loop BB23_2 Depth=1
                                        #     Parent Loop BB23_4 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB23_8 Depth 4
	movq	(%r13), %rax
	movq	(%rax,%rbx,8), %rax
	leaq	(,%r12,8), %rdi
	addq	(%rax,%r14,8), %rdi
	movq	72(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 20(%rsp)                    # 4-byte Folded Reload
	movq	64(%rsp), %rsi                  # 8-byte Reload
	movq	%rbx, %rdx
	jle	.LBB23_9
# %bb.7:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB23_6 Depth=3
	xorl	%r15d, %r15d
.LBB23_8:                               # %.lr.ph
                                        #   Parent Loop BB23_2 Depth=1
                                        #     Parent Loop BB23_4 Depth=2
                                        #       Parent Loop BB23_6 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	(%r13), %rax
	movq	(%rax,%rdx,8), %rax
	movq	(%rax,%r14,8), %rax
	movq	(%rax,%r12,8), %rdi
	addq	%r15, %rdi
	movq	%rsi, %rbx
	movq	%rdx, %rbp
	movl	$1, %edx
	callq	hipMallocManaged
	movq	80(%rsp), %rdi                  # 8-byte Reload
	movq	%rbx, %rsi
	movq	%rbp, %rdx
	addq	$8, %r15
	cmpq	%r15, %rdi
	jne	.LBB23_8
.LBB23_9:                               # %._crit_edge
                                        #   in Loop: Header=BB23_6 Depth=3
	incq	%r12
	cmpq	56(%rsp), %r12                  # 8-byte Folded Reload
	movq	%rdx, %rbx
	jne	.LBB23_6
.LBB23_10:                              # %._crit_edge39
                                        #   in Loop: Header=BB23_4 Depth=2
	incq	%r14
	cmpq	40(%rsp), %r14                  # 8-byte Folded Reload
	jne	.LBB23_4
.LBB23_11:                              # %._crit_edge43
                                        #   in Loop: Header=BB23_2 Depth=1
	incq	%rbx
	cmpq	24(%rsp), %rbx                  # 8-byte Folded Reload
	jne	.LBB23_2
.LBB23_12:                              # %._crit_edge47
	addq	$88, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end23:
	.size	_ZN3GAS10d_allocateEiiiiiRPPPPPd, .Lfunc_end23-_ZN3GAS10d_allocateEiiiiiRPPPPPd
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_Z11HARD_SPHEREv                # -- Begin function _Z11HARD_SPHEREv
	.type	_Z11HARD_SPHEREv,@function
_Z11HARD_SPHEREv:                       # @_Z11HARD_SPHEREv
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.48, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movl	$1, %ecx
	movq	%rcx, 424(%rax)
	xorl	%edx, %edx
	movq	%rdx, 432(%rax)
	movq	%rdx, 444(%rax)
	movq	%rcx, 452(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466300756342324667, %rsi      # imm = 0x3DFB7CDFD9D7BDBB
	movq	%rsi, 8(%rdx)
	movq	16(%rcx), %rdx
	movabsq	$4643510282981736448, %rsi      # imm = 0x4071100000000000
	movq	%rsi, 8(%rdx)
	movq	24(%rcx), %rdx
	movabsq	$4602678819172646912, %rsi      # imm = 0x3FE0000000000000
	movq	%rsi, 8(%rdx)
	movq	32(%rcx), %rdx
	movabsq	$4607182418800017408, %rsi      # imm = 0x3FF0000000000000
	movq	%rsi, 8(%rdx)
	movq	40(%rcx), %rcx
	movabsq	$4228584079439330777, %rdx      # imm = 0x3AAEF2D0F5DA7DD9
	movq	%rdx, 8(%rcx)
	movq	488(%rax), %rax
	movq	8(%rax), %rax
	movl	$0, 4(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.49, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end24:
	.size	_Z11HARD_SPHEREv, .Lfunc_end24-_Z11HARD_SPHEREv
	.cfi_endproc
                                        # -- End function
	.globl	_Z5ARGONv                       # -- Begin function _Z5ARGONv
	.type	_Z5ARGONv,@function
_Z5ARGONv:                              # @_Z5ARGONv
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	pushq	%rax
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.50, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movl	$1, %ecx
	movq	%rcx, 424(%rax)
	xorl	%r14d, %r14d
	movq	%r14, 432(%rax)
	movq	%r14, 444(%rax)
	movq	%rcx, 452(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466629584165259846, %rsi      # imm = 0x3DFCA7F10B6BCA46
	movq	%rsi, 8(%rdx)
	movq	16(%rcx), %rdx
	movabsq	$4643512921809643110, %rsi      # imm = 0x4071126666666666
	movq	%rsi, 8(%rdx)
	movq	24(%rcx), %rdx
	movabsq	$4605471050941616620, %rsi      # imm = 0x3FE9EB851EB851EC
	movq	%rsi, 8(%rdx)
	movq	32(%rcx), %rdx
	movabsq	$4607182418800017408, %rsi      # imm = 0x3FF0000000000000
	movq	%rsi, 8(%rdx)
	movq	40(%rcx), %rcx
	movabsq	$4230151995030800952, %rdx      # imm = 0x3AB484D3C1B88A38
	movq	%rdx, 8(%rcx)
	movq	488(%rax), %rax
	movq	8(%rax), %rcx
	movl	%r14d, 4(%rcx)
	movq	16(%rax), %rax
	movl	%r14d, 4(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.51, %esi
	movl	$15, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end25:
	.size	_Z5ARGONv, .Lfunc_end25-_Z5ARGONv
	.cfi_endproc
                                        # -- End function
	.globl	_Z14IDEAL_NITROGENv             # -- Begin function _Z14IDEAL_NITROGENv
	.type	_Z14IDEAL_NITROGENv,@function
_Z14IDEAL_NITROGENv:                    # @_Z14IDEAL_NITROGENv
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.52, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movl	$1, %ecx
	movq	%rcx, 424(%rax)
	movq	%rcx, 432(%rax)
	xorps	%xmm0, %xmm0
	movups	%xmm0, 444(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466629584165259846, %rsi      # imm = 0x3DFCA7F10B6BCA46
	movq	%rsi, 8(%rdx)
	movq	16(%rcx), %rdx
	movabsq	$4643510282981736448, %rsi      # imm = 0x4071100000000000
	movq	%rsi, 8(%rdx)
	movq	24(%rcx), %rdx
	movabsq	$4604840546993784750, %rsi      # imm = 0x3FE7AE147AE147AE
	movq	%rsi, 8(%rdx)
	movq	32(%rcx), %rdx
	movabsq	$4607182418800017408, %rsi      # imm = 0x3FF0000000000000
	movq	%rsi, 8(%rdx)
	movq	40(%rcx), %rcx
	movabsq	$4227974293437808455, %rdx      # imm = 0x3AACC83817D7FF47
	movq	%rdx, 8(%rcx)
	movq	488(%rax), %rcx
	movq	8(%rcx), %rdx
	movl	$2, 4(%rdx)
	movq	16(%rcx), %rcx
	movl	$0, 4(%rcx)
	movq	328(%rax), %rax
	movq	8(%rax), %rax
	movabsq	$4617315517961601024, %rcx      # imm = 0x4014000000000000
	movq	%rcx, 8(%rax)
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end26:
	.size	_Z14IDEAL_NITROGENv, .Lfunc_end26-_Z14IDEAL_NITROGENv
	.cfi_endproc
                                        # -- End function
	.globl	_Z11REAL_OXYGENv                # -- Begin function _Z11REAL_OXYGENv
	.type	_Z11REAL_OXYGENv,@function
_Z11REAL_OXYGENv:                       # @_Z11REAL_OXYGENv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.53, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movabsq	$4294967298, %rcx               # imm = 0x100000002
	movq	%rcx, 424(%rax)
	movq	$1, 432(%rax)
	xorl	%r14d, %r14d
	movq	%r14, 444(%rax)
	movabsq	$111669149701, %rcx             # imm = 0x1A00000005
	movq	%rcx, 452(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rbx
	movq	320(%rbx), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466436156034121505, %rax      # imm = 0x3DFBF8050C5FFF21
	movq	%rax, 8(%rdx)
	movq	16(%rcx), %rsi
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	%rax, 8(%rsi)
	movq	24(%rcx), %rdi
	movabsq	$4605110762971426980, %rax      # imm = 0x3FE8A3D70A3D70A4
	movq	%rax, 8(%rdi)
	movq	32(%rcx), %r9
	movabsq	$4607182418800017408, %rax      # imm = 0x3FF0000000000000
	movq	%rax, 8(%r9)
	movq	40(%rcx), %r10
	movabsq	$4229003855102220352, %r11      # imm = 0x3AB0709999201840
	movq	%r11, 8(%r10)
	movq	48(%rcx), %r11
	movq	%r14, 8(%r11)
	movq	488(%rbx), %rcx
	movq	8(%rcx), %r15
	movl	$2, %ebp
	movl	%ebp, 4(%r15)
	movq	16(%rcx), %rcx
	movl	$0, 4(%rcx)
	movq	328(%rbx), %rcx
	movq	8(%rcx), %r14
	movabsq	$4617315517961601024, %rcx      # imm = 0x4014000000000000
	movq	%rcx, 8(%r14)
	movq	472(%rbx), %r12
	movl	$1, 4(%r12)
	movq	360(%rbx), %r14
	movq	8(%r14), %r13
	movq	8(%r13), %r13
	movabsq	$4657179411538247680, %rcx      # imm = 0x40A1A00000000000
	movq	%rcx, 8(%r13)
	movq	16(%r14), %r13
	movq	8(%r13), %r13
	movabsq	$4680921166116814848, %r8       # imm = 0x40F5F90000000000
	movq	%r8, 8(%r13)
	movq	24(%r14), %r8
	movq	8(%r8), %r8
	movq	%rcx, 8(%r8)
	movq	40(%r14), %rcx
	movq	%rax, %r14
	movq	8(%rcx), %rcx
	movq	%rax, 8(%rcx)
	movq	568(%rbx), %rcx
	movq	8(%rcx), %r8
	movq	8(%r8), %r8
	movl	%ebp, 4(%r8)
	movq	16(%rcx), %rcx
	movq	8(%rcx), %rcx
	movl	%ebp, 4(%rcx)
	movq	480(%rbx), %r13
	movl	$3, 4(%r13)
	cmpl	%ebp, 452(%rbx)
	movq	%rbx, 8(%rsp)                   # 8-byte Spill
	jl	.LBB27_2
# %bb.1:
	movq	376(%rbx), %rcx
	movq	8(%rcx), %r8
	movq	8(%r8), %r14
	movabsq	$4613937818241073152, %rbp      # imm = 0x4008000000000000
	movq	%rbp, 8(%r14)
	movq	16(%rcx), %r14
	movq	8(%r14), %rbp
	movq	$0, 8(%rbp)
	movq	24(%rcx), %rcx
	movq	8(%rcx), %rbp
	movabsq	$4632233691727265792, %rax      # imm = 0x4049000000000000
	movq	%rax, 8(%rbp)
	movq	16(%r8), %rbp
	movabsq	$4611686018427387904, %rbx      # imm = 0x4000000000000000
	movq	%rbx, 8(%rbp)
	movq	16(%r14), %rbx
	movabsq	$4667488982316089344, %rbp      # imm = 0x40C6408000000000
	movq	%rbp, 8(%rbx)
	movq	16(%rcx), %rbx
	movq	%rax, 8(%rbx)
	movq	24(%r8), %r8
	movabsq	$4607182418800017408, %rbx      # imm = 0x3FF0000000000000
	movq	%rbx, 8(%r8)
	movq	24(%r14), %r8
	movabsq	$4607182418800017408, %r14      # imm = 0x3FF0000000000000
	movabsq	$4670947771019165696, %rbx      # imm = 0x40D28A4000000000
	movq	%rbx, 8(%r8)
	movq	8(%rsp), %rbx                   # 8-byte Reload
	movq	24(%rcx), %rcx
	movq	%rax, 8(%rcx)
.LBB27_2:
	movabsq	$4464366475030941260, %rax      # imm = 0x3DF49DA7E361CE4C
	movq	%rax, 16(%rdx)
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	%rax, 16(%rsi)
	movabsq	$4605380978949069210, %rax      # imm = 0x3FE999999999999A
	movq	%rax, 16(%rdi)
	movq	%r14, 16(%r9)
	movabsq	$4224500255474849856, %rax      # imm = 0x3AA0709999201840
	movq	%rax, 16(%r10)
	movabsq	$4331968932204929863, %rax      # imm = 0x3C1E3ECAC61A6347
	movq	%rax, 16(%r11)
	xorl	%eax, %eax
	movl	%eax, 8(%r15)
	movl	%eax, 8(%r12)
	cmpl	$2, 452(%rbx)
	jl	.LBB27_4
# %bb.3:
	movl	$5, 8(%r13)
	movq	376(%rbx), %rax
	movq	8(%rax), %rdx
	movq	8(%rdx), %rcx
	movabsq	$4617315517961601024, %r9       # imm = 0x4014000000000000
	movq	%r9, 16(%rcx)
	movq	16(%rax), %rsi
	movq	8(%rsi), %rcx
	movq	$0, 16(%rcx)
	movq	24(%rax), %rdi
	movq	8(%rdi), %rax
	movabsq	$4632233691727265792, %rcx      # imm = 0x4049000000000000
	movq	%rcx, 16(%rax)
	movq	16(%rdx), %rax
	movabsq	$4613937818241073152, %r8       # imm = 0x4008000000000000
	movq	%r8, 16(%rax)
	movq	16(%rsi), %rax
	movabsq	$4642257719335374029, %r8       # imm = 0x406C9CCCCCCCCCCD
	movq	%r8, 16(%rax)
	movq	16(%rdi), %rax
	movq	%rcx, 16(%rax)
	movq	24(%rdx), %rax
	movq	%r14, 16(%rax)
	movq	24(%rsi), %rax
	movabsq	$4644440909623486054, %r8       # imm = 0x40745E6666666666
	movq	%r8, 16(%rax)
	movq	24(%rdi), %rax
	movq	%rcx, 16(%rax)
	movq	32(%rdx), %rax
	movq	%r9, 16(%rax)
	movq	32(%rsi), %rax
	movabsq	$4672004676571365376, %r8       # imm = 0x40D64B8000000000
	movq	%r8, 16(%rax)
	movq	32(%rdi), %rax
	movq	%rcx, 16(%rax)
	movq	40(%rdx), %rax
	movq	%r14, 16(%rax)
	movq	40(%rsi), %rax
	movabsq	$4676915232939966464, %rdx      # imm = 0x40E7BDA000000000
	movq	%rdx, 16(%rax)
	movq	40(%rdi), %rax
	movq	%rcx, 16(%rax)
.LBB27_4:
	movl	424(%rbx), %edx
	testl	%edx, %edx
	js	.LBB27_8
# %bb.5:                                # %.preheader43.lr.ph
	xorl	%eax, %eax
	xorl	%ecx, %ecx
.LBB27_6:                               # %.preheader43
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB27_23 Depth 2
	testl	%edx, %edx
	js	.LBB27_7
# %bb.22:                               # %.lr.ph
                                        #   in Loop: Header=BB27_6 Depth=1
	movq	520(%rbx), %rdx
	movq	528(%rbx), %rdi
	movq	(%rdx,%rcx,8), %rsi
	movq	(%rdi,%rcx,8), %rdi
	movq	$-1, %r9
.LBB27_23:                              #   Parent Loop BB27_6 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	%eax, 4(%rsi,%r9,4)
	movl	%eax, 4(%rdi,%r9,4)
	movl	424(%rbx), %edx
	movslq	%edx, %r8
	incq	%r9
	cmpq	%r8, %r9
	jl	.LBB27_23
	jmp	.LBB27_24
.LBB27_7:                               # %.preheader43.._crit_edge_crit_edge
                                        #   in Loop: Header=BB27_6 Depth=1
	movslq	%edx, %r8
.LBB27_24:                              # %._crit_edge
                                        #   in Loop: Header=BB27_6 Depth=1
	leaq	1(%rcx), %rsi
	cmpq	%r8, %rcx
	movq	%rsi, %rcx
	jl	.LBB27_6
.LBB27_8:                               # %._crit_edge49
	movq	520(%rbx), %rax
	movq	16(%rax), %rax
	movl	$1, %ecx
	movl	%ecx, 8(%rax)
	movq	528(%rbx), %rax
	movq	16(%rax), %rax
	movl	%ecx, 8(%rax)
	movq	400(%rbx), %rax
	movq	8(%rax), %rcx
	movq	16(%rcx), %rcx
	movq	16(%rcx), %rcx
	movabsq	$4585925428558828667, %rdx      # imm = 0x3FA47AE147AE147B
	movq	%rdx, 8(%rcx)
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movabsq	$-4614838538166547251, %rdx     # imm = 0xBFF4CCCCCCCCCCCD
	movq	%rdx, 8(%rax)
	movabsq	$4587366580439587226, %rdx      # imm = 0x3FA999999999999A
	movq	%rdx, 16(%rcx)
	movabsq	$-4615739258092021350, %rcx     # imm = 0xBFF199999999999A
	movq	%rcx, 16(%rax)
	movq	384(%rbx), %rax
	movq	8(%rax), %rcx
	movq	16(%rcx), %rcx
	movabsq	$4662219572839972864, %rdx      # imm = 0x40B3880000000000
	movq	%rdx, 16(%rcx)
	movq	16(%rax), %rax
	movq	16(%rax), %rax
	movabsq	$4669471951536783360, %rcx      # imm = 0x40CD4C0000000000
	movq	%rcx, 16(%rax)
	movl	424(%rbx), %r15d
	testl	%r15d, %r15d
	js	.LBB27_13
# %bb.9:                                # %.preheader42.lr.ph
	xorl	%eax, %eax
.LBB27_10:                              # %.preheader42
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB27_26 Depth 2
	testl	%r15d, %r15d
	js	.LBB27_11
# %bb.25:                               # %.lr.ph52
                                        #   in Loop: Header=BB27_10 Depth=1
	movq	552(%rbx), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rsi
.LBB27_26:                              #   Parent Loop BB27_10 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rsi,4)
	movl	424(%rbx), %r15d
	movslq	%r15d, %rdx
	incq	%rsi
	cmpq	%rdx, %rsi
	jl	.LBB27_26
	jmp	.LBB27_12
.LBB27_11:                              # %.preheader42.._crit_edge53_crit_edge
                                        #   in Loop: Header=BB27_10 Depth=1
	movslq	%r15d, %rdx
.LBB27_12:                              # %._crit_edge53
                                        #   in Loop: Header=BB27_10 Depth=1
	leaq	1(%rax), %rcx
	cmpq	%rdx, %rax
	movq	%rcx, %rax
	jl	.LBB27_10
.LBB27_13:                              # %.preheader41
	movl	444(%rbx), %eax
	leal	1(%r15), %r13d
	leaq	(,%r13,8), %rbx
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	incl	%eax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	xorl	%eax, %eax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
.LBB27_14:                              # %.preheader40
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB27_16 Depth 2
                                        #       Child Loop BB27_18 Depth 3
	cmpl	$0, 24(%rsp)                    # 4-byte Folded Reload
	js	.LBB27_20
# %bb.15:                               # %.preheader39.preheader
                                        #   in Loop: Header=BB27_14 Depth=1
	xorl	%r14d, %r14d
.LBB27_16:                              # %.preheader39
                                        #   Parent Loop BB27_14 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB27_18 Depth 3
	testl	%r15d, %r15d
	js	.LBB27_19
# %bb.17:                               # %.preheader.lr.ph
                                        #   in Loop: Header=BB27_16 Depth=2
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	392(%rax), %rax
	movq	16(%rsp), %rcx                  # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	(%rax,%r14,8), %r12
	xorl	%ebp, %ebp
.LBB27_18:                              # %.preheader
                                        #   Parent Loop BB27_14 Depth=1
                                        #     Parent Loop BB27_16 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r12,%rbp,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%rbp
	cmpq	%rbp, %r13
	jne	.LBB27_18
.LBB27_19:                              # %._crit_edge63
                                        #   in Loop: Header=BB27_16 Depth=2
	incq	%r14
	cmpq	32(%rsp), %r14                  # 8-byte Folded Reload
	jne	.LBB27_16
.LBB27_20:                              # %._crit_edge66
                                        #   in Loop: Header=BB27_14 Depth=1
	movq	16(%rsp), %rcx                  # 8-byte Reload
	incq	%rcx
	movq	%rcx, %rax
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	cmpq	$7, %rcx
	jne	.LBB27_14
# %bb.21:
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	$0, 584(%rax)
	callq	_Z16DERIVED_GAS_DATAv
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.54, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end27:
	.size	_Z11REAL_OXYGENv, .Lfunc_end27-_Z11REAL_OXYGENv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z16DERIVED_GAS_DATAv
.LCPI28_0:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI28_1:
	.quad	0x4004000000000000              # double 2.5
.LCPI28_3:
	.quad	0x402e000000000000              # double 15
.LCPI28_4:
	.quad	0x3ff0000000000000              # double 1
.LCPI28_5:
	.quad	0x3f747ae147ae147b              # double 0.0050000000000000001
.LCPI28_6:
	.quad	0x3ff8000000000000              # double 1.5
.LCPI28_7:
	.quad	0x3f847ae147ae147b              # double 0.01
.LCPI28_8:
	.quad	0x3ddb7cdfd9d7bdbb              # double 1.0E-10
.LCPI28_9:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI28_2:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z16DERIVED_GAS_DATAv
	.type	_Z16DERIVED_GAS_DATAv,@function
_Z16DERIVED_GAS_DATAv:                  # @_Z16DERIVED_GAS_DATAv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$264, %rsp                      # imm = 0x108
	.cfi_def_cfa_offset 320
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$24, %edi
	callq	_Znam
	movq	%rax, %r13
	xorl	%r15d, %r15d
	movq	gas(%rip), %r14
	movq	$-1, %r12
	movq	%rax, 176(%rsp)                 # 8-byte Spill
.LBB28_1:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_3 Depth 2
                                        #       Child Loop BB28_5 Depth 3
	movslq	424(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	%rax, %rbx
	movq	%rax, (%r13,%r15,8)
	movl	424(%r14), %eax
	testl	%eax, %eax
	js	.LBB28_8
# %bb.2:                                # %.lr.ph587.preheader
                                        #   in Loop: Header=BB28_1 Depth=1
	xorl	%r13d, %r13d
.LBB28_3:                               # %.lr.ph587
                                        #   Parent Loop BB28_1 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_5 Depth 3
	cltq
	leaq	8(,%rax,8), %rdi
	cmpl	$-1, %eax
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	%rax, (%rbx,%r13,8)
	cmpl	$0, 424(%r14)
	js	.LBB28_6
# %bb.4:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB28_3 Depth=2
	movq	$-1, %rbp
.LBB28_5:                               # %.lr.ph
                                        #   Parent Loop BB28_1 Depth=1
                                        #     Parent Loop BB28_3 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movslq	456(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	(%rbx,%r13,8), %rcx
	movq	%rax, 8(%rcx,%rbp,8)
	movq	gas(%rip), %r14
	movl	424(%r14), %eax
	movslq	%eax, %rcx
	incq	%rbp
	cmpq	%rcx, %rbp
	jl	.LBB28_5
	jmp	.LBB28_7
.LBB28_6:                               # %.lr.ph587.._crit_edge_crit_edge
                                        #   in Loop: Header=BB28_3 Depth=2
	movl	424(%r14), %eax
	movslq	%eax, %rcx
.LBB28_7:                               # %._crit_edge
                                        #   in Loop: Header=BB28_3 Depth=2
	leaq	1(%r13), %rdx
	cmpq	%rcx, %r13
	movq	%rdx, %r13
	jl	.LBB28_3
.LBB28_8:                               # %._crit_edge588
                                        #   in Loop: Header=BB28_1 Depth=1
	incq	%r15
	cmpq	$3, %r15
	movq	176(%rsp), %r13                 # 8-byte Reload
	jne	.LBB28_1
# %bb.9:
	movslq	456(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	movq	$-1, %rbx
	cmovlq	%rbx, %rdi
	callq	_Znam
	movq	%rax, %r15
	cmpl	$0, 456(%r14)
	js	.LBB28_11
.LBB28_10:                              # %.lr.ph593
                                        # =>This Inner Loop Header: Depth=1
	movl	$24, %edi
	callq	_Znam
	movq	%rax, 8(%r15,%rbx,8)
	movslq	456(%r14), %rax
	incq	%rbx
	cmpq	%rax, %rbx
	jl	.LBB28_10
.LBB28_11:                              # %._crit_edge594
	movq	%r15, 200(%rsp)                 # 8-byte Spill
	movl	$24, %edi
	callq	_Znam
	movq	%rax, 160(%rsp)                 # 8-byte Spill
	xorl	%ebx, %ebx
	movq	$-1, %r12
.LBB28_12:                              # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_14 Depth 2
                                        #       Child Loop BB28_16 Depth 3
                                        #         Child Loop BB28_18 Depth 4
	movslq	444(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	%rax, %r15
	movq	160(%rsp), %rax                 # 8-byte Reload
	movq	%rbx, 8(%rsp)                   # 8-byte Spill
	movq	%r15, (%rax,%rbx,8)
	cmpl	$0, 444(%r14)
	js	.LBB28_22
# %bb.13:                               # %.lr.ph608.preheader
                                        #   in Loop: Header=BB28_12 Depth=1
	xorl	%r13d, %r13d
.LBB28_14:                              # %.lr.ph608
                                        #   Parent Loop BB28_12 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_16 Depth 3
                                        #         Child Loop BB28_18 Depth 4
	movslq	424(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	%rax, (%r15,%r13,8)
	movl	424(%r14), %eax
	testl	%eax, %eax
	js	.LBB28_21
# %bb.15:                               # %.lr.ph603.preheader
                                        #   in Loop: Header=BB28_14 Depth=2
	xorl	%ebp, %ebp
.LBB28_16:                              # %.lr.ph603
                                        #   Parent Loop BB28_12 Depth=1
                                        #     Parent Loop BB28_14 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB28_18 Depth 4
	cltq
	leaq	8(,%rax,8), %rdi
	cmpl	$-1, %eax
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	(%r15,%r13,8), %rcx
	movq	%rax, (%rcx,%rbp,8)
	movq	gas(%rip), %r14
	movslq	424(%r14), %rcx
	testq	%rcx, %rcx
	js	.LBB28_19
# %bb.17:                               # %.lr.ph598.preheader
                                        #   in Loop: Header=BB28_16 Depth=3
	movq	$-1, %rbx
.LBB28_18:                              # %.lr.ph598
                                        #   Parent Loop BB28_12 Depth=1
                                        #     Parent Loop BB28_14 Depth=2
                                        #       Parent Loop BB28_16 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movslq	456(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	cmovlq	%r12, %rdi
	callq	_Znam
	movq	(%r15,%r13,8), %rcx
	movq	(%rcx,%rbp,8), %rcx
	movq	%rax, 8(%rcx,%rbx,8)
	movq	gas(%rip), %r14
	movl	424(%r14), %eax
	movslq	%eax, %rcx
	incq	%rbx
	cmpq	%rcx, %rbx
	jl	.LBB28_18
	jmp	.LBB28_20
.LBB28_19:                              # %.lr.ph603.._crit_edge599_crit_edge
                                        #   in Loop: Header=BB28_16 Depth=3
	movl	%ecx, %eax
.LBB28_20:                              # %._crit_edge599
                                        #   in Loop: Header=BB28_16 Depth=3
	leaq	1(%rbp), %rdx
	cmpq	%rcx, %rbp
	movq	%rdx, %rbp
	jl	.LBB28_16
.LBB28_21:                              # %._crit_edge604
                                        #   in Loop: Header=BB28_14 Depth=2
	leaq	1(%r13), %rax
	movslq	444(%r14), %rcx
	cmpq	%rcx, %r13
	movq	%rax, %r13
	jl	.LBB28_14
.LBB28_22:                              # %._crit_edge609
                                        #   in Loop: Header=BB28_12 Depth=1
	movq	8(%rsp), %rbx                   # 8-byte Reload
	incq	%rbx
	cmpq	$3, %rbx
	jne	.LBB28_12
# %bb.23:
	movslq	456(%r14), %rax
	cmpq	$-1, %rax
	leaq	8(,%rax,8), %rdi
	movq	$-1, %rbx
	cmovlq	%rbx, %rdi
	callq	_Znam
	movq	%rax, %r15
	cmpl	$0, 456(%r14)
	js	.LBB28_25
.LBB28_24:                              # %.lr.ph614
                                        # =>This Inner Loop Header: Depth=1
	movl	$24, %edi
	callq	_Znam
	movq	%rax, 8(%r15,%rbx,8)
	movslq	456(%r14), %rax
	incq	%rbx
	cmpq	%rax, %rbx
	jl	.LBB28_24
.LBB28_25:                              # %._crit_edge615
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.62, %esi
	movl	$24, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rbx
	movl	424(%rbx), %ecx
	testl	%ecx, %ecx
	movq	%r15, 152(%rsp)                 # 8-byte Spill
	jle	.LBB28_43
# %bb.26:                               # %.preheader575.lr.ph
	movl	$1, %eax
.LBB28_27:                              # %.preheader575
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_29 Depth 2
                                        #       Child Loop BB28_32 Depth 3
                                        #       Child Loop BB28_35 Depth 3
                                        #         Child Loop BB28_36 Depth 4
                                        #         Child Loop BB28_38 Depth 4
	testl	%ecx, %ecx
	jle	.LBB28_42
# %bb.28:                               # %.lr.ph627.preheader
                                        #   in Loop: Header=BB28_27 Depth=1
	movl	$1, %edx
.LBB28_29:                              # %.lr.ph627
                                        #   Parent Loop BB28_27 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_32 Depth 3
                                        #       Child Loop BB28_35 Depth 3
                                        #         Child Loop BB28_36 Depth 4
                                        #         Child Loop BB28_38 Depth 4
	cmpq	%rdx, %rax
	jbe	.LBB28_41
# %bb.30:                               #   in Loop: Header=BB28_29 Depth=2
	movq	552(%rbx), %rcx
	movq	(%rcx,%rdx,8), %rsi
	movl	(%rsi,%rax,4), %esi
	movq	(%rcx,%rax,8), %rcx
	movl	%esi, (%rcx,%rdx,4)
	movq	520(%rbx), %rcx
	movq	(%rcx,%rdx,8), %rsi
	movl	(%rsi,%rax,4), %esi
	movq	(%rcx,%rax,8), %rcx
	movl	%esi, (%rcx,%rdx,4)
	movq	528(%rbx), %rcx
	movq	(%rcx,%rdx,8), %rsi
	movl	(%rsi,%rax,4), %esi
	movq	(%rcx,%rax,8), %rcx
	movl	%esi, (%rcx,%rdx,4)
	movl	424(%rbx), %ecx
	testl	%ecx, %ecx
	jle	.LBB28_33
# %bb.31:                               # %.lr.ph619
                                        #   in Loop: Header=BB28_29 Depth=2
	movq	384(%rbx), %rsi
	movq	400(%rbx), %r10
	movq	8(%rsi), %rdi
	movq	16(%rsi), %r9
	movq	(%rdi,%rdx,8), %rsi
	movq	(%rdi,%rax,8), %rdi
	movq	(%r9,%rdx,8), %r8
	movq	(%r9,%rax,8), %r9
	movq	8(%r10), %r11
	movq	16(%r10), %r15
	movq	(%r11,%rdx,8), %r10
	movq	(%r10,%rax,8), %r10
	movq	(%r11,%rax,8), %r11
	movq	(%r11,%rdx,8), %r11
	movq	(%r15,%rdx,8), %r14
	movq	(%r14,%rax,8), %r14
	movq	(%r15,%rax,8), %r15
	movq	(%r15,%rdx,8), %r15
	leaq	1(%rcx), %r12
	movl	$1, %r13d
.LBB28_32:                              #   Parent Loop BB28_27 Depth=1
                                        #     Parent Loop BB28_29 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%rsi,%rax,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%rdi,%rdx,8)
	movsd	(%r8,%rax,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, (%r9,%rdx,8)
	movsd	(%r10,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%r11,%r13,8)
	movsd	(%r14,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%r15,%r13,8)
	incq	%r13
	cmpq	%r13, %r12
	jne	.LBB28_32
.LBB28_33:                              # %.preheader573
                                        #   in Loop: Header=BB28_29 Depth=2
	cmpl	$0, 444(%rbx)
	jle	.LBB28_41
# %bb.34:                               # %.lr.ph624
                                        #   in Loop: Header=BB28_29 Depth=2
	movq	392(%rbx), %rcx
	movq	576(%rbx), %rsi
	movq	584(%rbx), %rdi
	movl	$1, %r8d
.LBB28_35:                              #   Parent Loop BB28_27 Depth=1
                                        #     Parent Loop BB28_29 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB28_36 Depth 4
                                        #         Child Loop BB28_38 Depth 4
	movq	(%rsi,%r8,8), %r9
	movq	(%r9,%rdx,8), %r10
	movl	(%r10,%rax,4), %r10d
	movq	(%r9,%rax,8), %r9
	movl	%r10d, (%r9,%rdx,4)
	movl	$1, %r9d
.LBB28_36:                              #   Parent Loop BB28_27 Depth=1
                                        #     Parent Loop BB28_29 Depth=2
                                        #       Parent Loop BB28_35 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	(%rcx,%r9,8), %r10
	movq	(%r10,%r8,8), %r10
	movq	(%r10,%rdx,8), %r11
	movsd	(%r11,%rax,8), %xmm0            # xmm0 = mem[0],zero
	movq	(%r10,%rax,8), %r10
	movsd	%xmm0, (%r10,%rdx,8)
	incq	%r9
	cmpq	$7, %r9
	jne	.LBB28_36
# %bb.37:                               # %.preheader572
                                        #   in Loop: Header=BB28_35 Depth=3
	movq	(%rdi,%r8,8), %r9
	movl	$1, %r10d
.LBB28_38:                              #   Parent Loop BB28_27 Depth=1
                                        #     Parent Loop BB28_29 Depth=2
                                        #       Parent Loop BB28_35 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	(%r9,%r10,8), %r11
	movq	(%r11,%rdx,8), %r14
	movl	(%r14,%rax,4), %ebp
	movq	(%r11,%rax,8), %r11
	movl	%ebp, (%r11,%rdx,4)
	incq	%r10
	cmpq	$8, %r10
	jne	.LBB28_38
# %bb.39:                               #   in Loop: Header=BB28_35 Depth=3
	leaq	1(%r8), %r9
	movslq	444(%rbx), %r10
	cmpq	%r10, %r8
	movq	%r9, %r8
	jl	.LBB28_35
# %bb.40:                               # %.loopexit574.loopexit
                                        #   in Loop: Header=BB28_29 Depth=2
	movl	424(%rbx), %ecx
.LBB28_41:                              # %.loopexit574
                                        #   in Loop: Header=BB28_29 Depth=2
	leaq	1(%rdx), %rsi
	movslq	%ecx, %rdi
	cmpq	%rdi, %rdx
	movq	%rsi, %rdx
	jl	.LBB28_29
.LBB28_42:                              # %._crit_edge628
                                        #   in Loop: Header=BB28_27 Depth=1
	leaq	1(%rax), %rdx
	movslq	%ecx, %rsi
	cmpq	%rsi, %rax
	movq	%rdx, %rax
	jl	.LBB28_27
.LBB28_43:                              # %._crit_edge631
	cmpl	$0, 428(%rbx)
	jle	.LBB28_50
# %bb.44:                               # %._crit_edge631
	testl	%ecx, %ecx
	jle	.LBB28_50
# %bb.45:                               # %.lr.ph638.preheader
	movl	$1, %r12d
	movsd	.LCPI28_0(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB28_46:                              # %.lr.ph638
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_48 Depth 2
	movq	472(%rbx), %rax
	cmpl	$0, (%rax,%r12,4)
	jle	.LBB28_49
# %bb.47:                               # %.lr.ph634.preheader
                                        #   in Loop: Header=BB28_46 Depth=1
	xorl	%r14d, %r14d
.LBB28_48:                              # %.lr.ph634
                                        #   Parent Loop BB28_46 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	568(%rbx), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	8(%rcx,%r14,8), %rcx
	movslq	(%rcx,%r12,4), %rcx
	movq	8(%rax,%r14,8), %rax
	movslq	(%rax,%r12,4), %rax
	movq	320(%rbx), %rdx
	movq	360(%rbx), %rsi
	movq	48(%rdx), %rdx
	movsd	(%rdx,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%rdx,%rax,8), %xmm0
	subsd	(%rdx,%r12,8), %xmm0
	divsd	%xmm1, %xmm0
	movq	32(%rsi), %rax
	movq	8(%rax,%r14,8), %rax
	movsd	%xmm0, (%rax,%r12,8)
	movl	$file_9+16, %edi
	movl	$.L.str.63, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.64, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	32(%rax), %rax
	movq	8(%rax,%r14,8), %rax
	movsd	(%rax,%r12,8), %xmm0            # xmm0 = mem[0],zero
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movsd	.LCPI28_0(%rip), %xmm1          # xmm1 = mem[0],zero
	movq	gas(%rip), %rbx
	movq	472(%rbx), %rax
	movslq	(%rax,%r12,4), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB28_48
.LBB28_49:                              # %.loopexit569
                                        #   in Loop: Header=BB28_46 Depth=1
	leaq	1(%r12), %rax
	movslq	424(%rbx), %rcx
	cmpq	%rcx, %r12
	movq	%rax, %r12
	jl	.LBB28_46
.LBB28_50:                              # %.loopexit571
	cmpl	$0, 444(%rbx)
	jle	.LBB28_65
# %bb.51:                               # %.loopexit571
	testl	%ecx, %ecx
	jle	.LBB28_65
# %bb.52:                               # %.preheader565.preheader
	movl	$1, %r14d
.LBB28_53:                              # %.preheader565
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_55 Depth 2
                                        #       Child Loop BB28_57 Depth 3
	testl	%ecx, %ecx
	jle	.LBB28_64
# %bb.54:                               # %.preheader564.preheader
                                        #   in Loop: Header=BB28_53 Depth=1
	movl	$1, %r15d
.LBB28_55:                              # %.preheader564
                                        #   Parent Loop BB28_53 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_57 Depth 3
	cmpl	$0, 444(%rbx)
	jle	.LBB28_63
# %bb.56:                               # %.lr.ph641.preheader
                                        #   in Loop: Header=BB28_55 Depth=2
	xorl	%r12d, %r12d
.LBB28_57:                              # %.lr.ph641
                                        #   Parent Loop BB28_53 Depth=1
                                        #     Parent Loop BB28_55 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	584(%rbx), %rax
	movq	8(%rax,%r12,8), %rdx
	movq	24(%rdx), %rax
	movq	(%rax,%r14,8), %rax
	movl	(%rax,%r15,4), %eax
	testl	%eax, %eax
	jle	.LBB28_62
# %bb.58:                               #   in Loop: Header=BB28_57 Depth=3
	movq	32(%rdx), %rcx
	movq	(%rcx,%r14,8), %rcx
	movl	(%rcx,%r15,4), %ecx
	testl	%ecx, %ecx
	jle	.LBB28_62
# %bb.59:                               #   in Loop: Header=BB28_57 Depth=3
	movq	8(%rdx), %rsi
	movq	(%rsi,%r14,8), %rsi
	movl	(%rsi,%r15,4), %esi
	testl	%esi, %esi
	jle	.LBB28_62
# %bb.60:                               #   in Loop: Header=BB28_57 Depth=3
	movq	16(%rdx), %rdx
	movq	(%rdx,%r14,8), %rdx
	movl	(%rdx,%r15,4), %edx
	testl	%edx, %edx
	jle	.LBB28_62
# %bb.61:                               #   in Loop: Header=BB28_57 Depth=3
	movq	320(%rbx), %rdi
	movq	392(%rbx), %r8
	movq	48(%rdi), %rdi
	movsd	(%rdi,%rsi,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%rdi,%rdx,8), %xmm0
	subsd	(%rdi,%rax,8), %xmm0
	subsd	(%rdi,%rcx,8), %xmm0
	movq	24(%r8), %rax
	movq	8(%rax,%r12,8), %rax
	movq	(%rax,%r14,8), %rax
	movsd	%xmm0, (%rax,%r15,8)
	movl	$file_9+16, %edi
	movl	$.L.str.65, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movq	576(%rax), %rax
	movq	8(%rax,%r12,8), %rax
	movq	(%rax,%r14,8), %rax
	movl	(%rax,%r15,4), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.66, %esi
	movl	$17, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movq	392(%rax), %rax
	movq	24(%rax), %rax
	movq	8(%rax,%r12,8), %rax
	movq	(%rax,%r14,8), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rbx
.LBB28_62:                              #   in Loop: Header=BB28_57 Depth=3
	movslq	444(%rbx), %rax
	incq	%r12
	cmpq	%rax, %r12
	jl	.LBB28_57
.LBB28_63:                              # %._crit_edge642
                                        #   in Loop: Header=BB28_55 Depth=2
	leaq	1(%r15), %rax
	movslq	424(%rbx), %rcx
	cmpq	%rcx, %r15
	movq	%rax, %r15
	jl	.LBB28_55
.LBB28_64:                              # %._crit_edge645
                                        #   in Loop: Header=BB28_53 Depth=1
	leaq	1(%r14), %rax
	movslq	424(%rbx), %rcx
	cmpq	%rcx, %r14
	movq	%rax, %r14
	jl	.LBB28_53
.LBB28_65:                              # %.loopexit567
	movl	424(%rbx), %eax
	cmpl	$2, 452(%rbx)
	jl	.LBB28_73
# %bb.66:                               # %.preheader562
	testl	%eax, %eax
	jle	.LBB28_136
# %bb.67:                               # %.lr.ph657
	movq	376(%rbx), %rdx
	movq	480(%rbx), %rcx
	movq	24(%rdx), %rdx
	movq	8(%rdx), %rsi
	leaq	1(%rax), %rdi
	movl	$1, %r8d
.LBB28_68:                              # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_70 Depth 2
	movq	$0, 64(%rsp)
	movl	(%rcx,%r8,4), %r9d
	testl	%r9d, %r9d
	jle	.LBB28_71
# %bb.69:                               # %.lr.ph651
                                        #   in Loop: Header=BB28_68 Depth=1
	leaq	1(%r9), %r10
	xorpd	%xmm0, %xmm0
	movl	$1, %r11d
.LBB28_70:                              #   Parent Loop BB28_68 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rdx,%r11,8), %r14
	addsd	(%r14,%r8,8), %xmm0
	movsd	%xmm0, 64(%rsp)
	incq	%r11
	cmpq	%r11, %r10
	jne	.LBB28_70
	jmp	.LBB28_72
.LBB28_71:                              #   in Loop: Header=BB28_68 Depth=1
	xorpd	%xmm0, %xmm0
.LBB28_72:                              # %._crit_edge652
                                        #   in Loop: Header=BB28_68 Depth=1
	xorps	%xmm1, %xmm1
	cvtsi2sd	%r9d, %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, (%rsi,%r8,8)
	incq	%r8
	cmpq	%rdi, %r8
	jne	.LBB28_68
.LBB28_73:                              # %.loopexit563
	testl	%eax, %eax
	jle	.LBB28_136
# %bb.74:                               # %.preheader561.preheader
	movl	$1, %r13d
.LBB28_75:                              # %.preheader561
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_77 Depth 2
                                        #       Child Loop BB28_80 Depth 3
                                        #         Child Loop BB28_82 Depth 4
                                        #         Child Loop BB28_85 Depth 4
	testl	%eax, %eax
	jle	.LBB28_93
# %bb.76:                               # %.lr.ph677
                                        #   in Loop: Header=BB28_75 Depth=1
	movl	$1, %r15d
	movq	%r13, 88(%rsp)                  # 8-byte Spill
.LBB28_77:                              #   Parent Loop BB28_75 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_80 Depth 3
                                        #         Child Loop BB28_82 Depth 4
                                        #         Child Loop BB28_85 Depth 4
	movq	520(%rbx), %rax
	movq	(%rax,%r13,8), %rax
	movl	(%rax,%r15,4), %r14d
	testl	%r14d, %r14d
	jle	.LBB28_91
# %bb.78:                               #   in Loop: Header=BB28_77 Depth=2
	movq	528(%rbx), %rax
	movq	(%rax,%r13,8), %rax
	movslq	(%rax,%r15,4), %r12
	movl	$file_9+16, %edi
	movl	$.L.str.67, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movl	%r13d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	%r15d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.68, %esi
	movl	$13, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	%r14d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	32(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movsd	(%rcx,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movq	(%rdx,%r12,8), %rcx
	divsd	(%rcx,%r14,8), %xmm0
	cvttsd2si	%xmm0, %ebp
	cmpl	%ebp, 456(%rax)
	jl	.LBB28_135
# %bb.79:                               #   in Loop: Header=BB28_77 Depth=2
	movq	%r13, %rdx
	movq	%r12, 24(%rsp)                  # 8-byte Spill
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movsd	.LCPI28_1(%rip), %xmm0          # xmm0 = mem[0],zero
	movq	%r14, 16(%rsp)                  # 8-byte Spill
	subsd	(%rax,%r14,8), %xmm0
	movsd	%xmm0, 64(%rsp)
	leal	1(%rbp), %r14d
	movl	$1, %r13d
	movq	%rbp, 80(%rsp)                  # 8-byte Spill
	movq	%r14, 56(%rsp)                  # 8-byte Spill
	movq	%r15, 112(%rsp)                 # 8-byte Spill
.LBB28_80:                              #   Parent Loop BB28_75 Depth=1
                                        #     Parent Loop BB28_77 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB28_82 Depth 4
                                        #         Child Loop BB28_85 Depth 4
	xorl	%eax, %eax
	movq	%r13, 96(%rsp)                  # 8-byte Spill
	cmpq	$1, %r13
	movq	gas(%rip), %rcx
	movq	384(%rcx), %rcx
	setne	%al
	movq	8(%rcx,%rax,8), %rax
	movq	%rdx, %r12
	movq	(%rax,%rdx,8), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	movl	$file_9+16, %edi
	movl	$.L.str.72, %esi
	movl	$12, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movsd	32(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	testl	%ebp, %ebp
	js	.LBB28_86
# %bb.81:                               # %.lr.ph662
                                        #   in Loop: Header=BB28_80 Depth=3
	xorpd	%xmm1, %xmm1
	movq	%r14, %rbx
	xorl	%r14d, %r14d
	movq	176(%rsp), %rcx                 # 8-byte Reload
	movq	16(%rsp), %r15                  # 8-byte Reload
	movq	24(%rsp), %rbp                  # 8-byte Reload
	movq	96(%rsp), %r12                  # 8-byte Reload
.LBB28_82:                              #   Parent Loop BB28_75 Depth=1
                                        #     Parent Loop BB28_77 Depth=2
                                        #       Parent Loop BB28_80 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ebx, %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%r15,8), %xmm0
	divsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	%xmm0, 256(%rsp)
	leaq	64(%rsp), %rdi
	leaq	256(%rsp), %rsi
	leaq	168(%rsp), %rdx
	movq	%rcx, %r13
	callq	_Z4CQAXRdS_S_
	movsd	168(%rsp), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, 128(%rsp)                # 8-byte Spill
	xorps	%xmm0, %xmm0
	cvtsi2sd	%r14d, %xmm0
	xorpd	.LCPI28_2(%rip), %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	mulsd	(%rax,%r15,8), %xmm0
	divsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
	callq	exp
	movq	%r13, %rcx
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	128(%rsp), %xmm0                # 8-byte Folded Reload
	movq	(%r13,%r12,8), %rax
	movq	88(%rsp), %rdx                  # 8-byte Reload
	movq	(%rax,%rdx,8), %rax
	movq	112(%rsp), %rdx                 # 8-byte Reload
	movq	(%rax,%rdx,8), %rax
	movsd	%xmm0, (%rax,%r14,8)
	addsd	%xmm0, %xmm1
	incq	%r14
	decq	%rbx
	jne	.LBB28_82
# %bb.83:                               # %._crit_edge663
                                        #   in Loop: Header=BB28_80 Depth=3
	movq	112(%rsp), %r15                 # 8-byte Reload
	movq	88(%rsp), %r12                  # 8-byte Reload
	cmpl	$0, 80(%rsp)                    # 4-byte Folded Reload
	js	.LBB28_87
# %bb.84:                               # %.lr.ph670
                                        #   in Loop: Header=BB28_80 Depth=3
	movq	96(%rsp), %r13                  # 8-byte Reload
	movq	(%rcx,%r13,8), %rax
	movq	%rax, 128(%rsp)                 # 8-byte Spill
	xorpd	%xmm2, %xmm2
	xorl	%ebx, %ebx
	movq	56(%rsp), %r14                  # 8-byte Reload
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
.LBB28_85:                              #   Parent Loop BB28_75 Depth=1
                                        #     Parent Loop BB28_77 Depth=2
                                        #       Parent Loop BB28_80 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	128(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%r12,8), %rax
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
	addsd	%xmm0, %xmm2
	movsd	%xmm2, 32(%rsp)                 # 8-byte Spill
	movq	gas(%rip), %rax
	movq	408(%rax), %rax
	movq	(%rax,%r13,8), %rax
	movq	(%rax,%r12,8), %rax
	movq	(%rax,%r15,8), %rax
	movsd	%xmm2, (%rax,%rbx,8)
	movl	$file_9+16, %edi
	movl	$.L.str.73, %esi
	movl	$17, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movl	%ebx, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbp
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movq	408(%rax), %rax
	movq	(%rax,%r13,8), %rax
	movq	(%rax,%r12,8), %rax
	movq	(%rax,%r15,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	%rbp, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movsd	32(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	incq	%rbx
	cmpq	%rbx, %r14
	jne	.LBB28_85
	jmp	.LBB28_89
.LBB28_86:                              #   in Loop: Header=BB28_80 Depth=3
	xorpd	%xmm2, %xmm2
	jmp	.LBB28_88
.LBB28_87:                              #   in Loop: Header=BB28_80 Depth=3
	xorpd	%xmm2, %xmm2
	movq	56(%rsp), %r14                  # 8-byte Reload
.LBB28_88:                              # %._crit_edge671
                                        #   in Loop: Header=BB28_80 Depth=3
	movq	96(%rsp), %r13                  # 8-byte Reload
.LBB28_89:                              # %._crit_edge671
                                        #   in Loop: Header=BB28_80 Depth=3
	movq	%r12, %rdx
	movsd	%xmm2, 168(%rsp)
	incq	%r13
	cmpq	$3, %r13
	movq	80(%rsp), %rbp                  # 8-byte Reload
	jne	.LBB28_80
# %bb.90:                               # %.loopexit560.loopexit
                                        #   in Loop: Header=BB28_77 Depth=2
	movq	gas(%rip), %rbx
	movq	%rdx, %r13
.LBB28_91:                              # %.loopexit560
                                        #   in Loop: Header=BB28_77 Depth=2
	leaq	1(%r15), %rax
	movslq	424(%rbx), %rcx
	cmpq	%rcx, %r15
	movq	%rax, %r15
	jl	.LBB28_77
# %bb.92:                               # %._crit_edge678.loopexit
                                        #   in Loop: Header=BB28_75 Depth=1
	movl	424(%rbx), %eax
.LBB28_93:                              # %._crit_edge678
                                        #   in Loop: Header=BB28_75 Depth=1
	leaq	1(%r13), %rcx
	movslq	%eax, %rdx
	cmpq	%rdx, %r13
	movq	%rcx, %r13
	jl	.LBB28_75
# %bb.94:                               # %.preheader558
	testl	%eax, %eax
	jle	.LBB28_136
# %bb.95:                               # %.preheader557.preheader
	movl	$1, %r12d
.LBB28_96:                              # %.preheader557
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB28_98 Depth 2
                                        #       Child Loop BB28_100 Depth 3
                                        #         Child Loop BB28_102 Depth 4
                                        #           Child Loop BB28_104 Depth 5
                                        #             Child Loop BB28_105 Depth 6
                                        #               Child Loop BB28_107 Depth 7
                                        #         Child Loop BB28_113 Depth 4
                                        #         Child Loop BB28_115 Depth 4
                                        #           Child Loop BB28_117 Depth 5
                                        #             Child Loop BB28_118 Depth 6
                                        #         Child Loop BB28_122 Depth 4
                                        #           Child Loop BB28_124 Depth 5
	testl	%eax, %eax
	jle	.LBB28_134
# %bb.97:                               # %.lr.ph733
                                        #   in Loop: Header=BB28_96 Depth=1
	movl	$1, %r13d
	movq	%r12, 16(%rsp)                  # 8-byte Spill
.LBB28_98:                              #   Parent Loop BB28_96 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB28_100 Depth 3
                                        #         Child Loop BB28_102 Depth 4
                                        #           Child Loop BB28_104 Depth 5
                                        #             Child Loop BB28_105 Depth 6
                                        #               Child Loop BB28_107 Depth 7
                                        #         Child Loop BB28_113 Depth 4
                                        #         Child Loop BB28_115 Depth 4
                                        #           Child Loop BB28_117 Depth 5
                                        #             Child Loop BB28_118 Depth 6
                                        #         Child Loop BB28_122 Depth 4
                                        #           Child Loop BB28_124 Depth 5
	movq	552(%rbx), %rax
	movq	(%rax,%r12,8), %rax
	cmpl	$0, (%rax,%r13,4)
	jle	.LBB28_132
# %bb.99:                               # %.lr.ph721.preheader
                                        #   in Loop: Header=BB28_98 Depth=2
	movl	$1, %r15d
	movq	%r13, 24(%rsp)                  # 8-byte Spill
.LBB28_100:                             # %.lr.ph721
                                        #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB28_102 Depth 4
                                        #           Child Loop BB28_104 Depth 5
                                        #             Child Loop BB28_105 Depth 6
                                        #               Child Loop BB28_107 Depth 7
                                        #         Child Loop BB28_113 Depth 4
                                        #         Child Loop BB28_115 Depth 4
                                        #           Child Loop BB28_117 Depth 5
                                        #             Child Loop BB28_118 Depth 6
                                        #         Child Loop BB28_122 Depth 4
                                        #           Child Loop BB28_124 Depth 5
	movq	392(%rbx), %rax
	movq	24(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	.LCPI28_9(%rip), %xmm0
	jbe	.LBB28_129
# %bb.101:                              #   in Loop: Header=BB28_100 Depth=3
	movl	$file_9+16, %edi
	movl	$.L.str.67, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movl	%r12d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$1, %ebp
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	%r13d, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.74, %esi
	movl	$17, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	(%rbx), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movq	584(%rax), %rcx
	movq	(%rcx,%r15,8), %rcx
	movq	24(%rcx), %rdx
	movq	32(%rcx), %rsi
	movq	(%rdx,%r12,8), %rdx
	movslq	(%rdx,%r13,4), %r14
	movq	(%rsi,%r12,8), %rdx
	movslq	(%rdx,%r13,4), %rdi
	movq	360(%rax), %rdx
	movq	392(%rax), %rax
	movq	24(%rax), %rsi
	movq	48(%rax), %rax
	movq	(%rsi,%r15,8), %rsi
	movq	(%rsi,%r12,8), %rsi
	movsd	(%rsi,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movq	(%rax,%r15,8), %rax
	movq	(%rax,%r14,8), %rax
	movq	%rdi, 208(%rsp)                 # 8-byte Spill
	addsd	(%rax,%rdi,8), %xmm0
	movq	8(%rdx), %rax
	movq	40(%rcx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movslq	(%rcx,%r13,4), %rcx
	movq	(%rax,%rcx,8), %rax
	movsd	(%rax,%r14,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	.LCPI28_0(%rip), %xmm1
	divsd	%xmm1, %xmm0
	addsd	.LCPI28_3(%rip), %xmm0
	cvttsd2si	%xmm0, %eax
	movq	%rax, 72(%rsp)                  # 8-byte Spill
	incl	%eax
	movq	%rax, 56(%rsp)                  # 8-byte Spill
.LBB28_102:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB28_104 Depth 5
                                        #             Child Loop BB28_105 Depth 6
                                        #               Child Loop BB28_107 Depth 7
	xorl	%eax, %eax
	cmpq	$1, %rbp
	sete	%cl
	cmpl	$0, 72(%rsp)                    # 4-byte Folded Reload
	js	.LBB28_110
# %bb.103:                              # %.lr.ph696
                                        #   in Loop: Header=BB28_102 Depth=4
	movb	%cl, %al
	xorl	$5, %eax
	movq	gas(%rip), %rcx
	movq	392(%rcx), %rcx
	movq	(%rcx,%rax,8), %rax
	movq	(%rax,%r15,8), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 224(%rsp)                # 8-byte Spill
	mulsd	.LCPI28_0(%rip), %xmm0
	movsd	%xmm0, 216(%rsp)                # 8-byte Spill
	xorl	%ebx, %ebx
	movq	%rbp, 232(%rsp)                 # 8-byte Spill
.LBB28_104:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_102 Depth=4
                                        # =>        This Loop Header: Depth=5
                                        #             Child Loop BB28_105 Depth 6
                                        #               Child Loop BB28_107 Depth 7
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	392(%rax), %rdx
	movq	24(%rdx), %rsi
	movq	48(%rdx), %rdx
	movq	(%rsi,%r15,8), %rsi
	movq	(%rsi,%r12,8), %rsi
	movsd	(%rsi,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movq	(%rdx,%r15,8), %rdx
	movq	(%rdx,%r14,8), %rdx
	movq	208(%rsp), %rsi                 # 8-byte Reload
	addsd	(%rdx,%rsi,8), %xmm0
	divsd	216(%rsp), %xmm0                # 8-byte Folded Reload
	movapd	%xmm0, 96(%rsp)                 # 16-byte Spill
	movq	8(%rcx), %rcx
	movq	584(%rax), %rax
	movq	(%rax,%r15,8), %rax
	movq	40(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movslq	(%rax,%r13,4), %rax
	movq	(%rcx,%rax,8), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	divsd	224(%rsp), %xmm0                # 8-byte Folded Reload
	movapd	%xmm0, 32(%rsp)                 # 16-byte Spill
	movapd	.LCPI28_2(%rip), %xmm1          # xmm1 = [-0.0E+0,-0.0E+0]
	xorpd	%xmm1, %xmm0
	callq	exp
	movsd	.LCPI28_4(%rip), %xmm1          # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movsd	%xmm1, 248(%rsp)                # 8-byte Spill
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movsd	.LCPI28_1(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	(%rax,%r14,8), %xmm0
	callq	tgamma
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movapd	96(%rsp), %xmm0                 # 16-byte Reload
	xorpd	.LCPI28_2(%rip), %xmm0
	callq	exp
	movapd	32(%rsp), %xmm2                 # 16-byte Reload
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ebx, %xmm1
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 240(%rsp)                # 8-byte Spill
	movapd	%xmm2, %xmm3
	movsd	%xmm1, 80(%rsp)                 # 8-byte Spill
	mulsd	%xmm1, %xmm3
	movapd	96(%rsp), %xmm0                 # 16-byte Reload
	movapd	%xmm3, 176(%rsp)                # 16-byte Spill
	subsd	%xmm3, %xmm0
	xorpd	%xmm3, %xmm3
	xorpd	%xmm4, %xmm4
	maxsd	%xmm0, %xmm4
	movsd	.LCPI28_5(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB28_105:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_102 Depth=4
                                        #           Parent Loop BB28_104 Depth=5
                                        # =>          This Loop Header: Depth=6
                                        #               Child Loop BB28_107 Depth 7
	movsd	%xmm3, 88(%rsp)                 # 8-byte Spill
	addsd	%xmm1, %xmm4
	movapd	%xmm4, %xmm0
	divsd	%xmm2, %xmm0
	addsd	80(%rsp), %xmm0                 # 8-byte Folded Reload
	cvttsd2si	%xmm0, %r12d
	movapd	176(%rsp), %xmm3                # 16-byte Reload
	movapd	%xmm4, 112(%rsp)                # 16-byte Spill
	addsd	%xmm4, %xmm3
	xorpd	%xmm1, %xmm1
	testl	%r12d, %r12d
	movsd	.LCPI28_4(%rip), %xmm4          # xmm4 = mem[0],zero
	movsd	.LCPI28_6(%rip), %xmm2          # xmm2 = mem[0],zero
	js	.LBB28_108
# %bb.106:                              # %.lr.ph688.preheader
                                        #   in Loop: Header=BB28_105 Depth=6
	incl	%r12d
	xorl	%ebp, %ebp
	movapd	%xmm3, 128(%rsp)                # 16-byte Spill
.LBB28_107:                             # %.lr.ph688
                                        #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_102 Depth=4
                                        #           Parent Loop BB28_104 Depth=5
                                        #             Parent Loop BB28_105 Depth=6
                                        # =>            This Inner Loop Header: Depth=7
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ebp, %xmm1
	mulsd	32(%rsp), %xmm1                 # 16-byte Folded Reload
	divsd	%xmm3, %xmm1
	movapd	%xmm4, %xmm0
	subsd	%xmm1, %xmm0
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movapd	%xmm2, %xmm1
	subsd	(%rax,%r14,8), %xmm1
	callq	pow
	movsd	.LCPI28_4(%rip), %xmm4          # xmm4 = mem[0],zero
	movapd	128(%rsp), %xmm3                # 16-byte Reload
	movsd	.LCPI28_6(%rip), %xmm2          # xmm2 = mem[0],zero
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	incl	%ebp
	cmpl	%ebp, %r12d
	jne	.LBB28_107
.LBB28_108:                             # %._crit_edge689
                                        #   in Loop: Header=BB28_105 Depth=6
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movapd	96(%rsp), %xmm1                 # 16-byte Reload
	divsd	%xmm3, %xmm1
	movapd	%xmm4, %xmm0
	subsd	%xmm1, %xmm0
	mulsd	112(%rsp), %xmm0                # 16-byte Folded Reload
	movq	gas(%rip), %rax
	movq	320(%rax), %rax
	movq	24(%rax), %rax
	movapd	%xmm2, %xmm1
	subsd	(%rax,%r14,8), %xmm1
	callq	pow
	divsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movapd	112(%rsp), %xmm0                # 16-byte Reload
	xorpd	.LCPI28_2(%rip), %xmm0
	callq	exp
	movapd	112(%rsp), %xmm4                # 16-byte Reload
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movapd	%xmm0, %xmm1
	mulsd	.LCPI28_7(%rip), %xmm1
	movsd	88(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	addsd	%xmm1, %xmm3
	divsd	%xmm3, %xmm0
	movsd	%xmm0, 64(%rsp)
	movsd	.LCPI28_5(%rip), %xmm1          # xmm1 = mem[0],zero
	addsd	%xmm1, %xmm4
	ucomisd	.LCPI28_8(%rip), %xmm0
	movapd	32(%rsp), %xmm2                 # 16-byte Reload
	ja	.LBB28_105
# %bb.109:                              #   in Loop: Header=BB28_104 Depth=5
	movsd	.LCPI28_4(%rip), %xmm0          # xmm0 = mem[0],zero
	divsd	248(%rsp), %xmm0                # 8-byte Folded Reload
	divsd	240(%rsp), %xmm0                # 8-byte Folded Reload
	mulsd	%xmm3, %xmm0
	movq	160(%rsp), %rax                 # 8-byte Reload
	movq	232(%rsp), %rbp                 # 8-byte Reload
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r15,8), %rax
	movq	16(%rsp), %r12                  # 8-byte Reload
	movq	(%rax,%r12,8), %rax
	movq	(%rax,%r13,8), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	incq	%rbx
	cmpq	56(%rsp), %rbx                  # 8-byte Folded Reload
	jne	.LBB28_104
.LBB28_110:                             # %._crit_edge697
                                        #   in Loop: Header=BB28_102 Depth=4
	incq	%rbp
	cmpq	$3, %rbp
	jne	.LBB28_102
# %bb.111:                              # %.preheader554
                                        #   in Loop: Header=BB28_100 Depth=3
	movq	gas(%rip), %rax
	movl	456(%rax), %r12d
	testl	%r12d, %r12d
	movq	152(%rsp), %r13                 # 8-byte Reload
	js	.LBB28_114
# %bb.112:                              # %.preheader551.preheader
                                        #   in Loop: Header=BB28_100 Depth=3
	leaq	8(,%r12,8), %rbx
	incq	%r12
	xorl	%ebp, %ebp
.LBB28_113:                             # %.preheader551
                                        #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movq	(%r13,%rbp,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%rbp
	cmpq	%rbp, %r12
	jne	.LBB28_113
.LBB28_114:                             # %.preheader553
                                        #   in Loop: Header=BB28_100 Depth=3
	movl	$1, %ebx
	movq	%r15, 8(%rsp)                   # 8-byte Spill
.LBB28_115:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB28_117 Depth 5
                                        #             Child Loop BB28_118 Depth 6
	xorl	%eax, %eax
	cmpq	$1, %rbx
	sete	%cl
	cmpl	$0, 72(%rsp)                    # 4-byte Folded Reload
	js	.LBB28_120
# %bb.116:                              # %.lr.ph710
                                        #   in Loop: Header=BB28_115 Depth=4
	movb	%cl, %al
	xorl	$5, %eax
	movq	gas(%rip), %rcx
	movq	392(%rcx), %rcx
	movq	(%rcx,%rax,8), %rax
	movq	(%rax,%r15,8), %rax
	movq	16(%rsp), %rcx                  # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	24(%rsp), %rcx                  # 8-byte Reload
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	movq	160(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%rbx,8), %rax
	movq	%rax, 112(%rsp)                 # 8-byte Spill
	movl	$1, %ebp
	xorl	%r12d, %r12d
.LBB28_117:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_115 Depth=4
                                        # =>        This Loop Header: Depth=5
                                        #             Child Loop BB28_118 Depth 6
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	584(%rax), %rax
	movq	8(%rcx), %rcx
	movq	(%rax,%r15,8), %rax
	movq	40(%rax), %rax
	movq	16(%rsp), %rdx                  # 8-byte Reload
	movq	(%rax,%rdx,8), %rax
	movq	%rdx, %r13
	movq	24(%rsp), %rdx                  # 8-byte Reload
	movslq	(%rax,%rdx,4), %rax
	movq	(%rcx,%rax,8), %rax
	movsd	(%rax,%r14,8), %xmm0            # xmm0 = mem[0],zero
	xorpd	.LCPI28_2(%rip), %xmm0
	divsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
	callq	exp
	movsd	.LCPI28_4(%rip), %xmm2          # xmm2 = mem[0],zero
	movapd	%xmm2, %xmm1
	subsd	%xmm0, %xmm1
	divsd	%xmm1, %xmm2
	movsd	%xmm2, 128(%rsp)                # 8-byte Spill
	movl	%r12d, %eax
	negl	%eax
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rcx
	movq	584(%rax), %rax
	movq	8(%rcx), %rcx
	movq	(%rax,%r15,8), %rax
	movq	40(%rax), %rax
	movq	(%rax,%r13,8), %rax
	movq	24(%rsp), %r13                  # 8-byte Reload
	movslq	(%rax,%r13,4), %rax
	movq	(%rcx,%rax,8), %rax
	mulsd	(%rax,%r14,8), %xmm0
	divsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
	callq	exp
	divsd	128(%rsp), %xmm0                # 8-byte Folded Reload
	movq	200(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%r12,8), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	movq	112(%rsp), %rax                 # 8-byte Reload
	movq	(%rax,%r15,8), %rax
	movq	16(%rsp), %rcx                  # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	(%rax,%r13,8), %rax
	mulsd	(%rax,%r12,8), %xmm0
	movsd	%xmm0, (%rax,%r12,8)
	movq	152(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx,%r12,8), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	xorl	%edx, %edx
.LBB28_118:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_115 Depth=4
                                        #           Parent Loop BB28_117 Depth=5
                                        # =>          This Inner Loop Header: Depth=6
	addsd	(%rax,%rdx,8), %xmm0
	movsd	%xmm0, (%rcx,%rbx,8)
	incq	%rdx
	cmpq	%rdx, %rbp
	jne	.LBB28_118
# %bb.119:                              #   in Loop: Header=BB28_117 Depth=5
	incq	%r12
	incq	%rbp
	cmpq	56(%rsp), %r12                  # 8-byte Folded Reload
	movq	8(%rsp), %r15                   # 8-byte Reload
	jne	.LBB28_117
.LBB28_120:                             # %._crit_edge711
                                        #   in Loop: Header=BB28_115 Depth=4
	incq	%rbx
	cmpq	$3, %rbx
	jne	.LBB28_115
# %bb.121:                              # %.preheader552
                                        #   in Loop: Header=BB28_100 Depth=3
	movl	72(%rsp), %eax                  # 4-byte Reload
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	movl	$1, %ebp
	movq	152(%rsp), %r12                 # 8-byte Reload
	movsd	.LCPI28_4(%rip), %xmm0          # xmm0 = mem[0],zero
	movq	24(%rsp), %r13                  # 8-byte Reload
.LBB28_122:                             # %.preheader
                                        #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        # =>      This Loop Header: Depth=4
                                        #           Child Loop BB28_124 Depth 5
	cmpl	$0, 72(%rsp)                    # 4-byte Folded Reload
	js	.LBB28_127
# %bb.123:                              # %.lr.ph715
                                        #   in Loop: Header=BB28_122 Depth=4
	xorl	%ebx, %ebx
.LBB28_124:                             #   Parent Loop BB28_96 Depth=1
                                        #     Parent Loop BB28_98 Depth=2
                                        #       Parent Loop BB28_100 Depth=3
                                        #         Parent Loop BB28_122 Depth=4
                                        # =>        This Inner Loop Header: Depth=5
	cmpq	%rbx, 32(%rsp)                  # 8-byte Folded Reload
	je	.LBB28_126
# %bb.125:                              #   in Loop: Header=BB28_124 Depth=5
	movq	(%r12,%rbx,8), %rax
	movsd	(%rax,%rbp,8), %xmm0            # xmm0 = mem[0],zero
.LBB28_126:                             #   in Loop: Header=BB28_124 Depth=5
	movq	gas(%rip), %rax
	movq	416(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r15,8), %rax
	movq	16(%rsp), %r13                  # 8-byte Reload
	movq	(%rax,%r13,8), %rax
	movq	24(%rsp), %r15                  # 8-byte Reload
	movq	(%rax,%r15,8), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	movl	$file_9+16, %edi
	movl	$.L.str.75, %esi
	movl	$11, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$file_9+16, %edi
	movl	%ebp, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%r14, %rdi
	movl	%ebx, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movq	416(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movq	8(%rsp), %rcx                   # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	(%rax,%r13,8), %rax
	movq	%r15, %r13
	movq	8(%rsp), %r15                   # 8-byte Reload
	movq	(%rax,%r13,8), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	incq	%rbx
	cmpq	%rbx, 56(%rsp)                  # 8-byte Folded Reload
	movsd	.LCPI28_4(%rip), %xmm0          # xmm0 = mem[0],zero
	jne	.LBB28_124
.LBB28_127:                             # %._crit_edge716
                                        #   in Loop: Header=BB28_122 Depth=4
	incq	%rbp
	cmpq	$3, %rbp
	jne	.LBB28_122
# %bb.128:                              # %.loopexit.loopexit
                                        #   in Loop: Header=BB28_100 Depth=3
	movq	gas(%rip), %rbx
	movq	16(%rsp), %r12                  # 8-byte Reload
.LBB28_129:                             # %.loopexit
                                        #   in Loop: Header=BB28_100 Depth=3
	leaq	1(%r15), %rax
	movq	552(%rbx), %rcx
	movq	(%rcx,%r12,8), %rcx
	movslq	(%rcx,%r13,4), %rcx
	cmpq	%rcx, %r15
	movq	%rax, %r15
	jl	.LBB28_100
# %bb.130:                              # %._crit_edge722
                                        #   in Loop: Header=BB28_98 Depth=2
	movq	$0, 560(%rbx)
	movl	424(%rbx), %eax
	testl	%eax, %eax
	js	.LBB28_132
# %bb.131:                              # %.lr.ph728
                                        #   in Loop: Header=BB28_98 Depth=2
	movq	296(%rbx), %rdi
	leaq	8(,%rax,8), %rdx
	xorl	%esi, %esi
	callq	memset@PLT
.LBB28_132:                             # %.loopexit555
                                        #   in Loop: Header=BB28_98 Depth=2
	leaq	1(%r13), %rax
	movslq	424(%rbx), %rcx
	cmpq	%rcx, %r13
	movq	%rax, %r13
	jl	.LBB28_98
# %bb.133:                              # %._crit_edge734.loopexit
                                        #   in Loop: Header=BB28_96 Depth=1
	movl	424(%rbx), %eax
.LBB28_134:                             # %._crit_edge734
                                        #   in Loop: Header=BB28_96 Depth=1
	leaq	1(%r12), %rcx
	movslq	%eax, %rdx
	cmpq	%rdx, %r12
	movq	%rcx, %r12
	jl	.LBB28_96
	jmp	.LBB28_136
.LBB28_135:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.69, %esi
	movl	$20, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	gas(%rip), %rax
	movl	456(%rax), %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movl	$.L.str.70, %esi
	movl	$41, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	%rbx, %rdi
	movl	%ebp, %esi
	callq	_ZNSolsEi
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$_ZSt4cout, %edi
	movl	$.L.str.71, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	leaq	64(%rsp), %rsi
	movl	$_ZSt3cin, %edi
	callq	_ZNSi10_M_extractIdEERSiRT_
.LBB28_136:                             # %.loopexit559
	addq	$264, %rsp                      # imm = 0x108
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end28:
	.size	_Z16DERIVED_GAS_DATAv, .Lfunc_end28-_Z16DERIVED_GAS_DATAv
	.cfi_endproc
                                        # -- End function
	.globl	_Z9IDEAL_AIRv                   # -- Begin function _Z9IDEAL_AIRv
	.type	_Z9IDEAL_AIRv,@function
_Z9IDEAL_AIRv:                          # @_Z9IDEAL_AIRv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.55, %esi
	movl	$22, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movq	$2, 424(%rax)
	movl	$1, %ecx
	movq	%rcx, 432(%rax)
	movq	$0, 444(%rax)
	movq	%rcx, 452(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466436156034121505, %rsi      # imm = 0x3DFBF8050C5FFF21
	movq	%rsi, 8(%rdx)
	movq	16(%rcx), %rsi
	movabsq	$4643510282981736448, %rdi      # imm = 0x4071100000000000
	movq	%rdi, 8(%rsi)
	movq	24(%rcx), %r8
	movabsq	$4605110762971426980, %r9       # imm = 0x3FE8A3D70A3D70A4
	movq	%r9, 8(%r8)
	movq	32(%rcx), %r9
	movabsq	$4607182418800017408, %r10      # imm = 0x3FF0000000000000
	movq	%r10, 8(%r9)
	movq	40(%rcx), %rcx
	movabsq	$4229003855102220352, %r11      # imm = 0x3AB0709999201840
	movq	%r11, 8(%rcx)
	movq	488(%rax), %r11
	movq	8(%r11), %r14
	movl	$2, %ebp
	movl	%ebp, 4(%r14)
	movq	16(%r11), %r11
	xorl	%r15d, %r15d
	movl	%r15d, 4(%r11)
	movq	328(%rax), %rax
	movq	8(%rax), %rax
	movabsq	$4617315517961601024, %r12      # imm = 0x4014000000000000
	movq	%r12, 8(%rax)
	movabsq	$4466629584165259846, %r13      # imm = 0x3DFCA7F10B6BCA46
	movq	%r13, 16(%rdx)
	movq	%rdi, 16(%rsi)
	movabsq	$4604840546993784750, %rdx      # imm = 0x3FE7AE147AE147AE
	movq	%rdx, 16(%r8)
	movq	%r10, 16(%r9)
	movabsq	$4227974293437808455, %rdx      # imm = 0x3AACC83817D7FF47
	movq	%rdx, 16(%rcx)
	movl	%ebp, 8(%r14)
	movl	%r15d, 8(%r11)
	movq	%r12, 16(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.56, %esi
	movl	$19, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end29:
	.size	_Z9IDEAL_AIRv, .Lfunc_end29-_Z9IDEAL_AIRv
	.cfi_endproc
                                        # -- End function
	.globl	_Z8REAL_AIRv                    # -- Begin function _Z8REAL_AIRv
	.type	_Z8REAL_AIRv,@function
_Z8REAL_AIRv:                           # @_Z8REAL_AIRv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$216, %rsp
	.cfi_def_cfa_offset 272
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.57, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movabsq	$4294967301, %rcx               # imm = 0x100000005
	movq	%rcx, 424(%rax)
	movq	$1, 432(%rax)
	movabsq	$171798691845, %rcx             # imm = 0x2800000005
	movq	%rcx, 452(%rax)
	movabsq	$17179869185, %rcx              # imm = 0x400000001
	movq	%rcx, 444(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	8(%rcx), %r11
	movabsq	$4466436156034121505, %rdx      # imm = 0x3DFBF8050C5FFF21
	movq	%rdx, 8(%r11)
	movq	%r11, 96(%rsp)                  # 8-byte Spill
	movq	16(%rcx), %rdx
	movq	%rdx, 24(%rsp)                  # 8-byte Spill
	movabsq	$4643510282981736448, %rsi      # imm = 0x4071100000000000
	movq	%rsi, 8(%rdx)
	movq	24(%rcx), %rsi
	movq	%rsi, 200(%rsp)                 # 8-byte Spill
	movabsq	$4605110762971426980, %rdx      # imm = 0x3FE8A3D70A3D70A4
	movq	%rdx, 8(%rsi)
	movq	32(%rcx), %rdx
	movq	%rdx, 80(%rsp)                  # 8-byte Spill
	movabsq	$4607182418800017408, %r15      # imm = 0x3FF0000000000000
	movq	%r15, 8(%rdx)
	movq	40(%rcx), %rbx
	movabsq	$4229003855102220352, %rdx      # imm = 0x3AB0709999201840
	movq	%rdx, 8(%rbx)
	movq	48(%rcx), %r14
	xorl	%r9d, %r9d
	movq	%r9, 8(%r14)
	movq	488(%rax), %rcx
	movq	8(%rcx), %rsi
	movq	%rsi, 192(%rsp)                 # 8-byte Spill
	movl	$2, %edx
	movl	%edx, 4(%rsi)
	movq	16(%rcx), %rcx
	movq	%rcx, (%rsp)                    # 8-byte Spill
	movl	%r9d, 4(%rcx)
	movq	328(%rax), %rcx
	movq	8(%rcx), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movabsq	$4617315517961601024, %rdx      # imm = 0x4014000000000000
	movq	%rdx, 8(%rcx)
	movq	472(%rax), %rcx
	movq	%rcx, 72(%rsp)                  # 8-byte Spill
	movl	$1, %edx
	movl	%edx, 4(%rcx)
	movq	360(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	8(%rdx), %rbp
	movabsq	$4657179411538247680, %rdx      # imm = 0x40A1A00000000000
	movq	%rdx, 8(%rbp)
	movq	%rbp, 208(%rsp)                 # 8-byte Spill
	movq	16(%rcx), %rsi
	movq	8(%rsi), %rdi
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	movabsq	$4670677016280825856, %rsi      # imm = 0x40D1940000000000
	movq	%rsi, 8(%rdi)
	movq	24(%rcx), %rsi
	movq	8(%rsi), %r8
	movq	%rdx, 8(%r8)
	movq	40(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	%rcx, 152(%rsp)                 # 8-byte Spill
	movq	%r15, 8(%rcx)
	movq	568(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	8(%rdx), %rsi
	movq	%rsi, 128(%rsp)                 # 8-byte Spill
	movl	$3, %edx
	movl	%edx, 4(%rsi)
	movq	16(%rcx), %rcx
	movq	8(%rcx), %r10
	movl	%edx, 4(%r10)
	movq	480(%rax), %rcx
	movq	%rcx, 56(%rsp)                  # 8-byte Spill
	movl	%edx, 4(%rcx)
	movq	376(%rax), %rcx
	movq	8(%rcx), %rdx
	movq	%rdx, 168(%rsp)                 # 8-byte Spill
	movq	8(%rdx), %rax
	movq	%rax, 48(%rsp)                  # 8-byte Spill
	movabsq	$4613937818241073152, %rsi      # imm = 0x4008000000000000
	movq	%rsi, 8(%rax)
	movq	16(%rcx), %rsi
	movq	%rsi, 176(%rsp)                 # 8-byte Spill
	movq	8(%rsi), %rax
	movq	%rax, 40(%rsp)                  # 8-byte Spill
	movq	%r9, 8(%rax)
	movq	24(%rcx), %rdi
	movq	%rdi, 160(%rsp)                 # 8-byte Spill
	movq	8(%rdi), %rax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	movabsq	$4632233691727265792, %r13      # imm = 0x4049000000000000
	movq	%r13, 8(%rax)
	movq	16(%rdx), %rcx
	movq	%rcx, 184(%rsp)                 # 8-byte Spill
	movabsq	$4611686018427387904, %rax      # imm = 0x4000000000000000
	movq	%rax, 8(%rcx)
	movq	16(%rsi), %rax
	movq	%rax, 144(%rsp)                 # 8-byte Spill
	movabsq	$4667488982316089344, %r12      # imm = 0x40C6408000000000
	movq	%r12, 8(%rax)
	movq	16(%rdi), %rax
	movq	%rax, 136(%rsp)                 # 8-byte Spill
	movq	%r13, 8(%rax)
	movq	24(%rdx), %rax
	movq	%rax, 120(%rsp)                 # 8-byte Spill
	movq	%r15, 8(%rax)
	movq	24(%rsi), %rax
	movq	%rax, 64(%rsp)                  # 8-byte Spill
	movabsq	$4670947771019165696, %r12      # imm = 0x40D28A4000000000
	movq	%r12, 8(%rax)
	movq	24(%rdi), %rax
	movq	%rax, 112(%rsp)                 # 8-byte Spill
	movq	%r13, 8(%rax)
	movabsq	$4466629584165259846, %r13      # imm = 0x3DFCA7F10B6BCA46
	movq	%r13, 16(%r11)
	movq	24(%rsp), %r11                  # 8-byte Reload
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	%rax, 16(%r11)
	movabsq	$4604840546993784750, %r13      # imm = 0x3FE7AE147AE147AE
	movq	200(%rsp), %rdx                 # 8-byte Reload
	movq	%r13, 16(%rdx)
	movq	80(%rsp), %rcx                  # 8-byte Reload
	movq	%r15, %rsi
	movq	%r15, 16(%rcx)
	movabsq	$4227974293437808455, %r13      # imm = 0x3AACC83817D7FF47
	movq	%rbx, %rdi
	movq	%rbx, 104(%rsp)                 # 8-byte Spill
	movq	%r13, 16(%rbx)
	movq	%r9, 16(%r14)
	movq	192(%rsp), %r15                 # 8-byte Reload
	movl	$2, %eax
	movl	%eax, 8(%r15)
	movq	(%rsp), %rax                    # 8-byte Reload
	movl	%r9d, 8(%rax)
	movq	16(%rsp), %r12                  # 8-byte Reload
	movabsq	$4617315517961601024, %rax      # imm = 0x4014000000000000
	movq	%rax, 16(%r12)
	movl	$1, %r12d
	movq	72(%rsp), %rax                  # 8-byte Reload
	movl	%r12d, 8(%rax)
	movabsq	$4659631322468188160, %r13      # imm = 0x40AA560000000000
	movq	%r13, 16(%rbp)
	movabsq	$4677379639163748352, %rbp      # imm = 0x40E9640000000000
	movq	8(%rsp), %rbx                   # 8-byte Reload
	movq	%rbp, 16(%rbx)
	movq	%r13, 16(%r8)
	movabsq	$4599075939470750515, %r13      # imm = 0x3FD3333333333333
	movq	152(%rsp), %r8                  # 8-byte Reload
	movq	%r13, 16(%r8)
	movl	$4, %ebx
	movq	128(%rsp), %r8                  # 8-byte Reload
	movl	%ebx, 8(%r8)
	movl	%ebx, 8(%r10)
	movq	56(%rsp), %rbx                  # 8-byte Reload
	movl	%r12d, 8(%rbx)
	movq	%rsi, %r13
	movq	48(%rsp), %rsi                  # 8-byte Reload
	movq	%r13, 16(%rsi)
	movq	40(%rsp), %r8                   # 8-byte Reload
	movq	%r9, 16(%r8)
	movabsq	$4636737291354636288, %r10      # imm = 0x4059000000000000
	movq	32(%rsp), %r9                   # 8-byte Reload
	movq	%r10, 16(%r9)
	movabsq	$4464366475030941260, %r10      # imm = 0x3DF49DA7E361CE4C
	movq	96(%rsp), %rbp                  # 8-byte Reload
	movq	%r10, 24(%rbp)
	movabsq	$4643510282981736448, %r10      # imm = 0x4071100000000000
	movq	%r10, 24(%r11)
	movabsq	$4605380978949069210, %r10      # imm = 0x3FE999999999999A
	movq	%r10, 24(%rdx)
	movq	%rdx, %r10
	movq	%r13, 24(%rcx)
	movq	%r13, %r12
	movabsq	$4224500255474849856, %r11      # imm = 0x3AA0709999201840
	movq	%r11, 24(%rdi)
	movabsq	$4331968932204929863, %r11      # imm = 0x3C1E3ECAC61A6347
	movq	%r11, 24(%r14)
	movq	%r14, %rcx
	movq	%r14, 88(%rsp)                  # 8-byte Spill
	movl	$0, %r11d
	movl	%r11d, 12(%r15)
	movl	%r11d, 12(%rax)
	movl	$5, 12(%rbx)
	movabsq	$4617315517961601024, %rax      # imm = 0x4014000000000000
	movq	%rax, 24(%rsi)
	movq	%r11, 24(%r8)
	movabsq	$4632233691727265792, %r13      # imm = 0x4049000000000000
	movq	%r13, 24(%r9)
	movq	184(%rsp), %rdi                 # 8-byte Reload
	movabsq	$4613937818241073152, %rdx      # imm = 0x4008000000000000
	movq	%rdx, 24(%rdi)
	movabsq	$4642257719335374029, %r11      # imm = 0x406C9CCCCCCCCCCD
	movq	144(%rsp), %r8                  # 8-byte Reload
	movq	%r11, 24(%r8)
	movq	136(%rsp), %r9                  # 8-byte Reload
	movq	%r13, 24(%r9)
	movq	120(%rsp), %r14                 # 8-byte Reload
	movq	%r12, %rsi
	movq	%r12, 24(%r14)
	movabsq	$4644440909623486054, %r11      # imm = 0x40745E6666666666
	movq	64(%rsp), %rdx                  # 8-byte Reload
	movq	%r11, 24(%rdx)
	movq	112(%rsp), %r12                 # 8-byte Reload
	movq	%r13, 24(%r12)
	movq	168(%rsp), %rdx                 # 8-byte Reload
	movq	32(%rdx), %r11
	movq	%rax, 24(%r11)
	movq	176(%rsp), %rax                 # 8-byte Reload
	movq	32(%rax), %r11
	movabsq	$4672004676571365376, %rbx      # imm = 0x40D64B8000000000
	movq	%rbx, 24(%r11)
	movq	160(%rsp), %rbx                 # 8-byte Reload
	movq	32(%rbx), %r11
	movq	%r13, 24(%r11)
	movq	40(%rdx), %rdx
	movq	%rsi, 24(%rdx)
	movq	40(%rax), %rax
	movabsq	$4676915232939966464, %rdx      # imm = 0x40E7BDA000000000
	movq	%rdx, 24(%rax)
	movq	40(%rbx), %rax
	movq	%r13, 24(%rax)
	movabsq	$4464366475030941260, %rax      # imm = 0x3DF49DA7E361CE4C
	movq	%rax, 32(%rbp)
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	24(%rsp), %rdx                  # 8-byte Reload
	movq	%rax, 32(%rdx)
	movabsq	$4605380978949069210, %rax      # imm = 0x3FE999999999999A
	movq	%rax, 32(%r10)
	movq	80(%rsp), %r11                  # 8-byte Reload
	movq	%rsi, %rax
	movq	%rsi, 32(%r11)
	movabsq	$4223470693810437959, %rax      # imm = 0x3A9CC83817D7FF47
	movq	104(%rsp), %rbx                 # 8-byte Reload
	movq	%rax, 32(%rbx)
	movabsq	$4336110109511574628, %rax      # imm = 0x3C2CF52BC06AE464
	movq	%rax, 32(%rcx)
	movl	$0, %eax
	movq	%r15, %rcx
	movl	%eax, 16(%r15)
	movq	72(%rsp), %rsi                  # 8-byte Reload
	movl	%eax, 16(%rsi)
	movl	$3, %eax
	movq	56(%rsp), %r15                  # 8-byte Reload
	movl	%eax, 16(%r15)
	movabsq	$4616189618054758400, %rax      # imm = 0x4010000000000000
	movq	48(%rsp), %r15                  # 8-byte Reload
	movq	%rax, 32(%r15)
	movq	40(%rsp), %rax                  # 8-byte Reload
	movl	$0, %r15d
	movq	%r15, 32(%rax)
	movq	32(%rsp), %rax                  # 8-byte Reload
	movq	%r13, 32(%rax)
	movabsq	$4621819117588971520, %rax      # imm = 0x4024000000000000
	movq	%rax, 32(%rdi)
	movabsq	$4673331787106091008, %rax      # imm = 0x40DB028000000000
	movq	%rax, 32(%r8)
	movq	%r13, 32(%r9)
	movabsq	$4618441417868443648, %rax      # imm = 0x4018000000000000
	movq	%rax, 32(%r14)
	movabsq	$4675935842957524992, %rax      # imm = 0x40E442E000000000
	movq	64(%rsp), %rdi                  # 8-byte Reload
	movq	%rax, 32(%rdi)
	movq	%r13, 32(%r12)
	movabsq	$4466687612604601348, %rax      # imm = 0x3DFCDCB7D7EF5404
	movq	%rax, 40(%rbp)
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	%rax, 40(%rdx)
	movabsq	$4605290906956521800, %rax      # imm = 0x3FE947AE147AE148
	movq	%rax, 40(%r10)
	movabsq	$4607182418800017408, %rax      # imm = 0x3FF0000000000000
	movq	%rax, 40(%r11)
	movabsq	$4228549234524958073, %rax      # imm = 0x3AAED31FFF1C2D79
	movq	%rax, 40(%rbx)
	movabsq	$4325232644928389391, %rax      # imm = 0x3C06502CABE1410F
	movq	88(%rsp), %rdx                  # 8-byte Reload
	movq	%rax, 40(%rdx)
	movl	$2, %r8d
	movl	%r8d, 20(%rcx)
	movq	(%rsp), %rax                    # 8-byte Reload
	movl	$0, %ecx
	movl	%ecx, 20(%rax)
	movl	$0, %r9d
	movq	16(%rsp), %rax                  # 8-byte Reload
	movabsq	$4617315517961601024, %rcx      # imm = 0x4014000000000000
	movq	%rcx, 40(%rax)
	movl	$1, %eax
	movl	%eax, 20(%rsi)
	movabsq	$4658197559305568256, %rax      # imm = 0x40A53E0000000000
	movq	208(%rsp), %rcx                 # 8-byte Reload
	movq	%rax, 40(%rcx)
	movabsq	$4668922195722895360, %rcx      # imm = 0x40CB580000000000
	movq	8(%rsp), %rdx                   # 8-byte Reload
	movq	%rcx, 40(%rdx)
	movq	gas(%rip), %rdi
	movq	360(%rdi), %rcx
	movq	24(%rcx), %rdx
	movq	8(%rdx), %rdx
	movq	%rax, 40(%rdx)
	movq	40(%rcx), %rax
	movq	8(%rax), %rax
	movabsq	$4596373779694328218, %rcx      # imm = 0x3FC999999999999A
	movq	%rcx, 40(%rax)
	movq	568(%rdi), %rax
	movq	8(%rax), %rcx
	movq	8(%rcx), %rcx
	movl	$3, %edx
	movl	%edx, 20(%rcx)
	movq	16(%rax), %rax
	movq	8(%rax), %rax
	movl	$4, %ecx
	movl	%ecx, 20(%rax)
	movq	480(%rdi), %rax
	movl	%r8d, 20(%rax)
	movq	376(%rdi), %rax
	movq	8(%rax), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4611686018427387904, %r8       # imm = 0x4000000000000000
	movq	%r8, 40(%rdx)
	movq	16(%rax), %rdx
	movq	8(%rdx), %rsi
	movq	%r9, 40(%rsi)
	movq	24(%rax), %rax
	movq	8(%rax), %rsi
	movq	%r13, 40(%rsi)
	movq	16(%rcx), %rcx
	movq	%r8, 40(%rcx)
	movq	16(%rdx), %rcx
	movabsq	$4640333134182114918, %rdx      # imm = 0x4065C66666666666
	movq	%rdx, 40(%rcx)
	movq	16(%rax), %rax
	movq	%r13, 40(%rax)
	movl	424(%rdi), %r14d
	testl	%r14d, %r14d
	js	.LBB30_9
# %bb.1:                                # %.preheader64.lr.ph
	xorl	%eax, %eax
.LBB30_2:                               # %.preheader64
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB30_26 Depth 2
	testl	%r14d, %r14d
	js	.LBB30_3
# %bb.25:                               # %.lr.ph
                                        #   in Loop: Header=BB30_2 Depth=1
	movq	520(%rdi), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rsi
.LBB30_26:                              #   Parent Loop BB30_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rsi,4)
	movl	424(%rdi), %r14d
	movslq	%r14d, %rdx
	incq	%rsi
	cmpq	%rdx, %rsi
	jl	.LBB30_26
	jmp	.LBB30_27
.LBB30_3:                               # %.preheader64.._crit_edge_crit_edge
                                        #   in Loop: Header=BB30_2 Depth=1
	movslq	%r14d, %rdx
.LBB30_27:                              # %._crit_edge
                                        #   in Loop: Header=BB30_2 Depth=1
	leaq	1(%rax), %rcx
	cmpq	%rdx, %rax
	movq	%rcx, %rax
	jl	.LBB30_2
# %bb.4:                                # %.preheader63
	testl	%r14d, %r14d
	js	.LBB30_9
# %bb.5:                                # %.preheader62.lr.ph
	xorl	%eax, %eax
.LBB30_6:                               # %.preheader62
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB30_29 Depth 2
	testl	%r14d, %r14d
	js	.LBB30_7
# %bb.28:                               # %.lr.ph72
                                        #   in Loop: Header=BB30_6 Depth=1
	movq	528(%rdi), %rcx
	movq	(%rcx,%rax,8), %rcx
	movq	$-1, %rsi
.LBB30_29:                              #   Parent Loop BB30_6 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rcx,%rsi,4)
	movl	424(%rdi), %r14d
	movslq	%r14d, %rdx
	incq	%rsi
	cmpq	%rdx, %rsi
	jl	.LBB30_29
	jmp	.LBB30_8
.LBB30_7:                               # %.preheader62.._crit_edge73_crit_edge
                                        #   in Loop: Header=BB30_6 Depth=1
	movslq	%r14d, %rdx
.LBB30_8:                               # %._crit_edge73
                                        #   in Loop: Header=BB30_6 Depth=1
	leaq	1(%rax), %rcx
	cmpq	%rdx, %rax
	movq	%rcx, %rax
	jl	.LBB30_6
.LBB30_9:                               # %.preheader61
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	leal	1(%r14), %r15d
	leaq	(,%r15,8), %rbx
	xorl	%eax, %eax
	movq	%rax, (%rsp)                    # 8-byte Spill
.LBB30_10:                              # %.preheader60
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB30_12 Depth 2
                                        #       Child Loop BB30_13 Depth 3
	testl	%r14d, %r14d
	js	.LBB30_15
# %bb.11:                               # %.preheader59.lr.ph
                                        #   in Loop: Header=BB30_10 Depth=1
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	392(%rax), %rax
	movq	(%rsp), %rcx                    # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	xorl	%ebp, %ebp
.LBB30_12:                              # %.preheader59
                                        #   Parent Loop BB30_10 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB30_13 Depth 3
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	(%rax,%rbp,8), %r13
	xorl	%r12d, %r12d
.LBB30_13:                              # %.preheader58
                                        #   Parent Loop BB30_10 Depth=1
                                        #     Parent Loop BB30_12 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r13,%r12,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%r12
	cmpq	%r12, %r15
	jne	.LBB30_13
# %bb.14:                               # %._crit_edge82
                                        #   in Loop: Header=BB30_12 Depth=2
	incq	%rbp
	cmpq	%r15, %rbp
	jne	.LBB30_12
.LBB30_15:                              # %._crit_edge85
                                        #   in Loop: Header=BB30_10 Depth=1
	movq	(%rsp), %rcx                    # 8-byte Reload
	incq	%rcx
	movq	%rcx, %rax
	movq	%rcx, (%rsp)                    # 8-byte Spill
	cmpq	$5, %rcx
	jne	.LBB30_10
# %bb.16:
	movq	8(%rsp), %rdx                   # 8-byte Reload
	movq	520(%rdx), %r10
	movq	24(%r10), %rax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	movl	$1, %esi
	movl	%esi, 12(%rax)
	movq	528(%rdx), %r11
	movq	24(%r11), %rcx
	movl	%esi, 12(%rcx)
	movl	$1, %ebp
	movq	400(%rdx), %rdi
	movq	8(%rdi), %rbx
	movq	24(%rbx), %rsi
	movq	24(%rsi), %r8
	movabsq	$4585925428558828667, %r9       # imm = 0x3FA47AE147AE147B
	movq	%r9, 8(%r8)
	movq	16(%rdi), %r14
	movq	24(%r14), %rdi
	movq	24(%rdi), %r9
	movabsq	$-4614838538166547251, %r15     # imm = 0xBFF4CCCCCCCCCCCD
	movq	%r15, 8(%r9)
	movabsq	$4589708452245819884, %r15      # imm = 0x3FB1EB851EB851EC
	movq	%r15, 16(%r8)
	movabsq	$-4615288898129284301, %r15     # imm = 0xBFF3333333333333
	movq	%r15, 16(%r9)
	movabsq	$4590429028186199163, %r12      # imm = 0x3FB47AE147AE147B
	movq	%r12, 24(%r8)
	movq	%r15, 24(%r9)
	movabsq	$4591149604126578442, %r12      # imm = 0x3FB70A3D70A3D70A
	movq	%r12, 32(%r8)
	movq	%r15, 32(%r9)
	movabsq	$4589348164275630244, %r13      # imm = 0x3FB0A3D70A3D70A4
	movq	%r13, 40(%r8)
	movq	%r15, 40(%r9)
	movq	384(%rdx), %r9
	movq	8(%r9), %r15
	movq	24(%r15), %r8
	movabsq	$4662219572839972864, %rax      # imm = 0x40B3880000000000
	movq	%rax, 24(%r8)
	movq	16(%r9), %r13
	movq	24(%r13), %r9
	movabsq	$4669471951536783360, %rax      # imm = 0x40CD4C0000000000
	movq	%rax, 24(%r9)
	movq	32(%r10), %r10
	movl	$2, 16(%r10)
	movq	32(%r11), %r10
	movl	%ebp, 16(%r10)
	movq	32(%rbx), %r10
	movq	32(%r10), %r11
	movabsq	$4594572339843380019, %r10      # imm = 0x3FC3333333333333
	movq	%r10, 8(%r11)
	movq	32(%r14), %rbx
	movq	32(%rbx), %rbx
	movabsq	$-4611573428436703642, %r14     # imm = 0xC000666666666666
	movq	%r14, 8(%rbx)
	movq	%r12, 16(%r11)
	movabsq	$-4611460838446019379, %r14     # imm = 0xC000CCCCCCCCCCCD
	movq	%r14, 16(%rbx)
	movabsq	$4594932627813569659, %r12      # imm = 0x3FC47AE147AE147B
	movq	%r12, 24(%r11)
	movabsq	$-4611686018427387904, %r12     # imm = 0xC000000000000000
	movq	%r12, 24(%rbx)
	movabsq	$4595292915783759299, %rbp      # imm = 0x3FC5C28F5C28F5C3
	movq	%rbp, 32(%r11)
	movq	%r12, 32(%rbx)
	movq	%rbp, 40(%r11)
	movq	%r14, 40(%rbx)
	movq	32(%r15), %r11
	movabsq	$4662219572839972864, %rbx      # imm = 0x40B3880000000000
	movq	%rbx, 32(%r11)
	movq	32(%r13), %r11
	movq	%rax, %r14
	movq	%rax, 32(%r11)
	movq	16(%rsp), %rax                  # 8-byte Reload
	movl	$5, 16(%rax)
	movl	$1, %eax
	movl	%eax, 16(%rcx)
	movq	32(%rsi), %rax
	movabsq	$4599075939470750515, %r11      # imm = 0x3FD3333333333333
	movq	%r11, 8(%rax)
	movq	32(%rdi), %rcx
	movabsq	$-4612136378390124954, %rdi     # imm = 0xBFFE666666666666
	movq	%rdi, 8(%rcx)
	movabsq	$4600877379321698714, %rsi      # imm = 0x3FD999999999999A
	movq	%rsi, 16(%rax)
	movq	%r12, 16(%rcx)
	movq	%r11, 24(%rax)
	movabsq	$-4612811918334230528, %rsi     # imm = 0xBFFC000000000000
	movq	%rsi, 24(%rcx)
	movq	%r11, 32(%rax)
	movq	%rsi, 32(%rcx)
	movq	%r10, 40(%rax)
	movq	%rdi, 40(%rcx)
	movq	%rbx, 32(%r8)
	movq	%r14, 32(%r9)
	movl	444(%rdx), %eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	incl	%eax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	xorl	%eax, %eax
	movq	%rax, (%rsp)                    # 8-byte Spill
.LBB30_17:                              # %.preheader57
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB30_19 Depth 2
                                        #       Child Loop BB30_21 Depth 3
	cmpl	$0, 24(%rsp)                    # 4-byte Folded Reload
	js	.LBB30_23
# %bb.18:                               # %.preheader56.lr.ph
                                        #   in Loop: Header=BB30_17 Depth=1
	movq	8(%rsp), %rax                   # 8-byte Reload
	movl	424(%rax), %ebp
	leal	1(%rbp), %r14d
	leaq	(,%r14,8), %rbx
	xorl	%r12d, %r12d
.LBB30_19:                              # %.preheader56
                                        #   Parent Loop BB30_17 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB30_21 Depth 3
	testl	%ebp, %ebp
	js	.LBB30_22
# %bb.20:                               # %.preheader.lr.ph
                                        #   in Loop: Header=BB30_19 Depth=2
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	392(%rax), %rax
	movq	(%rsp), %rcx                    # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	(%rax,%r12,8), %r13
	xorl	%r15d, %r15d
.LBB30_21:                              # %.preheader
                                        #   Parent Loop BB30_17 Depth=1
                                        #     Parent Loop BB30_19 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r13,%r15,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
	incq	%r15
	cmpq	%r15, %r14
	jne	.LBB30_21
.LBB30_22:                              # %._crit_edge93
                                        #   in Loop: Header=BB30_19 Depth=2
	incq	%r12
	cmpq	16(%rsp), %r12                  # 8-byte Folded Reload
	jne	.LBB30_19
.LBB30_23:                              # %._crit_edge96
                                        #   in Loop: Header=BB30_17 Depth=1
	movq	(%rsp), %rcx                    # 8-byte Reload
	incq	%rcx
	movq	%rcx, %rax
	movq	%rcx, (%rsp)                    # 8-byte Spill
	cmpq	$7, %rcx
	jne	.LBB30_17
# %bb.24:
	xorl	%eax, %eax
	movq	8(%rsp), %rcx                   # 8-byte Reload
	movq	%rax, 584(%rcx)
	movq	%rax, 552(%rcx)
	movq	16, %rcx
	movl	$1, %edx
	movl	%edx, 12(%rcx)
	movq	32, %rcx
	movl	%edx, 20(%rcx)
	movq	24, %rcx
	movl	%edx, 20(%rcx)
	movq	8, %rcx
	movl	%edx, 16(%rcx)
	movq	8(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	$2, %r8d
	movl	%r8d, 12(%rsi)
	movq	16(%rcx), %rcx
	movq	16(%rcx), %rcx
	movl	$3, %esi
	movl	%esi, 12(%rcx)
	movq	gas(%rip), %r11
	movq	584(%r11), %rcx
	movq	8(%rcx), %r9
	movq	24(%r9), %rbx
	movq	16(%rbx), %rcx
	movl	$5, %edi
	movl	%edi, 12(%rcx)
	movq	32(%r9), %r14
	movq	16(%r14), %r10
	movl	$4, %ecx
	movl	%ecx, 12(%r10)
	movq	40(%r9), %r15
	movq	16(%r15), %r10
	movl	%edx, 12(%r10)
	movq	48(%r9), %r12
	movq	16(%r12), %r10
	movl	%edx, 12(%r10)
	movq	392(%r11), %r10
	movq	48(%r10), %r13
	movq	8(%r13), %r13
	movq	16(%r13), %r13
	movq	%rax, 24(%r13)
	movq	576(%r11), %r11
	movq	8(%r11), %r11
	movq	16(%r11), %r11
	movl	%edx, 12(%r11)
	movq	8(%r9), %r11
	movq	32(%r11), %r11
	movl	%edi, 20(%r11)
	movq	16(%r9), %r11
	movq	32(%r11), %r11
	movl	%ecx, 20(%r11)
	movq	32(%rbx), %r11
	movl	%r8d, 20(%r11)
	movq	32(%r14), %r11
	movl	%esi, 20(%r11)
	movq	32(%r15), %r11
	movl	%edx, 20(%r11)
	movq	32(%r12), %r11
	movl	%edx, 20(%r11)
	movq	56(%r9), %r9
	movq	32(%r9), %r9
	movl	%edx, 20(%r9)
	movq	8(%r10), %r9
	movq	8(%r9), %r9
	movq	32(%r9), %r9
	movabsq	$4605380978949069210, %r11      # imm = 0x3FE999999999999A
	movq	%r11, 40(%r9)
	movq	16(%r10), %r9
	movq	8(%r9), %r9
	movq	32(%r9), %r9
	movabsq	$-4618441417868443648, %r11     # imm = 0xBFE8000000000000
	movq	%r11, 40(%r9)
	movq	32(%r10), %r9
	movq	8(%r9), %r9
	movq	32(%r9), %r9
	movabsq	$4662219572839972864, %r10      # imm = 0x40B3880000000000
	movq	%r10, 40(%r9)
	movq	gas(%rip), %r9
	movq	392(%r9), %r10
	movq	40(%r10), %r11
	movq	8(%r11), %r11
	movq	32(%r11), %r11
	movabsq	$4669471951536783360, %rbx      # imm = 0x40CD4C0000000000
	movq	%rbx, 40(%r11)
	movq	48(%r10), %r10
	movq	8(%r10), %r10
	movq	32(%r10), %r11
	movq	%rax, 40(%r11)
	movq	576(%r9), %r11
	movq	8(%r11), %r11
	movq	32(%r11), %rbx
	movl	%r8d, 20(%rbx)
	movq	584(%r9), %r8
	movq	8(%r8), %r8
	movq	8(%r8), %r9
	movq	24(%r9), %rbx
	movl	%edi, 20(%rbx)
	movq	16(%r8), %rbx
	movq	24(%rbx), %r14
	movl	%esi, 20(%r14)
	movq	24(%r8), %r14
	movq	24(%r14), %r15
	movl	%edx, 20(%r15)
	movq	32(%r8), %r15
	movq	24(%r15), %r12
	movl	%ecx, 20(%r12)
	movq	40(%r8), %r12
	movq	24(%r12), %r13
	movl	%edx, 20(%r13)
	movq	48(%r8), %r13
	movq	24(%r13), %rbp
	movl	%edx, 20(%rbp)
	movq	24(%r10), %r10
	movabsq	$4327259717621961388, %rbp      # imm = 0x3C0D83C94FB6D2AC
	movq	%rbp, 40(%r10)
	movq	24(%r11), %r10
	movl	%esi, 20(%r10)
	movq	8(%r9), %r9
	movl	%edx, 16(%r9)
	movq	8(%rbx), %r9
	movl	%ecx, 16(%r9)
	movq	8(%r14), %r9
	movl	%edi, 16(%r9)
	movq	8(%r15), %rdi
	movl	%esi, 16(%rdi)
	movq	8(%r12), %rsi
	movl	%edx, 16(%rsi)
	movq	8(%r13), %rsi
	movl	%edx, 16(%rsi)
	movq	56(%r8), %rsi
	movq	8(%rsi), %rsi
	movl	%edx, 16(%rsi)
	movq	gas(%rip), %rdx
	movq	392(%rdx), %rsi
	movq	8(%rsi), %rdi
	movq	8(%rdi), %rdi
	movq	8(%rdi), %rdi
	movabsq	$4619567317775286272, %r8       # imm = 0x401C000000000000
	movq	%r8, 32(%rdi)
	movq	16(%rsi), %rdi
	movq	8(%rdi), %rdi
	movq	8(%rdi), %rdi
	movabsq	$-4617540697942969549, %r8      # imm = 0xBFEB333333333333
	movq	%r8, 32(%rdi)
	movq	32(%rsi), %rdi
	movq	8(%rdi), %rdi
	movq	8(%rdi), %rdi
	movabsq	$4662219572839972864, %r8       # imm = 0x40B3880000000000
	movq	%r8, 32(%rdi)
	movq	40(%rsi), %rdi
	movq	8(%rdi), %rdi
	movq	8(%rdi), %rdi
	movabsq	$4669471951536783360, %r8       # imm = 0x40CD4C0000000000
	movq	%r8, 32(%rdi)
	movq	48(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	%rax, 32(%rsi)
	movq	576(%rdx), %rax
	movq	8(%rax), %rax
	movq	8(%rax), %rax
	movl	%ecx, 16(%rax)
	callq	_Z16DERIVED_GAS_DATAv
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.57, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$216, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end30:
	.size	_Z8REAL_AIRv, .Lfunc_end30-_Z8REAL_AIRv
	.cfi_endproc
                                        # -- End function
	.globl	_Z18HELIUM_ARGON_XENONv         # -- Begin function _Z18HELIUM_ARGON_XENONv
	.type	_Z18HELIUM_ARGON_XENONv,@function
_Z18HELIUM_ARGON_XENONv:                # @_Z18HELIUM_ARGON_XENONv
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	pushq	%rax
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.58, %esi
	movl	$31, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movq	$3, 424(%rax)
	xorl	%r14d, %r14d
	movq	%r14, 432(%rax)
	movq	%r14, 444(%rax)
	movq	$1, 452(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %rdx
	movq	320(%rdx), %rsi
	movq	8(%rsi), %rax
	movabsq	$4462957725501784215, %rcx      # imm = 0x3DEF9C67D41E8097
	movq	%rcx, 8(%rax)
	movq	16(%rsi), %rcx
	movabsq	$4643510282981736448, %rdi      # imm = 0x4071100000000000
	movq	%rdi, 8(%rcx)
	movq	24(%rsi), %r8
	movabsq	$4604119971053405471, %r9       # imm = 0x3FE51EB851EB851F
	movq	%r9, 8(%r8)
	movq	32(%rsi), %r9
	movabsq	$4605326935753540764, %r10      # imm = 0x3FE96872B020C49C
	movq	%r10, 8(%r9)
	movq	40(%rsi), %rsi
	movabsq	$4215500025202983405, %r10      # imm = 0x3A8076F030DFC1ED
	movq	%r10, 8(%rsi)
	movq	488(%rdx), %rdx
	movq	8(%rdx), %r10
	movl	%r14d, 4(%r10)
	movq	16(%rdx), %rdx
	movl	%r14d, 4(%rdx)
	movabsq	$4466513527286576841, %r11      # imm = 0x3DFC3E637264B6C9
	movq	%r11, 16(%rax)
	movabsq	$4643512921809643110, %r11      # imm = 0x4071126666666666
	movq	%r11, 16(%rcx)
	movabsq	$4605471050941616620, %r11      # imm = 0x3FE9EB851EB851EC
	movq	%r11, 16(%r8)
	movabsq	$4604606359813161484, %r11      # imm = 0x3FE6D916872B020C
	movq	%r11, 16(%r9)
	movabsq	$4230151995030800952, %r11      # imm = 0x3AB484D3C1B88A38
	movq	%r11, 16(%rsi)
	movl	%r14d, 8(%r10)
	movl	%r14d, 8(%rdx)
	movabsq	$4468531575428819660, %r11      # imm = 0x3E0369CAE50D2ACC
	movq	%r11, 24(%rax)
	movq	%rdi, 24(%rcx)
	movabsq	$4605831338911806259, %rax      # imm = 0x3FEB333333333333
	movq	%rax, 24(%r8)
	movabsq	$4604426215828066664, %rax      # imm = 0x3FE6353F7CED9168
	movq	%rax, 24(%r9)
	movabsq	$4238131269311547173, %rax      # imm = 0x3AD0DDEF52CA4725
	movq	%rax, 24(%rsi)
	movl	%r14d, 12(%r10)
	movl	%r14d, 12(%rdx)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.59, %esi
	movl	$28, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end31:
	.size	_Z18HELIUM_ARGON_XENONv, .Lfunc_end31-_Z18HELIUM_ARGON_XENONv
	.cfi_endproc
                                        # -- End function
	.globl	_Z15OXYGEN_HYDROGENv            # -- Begin function _Z15OXYGEN_HYDROGENv
	.type	_Z15OXYGEN_HYDROGENv,@function
_Z15OXYGEN_HYDROGENv:                   # @_Z15OXYGEN_HYDROGENv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$168, %rsp
	.cfi_def_cfa_offset 224
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.60, %esi
	movl	$28, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	gas(%rip), %rax
	movabsq	$12884901896, %rcx              # imm = 0x300000008
	movq	%rcx, 424(%rax)
	movq	$3, 432(%rax)
	movabsq	$171798691841, %rcx             # imm = 0x2800000001
	movq	%rcx, 452(%rax)
	movabsq	$68719476739, %rcx              # imm = 0x1000000003
	movq	%rcx, 444(%rax)
	callq	_Z12ALLOCATE_GASv
	movq	gas(%rip), %r10
	movq	320(%r10), %rax
	movq	8(%rax), %rdx
	movq	%rdx, 16(%rsp)                  # 8-byte Spill
	movabsq	$4464211732526030588, %rcx      # imm = 0x3DF410EB17585EFC
	movq	%rcx, 8(%rdx)
	movq	16(%rax), %rdx
	movabsq	$4643510282981736448, %rcx      # imm = 0x4071100000000000
	movq	%rcx, 8(%rdx)
	movq	%rdx, %rsi
	movq	24(%rax), %rdx
	movabsq	$4604210043045952881, %rcx      # imm = 0x3FE570A3D70A3D71
	movq	%rcx, 8(%rdx)
	movq	%rdx, %r11
	movq	32(%rax), %rcx
	movabsq	$4607182418800017408, %r15      # imm = 0x3FF0000000000000
	movq	%r15, 8(%rcx)
	movq	%rcx, %r9
	movq	40(%rax), %r12
	movabsq	$4211017332524236532, %rcx      # imm = 0x3A7089F3F81EBEF4
	movq	%rcx, 8(%r12)
	movq	48(%rax), %r13
	xorl	%ecx, %ecx
	movq	%rcx, 8(%r13)
	movq	488(%r10), %rax
	movq	8(%rax), %r8
	movl	$2, %edx
	movl	%edx, 4(%r8)
	movq	%r8, %rbx
	movq	16(%rax), %rax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movl	%ecx, 4(%rax)
	movq	328(%r10), %rax
	movq	8(%rax), %rcx
	movq	%rcx, 112(%rsp)                 # 8-byte Spill
	movabsq	$4617315517961601024, %rax      # imm = 0x4014000000000000
	movq	%rax, 8(%rcx)
	movq	472(%r10), %rcx
	movl	$1, %eax
	movl	%eax, 4(%rcx)
	movq	%rcx, %r8
	movq	360(%r10), %rcx
	movq	8(%rcx), %rax
	movq	%rax, 144(%rsp)                 # 8-byte Spill
	movq	8(%rax), %rax
	movq	%rax, 40(%rsp)                  # 8-byte Spill
	movabsq	$4663493906816565248, %rdx      # imm = 0x40B80F0000000000
	movq	%rdx, 8(%rax)
	movq	16(%rcx), %rax
	movq	%rax, 136(%rsp)                 # 8-byte Spill
	movq	8(%rax), %rax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	movabsq	$4671226772094713856, %rdx      # imm = 0x40D3880000000000
	movq	%rdx, 8(%rax)
	movq	24(%rcx), %rax
	movq	%rax, 128(%rsp)                 # 8-byte Spill
	movq	8(%rax), %r14
	movabsq	$4656510908468559872, %rdx      # imm = 0x409F400000000000
	movq	%rdx, 8(%r14)
	movq	%r14, 80(%rsp)                  # 8-byte Spill
	movq	40(%rcx), %rax
	movq	%rax, 120(%rsp)                 # 8-byte Spill
	movq	8(%rax), %rax
	movq	%r15, 8(%rax)
	movq	%rax, %rdi
	movq	%rax, 72(%rsp)                  # 8-byte Spill
	movq	568(%r10), %r10
	movq	8(%r10), %rcx
	movq	%rcx, 160(%rsp)                 # 8-byte Spill
	movq	8(%rcx), %rcx
	movq	%rcx, 48(%rsp)                  # 8-byte Spill
	movl	$2, %eax
	movl	%eax, 4(%rcx)
	movq	16(%r10), %rcx
	movq	%rcx, 152(%rsp)                 # 8-byte Spill
	movq	8(%rcx), %rcx
	movq	%rcx, 56(%rsp)                  # 8-byte Spill
	movl	%eax, 4(%rcx)
	movabsq	$4463399334375249557, %rbp      # imm = 0x3DF12E0BE826D695
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	%rbp, 16(%rax)
	movabsq	$4643510282981736448, %rcx      # imm = 0x4071100000000000
	movq	%rcx, 16(%rsi)
	movabsq	$4605380978949069210, %r10      # imm = 0x3FE999999999999A
	movq	%r11, %rdx
	movq	%r10, 16(%r11)
	movq	%r9, %r11
	movq	%r9, 8(%rsp)                    # 8-byte Spill
	movq	%r15, 16(%r9)
	movabsq	$4206513732896866036, %rbp      # imm = 0x3A6089F3F81EBEF4
	movq	%rbp, 16(%r12)
	movabsq	$4330974088126834590, %rbp      # imm = 0x3C1AB5FC9638A79E
	movq	%rbp, 16(%r13)
	movl	$0, %r10d
	movl	%r10d, 8(%rbx)
	movl	%r10d, 8(%r8)
	movabsq	$4466436156034121505, %rbp      # imm = 0x3DFBF8050C5FFF21
	movq	%rbp, 24(%rax)
	movq	%rcx, 24(%rsi)
	movabsq	$4605110762971426980, %rbp      # imm = 0x3FE8A3D70A3D70A4
	movq	%rbp, 24(%rdx)
	movq	%rdx, %r9
	movq	%r15, 24(%r11)
	movabsq	$4229003855102220352, %rbp      # imm = 0x3AB0709999201840
	movq	%rbp, 24(%r12)
	movq	%r10, 24(%r13)
	movl	$2, %eax
	movl	%eax, 12(%rbx)
	movq	%rbx, %r11
	movq	24(%rsp), %rdx                  # 8-byte Reload
	movl	%r10d, 12(%rdx)
	movq	112(%rsp), %rbx                 # 8-byte Reload
	movabsq	$4617315517961601024, %rax      # imm = 0x4014000000000000
	movq	%rax, 24(%rbx)
	movl	$1, %eax
	movl	%eax, 12(%r8)
	movabsq	$4657179411538247680, %rbp      # imm = 0x40A1A00000000000
	movq	40(%rsp), %rax                  # 8-byte Reload
	movq	%rbp, 24(%rax)
	movabsq	$4670677016280825856, %r10      # imm = 0x40D1940000000000
	movq	32(%rsp), %rax                  # 8-byte Reload
	movq	%r10, 24(%rax)
	movq	%rbp, 24(%r14)
	movq	%r15, %rbp
	movq	%r15, 24(%rdi)
	movl	$4, %edi
	movq	48(%rsp), %rax                  # 8-byte Reload
	movl	%edi, 12(%rax)
	movq	56(%rsp), %rcx                  # 8-byte Reload
	movl	%edi, 12(%rcx)
	movabsq	$4464366475030941260, %r10      # imm = 0x3DF49DA7E361CE4C
	movq	16(%rsp), %rdi                  # 8-byte Reload
	movq	%r10, 32(%rdi)
	movabsq	$4643510282981736448, %r15      # imm = 0x4071100000000000
	movq	%r15, 32(%rsi)
	movabsq	$4605380978949069210, %r10      # imm = 0x3FE999999999999A
	movq	%r10, 32(%r9)
	movq	8(%rsp), %r14                   # 8-byte Reload
	movq	%rbp, 32(%r14)
	movabsq	$4224500255474849856, %r10      # imm = 0x3AA0709999201840
	movq	%r10, 32(%r12)
	movabsq	$4331968932204929863, %r10      # imm = 0x3C1E3ECAC61A6347
	movq	%r10, 32(%r13)
	movl	$0, %r10d
	movl	%r10d, 16(%r11)
	movl	%r10d, 16(%r8)
	movq	%r8, %rbp
	movabsq	$4466300756342324667, %r10      # imm = 0x3DFB7CDFD9D7BDBB
	movq	%r10, 40(%rdi)
	movq	%r15, 40(%rsi)
	movq	%rsi, %r15
	movq	%rsi, 88(%rsp)                  # 8-byte Spill
	movabsq	$4604930618986332160, %rsi      # imm = 0x3FE8000000000000
	movq	%rsi, 40(%r9)
	movq	%r9, %rsi
	movq	%r9, 104(%rsp)                  # 8-byte Spill
	movabsq	$4607182418800017408, %r8       # imm = 0x3FF0000000000000
	movq	%r8, 40(%r14)
	movabsq	$4224791210509861936, %r10      # imm = 0x3AA17938D8A20430
	movq	%r12, 96(%rsp)                  # 8-byte Spill
	movq	%r10, 40(%r12)
	movabsq	$4319602524574591179, %r10      # imm = 0x3BF24F9C202628CB
	movq	%r10, 40(%r13)
	movq	%r11, %r14
	movl	$2, %r8d
	movl	%r8d, 20(%r11)
	movl	$0, %r8d
	movl	%r8d, 20(%rdx)
	movabsq	$4617315517961601024, %r9       # imm = 0x4014000000000000
	movq	%rbx, %r8
	movq	%r9, 40(%rbx)
	movl	$1, %edx
	movq	%rbp, 64(%rsp)                  # 8-byte Spill
	movl	%edx, 20(%rbp)
	movabsq	$4662615397025972224, %r10      # imm = 0x40B4F00000000000
	movq	40(%rsp), %rbx                  # 8-byte Reload
	movq	%r10, 40(%rbx)
	movq	32(%rsp), %r9                   # 8-byte Reload
	movabsq	$4671226772094713856, %r10      # imm = 0x40D3880000000000
	movq	%r10, 40(%r9)
	movabsq	$4657715973212602368, %r10      # imm = 0x40A3880000000000
	movq	80(%rsp), %rdx                  # 8-byte Reload
	movq	%r10, 40(%rdx)
	movq	72(%rsp), %r11                  # 8-byte Reload
	movabsq	$4607182418800017408, %rbp      # imm = 0x3FF0000000000000
	movq	%rbp, 40(%r11)
	movl	$2, %r10d
	movl	%r10d, 20(%rax)
	movl	$4, %eax
	movl	%eax, 20(%rcx)
	movabsq	$4467267896998016370, %r10      # imm = 0x3DFEEC7BD512B572
	movq	%r10, 48(%rdi)
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	%rax, 48(%r15)
	movabsq	$4604930618986332160, %rax      # imm = 0x3FE8000000000000
	movq	%rax, 48(%rsi)
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	%rbp, 48(%rax)
	movabsq	$4225082165544874015, %r10      # imm = 0x3AA281D81823F01F
	movq	%r10, 48(%r12)
	movabsq	$-4891577565824292715, %r10     # imm = 0xBC1DA01EDDC5E895
	movq	%r10, 48(%r13)
	movq	%r13, %r12
	movl	$3, %eax
	movl	%eax, 24(%r14)
	movq	%r14, %r13
	movq	24(%rsp), %r15                  # 8-byte Reload
	movl	$0, %ecx
	movl	%ecx, 24(%r15)
	movabsq	$4617315517961601024, %rcx      # imm = 0x4014000000000000
	movq	%rcx, 48(%r8)
	movq	64(%rsp), %rcx                  # 8-byte Reload
	movl	%eax, 24(%rcx)
	movabsq	$4662506545374822400, %rax      # imm = 0x40B48D0000000000
	movq	%rax, 48(%rbx)
	movabsq	$4671226772094713856, %r14      # imm = 0x40D3880000000000
	movq	%r14, 48(%r9)
	movabsq	$4657715973212602368, %r10      # imm = 0x40A3880000000000
	movq	%r10, 48(%rdx)
	movq	%rbp, 48(%r11)
	movq	144(%rsp), %rdx                 # 8-byte Reload
	movq	16(%rdx), %rax
	movabsq	$4657262974421958656, %rcx      # imm = 0x40A1EC0000000000
	movq	%rcx, 48(%rax)
	movq	136(%rsp), %rsi                 # 8-byte Reload
	movq	16(%rsi), %rax
	movq	%r14, 48(%rax)
	movq	128(%rsp), %rdi                 # 8-byte Reload
	movq	16(%rdi), %rax
	movq	%r10, 48(%rax)
	movq	%r10, %rbx
	movq	120(%rsp), %r10                 # 8-byte Reload
	movq	16(%r10), %rax
	movq	%rbp, 48(%rax)
	movq	24(%rdx), %rax
	movabsq	$4662694561863172096, %rcx      # imm = 0x40B5380000000000
	movq	%rcx, 48(%rax)
	movq	24(%rsi), %rax
	movq	%r14, 48(%rax)
	movq	24(%rdi), %rax
	movq	%rbx, 48(%rax)
	movq	24(%r10), %rax
	movq	%rbp, 48(%rax)
	movl	$2, %edx
	movq	48(%rsp), %rax                  # 8-byte Reload
	movl	%edx, 24(%rax)
	movl	$5, %eax
	movq	56(%rsp), %rcx                  # 8-byte Reload
	movl	%eax, 24(%rcx)
	movq	160(%rsp), %rsi                 # 8-byte Reload
	movq	16(%rsi), %rcx
	movl	%edx, 24(%rcx)
	movq	152(%rsp), %rdi                 # 8-byte Reload
	movq	16(%rdi), %rcx
	movl	%eax, 24(%rcx)
	movq	24(%rsi), %rcx
	movl	%edx, 24(%rcx)
	movl	$2, %r10d
	movq	24(%rdi), %rcx
	movl	%eax, 24(%rcx)
	movabsq	$4468386504330465904, %rax      # imm = 0x3E02E5D9E5C45270
	movq	16(%rsp), %rcx                  # 8-byte Reload
	movq	%rax, 56(%rcx)
	movabsq	$4643510282981736448, %rax      # imm = 0x4071100000000000
	movq	88(%rsp), %rcx                  # 8-byte Reload
	movq	%rax, 56(%rcx)
	movabsq	$4604930618986332160, %rax      # imm = 0x3FE8000000000000
	movq	104(%rsp), %rcx                 # 8-byte Reload
	movq	%rax, 56(%rcx)
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	%rbp, 56(%rax)
	movabsq	$4229149332619726392, %rax      # imm = 0x3AB0F4E938E10E38
	movq	96(%rsp), %rcx                  # 8-byte Reload
	movq	%rax, 56(%rcx)
	movabsq	$4312220306544697247, %rax      # imm = 0x3BD815858CD29F9F
	movq	%rax, 56(%r12)
	movl	%r10d, 28(%r13)
	movl	$0, %eax
	movl	%eax, 28(%r15)
	movq	gas(%rip), %r8
	movq	328(%r8), %rax
	movq	8(%rax), %rax
	movabsq	$4617315517961601024, %rcx      # imm = 0x4014000000000000
	movq	%rcx, 56(%rax)
	movq	472(%r8), %rax
	movl	$3, %ecx
	movl	%ecx, 28(%rax)
	movq	360(%r8), %rcx
	movq	8(%rcx), %rdx
	movq	8(%rdx), %rsi
	movabsq	$4662164597258584064, %rdi      # imm = 0x40B3560000000000
	movq	%rdi, 56(%rsi)
	movq	16(%rcx), %rsi
	movq	8(%rsi), %rdi
	movq	%r14, 56(%rdi)
	movq	24(%rcx), %rdi
	movq	8(%rdi), %r9
	movq	%rbx, 56(%r9)
	movq	40(%rcx), %rcx
	movq	8(%rcx), %r9
	movq	%rbp, 56(%r9)
	movq	16(%rdx), %r9
	movabsq	$4656510908468559872, %r11      # imm = 0x409F400000000000
	movq	%r11, 56(%r9)
	movq	16(%rsi), %r9
	movq	%r14, 56(%r9)
	movq	16(%rdi), %r9
	movq	%rbx, 56(%r9)
	movq	16(%rcx), %r9
	movq	%rbp, 56(%r9)
	movq	24(%rdx), %rdx
	movabsq	$4654663728933896192, %r9       # imm = 0x4098B00000000000
	movq	%r9, 56(%rdx)
	movq	24(%rsi), %rdx
	movq	%r14, 56(%rdx)
	movq	24(%rdi), %rdx
	movq	%rbx, 56(%rdx)
	movq	24(%rcx), %rcx
	movq	%rbp, 56(%rcx)
	movq	568(%r8), %rcx
	movq	8(%rcx), %rdx
	movq	8(%rdx), %rsi
	movl	%r10d, 28(%rsi)
	movq	16(%rcx), %rcx
	movq	8(%rcx), %rsi
	movl	$3, %edi
	movl	%edi, 28(%rsi)
	movq	16(%rdx), %rsi
	movl	%r10d, 28(%rsi)
	movq	16(%rcx), %rsi
	movl	%edi, 28(%rsi)
	movl	$3, %esi
	movq	24(%rdx), %rdx
	movl	%r10d, 28(%rdx)
	movq	24(%rcx), %rcx
	movl	%esi, 28(%rcx)
	movq	320(%r8), %rcx
	movq	8(%rcx), %rdx
	movabsq	$4466629584165259846, %rsi      # imm = 0x3DFCA7F10B6BCA46
	movq	%rsi, 64(%rdx)
	movq	16(%rcx), %rdx
	movabsq	$4643512921809643110, %rsi      # imm = 0x4071126666666666
	movq	%rsi, 64(%rdx)
	movq	24(%rcx), %rdx
	movabsq	$4605471050941616620, %rsi      # imm = 0x3FE9EB851EB851EC
	movq	%rsi, 64(%rdx)
	movq	32(%rcx), %rdx
	movq	%rbp, 64(%rdx)
	movq	40(%rcx), %rdx
	movabsq	$4230151995030800952, %rsi      # imm = 0x3AB484D3C1B88A38
	movq	%rsi, 64(%rdx)
	movq	48(%rcx), %rcx
	xorl	%edx, %edx
	movq	%rdx, 64(%rcx)
	movq	488(%r8), %rcx
	movq	8(%rcx), %rcx
	movl	%edx, 32(%rcx)
	movl	%edx, 32(%rax)
	movl	424(%r8), %esi
	testl	%esi, %esi
	js	.LBB32_7
# %bb.1:                                # %.preheader64.lr.ph
	movq	gas(%rip), %rax
	movl	424(%rax), %edx
	xorl	%ecx, %ecx
.LBB32_2:                               # %.preheader64
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB32_4 Depth 2
	testl	%edx, %edx
	js	.LBB32_6
# %bb.3:                                # %.lr.ph
                                        #   in Loop: Header=BB32_2 Depth=1
	movq	520(%rax), %rdx
	movq	(%rdx,%rcx,8), %rsi
	movq	$-1, %rdi
.LBB32_4:                               #   Parent Loop BB32_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rsi,%rdi,4)
	movslq	424(%rax), %rdx
	incq	%rdi
	cmpq	%rdx, %rdi
	jl	.LBB32_4
# %bb.5:                                # %._crit_edge.loopexit
                                        #   in Loop: Header=BB32_2 Depth=1
	movl	424(%r8), %esi
.LBB32_6:                               # %._crit_edge
                                        #   in Loop: Header=BB32_2 Depth=1
	leaq	1(%rcx), %rdi
	movslq	%esi, %r9
	cmpq	%r9, %rcx
	movq	%rdi, %rcx
	jl	.LBB32_2
.LBB32_7:                               # %._crit_edge69
	movq	520(%r8), %rsi
	movq	32(%rsi), %rax
	movl	$3, 16(%rax)
	movq	528(%r8), %r10
	movq	32(%r10), %rax
	movl	$1, %ecx
	movl	%ecx, 16(%rax)
	movq	400(%r8), %rax
	movq	8(%rax), %r11
	movq	32(%r11), %rcx
	movq	32(%rcx), %rdx
	movabsq	$4598355363530371236, %rcx      # imm = 0x3FD0A3D70A3D70A4
	movq	%rcx, 8(%rdx)
	movq	16(%rax), %rbx
	movq	32(%rbx), %rax
	movq	32(%rax), %r14
	movabsq	$-4614838538166547251, %rdi     # imm = 0xBFF4CCCCCCCCCCCD
	movq	%rdi, 8(%r14)
	movabsq	$4598895795485655695, %rax      # imm = 0x3FD28F5C28F5C28F
	movq	%rax, 16(%rdx)
	movq	%rdi, 16(%r14)
	movabsq	$4585925428558828667, %r9       # imm = 0x3FA47AE147AE147B
	movq	%r9, 24(%rdx)
	movabsq	$-4613937818241073152, %rcx     # imm = 0xBFF8000000000000
	movq	%rcx, 24(%r14)
	movabsq	$4591870180066957722, %rax      # imm = 0x3FB999999999999A
	movq	%rax, 32(%rdx)
	movabsq	$-4614388178203810202, %r15     # imm = 0xBFF6666666666666
	movq	%r15, 32(%r14)
	movq	%rax, 40(%rdx)
	movq	%r15, 40(%r14)
	movq	%rax, 48(%rdx)
	movq	%r15, 48(%r14)
	movabsq	$4589708452245819884, %r15      # imm = 0x3FB1EB851EB851EC
	movq	%r15, 56(%rdx)
	movq	%rcx, 56(%r14)
	movq	%r15, 64(%rdx)
	movq	%rcx, 64(%r14)
	movq	384(%r8), %r8
	movq	8(%r8), %rdx
	movq	32(%rdx), %r14
	movabsq	$4652007308841189376, %rcx      # imm = 0x408F400000000000
	movq	%rcx, 32(%r14)
	movq	%rcx, %r13
	movq	16(%r8), %r8
	movq	32(%r8), %r8
	movabsq	$4658815484840378368, %rdx      # imm = 0x40A7700000000000
	movq	%rdx, 32(%r8)
	movq	16(%rsi), %rsi
	movl	$1, %ecx
	movl	%ecx, 8(%rsi)
	movq	16(%r10), %rsi
	movl	%ecx, 8(%rsi)
	movl	$1, %ebp
	movq	16(%r11), %rsi
	movq	16(%rsi), %r10
	movq	%r15, 8(%r10)
	movq	16(%rbx), %rsi
	movq	16(%rsi), %r11
	movabsq	$-4611686018427387904, %rsi     # imm = 0xC000000000000000
	movq	%rsi, 8(%r11)
	movabsq	$4592590756007337001, %r8       # imm = 0x3FBC28F5C28F5C29
	movq	%r8, 16(%r10)
	movabsq	$-4611235658464650854, %r8      # imm = 0xC00199999999999A
	movq	%r8, 16(%r11)
	movabsq	$4587654810815738937, %rbx      # imm = 0x3FAA9FBE76C8B439
	movq	%rbx, 24(%r10)
	movabsq	$-4610560118520545280, %r14     # imm = 0xC004000000000000
	movq	%r14, 24(%r11)
	movq	%rbx, 32(%r10)
	movq	%r14, 32(%r11)
	movq	%rbx, 40(%r10)
	movq	%r14, 40(%r11)
	movq	%rbx, 48(%r10)
	movq	%r14, 48(%r11)
	movq	%rbx, 56(%r10)
	movq	%r14, 56(%r11)
	movq	%r9, 64(%r10)
	movq	gas(%rip), %r15
	movq	400(%r15), %r12
	movq	16(%r12), %r10
	movq	16(%r10), %r10
	movq	16(%r10), %r11
	movq	%r14, 56(%r11)
	movq	384(%r15), %rbx
	movq	8(%rbx), %r11
	movq	16(%r11), %r11
	movq	%r13, 16(%r11)
	movq	%r13, %rcx
	movq	16(%rbx), %rbx
	movq	16(%rbx), %rbx
	movq	%rdx, 16(%rbx)
	movq	520(%r15), %r14
	movq	16(%r14), %r14
	movl	$5, 16(%r14)
	movq	528(%r15), %r15
	movq	16(%r15), %r15
	movl	%ebp, 16(%r15)
	movq	8(%r12), %r12
	movq	16(%r12), %r12
	movq	32(%r12), %r13
	movabsq	$4594572339843380019, %rbp      # imm = 0x3FC3333333333333
	movq	%rbp, 8(%r13)
	movq	32(%r10), %rbp
	movq	%rsi, 8(%rbp)
	movq	%r9, 16(%r13)
	movq	%rdi, 16(%rbp)
	movq	%r9, 24(%r13)
	movq	%rdi, 24(%rbp)
	movq	%r9, 32(%r13)
	movq	%rdi, 32(%rbp)
	movq	%r9, 40(%r13)
	movq	%rdi, 40(%rbp)
	movabsq	$4596734067664517857, %rdi      # imm = 0x3FCAE147AE147AE1
	movq	%rdi, 48(%r13)
	movabsq	$-4611460838446019379, %rdi     # imm = 0xC000CCCCCCCCCCCD
	movq	%rdi, 48(%rbp)
	movabsq	$4595653203753948938, %rdi      # imm = 0x3FC70A3D70A3D70A
	movq	%rdi, 56(%r13)
	movabsq	$-4611010478483282330, %rdi     # imm = 0xC002666666666666
	movq	%rdi, 56(%rbp)
	movabsq	$4594932627813569659, %r9       # imm = 0x3FC47AE147AE147B
	movq	%r9, 64(%r13)
	movq	%rdi, 64(%rbp)
	movq	%rcx, %r13
	movq	%rcx, 32(%r11)
	movq	%rdx, 32(%rbx)
	movl	$6, 20(%r14)
	movl	$1, %ecx
	movl	%ecx, 20(%r15)
	movq	40(%r12), %rdi
	movq	%rax, 8(%rdi)
	movq	40(%r10), %r9
	movq	%rsi, 8(%r9)
	movq	%rax, 16(%rdi)
	movq	%rsi, 16(%r9)
	movabsq	$4567911030049346683, %rax      # imm = 0x3F647AE147AE147B
	movq	%rax, 24(%rdi)
	movq	%r8, 24(%r9)
	movq	gas(%rip), %rdi
	movq	400(%rdi), %r9
	movq	8(%r9), %r10
	movq	16(%r10), %r10
	movq	40(%r10), %r11
	movq	%rax, 32(%r11)
	movq	16(%r9), %r9
	movq	16(%r9), %r9
	movq	40(%r9), %rbx
	movq	%r8, 32(%rbx)
	movq	%rax, 40(%r11)
	movq	%r8, 40(%rbx)
	movabsq	$4564560351926583034, %r14      # imm = 0x3F589374BC6A7EFA
	movq	%r14, 48(%r11)
	movq	%r8, 48(%rbx)
	movabsq	$4568372198651189422, %r8       # imm = 0x3F661E4F765FD8AE
	movq	%r8, 56(%r11)
	movq	%rsi, 56(%rbx)
	movq	%rax, 64(%r11)
	movq	%rsi, 64(%rbx)
	movq	384(%rdi), %rsi
	movq	8(%rsi), %rax
	movq	16(%rax), %rax
	movq	%r13, 40(%rax)
	movq	16(%rsi), %rsi
	movq	16(%rsi), %rsi
	movq	%rdx, 40(%rsi)
	movq	520(%rdi), %r8
	movq	16(%r8), %r8
	movl	$7, 12(%r8)
	movq	528(%rdi), %rdi
	movq	16(%rdi), %rdi
	movl	%ecx, 12(%rdi)
	movq	24(%r10), %rdi
	movabsq	$4547007122018943789, %r8       # imm = 0x3F1A36E2EB1C432D
	movq	%r8, 8(%rdi)
	movq	24(%r9), %r9
	movabsq	$-4613037098315599053, %r10     # imm = 0xBFFB333333333333
	movq	%r10, 8(%r9)
	movq	%r8, 16(%rdi)
	movq	%r10, 16(%r9)
	movabsq	$4539475662290099561, %r8       # imm = 0x3EFF75104D551D69
	movq	%r8, 24(%rdi)
	movabsq	$-4613937818241073152, %rcx     # imm = 0xBFF8000000000000
	movq	%rcx, 24(%r9)
	movq	%r8, 32(%rdi)
	movq	%r10, 32(%r9)
	movq	%r8, 40(%rdi)
	movq	%r10, 40(%r9)
	movq	%r8, 48(%rdi)
	movq	%r10, 48(%r9)
	movabsq	$4533201175231652948, %rcx      # imm = 0x3EE92A737110E454
	movq	%rcx, 56(%rdi)
	movq	%r10, 56(%r9)
	movabsq	$4536524183238306033, %rcx      # imm = 0x3EF4F8B588E368F1
	movq	%rcx, 64(%rdi)
	movq	%r10, 64(%r9)
	movq	%r13, 24(%rax)
	movq	%rdx, 24(%rsi)
	movq	gas(%rip), %rax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movl	444(%rax), %eax
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	incl	%eax
	movq	%rax, 40(%rsp)                  # 8-byte Spill
	xorl	%eax, %eax
	movq	%rax, 8(%rsp)                   # 8-byte Spill
.LBB32_8:                               # %.preheader63
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB32_10 Depth 2
                                        #       Child Loop BB32_12 Depth 3
	cmpl	$0, 32(%rsp)                    # 4-byte Folded Reload
	js	.LBB32_16
# %bb.9:                                # %.preheader62.lr.ph
                                        #   in Loop: Header=BB32_8 Depth=1
	movq	24(%rsp), %rax                  # 8-byte Reload
	movl	424(%rax), %eax
	movq	gas(%rip), %r14
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	leal	1(%rax), %r13d
	xorl	%ebp, %ebp
.LBB32_10:                              # %.preheader62
                                        #   Parent Loop BB32_8 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB32_12 Depth 3
	cmpl	$0, 16(%rsp)                    # 4-byte Folded Reload
	js	.LBB32_15
# %bb.11:                               # %.preheader61.lr.ph
                                        #   in Loop: Header=BB32_10 Depth=2
	movl	424(%r14), %r15d
	leal	1(%r15), %ebx
	shlq	$3, %rbx
	xorl	%r12d, %r12d
.LBB32_12:                              # %.preheader61
                                        #   Parent Loop BB32_8 Depth=1
                                        #     Parent Loop BB32_10 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	testl	%r15d, %r15d
	js	.LBB32_14
# %bb.13:                               # %.lr.ph72
                                        #   in Loop: Header=BB32_12 Depth=3
	movq	392(%r14), %rax
	movq	8(%rsp), %rcx                   # 8-byte Reload
	movq	(%rax,%rcx,8), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r12,8), %rdi
	xorl	%esi, %esi
	movq	%rbx, %rdx
	callq	memset@PLT
.LBB32_14:                              # %._crit_edge73
                                        #   in Loop: Header=BB32_12 Depth=3
	incq	%r12
	cmpq	%r12, %r13
	jne	.LBB32_12
.LBB32_15:                              # %._crit_edge76
                                        #   in Loop: Header=BB32_10 Depth=2
	incq	%rbp
	cmpq	40(%rsp), %rbp                  # 8-byte Folded Reload
	jne	.LBB32_10
.LBB32_16:                              # %._crit_edge79
                                        #   in Loop: Header=BB32_8 Depth=1
	movq	8(%rsp), %rcx                   # 8-byte Reload
	incq	%rcx
	movq	%rcx, %rax
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	cmpq	$7, %rcx
	jne	.LBB32_8
# %bb.17:                               # %.preheader60
	movq	gas(%rip), %r8
	cmpl	$0, 444(%r8)
	js	.LBB32_30
# %bb.18:                               # %.preheader59.lr.ph
	movl	424(%r8), %edx
	xorl	%eax, %eax
.LBB32_19:                              # %.preheader59
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB32_20 Depth 2
                                        #       Child Loop BB32_22 Depth 3
                                        #         Child Loop BB32_24 Depth 4
	movq	gas(%rip), %rcx
	xorl	%esi, %esi
.LBB32_20:                              # %.preheader58
                                        #   Parent Loop BB32_19 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB32_22 Depth 3
                                        #         Child Loop BB32_24 Depth 4
	testl	%edx, %edx
	js	.LBB32_27
# %bb.21:                               # %.preheader57.lr.ph
                                        #   in Loop: Header=BB32_20 Depth=2
	movl	424(%rcx), %r9d
	xorl	%edi, %edi
.LBB32_22:                              # %.preheader57
                                        #   Parent Loop BB32_19 Depth=1
                                        #     Parent Loop BB32_20 Depth=2
                                        # =>    This Loop Header: Depth=3
                                        #         Child Loop BB32_24 Depth 4
	testl	%r9d, %r9d
	js	.LBB32_26
# %bb.23:                               # %.lr.ph83
                                        #   in Loop: Header=BB32_22 Depth=3
	movq	584(%rcx), %rdx
	movq	(%rdx,%rax,8), %rdx
	movq	(%rdx,%rsi,8), %rdx
	movq	(%rdx,%rdi,8), %rdx
	movq	$-1, %r10
.LBB32_24:                              #   Parent Loop BB32_19 Depth=1
                                        #     Parent Loop BB32_20 Depth=2
                                        #       Parent Loop BB32_22 Depth=3
                                        # =>      This Inner Loop Header: Depth=4
	movl	$0, 4(%rdx,%r10,4)
	movslq	424(%rcx), %r9
	incq	%r10
	cmpq	%r9, %r10
	jl	.LBB32_24
# %bb.25:                               # %._crit_edge84.loopexit
                                        #   in Loop: Header=BB32_22 Depth=3
	movl	424(%r8), %edx
.LBB32_26:                              # %._crit_edge84
                                        #   in Loop: Header=BB32_22 Depth=3
	leaq	1(%rdi), %r10
	movslq	%edx, %r11
	cmpq	%r11, %rdi
	movq	%r10, %rdi
	jl	.LBB32_22
.LBB32_27:                              # %._crit_edge87
                                        #   in Loop: Header=BB32_20 Depth=2
	incq	%rsi
	cmpq	$8, %rsi
	jne	.LBB32_20
# %bb.28:                               #   in Loop: Header=BB32_19 Depth=1
	leaq	1(%rax), %rcx
	movslq	444(%r8), %rsi
	cmpq	%rsi, %rax
	movq	%rcx, %rax
	jl	.LBB32_19
# %bb.29:                               # %.preheader56.loopexit
	movq	gas(%rip), %r8
.LBB32_30:                              # %.preheader56
	movl	424(%r8), %ecx
	testl	%ecx, %ecx
	js	.LBB32_35
# %bb.31:                               # %.preheader.lr.ph
	xorl	%eax, %eax
.LBB32_32:                              # %.preheader
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB32_37 Depth 2
	testl	%ecx, %ecx
	js	.LBB32_33
# %bb.36:                               # %.lr.ph93
                                        #   in Loop: Header=BB32_32 Depth=1
	movq	552(%r8), %rcx
	movq	(%rcx,%rax,8), %rdx
	movq	$-1, %rdi
.LBB32_37:                              #   Parent Loop BB32_32 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movl	$0, 4(%rdx,%rdi,4)
	movl	424(%r8), %ecx
	movslq	%ecx, %rsi
	incq	%rdi
	cmpq	%rsi, %rdi
	jl	.LBB32_37
	jmp	.LBB32_34
.LBB32_33:                              # %.preheader.._crit_edge94_crit_edge
                                        #   in Loop: Header=BB32_32 Depth=1
	movslq	%ecx, %rsi
.LBB32_34:                              # %._crit_edge94
                                        #   in Loop: Header=BB32_32 Depth=1
	leaq	1(%rax), %rdx
	cmpq	%rsi, %rax
	movq	%rdx, %rax
	jl	.LBB32_32
.LBB32_35:                              # %._crit_edge97
	movq	552(%r8), %rdx
	movq	8(%rdx), %rsi
	movl	$1, %eax
	movl	%eax, 12(%rsi)
	movq	16(%rdx), %rdi
	movl	$3, %ecx
	movl	%ecx, 28(%rdi)
	movl	$3, %ebp
	movl	%eax, 12(%rdi)
	movq	32(%rdx), %r9
	movl	%eax, 20(%r9)
	movl	%eax, 16(%rsi)
	movl	%eax, 20(%rdi)
	movl	%eax, 20(%rsi)
	movl	%eax, 24(%rdi)
	movl	$2, %ecx
	movl	%ecx, 24(%r9)
	movq	40(%rdx), %rsi
	movl	%ecx, 20(%rsi)
	movl	$2, %edi
	movl	%eax, 28(%r9)
	movq	24(%rdx), %rdx
	movl	%eax, 20(%rdx)
	movq	584(%r8), %rdx
	movq	8(%rdx), %rdx
	movq	8(%rdx), %r9
	movq	8(%r9), %rsi
	movl	%eax, 12(%rsi)
	movq	16(%rdx), %r10
	movq	8(%r10), %rsi
	movl	%ebp, 12(%rsi)
	movq	24(%rdx), %rsi
	movq	8(%rsi), %r11
	movl	$7, %ecx
	movl	%ecx, 12(%r11)
	movq	32(%rdx), %r11
	movq	8(%r11), %r11
	movl	%edi, 12(%r11)
	movq	40(%rdx), %r11
	movq	8(%r11), %r11
	movl	%eax, 12(%r11)
	movq	48(%rdx), %rdx
	movq	8(%rdx), %rdx
	movl	%eax, 12(%rdx)
	movq	392(%r8), %rdx
	movq	48(%rdx), %rdx
	movq	8(%rdx), %rdx
	movq	8(%rdx), %r11
	xorl	%edx, %edx
	movq	%rdx, 24(%r11)
	xorl	%edx, %edx
	movq	576(%r8), %r8
	movq	8(%r8), %r8
	movq	8(%r8), %r8
	movl	%eax, 12(%r8)
	movq	16(%r9), %r8
	movl	%ecx, 28(%r8)
	movq	16(%r10), %r8
	movl	%edi, 28(%r8)
	movq	gas(%rip), %r11
	movq	584(%r11), %r8
	movq	8(%r8), %r8
	movq	24(%r8), %r9
	movq	16(%r9), %r9
	movl	%eax, 28(%r9)
	movq	32(%r8), %r10
	movq	16(%r10), %r10
	movl	%ebp, 28(%r10)
	movq	40(%r8), %rbx
	movq	16(%rbx), %rbx
	movl	%eax, 28(%rbx)
	movq	48(%r8), %rbx
	movq	16(%rbx), %rbx
	movl	%eax, 28(%rbx)
	movq	56(%r8), %rbx
	movq	16(%rbx), %rbx
	movl	%eax, 28(%rbx)
	movq	392(%r11), %rbx
	movq	8(%rbx), %r14
	movq	8(%r14), %r14
	movq	16(%r14), %r14
	movabsq	$4626322717216342016, %r15      # imm = 0x4034000000000000
	movq	%r15, 56(%r14)
	movq	16(%rbx), %r14
	movq	8(%r14), %r14
	movq	16(%r14), %r14
	movabsq	$4600877379321698714, %r15      # imm = 0x3FD999999999999A
	movq	%r15, 56(%r14)
	movq	32(%rbx), %r14
	movq	8(%r14), %r14
	movq	16(%r14), %r14
	movabsq	$4656510908468559872, %rcx      # imm = 0x409F400000000000
	movq	%rcx, 56(%r14)
	movq	%rcx, %rdi
	movq	40(%rbx), %r14
	movq	8(%r14), %r14
	movq	16(%r14), %r14
	movabsq	$4658815484840378368, %rcx      # imm = 0x40A7700000000000
	movq	%rcx, 56(%r14)
	movq	%rcx, %r13
	movq	48(%rbx), %rbx
	movq	8(%rbx), %rbx
	movq	16(%rbx), %rbx
	movq	%rdx, 56(%rbx)
	movq	576(%r11), %r11
	movq	8(%r11), %r11
	movq	16(%r11), %r11
	movl	$2, %ecx
	movl	%ecx, 28(%r11)
	movq	8(%r8), %r11
	movq	16(%r11), %r11
	movl	%ebp, 12(%r11)
	movq	16(%r8), %r8
	movq	16(%r8), %r8
	movl	%ecx, 12(%r8)
	movl	$5, %r8d
	movl	%r8d, 12(%r9)
	movl	$4, %ecx
	movl	%ecx, 12(%r10)
	movl	$4, %esi
	movq	gas(%rip), %rbx
	movq	584(%rbx), %r10
	movq	8(%r10), %r11
	movq	40(%r11), %r14
	movq	16(%r14), %r10
	movl	%eax, 12(%r10)
	movq	48(%r11), %r15
	movq	16(%r15), %r10
	movl	%eax, 12(%r10)
	movq	392(%rbx), %r10
	movq	48(%r10), %r12
	movq	8(%r12), %r12
	movq	16(%r12), %r12
	movl	$0, %edx
	movq	%rdx, 24(%r12)
	movq	576(%rbx), %rbx
	movq	8(%rbx), %rbx
	movq	16(%rbx), %rbx
	movl	$3, %ecx
	movl	%ecx, 12(%rbx)
	movq	8(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%r8d, 20(%rbx)
	movq	16(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%esi, 20(%rbx)
	movq	24(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%ecx, 20(%rbx)
	movq	32(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	$2, %esi
	movl	%esi, 20(%rbx)
	movq	32(%r14), %rbx
	movl	%eax, 20(%rbx)
	movq	32(%r15), %rbx
	movl	%eax, 20(%rbx)
	movq	56(%r11), %r11
	movq	32(%r11), %r11
	movl	%eax, 20(%r11)
	movq	8(%r10), %r11
	movq	8(%r11), %r11
	movq	32(%r11), %r11
	movabsq	$4604029899060858061, %rbx      # imm = 0x3FE4CCCCCCCCCCCD
	movq	%rbx, 40(%r11)
	movq	16(%r10), %r11
	movq	8(%r11), %r11
	movq	32(%r11), %r11
	movabsq	$-4625016673324404572, %rbx     # imm = 0xBFD0A3D70A3D70A4
	movq	%rbx, 40(%r11)
	movq	32(%r10), %r11
	movq	8(%r11), %r11
	movq	32(%r11), %r11
	movq	%rdi, 40(%r11)
	movq	40(%r10), %r10
	movq	8(%r10), %r10
	movq	32(%r10), %r10
	movq	%r13, 40(%r10)
	movq	gas(%rip), %r11
	movq	392(%r11), %r10
	movq	48(%r10), %rbx
	movq	8(%rbx), %rbx
	movq	32(%rbx), %r14
	movq	%rdx, 40(%r14)
	movq	576(%r11), %r14
	movq	8(%r14), %r14
	movq	32(%r14), %r15
	movl	$4, %ecx
	movl	%ecx, 20(%r15)
	movq	584(%r11), %r11
	movq	8(%r11), %r11
	movq	8(%r11), %r15
	movq	8(%r15), %r12
	movl	%eax, 16(%r12)
	movq	16(%r11), %r12
	movq	8(%r12), %r13
	movl	%ecx, 16(%r13)
	movq	24(%r11), %r13
	movq	8(%r13), %rbp
	movl	%r8d, 16(%rbp)
	movq	32(%r11), %rbp
	movq	8(%rbp), %rcx
	movl	%esi, 16(%rcx)
	movl	$2, %edx
	movq	40(%r11), %rcx
	movq	8(%rcx), %rsi
	movl	%eax, 16(%rsi)
	movq	48(%r11), %rsi
	movq	8(%rsi), %r9
	movl	%eax, 16(%r9)
	movq	8(%rbx), %r9
	movl	$0, %edi
	movq	%rdi, 32(%r9)
	movq	8(%r14), %r9
	movl	%r8d, 16(%r9)
	movq	16(%r15), %r9
	movl	%r8d, 20(%r9)
	movq	16(%r12), %r9
	movl	%edx, 20(%r9)
	movq	16(%r13), %r9
	movl	%eax, 20(%r9)
	movq	16(%rbp), %r9
	movl	$4, %edx
	movl	%edx, 20(%r9)
	movq	16(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	16(%rsi), %rcx
	movl	%eax, 20(%rcx)
	movq	56(%r11), %rcx
	movq	16(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	8(%r10), %rcx
	movq	8(%rcx), %rcx
	movq	16(%rcx), %rcx
	movabsq	$4602678819172646912, %rbx      # imm = 0x3FE0000000000000
	movq	%rbx, 40(%rcx)
	movq	gas(%rip), %rcx
	movq	392(%rcx), %rsi
	movq	16(%rsi), %r9
	movq	8(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$-4626998257160447590, %r11     # imm = 0xBFC999999999999A
	movq	%r11, 40(%r9)
	movq	32(%rsi), %r9
	movq	8(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$4656510908468559872, %rdx      # imm = 0x409F400000000000
	movq	%rdx, 40(%r9)
	movq	40(%rsi), %r9
	movq	8(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$4658815484840378368, %r10      # imm = 0x40A7700000000000
	movq	%r10, 40(%r9)
	movq	48(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	16(%rsi), %rsi
	movq	%rdi, 40(%rsi)
	movq	576(%rcx), %r9
	movq	8(%r9), %r9
	movq	16(%r9), %r9
	movl	$6, %edx
	movl	%edx, 20(%r9)
	movq	584(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	8(%rcx), %r14
	movq	16(%r14), %r15
	movl	%edx, 24(%r15)
	movq	16(%rcx), %r15
	movq	16(%r15), %r12
	movl	$2, %edi
	movl	%edi, 24(%r12)
	movq	24(%rcx), %r12
	movq	16(%r12), %r13
	movl	%r8d, 24(%r13)
	movq	32(%rcx), %r13
	movq	16(%r13), %rbp
	movl	%eax, 24(%rbp)
	movq	40(%rcx), %rbp
	movq	16(%rbp), %rbp
	movl	%eax, 24(%rbp)
	movq	48(%rcx), %rcx
	movq	16(%rcx), %rcx
	movl	%eax, 24(%rcx)
	movabsq	$4327259717621961388, %rcx      # imm = 0x3C0D83C94FB6D2AC
	movq	%rcx, 48(%rsi)
	movl	$7, %ecx
	movl	%ecx, 24(%r9)
	movq	8(%r14), %rcx
	movl	%r8d, 20(%rcx)
	movq	8(%r15), %rcx
	movl	%eax, 20(%rcx)
	movq	8(%r12), %rcx
	movl	%edx, 20(%rcx)
	movq	8(%r13), %rcx
	movl	%edi, 20(%rcx)
	movq	gas(%rip), %r12
	movq	584(%r12), %rcx
	movq	8(%rcx), %r15
	movq	40(%r15), %r14
	movq	8(%r14), %rcx
	movl	%eax, 20(%rcx)
	movq	48(%r15), %rcx
	movq	8(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	56(%r15), %rcx
	movq	8(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	392(%r12), %rcx
	movq	8(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	%rbx, 40(%rsi)
	movq	16(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	%r11, 40(%rsi)
	movq	32(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	8(%rsi), %rsi
	movabsq	$4656510908468559872, %rbp      # imm = 0x409F400000000000
	movq	%rbp, 40(%rsi)
	movq	40(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	8(%rsi), %rsi
	movq	%r10, %r13
	movq	%r10, 40(%rsi)
	movq	48(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	8(%rcx), %rcx
	movl	$0, %edx
	movq	%rdx, 40(%rcx)
	movq	576(%r12), %rcx
	movq	8(%rcx), %rcx
	movq	8(%rcx), %rcx
	movl	$8, 20(%rcx)
	movq	8(%r15), %rcx
	movq	32(%rcx), %rcx
	movl	$6, %r10d
	movl	%r10d, 24(%rcx)
	movq	16(%r15), %rcx
	movq	32(%rcx), %rcx
	movl	$4, %r8d
	movl	%r8d, 24(%rcx)
	movq	24(%r15), %rcx
	movq	32(%rcx), %rcx
	movl	$5, %edx
	movl	%edx, 24(%rcx)
	movq	32(%r15), %rcx
	movq	32(%rcx), %rcx
	movl	%edx, 24(%rcx)
	movq	32(%r14), %rcx
	movl	%eax, 24(%rcx)
	movq	gas(%rip), %rcx
	movq	584(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	48(%rsi), %r9
	movq	32(%r9), %rbx
	movl	%eax, 24(%rbx)
	movq	392(%rcx), %rbx
	movq	48(%rbx), %r14
	movq	8(%r14), %r14
	movq	32(%r14), %r14
	movl	$0, %edi
	movq	%rdi, 48(%r14)
	movq	576(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	32(%rcx), %rcx
	movl	$9, 24(%rcx)
	movq	8(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%edx, 20(%rcx)
	movq	16(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%edx, 20(%rcx)
	movq	24(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%r10d, 20(%rcx)
	movq	32(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%r8d, 20(%rcx)
	movq	40(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	40(%r9), %rcx
	movl	%eax, 20(%rcx)
	movq	56(%rsi), %rcx
	movq	40(%rcx), %rcx
	movl	%eax, 20(%rcx)
	movq	8(%rbx), %rcx
	movq	8(%rcx), %rcx
	movq	40(%rcx), %rcx
	movabsq	$4599976659396224614, %rsi      # imm = 0x3FD6666666666666
	movq	%rsi, 40(%rcx)
	movq	16(%rbx), %rcx
	movq	8(%rcx), %rcx
	movq	40(%rcx), %rcx
	movq	%r11, 40(%rcx)
	movq	32(%rbx), %rcx
	movq	8(%rcx), %rcx
	movq	40(%rcx), %rcx
	movq	%rbp, 40(%rcx)
	movq	40(%rbx), %rcx
	movq	8(%rcx), %rcx
	movq	40(%rcx), %rcx
	movq	%r13, 40(%rcx)
	movq	gas(%rip), %rcx
	movq	392(%rcx), %rsi
	movq	48(%rsi), %rsi
	movq	8(%rsi), %r9
	movq	40(%r9), %r9
	movq	%rdi, 40(%r9)
	movl	$0, %r8d
	movq	576(%rcx), %r9
	movq	8(%r9), %r11
	movq	40(%r11), %r11
	movl	$10, 20(%r11)
	movq	584(%rcx), %rcx
	movq	16(%rcx), %r11
	movq	8(%r11), %rcx
	movq	40(%rcx), %rbx
	movl	%edx, 20(%rbx)
	movq	16(%r11), %rbx
	movq	40(%rbx), %r14
	movl	%edx, 20(%r14)
	movq	24(%r11), %r14
	movq	40(%r14), %r15
	movl	$7, %edi
	movl	%edi, 20(%r15)
	movq	32(%r11), %r15
	movq	40(%r15), %r12
	movl	$2, %edx
	movl	%edx, 20(%r12)
	movq	40(%r11), %r12
	movq	40(%r12), %r13
	movl	%eax, 20(%r13)
	movq	48(%r11), %r13
	movq	40(%r13), %rbp
	movl	%eax, 20(%rbp)
	movq	16(%rsi), %rsi
	movq	40(%rsi), %rsi
	movq	%r8, 40(%rsi)
	movq	16(%r9), %rsi
	movq	40(%rsi), %rsi
	movl	$11, 20(%rsi)
	movq	16(%rcx), %rcx
	movl	%edi, 28(%rcx)
	movq	16(%rbx), %rcx
	movl	%edx, 28(%rcx)
	movl	$2, %edi
	movq	16(%r14), %rcx
	movl	$5, %edx
	movl	%edx, 28(%rcx)
	movq	16(%r15), %rcx
	movl	%edx, 28(%rcx)
	movl	$5, %r8d
	movq	16(%r12), %rcx
	movl	%eax, 28(%rcx)
	movq	16(%r13), %rcx
	movl	%eax, 28(%rcx)
	movq	56(%r11), %rcx
	movq	16(%rcx), %rcx
	movl	%eax, 28(%rcx)
	movq	gas(%rip), %rcx
	movq	392(%rcx), %rsi
	movq	8(%rsi), %r9
	movq	16(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$4638144666238189568, %r11      # imm = 0x405E000000000000
	movq	%r11, 56(%r9)
	movq	16(%rsi), %r9
	movq	16(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$-4636005456415188582, %r11     # imm = 0xBFA999999999999A
	movq	%r11, 56(%r9)
	movq	32(%rsi), %r9
	movq	16(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$4656510908468559872, %r13      # imm = 0x409F400000000000
	movq	%r13, 56(%r9)
	movq	40(%rsi), %r9
	movq	16(%r9), %r9
	movq	16(%r9), %r9
	movabsq	$4658815484840378368, %r15      # imm = 0x40A7700000000000
	movq	%r15, 56(%r9)
	movq	48(%rsi), %rsi
	movq	16(%rsi), %rsi
	movq	16(%rsi), %r9
	movl	$0, %edx
	movq	%rdx, 56(%r9)
	movq	576(%rcx), %r9
	movq	16(%r9), %r9
	movq	16(%r9), %r11
	movl	$12, 28(%r11)
	movq	584(%rcx), %rcx
	movq	16(%rcx), %r11
	movq	8(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%r10d, 24(%rbx)
	movq	16(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	$4, %r14d
	movl	%r14d, 24(%rbx)
	movq	24(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	$7, %ebp
	movl	%ebp, 24(%rbx)
	movq	32(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%edi, 24(%rbx)
	movq	40(%r11), %rbx
	movq	32(%rbx), %rbx
	movl	%eax, 24(%rbx)
	movq	48(%r11), %r11
	movq	32(%r11), %r11
	movl	%eax, 24(%r11)
	movq	32(%rsi), %rsi
	movq	%rdx, 48(%rsi)
	movl	$0, %edx
	movq	32(%r9), %rsi
	movl	$13, 24(%rsi)
	movq	24(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	16(%rcx), %rcx
	movl	%ebp, 28(%rcx)
	movq	gas(%rip), %rbx
	movq	584(%rbx), %r11
	movq	24(%r11), %rcx
	movq	16(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	%edi, 28(%rsi)
	movq	24(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	%r10d, 28(%rsi)
	movq	32(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	%r14d, 28(%rsi)
	movl	$4, %r12d
	movq	40(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	%eax, 28(%rsi)
	movq	48(%rcx), %rsi
	movq	16(%rsi), %rsi
	movl	%eax, 28(%rsi)
	movq	56(%rcx), %rcx
	movq	16(%rcx), %rcx
	movl	%eax, 28(%rcx)
	movq	392(%rbx), %rcx
	movq	8(%rcx), %rsi
	movq	24(%rsi), %rsi
	movq	16(%rsi), %rsi
	movabsq	$4630826316843712512, %rdi      # imm = 0x4044000000000000
	movq	%rdi, 56(%rsi)
	movq	16(%rcx), %rsi
	movq	24(%rsi), %rsi
	movq	16(%rsi), %rsi
	movabsq	$-4616189618054758400, %rdi     # imm = 0xBFF0000000000000
	movq	%rdi, 56(%rsi)
	movq	32(%rcx), %rsi
	movq	24(%rsi), %rsi
	movq	16(%rsi), %rsi
	movq	%r13, 56(%rsi)
	movq	40(%rcx), %rsi
	movq	24(%rsi), %rsi
	movq	16(%rsi), %rsi
	movq	%r15, 56(%rsi)
	movq	48(%rcx), %rcx
	movq	24(%rcx), %rcx
	movq	16(%rcx), %rcx
	movq	%rdx, 56(%rcx)
	movq	576(%rbx), %rcx
	movq	24(%rcx), %rcx
	movq	16(%rcx), %rcx
	movl	$14, 28(%rcx)
	movq	8(%r11), %rcx
	movq	8(%rcx), %rsi
	movq	24(%rsi), %rsi
	movl	%r8d, 20(%rsi)
	movq	16(%rcx), %rcx
	movq	24(%rcx), %rcx
	movl	$3, %r15d
	movl	%r15d, 20(%rcx)
	movq	gas(%rip), %rcx
	movq	584(%rcx), %rsi
	movq	8(%rsi), %rdi
	movq	24(%rdi), %rsi
	movq	24(%rsi), %r9
	movl	%ebp, 20(%r9)
	movq	32(%rdi), %r9
	movq	24(%r9), %r10
	movl	%r12d, 20(%r10)
	movq	40(%rdi), %r11
	movq	24(%r11), %r10
	movl	%eax, 20(%r10)
	movq	48(%rdi), %rbx
	movq	24(%rbx), %r10
	movl	%eax, 20(%r10)
	movq	392(%rcx), %r10
	movq	48(%r10), %r14
	movq	8(%r14), %r14
	movq	24(%r14), %r14
	movq	%rdx, 40(%r14)
	movq	576(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	24(%rcx), %rcx
	movl	$15, 20(%rcx)
	movq	8(%rdi), %rcx
	movq	32(%rcx), %rcx
	movl	%ebp, 28(%rcx)
	movq	16(%rdi), %rcx
	movq	32(%rcx), %rcx
	movl	%r12d, 28(%rcx)
	movq	32(%rsi), %rcx
	movl	%r8d, 28(%rcx)
	movq	32(%r9), %rcx
	movl	%r15d, 28(%rcx)
	movq	32(%r11), %rcx
	movl	%eax, 28(%rcx)
	movq	32(%rbx), %rcx
	movl	%eax, 28(%rcx)
	movq	56(%rdi), %rcx
	movq	32(%rcx), %rcx
	movl	%eax, 28(%rcx)
	movq	8(%r10), %rax
	movq	8(%rax), %rax
	movq	32(%rax), %rax
	movabsq	$4636737291354636288, %rcx      # imm = 0x4059000000000000
	movq	%rcx, 56(%rax)
	movq	16(%r10), %rax
	movq	8(%rax), %rax
	movq	32(%rax), %rax
	movabsq	$4594572339843380019, %rcx      # imm = 0x3FC3333333333333
	movq	%rcx, 56(%rax)
	movq	32(%r10), %rax
	movq	8(%rax), %rax
	movq	32(%rax), %rax
	movq	%r13, 56(%rax)
	movq	gas(%rip), %rax
	movq	392(%rax), %rcx
	movq	40(%rcx), %rsi
	movq	8(%rsi), %rsi
	movq	32(%rsi), %rsi
	movabsq	$4658815484840378368, %rdi      # imm = 0x40A7700000000000
	movq	%rdi, 56(%rsi)
	movq	48(%rcx), %rcx
	movq	8(%rcx), %rcx
	movq	32(%rcx), %rcx
	movq	%rdx, 56(%rcx)
	movq	576(%rax), %rax
	movq	8(%rax), %rax
	movq	32(%rax), %rax
	movl	$16, 28(%rax)
	callq	_Z16DERIVED_GAS_DATAv
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.61, %esi
	movl	$25, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$168, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end32:
	.size	_Z15OXYGEN_HYDROGENv, .Lfunc_end32-_Z15OXYGEN_HYDROGENv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z4CQAXRdS_S_
.LCPI33_0:
	.quad	0x4024000000000000              # double 10
.LCPI33_1:
	.quad	0xbff0000000000000              # double -1
.LCPI33_3:
	.quad	0x3ff0000000000000              # double 1
.LCPI33_4:
	.quad	0xc000000000000000              # double -2
.LCPI33_5:
	.quad	0xc008000000000000              # double -3
.LCPI33_6:
	.quad	0x4008000000000000              # double 3
.LCPI33_7:
	.quad	0xc010000000000000              # double -4
.LCPI33_8:
	.quad	0x4010000000000000              # double 4
.LCPI33_9:
	.quad	0x40f86a0000000000              # double 1.0E+5
.LCPI33_10:
	.quad	0x3fe0000000000000              # double 0.5
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI33_2:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z4CQAXRdS_S_
	.type	_Z4CQAXRdS_S_,@function
_Z4CQAXRdS_S_:                          # @_Z4CQAXRdS_S_
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	subq	$72, %rsp
	.cfi_def_cfa_offset 112
	.cfi_offset %rbx, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %rbx
	movq	%rsi, %r15
	movq	%rdi, %r14
	movsd	(%rdi), %xmm0                   # xmm0 = mem[0],zero
	callq	tgamma
	movsd	(%r15), %xmm2                   # xmm2 = mem[0],zero
	movsd	.LCPI33_0(%rip), %xmm1          # xmm1 = mem[0],zero
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	ucomisd	%xmm2, %xmm1
	movsd	%xmm0, 32(%rsp)                 # 8-byte Spill
	jbe	.LBB33_4
# %bb.1:
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	divsd	.LCPI33_9(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	$0, (%rbx)
	xorpd	%xmm3, %xmm3
	movsd	.LCPI33_3(%rip), %xmm2          # xmm2 = mem[0],zero
	movl	$100000, %ebp                   # imm = 0x186A0
.LBB33_2:                               # =>This Inner Loop Header: Depth=1
	movsd	%xmm3, 16(%rsp)                 # 8-byte Spill
	movsd	%xmm2, 24(%rsp)                 # 8-byte Spill
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	%xmm2, %xmm0
	movapd	%xmm0, 48(%rsp)                 # 16-byte Spill
	xorpd	.LCPI33_2(%rip), %xmm0
	callq	exp
	movsd	%xmm0, 40(%rsp)                 # 8-byte Spill
	movsd	(%r14), %xmm1                   # xmm1 = mem[0],zero
	addsd	.LCPI33_1(%rip), %xmm1
	movapd	48(%rsp), %xmm0                 # 16-byte Reload
	callq	pow
	movsd	24(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	mulsd	40(%rsp), %xmm0                 # 8-byte Folded Reload
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	mulsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	mulsd	.LCPI33_10(%rip), %xmm1
	addsd	(%rbx), %xmm1
	movsd	%xmm1, (%rbx)
	addsd	.LCPI33_3(%rip), %xmm2
	movapd	%xmm0, %xmm3
	decl	%ebp
	jne	.LBB33_2
# %bb.3:
	divsd	32(%rsp), %xmm1                 # 8-byte Folded Reload
	movsd	.LCPI33_3(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	jmp	.LBB33_5
.LBB33_4:
	movsd	(%r14), %xmm1                   # xmm1 = mem[0],zero
	addsd	.LCPI33_1(%rip), %xmm1
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	pow
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	xorpd	.LCPI33_2(%rip), %xmm0
	callq	exp
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movsd	(%r14), %xmm4                   # xmm4 = mem[0],zero
	movapd	%xmm4, %xmm1
	addsd	.LCPI33_1(%rip), %xmm1
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	movapd	%xmm4, %xmm2
	addsd	.LCPI33_4(%rip), %xmm2
	mulsd	%xmm1, %xmm2
	divsd	%xmm0, %xmm1
	addsd	.LCPI33_3(%rip), %xmm1
	movapd	%xmm0, %xmm3
	mulsd	%xmm0, %xmm3
	addsd	.LCPI33_5(%rip), %xmm4
	mulsd	%xmm2, %xmm4
	movsd	%xmm4, 8(%rsp)                  # 8-byte Spill
	divsd	%xmm3, %xmm2
	addsd	%xmm1, %xmm2
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	movsd	.LCPI33_6(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	addsd	16(%rsp), %xmm1                 # 8-byte Folded Reload
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movsd	(%r14), %xmm2                   # xmm2 = mem[0],zero
	movsd	.LCPI33_1(%rip), %xmm0          # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	movsd	.LCPI33_4(%rip), %xmm1          # xmm1 = mem[0],zero
	addsd	%xmm2, %xmm1
	mulsd	%xmm0, %xmm1
	movsd	.LCPI33_5(%rip), %xmm0          # xmm0 = mem[0],zero
	addsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
	addsd	.LCPI33_7(%rip), %xmm2
	mulsd	%xmm0, %xmm2
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	movsd	.LCPI33_8(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	movapd	%xmm1, %xmm0
	addsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	divsd	32(%rsp), %xmm0                 # 8-byte Folded Reload
.LBB33_5:
	movsd	%xmm0, (%rbx)
	addq	$72, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end33:
	.size	_Z4CQAXRdS_S_, .Lfunc_end33-_Z4CQAXRdS_S_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN7GEOM_1D10i_allocateEiiRPPi,"axG",@progbits,_ZN7GEOM_1D10i_allocateEiiRPPi,comdat
	.weak	_ZN7GEOM_1D10i_allocateEiiRPPi  # -- Begin function _ZN7GEOM_1D10i_allocateEiiRPPi
	.p2align	1, 0x90
	.type	_ZN7GEOM_1D10i_allocateEiiRPPi,@function
_ZN7GEOM_1D10i_allocateEiiRPPi:         # @_ZN7GEOM_1D10i_allocateEiiRPPi
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,4), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB34_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$2, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB34_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB34_2
.LBB34_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end34:
	.size	_ZN7GEOM_1D10i_allocateEiiRPPi, .Lfunc_end34-_ZN7GEOM_1D10i_allocateEiiRPPi
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN7GEOM_1D10d_allocateEiiRPPd,"axG",@progbits,_ZN7GEOM_1D10d_allocateEiiRPPd,comdat
	.weak	_ZN7GEOM_1D10d_allocateEiiRPPd  # -- Begin function _ZN7GEOM_1D10d_allocateEiiRPPd
	.p2align	1, 0x90
	.type	_ZN7GEOM_1D10d_allocateEiiRPPd,@function
_ZN7GEOM_1D10d_allocateEiiRPPd:         # @_ZN7GEOM_1D10d_allocateEiiRPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,8), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB35_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$3, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB35_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB35_2
.LBB35_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end35:
	.size	_ZN7GEOM_1D10d_allocateEiiRPPd, .Lfunc_end35-_ZN7GEOM_1D10d_allocateEiiRPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN6OUTPUT10d_allocateEiiRPPd,"axG",@progbits,_ZN6OUTPUT10d_allocateEiiRPPd,comdat
	.weak	_ZN6OUTPUT10d_allocateEiiRPPd   # -- Begin function _ZN6OUTPUT10d_allocateEiiRPPd
	.p2align	1, 0x90
	.type	_ZN6OUTPUT10d_allocateEiiRPPd,@function
_ZN6OUTPUT10d_allocateEiiRPPd:          # @_ZN6OUTPUT10d_allocateEiiRPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,8), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB36_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$3, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB36_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB36_2
.LBB36_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end36:
	.size	_ZN6OUTPUT10d_allocateEiiRPPd, .Lfunc_end36-_ZN6OUTPUT10d_allocateEiiRPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN6OUTPUT10d_allocateEiiiRPPPd,"axG",@progbits,_ZN6OUTPUT10d_allocateEiiiRPPPd,comdat
	.weak	_ZN6OUTPUT10d_allocateEiiiRPPPd # -- Begin function _ZN6OUTPUT10d_allocateEiiiRPPPd
	.p2align	1, 0x90
	.type	_ZN6OUTPUT10d_allocateEiiiRPPPd,@function
_ZN6OUTPUT10d_allocateEiiiRPPPd:        # @_ZN6OUTPUT10d_allocateEiiiRPPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r8, %rbx
	movl	%ecx, %r15d
	movl	%edx, 12(%rsp)                  # 4-byte Spill
	movl	%esi, %r12d
	movslq	%esi, %r14
	leaq	(,%r14,8), %rsi
	movq	%r8, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB37_6
# %bb.1:                                # %.lr.ph19
	movslq	12(%rsp), %rax                  # 4-byte Folded Reload
	leaq	(,%rax,8), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	%r15d, %r15
	shlq	$3, %r15
	movl	%r12d, %r12d
	movl	%eax, %r13d
	shlq	$3, %r13
	xorl	%ebp, %ebp
.LBB37_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB37_4 Depth 2
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 12(%rsp)                    # 4-byte Folded Reload
	jle	.LBB37_5
# %bb.3:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB37_2 Depth=1
	xorl	%r14d, %r14d
.LBB37_4:                               # %.lr.ph
                                        #   Parent Loop BB37_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rdi
	addq	%r14, %rdi
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r14
	cmpq	%r14, %r13
	jne	.LBB37_4
.LBB37_5:                               # %._crit_edge
                                        #   in Loop: Header=BB37_2 Depth=1
	incq	%rbp
	cmpq	%r12, %rbp
	jne	.LBB37_2
.LBB37_6:                               # %._crit_edge20
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end37:
	.size	_ZN6OUTPUT10d_allocateEiiiRPPPd, .Lfunc_end37-_ZN6OUTPUT10d_allocateEiiiRPPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN6OUTPUT10d_allocateEiiiiRPPPPd,"axG",@progbits,_ZN6OUTPUT10d_allocateEiiiiRPPPPd,comdat
	.weak	_ZN6OUTPUT10d_allocateEiiiiRPPPPd # -- Begin function _ZN6OUTPUT10d_allocateEiiiiRPPPPd
	.p2align	1, 0x90
	.type	_ZN6OUTPUT10d_allocateEiiiiRPPPPd,@function
_ZN6OUTPUT10d_allocateEiiiiRPPPPd:      # @_ZN6OUTPUT10d_allocateEiiiiRPPPPd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%r9, %rbx
	movl	%r8d, %r13d
	movl	%ecx, 4(%rsp)                   # 4-byte Spill
	movl	%edx, (%rsp)                    # 4-byte Spill
	movl	%esi, %ebp
	movslq	%esi, %r14
	leaq	(,%r14,8), %rsi
	movq	%r9, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r14d, %r14d
	jle	.LBB38_9
# %bb.1:                                # %.lr.ph32
	movslq	(%rsp), %rax                    # 4-byte Folded Reload
	leaq	(,%rax,8), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movslq	4(%rsp), %rcx                   # 4-byte Folded Reload
	leaq	(,%rcx,8), %rdx
	movq	%rdx, 32(%rsp)                  # 8-byte Spill
	movslq	%r13d, %r13
	shlq	$3, %r13
	movl	%ebp, %edx
	movq	%rdx, 8(%rsp)                   # 8-byte Spill
	movl	%eax, %eax
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	movl	%ecx, %r14d
	shlq	$3, %r14
	xorl	%ebp, %ebp
.LBB38_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB38_4 Depth 2
                                        #       Child Loop BB38_6 Depth 3
	leaq	(,%rbp,8), %rdi
	addq	(%rbx), %rdi
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, (%rsp)                      # 4-byte Folded Reload
	jle	.LBB38_8
# %bb.3:                                # %.lr.ph28.preheader
                                        #   in Loop: Header=BB38_2 Depth=1
	xorl	%r12d, %r12d
.LBB38_4:                               # %.lr.ph28
                                        #   Parent Loop BB38_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB38_6 Depth 3
	movq	(%rbx), %rax
	leaq	(,%r12,8), %rdi
	addq	(%rax,%rbp,8), %rdi
	movq	32(%rsp), %rsi                  # 8-byte Reload
	movl	$1, %edx
	callq	hipMallocManaged
	cmpl	$0, 4(%rsp)                     # 4-byte Folded Reload
	jle	.LBB38_7
# %bb.5:                                # %.lr.ph.preheader
                                        #   in Loop: Header=BB38_4 Depth=2
	xorl	%r15d, %r15d
.LBB38_6:                               # %.lr.ph
                                        #   Parent Loop BB38_2 Depth=1
                                        #     Parent Loop BB38_4 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%rbx), %rax
	movq	(%rax,%rbp,8), %rax
	movq	(%rax,%r12,8), %rdi
	addq	%r15, %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r15
	cmpq	%r15, %r14
	jne	.LBB38_6
.LBB38_7:                               # %._crit_edge
                                        #   in Loop: Header=BB38_4 Depth=2
	incq	%r12
	cmpq	24(%rsp), %r12                  # 8-byte Folded Reload
	jne	.LBB38_4
.LBB38_8:                               # %._crit_edge29
                                        #   in Loop: Header=BB38_2 Depth=1
	incq	%rbp
	cmpq	8(%rsp), %rbp                   # 8-byte Folded Reload
	jne	.LBB38_2
.LBB38_9:                               # %._crit_edge33
	addq	$40, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end38:
	.size	_ZN6OUTPUT10d_allocateEiiiiRPPPPd, .Lfunc_end38-_ZN6OUTPUT10d_allocateEiiiiRPPPPd
	.cfi_endproc
                                        # -- End function
	.section	.text._ZN6MOLECS10d_allocateEiiRPPd,"axG",@progbits,_ZN6MOLECS10d_allocateEiiRPPd,comdat
	.weak	_ZN6MOLECS10d_allocateEiiRPPd   # -- Begin function _ZN6MOLECS10d_allocateEiiRPPd
	.p2align	1, 0x90
	.type	_ZN6MOLECS10d_allocateEiiRPPd,@function
_ZN6MOLECS10d_allocateEiiRPPd:          # @_ZN6MOLECS10d_allocateEiiRPPd
.Lfunc_begin6:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception6
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,8), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB39_9
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$3, %r14
	movl	%ebp, %r12d
	shlq	$3, %r12
	xorl	%r13d, %r13d
.LBB39_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r13, %rdi
.Ltmp2571:
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2572:
.LBB39_8:                               # %_ZL16hipMallocManagedIdE10hipError_tPPT_mj.exit
                                        #   in Loop: Header=BB39_2 Depth=1
	addq	$8, %r13
	cmpq	%r13, %r12
	jne	.LBB39_2
	jmp	.LBB39_9
.LBB39_3:                               #   in Loop: Header=BB39_2 Depth=1
.Ltmp2573:
	movq	%rax, %r15
	cmpl	$1, %edx
	jne	.LBB39_11
# %bb.4:                                #   in Loop: Header=BB39_2 Depth=1
	movq	%r15, %rdi
	callq	__cxa_begin_catch
	movq	%rax, %r15
.Ltmp2574:
	movl	$_ZSt4cerr, %edi
	movl	$.L.str.313, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2575:
# %bb.5:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
                                        #   in Loop: Header=BB39_2 Depth=1
	movq	(%r15), %rax
	movq	%r15, %rdi
	callq	*16(%rax)
.Ltmp2576:
	movl	$_ZSt4cerr, %edi
	movq	%rax, %rsi
	callq	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
.Ltmp2577:
# %bb.6:                                #   in Loop: Header=BB39_2 Depth=1
.Ltmp2578:
	movq	%rax, %rdi
	movl	$10, %esi
	callq	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c
.Ltmp2579:
# %bb.7:                                #   in Loop: Header=BB39_2 Depth=1
	callq	__cxa_end_catch
	jmp	.LBB39_8
.LBB39_9:                               # %._crit_edge
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB39_10:
	.cfi_def_cfa_offset 64
.Ltmp2580:
	movq	%rax, %r15
.Ltmp2581:
	callq	__cxa_end_catch
.Ltmp2582:
.LBB39_11:                              # %.loopexit
	movq	%r15, %rdi
	callq	_Unwind_Resume@PLT
.LBB39_12:
.Ltmp2583:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end39:
	.size	_ZN6MOLECS10d_allocateEiiRPPd, .Lfunc_end39-_ZN6MOLECS10d_allocateEiiRPPd
	.cfi_endproc
	.section	.gcc_except_table._ZN6MOLECS10d_allocateEiiRPPd,"aG",@progbits,_ZN6MOLECS10d_allocateEiiRPPd,comdat
	.p2align	2, 0x0
GCC_except_table39:
.Lexception6:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase2-.Lttbaseref2
.Lttbaseref2:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end6-.Lcst_begin6
.Lcst_begin6:
	.uleb128 .Lfunc_begin6-.Lfunc_begin6    # >> Call Site 1 <<
	.uleb128 .Ltmp2571-.Lfunc_begin6        #   Call between .Lfunc_begin6 and .Ltmp2571
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2571-.Lfunc_begin6        # >> Call Site 2 <<
	.uleb128 .Ltmp2572-.Ltmp2571            #   Call between .Ltmp2571 and .Ltmp2572
	.uleb128 .Ltmp2573-.Lfunc_begin6        #     jumps to .Ltmp2573
	.byte	3                               #   On action: 2
	.uleb128 .Ltmp2572-.Lfunc_begin6        # >> Call Site 3 <<
	.uleb128 .Ltmp2574-.Ltmp2572            #   Call between .Ltmp2572 and .Ltmp2574
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2574-.Lfunc_begin6        # >> Call Site 4 <<
	.uleb128 .Ltmp2575-.Ltmp2574            #   Call between .Ltmp2574 and .Ltmp2575
	.uleb128 .Ltmp2580-.Lfunc_begin6        #     jumps to .Ltmp2580
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2575-.Lfunc_begin6        # >> Call Site 5 <<
	.uleb128 .Ltmp2576-.Ltmp2575            #   Call between .Ltmp2575 and .Ltmp2576
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2576-.Lfunc_begin6        # >> Call Site 6 <<
	.uleb128 .Ltmp2579-.Ltmp2576            #   Call between .Ltmp2576 and .Ltmp2579
	.uleb128 .Ltmp2580-.Lfunc_begin6        #     jumps to .Ltmp2580
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2579-.Lfunc_begin6        # >> Call Site 7 <<
	.uleb128 .Ltmp2581-.Ltmp2579            #   Call between .Ltmp2579 and .Ltmp2581
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2581-.Lfunc_begin6        # >> Call Site 8 <<
	.uleb128 .Ltmp2582-.Ltmp2581            #   Call between .Ltmp2581 and .Ltmp2582
	.uleb128 .Ltmp2583-.Lfunc_begin6        #     jumps to .Ltmp2583
	.byte	5                               #   On action: 3
	.uleb128 .Ltmp2582-.Lfunc_begin6        # >> Call Site 9 <<
	.uleb128 .Lfunc_end39-.Ltmp2582         #   Call between .Ltmp2582 and .Lfunc_end39
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end6:
	.byte	0                               # >> Action Record 1 <<
                                        #   Cleanup
	.byte	0                               #   No further actions
	.byte	1                               # >> Action Record 2 <<
                                        #   Catch TypeInfo 1
	.byte	125                             #   Continue to action 1
	.byte	2                               # >> Action Record 3 <<
                                        #   Catch TypeInfo 2
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 2
	.long	_ZTISt9bad_alloc                # TypeInfo 1
.Lttbase2:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZN6MOLECS10i_allocateEiiRPPi,"axG",@progbits,_ZN6MOLECS10i_allocateEiiRPPi,comdat
	.weak	_ZN6MOLECS10i_allocateEiiRPPi   # -- Begin function _ZN6MOLECS10i_allocateEiiRPPi
	.p2align	1, 0x90
	.type	_ZN6MOLECS10i_allocateEiiRPPi,@function
_ZN6MOLECS10i_allocateEiiRPPi:          # @_ZN6MOLECS10i_allocateEiiRPPi
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, %rbx
	movl	%edx, %r14d
	movl	%esi, %ebp
	movslq	%esi, %r15
	leaq	(,%r15,4), %rsi
	movq	%rcx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	testl	%r15d, %r15d
	jle	.LBB40_3
# %bb.1:                                # %.lr.ph
	movslq	%r14d, %r14
	shlq	$2, %r14
	movl	%ebp, %r15d
	shlq	$3, %r15
	xorl	%r12d, %r12d
.LBB40_2:                               # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	addq	%r12, %rdi
	movq	%r14, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$8, %r12
	cmpq	%r12, %r15
	jne	.LBB40_2
.LBB40_3:                               # %._crit_edge
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end40:
	.size	_ZN6MOLECS10i_allocateEiiRPPi, .Lfunc_end40-_ZN6MOLECS10i_allocateEiiRPPi
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z12FIND_CELL_1DRdRiS0_
.LCPI41_0:
	.quad	0x3fefffffffffffa6              # double 0.99999999999999001
.LCPI41_1:
	.quad	0x3ff0000000000000              # double 1
.LCPI41_2:
	.quad	0x3feffffffffffff7              # double 0.999999999999999
.LCPI41_3:
	.quad	0x3fefffffffffffff              # double 0.99999999999999988
	.text
	.globl	_Z12FIND_CELL_1DRdRiS0_
	.type	_Z12FIND_CELL_1DRdRiS0_,@function
_Z12FIND_CELL_1DRdRiS0_:                # @_Z12FIND_CELL_1DRdRiS0_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdi, %rbx
	movsd	(%rdi), %xmm0                   # xmm0 = mem[0],zero
	movq	geom(%rip), %rax
	movq	64(%rax), %rcx
	movq	128(%rax), %rdi
	movapd	%xmm0, %xmm1
	subsd	8(%rdi), %xmm1
	divsd	72(%rax), %xmm1
	movsd	.LCPI41_0(%rip), %xmm2          # xmm2 = mem[0],zero
	addsd	%xmm1, %xmm2
	cvttsd2si	%xmm2, %r8d
	movq	(%rcx), %rdi
	movslq	%r8d, %r9
	movl	(%rdi,%r9,4), %edi
	testl	%edi, %edi
	js	.LBB41_1
# %bb.3:
	movl	20(%rax), %edi
	testl	%edi, %edi
	jle	.LBB41_12
# %bb.4:                                # %.lr.ph.preheader
	leal	-1(%r8), %r9d
	xorps	%xmm2, %xmm2
	cvtsi2sd	%r9d, %xmm2
	subsd	%xmm2, %xmm1
	incq	%rdi
	movl	$1, %r9d
	movsd	.LCPI41_1(%rip), %xmm2          # xmm2 = mem[0],zero
.LBB41_5:                               # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB41_6 Depth 2
	leaq	1(%r9), %r10
	xorps	%xmm4, %xmm4
	cvtsi2sd	%r10d, %xmm4
	movapd	%xmm2, %xmm3
	divsd	%xmm4, %xmm3
	movl	$2, %r11d
	movl	$1, %r14d
.LBB41_6:                               #   Parent Loop BB41_5 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpl	$2, %r11d
	jne	.LBB41_8
# %bb.7:                                #   in Loop: Header=BB41_6 Depth=2
	ucomisd	%xmm1, %xmm1
	jp	.LBB41_10
.LBB41_8:                               #   in Loop: Header=BB41_6 Depth=2
	movslq	%r8d, %r8
	movq	-8(%rcx,%r9,8), %r15
	movq	(%rcx,%r9,8), %r12
	movslq	(%r15,%r8,4), %r15
	leaq	(%r14,%r15), %r8
	movl	(%r12,%r8,4), %r8d
	testl	%r8d, %r8d
	js	.LBB41_13
# %bb.9:                                # %._crit_edge63
                                        #   in Loop: Header=BB41_6 Depth=2
	movl	%r15d, %r8d
	addq	%r14, %r8
.LBB41_10:                              #   in Loop: Header=BB41_6 Depth=2
	incq	%r14
	decl	%r11d
	jne	.LBB41_6
# %bb.11:                               #   in Loop: Header=BB41_5 Depth=1
	subsd	%xmm3, %xmm1
	movq	%r10, %r9
	cmpq	%rdi, %r10
	jne	.LBB41_5
.LBB41_12:                              # %._crit_edge
	movl	$file_9+16, %edi
	movl	$.L.str.154, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.LBB41_1:
	.cfi_def_cfa_offset 48
	negl	%edi
	movl	%edi, (%rdx)
	xorps	%xmm1, %xmm1
	cvtsi2sdl	8(%rax), %xmm1
	movq	136(%rax), %rcx
	movq	16(%rcx), %r8
	movq	24(%rcx), %rcx
	movsd	(%r8,%rdi,8), %xmm2             # xmm2 = mem[0],zero
	subsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
	movsd	(%rcx,%rdi,8), %xmm1            # xmm1 = mem[0],zero
	subsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	addsd	.LCPI41_3(%rip), %xmm0
	cvttsd2si	%xmm0, %ecx
	jmp	.LBB41_2
.LBB41_13:
	negl	%r8d
	movl	%r8d, (%rdx)
	xorps	%xmm1, %xmm1
	cvtsi2sdl	8(%rax), %xmm1
	movq	136(%rax), %rcx
	movq	16(%rcx), %rdi
	movq	24(%rcx), %rcx
	movsd	(%rdi,%r8,8), %xmm2             # xmm2 = mem[0],zero
	subsd	%xmm2, %xmm0
	mulsd	%xmm1, %xmm0
	movsd	(%rcx,%r8,8), %xmm1             # xmm1 = mem[0],zero
	subsd	%xmm2, %xmm1
	divsd	%xmm1, %xmm0
	addsd	.LCPI41_2(%rip), %xmm0
	cvttsd2si	%xmm0, %ecx
	cmpl	$1, %ecx
	adcl	$0, %ecx
.LBB41_2:
	movl	%ecx, (%rsi)
	movq	48(%rax), %rax
	movslq	(%rdx), %rdx
	addl	(%rax,%rdx,4), %ecx
	movl	%ecx, (%rsi)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end41:
	.size	_Z12FIND_CELL_1DRdRiS0_, .Lfunc_end41-_Z12FIND_CELL_1DRdRiS0_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z15FIND_CELL_MB_1DRdRiS0_S_
.LCPI42_0:
	.quad	0x3fefffffffffffa6              # double 0.99999999999999001
	.text
	.globl	_Z15FIND_CELL_MB_1DRdRiS0_S_
	.type	_Z15FIND_CELL_MB_1DRdRiS0_S_,@function
_Z15FIND_CELL_MB_1DRdRiS0_S_:           # @_Z15FIND_CELL_MB_1DRdRiS0_S_
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movq	%rdi, %rbx
	movq	geom(%rip), %rax
	movsd	88(%rax), %xmm0                 # xmm0 = mem[0],zero
	mulsd	(%rcx), %xmm0
	movq	128(%rax), %rcx
	addsd	16(%rcx), %xmm0
	movsd	8(%rcx), %xmm2                  # xmm2 = mem[0],zero
	subsd	%xmm2, %xmm0
	cvtsi2sdl	12(%rax), %xmm1
	divsd	%xmm1, %xmm0
	movsd	(%rdi), %xmm1                   # xmm1 = mem[0],zero
	movapd	%xmm1, %xmm3
	subsd	%xmm2, %xmm3
	divsd	%xmm0, %xmm3
	movsd	.LCPI42_0(%rip), %xmm4          # xmm4 = mem[0],zero
	addsd	%xmm4, %xmm3
	cvttsd2si	%xmm3, %ecx
	leal	-1(%rcx), %edi
	xorps	%xmm3, %xmm3
	cvtsi2sd	%edi, %xmm3
	mulsd	%xmm0, %xmm3
	movq	64(%rax), %rdi
	movq	(%rdi), %rdi
	movslq	%ecx, %rcx
	xorl	%r8d, %r8d
	subl	(%rdi,%rcx,4), %r8d
	addsd	%xmm2, %xmm3
	movl	%r8d, (%rdx)
	xorps	%xmm2, %xmm2
	cvtsi2sdl	8(%rax), %xmm2
	subsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm1
	divsd	%xmm0, %xmm1
	addsd	%xmm4, %xmm1
	cvttsd2si	%xmm1, %ecx
	movl	%ecx, (%rsi)
	movq	48(%rax), %rax
	movslq	(%rdx), %rdx
	addl	(%rax,%rdx,4), %ecx
	movl	%ecx, (%rsi)
	movl	$file_9+16, %edi
	movl	$.L.str.154, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	movl	$file_9+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_ZNSo5flushEv                   # TAILCALL
.Lfunc_end42:
	.size	_Z15FIND_CELL_MB_1DRdRiS0_S_, .Lfunc_end42-_Z15FIND_CELL_MB_1DRdRiS0_S_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z5RVELCRdS_S_
.LCPI43_0:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI43_2:
	.quad	0x8000000000000000              # double -0
.LCPI43_3:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI43_1:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z5RVELCRdS_S_
	.type	_Z5RVELCRdS_S_,@function
_Z5RVELCRdS_S_:                         # @_Z5RVELCRdS_S_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %rbx
	movq	%rdi, %r15
	callq	rand
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI43_0(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	callq	log
	movapd	%xmm0, %xmm1
	movapd	.LCPI43_1(%rip), %xmm0          # xmm0 = [-0.0E+0,-0.0E+0]
	xorpd	%xmm1, %xmm0
	movsd	.LCPI43_2(%rip), %xmm2          # xmm2 = mem[0],zero
	ucomisd	%xmm1, %xmm2
	jb	.LBB43_2
# %bb.1:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB43_3
.LBB43_2:                               # %call.sqrt
	callq	sqrt
.LBB43_3:                               # %.split
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI43_0(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI43_3(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	callq	sin
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	mulsd	(%r14), %xmm0
	movsd	%xmm0, (%r15)
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	cos
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	mulsd	(%r14), %xmm0
	movsd	%xmm0, (%rbx)
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end43:
	.size	_Z5RVELCRdS_S_, .Lfunc_end43-_Z5RVELCRdS_S_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z4SROTRiRdS0_
.LCPI44_0:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI44_1:
	.quad	0xbff0000000000000              # double -1
.LCPI44_2:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI44_3:
	.quad	0x4024000000000000              # double 10
.LCPI44_4:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI44_5:
	.quad	0xbb30b0edf6c91c1b              # double -1.3806580000000001E-23
	.text
	.globl	_Z4SROTRiRdS0_
	.type	_Z4SROTRiRdS0_,@function
_Z4SROTRiRdS0_:                         # @_Z4SROTRiRdS0_
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movq	%rdx, %rbx
	movq	%rsi, %r14
	movq	gas(%rip), %rax
	movq	488(%rax), %rax
	movq	8(%rax), %rax
	movslq	(%rdi), %rcx
	movl	(%rax,%rcx,4), %eax
	cmpl	$2, %eax
	jne	.LBB44_2
# %bb.1:
	callq	rand
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI44_2(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	callq	log
	mulsd	.LCPI44_5(%rip), %xmm0
	jmp	.LBB44_5
.LBB44_2:
	cvtsi2sd	%eax, %xmm0
	mulsd	.LCPI44_0(%rip), %xmm0
	addsd	.LCPI44_1(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.LBB44_3:                               # %.backedge
                                        # =>This Inner Loop Header: Depth=1
	callq	rand
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	movsd	.LCPI44_2(%rip), %xmm0          # xmm0 = mem[0],zero
	divsd	%xmm0, %xmm1
	movq	calc(%rip), %rax
	movsd	%xmm1, 152(%rax)
	mulsd	.LCPI44_3(%rip), %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movapd	%xmm1, %xmm0
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	divsd	%xmm1, %xmm0
	callq	pow
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	subsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	callq	exp
	mulsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI44_2(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB44_3
# %bb.4:
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	.LCPI44_4(%rip), %xmm0
.LBB44_5:
	mulsd	(%r14), %xmm0
	movsd	%xmm0, (%rbx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end44:
	.size	_Z4SROTRiRdS0_, .Lfunc_end44-_Z4SROTRiRdS0_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z4SVIBRiRdS_S_
.LCPI45_0:
	.quad	0x41dfffffffc00000              # double 2147483647
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI45_1:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z4SVIBRiRdS_S_
	.type	_Z4SVIBRiRdS_S_,@function
_Z4SVIBRiRdS_S_:                        # @_Z4SVIBRiRdS_S_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rcx, %r14
	movq	%rdx, %rbx
	movq	%rsi, %r15
	movq	%rdi, %r12
	callq	rand
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI45_0(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	callq	log
	xorpd	.LCPI45_1(%rip), %xmm0
	mulsd	(%r15), %xmm0
	movq	gas(%rip), %rax
	movq	360(%rax), %rax
	movq	8(%rax), %rax
	movslq	(%r14), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	(%r12), %rcx
	divsd	(%rax,%rcx,8), %xmm0
	cvttsd2si	%xmm0, %eax
	movl	%eax, (%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end45:
	.size	_Z4SVIBRiRdS_S_, .Lfunc_end45-_Z4SVIBRiRdS_S_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z4SELERiRdS0_
.LCPI46_0:
	.quad	0x3fb999999999999a              # double 0.10000000000000001
.LCPI46_2:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI46_3:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI46_1:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z4SELERiRdS0_
	.type	_Z4SELERiRdS0_,@function
_Z4SELERiRdS0_:                         # @_Z4SELERiRdS0_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	subq	$24, %rsp
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %rbx
	movsd	(%rsi), %xmm1                   # xmm1 = mem[0],zero
	xorpd	%xmm0, %xmm0
	ucomisd	.LCPI46_0(%rip), %xmm1
	jbe	.LBB46_7
# %bb.1:                                # %.preheader
	movq	%rsi, %r15
	movq	%rdi, %r14
	movq	gas(%rip), %rcx
	movq	480(%rcx), %rdx
	movslq	(%rdi), %rax
	cmpl	$0, (%rdx,%rax,4)
	jle	.LBB46_4
# %bb.2:                                # %.lr.ph.preheader
	xorl	%r12d, %r12d
.LBB46_3:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movq	376(%rcx), %rcx
	movq	8(%rcx), %rdx
	movq	16(%rcx), %rcx
	movq	8(%rdx,%r12,8), %rdx
	movsd	(%rdx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	8(%rcx,%r12,8), %rcx
	movsd	(%rcx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	xorpd	.LCPI46_1(%rip), %xmm0
	divsd	(%r15), %xmm0
	callq	exp
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movq	gas(%rip), %rcx
	movq	480(%rcx), %rdx
	movslq	(%r14), %rax
	movslq	(%rdx,%rax,4), %rdx
	incq	%r12
	cmpq	%rdx, %r12
	jl	.LBB46_3
.LBB46_4:                               # %._crit_edge
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI46_2(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	xorl	%r12d, %r12d
	xorpd	%xmm1, %xmm1
.LBB46_5:                               # =>This Inner Loop Header: Depth=1
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %rax
	movq	376(%rax), %rax
	movq	8(%rax), %rcx
	movq	16(%rax), %rax
	movq	8(%rcx,%r12), %rcx
	movslq	(%r14), %rdx
	movsd	(%rcx,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movq	8(%rax,%r12), %rax
	movsd	(%rax,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	xorpd	.LCPI46_1(%rip), %xmm0
	divsd	(%r15), %xmm0
	callq	exp
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	mulsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	%xmm0, %xmm1
	movapd	%xmm1, %xmm0
	divsd	(%rsp), %xmm0                   # 8-byte Folded Reload
	movq	calc(%rip), %rax
	addq	$8, %r12
	ucomisd	152(%rax), %xmm0
	jbe	.LBB46_5
# %bb.6:                                # %.loopexit.loopexit
	movq	gas(%rip), %rax
	movq	376(%rax), %rax
	movq	16(%rax), %rax
	movq	(%rax,%r12), %rax
	movslq	(%r14), %rcx
	movsd	(%rax,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	.LCPI46_3(%rip), %xmm0
.LBB46_7:                               # %.loopexit
	movsd	%xmm0, (%rbx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end46:
	.size	_Z4SELERiRdS0_, .Lfunc_end46-_Z4SELERiRdS0_
	.cfi_endproc
                                        # -- End function
	.globl	_Z10EXTEND_MNMd                 # -- Begin function _Z10EXTEND_MNMd
	.type	_Z10EXTEND_MNMd,@function
_Z10EXTEND_MNMd:                        # @_Z10EXTEND_MNMd
.Lfunc_begin7:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception7
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$552, %rsp                      # imm = 0x228
	.cfi_def_cfa_offset 608
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	leaq	24(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	movq	molecs(%rip), %rax
	xorps	%xmm0, %xmm0
	cvtsi2sdl	84(%rax), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
.Ltmp2584:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.170, %esi
	movl	$51, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2585:
# %bb.1:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	molecs(%rip), %rax
	movl	84(%rax), %esi
.Ltmp2586:
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
.Ltmp2587:
# %bb.2:
.Ltmp2588:
	movq	%rax, %r14
	movl	$.L.str.42, %esi
	movl	$4, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2589:
# %bb.3:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit202
.Ltmp2590:
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	16(%rsp), %xmm0                 # 8-byte Folded Reload
	cvttsd2si	%xmm0, %ebx
	movq	%r14, %rdi
	movl	%ebx, %esi
	callq	_ZNSolsEi
.Ltmp2591:
# %bb.4:
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
.Ltmp2592:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2593:
# %bb.5:                                # %.noexc
.Ltmp2594:
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
.Ltmp2595:
# %bb.6:                                # %.noexc290
.Ltmp2596:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2597:
# %bb.7:                                # %_ZNSolsEPFRSoS_E.exit
.Ltmp2598:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.171, %esi
	movl	$46, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2599:
# %bb.8:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit203
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2600:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2601:
# %bb.9:                                # %.noexc292
.Ltmp2602:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2603:
# %bb.10:                               # %.noexc293
.Ltmp2604:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2605:
# %bb.11:                               # %_ZNSolsEPFRSoS_E.exit204
.Ltmp2606:
	leaq	24(%rsp), %rdi
	movl	$.L.str.172, %esi
	movl	$20, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2607:
# %bb.12:                               # %.invoke645
	leaq	152(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.173, %ecx
	movl	$.L.str.174, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$22, %edx
	subq	%rax, %rdx
.Ltmp2608:
	movl	$_ZSt4cout, %r15d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2609:
# %bb.13:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit207.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r15
.Ltmp2610:
	movq	%r15, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2611:
# %bb.14:                               # %.noexc300.invoke
.Ltmp2612:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2613:
# %bb.15:                               # %.noexc301.invoke
.Ltmp2614:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2615:
# %bb.16:                               # %_ZNSolsEPFRSoS_E.exit206
.Ltmp2616:
	movl	$_ZSt4cout, %r15d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.175, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2617:
# %bb.17:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit209
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r15
.Ltmp2618:
	movq	%r15, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2619:
# %bb.18:                               # %.noexc304
.Ltmp2620:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2621:
# %bb.19:                               # %.noexc305
.Ltmp2622:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2623:
# %bb.20:                               # %_ZNSolsEPFRSoS_E.exit210.preheader
	movq	molecs(%rip), %rax
	cmpl	$0, 84(%rax)
	jle	.LBB47_148
# %bb.21:                               # %.lr.ph478
	movl	$1, %r13d
	leaq	40(%rsp), %r15
.LBB47_22:                              # =>This Loop Header: Depth=1
                                        #     Child Loop BB47_122 Depth 2
                                        #     Child Loop BB47_90 Depth 2
                                        #     Child Loop BB47_36 Depth 2
                                        #     Child Loop BB47_59 Depth 2
	movq	gas(%rip), %rcx
	cmpl	$0, 428(%rcx)
	jle	.LBB47_76
# %bb.23:                               #   in Loop: Header=BB47_22 Depth=1
	movq	40(%rax), %rax
	movq	calc(%rip), %rcx
	movslq	60(%rcx), %rcx
	movq	(%rax,%rcx,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2754:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2755:
# %bb.24:                               # %_ZNSolsEd.exit
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2756:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2757:
# %bb.25:                               # %.noexc308
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2758:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2759:
# %bb.26:                               # %.noexc309
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2760:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2761:
# %bb.27:                               # %_ZNSolsEPFRSoS_E.exit211
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2762:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2763:
# %bb.28:                               # %_ZNSolsEd.exit212
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2764:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2765:
# %bb.29:                               # %.noexc312
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2766:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2767:
# %bb.30:                               # %.noexc313
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2768:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2769:
# %bb.31:                               # %_ZNSolsEPFRSoS_E.exit213
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	64(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2770:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2771:
# %bb.32:                               # %_ZNSolsEd.exit214
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2772:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2773:
# %bb.33:                               # %.noexc316
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2774:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2775:
# %bb.34:                               # %.noexc317
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2776:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2777:
# %bb.35:                               # %_ZNSolsEPFRSoS_E.exit215.preheader.preheader
                                        #   in Loop: Header=BB47_22 Depth=1
	movl	$1, %ebp
.LBB47_36:                              # %_ZNSolsEPFRSoS_E.exit215.preheader
                                        #   Parent Loop BB47_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2778:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2779:
# %bb.37:                               # %_ZNSolsEd.exit216
                                        #   in Loop: Header=BB47_36 Depth=2
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2780:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2781:
# %bb.38:                               # %.noexc320
                                        #   in Loop: Header=BB47_36 Depth=2
.Ltmp2782:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2783:
# %bb.39:                               # %.noexc321
                                        #   in Loop: Header=BB47_36 Depth=2
.Ltmp2784:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2785:
# %bb.40:                               # %_ZNSolsEPFRSoS_E.exit217
                                        #   in Loop: Header=BB47_36 Depth=2
	incq	%rbp
	cmpq	$4, %rbp
	jne	.LBB47_36
# %bb.41:                               #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rax
	movq	8(%rax), %rax
	movl	(%rax,%r13,4), %esi
.Ltmp2787:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp2788:
# %bb.42:                               #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2789:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2790:
# %bb.43:                               # %.noexc324
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2791:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2792:
# %bb.44:                               # %.noexc325
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2793:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2794:
# %bb.45:                               # %_ZNSolsEPFRSoS_E.exit218
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2795:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2796:
# %bb.46:                               #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2797:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2798:
# %bb.47:                               # %.noexc328
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2799:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2800:
# %bb.48:                               # %.noexc329
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2801:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2802:
# %bb.49:                               # %_ZNSolsEPFRSoS_E.exit219
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	16(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2803:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2804:
# %bb.50:                               #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2805:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2806:
# %bb.51:                               # %.noexc332
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2807:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2808:
# %bb.52:                               # %.noexc333
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2809:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2810:
# %bb.53:                               # %_ZNSolsEPFRSoS_E.exit220
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	24(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2811:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2812:
# %bb.54:                               #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2813:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2814:
# %bb.55:                               # %.noexc336
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2815:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2816:
# %bb.56:                               # %.noexc337
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2817:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2818:
# %bb.57:                               # %_ZNSolsEPFRSoS_E.exit221.preheader
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB47_64
# %bb.58:                               # %.lr.ph.preheader
                                        #   in Loop: Header=BB47_22 Depth=1
	xorl	%ebp, %ebp
.LBB47_59:                              # %.lr.ph
                                        #   Parent Loop BB47_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	32(%rax), %rax
	movq	8(%rax,%rbp,8), %rax
	movl	(%rax,%r13,4), %esi
.Ltmp2819:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp2820:
# %bb.60:                               #   in Loop: Header=BB47_59 Depth=2
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2821:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2822:
# %bb.61:                               # %.noexc340
                                        #   in Loop: Header=BB47_59 Depth=2
.Ltmp2823:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2824:
# %bb.62:                               # %.noexc341
                                        #   in Loop: Header=BB47_59 Depth=2
.Ltmp2825:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2826:
# %bb.63:                               # %_ZNSolsEPFRSoS_E.exit222
                                        #   in Loop: Header=BB47_59 Depth=2
	movq	gas(%rip), %rax
	movslq	428(%rax), %rax
	incq	%rbp
	cmpq	%rax, %rbp
	jl	.LBB47_59
.LBB47_64:                              # %_ZNSolsEPFRSoS_E.exit221._crit_edge
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rax
	movq	72(%rax), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2828:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2829:
# %bb.65:                               # %_ZNSolsEd.exit223
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2830:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2831:
	jmp	.LBB47_145
.LBB47_76:                              #   in Loop: Header=BB47_22 Depth=1
	cmpl	$0, 432(%rcx)
	movq	40(%rax), %rax
	movq	calc(%rip), %rcx
	movslq	60(%rcx), %rcx
	movq	(%rax,%rcx,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
	jle	.LBB47_113
# %bb.77:                               #   in Loop: Header=BB47_22 Depth=1
.Ltmp2685:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2686:
# %bb.78:                               # %_ZNSolsEd.exit225
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2687:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2688:
# %bb.79:                               # %.noexc348
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2689:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2690:
# %bb.80:                               # %.noexc349
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2691:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2692:
# %bb.81:                               # %_ZNSolsEPFRSoS_E.exit226
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2693:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2694:
# %bb.82:                               # %_ZNSolsEd.exit227
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2695:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2696:
# %bb.83:                               # %.noexc352
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2697:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2698:
# %bb.84:                               # %.noexc353
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2699:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2700:
# %bb.85:                               # %_ZNSolsEPFRSoS_E.exit228
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	64(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2701:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2702:
# %bb.86:                               # %_ZNSolsEd.exit229
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2703:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2704:
# %bb.87:                               # %.noexc356
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2705:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2706:
# %bb.88:                               # %.noexc357
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2707:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2708:
# %bb.89:                               # %_ZNSolsEPFRSoS_E.exit230.preheader.preheader
                                        #   in Loop: Header=BB47_22 Depth=1
	movl	$1, %ebp
.LBB47_90:                              # %_ZNSolsEPFRSoS_E.exit230.preheader
                                        #   Parent Loop BB47_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2709:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2710:
# %bb.91:                               # %_ZNSolsEd.exit231
                                        #   in Loop: Header=BB47_90 Depth=2
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2711:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2712:
# %bb.92:                               # %.noexc360
                                        #   in Loop: Header=BB47_90 Depth=2
.Ltmp2713:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2714:
# %bb.93:                               # %.noexc361
                                        #   in Loop: Header=BB47_90 Depth=2
.Ltmp2715:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2716:
# %bb.94:                               # %_ZNSolsEPFRSoS_E.exit232
                                        #   in Loop: Header=BB47_90 Depth=2
	incq	%rbp
	cmpq	$4, %rbp
	jne	.LBB47_90
# %bb.95:                               #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rax
	movq	8(%rax), %rax
	movl	(%rax,%r13,4), %esi
.Ltmp2718:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp2719:
# %bb.96:                               #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2720:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2721:
# %bb.97:                               # %.noexc364
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2722:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2723:
# %bb.98:                               # %.noexc365
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2724:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2725:
# %bb.99:                               # %_ZNSolsEPFRSoS_E.exit233
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2726:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2727:
# %bb.100:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2728:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2729:
# %bb.101:                              # %.noexc368
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2730:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2731:
# %bb.102:                              # %.noexc369
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2732:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2733:
# %bb.103:                              # %_ZNSolsEPFRSoS_E.exit234
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	16(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2734:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2735:
# %bb.104:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2736:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2737:
# %bb.105:                              # %.noexc372
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2738:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2739:
# %bb.106:                              # %.noexc373
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2740:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2741:
# %bb.107:                              # %_ZNSolsEPFRSoS_E.exit235
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	24(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2742:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2743:
# %bb.108:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2744:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2745:
# %bb.109:                              # %.noexc376
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2746:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2747:
# %bb.110:                              # %.noexc377
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2748:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2749:
# %bb.111:                              # %_ZNSolsEPFRSoS_E.exit236
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	72(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2750:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2751:
# %bb.112:                              # %_ZNSolsEd.exit237
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2752:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2753:
	jmp	.LBB47_145
.LBB47_113:                             #   in Loop: Header=BB47_22 Depth=1
.Ltmp2624:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2625:
# %bb.114:                              # %_ZNSolsEd.exit239
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2626:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2627:
# %bb.115:                              # %.noexc384
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2628:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2629:
# %bb.116:                              # %.noexc385
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2630:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2631:
# %bb.117:                              # %_ZNSolsEPFRSoS_E.exit240
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2632:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2633:
# %bb.118:                              # %_ZNSolsEd.exit241
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2634:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2635:
# %bb.119:                              # %.noexc388
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2636:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2637:
# %bb.120:                              # %.noexc389
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2638:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2639:
# %bb.121:                              # %_ZNSolsEPFRSoS_E.exit242.preheader.preheader
                                        #   in Loop: Header=BB47_22 Depth=1
	movl	$1, %ebp
.LBB47_122:                             # %_ZNSolsEPFRSoS_E.exit242.preheader
                                        #   Parent Loop BB47_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%rbp,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2640:
	movq	%r15, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2641:
# %bb.123:                              # %_ZNSolsEd.exit243
                                        #   in Loop: Header=BB47_122 Depth=2
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2642:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2643:
# %bb.124:                              # %.noexc392
                                        #   in Loop: Header=BB47_122 Depth=2
.Ltmp2644:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2645:
# %bb.125:                              # %.noexc393
                                        #   in Loop: Header=BB47_122 Depth=2
.Ltmp2646:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2647:
# %bb.126:                              # %_ZNSolsEPFRSoS_E.exit244
                                        #   in Loop: Header=BB47_122 Depth=2
	incq	%rbp
	cmpq	$4, %rbp
	jne	.LBB47_122
# %bb.127:                              #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rax
	movq	8(%rax), %rax
	movl	(%rax,%r13,4), %esi
.Ltmp2649:
	movq	%r15, %rdi
	callq	_ZNSolsEi
.Ltmp2650:
# %bb.128:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2651:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2652:
# %bb.129:                              # %.noexc396
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2653:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2654:
# %bb.130:                              # %.noexc397
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2655:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2656:
# %bb.131:                              # %_ZNSolsEPFRSoS_E.exit245
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2657:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2658:
# %bb.132:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2659:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2660:
# %bb.133:                              # %.noexc400
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2661:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2662:
# %bb.134:                              # %.noexc401
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2663:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2664:
# %bb.135:                              # %_ZNSolsEPFRSoS_E.exit246
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	16(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2665:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2666:
# %bb.136:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2667:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2668:
# %bb.137:                              # %.noexc404
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2669:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2670:
# %bb.138:                              # %.noexc405
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2671:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2672:
# %bb.139:                              # %_ZNSolsEPFRSoS_E.exit247
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	24(%rcx), %rcx
	movl	(%rcx,%r13,4), %esi
.Ltmp2673:
	movq	%rax, %rdi
	callq	_ZNSolsEi
.Ltmp2674:
# %bb.140:                              #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2675:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2676:
# %bb.141:                              # %.noexc408
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2677:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2678:
# %bb.142:                              # %.noexc409
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2679:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2680:
# %bb.143:                              # %_ZNSolsEPFRSoS_E.exit248
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	molecs(%rip), %rcx
	movq	72(%rcx), %rcx
	movsd	(%rcx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp2681:
	movq	%rax, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp2682:
# %bb.144:                              # %_ZNSolsEd.exit249
                                        #   in Loop: Header=BB47_22 Depth=1
	movq	%rax, %r12
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp2683:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2684:
.LBB47_145:                             # %.noexc412.invoke
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2832:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp2833:
# %bb.146:                              # %.noexc413.invoke
                                        #   in Loop: Header=BB47_22 Depth=1
.Ltmp2834:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2835:
# %bb.147:                              # %_ZNSolsEPFRSoS_E.exit224
                                        #   in Loop: Header=BB47_22 Depth=1
	leaq	1(%r13), %rcx
	movq	molecs(%rip), %rax
	movslq	84(%rax), %rdx
	cmpq	%rdx, %r13
	movq	%rcx, %r13
	jl	.LBB47_22
.LBB47_148:                             # %_ZNSolsEPFRSoS_E.exit210._crit_edge
.Ltmp2837:
	movl	$_ZSt4cout, %r15d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.176, %esi
	movl	$20, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2838:
# %bb.149:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit251
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r15
.Ltmp2839:
	movq	%r15, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2840:
# %bb.150:                              # %.noexc416
.Ltmp2841:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2842:
# %bb.151:                              # %.noexc417
.Ltmp2843:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2844:
# %bb.152:                              # %_ZNSolsEPFRSoS_E.exit252
.Ltmp2845:
	leaq	24(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp2846:
# %bb.153:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB47_176
# %bb.154:                              # %.preheader453
	movq	calc(%rip), %rax
	cmpl	$0, 60(%rax)
	js	.LBB47_158
# %bb.155:                              # %.lr.ph490.preheader
	movq	$-1, %r14
.LBB47_156:                             # %.lr.ph490
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax,%r14,8), %rdi
.Ltmp2889:
	callq	hipFree
.Ltmp2890:
# %bb.157:                              #   in Loop: Header=BB47_156 Depth=1
	movq	calc(%rip), %rax
	movslq	60(%rax), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB47_156
.LBB47_158:                             # %._crit_edge491
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
.Ltmp2892:
	callq	hipFree
.Ltmp2893:
# %bb.159:
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
.Ltmp2894:
	callq	hipFree
.Ltmp2895:
# %bb.160:
	movq	molecs(%rip), %rax
	movq	64(%rax), %rdi
.Ltmp2896:
	callq	hipFree
.Ltmp2897:
# %bb.161:                              # %.preheader452.preheader
	xorl	%r14d, %r14d
.LBB47_162:                             # %.preheader452
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r14,8), %rdi
.Ltmp2898:
	callq	hipFree
.Ltmp2899:
# %bb.163:                              #   in Loop: Header=BB47_162 Depth=1
	incq	%r14
	cmpq	$4, %r14
	jne	.LBB47_162
# %bb.164:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rdi
.Ltmp2901:
	callq	hipFree
.Ltmp2902:
# %bb.165:
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdi
.Ltmp2903:
	callq	hipFree
.Ltmp2904:
# %bb.166:
	movq	molecs(%rip), %rax
	movq	(%rax), %rdi
.Ltmp2905:
	callq	hipFree
.Ltmp2906:
# %bb.167:
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdi
.Ltmp2907:
	callq	hipFree
.Ltmp2908:
# %bb.168:
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdi
.Ltmp2909:
	callq	hipFree
.Ltmp2910:
# %bb.169:
	movq	molecs(%rip), %rax
	movq	72(%rax), %rdi
.Ltmp2911:
	callq	hipFree
.Ltmp2912:
# %bb.170:                              # %.preheader451
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB47_174
# %bb.171:                              # %.lr.ph494.preheader
	xorl	%r15d, %r15d
.LBB47_172:                             # %.lr.ph494
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	32(%rax), %rax
	movq	(%rax,%r15,8), %rdi
.Ltmp2913:
	callq	hipFree
.Ltmp2914:
# %bb.173:                              #   in Loop: Header=BB47_172 Depth=1
	incq	%r15
	movq	gas(%rip), %rax
	movslq	428(%rax), %rax
	cmpq	%rax, %r15
	jl	.LBB47_172
.LBB47_174:                             # %._crit_edge495
	movq	molecs(%rip), %rax
	addq	$32, %rax
	jmp	.LBB47_192
.LBB47_176:
	cmpl	$0, 432(%rax)
	movq	calc(%rip), %rax
	movl	60(%rax), %eax
	jle	.LBB47_177
# %bb.203:                              # %.preheader455
	testl	%eax, %eax
	js	.LBB47_207
# %bb.204:                              # %.lr.ph485.preheader
	movq	$-1, %r14
.LBB47_205:                             # %.lr.ph485
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax,%r14,8), %rdi
.Ltmp2867:
	callq	hipFree
.Ltmp2868:
# %bb.206:                              #   in Loop: Header=BB47_205 Depth=1
	movq	calc(%rip), %rax
	movslq	60(%rax), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB47_205
.LBB47_207:                             # %._crit_edge486
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
.Ltmp2870:
	callq	hipFree
.Ltmp2871:
# %bb.208:
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
.Ltmp2872:
	callq	hipFree
.Ltmp2873:
# %bb.209:
	movq	molecs(%rip), %rax
	movq	64(%rax), %rdi
.Ltmp2874:
	callq	hipFree
.Ltmp2875:
# %bb.210:                              # %.preheader454.preheader
	xorl	%r14d, %r14d
.LBB47_211:                             # %.preheader454
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r14,8), %rdi
.Ltmp2876:
	callq	hipFree
.Ltmp2877:
# %bb.212:                              #   in Loop: Header=BB47_211 Depth=1
	incq	%r14
	cmpq	$4, %r14
	jne	.LBB47_211
# %bb.213:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rdi
.Ltmp2879:
	callq	hipFree
.Ltmp2880:
# %bb.214:
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdi
.Ltmp2881:
	callq	hipFree
.Ltmp2882:
# %bb.215:
	movq	molecs(%rip), %rax
	movq	(%rax), %rdi
.Ltmp2883:
	callq	hipFree
.Ltmp2884:
# %bb.216:
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdi
.Ltmp2885:
	callq	hipFree
.Ltmp2886:
# %bb.217:
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdi
.Ltmp2887:
	callq	hipFree
.Ltmp2888:
	jmp	.LBB47_191
.LBB47_177:                             # %.preheader457
	testl	%eax, %eax
	js	.LBB47_181
# %bb.178:                              # %.lr.ph481.preheader
	movq	$-1, %r14
.LBB47_179:                             # %.lr.ph481
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	40(%rax), %rax
	movq	8(%rax,%r14,8), %rdi
.Ltmp2847:
	callq	hipFree
.Ltmp2848:
# %bb.180:                              #   in Loop: Header=BB47_179 Depth=1
	movq	calc(%rip), %rax
	movslq	60(%rax), %rax
	incq	%r14
	cmpq	%rax, %r14
	jl	.LBB47_179
.LBB47_181:                             # %._crit_edge
	movq	molecs(%rip), %rax
	movq	40(%rax), %rdi
.Ltmp2850:
	callq	hipFree
.Ltmp2851:
# %bb.182:
	movq	molecs(%rip), %rax
	movq	56(%rax), %rdi
.Ltmp2852:
	callq	hipFree
.Ltmp2853:
# %bb.183:                              # %.preheader456.preheader
	xorl	%r14d, %r14d
.LBB47_184:                             # %.preheader456
                                        # =>This Inner Loop Header: Depth=1
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r14,8), %rdi
.Ltmp2854:
	callq	hipFree
.Ltmp2855:
# %bb.185:                              #   in Loop: Header=BB47_184 Depth=1
	incq	%r14
	cmpq	$4, %r14
	jne	.LBB47_184
# %bb.186:
	movq	molecs(%rip), %rax
	movq	48(%rax), %rdi
.Ltmp2857:
	callq	hipFree
.Ltmp2858:
# %bb.187:
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdi
.Ltmp2859:
	callq	hipFree
.Ltmp2860:
# %bb.188:
	movq	molecs(%rip), %rax
	movq	(%rax), %rdi
.Ltmp2861:
	callq	hipFree
.Ltmp2862:
# %bb.189:
	movq	molecs(%rip), %rax
	movq	16(%rax), %rdi
.Ltmp2863:
	callq	hipFree
.Ltmp2864:
# %bb.190:
	movq	molecs(%rip), %rax
	movq	24(%rax), %rdi
.Ltmp2865:
	callq	hipFree
.Ltmp2866:
.LBB47_191:
	movq	molecs(%rip), %rax
	addq	$72, %rax
.LBB47_192:                             # %.invoke
	movq	(%rax), %rdi
.Ltmp2916:
	callq	hipFree
.Ltmp2917:
# %bb.193:
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	jle	.LBB47_220
# %bb.194:
	movq	molecs(%rip), %rdi
	movq	calc(%rip), %rax
	movl	60(%rax), %esi
	incl	%esi
	leal	1(%rbx), %ebp
	leaq	40(%rdi), %rcx
.Ltmp2948:
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2949:
# %bb.195:
	movq	molecs(%rip), %rdi
	addq	$56, %rdi
	movslq	%ebp, %r12
	leaq	(,%r12,8), %r15
.Ltmp2950:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2951:
# %bb.196:                              # %_ZN6MOLECS10d_allocateEiRPd.exit
	movq	molecs(%rip), %rdi
	addq	$64, %rdi
.Ltmp2952:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2953:
# %bb.197:                              # %_ZN6MOLECS10d_allocateEiRPd.exit253
	movq	molecs(%rip), %rdi
	leaq	48(%rdi), %rcx
.Ltmp2954:
	movl	$4, %esi
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2955:
# %bb.198:
	movq	molecs(%rip), %rdi
	addq	$8, %rdi
	shlq	$2, %r12
.Ltmp2956:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2957:
# %bb.199:                              # %_ZN6MOLECS10i_allocateEiRPi.exit
	movq	molecs(%rip), %rdi
.Ltmp2958:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2959:
# %bb.200:                              # %_ZN6MOLECS10i_allocateEiRPi.exit254
	movq	molecs(%rip), %rdi
	addq	$16, %rdi
.Ltmp2960:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2961:
# %bb.201:                              # %_ZN6MOLECS10i_allocateEiRPi.exit255
	movq	molecs(%rip), %rdi
	addq	$24, %rdi
.Ltmp2962:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2963:
# %bb.202:                              # %_ZN6MOLECS10i_allocateEiRPi.exit256
	movq	molecs(%rip), %rdi
	movq	gas(%rip), %rax
	movl	428(%rax), %esi
	incl	%esi
	leaq	32(%rdi), %rcx
.Ltmp2964:
	movl	%ebp, %edx
	callq	_ZN6MOLECS10i_allocateEiiRPPi
.Ltmp2965:
	jmp	.LBB47_236
.LBB47_220:
	movq	molecs(%rip), %rdi
	movq	calc(%rip), %rcx
	movl	60(%rcx), %esi
	incl	%esi
	leal	1(%rbx), %ebp
	leaq	40(%rdi), %rcx
	cmpl	$0, 432(%rax)
	jle	.LBB47_229
# %bb.221:
.Ltmp2932:
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2933:
# %bb.222:
	movq	molecs(%rip), %rdi
	addq	$56, %rdi
	movslq	%ebp, %r12
	leaq	(,%r12,8), %r15
.Ltmp2934:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2935:
# %bb.223:                              # %_ZN6MOLECS10d_allocateEiRPd.exit258
	movq	molecs(%rip), %rdi
	addq	$64, %rdi
.Ltmp2936:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2937:
# %bb.224:                              # %_ZN6MOLECS10d_allocateEiRPd.exit259
	movq	molecs(%rip), %rdi
	leaq	48(%rdi), %rcx
.Ltmp2938:
	movl	$4, %esi
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2939:
# %bb.225:
	movq	molecs(%rip), %rdi
	addq	$8, %rdi
	shlq	$2, %r12
.Ltmp2940:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2941:
# %bb.226:                              # %_ZN6MOLECS10i_allocateEiRPi.exit260
	movq	molecs(%rip), %rdi
.Ltmp2942:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2943:
# %bb.227:                              # %_ZN6MOLECS10i_allocateEiRPi.exit261
	movq	molecs(%rip), %rdi
	addq	$16, %rdi
.Ltmp2944:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2945:
# %bb.228:                              # %_ZN6MOLECS10i_allocateEiRPi.exit262
	movq	molecs(%rip), %rdi
	addq	$24, %rdi
.Ltmp2946:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2947:
	jmp	.LBB47_236
.LBB47_229:
.Ltmp2918:
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2919:
# %bb.230:
	movq	molecs(%rip), %rdi
	addq	$56, %rdi
	movslq	%ebp, %r12
	leaq	(,%r12,8), %r15
.Ltmp2920:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2921:
# %bb.231:                              # %_ZN6MOLECS10d_allocateEiRPd.exit265
	movq	molecs(%rip), %rdi
	leaq	48(%rdi), %rcx
.Ltmp2922:
	movl	$4, %esi
	movl	%ebp, %edx
	callq	_ZN6MOLECS10d_allocateEiiRPPd
.Ltmp2923:
# %bb.232:
	movq	molecs(%rip), %rdi
	addq	$8, %rdi
	shlq	$2, %r12
.Ltmp2924:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2925:
# %bb.233:                              # %_ZN6MOLECS10i_allocateEiRPi.exit266
	movq	molecs(%rip), %rdi
.Ltmp2926:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2927:
# %bb.234:                              # %_ZN6MOLECS10i_allocateEiRPi.exit267
	movq	molecs(%rip), %rdi
	addq	$16, %rdi
.Ltmp2928:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2929:
# %bb.235:                              # %_ZN6MOLECS10i_allocateEiRPi.exit268
	movq	molecs(%rip), %rdi
	addq	$24, %rdi
.Ltmp2930:
	movq	%r12, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2931:
.LBB47_236:                             # %_ZN6MOLECS10i_allocateEiRPi.exit269.invoke
	movq	molecs(%rip), %rdi
	addq	$72, %rdi
.Ltmp2966:
	movq	%r15, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp2967:
# %bb.237:                              # %_ZN6MOLECS10d_allocateEiRPd.exit257
	movq	calc(%rip), %rax
	movl	60(%rax), %ebp
	movq	molecs(%rip), %r13
	leal	1(%rbx), %r15d
	leaq	(,%r15,8), %r12
	testl	%ebp, %ebp
	js	.LBB47_243
# %bb.238:                              # %.preheader450.lr.ph
	incq	%rbp
	xorl	%r14d, %r14d
.LBB47_239:                             # %.preheader450
                                        # =>This Inner Loop Header: Depth=1
	testl	%ebx, %ebx
	js	.LBB47_241
# %bb.240:                              # %.lr.ph498
                                        #   in Loop: Header=BB47_239 Depth=1
	movq	40(%r13), %rax
	movq	(%rax,%r14,8), %rdi
	xorl	%esi, %esi
	movq	%r12, %rdx
	callq	memset@PLT
.LBB47_241:                             # %._crit_edge499
                                        #   in Loop: Header=BB47_239 Depth=1
	incq	%r14
	cmpq	%r14, %rbp
	jne	.LBB47_239
# %bb.242:                              # %.preheader449.loopexit
	movq	molecs(%rip), %r13
.LBB47_243:                             # %.preheader449
	xorl	%ebp, %ebp
.LBB47_244:                             # %.preheader448
                                        # =>This Inner Loop Header: Depth=1
	testl	%ebx, %ebx
	js	.LBB47_245
# %bb.277:                              # %._crit_edge505.thread
                                        #   in Loop: Header=BB47_244 Depth=1
	movq	48(%r13), %rax
	movq	(%rax,%rbp,8), %rdi
	xorl	%esi, %esi
	movq	%r12, %rdx
	callq	memset@PLT
	incq	%rbp
	cmpq	$4, %rbp
	jne	.LBB47_244
	jmp	.LBB47_278
.LBB47_245:                             # %._crit_edge505
                                        #   in Loop: Header=BB47_244 Depth=1
	incq	%rbp
	cmpq	$4, %rbp
	jne	.LBB47_244
	jmp	.LBB47_246
.LBB47_278:                             # %.lr.ph509
	movq	56(%r13), %rax
	movq	(%r13), %rcx
	movq	8(%r13), %rdx
	movq	16(%r13), %rsi
	movq	24(%r13), %rdi
	movq	72(%r13), %r8
	xorl	%r9d, %r9d
	xorl	%r10d, %r10d
.LBB47_279:                             # =>This Inner Loop Header: Depth=1
	movq	%r9, (%rax,%r10,8)
	movl	%r9d, (%rdx,%r10,4)
	movl	%r9d, (%rcx,%r10,4)
	movl	%r9d, (%rsi,%r10,4)
	movl	%r9d, (%rdi,%r10,4)
	movq	%r9, (%r8,%r10,8)
	incq	%r10
	cmpq	%r10, %r15
	jne	.LBB47_279
.LBB47_246:                             # %._crit_edge510
	movq	gas(%rip), %rbp
	cmpl	$0, 432(%rbp)
	jle	.LBB47_249
# %bb.247:                              # %._crit_edge510
	testl	%ebx, %ebx
	js	.LBB47_249
# %bb.248:                              # %.lr.ph513
	movq	64(%r13), %rdi
	xorl	%esi, %esi
	movq	%r12, %rdx
	callq	memset@PLT
.LBB47_249:                             # %.loopexit446
	movl	428(%rbp), %eax
	testl	%eax, %eax
	jle	.LBB47_254
# %bb.250:                              # %.preheader442.lr.ph
	movq	molecs(%rip), %r12
	shlq	$2, %r15
	movq	$-1, %r13
.LBB47_251:                             # %.preheader442
                                        # =>This Inner Loop Header: Depth=1
	testl	%ebx, %ebx
	js	.LBB47_253
# %bb.252:                              # %.lr.ph516
                                        #   in Loop: Header=BB47_251 Depth=1
	movq	32(%r12), %rax
	movq	8(%rax,%r13,8), %rdi
	xorl	%esi, %esi
	movq	%r15, %rdx
	callq	memset@PLT
	movl	428(%rbp), %eax
.LBB47_253:                             # %._crit_edge517
                                        #   in Loop: Header=BB47_251 Depth=1
	movslq	%eax, %rcx
	incq	%r13
	cmpq	%rcx, %r13
	jl	.LBB47_251
.LBB47_254:                             # %.loopexit444
.Ltmp2968:
	leaq	24(%rsp), %r15
	movl	$.L.str.172, %esi
	movq	%r15, %rdi
	movl	$12, %edx
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp2969:
# %bb.255:                              # %.invoke644
	leaq	152(%rsp), %rdi
	callq	_ZNKSt12__basic_fileIcE7is_openEv
	movl	$.L.str.173, %ecx
	movl	$.L.str.174, %esi
	testb	%al, %al
	cmovneq	%rcx, %rsi
	movzbl	%al, %eax
	movl	$22, %edx
	subq	%rax, %rdx
.Ltmp2970:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp2971:
# %bb.256:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit273.invoke
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp2972:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp2973:
# %bb.257:                              # %.noexc424.invoke
.Ltmp2974:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp2975:
# %bb.258:                              # %.noexc425.invoke
.Ltmp2976:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp2977:
# %bb.259:                              # %_ZNSolsEPFRSoS_E.exit272
	movq	molecs(%rip), %rax
	cmpl	$0, 84(%rax)
	jle	.LBB47_293
# %bb.260:                              # %.lr.ph529.preheader
	movl	$1, %r12d
.LBB47_261:                             # %.lr.ph529
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB47_302 Depth 2
                                        #     Child Loop BB47_285 Depth 2
                                        #     Child Loop BB47_266 Depth 2
                                        #     Child Loop BB47_274 Depth 2
	movq	gas(%rip), %rcx
	cmpl	$0, 428(%rcx)
	jle	.LBB47_280
# %bb.262:                              #   in Loop: Header=BB47_261 Depth=1
	movq	40(%rax), %rax
	movq	calc(%rip), %rcx
	movslq	60(%rcx), %rcx
	leaq	(,%r12,8), %r14
	movq	(%rax,%rcx,8), %rsi
	addq	%r14, %rsi
.Ltmp3002:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp3003:
# %bb.263:                              # %_ZNSirsERd.exit
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp3004:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp3005:
# %bb.264:                              # %_ZNSirsERd.exit275
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	64(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp3006:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp3007:
# %bb.265:                              # %_ZNSirsERd.exit276.preheader.preheader
                                        #   in Loop: Header=BB47_261 Depth=1
	movl	$1, %r13d
.LBB47_266:                             # %_ZNSirsERd.exit276.preheader
                                        #   Parent Loop BB47_261 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r13,8), %rsi
	addq	%r14, %rsi
.Ltmp3008:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp3009:
# %bb.267:                              # %_ZNSirsERd.exit277
                                        #   in Loop: Header=BB47_266 Depth=2
	incq	%r13
	cmpq	$4, %r13
	jne	.LBB47_266
# %bb.268:                              #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rax
	leaq	(,%r12,4), %r14
	movq	8(%rax), %rsi
	addq	%r14, %rsi
.Ltmp3011:
	movq	%r15, %rdi
	callq	_ZNSirsERi
.Ltmp3012:
# %bb.269:                              #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp3013:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp3014:
# %bb.270:                              #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	16(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp3015:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp3016:
# %bb.271:                              #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	24(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp3017:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp3018:
# %bb.272:                              # %.preheader
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	gas(%rip), %rax
	cmpl	$0, 428(%rax)
	movq	%r15, %rax
	jle	.LBB47_291
# %bb.273:                              # %.lr.ph525.preheader
                                        #   in Loop: Header=BB47_261 Depth=1
	xorl	%r13d, %r13d
.LBB47_274:                             # %.lr.ph525
                                        #   Parent Loop BB47_261 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	32(%rax), %rax
	movq	8(%rax,%r13,8), %rsi
	addq	%r14, %rsi
.Ltmp3019:
	movq	%r15, %rdi
	callq	_ZNSirsERi
.Ltmp3020:
# %bb.275:                              #   in Loop: Header=BB47_274 Depth=2
	movq	gas(%rip), %rax
	movslq	428(%rax), %rax
	incq	%r13
	cmpq	%rax, %r13
	jl	.LBB47_274
# %bb.276:                              #   in Loop: Header=BB47_261 Depth=1
	movq	%r15, %rax
	jmp	.LBB47_291
.LBB47_280:                             #   in Loop: Header=BB47_261 Depth=1
	movq	40(%rax), %rax
	movq	calc(%rip), %rdx
	movslq	60(%rdx), %rdx
	leaq	(,%r12,8), %r14
	movq	(%rax,%rdx,8), %rsi
	addq	%r14, %rsi
	cmpl	$0, 432(%rcx)
	jle	.LBB47_299
# %bb.281:                              #   in Loop: Header=BB47_261 Depth=1
.Ltmp2985:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2986:
# %bb.282:                              # %_ZNSirsERd.exit279
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp2987:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2988:
# %bb.283:                              # %_ZNSirsERd.exit280
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	64(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp2989:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2990:
# %bb.284:                              # %_ZNSirsERd.exit281.preheader.preheader
                                        #   in Loop: Header=BB47_261 Depth=1
	movl	$1, %r13d
.LBB47_285:                             # %_ZNSirsERd.exit281.preheader
                                        #   Parent Loop BB47_261 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r13,8), %rsi
	addq	%r14, %rsi
.Ltmp2991:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2992:
# %bb.286:                              # %_ZNSirsERd.exit282
                                        #   in Loop: Header=BB47_285 Depth=2
	incq	%r13
	cmpq	$4, %r13
	jne	.LBB47_285
	jmp	.LBB47_287
.LBB47_299:                             #   in Loop: Header=BB47_261 Depth=1
.Ltmp2978:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2979:
# %bb.300:                              # %_ZNSirsERd.exit284
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	56(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp2980:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2981:
# %bb.301:                              # %_ZNSirsERd.exit285.preheader.preheader
                                        #   in Loop: Header=BB47_261 Depth=1
	movl	$1, %r13d
.LBB47_302:                             # %_ZNSirsERd.exit285.preheader
                                        #   Parent Loop BB47_261 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	(%rax,%r13,8), %rsi
	addq	%r14, %rsi
.Ltmp2982:
	movq	%r15, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp2983:
# %bb.303:                              # %_ZNSirsERd.exit286
                                        #   in Loop: Header=BB47_302 Depth=2
	incq	%r13
	cmpq	$4, %r13
	jne	.LBB47_302
.LBB47_287:                             # %.invoke649
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rax
	leaq	(,%r12,4), %r14
	movq	8(%rax), %rsi
	addq	%r14, %rsi
.Ltmp2994:
	movq	%r15, %rdi
	callq	_ZNSirsERi
.Ltmp2995:
# %bb.288:                              # %.invoke646
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp2996:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp2997:
# %bb.289:                              # %.invoke640
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	movq	16(%rcx), %rsi
	addq	%r14, %rsi
.Ltmp2998:
	movq	%rax, %rdi
	callq	_ZNSirsERi
.Ltmp2999:
# %bb.290:                              # %.invoke630
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	addq	24(%rcx), %r14
.Ltmp3000:
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	_ZNSirsERi
.Ltmp3001:
.LBB47_291:                             # %._crit_edge526.invoke
                                        #   in Loop: Header=BB47_261 Depth=1
	movq	molecs(%rip), %rcx
	leaq	(,%r12,8), %rsi
	addq	72(%rcx), %rsi
.Ltmp3022:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIdEERSiRT_
.Ltmp3023:
# %bb.292:                              # %_ZNSirsERd.exit278
                                        #   in Loop: Header=BB47_261 Depth=1
	leaq	1(%r12), %rcx
	movq	molecs(%rip), %rax
	movslq	84(%rax), %rdx
	cmpq	%rdx, %r12
	movq	%rcx, %r12
	jl	.LBB47_261
.LBB47_293:                             # %._crit_edge530
.Ltmp3025:
	movl	$_ZSt4cout, %r14d
	movl	$_ZSt4cout, %edi
	movl	$.L.str.177, %esi
	movl	$19, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp3026:
# %bb.294:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit288
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %r14
.Ltmp3027:
	movq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp3028:
# %bb.295:                              # %.noexc428
.Ltmp3029:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp3030:
# %bb.296:                              # %.noexc429
.Ltmp3031:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp3032:
# %bb.297:                              # %_ZNSolsEPFRSoS_E.exit289
.Ltmp3033:
	leaq	24(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv
.Ltmp3034:
# %bb.298:
	movq	molecs(%rip), %rax
	movl	%ebx, 84(%rax)
	leaq	24(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	addq	$552, %rsp                      # imm = 0x228
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB47_218:
	.cfi_def_cfa_offset 608
.Ltmp2849:
	jmp	.LBB47_305
.LBB47_219:
.Ltmp2856:
	jmp	.LBB47_305
.LBB47_308:
.Ltmp2869:
	jmp	.LBB47_305
.LBB47_309:
.Ltmp2878:
	jmp	.LBB47_305
.LBB47_175:
.Ltmp2915:
	jmp	.LBB47_305
.LBB47_306:
.Ltmp2891:
	jmp	.LBB47_305
.LBB47_307:
.Ltmp2900:
	jmp	.LBB47_305
.LBB47_75:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp
.Ltmp3035:
	jmp	.LBB47_305
.LBB47_68:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2984:
	jmp	.LBB47_305
.LBB47_67:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2993:
	jmp	.LBB47_305
.LBB47_69:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp3024:
	jmp	.LBB47_305
.LBB47_304:                             # %.loopexit
.Ltmp3021:
	jmp	.LBB47_305
.LBB47_73:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2648:
	jmp	.LBB47_305
.LBB47_66:                              # %.loopexit.split-lp.loopexit
.Ltmp3010:
	jmp	.LBB47_305
.LBB47_72:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2717:
	jmp	.LBB47_305
.LBB47_74:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2836:
	jmp	.LBB47_305
.LBB47_70:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2827:
	jmp	.LBB47_305
.LBB47_71:                              # %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit
.Ltmp2786:
.LBB47_305:                             # %.loopexit.split-lp
	movq	%rax, %rbx
	leaq	24(%rsp), %rdi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end47:
	.size	_Z10EXTEND_MNMd, .Lfunc_end47-_Z10EXTEND_MNMd
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table47:
.Lexception7:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end7-.Lcst_begin7
.Lcst_begin7:
	.uleb128 .Lfunc_begin7-.Lfunc_begin7    # >> Call Site 1 <<
	.uleb128 .Ltmp2584-.Lfunc_begin7        #   Call between .Lfunc_begin7 and .Ltmp2584
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2584-.Lfunc_begin7        # >> Call Site 2 <<
	.uleb128 .Ltmp2623-.Ltmp2584            #   Call between .Ltmp2584 and .Ltmp2623
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2754-.Lfunc_begin7        # >> Call Site 3 <<
	.uleb128 .Ltmp2777-.Ltmp2754            #   Call between .Ltmp2754 and .Ltmp2777
	.uleb128 .Ltmp2836-.Lfunc_begin7        #     jumps to .Ltmp2836
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2778-.Lfunc_begin7        # >> Call Site 4 <<
	.uleb128 .Ltmp2785-.Ltmp2778            #   Call between .Ltmp2778 and .Ltmp2785
	.uleb128 .Ltmp2786-.Lfunc_begin7        #     jumps to .Ltmp2786
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2787-.Lfunc_begin7        # >> Call Site 5 <<
	.uleb128 .Ltmp2818-.Ltmp2787            #   Call between .Ltmp2787 and .Ltmp2818
	.uleb128 .Ltmp2836-.Lfunc_begin7        #     jumps to .Ltmp2836
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2819-.Lfunc_begin7        # >> Call Site 6 <<
	.uleb128 .Ltmp2826-.Ltmp2819            #   Call between .Ltmp2819 and .Ltmp2826
	.uleb128 .Ltmp2827-.Lfunc_begin7        #     jumps to .Ltmp2827
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2828-.Lfunc_begin7        # >> Call Site 7 <<
	.uleb128 .Ltmp2708-.Ltmp2828            #   Call between .Ltmp2828 and .Ltmp2708
	.uleb128 .Ltmp2836-.Lfunc_begin7        #     jumps to .Ltmp2836
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2709-.Lfunc_begin7        # >> Call Site 8 <<
	.uleb128 .Ltmp2716-.Ltmp2709            #   Call between .Ltmp2709 and .Ltmp2716
	.uleb128 .Ltmp2717-.Lfunc_begin7        #     jumps to .Ltmp2717
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2718-.Lfunc_begin7        # >> Call Site 9 <<
	.uleb128 .Ltmp2639-.Ltmp2718            #   Call between .Ltmp2718 and .Ltmp2639
	.uleb128 .Ltmp2836-.Lfunc_begin7        #     jumps to .Ltmp2836
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2640-.Lfunc_begin7        # >> Call Site 10 <<
	.uleb128 .Ltmp2647-.Ltmp2640            #   Call between .Ltmp2640 and .Ltmp2647
	.uleb128 .Ltmp2648-.Lfunc_begin7        #     jumps to .Ltmp2648
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2649-.Lfunc_begin7        # >> Call Site 11 <<
	.uleb128 .Ltmp2835-.Ltmp2649            #   Call between .Ltmp2649 and .Ltmp2835
	.uleb128 .Ltmp2836-.Lfunc_begin7        #     jumps to .Ltmp2836
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2837-.Lfunc_begin7        # >> Call Site 12 <<
	.uleb128 .Ltmp2846-.Ltmp2837            #   Call between .Ltmp2837 and .Ltmp2846
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2889-.Lfunc_begin7        # >> Call Site 13 <<
	.uleb128 .Ltmp2890-.Ltmp2889            #   Call between .Ltmp2889 and .Ltmp2890
	.uleb128 .Ltmp2891-.Lfunc_begin7        #     jumps to .Ltmp2891
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2892-.Lfunc_begin7        # >> Call Site 14 <<
	.uleb128 .Ltmp2897-.Ltmp2892            #   Call between .Ltmp2892 and .Ltmp2897
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2898-.Lfunc_begin7        # >> Call Site 15 <<
	.uleb128 .Ltmp2899-.Ltmp2898            #   Call between .Ltmp2898 and .Ltmp2899
	.uleb128 .Ltmp2900-.Lfunc_begin7        #     jumps to .Ltmp2900
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2901-.Lfunc_begin7        # >> Call Site 16 <<
	.uleb128 .Ltmp2912-.Ltmp2901            #   Call between .Ltmp2901 and .Ltmp2912
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2913-.Lfunc_begin7        # >> Call Site 17 <<
	.uleb128 .Ltmp2914-.Ltmp2913            #   Call between .Ltmp2913 and .Ltmp2914
	.uleb128 .Ltmp2915-.Lfunc_begin7        #     jumps to .Ltmp2915
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2867-.Lfunc_begin7        # >> Call Site 18 <<
	.uleb128 .Ltmp2868-.Ltmp2867            #   Call between .Ltmp2867 and .Ltmp2868
	.uleb128 .Ltmp2869-.Lfunc_begin7        #     jumps to .Ltmp2869
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2870-.Lfunc_begin7        # >> Call Site 19 <<
	.uleb128 .Ltmp2875-.Ltmp2870            #   Call between .Ltmp2870 and .Ltmp2875
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2876-.Lfunc_begin7        # >> Call Site 20 <<
	.uleb128 .Ltmp2877-.Ltmp2876            #   Call between .Ltmp2876 and .Ltmp2877
	.uleb128 .Ltmp2878-.Lfunc_begin7        #     jumps to .Ltmp2878
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2879-.Lfunc_begin7        # >> Call Site 21 <<
	.uleb128 .Ltmp2888-.Ltmp2879            #   Call between .Ltmp2879 and .Ltmp2888
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2847-.Lfunc_begin7        # >> Call Site 22 <<
	.uleb128 .Ltmp2848-.Ltmp2847            #   Call between .Ltmp2847 and .Ltmp2848
	.uleb128 .Ltmp2849-.Lfunc_begin7        #     jumps to .Ltmp2849
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2850-.Lfunc_begin7        # >> Call Site 23 <<
	.uleb128 .Ltmp2853-.Ltmp2850            #   Call between .Ltmp2850 and .Ltmp2853
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2854-.Lfunc_begin7        # >> Call Site 24 <<
	.uleb128 .Ltmp2855-.Ltmp2854            #   Call between .Ltmp2854 and .Ltmp2855
	.uleb128 .Ltmp2856-.Lfunc_begin7        #     jumps to .Ltmp2856
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2857-.Lfunc_begin7        # >> Call Site 25 <<
	.uleb128 .Ltmp2967-.Ltmp2857            #   Call between .Ltmp2857 and .Ltmp2967
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2967-.Lfunc_begin7        # >> Call Site 26 <<
	.uleb128 .Ltmp2968-.Ltmp2967            #   Call between .Ltmp2967 and .Ltmp2968
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2968-.Lfunc_begin7        # >> Call Site 27 <<
	.uleb128 .Ltmp2977-.Ltmp2968            #   Call between .Ltmp2968 and .Ltmp2977
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3002-.Lfunc_begin7        # >> Call Site 28 <<
	.uleb128 .Ltmp3007-.Ltmp3002            #   Call between .Ltmp3002 and .Ltmp3007
	.uleb128 .Ltmp3024-.Lfunc_begin7        #     jumps to .Ltmp3024
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3008-.Lfunc_begin7        # >> Call Site 29 <<
	.uleb128 .Ltmp3009-.Ltmp3008            #   Call between .Ltmp3008 and .Ltmp3009
	.uleb128 .Ltmp3010-.Lfunc_begin7        #     jumps to .Ltmp3010
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3011-.Lfunc_begin7        # >> Call Site 30 <<
	.uleb128 .Ltmp3018-.Ltmp3011            #   Call between .Ltmp3011 and .Ltmp3018
	.uleb128 .Ltmp3024-.Lfunc_begin7        #     jumps to .Ltmp3024
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3019-.Lfunc_begin7        # >> Call Site 31 <<
	.uleb128 .Ltmp3020-.Ltmp3019            #   Call between .Ltmp3019 and .Ltmp3020
	.uleb128 .Ltmp3021-.Lfunc_begin7        #     jumps to .Ltmp3021
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2985-.Lfunc_begin7        # >> Call Site 32 <<
	.uleb128 .Ltmp2990-.Ltmp2985            #   Call between .Ltmp2985 and .Ltmp2990
	.uleb128 .Ltmp3024-.Lfunc_begin7        #     jumps to .Ltmp3024
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2991-.Lfunc_begin7        # >> Call Site 33 <<
	.uleb128 .Ltmp2992-.Ltmp2991            #   Call between .Ltmp2991 and .Ltmp2992
	.uleb128 .Ltmp2993-.Lfunc_begin7        #     jumps to .Ltmp2993
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2978-.Lfunc_begin7        # >> Call Site 34 <<
	.uleb128 .Ltmp2981-.Ltmp2978            #   Call between .Ltmp2978 and .Ltmp2981
	.uleb128 .Ltmp3024-.Lfunc_begin7        #     jumps to .Ltmp3024
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2982-.Lfunc_begin7        # >> Call Site 35 <<
	.uleb128 .Ltmp2983-.Ltmp2982            #   Call between .Ltmp2982 and .Ltmp2983
	.uleb128 .Ltmp2984-.Lfunc_begin7        #     jumps to .Ltmp2984
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp2994-.Lfunc_begin7        # >> Call Site 36 <<
	.uleb128 .Ltmp3023-.Ltmp2994            #   Call between .Ltmp2994 and .Ltmp3023
	.uleb128 .Ltmp3024-.Lfunc_begin7        #     jumps to .Ltmp3024
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3025-.Lfunc_begin7        # >> Call Site 37 <<
	.uleb128 .Ltmp3034-.Ltmp3025            #   Call between .Ltmp3025 and .Ltmp3034
	.uleb128 .Ltmp3035-.Lfunc_begin7        #     jumps to .Ltmp3035
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3034-.Lfunc_begin7        # >> Call Site 38 <<
	.uleb128 .Lfunc_end47-.Ltmp3034         #   Call between .Ltmp3034 and .Lfunc_end47
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end7:
	.p2align	2, 0x0
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z4AIFXRdS_S_S_S_S_S_S_
.LCPI48_0:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI48_1:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
	.text
	.globl	_Z4AIFXRdS_S_S_S_S_S_S_
	.type	_Z4AIFXRdS_S_S_S_S_S_S_,@function
_Z4AIFXRdS_S_S_S_S_S_S_:                # @_Z4AIFXRdS_S_S_S_S_S_S_
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movq	56(%rsp), %rbx
	movq	48(%rsp), %r14
	movq	geom(%rip), %rax
	movl	24(%rax), %eax
	cmpl	$2, %eax
	je	.LBB48_3
# %bb.1:
                                        # implicit-def: $xmm0
                                        # implicit-def: $xmm1
	cmpl	$1, %eax
	jne	.LBB48_4
# %bb.2:
	movsd	(%rcx), %xmm0                   # xmm0 = mem[0],zero
	movsd	(%rbx), %xmm1                   # xmm1 = mem[0],zero
	jmp	.LBB48_4
.LBB48_3:
	movsd	(%rdx), %xmm0                   # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	(%rcx), %xmm1                   # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm1, %xmm0
	movsd	(%r14), %xmm1                   # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	movsd	(%rbx), %xmm2                   # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm1, %xmm2
	xorps	%xmm1, %xmm1
	sqrtsd	%xmm2, %xmm1
.LBB48_4:
	movsd	(%rdi), %xmm4                   # xmm4 = mem[0],zero
	addsd	(%rsi), %xmm4
	movapd	%xmm4, %xmm2
	mulsd	%xmm4, %xmm2
	movapd	%xmm0, %xmm3
	mulsd	%xmm0, %xmm3
	addsd	%xmm2, %xmm3
	xorps	%xmm2, %xmm2
	sqrtsd	%xmm3, %xmm2
	movsd	%xmm2, (%r8)
	divsd	%xmm2, %xmm0
	divsd	%xmm2, %xmm4
	movsd	(%r9), %xmm2                    # xmm2 = mem[0],zero
	movapd	%xmm1, %xmm3
	mulsd	%xmm0, %xmm3
	mulsd	%xmm2, %xmm0
	mulsd	%xmm4, %xmm2
	addsd	%xmm2, %xmm3
	movsd	%xmm3, (%r9)
	mulsd	%xmm1, %xmm4
	subsd	%xmm0, %xmm4
	movsd	%xmm4, (%rbx)
	cmpl	$2, %eax
	jne	.LBB48_6
# %bb.5:
	movsd	%xmm4, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI48_0(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI48_1(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	callq	sin
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, (%r14)
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	cos
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, (%rbx)
.LBB48_6:
	addq	$24, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end48:
	.size	_Z4AIFXRdS_S_S_S_S_S_S_, .Lfunc_end48-_Z4AIFXRdS_S_S_S_S_S_S_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0                          # -- Begin function _Z10REMOVE_MOLRi
.LCPI49_0:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.text
	.globl	_Z10REMOVE_MOLRi
	.type	_Z10REMOVE_MOLRi,@function
_Z10REMOVE_MOLRi:                       # @_Z10REMOVE_MOLRi
	.cfi_startproc
# %bb.0:
	movl	(%rdi), %edx
	movq	molecs(%rip), %rax
	movslq	80(%rax), %rcx
	cmpl	%ecx, %edx
	je	.LBB49_14
# %bb.1:                                # %.preheader24
	movslq	%edx, %rdx
	movq	calc(%rip), %rsi
	movl	60(%rsi), %esi
	testl	%esi, %esi
	jle	.LBB49_4
# %bb.2:                                # %.lr.ph
	movq	40(%rax), %r8
	incq	%rsi
	movl	$1, %r9d
.LBB49_3:                               # =>This Inner Loop Header: Depth=1
	movq	(%r8,%r9,8), %r10
	movsd	(%r10,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%r10,%rdx,8)
	incq	%r9
	cmpq	%r9, %rsi
	jne	.LBB49_3
.LBB49_4:                               # %.preheader23
	movq	48(%rax), %rsi
	movl	$1, %r8d
.LBB49_5:                               # =>This Inner Loop Header: Depth=1
	movq	(%rsi,%r8,8), %r9
	movsd	(%r9,%rcx,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, (%r9,%rdx,8)
	incq	%r8
	cmpq	$4, %r8
	jne	.LBB49_5
# %bb.6:
	movq	gas(%rip), %rsi
	cmpl	$0, 432(%rsi)
	jle	.LBB49_8
# %bb.7:
	movq	64(%rax), %r8
	movsd	(%r8,%rcx,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, (%r8,%rdx,8)
.LBB49_8:
	movq	(%rax), %r8
	xorps	%xmm0, %xmm0
	cvtsi2sdl	(%r8,%rcx,4), %xmm0
	andpd	.LCPI49_0(%rip), %xmm0
	cvttsd2si	%xmm0, %ecx
	movl	%ecx, (%r8,%rdx,4)
	movq	8(%rax), %rcx
	movslq	80(%rax), %rdx
	movl	(%rcx,%rdx,4), %edx
	movslq	(%rdi), %r8
	movl	%edx, (%rcx,%r8,4)
	movq	24(%rax), %rcx
	movslq	80(%rax), %rdx
	movl	(%rcx,%rdx,4), %edx
	movslq	(%rdi), %r8
	movl	%edx, (%rcx,%r8,4)
	cmpl	$0, 428(%rsi)
	jle	.LBB49_11
# %bb.9:                                # %.lr.ph30
	movq	32(%rax), %rcx
	xorl	%edx, %edx
.LBB49_10:                              # =>This Inner Loop Header: Depth=1
	movq	8(%rcx,%rdx,8), %r8
	movslq	80(%rax), %r9
	movl	(%r8,%r9,4), %r9d
	movslq	(%rdi), %r10
	movl	%r9d, (%r8,%r10,4)
	movslq	428(%rsi), %r8
	incq	%rdx
	cmpq	%r8, %rdx
	jl	.LBB49_10
.LBB49_11:                              # %.loopexit
	cmpl	$1, 452(%rsi)
	movl	80(%rax), %edx
	movslq	%edx, %rcx
	movslq	(%rdi), %rsi
	jle	.LBB49_13
# %bb.12:
	movq	72(%rax), %rdi
	movsd	(%rdi,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%rdi,%rsi,8)
.LBB49_13:
	movq	56(%rax), %rdi
	movsd	(%rdi,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%rdi,%rsi,8)
.LBB49_14:
	decl	%edx
	movl	%edx, 80(%rax)
	retq
.Lfunc_end49:
	.size	_Z10REMOVE_MOLRi, .Lfunc_end49-_Z10REMOVE_MOLRi
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z3LBSddRd
.LCPI50_0:
	.quad	0x3eb0c6f7a0b5ed8d              # double 9.9999999999999995E-7
.LCPI50_1:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI50_2:
	.quad	0x3ff0000000000000              # double 1
	.text
	.globl	_Z3LBSddRd
	.type	_Z3LBSddRd,@function
_Z3LBSddRd:                             # @_Z3LBSddRd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	subq	$72, %rsp
	.cfi_def_cfa_offset 96
	.cfi_offset %rbx, -24
	.cfi_offset %rbp, -16
	movq	%rdi, %rbx
	movsd	.LCPI50_0(%rip), %xmm4          # xmm4 = mem[0],zero
	movapd	%xmm1, %xmm3
	cmpltpd	%xmm4, %xmm3
	movapd	%xmm0, %xmm2
	cmpltpd	%xmm4, %xmm2
	orpd	%xmm3, %xmm2
	movd	%xmm2, %ebp
	movapd	%xmm0, 16(%rsp)                 # 16-byte Spill
	movapd	%xmm1, 32(%rsp)                 # 16-byte Spill
	addsd	%xmm1, %xmm0
	movapd	%xmm0, 48(%rsp)                 # 16-byte Spill
                                        # implicit-def: $xmm0
                                        # kill: killed $xmm0
.LBB50_1:                               # =>This Inner Loop Header: Depth=1
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI50_1(%rip), %xmm0
	movsd	%xmm0, (%rbx)
	testb	$1, %bpl
	je	.LBB50_6
# %bb.2:                                #   in Loop: Header=BB50_1 Depth=1
	movsd	.LCPI50_0(%rip), %xmm1          # xmm1 = mem[0],zero
	ucomisd	16(%rsp), %xmm1                 # 16-byte Folded Reload
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	jbe	.LBB50_4
# %bb.3:                                #   in Loop: Header=BB50_1 Depth=1
	movsd	.LCPI50_2(%rip), %xmm1          # xmm1 = mem[0],zero
	subsd	%xmm0, %xmm1
	movapd	%xmm1, %xmm0
	movaps	32(%rsp), %xmm1                 # 16-byte Reload
	callq	pow
	movapd	%xmm0, %xmm1
.LBB50_4:                               #   in Loop: Header=BB50_1 Depth=1
	movsd	.LCPI50_0(%rip), %xmm0          # xmm0 = mem[0],zero
	ucomisd	32(%rsp), %xmm0                 # 16-byte Folded Reload
	jbe	.LBB50_7
# %bb.5:                                #   in Loop: Header=BB50_1 Depth=1
	movsd	.LCPI50_2(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	(%rbx), %xmm0
	movaps	16(%rsp), %xmm1                 # 16-byte Reload
	callq	pow
	movapd	%xmm0, %xmm1
	jmp	.LBB50_7
.LBB50_6:                               #   in Loop: Header=BB50_1 Depth=1
	mulsd	48(%rsp), %xmm0                 # 16-byte Folded Reload
	movapd	16(%rsp), %xmm1                 # 16-byte Reload
	divsd	%xmm1, %xmm0
	callq	pow
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	.LCPI50_2(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	(%rbx), %xmm0
	mulsd	48(%rsp), %xmm0                 # 16-byte Folded Reload
	movapd	32(%rsp), %xmm1                 # 16-byte Reload
	divsd	%xmm1, %xmm0
	callq	pow
	movapd	%xmm0, %xmm1
	mulsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
.LBB50_7:                               # %.backedge
                                        #   in Loop: Header=BB50_1 Depth=1
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	movsd	.LCPI50_1(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm1, %xmm0
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	ucomisd	%xmm0, %xmm2
	jbe	.LBB50_1
# %bb.8:
	addq	$72, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end50:
	.size	_Z3LBSddRd, .Lfunc_end50-_Z3LBSddRd
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z10REFLECT_1DRiiRd
.LCPI51_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI51_1:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI51_2:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
.LCPI51_4:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI51_5:
	.quad	0x3b40b0edf6c91c1b              # double 2.7613160000000003E-23
.LCPI51_7:
	.quad	0x8000000000000000              # double -0
.LCPI51_8:
	.quad	0xbb30b0edf6c91c1b              # double -1.3806580000000001E-23
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI51_3:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
.LCPI51_6:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z10REFLECT_1DRiiRd
	.type	_Z10REFLECT_1DRiiRd,@function
_Z10REFLECT_1DRiiRd:                    # @_Z10REFLECT_1DRiiRd
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$104, %rsp
	.cfi_def_cfa_offset 160
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %r15
	movl	%esi, %ebp
	movq	%rdi, %r14
	movq	molecs(%rip), %rax
	movq	8(%rax), %rdx
	movslq	(%rdi), %rcx
	movslq	(%rdx,%rcx,4), %r13
	movl	%r13d, 12(%rsp)
	movq	geom(%rip), %rdx
	cmpl	$1, 36(%rdx)
	jne	.LBB51_1
# %bb.2:
	movsd	96(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	cvtsi2sdl	24(%rdx), %xmm1
	callq	pow
	movapd	%xmm0, %xmm4
	mulsd	(%rsp), %xmm4                   # 8-byte Folded Reload
	addsd	.LCPI51_0(%rip), %xmm4
	movq	molecs(%rip), %rax
	movslq	(%r14), %rcx
	jmp	.LBB51_3
.LBB51_1:
	movsd	.LCPI51_0(%rip), %xmm4          # xmm4 = mem[0],zero
.LBB51_3:
	movq	output(%rip), %rdx
	movq	192(%rdx), %rdx
	movq	(%rdx), %rsi
	movslq	%ebp, %rbx
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %rsi
	movsd	8(%rsi), %xmm0                  # xmm0 = mem[0],zero
	addsd	.LCPI51_0(%rip), %xmm0
	movsd	%xmm0, 8(%rsi)
	movq	8(%rdx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %rsi
	movsd	8(%rsi), %xmm0                  # xmm0 = mem[0],zero
	addsd	%xmm4, %xmm0
	movsd	%xmm0, 8(%rsi)
	movq	16(%rdx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %r9
	movq	48(%rax), %r8
	movq	8(%r8), %rsi
	movsd	(%rsi,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm4, %xmm0
	movq	gas(%rip), %rdi
	movq	320(%rdi), %rax
	movq	40(%rax), %rax
	mulsd	(%rax,%r13,8), %xmm0
	addsd	8(%r9), %xmm0
	movsd	%xmm0, 8(%r9)
	movq	24(%rdx), %r9
	movq	16(%r8), %r10
	movsd	(%r10,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	subsd	240(%rdi,%rbx,8), %xmm0
	movq	(%r9,%rbx,8), %r9
	mulsd	%xmm4, %xmm0
	mulsd	(%rax,%r13,8), %xmm0
	movq	(%r9,%r13,8), %r9
	addsd	8(%r9), %xmm0
	movsd	%xmm0, 8(%r9)
	movq	32(%rdx), %r9
	movq	(%r9,%rbx,8), %r9
	movq	(%r9,%r13,8), %r9
	movq	24(%r8), %r8
	movsd	(%r8,%rcx,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	%xmm4, %xmm0
	mulsd	(%rax,%r13,8), %xmm0
	addsd	8(%r9), %xmm0
	movsd	%xmm0, 8(%r9)
	movsd	(%rsi,%rcx,8), %xmm0            # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	(%r10,%rcx,8), %xmm1            # xmm1 = mem[0],zero
	subsd	240(%rdi,%rbx,8), %xmm1
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	movsd	(%r8,%rcx,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	movq	40(%rdx), %rcx
	movq	(%rcx,%rbx,8), %rcx
	movq	(%rcx,%r13,8), %rcx
	movsd	.LCPI51_1(%rip), %xmm2          # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	movsd	(%rax,%r13,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm1
	mulsd	%xmm0, %xmm1
	addsd	8(%rcx), %xmm1
	movsd	%xmm1, 8(%rcx)
	movq	488(%rdi), %rcx
	movq	8(%rcx), %rcx
	movl	(%rcx,%r13,4), %ecx
	testl	%ecx, %ecx
	jle	.LBB51_5
# %bb.4:
	movq	48(%rdx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %rsi
	movq	molecs(%rip), %r8
	movq	64(%r8), %r8
	movslq	(%r14), %r9
	movsd	(%r8,%r9,8), %xmm0              # xmm0 = mem[0],zero
	mulsd	%xmm4, %xmm0
	addsd	8(%rsi), %xmm0
	movsd	%xmm0, 8(%rsi)
.LBB51_5:
	cmpl	$2, 452(%rdi)
	jl	.LBB51_7
# %bb.6:
	movq	64(%rdx), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %rsi
	movq	molecs(%rip), %r8
	movq	72(%r8), %r8
	movslq	(%r14), %r9
	movsd	(%r8,%r9,8), %xmm0              # xmm0 = mem[0],zero
	mulsd	%xmm4, %xmm0
	addsd	8(%rsi), %xmm0
	movsd	%xmm0, 8(%rsi)
.LBB51_7:
	cmpl	$0, 428(%rdi)
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	jle	.LBB51_8
# %bb.9:
	movq	472(%rdi), %rsi
	movl	(%rsi,%r13,4), %r9d
	movq	molecs(%rip), %rsi
	movl	(%r14), %r8d
	testl	%r9d, %r9d
	jle	.LBB51_13
# %bb.10:                               # %.preheader199
	movl	%ebp, (%rsp)                    # 4-byte Spill
	movq	%r15, %rbp
	movslq	%r8d, %r10
	movq	56(%rdx), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movq	(%rdx,%r13,8), %rdx
	movq	32(%rsi), %r11
	movq	360(%rdi), %rdi
	movq	8(%rdi), %rdi
	movsd	8(%rdx), %xmm0                  # xmm0 = mem[0],zero
	incq	%r9
	movl	$1, %r15d
	movsd	.LCPI51_2(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB51_11:                              # =>This Inner Loop Header: Depth=1
	movq	(%r11,%r15,8), %r12
	xorps	%xmm2, %xmm2
	cvtsi2sdl	(%r12,%r10,4), %xmm2
	mulsd	%xmm4, %xmm2
	mulsd	%xmm1, %xmm2
	movq	(%rdi,%r15,8), %r12
	mulsd	(%r12,%r13,8), %xmm2
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 8(%rdx)
	incq	%r15
	cmpq	%r15, %r9
	jne	.LBB51_11
# %bb.12:                               # %.loopexit200
	movl	%r9d, 8(%rsp)
	movq	%rbp, %r15
	movl	(%rsp), %ebp                    # 4-byte Reload
	jmp	.LBB51_13
.LBB51_8:                               # %._crit_edge
	movq	molecs(%rip), %rsi
	movl	(%r14), %r8d
.LBB51_13:
	movq	48(%rsi), %rdi
	movslq	%r8d, %rdx
	movq	8(%rdi), %r9
	movq	16(%rdi), %r8
	movsd	(%r9,%rdx,8), %xmm0             # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm1
	mulsd	%xmm0, %xmm1
	movsd	(%r8,%rdx,8), %xmm2             # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm1, %xmm2
	movq	24(%rdi), %rdi
	andpd	.LCPI51_3(%rip), %xmm0
	movsd	(%rdi,%rdx,8), %xmm1            # xmm1 = mem[0],zero
	movq	output(%rip), %rdi
	movq	152(%rdi), %rdi
	movq	8(%rdi), %r9
	movapd	%xmm4, %xmm3
	divsd	%xmm0, %xmm3
	addsd	(%r9,%rbx,8), %xmm3
	mulsd	%xmm1, %xmm1
	movsd	%xmm3, (%r9,%rbx,8)
	movq	16(%rdi), %r9
	movsd	(%rax,%r13,8), %xmm3            # xmm3 = mem[0],zero
	mulsd	%xmm4, %xmm3
	divsd	%xmm0, %xmm3
	addsd	(%r9,%rbx,8), %xmm3
	addsd	%xmm2, %xmm1
	movsd	%xmm3, (%r9,%rbx,8)
	movq	24(%rdi), %r9
	movsd	(%rax,%r13,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	mulsd	(%r8,%rdx,8), %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r9,%rbx,8), %xmm2
	movsd	%xmm2, (%r9,%rbx,8)
	movq	32(%rdi), %r8
	movsd	(%rax,%r13,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	mulsd	%xmm1, %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r8,%rbx,8), %xmm2
	movsd	%xmm2, (%r8,%rbx,8)
	testl	%ecx, %ecx
	jle	.LBB51_15
# %bb.14:
	movq	40(%rdi), %rax
	movq	64(%rsi), %rsi
	movsd	(%rsi,%rdx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm4, %xmm1
	divsd	%xmm0, %xmm1
	addsd	(%rax,%rbx,8), %xmm1
	movsd	%xmm1, (%rax,%rbx,8)
	movq	48(%rdi), %rax
	xorps	%xmm1, %xmm1
	cvtsi2sd	%ecx, %xmm1
	mulsd	%xmm4, %xmm1
	divsd	%xmm0, %xmm1
	addsd	(%rax,%rbx,8), %xmm1
	movsd	%xmm1, (%rax,%rbx,8)
.LBB51_15:
	movsd	%xmm4, (%rsp)                   # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI51_4(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	movq	gas(%rip), %rax
	movsd	216(%rax,%rbx,8), %xmm1         # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	jbe	.LBB51_17
# %bb.16:
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	subsd	(%r15), %xmm0
	movsd	%xmm0, (%r15)
	movq	molecs(%rip), %rdi
	movq	48(%rdi), %rdx
	movq	8(%rdx), %rsi
	movslq	(%r14), %rdx
	movsd	(%rsi,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	xorpd	.LCPI51_6(%rip), %xmm0
	movlpd	%xmm0, (%rsi,%rdx,8)
	movsd	(%r15), %xmm4                   # xmm4 = mem[0],zero
	subsd	(%rcx,%rbx,8), %xmm4
	divsd	%xmm0, %xmm4
	movsd	(%rsp), %xmm3                   # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	jmp	.LBB51_34
.LBB51_17:
	movsd	192(%rax,%rbx,8), %xmm0         # xmm0 = mem[0],zero
	mulsd	.LCPI51_5(%rip), %xmm0
	movq	320(%rax), %rax
	movq	40(%rax), %rax
	divsd	(%rax,%r13,8), %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jb	.LBB51_19
# %bb.18:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB51_20
.LBB51_19:                              # %call.sqrt
	callq	sqrt
.LBB51_20:                              # %.split
	movapd	%xmm0, 80(%rsp)                 # 16-byte Spill
	movsd	%xmm0, 72(%rsp)
	movq	geom(%rip), %rax
	movq	128(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	molecs(%rip), %rax
	movq	40(%rax), %rcx
	movq	8(%rcx), %rcx
	movslq	(%r14), %rdx
	subsd	(%rcx,%rdx,8), %xmm0
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	divsd	(%rax,%rdx,8), %xmm0
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI51_4(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	callq	log
	movapd	%xmm0, %xmm1
	movapd	.LCPI51_6(%rip), %xmm0          # xmm0 = [-0.0E+0,-0.0E+0]
	xorpd	%xmm1, %xmm0
	movsd	.LCPI51_7(%rip), %xmm2          # xmm2 = mem[0],zero
	ucomisd	%xmm1, %xmm2
	jb	.LBB51_22
# %bb.21:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB51_23
.LBB51_22:                              # %call.sqrt238
	callq	sqrt
.LBB51_23:                              # %.split.split
	movapd	80(%rsp), %xmm1                 # 16-byte Reload
	mulsd	%xmm0, %xmm1
	movapd	%xmm1, %xmm0
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rcx
	movslq	(%r14), %rdx
	leaq	(,%rdx,8), %rsi
	cmpl	$2, %ebp
	jne	.LBB51_25
# %bb.24:
	xorpd	.LCPI51_6(%rip), %xmm0
.LBB51_25:                              # %.split.split
	movsd	%xmm0, (%rcx,%rdx,8)
	movq	16(%rax), %rdi
	addq	%rsi, %rdi
	addq	24(%rax), %rsi
	leaq	72(%rsp), %rdx
	callq	_Z5RVELCRdS_S_
	movq	molecs(%rip), %rcx
	movq	48(%rcx), %rax
	movq	16(%rax), %rsi
	movslq	(%r14), %rdx
	movsd	(%rsi,%rdx,8), %xmm0            # xmm0 = mem[0],zero
	movq	gas(%rip), %rax
	addsd	240(%rax,%rbx,8), %xmm0
	movsd	%xmm0, (%rsi,%rdx,8)
	movq	488(%rax), %rsi
	movq	8(%rsi), %rsi
	cmpl	$0, (%rsi,%r13,4)
	jle	.LBB51_27
# %bb.26:
	leaq	(%rax,%rbx,8), %rsi
	addq	$192, %rsi
	shlq	$3, %rdx
	addq	64(%rcx), %rdx
	leaq	12(%rsp), %rdi
	callq	_Z4SROTRiRdS0_
	movq	gas(%rip), %rax
.LBB51_27:
	cmpl	$0, 428(%rax)
	movq	%r15, 32(%rsp)                  # 8-byte Spill
	jle	.LBB51_31
# %bb.28:                               # %.preheader197
	movl	$1, 8(%rsp)
	movq	472(%rax), %rcx
	cmpl	$0, (%rcx,%r13,4)
	jle	.LBB51_31
# %bb.29:                               # %.lr.ph.preheader
	xorl	%ebp, %ebp
	leaq	12(%rsp), %r15
	leaq	8(%rsp), %r12
.LBB51_30:                              # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	leaq	(%rax,%rbx,8), %rsi
	addq	$192, %rsi
	movq	molecs(%rip), %rax
	movq	32(%rax), %rax
	movslq	(%r14), %rdx
	shlq	$2, %rdx
	addq	8(%rax,%rbp,8), %rdx
	movq	%r15, %rdi
	movq	%r12, %rcx
	callq	_Z4SVIBRiRdS_S_
	leal	2(%rbp), %eax
	movl	%eax, 8(%rsp)
	movq	gas(%rip), %rax
	movq	472(%rax), %rcx
	movslq	(%rcx,%r13,4), %rcx
	incq	%rbp
	cmpq	%rcx, %rbp
	jl	.LBB51_30
.LBB51_31:                              # %.loopexit198
	cmpl	$2, 452(%rax)
	movq	molecs(%rip), %rdi
	movl	(%r14), %edx
	jl	.LBB51_33
# %bb.32:
	movslq	%edx, %rdx
	leaq	(%rax,%rbx,8), %rsi
	addq	$192, %rsi
	shlq	$3, %rdx
	addq	72(%rdi), %rdx
	leaq	12(%rsp), %rdi
	callq	_Z4SELERiRdS0_
	movq	molecs(%rip), %rdi
	movl	(%r14), %edx
	movq	gas(%rip), %rax
.LBB51_33:
	movq	32(%rsp), %r15                  # 8-byte Reload
	movsd	(%rsp), %xmm3                   # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	16(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	24(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
.LBB51_34:
	movq	output(%rip), %rcx
	movq	192(%rcx), %rsi
	movq	16(%rsi), %r8
	movq	(%r8,%rbx,8), %r8
	movq	(%r8,%r13,8), %r10
	movsd	16(%r10), %xmm0                 # xmm0 = mem[0],zero
	movq	48(%rdi), %r9
	movq	8(%r9), %r8
	movslq	%edx, %rdi
	movsd	(%r8,%rdi,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	movq	320(%rax), %rdx
	movq	40(%rdx), %rdx
	mulsd	(%rdx,%r13,8), %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%r10)
	movq	24(%rsi), %r10
	movq	(%r10,%rbx,8), %r10
	movq	(%r10,%r13,8), %r10
	movq	16(%r9), %r11
	movsd	(%r11,%rdi,8), %xmm0            # xmm0 = mem[0],zero
	subsd	240(%rax,%rbx,8), %xmm0
	movsd	16(%r10), %xmm1                 # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm0
	mulsd	(%rdx,%r13,8), %xmm0
	subsd	%xmm0, %xmm1
	movsd	%xmm1, 16(%r10)
	movq	32(%rsi), %r10
	movq	(%r10,%rbx,8), %r10
	movq	(%r10,%r13,8), %r10
	movsd	16(%r10), %xmm0                 # xmm0 = mem[0],zero
	movq	24(%r9), %r9
	movsd	(%r9,%rdi,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	mulsd	(%rdx,%r13,8), %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%r10)
	movsd	(%r8,%rdi,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	movsd	(%r11,%rdi,8), %xmm1            # xmm1 = mem[0],zero
	subsd	240(%rax,%rbx,8), %xmm1
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	movsd	(%r9,%rdi,8), %xmm0             # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	movq	40(%rsi), %rdi
	movq	(%rdi,%rbx,8), %rdi
	movq	(%rdi,%r13,8), %rdi
	mulsd	(%rdx,%r13,8), %xmm2
	movsd	16(%rdi), %xmm1                 # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm2
	subsd	%xmm2, %xmm1
	movsd	%xmm1, 16(%rdi)
	movq	488(%rax), %rdx
	movq	8(%rdx), %rdx
	cmpl	$0, (%rdx,%r13,4)
	jle	.LBB51_36
# %bb.35:
	movq	48(%rsi), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movq	(%rdx,%r13,8), %rdx
	movsd	16(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movq	molecs(%rip), %rdi
	movq	64(%rdi), %rdi
	movslq	(%r14), %r8
	movsd	(%rdi,%r8,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%rdx)
.LBB51_36:
	cmpl	$2, 452(%rax)
	jl	.LBB51_38
# %bb.37:
	movq	64(%rsi), %rdx
	movq	(%rdx,%rbx,8), %rdx
	movq	(%rdx,%r13,8), %rdx
	movsd	16(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movq	molecs(%rip), %rdi
	movq	72(%rdi), %rdi
	movslq	(%r14), %r8
	movsd	(%rdi,%r8,8), %xmm1             # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%rdx)
.LBB51_38:
	cmpl	$0, 428(%rax)
	jle	.LBB51_39
# %bb.40:
	movq	472(%rax), %rdx
	movl	(%rdx,%r13,4), %r8d
	movq	molecs(%rip), %rdx
	movl	(%r14), %edi
	testl	%r8d, %r8d
	jle	.LBB51_43
# %bb.41:                               # %.preheader
	movslq	%edi, %r9
	movq	56(%rsi), %rsi
	movq	(%rsi,%rbx,8), %rsi
	movq	(%rsi,%r13,8), %rsi
	movq	32(%rdx), %r10
	movq	360(%rax), %rax
	movq	8(%rax), %rax
	movsd	16(%rsi), %xmm0                 # xmm0 = mem[0],zero
	incq	%r8
	movl	$1, %r11d
	movsd	.LCPI51_8(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB51_42:                              # =>This Inner Loop Header: Depth=1
	movq	(%r10,%r11,8), %r14
	xorps	%xmm2, %xmm2
	cvtsi2sdl	(%r14,%r9,4), %xmm2
	mulsd	%xmm3, %xmm2
	mulsd	%xmm1, %xmm2
	movq	(%rax,%r11,8), %r14
	mulsd	(%r14,%r13,8), %xmm2
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 16(%rsi)
	incq	%r11
	cmpq	%r11, %r8
	jne	.LBB51_42
	jmp	.LBB51_43
.LBB51_39:                              # %._crit_edge227
	movq	molecs(%rip), %rdx
	movl	(%r14), %edi
.LBB51_43:                              # %.loopexit
	movq	48(%rdx), %r8
	movslq	%edi, %rax
	movq	8(%r8), %rdi
	movq	16(%r8), %rsi
	leaq	(%rdi,%rax,8), %r9
	movsd	(%r9), %xmm0                    # xmm0 = mem[0],zero
	movapd	%xmm0, %xmm1
	mulsd	%xmm0, %xmm1
	movsd	(%rsi,%rax,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	addsd	%xmm1, %xmm2
	movq	24(%r8), %rdi
	movsd	(%rdi,%rax,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
	addsd	%xmm2, %xmm1
	andpd	.LCPI51_3(%rip), %xmm0
	movq	152(%rcx), %rcx
	movq	8(%rcx), %r8
	movapd	%xmm3, %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r8,%rbx,8), %xmm2
	movsd	%xmm2, (%r8,%rbx,8)
	movq	16(%rcx), %r10
	movq	gas(%rip), %r8
	movq	320(%r8), %r11
	movq	40(%r11), %r11
	movsd	(%r11,%r13,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm3, %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r10,%rbx,8), %xmm2
	movsd	%xmm2, (%r10,%rbx,8)
	movq	24(%rcx), %r10
	movsd	(%r11,%r13,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm3, %xmm2
	mulsd	(%rsi,%rax,8), %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r10,%rbx,8), %xmm2
	movsd	%xmm2, (%r10,%rbx,8)
	movq	32(%rcx), %r10
	movsd	(%r11,%r13,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm3, %xmm2
	mulsd	%xmm1, %xmm2
	divsd	%xmm0, %xmm2
	addsd	(%r10,%rbx,8), %xmm2
	movsd	%xmm2, (%r10,%rbx,8)
	movq	488(%r8), %r8
	movq	8(%r8), %r8
	movl	(%r8,%r13,4), %r8d
	testl	%r8d, %r8d
	jle	.LBB51_45
# %bb.44:
	movq	40(%rcx), %r10
	movsd	(%r10,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	mulsd	%xmm3, %xmm1
	movq	64(%rdx), %rdx
	movsd	(%rdx,%rax,8), %xmm2            # xmm2 = mem[0],zero
	divsd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	movsd	%xmm2, (%r10,%rbx,8)
	movq	48(%rcx), %rcx
	xorps	%xmm1, %xmm1
	cvtsi2sd	%r8d, %xmm1
	mulsd	%xmm3, %xmm1
	divsd	%xmm0, %xmm1
	addsd	(%rcx,%rbx,8), %xmm1
	movsd	%xmm1, (%rcx,%rbx,8)
.LBB51_45:
	movq	geom(%rip), %rcx
	movq	128(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 64(%rsp)
	movsd	(%r9), %xmm1                    # xmm1 = mem[0],zero
	mulsd	%xmm4, %xmm1
	movsd	%xmm1, 56(%rsp)
	movq	$0, 40(%rsp)
	movl	24(%rcx), %ecx
	testl	%ecx, %ecx
	jle	.LBB51_49
# %bb.46:
	leaq	(%rsi,%rax,8), %r10
	leaq	(%rdi,%rax,8), %rax
	movsd	(%r10), %xmm0                   # xmm0 = mem[0],zero
	mulsd	%xmm4, %xmm0
	movsd	%xmm0, 48(%rsp)
	cmpl	$2, %ecx
	jne	.LBB51_48
# %bb.47:
	mulsd	(%rax), %xmm4
	movsd	%xmm4, 40(%rsp)
.LBB51_48:
	leaq	64(%rsp), %rdi
	leaq	56(%rsp), %rsi
	leaq	48(%rsp), %rdx
	leaq	40(%rsp), %rcx
	movq	%r15, %r8
	pushq	%rax
	.cfi_adjust_cfa_offset 8
	pushq	%r10
	.cfi_adjust_cfa_offset 8
	callq	_Z4AIFXRdS_S_S_S_S_S_S_
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	jmp	.LBB51_51
.LBB51_49:
	jne	.LBB51_51
# %bb.50:
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%r15)
.LBB51_51:                              # %.thread184
	addq	$104, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end51:
	.size	_Z10REFLECT_1DRiiRd, .Lfunc_end51-_Z10REFLECT_1DRiiRd
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z3RBCRdS_S_S_S_S_
.LCPI52_0:
	.quad	0x8000000000000000              # double -0
.LCPI52_1:
	.quad	0x4000000000000000              # double 2
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI52_2:
	.quad	0x8000000000000000              # double -0
	.quad	0x8000000000000000              # double -0
	.text
	.globl	_Z3RBCRdS_S_S_S_S_
	.type	_Z3RBCRdS_S_S_S_S_,@function
_Z3RBCRdS_S_S_S_S_:                     # @_Z3RBCRdS_S_S_S_S_
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	subq	$16, %rsp
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -16
	movq	%r9, %rbx
	movsd	(%rsi), %xmm3                   # xmm3 = mem[0],zero
	movapd	%xmm3, %xmm1
	mulsd	%xmm3, %xmm1
	movsd	(%rcx), %xmm0                   # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
	movq	geom(%rip), %rax
	cmpl	$2, 24(%rax)
	je	.LBB52_1
# %bb.2:
	movsd	.LCPI52_0(%rip), %xmm1          # xmm1 = mem[0],zero
	jmp	.LBB52_3
.LBB52_1:
	movsd	(%rdx), %xmm1                   # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm1
.LBB52_3:
	addsd	%xmm1, %xmm0
	movsd	(%rdi), %xmm1                   # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm3
	divsd	%xmm0, %xmm3
	mulsd	%xmm1, %xmm1
	movsd	(%r8), %xmm2                    # xmm2 = mem[0],zero
	mulsd	%xmm2, %xmm2
	subsd	%xmm2, %xmm1
	divsd	%xmm0, %xmm1
	movapd	%xmm3, %xmm0
	mulsd	%xmm3, %xmm0
	subsd	%xmm1, %xmm0
	xorpd	%xmm1, %xmm1
	ucomisd	%xmm1, %xmm0
	jae	.LBB52_5
# %bb.4:
	movsd	.LCPI52_1(%rip), %xmm0          # xmm0 = mem[0],zero
	jmp	.LBB52_11
.LBB52_5:
	jb	.LBB52_7
# %bb.6:
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB52_8
.LBB52_7:                               # %call.sqrt
	movapd	%xmm3, (%rsp)                   # 16-byte Spill
	callq	sqrt
	movapd	(%rsp), %xmm3                   # 16-byte Reload
.LBB52_8:                               # %.split
	movapd	%xmm0, %xmm1
	subsd	%xmm3, %xmm1
	xorpd	.LCPI52_2(%rip), %xmm3
	subsd	%xmm0, %xmm3
	xorpd	%xmm0, %xmm0
	ucomisd	%xmm3, %xmm0
	jbe	.LBB52_10
# %bb.9:
	cmpltsd	%xmm1, %xmm0
	andpd	%xmm0, %xmm1
	movsd	.LCPI52_1(%rip), %xmm2          # xmm2 = mem[0],zero
	andnpd	%xmm2, %xmm0
	orpd	%xmm1, %xmm0
	jmp	.LBB52_11
.LBB52_10:
	minsd	%xmm3, %xmm1
	movapd	%xmm1, %xmm0
.LBB52_11:
	movsd	%xmm0, (%rbx)
	addq	$16, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end52:
	.size	_Z3RBCRdS_S_S_S_S_, .Lfunc_end52-_Z3RBCRdS_S_S_S_S_
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z12DISSOCIATIONv
.LCPI53_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI53_1:
	.quad	0x3ff199999999999a              # double 1.1000000000000001
.LCPI53_2:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI53_3:
	.quad	0xbff0000000000000              # double -1
.LCPI53_4:
	.quad	0x401921fb54442d18              # double 6.2831853071795862
.LCPI53_6:
	.quad	0x40f86a0000000000              # double 1.0E+5
.LCPI53_7:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI53_5:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.text
	.globl	_Z12DISSOCIATIONv
	.type	_Z12DISSOCIATIONv,@function
_Z12DISSOCIATIONv:                      # @_Z12DISSOCIATIONv
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	subq	$120, %rsp
	.cfi_def_cfa_offset 160
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	molecs(%rip), %rcx
	movl	80(%rcx), %esi
	testl	%esi, %esi
	jle	.LBB53_39
# %bb.1:                                # %.lr.ph102
	movq	gas(%rip), %rax
	xorl	%ebx, %ebx
.LBB53_2:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB53_4 Depth 2
                                        #       Child Loop BB53_5 Depth 3
                                        #     Child Loop BB53_20 Depth 2
                                        #     Child Loop BB53_26 Depth 2
                                        #     Child Loop BB53_33 Depth 2
	movq	8(%rcx), %rdx
	movslq	4(%rdx,%rbx,4), %r14
	incq	%rbx
	movq	472(%rax), %rdi
	movl	(%rdi,%r14,4), %edi
	testl	%edi, %edi
	jle	.LBB53_38
# %bb.3:                                # %.preheader92
                                        #   in Loop: Header=BB53_2 Depth=1
	movq	32(%rcx), %r8
	movq	calc(%rip), %r9
	notq	%rdi
	movl	$1, %r10d
	xorl	%r11d, %r11d
.LBB53_4:                               # %.outer
                                        #   Parent Loop BB53_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB53_5 Depth 3
	incq	%r10
.LBB53_5:                               #   Parent Loop BB53_2 Depth=1
                                        #     Parent Loop BB53_4 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	-8(%r8,%r10,8), %r15
	cmpl	$0, (%r15,%rbx,4)
	js	.LBB53_8
# %bb.6:                                #   in Loop: Header=BB53_5 Depth=3
	leaq	(%rdi,%r10), %r15
	incq	%r15
	incq	%r10
	cmpq	$1, %r15
	jne	.LBB53_5
	jmp	.LBB53_7
.LBB53_8:                               # %.thread
                                        #   in Loop: Header=BB53_4 Depth=2
	movq	288(%r9), %r11
	movsd	(%r11,%r14,8), %xmm0            # xmm0 = mem[0],zero
	addsd	.LCPI53_0(%rip), %xmm0
	movsd	%xmm0, (%r11,%r14,8)
	movb	$1, %r11b
	movq	%rdi, %r15
	addq	%r10, %r15
	jne	.LBB53_4
	jmp	.LBB53_9
.LBB53_7:                               #   in Loop: Header=BB53_2 Depth=1
	testb	$1, %r11b
	je	.LBB53_38
.LBB53_9:                               # %.thread125
                                        #   in Loop: Header=BB53_2 Depth=1
	movq	64(%rcx), %rdi
	movsd	(%rdi,%rbx,8), %xmm1            # xmm1 = mem[0],zero
	cmpl	$2, 452(%rax)
	jl	.LBB53_11
# %bb.10:                               #   in Loop: Header=BB53_2 Depth=1
	movq	72(%rcx), %rdi
	addsd	(%rdi,%rbx,8), %xmm1
.LBB53_11:                              #   in Loop: Header=BB53_2 Depth=1
	cmpl	84(%rcx), %esi
	jl	.LBB53_13
# %bb.12:                               #   in Loop: Header=BB53_2 Depth=1
	movsd	.LCPI53_1(%rip), %xmm0          # xmm0 = mem[0],zero
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	callq	_Z10EXTEND_MNMd
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movq	molecs(%rip), %rcx
	movq	8(%rcx), %rdx
	movq	gas(%rip), %rax
.LBB53_13:                              #   in Loop: Header=BB53_2 Depth=1
	movslq	80(%rcx), %rsi
	leaq	1(%rsi), %rdi
	movl	%edi, 80(%rcx)
	movq	48(%rcx), %rdi
	movq	8(%rdi), %r8
	movsd	(%r8,%rbx,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, 88(%rsp)
	movq	16(%rdi), %r8
	movsd	(%r8,%rbx,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, 96(%rsp)
	movq	24(%rdi), %rdi
	movsd	(%rdi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 104(%rsp)
	movq	40(%rcx), %rdi
	movq	calc(%rip), %r8
	movslq	60(%r8), %r8
	movq	(%rdi,%r8,8), %rdi
	movsd	(%rdi,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 8(%rdi,%rsi,8)
	movq	(%rcx), %rdi
	movl	(%rdi,%rbx,4), %r8d
	movl	%r8d, 4(%rdi,%rsi,4)
	movslq	(%rdx,%rbx,4), %rsi
	movq	544(%rax), %rdi
	movq	8(%rdi), %rdi
	decl	(%rdi,%rsi,4)
	movq	568(%rax), %rsi
	movq	8(%rsi), %rdi
	movq	8(%rdi), %rdi
	movl	(%rdi,%r14,4), %edi
	movslq	80(%rcx), %r8
	movl	%edi, (%rdx,%r8,4)
	movslq	80(%rcx), %rdi
	movslq	(%rdx,%rdi,4), %r15
	movq	16(%rsi), %rsi
	movq	8(%rsi), %rsi
	movslq	(%rsi,%r14,4), %r12
	movl	%r12d, (%rdx,%rbx,4)
	movq	536(%rax), %rdx
	movq	8(%rdx), %rdx
	incl	(%rdx,%r12,4)
	incl	(%rdx,%r15,4)
	movq	56(%rcx), %rdx
	movsd	(%rdx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movslq	80(%rcx), %rcx
	movsd	%xmm0, (%rdx,%rcx,8)
	addsd	%xmm1, %xmm1
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r12,8), %rax
	divsd	(%rax,%r15,8), %xmm1
	ucomisd	.LCPI53_7(%rip), %xmm1
	jb	.LBB53_15
# %bb.14:                               #   in Loop: Header=BB53_2 Depth=1
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm1, %xmm0
	jmp	.LBB53_16
.LBB53_15:                              # %call.sqrt
                                        #   in Loop: Header=BB53_2 Depth=1
	movapd	%xmm1, %xmm0
	callq	sqrt
.LBB53_16:                              # %.split
                                        #   in Loop: Header=BB53_2 Depth=1
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	gas(%rip), %rax
	movq	320(%rax), %rcx
	movq	352(%rax), %rax
	movq	8(%rax), %rax
	movq	(%rax,%r12,8), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movq	40(%rcx), %rax
	movapd	%xmm0, %xmm1
	divsd	(%rax,%r15,8), %xmm1
	movsd	%xmm1, 32(%rsp)                 # 8-byte Spill
	divsd	(%rax,%r12,8), %xmm0
	movsd	%xmm0, 40(%rsp)                 # 8-byte Spill
	callq	rand
	cvtsi2sd	%eax, %xmm2
	divsd	.LCPI53_2(%rip), %xmm2
	movq	calc(%rip), %rax
	movsd	%xmm2, 152(%rax)
	addsd	%xmm2, %xmm2
	addsd	.LCPI53_3(%rip), %xmm2
	movapd	%xmm2, %xmm1
	mulsd	%xmm2, %xmm1
	movsd	.LCPI53_0(%rip), %xmm0          # xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	ucomisd	.LCPI53_7(%rip), %xmm0
	jb	.LBB53_18
# %bb.17:                               #   in Loop: Header=BB53_2 Depth=1
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB53_19
.LBB53_18:                              # %call.sqrt148
                                        #   in Loop: Header=BB53_2 Depth=1
	movsd	%xmm2, 16(%rsp)                 # 8-byte Spill
	callq	sqrt
	movsd	16(%rsp), %xmm2                 # 8-byte Reload
                                        # xmm2 = mem[0],zero
.LBB53_19:                              # %.split.split
                                        #   in Loop: Header=BB53_2 Depth=1
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	mulsd	8(%rsp), %xmm2                  # 8-byte Folded Reload
	movsd	%xmm2, 56(%rsp)
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI53_2(%rip), %xmm0
	movq	calc(%rip), %rax
	movsd	%xmm0, 152(%rax)
	mulsd	.LCPI53_4(%rip), %xmm0
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	callq	cos
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 64(%rsp)
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 72(%rsp)
	movq	molecs(%rip), %rax
	movq	48(%rax), %rcx
	movslq	80(%rax), %rax
	movl	$1, %edx
	movsd	40(%rsp), %xmm3                 # 8-byte Reload
                                        # xmm3 = mem[0],zero
	movsd	32(%rsp), %xmm4                 # 8-byte Reload
                                        # xmm4 = mem[0],zero
.LBB53_20:                              #   Parent Loop BB53_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	80(%rsp,%rdx,8), %xmm0          # xmm0 = mem[0],zero
	movsd	48(%rsp,%rdx,8), %xmm1          # xmm1 = mem[0],zero
	movapd	%xmm3, %xmm2
	mulsd	%xmm1, %xmm2
	addsd	%xmm0, %xmm2
	movq	(%rcx,%rdx,8), %rsi
	movsd	%xmm2, (%rsi,%rbx,8)
	mulsd	%xmm4, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, (%rsi,%rax,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB53_20
# %bb.21:                               #   in Loop: Header=BB53_2 Depth=1
	movq	8(%rcx), %rcx
	movsd	(%rcx,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	andpd	.LCPI53_5(%rip), %xmm0
	ucomisd	.LCPI53_6(%rip), %xmm0
	ja	.LBB53_23
# %bb.22:                               #   in Loop: Header=BB53_2 Depth=1
	movsd	(%rcx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	andpd	.LCPI53_5(%rip), %xmm0
	ucomisd	.LCPI53_6(%rip), %xmm0
	jbe	.LBB53_24
.LBB53_23:                              #   in Loop: Header=BB53_2 Depth=1
	movl	$_ZSt4cout, %edi
	movl	$.L.str.178, %esi
	movl	$22, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movl	%ebx, %esi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	48(%rax), %rax
	movq	8(%rax), %rax
	movsd	(%rax,%rbx,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movl	80(%rax), %esi
	movq	%r14, %rdi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.27, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	molecs(%rip), %rax
	movq	48(%rax), %rcx
	movq	8(%rcx), %rcx
	movslq	80(%rax), %rax
	movsd	(%rcx,%rax,8), %xmm0            # xmm0 = mem[0],zero
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.LBB53_24:                              #   in Loop: Header=BB53_2 Depth=1
	movq	gas(%rip), %rax
	movq	472(%rax), %rcx
	cmpl	$0, (%rcx,%r12,4)
	jle	.LBB53_27
# %bb.25:                               # %.lr.ph
                                        #   in Loop: Header=BB53_2 Depth=1
	movq	molecs(%rip), %rdx
	movq	32(%rdx), %rdx
	xorl	%esi, %esi
.LBB53_26:                              #   Parent Loop BB53_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	8(%rdx,%rsi,8), %rdi
	movl	$0, (%rdi,%rbx,4)
	movslq	(%rcx,%r12,4), %rdi
	incq	%rsi
	cmpq	%rdi, %rsi
	jl	.LBB53_26
.LBB53_27:                              # %.loopexit91
                                        #   in Loop: Header=BB53_2 Depth=1
	movq	488(%rax), %rdx
	movq	8(%rdx), %rdx
	cmpl	$0, (%rdx,%r12,4)
	jle	.LBB53_29
# %bb.28:                               #   in Loop: Header=BB53_2 Depth=1
	movq	molecs(%rip), %rsi
	movq	64(%rsi), %rsi
	movq	$0, (%rsi,%rbx,8)
.LBB53_29:                              #   in Loop: Header=BB53_2 Depth=1
	cmpl	$2, 452(%rax)
	jl	.LBB53_31
# %bb.30:                               #   in Loop: Header=BB53_2 Depth=1
	movq	molecs(%rip), %rsi
	movq	72(%rsi), %rsi
	movq	$0, (%rsi,%rbx,8)
.LBB53_31:                              #   in Loop: Header=BB53_2 Depth=1
	cmpl	$0, (%rcx,%r15,4)
	jle	.LBB53_34
# %bb.32:                               # %.lr.ph100
                                        #   in Loop: Header=BB53_2 Depth=1
	movq	molecs(%rip), %rsi
	movq	32(%rsi), %rdi
	xorl	%r8d, %r8d
.LBB53_33:                              #   Parent Loop BB53_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	8(%rdi,%r8,8), %r9
	movslq	80(%rsi), %r10
	movl	$0, (%r9,%r10,4)
	movslq	(%rcx,%r15,4), %r9
	incq	%r8
	cmpq	%r9, %r8
	jl	.LBB53_33
.LBB53_34:                              # %.loopexit
                                        #   in Loop: Header=BB53_2 Depth=1
	cmpl	$0, (%rdx,%r15,4)
	movq	molecs(%rip), %rcx
	jle	.LBB53_36
# %bb.35:                               #   in Loop: Header=BB53_2 Depth=1
	movq	64(%rcx), %rdx
	movslq	80(%rcx), %rsi
	movq	$0, (%rdx,%rsi,8)
.LBB53_36:                              #   in Loop: Header=BB53_2 Depth=1
	cmpl	$2, 452(%rax)
	jl	.LBB53_38
# %bb.37:                               #   in Loop: Header=BB53_2 Depth=1
	movq	72(%rcx), %rdx
	movslq	80(%rcx), %rsi
	movq	$0, (%rdx,%rsi,8)
.LBB53_38:                              #   in Loop: Header=BB53_2 Depth=1
	movslq	80(%rcx), %rsi
	cmpq	%rsi, %rbx
	jl	.LBB53_2
.LBB53_39:                              # %._crit_edge
	addq	$120, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end53:
	.size	_Z12DISSOCIATIONv, .Lfunc_end53-_Z12DISSOCIATIONv
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z5SETXTv
.LCPI54_0:
	.quad	0x3fe0000000000000              # double 0.5
.LCPI54_1:
	.quad	0x4008000000000000              # double 3
.LCPI54_2:
	.quad	0x3ff0000000000000              # double 1
.LCPI54_3:
	.quad	0x3b30b0edf6c91c1b              # double 1.3806580000000001E-23
	.text
	.globl	_Z5SETXTv
	.type	_Z5SETXTv,@function
_Z5SETXTv:                              # @_Z5SETXTv
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$56, %edi
	callq	_Znam
	movq	%rax, %rbx
	movq	geom(%rip), %rax
	movslq	(%rax), %rax
	cmpq	$-2, %rax
	leaq	16(,%rax,8), %rax
	movq	$-1, %r14
	cmovgeq	%rax, %r14
	xorl	%r15d, %r15d
.LBB54_1:                               # =>This Inner Loop Header: Depth=1
	movq	%r14, %rdi
	callq	_Znam
	movq	%rax, (%rbx,%r15,8)
	incq	%r15
	cmpq	$7, %r15
	jne	.LBB54_1
# %bb.2:
	movq	calc(%rip), %rax
	movsd	104(%rax), %xmm0                # xmm0 = mem[0],zero
	mulsd	.LCPI54_0(%rip), %xmm0
	ucomisd	80(%rax), %xmm0
	jbe	.LBB54_11
# %bb.3:
	movl	$1, 52(%rax)
	movl	$file_9+16, %edi
	movl	$.L.str.183, %esi
	movl	$20, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movq	geom(%rip), %rcx
	movl	(%rcx), %esi
	incl	%esi
	imull	52(%rax), %esi
	movl	$file_9+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$file_18+16, %r14d
	movl	$file_18+16, %edi
	movl	$.L.str.184, %esi
	movl	$50, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	file_18+16(%rip), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$file_18+16, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$file_18+16, %edi
	movl	$.L.str.185, %esi
	movl	$8, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	geom(%rip), %rax
	movl	(%rax), %esi
	incl	%esi
	movl	$file_18+16, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movl	$.L.str.186, %esi
	movl	$52, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	(%r14), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rax
	cmpl	$0, (%rax)
	js	.LBB54_25
# %bb.4:                                # %.lr.ph142
	movq	8(%rbx), %r15
	movq	16(%rbx), %rcx
	movq	%rcx, 16(%rsp)                  # 8-byte Spill
	movq	24(%rbx), %rcx
	movq	%rcx, (%rsp)                    # 8-byte Spill
	movq	32(%rbx), %rcx
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	movq	40(%rbx), %r12
	movq	48(%rbx), %rbp
	movl	$1, %r13d
.LBB54_5:                               # =>This Loop Header: Depth=1
                                        #     Child Loop BB54_9 Depth 2
	movq	128(%rax), %rcx
	leal	-1(%r13), %edx
	xorps	%xmm0, %xmm0
	cvtsi2sd	%edx, %xmm0
	mulsd	72(%rax), %xmm0
	addsd	8(%rcx), %xmm0
	movsd	%xmm0, (%r15,%r13,8)
	movq	16(%rsp), %rcx                  # 8-byte Reload
	xorl	%esi, %esi
	movq	%rsi, (%rcx,%r13,8)
	movq	gas(%rip), %rcx
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movq	(%rsp), %rdx                    # 8-byte Reload
	movsd	%xmm0, (%rdx,%r13,8)
	movq	8(%rsp), %rdx                   # 8-byte Reload
	movq	%rsi, (%rdx,%r13,8)
	movsd	80(%rcx), %xmm0                 # xmm0 = mem[0],zero
	mulsd	.LCPI54_3(%rip), %xmm0
	mulsd	104(%rcx), %xmm0
	movsd	%xmm0, (%r12,%r13,8)
	movsd	104(%rcx), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, (%rbp,%r13,8)
	movsd	(%r15,%r13,8), %xmm0            # xmm0 = mem[0],zero
	ucomisd	80(%rax), %xmm0
	jbe	.LBB54_8
# %bb.6:                                #   in Loop: Header=BB54_5 Depth=1
	movq	calc(%rip), %rax
	cmpl	$1, 28(%rax)
	jne	.LBB54_8
# %bb.7:                                #   in Loop: Header=BB54_5 Depth=1
	movsd	88(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movq	(%rsp), %rax                    # 8-byte Reload
	movsd	%xmm0, (%rax,%r13,8)
	mulsd	.LCPI54_3(%rip), %xmm0
	mulsd	112(%rcx), %xmm0
	movsd	%xmm0, (%r12,%r13,8)
	movsd	112(%rcx), %xmm0                # xmm0 = mem[0],zero
	movsd	%xmm0, (%rbp,%r13,8)
.LBB54_8:                               # %.preheader173
                                        #   in Loop: Header=BB54_5 Depth=1
	movl	$1, %r14d
.LBB54_9:                               #   Parent Loop BB54_5 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rbx,%r14,8), %rax
	movsd	(%rax,%r13,8), %xmm0            # xmm0 = mem[0],zero
	movl	$file_18+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	incq	%r14
	cmpq	$7, %r14
	jne	.LBB54_9
# %bb.10:                               #   in Loop: Header=BB54_5 Depth=1
	movl	$file_18+16, %edi
	movsd	.LCPI54_2(%rip), %xmm0          # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	leaq	1(%r13), %rcx
	movq	geom(%rip), %rax
	movslq	(%rax), %rdx
	cmpq	%rdx, %r13
	movq	%rcx, %r13
	jle	.LBB54_5
	jmp	.LBB54_25
.LBB54_11:
	incl	52(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.183, %esi
	movl	$20, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	calc(%rip), %rax
	movl	52(%rax), %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSolsEi
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movq	geom(%rip), %rcx
	movl	32(%rcx), %eax
	cmpl	$1, %eax
	je	.LBB54_14
# %bb.12:
                                        # implicit-def: $xmm0
	testl	%eax, %eax
	jne	.LBB54_15
# %bb.13:                               # %.thread
	movsd	72(%rcx), %xmm0                 # xmm0 = mem[0],zero
	jmp	.LBB54_15
.LBB54_14:
	movq	128(%rcx), %rax
	movsd	88(%rcx), %xmm0                 # xmm0 = mem[0],zero
	movq	calc(%rip), %rdx
	mulsd	80(%rdx), %xmm0
	addsd	16(%rax), %xmm0
	subsd	8(%rax), %xmm0
	cvtsi2sdl	12(%rcx), %xmm1
	divsd	%xmm1, %xmm0
.LBB54_15:
	movl	(%rcx), %eax
	testl	%eax, %eax
	js	.LBB54_16
# %bb.26:                               # %.lr.ph
	movq	128(%rcx), %rcx
	movq	8(%rbx), %rdx
	movq	16(%rbx), %rsi
	movq	calc(%rip), %rdi
	movq	output(%rip), %r8
	leaq	2(%rax), %r9
	movl	$1, %r10d
	movsd	.LCPI54_0(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB54_27:                              # =>This Inner Loop Header: Depth=1
	leal	-1(%r10), %r11d
	xorps	%xmm2, %xmm2
	cvtsi2sd	%r11d, %xmm2
	mulsd	%xmm0, %xmm2
	addsd	8(%rcx), %xmm2
	movsd	%xmm2, (%rdx,%r10,8)
	movsd	80(%rdi), %xmm2                 # xmm2 = mem[0],zero
	movsd	%xmm2, (%rsi,%r10,8)
	cmpq	$2, %r10
	jb	.LBB54_30
# %bb.28:                               #   in Loop: Header=BB54_27 Depth=1
	cmpq	%rax, %r10
	ja	.LBB54_30
# %bb.29:                               #   in Loop: Header=BB54_27 Depth=1
	movq	136(%r8), %r11
	movq	24(%r11), %r14
	movsd	(%r14,%r10,8), %xmm2            # xmm2 = mem[0],zero
	addsd	-8(%r14,%r10,8), %xmm2
	mulsd	%xmm1, %xmm2
	movq	24(%rbx), %r14
	movsd	%xmm2, (%r14,%r10,8)
	movq	40(%r11), %r14
	movsd	(%r14,%r10,8), %xmm2            # xmm2 = mem[0],zero
	addsd	-8(%r14,%r10,8), %xmm2
	mulsd	%xmm1, %xmm2
	movq	32(%rbx), %r14
	movsd	%xmm2, (%r14,%r10,8)
	movq	144(%r11), %r14
	movsd	(%r14,%r10,8), %xmm2            # xmm2 = mem[0],zero
	addsd	-8(%r14,%r10,8), %xmm2
	mulsd	%xmm1, %xmm2
	movq	40(%rbx), %r14
	movsd	%xmm2, (%r14,%r10,8)
	movq	88(%r11), %r11
	movsd	(%r11,%r10,8), %xmm2            # xmm2 = mem[0],zero
	addsd	-8(%r11,%r10,8), %xmm2
	mulsd	%xmm1, %xmm2
	movq	48(%rbx), %r11
	movsd	%xmm2, (%r11,%r10,8)
.LBB54_30:                              #   in Loop: Header=BB54_27 Depth=1
	incq	%r10
	cmpq	%r10, %r9
	jne	.LBB54_27
.LBB54_16:                              # %.preheader130.preheader
	xorl	%ecx, %ecx
	movsd	.LCPI54_1(%rip), %xmm0          # xmm0 = mem[0],zero
	movsd	.LCPI54_0(%rip), %xmm1          # xmm1 = mem[0],zero
.LBB54_17:                              # %.preheader130
                                        # =>This Inner Loop Header: Depth=1
	movq	24(%rbx,%rcx,8), %rdx
	movsd	16(%rdx), %xmm2                 # xmm2 = mem[0],zero
	mulsd	%xmm0, %xmm2
	subsd	24(%rdx), %xmm2
	mulsd	%xmm1, %xmm2
	movsd	%xmm2, 8(%rdx)
	incq	%rcx
	cmpq	$4, %rcx
	jne	.LBB54_17
# %bb.18:                               # %.preheader129
	movslq	%eax, %rcx
	xorl	%edx, %edx
.LBB54_19:                              # =>This Inner Loop Header: Depth=1
	movq	24(%rbx,%rdx,8), %rsi
	movsd	(%rsi,%rcx,8), %xmm2            # xmm2 = mem[0],zero
	mulsd	%xmm0, %xmm2
	subsd	-8(%rsi,%rcx,8), %xmm2
	mulsd	%xmm1, %xmm2
	movsd	%xmm2, 8(%rsi,%rcx,8)
	incq	%rdx
	cmpq	$4, %rdx
	jne	.LBB54_19
# %bb.20:                               # %.preheader127
	testl	%eax, %eax
	js	.LBB54_25
# %bb.21:                               # %.preheader.preheader
	movl	$1, %r15d
.LBB54_22:                              # %.preheader
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB54_23 Depth 2
	movl	$1, %r14d
.LBB54_23:                              #   Parent Loop BB54_22 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	(%rbx,%r14,8), %rax
	movsd	(%rax,%r15,8), %xmm0            # xmm0 = mem[0],zero
	movl	$file_18+16, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
	movl	$.L.str.182, %esi
	movl	$1, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	incq	%r14
	cmpq	$7, %r14
	jne	.LBB54_23
# %bb.24:                               #   in Loop: Header=BB54_22 Depth=1
	movl	$file_18+16, %edi
	movsd	.LCPI54_2(%rip), %xmm0          # xmm0 = mem[0],zero
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %r14
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r14, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movq	%r14, %rdi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	leaq	1(%r15), %rax
	movq	geom(%rip), %rcx
	movslq	(%rcx), %rcx
	cmpq	%rcx, %r15
	movq	%rax, %r15
	jle	.LBB54_22
.LBB54_25:                              # %.loopexit
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end54:
	.size	_Z5SETXTv, .Lfunc_end54-_Z5SETXTv
	.cfi_endproc
                                        # -- End function
	.section	.text.__clang_call_terminate,"axG",@progbits,__clang_call_terminate,comdat
	.hidden	__clang_call_terminate          # -- Begin function __clang_call_terminate
	.weak	__clang_call_terminate
	.type	__clang_call_terminate,@function
__clang_call_terminate:                 # @__clang_call_terminate
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	callq	__cxa_begin_catch
	callq	_ZSt9terminatev
.Lfunc_end55:
	.size	__clang_call_terminate, .Lfunc_end55-__clang_call_terminate
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_,"axG",@progbits,_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_,comdat
	.weak	_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_ # -- Begin function _ZNSt8__detail18__to_chars_10_implIjEEvPcjT_
	.type	_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_,@function
_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_: # @_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_
	.cfi_startproc
# %bb.0:
                                        # kill: def $esi killed $esi def $rsi
	cmpl	$100, %edx
	jb	.LBB56_1
# %bb.2:                                # %.lr.ph.preheader
	decl	%esi
.LBB56_3:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movl	%edx, %eax
	imulq	$1374389535, %rax, %rax         # imm = 0x51EB851F
	shrq	$37, %rax
	imull	$100, %eax, %ecx
	movl	%edx, %r8d
	subl	%ecx, %r8d
	movb	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits+1(%r8,%r8), %cl
	movl	%esi, %r9d
	movb	%cl, (%rdi,%r9)
	movb	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits(%r8,%r8), %cl
	leal	-1(%rsi), %r8d
	movb	%cl, (%rdi,%r8)
	addl	$-2, %esi
	cmpl	$9999, %edx                     # imm = 0x270F
	movl	%eax, %edx
	ja	.LBB56_3
	jmp	.LBB56_4
.LBB56_1:
	movl	%edx, %eax
.LBB56_4:                               # %._crit_edge
	cmpl	$10, %eax
	jb	.LBB56_6
# %bb.5:
	movl	%eax, %eax
	leaq	(%rax,%rax), %rcx
	movl	%ecx, %ecx
	movb	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits+1(%rcx), %cl
	movb	%cl, 1(%rdi)
	movb	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits(%rax,%rax), %al
	jmp	.LBB56_7
.LBB56_6:
	orb	$48, %al
.LBB56_7:
	movb	%al, (%rdi)
	retq
.Lfunc_end56:
	.size	_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_, .Lfunc_end56-_ZNSt8__detail18__to_chars_10_implIjEEvPcjT_
	.cfi_endproc
                                        # -- End function
	.section	.text.startup,"ax",@progbits
	.type	_GLOBAL__sub_I_gpu_main.hip,@function # -- Begin function _GLOBAL__sub_I_gpu_main.hip
_GLOBAL__sub_I_gpu_main.hip:            # @_GLOBAL__sub_I_gpu_main.hip
.Lfunc_begin8:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception8
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	pushq	%rax
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movl	$file_9, %edi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	movl	$_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev, %edi
	movl	$file_9, %esi
	movl	$__dso_handle, %edx
	callq	__cxa_atexit
	movl	$file_18, %edi
	callq	_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev
	movl	$_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev, %edi
	movl	$file_18, %esi
	movl	$__dso_handle, %edx
	callq	__cxa_atexit
	movq	%rsp, %rbx
	movl	$336, %esi                      # imm = 0x150
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	callq	hipDeviceSynchronize
	movq	(%rbx), %rax
	movq	%rax, calc(%rip)
	movq	%rsp, %rbx
	movl	$592, %esi                      # imm = 0x250
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	callq	hipDeviceSynchronize
	movq	(%rbx), %rax
	movq	%rax, gas(%rip)
	movq	%rsp, %rbx
	movl	$88, %esi
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	callq	hipDeviceSynchronize
	movq	(%rbx), %rax
	movq	%rax, molecs(%rip)
	movq	%rsp, %rbx
	movl	$152, %esi
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	callq	hipDeviceSynchronize
	movq	(%rbx), %rbx
	leaq	40(%rbx), %rdi
.Ltmp3036:
	movl	$12, %esi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp3037:
# %bb.1:                                # %.noexc.i
	leaq	128(%rbx), %rdi
.Ltmp3038:
	movl	$24, %esi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp3039:
# %bb.2:                                # %__cxx_global_var_init.5.exit
	movq	%rbx, geom(%rip)
	movq	%rsp, %rbx
	movl	$200, %esi
	movq	%rbx, %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	callq	hipDeviceSynchronize
	movq	(%rbx), %rbx
	leaq	24(%rbx), %rdi
.Ltmp3041:
	movl	$804, %esi                      # imm = 0x324
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp3042:
# %bb.3:                                # %__cxx_global_var_init.6.exit
	movq	%rbx, output(%rip)
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	retq
.LBB57_6:
	.cfi_def_cfa_offset 32
.Ltmp3043:
	jmp	.LBB57_5
.LBB57_4:
.Ltmp3040:
.LBB57_5:                               # %common.resume
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	_ZN7ManageddlEPv
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end57:
	.size	_GLOBAL__sub_I_gpu_main.hip, .Lfunc_end57-_GLOBAL__sub_I_gpu_main.hip
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table57:
.Lexception8:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end8-.Lcst_begin8
.Lcst_begin8:
	.uleb128 .Lfunc_begin8-.Lfunc_begin8    # >> Call Site 1 <<
	.uleb128 .Ltmp3036-.Lfunc_begin8        #   Call between .Lfunc_begin8 and .Ltmp3036
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3036-.Lfunc_begin8        # >> Call Site 2 <<
	.uleb128 .Ltmp3039-.Ltmp3036            #   Call between .Ltmp3036 and .Ltmp3039
	.uleb128 .Ltmp3040-.Lfunc_begin8        #     jumps to .Ltmp3040
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3039-.Lfunc_begin8        # >> Call Site 3 <<
	.uleb128 .Ltmp3041-.Ltmp3039            #   Call between .Ltmp3039 and .Ltmp3041
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3041-.Lfunc_begin8        # >> Call Site 4 <<
	.uleb128 .Ltmp3042-.Ltmp3041            #   Call between .Ltmp3041 and .Ltmp3042
	.uleb128 .Ltmp3043-.Lfunc_begin8        #     jumps to .Ltmp3043
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3042-.Lfunc_begin8        # >> Call Site 5 <<
	.uleb128 .Lfunc_end57-.Ltmp3042         #   Call between .Ltmp3042 and .Lfunc_end57
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end8:
	.p2align	2, 0x0
                                        # -- End function
	.type	start,@object                   # @start
	.bss
	.globl	start
	.p2align	3, 0x0
start:
	.quad	0                               # 0x0
	.size	start, 8

	.type	file_9,@object                  # @file_9
	.globl	file_9
	.p2align	3, 0x0
file_9:
	.zero	528
	.size	file_9, 528

	.hidden	__dso_handle
	.type	file_18,@object                 # @file_18
	.globl	file_18
	.p2align	3, 0x0
file_18:
	.zero	528
	.size	file_18, 528

	.type	calc,@object                    # @calc
	.globl	calc
	.p2align	3, 0x0
calc:
	.quad	0
	.size	calc, 8

	.type	gas,@object                     # @gas
	.globl	gas
	.p2align	3, 0x0
gas:
	.quad	0
	.size	gas, 8

	.type	molecs,@object                  # @molecs
	.globl	molecs
	.p2align	3, 0x0
molecs:
	.quad	0
	.size	molecs, 8

	.type	geom,@object                    # @geom
	.globl	geom
	.p2align	3, 0x0
geom:
	.quad	0
	.size	geom, 8

	.type	output,@object                  # @output
	.globl	output
	.p2align	3, 0x0
output:
	.quad	0
	.size	output, 8

	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	"DSMC PROGRAM"
	.size	.L.str, 13

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	"DIAG.TXT"
	.size	.L.str.7, 9

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"File DIAG.TXT has been opened"
	.size	.L.str.8, 30

	.type	.L.str.9,@object                # @.str.9
.L.str.9:
	.asciz	"Stop the DS1.EXE that is already running and try again"
	.size	.L.str.9, 55

	.type	.L.str.10,@object               # @.str.10
.L.str.10:
	.asciz	"DSMC Version"
	.size	.L.str.10, 13

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"enter 1 to continue a current run"
	.size	.L.str.11, 34

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"enter 2 to start a new run :-"
	.size	.L.str.12, 30

	.type	.L.str.13,@object               # @.str.13
.L.str.13:
	.asciz	"Continuing an existing run"
	.size	.L.str.13, 27

	.type	.L.str.14,@object               # @.str.14
.L.str.14:
	.asciz	"Enter 1 to confirm, 0 to continue current run :-"
	.size	.L.str.14, 49

	.type	.L.str.15,@object               # @.str.15
.L.str.15:
	.asciz	"Starting a new run"
	.size	.L.str.15, 19

	.type	.L.str.16,@object               # @.str.16
.L.str.16:
	.asciz	"Enter 0 for a homogeneous gas, or"
	.size	.L.str.16, 34

	.type	.L.str.17,@object               # @.str.17
.L.str.17:
	.asciz	"Enter 1 for a one-dimensional flow, or"
	.size	.L.str.17, 39

	.type	.L.str.18,@object               # @.str.18
.L.str.18:
	.asciz	"Enter 2 for a two-dimensional plane flow, or"
	.size	.L.str.18, 45

	.type	.L.str.19,@object               # @.str.19
.L.str.19:
	.asciz	"Enter 3 for a three dimensional flow, or"
	.size	.L.str.19, 41

	.type	.L.str.20,@object               # @.str.20
.L.str.20:
	.asciz	"enter 4 for an axially-symmetric flow :-"
	.size	.L.str.20, 41

	.type	.L.str.21,@object               # @.str.21
.L.str.21:
	.asciz	"Enter 0 for an eventually steady flow, or"
	.size	.L.str.21, 42

	.type	.L.str.22,@object               # @.str.22
.L.str.22:
	.asciz	"enter 1 for a continuing unsteady flow :-"
	.size	.L.str.22, 42

	.type	.L.str.23,@object               # @.str.23
.L.str.23:
	.asciz	"RUN_CLASS.TXT"
	.size	.L.str.23, 14

	.type	.L.str.24,@object               # @.str.24
.L.str.24:
	.asciz	"RUN_CLASS.TXT is opened"
	.size	.L.str.24, 24

	.type	.L.str.25,@object               # @.str.25
.L.str.25:
	.asciz	"RUN_CLASS.TXT not opened"
	.size	.L.str.25, 25

	.type	.L.str.26,@object               # @.str.26
.L.str.26:
	.asciz	"Starting a new run with ICLASS, ISF "
	.size	.L.str.26, 37

	.type	.L.str.27,@object               # @.str.27
.L.str.27:
	.asciz	" "
	.size	.L.str.27, 2

	.type	.L.str.42,@object               # @.str.42
.L.str.42:
	.asciz	" to "
	.size	.L.str.42, 5

	.type	.L.str.43,@object               # @.str.43
.L.str.43:
	.asciz	"  TIME  "
	.size	.L.str.43, 9

	.type	.L.str.44,@object               # @.str.44
.L.str.44:
	.asciz	"  NM  "
	.size	.L.str.44, 7

	.type	.L.str.45,@object               # @.str.45
.L.str.45:
	.asciz	"  COLLS  "
	.size	.L.str.45, 10

	.type	.L.str.46,@object               # @.str.46
.L.str.46:
	.asciz	"  TIME   "
	.size	.L.str.46, 10

	.type	.L.str.47,@object               # @.str.47
.L.str.47:
	.asciz	"writing OUTPUT"
	.size	.L.str.47, 15

	.type	.L.str.48,@object               # @.str.48
.L.str.48:
	.asciz	"Reading HARD_SPHERE Data"
	.size	.L.str.48, 25

	.type	.L.str.49,@object               # @.str.49
.L.str.49:
	.asciz	"Hard Sphere data done"
	.size	.L.str.49, 22

	.type	.L.str.50,@object               # @.str.50
.L.str.50:
	.asciz	"Reading Argon Data"
	.size	.L.str.50, 19

	.type	.L.str.51,@object               # @.str.51
.L.str.51:
	.asciz	"Argon Data done"
	.size	.L.str.51, 16

	.type	.L.str.52,@object               # @.str.52
.L.str.52:
	.asciz	"Reading IDEAL_NITROGEN data"
	.size	.L.str.52, 28

	.type	.L.str.53,@object               # @.str.53
.L.str.53:
	.asciz	"Reading Real_Oxygen data"
	.size	.L.str.53, 25

	.type	.L.str.54,@object               # @.str.54
.L.str.54:
	.asciz	"Real_Oxygen data done"
	.size	.L.str.54, 22

	.type	.L.str.55,@object               # @.str.55
.L.str.55:
	.asciz	"Reading IDEAL_AIR data"
	.size	.L.str.55, 23

	.type	.L.str.56,@object               # @.str.56
.L.str.56:
	.asciz	"IDEAL_AIR data done"
	.size	.L.str.56, 20

	.type	.L.str.57,@object               # @.str.57
.L.str.57:
	.asciz	"REAL_AIR data done"
	.size	.L.str.57, 19

	.type	.L.str.58,@object               # @.str.58
.L.str.58:
	.asciz	"Reading HELIUM_ARGON_XENON data"
	.size	.L.str.58, 32

	.type	.L.str.59,@object               # @.str.59
.L.str.59:
	.asciz	"HELIUM_ARGON_XENON data done"
	.size	.L.str.59, 29

	.type	.L.str.60,@object               # @.str.60
.L.str.60:
	.asciz	"Reading OXYGEN_HYDROGEN data"
	.size	.L.str.60, 29

	.type	.L.str.61,@object               # @.str.61
.L.str.61:
	.asciz	"OXYGEN_HYDROGEN data done"
	.size	.L.str.61, 26

	.type	.L.str.62,@object               # @.str.62
.L.str.62:
	.asciz	"Setting derived gas data"
	.size	.L.str.62, 25

	.type	.L.str.63,@object               # @.str.63
.L.str.63:
	.asciz	"Char. Diss temp of species "
	.size	.L.str.63, 28

	.type	.L.str.64,@object               # @.str.64
.L.str.64:
	.asciz	" is "
	.size	.L.str.64, 5

	.type	.L.str.65,@object               # @.str.65
.L.str.65:
	.asciz	"Reaction "
	.size	.L.str.65, 10

	.type	.L.str.66,@object               # @.str.66
.L.str.66:
	.asciz	" heat of reaction"
	.size	.L.str.66, 18

	.type	.L.str.67,@object               # @.str.67
.L.str.67:
	.asciz	"SPECIES "
	.size	.L.str.67, 9

	.type	.L.str.68,@object               # @.str.68
.L.str.68:
	.asciz	" RECOMBINE TO"
	.size	.L.str.68, 14

	.type	.L.str.69,@object               # @.str.69
.L.str.69:
	.asciz	" The variable MVIBL="
	.size	.L.str.69, 21

	.type	.L.str.70,@object               # @.str.70
.L.str.70:
	.asciz	" in the gas database must be increased to"
	.size	.L.str.70, 42

	.type	.L.str.71,@object               # @.str.71
.L.str.71:
	.asciz	"Enter 0 ENTER to stop"
	.size	.L.str.71, 22

	.type	.L.str.72,@object               # @.str.72
.L.str.72:
	.asciz	"TEMPERATURE "
	.size	.L.str.72, 13

	.type	.L.str.73,@object               # @.str.73
.L.str.73:
	.asciz	"CDF level dissoc "
	.size	.L.str.73, 18

	.type	.L.str.74,@object               # @.str.74
.L.str.74:
	.asciz	" REVERSE REACTION"
	.size	.L.str.74, 18

	.type	.L.str.75,@object               # @.str.75
.L.str.75:
	.asciz	"Cumulative "
	.size	.L.str.75, 12

	.type	.L.str.76,@object               # @.str.76
.L.str.76:
	.asciz	"Reading the data file DS0D.DAT"
	.size	.L.str.76, 31

	.type	.L.str.77,@object               # @.str.77
.L.str.77:
	.asciz	"DS0D.DAT"
	.size	.L.str.77, 9

	.type	.L.str.78,@object               # @.str.78
.L.str.78:
	.asciz	"DS0D.TXT"
	.size	.L.str.78, 9

	.type	.L.str.79,@object               # @.str.79
.L.str.79:
	.asciz	"Data summary for program DSMC"
	.size	.L.str.79, 30

	.type	.L.str.80,@object               # @.str.80
.L.str.80:
	.asciz	"Reading the data file DS1D.DAT"
	.size	.L.str.80, 31

	.type	.L.str.81,@object               # @.str.81
.L.str.81:
	.asciz	"DS1D.DAT"
	.size	.L.str.81, 9

	.type	.L.str.82,@object               # @.str.82
.L.str.82:
	.asciz	"DS1D.TXT"
	.size	.L.str.82, 9

	.type	.L.str.83,@object               # @.str.83
.L.str.83:
	.asciz	"The n in version number n.m is "
	.size	.L.str.83, 32

	.type	.L.str.84,@object               # @.str.84
.L.str.84:
	.asciz	"The m in version number n.m is "
	.size	.L.str.84, 32

	.type	.L.str.85,@object               # @.str.85
.L.str.85:
	.asciz	"The approximate number of megabytes for the calculation is "
	.size	.L.str.85, 60

	.type	.L.str.86,@object               # @.str.86
.L.str.86:
	.asciz	" Hard sphere gas "
	.size	.L.str.86, 18

	.type	.L.str.87,@object               # @.str.87
.L.str.87:
	.asciz	"Argon "
	.size	.L.str.87, 7

	.type	.L.str.88,@object               # @.str.88
.L.str.88:
	.asciz	"Ideal nitrogen"
	.size	.L.str.88, 15

	.type	.L.str.89,@object               # @.str.89
.L.str.89:
	.asciz	"Real oxygen "
	.size	.L.str.89, 13

	.type	.L.str.90,@object               # @.str.90
.L.str.90:
	.asciz	"Ideal air "
	.size	.L.str.90, 11

	.type	.L.str.91,@object               # @.str.91
.L.str.91:
	.asciz	"Real air @ 7.5 km/s "
	.size	.L.str.91, 21

	.type	.L.str.92,@object               # @.str.92
.L.str.92:
	.asciz	"Helium-argon-xenon mixture "
	.size	.L.str.92, 28

	.type	.L.str.93,@object               # @.str.93
.L.str.93:
	.asciz	"Oxygen-hydrogen "
	.size	.L.str.93, 17

	.type	.L.str.94,@object               # @.str.94
.L.str.94:
	.asciz	"The gas properties are:- "
	.size	.L.str.94, 26

	.type	.L.str.95,@object               # @.str.95
.L.str.95:
	.asciz	"The stream number density is "
	.size	.L.str.95, 30

	.type	.L.str.96,@object               # @.str.96
.L.str.96:
	.asciz	"The stream temperature is "
	.size	.L.str.96, 27

	.type	.L.str.97,@object               # @.str.97
.L.str.97:
	.asciz	"The stream vibrational and electronic temperature is "
	.size	.L.str.97, 54

	.type	.L.str.98,@object               # @.str.98
.L.str.98:
	.asciz	"The stream velocity in the x direction is "
	.size	.L.str.98, 43

	.type	.L.str.99,@object               # @.str.99
.L.str.99:
	.asciz	"The stream velocity in the y direction is "
	.size	.L.str.99, 43

	.type	.L.str.100,@object              # @.str.100
.L.str.100:
	.asciz	" The fraction of species "
	.size	.L.str.100, 26

	.type	.L.str.101,@object              # @.str.101
.L.str.101:
	.asciz	"Plane Flow"
	.size	.L.str.101, 11

	.type	.L.str.102,@object              # @.str.102
.L.str.102:
	.asciz	"Cylindrical flow"
	.size	.L.str.102, 17

	.type	.L.str.103,@object              # @.str.103
.L.str.103:
	.asciz	"Spherical flow"
	.size	.L.str.103, 15

	.type	.L.str.104,@object              # @.str.104
.L.str.104:
	.asciz	"The minimum x coordinate is "
	.size	.L.str.104, 29

	.type	.L.str.105,@object              # @.str.105
.L.str.105:
	.asciz	"The minimum x coordinate is a stream boundary"
	.size	.L.str.105, 46

	.type	.L.str.106,@object              # @.str.106
.L.str.106:
	.asciz	"The minimum x coordinate is a plane of symmetry"
	.size	.L.str.106, 48

	.type	.L.str.107,@object              # @.str.107
.L.str.107:
	.asciz	"The minimum x coordinate is a solid surface"
	.size	.L.str.107, 44

	.type	.L.str.108,@object              # @.str.108
.L.str.108:
	.asciz	"The minimum x coordinate is a vacuum"
	.size	.L.str.108, 37

	.type	.L.str.109,@object              # @.str.109
.L.str.109:
	.asciz	"The minimum x coordinate is an axis or center"
	.size	.L.str.109, 46

	.type	.L.str.110,@object              # @.str.110
.L.str.110:
	.asciz	"The minimum x boundary is a surface with the following properties"
	.size	.L.str.110, 66

	.type	.L.str.111,@object              # @.str.111
.L.str.111:
	.asciz	"The temperature of the surface is "
	.size	.L.str.111, 35

	.type	.L.str.112,@object              # @.str.112
.L.str.112:
	.asciz	"The fraction of specular reflection is "
	.size	.L.str.112, 40

	.type	.L.str.113,@object              # @.str.113
.L.str.113:
	.asciz	"The velocity in the y direction of this surface is "
	.size	.L.str.113, 52

	.type	.L.str.114,@object              # @.str.114
.L.str.114:
	.asciz	"The maximum x coordinate is "
	.size	.L.str.114, 29

	.type	.L.str.115,@object              # @.str.115
.L.str.115:
	.asciz	"The mmaximum  x coordinate is a stream boundary"
	.size	.L.str.115, 48

	.type	.L.str.116,@object              # @.str.116
.L.str.116:
	.asciz	"The maximum x coordinate is a plane of symmetry"
	.size	.L.str.116, 48

	.type	.L.str.117,@object              # @.str.117
.L.str.117:
	.asciz	"The maximum  x coordinate is a solid surface"
	.size	.L.str.117, 45

	.type	.L.str.118,@object              # @.str.118
.L.str.118:
	.asciz	"The maximum  x coordinate is a vacuum"
	.size	.L.str.118, 38

	.type	.L.str.119,@object              # @.str.119
.L.str.119:
	.asciz	"The maximum x coordinate is a stream boundary with a fixed number of simulated molecules"
	.size	.L.str.119, 89

	.type	.L.str.120,@object              # @.str.120
.L.str.120:
	.asciz	"The maximum  x boundary is a surface with the following properties"
	.size	.L.str.120, 67

	.type	.L.str.121,@object              # @.str.121
.L.str.121:
	.asciz	"There are no radial weighting factors"
	.size	.L.str.121, 38

	.type	.L.str.122,@object              # @.str.122
.L.str.122:
	.asciz	"There are radial weighting factors"
	.size	.L.str.122, 35

	.type	.L.str.123,@object              # @.str.123
.L.str.123:
	.asciz	"The maximum value of the weighting factor is  "
	.size	.L.str.123, 47

	.type	.L.str.124,@object              # @.str.124
.L.str.124:
	.asciz	"The flowfield is initially a vacuum "
	.size	.L.str.124, 37

	.type	.L.str.125,@object              # @.str.125
.L.str.125:
	.asciz	"The flowfield is initially the stream(s) or reference gas"
	.size	.L.str.125, 58

	.type	.L.str.126,@object              # @.str.126
.L.str.126:
	.asciz	"There is no secondary stream initially at x > 0"
	.size	.L.str.126, 48

	.type	.L.str.127,@object              # @.str.127
.L.str.127:
	.asciz	"There is a secondary stream applied initially at x = 0 (XB(2) must be > 0)"
	.size	.L.str.127, 75

	.type	.L.str.128,@object              # @.str.128
.L.str.128:
	.asciz	"There cannot be a secondary stream when weighting factors are present"
	.size	.L.str.128, 70

	.type	.L.str.129,@object              # @.str.129
.L.str.129:
	.asciz	"There is a secondary stream"
	.size	.L.str.129, 28

	.type	.L.str.130,@object              # @.str.130
.L.str.130:
	.asciz	"The secondary stream boundary is at r= "
	.size	.L.str.130, 40

	.type	.L.str.131,@object              # @.str.131
.L.str.131:
	.asciz	"The secondary stream (at x>0 or X>XS) properties are:-"
	.size	.L.str.131, 55

	.type	.L.str.132,@object              # @.str.132
.L.str.132:
	.asciz	"The fraction of species "
	.size	.L.str.132, 25

	.type	.L.str.133,@object              # @.str.133
.L.str.133:
	.asciz	"There is no molecule removal"
	.size	.L.str.133, 29

	.type	.L.str.134,@object              # @.str.134
.L.str.134:
	.asciz	"There is full removal of the entering (at XB(1)) molecules between "
	.size	.L.str.134, 68

	.type	.L.str.135,@object              # @.str.135
.L.str.135:
	.asciz	" and "
	.size	.L.str.135, 6

	.type	.L.str.136,@object              # @.str.136
.L.str.136:
	.asciz	"Molecule removal is specified whenever the program is restarted"
	.size	.L.str.136, 64

	.type	.L.str.137,@object              # @.str.137
.L.str.137:
	.asciz	"The outer boundary is stationary"
	.size	.L.str.137, 33

	.type	.L.str.138,@object              # @.str.138
.L.str.138:
	.asciz	"The outer boundary moves with a constant speed"
	.size	.L.str.138, 47

	.type	.L.str.139,@object              # @.str.139
.L.str.139:
	.asciz	" The speed of the outer boundary is "
	.size	.L.str.139, 37

	.type	.L.str.140,@object              # @.str.140
.L.str.140:
	.asciz	"The desired number of molecules in a sampling cell is "
	.size	.L.str.140, 55

	.type	.L.str.141,@object              # @.str.141
.L.str.141:
	.asciz	"The number of divisions is "
	.size	.L.str.141, 28

	.type	.L.str.142,@object              # @.str.142
.L.str.142:
	.asciz	"The number of sampling cells is "
	.size	.L.str.142, 33

	.type	.L.str.143,@object              # @.str.143
.L.str.143:
	.asciz	"The number of collision cells is "
	.size	.L.str.143, 34

	.type	.L.str.144,@object              # @.str.144
.L.str.144:
	.asciz	"FNUM is "
	.size	.L.str.144, 9

	.type	.L.str.145,@object              # @.str.145
.L.str.145:
	.asciz	"VMPM = "
	.size	.L.str.145, 8

	.type	.L.str.146,@object              # @.str.146
.L.str.146:
	.asciz	"Collision time in the stream is "
	.size	.L.str.146, 33

	.type	.L.str.147,@object              # @.str.147
.L.str.147:
	.asciz	"Mean free path in the stream is "
	.size	.L.str.147, 33

	.type	.L.str.148,@object              # @.str.148
.L.str.148:
	.asciz	"The initial value of the overall time step is "
	.size	.L.str.148, 47

	.type	.L.str.149,@object              # @.str.149
.L.str.149:
	.asciz	"Setting the initial gas"
	.size	.L.str.149, 24

	.type	.L.str.150,@object              # @.str.150
.L.str.150:
	.asciz	"DMOM "
	.size	.L.str.150, 6

	.type	.L.str.151,@object              # @.str.151
.L.str.151:
	.asciz	"DENG "
	.size	.L.str.151, 6

	.type	.L.str.152,@object              # @.str.152
.L.str.152:
	.asciz	"EXTEND_MNM from MOLECULES_ENTER "
	.size	.L.str.152, 33

	.type	.L.str.153,@object              # @.str.153
.L.str.153:
	.asciz	"Unable to find molecule for removal"
	.size	.L.str.153, 36

	.type	.L.str.154,@object              # @.str.154
.L.str.154:
	.asciz	"No cell for molecule at x= "
	.size	.L.str.154, 28

	.type	.L.str.155,@object              # @.str.155
.L.str.155:
	.asciz	"Sample \t"
	.size	.L.str.155, 9

	.type	.L.str.156,@object              # @.str.156
.L.str.156:
	.asciz	"  Mols. at sample  "
	.size	.L.str.156, 20

	.type	.L.str.157,@object              # @.str.157
.L.str.157:
	.asciz	"Illegal sampling cell  "
	.size	.L.str.157, 24

	.type	.L.str.158,@object              # @.str.158
.L.str.158:
	.asciz	"  "
	.size	.L.str.158, 3

	.type	.L.str.159,@object              # @.str.159
.L.str.159:
	.asciz	"  for MOL  "
	.size	.L.str.159, 12

	.type	.L.str.160,@object              # @.str.160
.L.str.160:
	.asciz	"  at  "
	.size	.L.str.160, 7

	.type	.L.str.161,@object              # @.str.161
.L.str.161:
	.asciz	"ILEVEL = "
	.size	.L.str.161, 10

	.type	.L.str.162,@object              # @.str.162
.L.str.162:
	.asciz	"KDIV "
	.size	.L.str.162, 6

	.type	.L.str.163,@object              # @.str.163
.L.str.163:
	.asciz	"NC "
	.size	.L.str.163, 4

	.type	.L.str.164,@object              # @.str.164
.L.str.164:
	.asciz	"Number of divisions "
	.size	.L.str.164, 21

	.type	.L.str.165,@object              # @.str.165
.L.str.165:
	.asciz	"Total divisions from sampling cells "
	.size	.L.str.165, 37

	.type	.L.str.166,@object              # @.str.166
.L.str.166:
	.asciz	"Adapted sampling cells "
	.size	.L.str.166, 24

	.type	.L.str.167,@object              # @.str.167
.L.str.167:
	.asciz	"Adapted collision cells "
	.size	.L.str.167, 25

	.type	.L.str.170,@object              # @.str.170
.L.str.170:
	.asciz	"Maximum number of molecules is to be extended from "
	.size	.L.str.170, 52

	.type	.L.str.171,@object              # @.str.171
.L.str.171:
	.asciz	"( if the additional memory is available //// )"
	.size	.L.str.171, 47

	.type	.L.str.172,@object              # @.str.172
.L.str.172:
	.asciz	"EXTMOLS.SCR"
	.size	.L.str.172, 12

	.type	.L.str.173,@object              # @.str.173
.L.str.173:
	.asciz	"EXTMOLS.SCR is opened"
	.size	.L.str.173, 22

	.type	.L.str.174,@object              # @.str.174
.L.str.174:
	.asciz	"EXTMOLS.SCR not opened"
	.size	.L.str.174, 23

	.type	.L.str.175,@object              # @.str.175
.L.str.175:
	.asciz	"Start write to disk storage"
	.size	.L.str.175, 28

	.type	.L.str.176,@object              # @.str.176
.L.str.176:
	.asciz	"Disk write completed"
	.size	.L.str.176, 21

	.type	.L.str.177,@object              # @.str.177
.L.str.177:
	.asciz	"Disk read completed"
	.size	.L.str.177, 20

	.type	.L.str.178,@object              # @.str.178
.L.str.178:
	.asciz	"EXCESSIVE SPEED, DISS "
	.size	.L.str.178, 23

	.type	.L.str.179,@object              # @.str.179
.L.str.179:
	.asciz	"MOL "
	.size	.L.str.179, 5

	.type	.L.str.180,@object              # @.str.180
.L.str.180:
	.asciz	" ENERGY "
	.size	.L.str.180, 9

	.type	.L.str.181,@object              # @.str.181
.L.str.181:
	.asciz	"Total Energy =  "
	.size	.L.str.181, 17

	.type	.L.str.182,@object              # @.str.182
.L.str.182:
	.asciz	"\t"
	.size	.L.str.182, 2

	.type	.L.str.183,@object              # @.str.183
.L.str.183:
	.asciz	"J in tecplot file = "
	.size	.L.str.183, 21

	.type	.L.str.184,@object              # @.str.184
.L.str.184:
	.asciz	"VARIABLES = 'Distance','Time','n','u','p','T','A' "
	.size	.L.str.184, 51

	.type	.L.str.185,@object              # @.str.185
.L.str.185:
	.asciz	"ZONE I= "
	.size	.L.str.185, 9

	.type	.L.str.186,@object              # @.str.186
.L.str.186:
	.asciz	", J=  (set to number of output intervals+1), F=POINT"
	.size	.L.str.186, 53

	.type	.L.str.187,@object              # @.str.187
.L.str.187:
	.asciz	"DUP "
	.size	.L.str.187, 5

	.type	.L.str.188,@object              # @.str.188
.L.str.188:
	.asciz	" OUTSIDE FLOWFIELD AT "
	.size	.L.str.188, 23

	.type	.L.str.189,@object              # @.str.189
.L.str.189:
	.asciz	" VEL "
	.size	.L.str.189, 6

	.type	.L.str.190,@object              # @.str.190
.L.str.190:
	.asciz	"PARAMETERS.DAT"
	.size	.L.str.190, 15

	.type	.L.str.191,@object              # @.str.191
.L.str.191:
	.asciz	"PARAMETERS.DAT opened successfully"
	.size	.L.str.191, 35

	.type	.L.str.192,@object              # @.str.192
.L.str.192:
	.asciz	"PARAMETERS.DAT not opening"
	.size	.L.str.192, 27

	.type	.L.str.193,@object              # @.str.193
.L.str.193:
	.asciz	"RESTART.DAT"
	.size	.L.str.193, 12

	.type	.L.str.194,@object              # @.str.194
.L.str.194:
	.asciz	"RESTART.DAT opened successfully"
	.size	.L.str.194, 32

	.type	.L.str.195,@object              # @.str.195
.L.str.195:
	.asciz	"Restart.DAT not opening"
	.size	.L.str.195, 24

	.type	.L.str.198,@object              # @.str.198
.L.str.198:
	.asciz	"Parameters.DAT file not opening(write)"
	.size	.L.str.198, 39

	.type	.L.str.199,@object              # @.str.199
.L.str.199:
	.asciz	"Restart.DAT file not opening(write)"
	.size	.L.str.199, 36

	.type	.L.str.200,@object              # @.str.200
.L.str.200:
	.asciz	"Restart files written"
	.size	.L.str.200, 22

	.type	.L.str.201,@object              # @.str.201
.L.str.201:
	.asciz	"Generating files for output interval"
	.size	.L.str.201, 37

	.type	.L.str.202,@object              # @.str.202
.L.str.202:
	.asciz	"DS1OUT.DAT"
	.size	.L.str.202, 11

	.type	.L.str.203,@object              # @.str.203
.L.str.203:
	.asciz	"DS1OUT.DAT is opened"
	.size	.L.str.203, 21

	.type	.L.str.204,@object              # @.str.204
.L.str.204:
	.asciz	"DS1OUT.DAT not opened"
	.size	.L.str.204, 22

	.type	.L.str.205,@object              # @.str.205
.L.str.205:
	.asciz	"DS"
	.size	.L.str.205, 3

	.type	.L.str.206,@object              # @.str.206
.L.str.206:
	.asciz	"OUT.DAT"
	.size	.L.str.206, 8

	.type	.L.str.207,@object              # @.str.207
.L.str.207:
	.asciz	" is opened"
	.size	.L.str.207, 11

	.type	.L.str.208,@object              # @.str.208
.L.str.208:
	.asciz	" not opened"
	.size	.L.str.208, 12

	.type	.L.str.209,@object              # @.str.209
.L.str.209:
	.asciz	"DSMC program for a one-dimensional plane flow"
	.size	.L.str.209, 46

	.type	.L.str.210,@object              # @.str.210
.L.str.210:
	.asciz	"DSMC program for a cylindrical flow"
	.size	.L.str.210, 36

	.type	.L.str.211,@object              # @.str.211
.L.str.211:
	.asciz	"DSMC program for a spherical flow"
	.size	.L.str.211, 34

	.type	.L.str.212,@object              # @.str.212
.L.str.212:
	.asciz	"Interval "
	.size	.L.str.212, 10

	.type	.L.str.213,@object              # @.str.213
.L.str.213:
	.asciz	" Time "
	.size	.L.str.213, 7

	.type	.L.str.214,@object              # @.str.214
.L.str.214:
	.asciz	" with "
	.size	.L.str.214, 7

	.type	.L.str.215,@object              # @.str.215
.L.str.215:
	.asciz	" samples from "
	.size	.L.str.215, 15

	.type	.L.str.216,@object              # @.str.216
.L.str.216:
	.asciz	"TOTAL MOLECULES = "
	.size	.L.str.216, 19

	.type	.L.str.217,@object              # @.str.217
.L.str.217:
	.asciz	"Total simulated molecules = "
	.size	.L.str.217, 29

	.type	.L.str.218,@object              # @.str.218
.L.str.218:
	.asciz	" SPECIES "
	.size	.L.str.218, 10

	.type	.L.str.219,@object              # @.str.219
.L.str.219:
	.asciz	" TOTAL = "
	.size	.L.str.219, 10

	.type	.L.str.220,@object              # @.str.220
.L.str.220:
	.asciz	"Species "
	.size	.L.str.220, 9

	.type	.L.str.221,@object              # @.str.221
.L.str.221:
	.asciz	" total = "
	.size	.L.str.221, 10

	.type	.L.str.222,@object              # @.str.222
.L.str.222:
	.asciz	"SP "
	.size	.L.str.222, 4

	.type	.L.str.223,@object              # @.str.223
.L.str.223:
	.asciz	" DISSOCS "
	.size	.L.str.223, 10

	.type	.L.str.224,@object              # @.str.224
.L.str.224:
	.asciz	" RECOMBS "
	.size	.L.str.224, 10

	.type	.L.str.225,@object              # @.str.225
.L.str.225:
	.asciz	"SP"
	.size	.L.str.225, 3

	.type	.L.str.226,@object              # @.str.226
.L.str.226:
	.asciz	"DISSOCS"
	.size	.L.str.226, 8

	.type	.L.str.227,@object              # @.str.227
.L.str.227:
	.asciz	"EX,C reaction"
	.size	.L.str.227, 14

	.type	.L.str.228,@object              # @.str.228
.L.str.228:
	.asciz	" number"
	.size	.L.str.228, 8

	.type	.L.str.229,@object              # @.str.229
.L.str.229:
	.asciz	"EX,C reaction "
	.size	.L.str.229, 15

	.type	.L.str.230,@object              # @.str.230
.L.str.230:
	.asciz	" number "
	.size	.L.str.230, 9

	.type	.L.str.231,@object              # @.str.231
.L.str.231:
	.asciz	"Total molecule moves   = "
	.size	.L.str.231, 26

	.type	.L.str.232,@object              # @.str.232
.L.str.232:
	.asciz	"Total collision events = "
	.size	.L.str.232, 26

	.type	.L.str.233,@object              # @.str.233
.L.str.233:
	.asciz	"Species dependent collision numbers in current sample"
	.size	.L.str.233, 54

	.type	.L.str.234,@object              # @.str.234
.L.str.234:
	.asciz	"Computation time "
	.size	.L.str.234, 18

	.type	.L.str.235,@object              # @.str.235
.L.str.235:
	.asciz	"seconds"
	.size	.L.str.235, 8

	.type	.L.str.236,@object              # @.str.236
.L.str.236:
	.asciz	"Collision events per second "
	.size	.L.str.236, 29

	.type	.L.str.237,@object              # @.str.237
.L.str.237:
	.asciz	"Molecule moves per secon "
	.size	.L.str.237, 26

	.type	.L.str.238,@object              # @.str.238
.L.str.238:
	.asciz	"Overall time step "
	.size	.L.str.238, 19

	.type	.L.str.239,@object              # @.str.239
.L.str.239:
	.asciz	"Molecules per collision cell "
	.size	.L.str.239, 30

	.type	.L.str.240,@object              # @.str.240
.L.str.240:
	.asciz	"Mean cell time ratio "
	.size	.L.str.240, 22

	.type	.L.str.241,@object              # @.str.241
.L.str.241:
	.asciz	"Mean value of cross-section and relative speed "
	.size	.L.str.241, 48

	.type	.L.str.242,@object              # @.str.242
.L.str.242:
	.asciz	"Mean half collision cell time step "
	.size	.L.str.242, 36

	.type	.L.str.243,@object              # @.str.243
.L.str.243:
	.asciz	"Coll. rate ratio to equilib "
	.size	.L.str.243, 29

	.type	.L.str.244,@object              # @.str.244
.L.str.244:
	.asciz	"Species collision rate ratios to equilibrium"
	.size	.L.str.244, 45

	.type	.L.str.245,@object              # @.str.245
.L.str.245:
	.asciz	"Collision rate for species "
	.size	.L.str.245, 28

	.type	.L.str.246,@object              # @.str.246
.L.str.246:
	.asciz	"with species "
	.size	.L.str.246, 14

	.type	.L.str.247,@object              # @.str.247
.L.str.247:
	.asciz	"Collision numbers for species "
	.size	.L.str.247, 31

	.type	.L.str.248,@object              # @.str.248
.L.str.248:
	.asciz	"Surface quantities"
	.size	.L.str.248, 19

	.type	.L.str.249,@object              # @.str.249
.L.str.249:
	.asciz	"Surface at "
	.size	.L.str.249, 12

	.type	.L.str.250,@object              # @.str.250
.L.str.250:
	.asciz	"Incident sample "
	.size	.L.str.250, 17

	.type	.L.str.251,@object              # @.str.251
.L.str.251:
	.asciz	"Number flux "
	.size	.L.str.251, 13

	.type	.L.str.252,@object              # @.str.252
.L.str.252:
	.asciz	" /sq m/s"
	.size	.L.str.252, 9

	.type	.L.str.253,@object              # @.str.253
.L.str.253:
	.asciz	"Inc pressure "
	.size	.L.str.253, 14

	.type	.L.str.254,@object              # @.str.254
.L.str.254:
	.asciz	" Refl pressure "
	.size	.L.str.254, 16

	.type	.L.str.255,@object              # @.str.255
.L.str.255:
	.asciz	"Pressure "
	.size	.L.str.255, 10

	.type	.L.str.256,@object              # @.str.256
.L.str.256:
	.asciz	" N/sq m"
	.size	.L.str.256, 8

	.type	.L.str.257,@object              # @.str.257
.L.str.257:
	.asciz	"Inc y shear "
	.size	.L.str.257, 13

	.type	.L.str.258,@object              # @.str.258
.L.str.258:
	.asciz	" Refl y shear "
	.size	.L.str.258, 15

	.type	.L.str.259,@object              # @.str.259
.L.str.259:
	.asciz	"Net y shear "
	.size	.L.str.259, 13

	.type	.L.str.260,@object              # @.str.260
.L.str.260:
	.asciz	"Net z shear "
	.size	.L.str.260, 13

	.type	.L.str.261,@object              # @.str.261
.L.str.261:
	.asciz	"Incident translational heat flux "
	.size	.L.str.261, 34

	.type	.L.str.262,@object              # @.str.262
.L.str.262:
	.asciz	" W/sq m"
	.size	.L.str.262, 8

	.type	.L.str.263,@object              # @.str.263
.L.str.263:
	.asciz	"Incident rotational heat flux "
	.size	.L.str.263, 31

	.type	.L.str.264,@object              # @.str.264
.L.str.264:
	.asciz	"Incident vibrational heat flux "
	.size	.L.str.264, 32

	.type	.L.str.265,@object              # @.str.265
.L.str.265:
	.asciz	"Incident electronic heat flux "
	.size	.L.str.265, 31

	.type	.L.str.266,@object              # @.str.266
.L.str.266:
	.asciz	"Total incident heat flux "
	.size	.L.str.266, 26

	.type	.L.str.267,@object              # @.str.267
.L.str.267:
	.asciz	"Reflected translational heat flux "
	.size	.L.str.267, 35

	.type	.L.str.268,@object              # @.str.268
.L.str.268:
	.asciz	"Reflected rotational heat flux "
	.size	.L.str.268, 32

	.type	.L.str.269,@object              # @.str.269
.L.str.269:
	.asciz	"Reflected vibrational heat flux "
	.size	.L.str.269, 33

	.type	.L.str.270,@object              # @.str.270
.L.str.270:
	.asciz	"Reflected electronic heat flux "
	.size	.L.str.270, 32

	.type	.L.str.271,@object              # @.str.271
.L.str.271:
	.asciz	"Total reflected heat flux "
	.size	.L.str.271, 27

	.type	.L.str.272,@object              # @.str.272
.L.str.272:
	.asciz	"Net heat flux "
	.size	.L.str.272, 15

	.type	.L.str.273,@object              # @.str.273
.L.str.273:
	.asciz	"Slip velocity (y direction) "
	.size	.L.str.273, 29

	.type	.L.str.274,@object              # @.str.274
.L.str.274:
	.asciz	" m/s"
	.size	.L.str.274, 5

	.type	.L.str.275,@object              # @.str.275
.L.str.275:
	.asciz	"Translational temperature slip"
	.size	.L.str.275, 31

	.type	.L.str.276,@object              # @.str.276
.L.str.276:
	.asciz	" K"
	.size	.L.str.276, 3

	.type	.L.str.277,@object              # @.str.277
.L.str.277:
	.asciz	"Rotational temperature slip "
	.size	.L.str.277, 29

	.type	.L.str.278,@object              # @.str.278
.L.str.278:
	.asciz	" percentage "
	.size	.L.str.278, 13

	.type	.L.str.279,@object              # @.str.279
.L.str.279:
	.asciz	"GAINS FROM REACTIONS"
	.size	.L.str.279, 21

	.type	.L.str.280,@object              # @.str.280
.L.str.280:
	.asciz	"                          Dissoc.     Recomb. Endo. Exch.  Exo. Exch."
	.size	.L.str.280, 70

	.type	.L.str.281,@object              # @.str.281
.L.str.281:
	.asciz	"                          SPECIES "
	.size	.L.str.281, 35

	.type	.L.str.282,@object              # @.str.282
.L.str.282:
	.asciz	"LOSSES FROM REACTIONS"
	.size	.L.str.282, 22

	.type	.L.str.283,@object              # @.str.283
.L.str.283:
	.asciz	"TOTALS"
	.size	.L.str.283, 7

	.type	.L.str.284,@object              # @.str.284
.L.str.284:
	.asciz	"                        SPECIES "
	.size	.L.str.284, 33

	.type	.L.str.285,@object              # @.str.285
.L.str.285:
	.asciz	" GAINS "
	.size	.L.str.285, 8

	.type	.L.str.286,@object              # @.str.286
.L.str.286:
	.asciz	" LOSSES "
	.size	.L.str.286, 9

	.type	.L.str.287,@object              # @.str.287
.L.str.287:
	.asciz	"Flowfield properties "
	.size	.L.str.287, 22

	.type	.L.str.288,@object              # @.str.288
.L.str.288:
	.asciz	" Samples"
	.size	.L.str.288, 9

	.type	.L.str.289,@object              # @.str.289
.L.str.289:
	.asciz	"Overall gas"
	.size	.L.str.289, 12

	.type	.L.str.290,@object              # @.str.290
.L.str.290:
	.asciz	"Cell x coord.      Sample       Number Dens. Density      u velocity   v velocity   w velocity   Trans. Temp. Rot. Temp.   Vib. Temp.    El. Temp.  Temperature  Mach no.     Mols/cell    m.c.t        m.f.p        mcs/mfp        speed      Pressure      TTX         TTY         TTZ   Species Fractions "
	.size	.L.str.290, 302

	.type	.L.str.291,@object              # @.str.291
.L.str.291:
	.asciz	"Individual molecular species"
	.size	.L.str.291, 29

	.type	.L.str.292,@object              # @.str.292
.L.str.292:
	.asciz	"Cell x coord.      Sample       Percentage   Species TTx   Species TTy  Species TTz  Trans. Temp.  Rot. Temp.  Vib. Temp.   Spec. Temp  u Diff. Vel. v Diff. Vel. w. Diff. Vel. Elec. Temp."
	.size	.L.str.292, 188

	.type	.L.str.293,@object              # @.str.293
.L.str.293:
	.asciz	"RELAX.DAT"
	.size	.L.str.293, 10

	.type	.L.str.294,@object              # @.str.294
.L.str.294:
	.asciz	"RELAX.DAT is opened"
	.size	.L.str.294, 20

	.type	.L.str.295,@object              # @.str.295
.L.str.295:
	.asciz	"RELAX.DAT not opened"
	.size	.L.str.295, 21

	.type	.L.str.296,@object              # @.str.296
.L.str.296:
	.asciz	"COMPOSITION.DAT"
	.size	.L.str.296, 16

	.type	.L.str.297,@object              # @.str.297
.L.str.297:
	.asciz	"COMPOSITION.DAT is opened"
	.size	.L.str.297, 26

	.type	.L.str.298,@object              # @.str.298
.L.str.298:
	.asciz	"COMPOSITION.DAT not opened"
	.size	.L.str.298, 27

	.type	.L.str.299,@object              # @.str.299
.L.str.299:
	.asciz	"Output files written "
	.size	.L.str.299, 22

	.type	.L.str.300,@object              # @.str.300
.L.str.300:
	.asciz	"DTM changes  from "
	.size	.L.str.300, 19

	.type	.L.str.301,@object              # @.str.301
.L.str.301:
	.asciz	"DS1xt.DAT"
	.size	.L.str.301, 10

	.type	.L.str.302,@object              # @.str.302
.L.str.302:
	.asciz	"DS1xt.DAT is opened"
	.size	.L.str.302, 20

	.type	.L.str.303,@object              # @.str.303
.L.str.303:
	.asciz	"DS1xt.DAT not opened"
	.size	.L.str.303, 21

	.type	.L.str.304,@object              # @.str.304
.L.str.304:
	.asciz	"PROFILE.DAT"
	.size	.L.str.304, 12

	.type	.L.str.305,@object              # @.str.305
.L.str.305:
	.asciz	"PROFILE.DAT is opened"
	.size	.L.str.305, 22

	.type	.L.str.306,@object              # @.str.306
.L.str.306:
	.asciz	"PROFILE.DAT not opened"
	.size	.L.str.306, 23

	.type	.L.str.307,@object              # @.str.307
.L.str.307:
	.asciz	"Duplicate collision"
	.size	.L.str.307, 20

	.type	.L.str.308,@object              # @.str.308
.L.str.308:
	.asciz	"THREE BODY PROBABILITY"
	.size	.L.str.308, 23

	.type	.L.str.309,@object              # @.str.309
.L.str.309:
	.asciz	"-VE ECT "
	.size	.L.str.309, 9

	.type	.L.str.310,@object              # @.str.310
.L.str.310:
	.asciz	"REACTION "
	.size	.L.str.310, 10

	.type	.L.str.311,@object              # @.str.311
.L.str.311:
	.asciz	" BETWEEN "
	.size	.L.str.311, 10

	.type	.L.str.312,@object              # @.str.312
.L.str.312:
	.asciz	"printf: "
	.size	.L.str.312, 9

	.type	.L.str.313,@object              # @.str.313
.L.str.313:
	.asciz	"bad_alloc caught: "
	.size	.L.str.313, 19

	.type	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits,@object # @__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits
	.section	.rodata.str1.16,"aMS",@progbits,1
	.p2align	4, 0x0
.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits:
	.asciz	"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"
	.size	.L__const._ZNSt8__detail18__to_chars_10_implIjEEvPcjT_.__digits, 201

	.section	.init_array,"aw",@init_array
	.p2align	3, 0x0
	.quad	_GLOBAL__sub_I_gpu_main.hip
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __gxx_personality_v0
	.addrsig_sym _GLOBAL__sub_I_gpu_main.hip
	.addrsig_sym _Unwind_Resume
	.addrsig_sym file_9
	.addrsig_sym __dso_handle
	.addrsig_sym file_18
	.addrsig_sym calc
	.addrsig_sym gas
	.addrsig_sym molecs
	.addrsig_sym geom
	.addrsig_sym output
	.addrsig_sym _ZSt4cout
	.addrsig_sym _ZSt3cin
	.addrsig_sym _ZTISt9bad_alloc
	.addrsig_sym _ZSt4cerr
	.addrsig_sym __hip_cuid_

	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.amdgpu_metadata
---
amdhsa.kernels:  []
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
