#include <stdio.h>
#include <iostream>
#include <limits>

#include <curand.h>
#include<cmath>

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <curand_kernel.h>

typedef std::numeric_limits< double > dbl;

// simulation parameters
const double dt = 0.1;
const int N = 100000;
const int T_max = 100000*(1/dt);
const double energy_error_check = 0.05; 

// basic constants
const double kB = 1.38065e-23;
const double g = 9.805e-6;
const double pi = 3.14159;

// Fiber and Field Parameters 
const double r_casimir_cutoff = 0.1;

//******************************************************//
//******************************************************//
// // T. Yoon et al. PRA, 2019
// // T. Yoon et al. J. Phys, 2020
// // const char atom_species = 'Cs';

// Big Fiber 
// const double r_hcpcf = 15;
// const double alpha = 9.4657e-18;
// const double m = 2.2069e-25;

// const double P = 1e-7;
// const double w0 = 11.8;
// const double wvlngth = 0.935; 
// const double zR = 467.8453059741634;

// const double Temp = 30e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 1500;

// const double slope = 2000./5000.; 
// const double r_check = 400; 


// // Small Fiber
// const double r_hcpcf = 3.75 - r_casimir_cutoff;
// const double alpha = 9.4657e-18; 
// const double m = 2.2069e-25;

// // scattering rate constants 
// const double beta = 25449.809972971874; 
// const double spont_v_factor = 0.003360217090858776; 
// const double abs_v_factor = 0.0032150016610518837; 

// // field realted constants 
// const double P = 0.5e-7;
// const double w0 = 2.75;
// const double wvlngth = 0.935; 
// const double zR = 25.40994058050568;

// const double Temp = 32e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 1500;

// const double slope = 1000./5000.; 
// const double r_check = 250;


//******************************************************//
//******************************************************//

// // M. Bajcsy et al. PRA, 2011
// // const char atom_species = 'Rb';

// const double r_hcpcf = 3.5 - r_casimir_cutoff;
// const double m = 1.44316060e-25;
// const double alpha = 3.038831243e-17;

// scattering rate constants 
// const double beta = 382499.3875547423; 
// const double spont_v_factor = 0.00578236135589983; 
// const double abs_v_factor = 0.005731739384291537; 

// const double P = 0.25e-7;
// const double w0 = 2;
// const double wvlngth = 0.802;
// const double zR = 15.668791289724654;

// const double Temp = 40e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 6300;
// const double R = 340;

// const double slope = 1000./5000.; 
// const double r_check = 250; 

//******************************************************//
//******************************************************//
// // A. P Hilton et al. PRApplied, 2018
// // const char atom_species = 'Rb - 85';

const double r_hcpcf = 22.5 - r_casimir_cutoff;
const double m = 1.409993199e-25;
const double alpha = 7.190132913713667e-17;

// scattering rate constants 
const double beta = 3015911.2228300544; 
const double spont_v_factor = 0.005918379158044901; 
const double abs_v_factor = 0.005901520518109168; 

const double P = 10e-7;
const double w0 = 16.5;
const double wvlngth = 0.79725;
const double zR = 1072.8110378674457;

const double Temp = 5e-6;
const double cx = 0;
const double cy = 0;
const double cz = 25000;
const double R = 1000;  // Gaussian MOT

const double slope = 2000./25000.; 
const double r_check = 500; 

//******************************************************//
//******************************************************//
// // Yang et al. Fibers, 2020
// // const char atom_species = 'Rb - 85';

// const double r_hcpcf = 32 - r_casimir_cutoff;
// const double m = 1.409993199e-25;
// const double alpha = 1.1732431139058278e-17;

// scattering rate constants 
// const double beta = 48021.0283738874; 
// const double spont_v_factor = 0.005918379158044901; 
// const double abs_v_factor = 0.005730800527481771; 

// const double P = 5e-7;
// const double w0 = 22;
// const double wvlngth = 0.821;
// const double zR = 1852.0473134439221;

// const double Temp = 10e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 2000; // Gaussian MOT

// const double slope = 2000./5000.; 
// const double r_check = 500; 

//******************************************************//
//******************************************************//

struct Particles
{
    double p[3];
    double v[3];
    double a[3];
    double t; 
    double energy_initial; 
    double energy_current; 
    double energy_kick_tab;
    int statusi;                                   //  0 -- running 
                                                   //  1 -- z < 0 -- loaded 
                                                   //  2 -- z < 0 -- not loaded
                                                   //  3 -- out of bounds 
    double N_scattering;


};


// force field function 
__device__ void a_dipole(double x, double y, double z, double &ax, double &ay, double &az, int &statusi, double& OPE)
{   
    double w = 0;
    double gaussian = 0;
    double intensity = 0;

    double ax_dipole = 0;
    double ay_dipole = 0;
    double az_dipole = 0;
    
    double r = sqrt(pow(x,2) + pow(y,2));
    double I0 = (2*P)/(pi*pow(w0,2));

    // out of bounds check
    if (r > (r_check + slope*z)){
        statusi = 3;
    } 
    
    // a_dipole acceleration update
    if (z > 0) {
        w = w0*sqrt(1 + pow((z/zR),2));
        gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        intensity = I0*pow((w0/w),2)*gaussian;
        ax_dipole = -4*x*alpha*intensity/(m*pow(w,2));
        ay_dipole = -4*y*alpha*intensity/(m*pow(w,2));
        az_dipole = alpha*intensity*(4*(z/(pow(zR,2)))*pow((w0/w),4)*((pow(x,2) + pow(y,2))/pow(w0,2)) - (2*z/(pow(zR,2)))*pow((w0/w),2))/m;

    }

    else {

        w = w0;
        gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        intensity = I0*pow((w0/w),2)*gaussian;
        ax_dipole = -4*x*alpha*intensity/(m*pow(w,2));
        ay_dipole = -4*y*alpha*intensity/(m*pow(w,2));
        az_dipole = 0;

        // inside hcpcf
        if (r < r_hcpcf){

            // stop condition, loaded
            if (z < -100){
                statusi = 1;
            }

        }

        // collided, not loaded
        else if (r > r_hcpcf){

            statusi = 2;

        }

    }

    ax = ax_dipole;
    ay = ay_dipole;
    az = az_dipole - g;
    OPE = -alpha*intensity; 


}


// velocity-verlet updater
__global__ void verlet_integrator(struct Particles atoms[])
{
   
    double KE = 0;
    double GPE = 0;
    double OPE = 0;
    double KE_kick = 0; 

    double intensity = 0;
    double p_scattering = 0;

    int index = blockIdx.x * blockDim.x + threadIdx.x;
    int stride = blockDim.x * gridDim.x;


    for (int particle_id = index; particle_id < N; particle_id += stride){

        for (int T = 1; atoms[particle_id].statusi == 0 && T < T_max; T += 1){ // atoms[particle_id].p[2]>0;  T < 50000
        
            atoms[particle_id].v[0] = atoms[particle_id].v[0] + 0.5*atoms[particle_id].a[0]*dt;
            atoms[particle_id].v[1] = atoms[particle_id].v[1] + 0.5*atoms[particle_id].a[1]*dt;
            atoms[particle_id].v[2] = atoms[particle_id].v[2] + 0.5*atoms[particle_id].a[2]*dt;

            atoms[particle_id].p[0] = atoms[particle_id].p[0] + atoms[particle_id].v[0]*dt;
            atoms[particle_id].p[1] = atoms[particle_id].p[1] + atoms[particle_id].v[1]*dt;
            atoms[particle_id].p[2] = atoms[particle_id].p[2] + atoms[particle_id].v[2]*dt;

            a_dipole(atoms[particle_id].p[0], atoms[particle_id].p[1], atoms[particle_id].p[2], atoms[particle_id].a[0], atoms[particle_id].a[1], atoms[particle_id].a[2], atoms[particle_id].statusi, OPE);

            atoms[particle_id].v[0] = atoms[particle_id].v[0] + 0.5*atoms[particle_id].a[0]*dt;
            atoms[particle_id].v[1] = atoms[particle_id].v[1] + 0.5*atoms[particle_id].a[1]*dt;
            atoms[particle_id].v[2] = atoms[particle_id].v[2] + 0.5*atoms[particle_id].a[2]*dt;

            KE = 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));

            // scattering kick: ad-hoc implementation
            curandState state_p;
            curand_init((unsigned long long)clock() + index, 0, 0, &state_p);
            p_scattering = curand_uniform_double(&state_p);
            intensity = OPE/(-1*alpha);
            
            if (p_scattering < beta*intensity*dt){

                atoms[particle_id].N_scattering = atoms[particle_id].N_scattering + 1; 

                curandState state_phi;
                curandState state_theta;
                curand_init((unsigned long long)clock() + index, 0, 0, &state_phi);    
                curand_init((unsigned long long)clock() + index, 0, 0, &state_theta);
                double phi = 2*pi*curand_uniform_double(&state_phi);
                double theta = pi*curand_uniform_double(&state_theta);

                atoms[particle_id].v[0] = atoms[particle_id].v[0] + spont_v_factor*cos(phi)*sin(theta);
                atoms[particle_id].v[1] = atoms[particle_id].v[1] + spont_v_factor*sin(phi)*sin(theta);
                atoms[particle_id].v[2] = atoms[particle_id].v[2] + abs_v_factor + spont_v_factor*cos(theta);
                KE_kick = KE - 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));

            }

            // energy updater
            KE = 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));
            GPE = m*g*atoms[particle_id].p[2]; 
            atoms[particle_id].energy_current = (KE + GPE + OPE);
            atoms[particle_id].energy_kick_tab = atoms[particle_id].energy_kick_tab + (KE_kick);

            // timer
            atoms[particle_id].t = atoms[particle_id].t + dt; 
            KE_kick = 0;

        }
   
    }

}

void initialize_MB_cloud(struct Particles atoms[]){

    // initializing MB cloud functions
    double *phi, *costheta, *u, *therm; 
    double theta, r;
      
    phi = (double *) malloc(N*sizeof(double));
    costheta = (double *) malloc(N*sizeof(double));
    u = (double *) malloc(N*sizeof(double));
    therm = (double *) malloc(3*N*sizeof(double));
          
    // random number generation   
    double *d_phi, *d_costheta, *d_u, *d_therm;
    cudaMalloc(&d_phi, N*sizeof(double));
    cudaMalloc(&d_costheta, N*sizeof(double));
    cudaMalloc(&d_u, N*sizeof(double));
    cudaMalloc(&d_therm, 3*N*sizeof(double));

    // unsigned int seeder, seeder1, seeder2, seeder3;
    // seeder = 1234ULL;
    // seeder1 = 1234ULL;
    // seeder2 = 1234ULL;
    // seeder3 = 1234ULL;

    time_t seeder;
    time(&seeder);
    srand((unsigned int) seeder);
   
    // generates N random numbers between 0 and 1
    curandGenerator_t gen;
    curandCreateGenerator(&gen, CURAND_RNG_PSEUDO_XORWOW);
    curandSetPseudoRandomGeneratorSeed(gen, seeder);
    curandGenerateUniformDouble(gen, d_phi, N);
    cudaMemcpy(phi, d_phi, N*sizeof(double), cudaMemcpyDeviceToHost);
    curandDestroyGenerator(gen);
    cudaFree(d_phi);
    
    time_t seeder1;
    time(&seeder1);
    srand((unsigned int) seeder1);
    
    curandGenerator_t gen1;
    curandCreateGenerator(&gen1, CURAND_RNG_PSEUDO_MTGP32);
    curandSetPseudoRandomGeneratorSeed(gen1, seeder1);
    curandGenerateUniformDouble(gen1, d_costheta, N);
    cudaMemcpy(costheta, d_costheta, N*sizeof(double), cudaMemcpyDeviceToHost);
    curandDestroyGenerator(gen1);
    cudaFree(d_costheta);

   
    time_t seeder2;
    time(&seeder2);
    srand((unsigned int) seeder2);
      
    curandGenerator_t gen2;
    curandCreateGenerator(&gen2, CURAND_RNG_PSEUDO_MRG32K3A);
    curandSetPseudoRandomGeneratorSeed(gen2, seeder2);
    curandGenerateUniformDouble(gen2, d_u, N);
    cudaMemcpy(u, d_u, N*sizeof(double), cudaMemcpyDeviceToHost);
    curandDestroyGenerator(gen2);
    cudaFree(d_u);
   
    time_t seeder3;
    time(&seeder3);
    srand((unsigned int) seeder3);
      
    // normal distribution to sample thermal velocities 
    curandGenerator_t gen3;
    curandCreateGenerator(&gen3, CURAND_RNG_PSEUDO_DEFAULT);
    curandSetPseudoRandomGeneratorSeed(gen3, seeder3);
    curandGenerateNormalDouble(gen3, d_therm, 3*N, 0, 1);
    cudaMemcpy(therm, d_therm, 3*N*sizeof(double), cudaMemcpyDeviceToHost);
    curandDestroyGenerator(gen3);
    cudaFree(d_therm);

    // initializing (p, v, a, t, status) array values for atoms
    for (int i = 0; i < N; i++){

        phi[i] = phi[i]*2*pi;
        costheta[i] = costheta[i]*2 - 1;

        theta = acos(costheta[i]);
        r = R*cbrt(u[i]);

        atoms[i].p[0] = cx + r*sin(theta)*cos(phi[i]);
        atoms[i].p[1] = cy + r*sin(theta)*sin(phi[i]);
        atoms[i].p[2] = cz + r*cos(theta);

        atoms[i].v[0] = sqrt(kB*Temp/m)*therm[i];
        atoms[i].v[1] = sqrt(kB*Temp/m)*therm[i + N - 1];
        atoms[i].v[2] = sqrt(kB*Temp/m)*therm[i + 2*N - 1];

        atoms[i].a[0] = 0;
        atoms[i].a[1] = 0;
        atoms[i].a[2] = -g;

        atoms[i].N_scattering = 0; 

        double KE = 0.5*m*(pow(atoms[i].v[0],2) + pow(atoms[i].v[1],2) + pow(atoms[i].v[2],2));
        double GE = m*g*atoms[i].p[2];

        double x = atoms[i].p[0];
        double y = atoms[i].p[1];
        double z = atoms[i].p[2];

        // calculating dipole field and potneial 

        double I0 = (2*P)/(pi*pow(w0,2));

        double w = w0*sqrt(1 + pow((z/zR),2));
        double gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        double intensity = I0*pow((w0/w),2)*gaussian;
        double OPE = -alpha*intensity;

        atoms[i].energy_current = (KE + GE + OPE);
        atoms[i].energy_initial = atoms[i].energy_current;
        double r = sqrt(pow(atoms[i].p[0], 2) + pow(atoms[i].p[1], 2)); // has to be sqrt
    
        if (r > (r_check + slope*atoms[i].p[2])){
            atoms[i].statusi = 3;
        } 

    }

}




int main(void){

    // AoS allocating memory
    struct Particles *Atoms = (struct Particles*)malloc(N*sizeof(struct Particles));

    // initializing atoms
    initialize_MB_cloud(Atoms);

    //************************************************//
    printf("----------------------------\n");
    printf("Before Evolution:\n");
    printf("px = %lf\n", Atoms[0].p[0]);
    printf("py = %lf\n", Atoms[0].p[1]);
    printf("pz = %lf\n", Atoms[0].p[2]);
           
    printf("vx = %lf\n", Atoms[0].v[0]);
    printf("vy = %lf\n", Atoms[0].v[1]);
    printf("vz = %lf\n", Atoms[0].v[2]);

    
    std::cout.precision(dbl::digits10);
    std::cout << "az (precision) " << Atoms[0].a[2] << std::endl;
    printf("----------------------------\n");
    //************************************************//

    printf("Memory Allocation Begin\n");

    // device: 1D arrays for position, velocity and acceleration
    Particles *dev_Atoms;

    // device: allocation of  memory 
    cudaMalloc(&dev_Atoms, N*sizeof(Particles)); 

    // device: copying initial values 
    cudaMemcpy(dev_Atoms, Atoms, N*sizeof(Particles), cudaMemcpyHostToDevice);
       

    printf("Memory Allocation End \n");

    // kernel initialization
    // code reference:  https://stackoverflow.com/questions/9985912/how-do-i-choose-grid-and-block-dimensions-for-cuda-kernels

    int blockSize;      // The launch configurator returned block size 
    int minGridSize;    // The minimum grid size needed to achieve the maximum occupancy for a full device launch 
    int gridSize;       // The actual grid size needed, based on input size 

    cudaOccupancyMaxPotentialBlockSize(&minGridSize, &blockSize, verlet_integrator, 0, N); 

    // Round up according to array size 
    gridSize = (N + blockSize - 1) / blockSize; 

    printf("Grid Size (GPU, AoS) = %d\n", gridSize); 
    printf("Block Size (GPU, AoS) = %d\n", blockSize); 


    cudaEvent_t cuda_start, cuda_stop;
    cudaEventCreate(&cuda_start);
    cudaEventCreate(&cuda_stop);


    // testing timing of one verlet update of N particles
    cudaEventRecord(cuda_start);
    verlet_integrator<<<gridSize, blockSize>>>(dev_Atoms);
    cudaEventRecord(cuda_stop);
    
    cudaEventSynchronize(cuda_stop);
    float cuda_diffs = 0;
    cudaEventElapsedTime(&cuda_diffs, cuda_start, cuda_stop);
    cuda_diffs = cuda_diffs/1000.0;
    printf("GPU Time for Verlet integration (GPU, AoS) = %lf\n", cuda_diffs);

    
    // device: copying initial values 
    cudaMemcpy(Atoms, dev_Atoms, N*sizeof(Particles), cudaMemcpyDeviceToHost);

    //************************************************//
    printf("----------------------------\n");
    printf("After Evolution:\n");
    printf("px = %lf\n", Atoms[0].p[0]);
    printf("py = %lf\n", Atoms[0].p[1]);
    printf("pz = %lf\n", Atoms[0].p[2]);
       
    printf("vx = %lf\n", Atoms[0].v[0]);
    printf("vy = %lf\n", Atoms[0].v[1]);
    printf("vz = %lf\n", Atoms[0].v[2]);
 
    std::cout.precision(dbl::digits10);
    std::cout << "az (precision) " << Atoms[0].a[2] << std::endl;
    printf("----------------------------\n");
    //************************************************//
    
    int completed = 0; 
    int trapped = 0;
    int escaped = 0; 
    int running = 0;

    int unstable_integration_counter = 0; 

    double *fractional_energy_change;
    fractional_energy_change = (double *) malloc(N*sizeof(double));

    int fractional_energy_change_trapped = 0; 

    double N_scattering_average_total = 0;
    double N_scattering_average_loaded = 0;

    double loading_efficiency; 
    for (int i = 0; i < N; i++){
        if (Atoms[i].statusi == 1 || Atoms[i].statusi == 2) {
            completed ++; 
        }

        if (Atoms[i].statusi == 1){
            trapped++;
            fractional_energy_change[i] = abs(Atoms[i].energy_current  + Atoms[i].energy_kick_tab - Atoms[i].energy_initial)/(Atoms[i].energy_initial);
            if (fractional_energy_change[i] > energy_error_check){
                fractional_energy_change_trapped++;
            }
            N_scattering_average_loaded = N_scattering_average_loaded + Atoms[i].N_scattering;
        }
        
        if (Atoms[i].statusi == 3){
            escaped++;
        }

        if (Atoms[i].statusi == 0){
            running++;
        }


        fractional_energy_change[i] = abs(Atoms[i].energy_current + Atoms[i].energy_kick_tab - Atoms[i].energy_initial)/(Atoms[i].energy_initial);
        if (fractional_energy_change[i] > energy_error_check){
            unstable_integration_counter++;
            // std::cout << "Energy instability (> 0.05): " << Atoms_GPU[i].p[0] << ", " << Atoms_GPU[i].p[1] << ", " << Atoms_GPU[i].p[2] << ", " << Atoms_GPU[i].statusi << std::endl;

        }
     

        N_scattering_average_total = N_scattering_average_total + Atoms[i].N_scattering;

    }
    
    N_scattering_average_total = N_scattering_average_total/N; 
    N_scattering_average_loaded = N_scattering_average_loaded/trapped;

    loading_efficiency = (double)trapped/N;

    printf("Total Number of Atoms = %d\n", N);
    printf("Accounted Number of Atoms = %d\n", completed + escaped + running);
    printf("Completed Atom Runs = %d\n", completed);
    printf("Number of Escaped Atoms = %d\n", escaped);
    printf("Number of Trapped Atoms = %d\n", trapped);
    printf("Number of Running Atoms = %d\n", running);
    printf("Loading Efficiency (1e-4) = %lf\n", loading_efficiency*1e4);


    double fractional_energy_change_min = fractional_energy_change[0];                
    for (int j = 0; j < N; j++){
        if (fractional_energy_change[j] < fractional_energy_change_min){
            fractional_energy_change_min = fractional_energy_change[j];
            if (fractional_energy_change_min == 0){
                std::cout << Atoms[j].p[0] << ", " << Atoms[j].p[1] << ", " << Atoms[j].p[2] << ", " << Atoms[j].statusi << std::endl;
            }
        }
    }


    double fractional_energy_change_max = fractional_energy_change[0];                
    for (int j = 0; j < N; j++){
        if (fractional_energy_change[j] > fractional_energy_change_max){
            fractional_energy_change_max = fractional_energy_change[j];
        }
    }

    printf("Total number of fractional errors in energy : %d\n", unstable_integration_counter);
    printf("Number of fractional errors that are loaded: %d\n", fractional_energy_change_trapped);
    printf("----------------------------\n");
    printf("Fractional energy change max: %lf\n", fractional_energy_change_max);
    printf("Fractional energy change min: %lf\n", fractional_energy_change_min);
    std::cout << "Fractional energy change min (precision) " << fractional_energy_change_min << std::endl;
    printf("----------------------------\n");

    printf("----------------------------\n");
    printf("Fractional energy change max: %lf\n", fractional_energy_change_max);
    printf("----------------------------\n");

    printf("Average No. of Scattering Events for Loaded Atoms = %lf\n", N_scattering_average_loaded);

    //************************************************/
    // clearing memory    
    cudaFree(dev_Atoms);
    free(Atoms);

    cudaError_t cudaResult;
    cudaResult = cudaGetLastError();
    if (cudaResult != cudaSuccess) {
        printf("In what house, shall thy find solace? ");

    }

}

	.file	"tmpxft_0038960a_00000000-6_verlet_integrator_AoS_double_scattering.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB3855:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE3855:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.globl	_Z8a_dipoledddRdS_S_RiS_
	.type	_Z8a_dipoledddRdS_S_RiS_, @function
_Z8a_dipoledddRdS_S_RiS_:
.LFB3849:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	popq	%rax
	.cfi_def_cfa_offset 8
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	$1, 12(%rsp)
	movl	12(%rsp), %edi
	call	exit@PLT
	.cfi_endproc
.LFE3849:
	.size	_Z8a_dipoledddRdS_S_RiS_, .-_Z8a_dipoledddRdS_S_RiS_
	.globl	_Z19initialize_MB_cloudP9Particles
	.type	_Z19initialize_MB_cloudP9Particles, @function
_Z19initialize_MB_cloudP9Particles:
.LFB3850:
	.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
	movq	%rdi, %rbx
	movl	$800000, %edi
	subq	$200, %rsp
	.cfi_def_cfa_offset 256
	movq	%fs:40, %rax
	movq	%rax, 184(%rsp)
	xorl	%eax, %eax
	call	malloc@PLT
	movl	$800000, %edi
	movq	%rax, %r12
	call	malloc@PLT
	movl	$800000, %edi
	movq	%rax, %r13
	call	malloc@PLT
	movl	$2400000, %edi
	movq	%rax, %r14
	call	malloc@PLT
	leaq	88(%rsp), %rdi
	movl	$800000, %esi
	movq	%rax, %rbp
	call	cudaMalloc@PLT
	leaq	96(%rsp), %rdi
	movl	$800000, %esi
	call	cudaMalloc@PLT
	leaq	104(%rsp), %rdi
	movl	$800000, %esi
	call	cudaMalloc@PLT
	movl	$2400000, %esi
	leaq	112(%rsp), %rdi
	call	cudaMalloc@PLT
	leaq	120(%rsp), %rdi
	call	time@PLT
	movl	120(%rsp), %edi
	call	srand@PLT
	leaq	128(%rsp), %rdi
	movl	$101, %esi
	call	curandCreateGenerator@PLT
	movq	120(%rsp), %rsi
	movq	128(%rsp), %rdi
	call	curandSetPseudoRandomGeneratorSeed@PLT
	movq	88(%rsp), %rsi
	movl	$100000, %edx
	movq	128(%rsp), %rdi
	call	curandGenerateUniformDouble@PLT
	movq	88(%rsp), %rsi
	movl	$2, %ecx
	movq	%r12, %rdi
	movl	$800000, %edx
	call	cudaMemcpy@PLT
	movq	128(%rsp), %rdi
	call	curandDestroyGenerator@PLT
	movq	88(%rsp), %rdi
	call	cudaFree@PLT
	leaq	136(%rsp), %rdi
	call	time@PLT
	movl	136(%rsp), %edi
	call	srand@PLT
	leaq	144(%rsp), %rdi
	movl	$141, %esi
	call	curandCreateGenerator@PLT
	movq	136(%rsp), %rsi
	movq	144(%rsp), %rdi
	call	curandSetPseudoRandomGeneratorSeed@PLT
	movq	96(%rsp), %rsi
	movl	$100000, %edx
	movq	144(%rsp), %rdi
	call	curandGenerateUniformDouble@PLT
	movq	96(%rsp), %rsi
	movl	$2, %ecx
	movq	%r13, %rdi
	movl	$800000, %edx
	call	cudaMemcpy@PLT
	movq	144(%rsp), %rdi
	call	curandDestroyGenerator@PLT
	movq	96(%rsp), %rdi
	call	cudaFree@PLT
	leaq	152(%rsp), %rdi
	call	time@PLT
	movl	152(%rsp), %edi
	call	srand@PLT
	leaq	160(%rsp), %rdi
	movl	$121, %esi
	call	curandCreateGenerator@PLT
	movq	152(%rsp), %rsi
	movq	160(%rsp), %rdi
	call	curandSetPseudoRandomGeneratorSeed@PLT
	movq	104(%rsp), %rsi
	movl	$100000, %edx
	movq	160(%rsp), %rdi
	call	curandGenerateUniformDouble@PLT
	movq	104(%rsp), %rsi
	movl	$2, %ecx
	movq	%r14, %rdi
	movl	$800000, %edx
	call	cudaMemcpy@PLT
	movq	160(%rsp), %rdi
	call	curandDestroyGenerator@PLT
	movq	104(%rsp), %rdi
	xorl	%r15d, %r15d
	call	cudaFree@PLT
	leaq	168(%rsp), %rdi
	call	time@PLT
	movl	168(%rsp), %edi
	call	srand@PLT
	leaq	176(%rsp), %rdi
	movl	$100, %esi
	call	curandCreateGenerator@PLT
	movq	168(%rsp), %rsi
	movq	176(%rsp), %rdi
	call	curandSetPseudoRandomGeneratorSeed@PLT
	movsd	.LC0(%rip), %xmm1
	movq	112(%rsp), %rsi
	xorps	%xmm0, %xmm0
	movq	176(%rsp), %rdi
	movl	$300000, %edx
	call	curandGenerateNormalDouble@PLT
	movq	112(%rsp), %rsi
	movl	$2, %ecx
	movq	%rbp, %rdi
	movl	$2400000, %edx
	call	cudaMemcpy@PLT
	movq	176(%rsp), %rdi
	call	curandDestroyGenerator@PLT
	movq	112(%rsp), %rdi
	call	cudaFree@PLT
.L7:
	movsd	(%r12,%r15), %xmm0
	leaq	72(%rsp), %rdi
	leaq	64(%rsp), %rsi
	movq	%rsi, 40(%rsp)
	addsd	%xmm0, %xmm0
	mulsd	.LC2(%rip), %xmm0
	movq	%rdi, 32(%rsp)
	movsd	%xmm0, 16(%rsp)
	call	sincos@PLT
	movsd	16(%rsp), %xmm0
	movsd	72(%rsp), %xmm7
	movsd	64(%rsp), %xmm2
	movsd	%xmm0, (%r12,%r15)
	movsd	0(%r13,%r15), %xmm0
	movsd	%xmm7, 8(%rsp)
	addsd	%xmm0, %xmm0
	subsd	.LC0(%rip), %xmm0
	movsd	%xmm2, 24(%rsp)
	movsd	%xmm0, 0(%r13,%r15)
	call	acos@PLT
	movq	40(%rsp), %rsi
	movq	32(%rsp), %rdi
	call	sincos@PLT
	movsd	64(%rsp), %xmm6
	movsd	(%r14,%r15), %xmm0
	movsd	%xmm6, 16(%rsp)
	call	cbrt@PLT
	mulsd	.LC3(%rip), %xmm0
	xorps	%xmm1, %xmm1
	movsd	72(%rsp), %xmm3
	movsd	24(%rsp), %xmm2
	movsd	8(%rsp), %xmm4
	movq	$0x000000000, 48(%rbx)
	movsd	16(%rsp), %xmm5
	movsd	0(%rbp,%r15), %xmm6
	movq	$0x000000000, 56(%rbx)
	movq	.LC6(%rip), %rax
	movq	$0x000000000, 112(%rbx)
	mulsd	%xmm0, %xmm3
	movq	%rax, 64(%rbx)
	mulsd	%xmm0, %xmm5
	addsd	.LC4(%rip), %xmm5
	mulsd	%xmm3, %xmm2
	movaps	%xmm5, %xmm0
	movsd	%xmm5, 16(%rbx)
	divsd	.LC7(%rip), %xmm0
	mulsd	%xmm3, %xmm4
	movsd	.LC5(%rip), %xmm3
	movsd	%xmm5, 24(%rsp)
	mulsd	%xmm0, %xmm0
	mulsd	%xmm3, %xmm6
	addsd	.LC0(%rip), %xmm0
	addsd	%xmm1, %xmm2
	addsd	%xmm1, %xmm4
	movsd	799992(%rbp,%r15), %xmm1
	mulsd	%xmm3, %xmm1
	movsd	%xmm6, 24(%rbx)
	mulsd	1599992(%rbp,%r15), %xmm3
	movsd	%xmm2, (%rbx)
	movsd	%xmm4, 8(%rbx)
	movsd	%xmm6, 48(%rsp)
	movsd	%xmm2, 56(%rsp)
	movsd	%xmm1, 32(%rbx)
	movsd	%xmm3, 40(%rbx)
	movsd	%xmm1, 40(%rsp)
	movsd	%xmm3, 32(%rsp)
	movsd	%xmm4, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm4
	movsd	.LC8(%rip), %xmm7
	movsd	56(%rsp), %xmm2
	mulsd	%xmm0, %xmm7
	mulsd	%xmm2, %xmm2
	mulsd	%xmm4, %xmm4
	movsd	%xmm7, 8(%rsp)
	addsd	%xmm2, %xmm4
	movaps	%xmm7, %xmm2
	mulsd	%xmm7, %xmm2
	movaps	%xmm4, %xmm0
	movsd	%xmm4, 16(%rsp)
	addsd	%xmm4, %xmm0
	xorps	.LC9(%rip), %xmm0
	divsd	%xmm2, %xmm0
	call	exp@PLT
	movsd	8(%rsp), %xmm7
	movsd	.LC8(%rip), %xmm2
	movsd	40(%rsp), %xmm1
	movsd	48(%rsp), %xmm6
	divsd	%xmm7, %xmm2
	movsd	32(%rsp), %xmm3
	movsd	24(%rsp), %xmm5
	mulsd	%xmm6, %xmm6
	movsd	16(%rsp), %xmm4
	mulsd	%xmm1, %xmm1
	movsd	%xmm5, 8(%rsp)
	mulsd	%xmm3, %xmm3
	addsd	%xmm6, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	.LC10(%rip), %xmm1
	movaps	%xmm5, %xmm3
	mulsd	.LC11(%rip), %xmm3
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm2
	mulsd	.LC12(%rip), %xmm2
	mulsd	%xmm0, %xmm2
	movaps	%xmm4, %xmm0
	mulsd	.LC13(%rip), %xmm2
	addsd	%xmm2, %xmm1
	movsd	%xmm1, 88(%rbx)
	movsd	%xmm1, 80(%rbx)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm5
	mulsd	.LC14(%rip), %xmm5
	addsd	.LC15(%rip), %xmm5
	comisd	%xmm5, %xmm0
	jbe	.L5
	movl	$3, 104(%rbx)
.L5:
	addq	$8, %r15
	addq	$120, %rbx
	cmpq	$800000, %r15
	jne	.L7
	movq	184(%rsp), %rax
	subq	%fs:40, %rax
	je	.L8
	call	__stack_chk_fail@PLT
.L8:
	addq	$200, %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
.LFE3850:
	.size	_Z19initialize_MB_cloudP9Particles, .-_Z19initialize_MB_cloudP9Particles
	.globl	_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles
	.type	_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles, @function
_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles:
.LFB3877:
	.cfi_startproc
	endbr64
	subq	$104, %rsp
	.cfi_def_cfa_offset 112
	movq	%rdi, 8(%rsp)
	leaq	24(%rsp), %rcx
	leaq	16(%rsp), %rdx
	leaq	44(%rsp), %rsi
	leaq	32(%rsp), %rdi
	movq	%fs:40, %rax
	movq	%rax, 88(%rsp)
	xorl	%eax, %eax
	leaq	8(%rsp), %rax
	movl	$1, 40(%rsp)
	movq	%rax, 80(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 32(%rsp)
	movq	%rax, 44(%rsp)
	movl	$1, 52(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L13
	pushq	24(%rsp)
	.cfi_def_cfa_offset 120
	leaq	_Z17verlet_integratorP9Particles(%rip), %rdi
	pushq	24(%rsp)
	.cfi_def_cfa_offset 128
	movq	60(%rsp), %rcx
	movl	68(%rsp), %r8d
	movq	48(%rsp), %rsi
	movl	56(%rsp), %edx
	leaq	96(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 120
	popq	%rdx
	.cfi_def_cfa_offset 112
.L13:
	movq	88(%rsp), %rax
	subq	%fs:40, %rax
	je	.L15
	call	__stack_chk_fail@PLT
.L15:
	addq	$104, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3877:
	.size	_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles, .-_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles
	.globl	_Z17verlet_integratorP9Particles
	.type	_Z17verlet_integratorP9Particles, @function
_Z17verlet_integratorP9Particles:
.LFB3878:
	.cfi_startproc
	endbr64
	jmp	_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles
	.cfi_endproc
.LFE3878:
	.size	_Z17verlet_integratorP9Particles, .-_Z17verlet_integratorP9Particles
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC16:
	.string	"----------------------------\n"
.LC17:
	.string	"Before Evolution:\n"
.LC18:
	.string	"px = %lf\n"
.LC19:
	.string	"py = %lf\n"
.LC20:
	.string	"pz = %lf\n"
.LC21:
	.string	"vx = %lf\n"
.LC22:
	.string	"vy = %lf\n"
.LC23:
	.string	"vz = %lf\n"
.LC24:
	.string	"az (precision) "
.LC25:
	.string	"Memory Allocation Begin\n"
.LC26:
	.string	"Memory Allocation End \n"
.LC27:
	.string	"Grid Size (GPU, AoS) = %d\n"
.LC28:
	.string	"Block Size (GPU, AoS) = %d\n"
.LC31:
	.string	"GPU Time for Verlet integration (GPU, AoS) = %lf\n"
.LC32:
	.string	"After Evolution:\n"
.LC36:
	.string	"Total Number of Atoms = %d\n"
.LC37:
	.string	"Accounted Number of Atoms = %d\n"
.LC38:
	.string	"Completed Atom Runs = %d\n"
.LC39:
	.string	"Number of Escaped Atoms = %d\n"
.LC40:
	.string	"Number of Trapped Atoms = %d\n"
.LC41:
	.string	"Number of Running Atoms = %d\n"
.LC43:
	.string	"Loading Efficiency (1e-4) = %lf\n"
.LC44:
	.string	", "
.LC45:
	.string	"Total number of fractional errors in energy : %d\n"
.LC46:
	.string	"Number of fractional errors that are loaded: %d\n"
.LC47:
	.string	"Fractional energy change max: %lf\n"
.LC48:
	.string	"Fractional energy change min: %lf\n"
.LC49:
	.string	"Fractional energy change min (precision) "
.LC50:
	.string	"Average No. of Scattering Events for Loaded Atoms = %lf\n"
.LC51:
	.string	"In what house, shall thy find solace? "
	.section	.text.startup,"ax",@progbits
	.globl	main
	.type	main, @function
main:
.LFB3852:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$12000000, %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
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$248, %rsp
	.cfi_def_cfa_offset 304
	movq	%fs:40, %rax
	movq	%rax, 232(%rsp)
	xorl	%eax, %eax
	call	malloc@PLT
	movq	%rax, %rdi
	movq	%rax, %rbx
	call	_Z19initialize_MB_cloudP9Particles
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	.LC17(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movsd	(%rbx), %xmm0
	movl	$2, %edi
	movb	$1, %al
	leaq	.LC18(%rip), %rsi
	call	__printf_chk@PLT
	movsd	8(%rbx), %xmm0
	leaq	.LC19(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	16(%rbx), %xmm0
	leaq	.LC20(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	24(%rbx), %xmm0
	leaq	.LC21(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	32(%rbx), %xmm0
	leaq	.LC22(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	40(%rbx), %xmm0
	leaq	.LC23(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	leaq	.LC24(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	movq	$15, 16+_ZSt4cout(%rip)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	64(%rbx), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	.LC25(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	40(%rsp), %rdi
	movl	$12000000, %esi
	call	cudaMalloc@PLT
	movq	40(%rsp), %rdi
	movl	$1, %ecx
	movq	%rbx, %rsi
	movl	$12000000, %edx
	call	cudaMemcpy@PLT
	leaq	.LC26(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	32(%rsp), %rdi
	call	cudaGetDevice@PLT
	testl	%eax, %eax
	leaq	48(%rsp), %rax
	movq	%rax, (%rsp)
	leaq	56(%rsp), %rax
	movq	%rax, 8(%rsp)
	jne	.L20
	movl	32(%rsp), %edx
	leaq	36(%rsp), %rdi
	movl	$39, %esi
	call	cudaDeviceGetAttribute@PLT
	testl	%eax, %eax
	jne	.L20
	movl	32(%rsp), %edx
	movq	(%rsp), %rdi
	movl	$10, %esi
	call	cudaDeviceGetAttribute@PLT
	testl	%eax, %eax
	jne	.L20
	movl	32(%rsp), %edx
	movq	8(%rsp), %rdi
	movl	$1, %esi
	call	cudaDeviceGetAttribute@PLT
	testl	%eax, %eax
	jne	.L20
	movl	32(%rsp), %edx
	leaq	64(%rsp), %rdi
	movl	$16, %esi
	call	cudaDeviceGetAttribute@PLT
	testl	%eax, %eax
	jne	.L20
	leaq	88(%rsp), %rdi
	leaq	_Z17verlet_integratorP9Particles(%rip), %rsi
	call	cudaFuncGetAttributes@PLT
	testl	%eax, %eax
	jne	.L20
	movl	36(%rsp), %eax
	movl	112(%rsp), %r9d
	movl	48(%rsp), %r13d
	movl	%eax, 20(%rsp)
	movl	56(%rsp), %eax
	cmpl	%eax, %r9d
	cmovle	%r9d, %eax
	movl	%eax, %r14d
	movl	$100000, %eax
	cmpl	%eax, %r14d
	cmovg	%eax, %r14d
	xorl	%r15d, %r15d
	xorl	%r12d, %r12d
	leal	-1(%r13,%r14), %ebp
	movl	%ebp, %eax
	cltd
	idivl	%r13d
	subl	%edx, %ebp
.L22:
	testl	%ebp, %ebp
	jle	.L20
	cmpl	%ebp, %r14d
	movl	%ebp, %edx
	leaq	76(%rsp), %rdi
	cmovle	%r14d, %edx
	leaq	_Z17verlet_integratorP9Particles(%rip), %rsi
	xorl	%r8d, %r8d
	xorl	%ecx, %ecx
	movl	%edx, 24(%rsp)
	call	cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags@PLT
	testl	%eax, %eax
	jne	.L20
	movl	24(%rsp), %edx
	movl	76(%rsp), %eax
	imull	%edx, %eax
	cmpl	%r15d, %eax
	jle	.L23
	movl	%eax, %r15d
	movl	%edx, %r12d
.L23:
	cmpl	%r15d, 20(%rsp)
	je	.L20
	subl	%r13d, %ebp
	jmp	.L22
.L20:
	leal	99999(%r12), %eax
	leaq	.LC27(%rip), %rsi
	movl	$2, %edi
	cltd
	idivl	%r12d
	movl	%eax, %edx
	movl	%eax, %ebp
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movl	%r12d, %edx
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC28(%rip), %rsi
	call	__printf_chk@PLT
	movq	(%rsp), %rdi
	call	cudaEventCreate@PLT
	movq	8(%rsp), %rdi
	call	cudaEventCreate@PLT
	movq	48(%rsp), %rdi
	xorl	%esi, %esi
	call	cudaEventRecord@PLT
	movl	%r12d, 76(%rsp)
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movabsq	$4294967297, %rax
	movl	%ebp, 64(%rsp)
	movq	%rax, 80(%rsp)
	movl	84(%rsp), %ecx
	movq	%rax, 68(%rsp)
	movq	76(%rsp), %rdx
	movq	64(%rsp), %rdi
	movl	72(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L25
	movq	40(%rsp), %rdi
	call	_Z46__device_stub__Z17verlet_integratorP9ParticlesP9Particles
.L25:
	movq	56(%rsp), %rdi
	xorl	%esi, %esi
	xorl	%r15d, %r15d
	xorl	%r12d, %r12d
	xorl	%r13d, %r13d
	xorl	%ebp, %ebp
	call	cudaEventRecord@PLT
	movq	56(%rsp), %rdi
	call	cudaEventSynchronize@PLT
	movq	56(%rsp), %rdx
	movq	48(%rsp), %rsi
	leaq	76(%rsp), %rdi
	movl	$0x00000000, 76(%rsp)
	call	cudaEventElapsedTime@PLT
	leaq	.LC31(%rip), %rsi
	movl	$2, %edi
	movb	$1, %al
	movss	76(%rsp), %xmm0
	divss	.LC30(%rip), %xmm0
	movss	%xmm0, 76(%rsp)
	cvtss2sd	%xmm0, %xmm0
	call	__printf_chk@PLT
	movq	40(%rsp), %rsi
	movl	$2, %ecx
	movq	%rbx, %rdi
	movl	$12000000, %edx
	call	cudaMemcpy@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	.LC32(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movsd	(%rbx), %xmm0
	movl	$2, %edi
	movb	$1, %al
	leaq	.LC18(%rip), %rsi
	call	__printf_chk@PLT
	movsd	8(%rbx), %xmm0
	leaq	.LC19(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	16(%rbx), %xmm0
	leaq	.LC20(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	24(%rbx), %xmm0
	leaq	.LC21(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	32(%rbx), %xmm0
	leaq	.LC22(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	40(%rbx), %xmm0
	leaq	.LC23(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	leaq	.LC24(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	movq	$15, 16+_ZSt4cout(%rip)
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	64(%rbx), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movl	$800000, %edi
	call	malloc@PLT
	xorl	%ecx, %ecx
	xorl	%edx, %edx
	xorps	%xmm1, %xmm1
	movl	%ecx, 20(%rsp)
	movq	.LC33(%rip), %xmm4
	movq	%rax, %r14
	xorl	%r8d, %r8d
	movsd	.LC34(%rip), %xmm2
	leaq	80(%rbx), %rax
.L34:
	movsd	8(%rax), %xmm0
	addsd	16(%rax), %xmm0
	movsd	(%rax), %xmm3
	movl	24(%rax), %esi
	subsd	%xmm3, %xmm0
	leal	-1(%rsi), %edi
	andps	%xmm4, %xmm0
	divsd	%xmm3, %xmm0
	cmpl	$1, %edi
	ja	.L26
	decl	%esi
	jne	.L27
	incl	%r8d
	comisd	%xmm2, %xmm0
	jbe	.L28
	incl	%r15d
.L28:
	addsd	32(%rax), %xmm1
	jmp	.L27
.L26:
	cmpl	$3, %esi
	jne	.L30
	incl	%r13d
	jmp	.L31
.L30:
	cmpl	$1, %esi
	adcl	$0, %r12d
.L31:
	comisd	%xmm2, %xmm0
	movsd	%xmm0, (%r14,%rdx,8)
	jbe	.L32
	incl	20(%rsp)
.L32:
	incq	%rdx
	addq	$120, %rax
	cmpq	$100000, %rdx
	jne	.L34
	cvtsi2sdl	%r8d, %xmm0
	leaq	.LC36(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	movl	%r8d, 8(%rsp)
	divsd	%xmm0, %xmm1
	divsd	.LC35(%rip), %xmm0
	movsd	%xmm0, (%rsp)
	movsd	%xmm1, 24(%rsp)
	call	__printf_chk@PLT
	leal	0(%rbp,%r13), %edx
	leaq	.LC37(%rip), %rsi
	xorl	%eax, %eax
	addl	%r12d, %edx
	movl	$2, %edi
	call	__printf_chk@PLT
	movl	%ebp, %edx
	leaq	.LC38(%rip), %rsi
	xorl	%eax, %eax
	movl	$2, %edi
	xorl	%ebp, %ebp
	call	__printf_chk@PLT
	movl	%r13d, %edx
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC39(%rip), %rsi
	movq	%rbx, %r13
	call	__printf_chk@PLT
	movl	8(%rsp), %edx
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC40(%rip), %rsi
	call	__printf_chk@PLT
	movl	%r12d, %edx
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC41(%rip), %rsi
	leaq	.LC44(%rip), %r12
	call	__printf_chk@PLT
	movsd	(%rsp), %xmm0
	leaq	.LC43(%rip), %rsi
	movb	$1, %al
	mulsd	.LC42(%rip), %xmm0
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	(%r14), %xmm5
	movsd	%xmm5, (%rsp)
	movsd	%xmm5, 8(%rsp)
.L40:
	movsd	(%r14,%rbp,8), %xmm1
	movsd	8(%rsp), %xmm7
	comisd	%xmm1, %xmm7
	jbe	.L35
	xorps	%xmm0, %xmm0
	ucomisd	%xmm0, %xmm1
	jp	.L39
	je	.L37
.L39:
	movsd	%xmm1, 8(%rsp)
	jmp	.L35
.L37:
	movsd	0(%r13), %xmm0
	leaq	_ZSt4cout(%rip), %rdi
	movsd	%xmm1, 8(%rsp)
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r12, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	8(%r13), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r12, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	16(%r13), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%r12, %rsi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movl	104(%r13), %esi
	movq	%rax, %rdi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L39
.L35:
	incq	%rbp
	addq	$120, %r13
	cmpq	$100000, %rbp
	jne	.L40
	xorl	%eax, %eax
.L42:
	movsd	(%r14,%rax,8), %xmm0
	maxsd	(%rsp), %xmm0
	incq	%rax
	movsd	%xmm0, (%rsp)
	cmpq	$100000, %rax
	jne	.L42
	movl	20(%rsp), %edx
	leaq	.LC45(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC47(%rip), %r12
	call	__printf_chk@PLT
	movl	%r15d, %edx
	movl	$2, %edi
	xorl	%eax, %eax
	leaq	.LC46(%rip), %rsi
	call	__printf_chk@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movsd	(%rsp), %xmm0
	movq	%r12, %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movsd	8(%rsp), %xmm0
	leaq	.LC48(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	leaq	.LC49(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	8(%rsp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movsd	(%rsp), %xmm0
	movq	%r12, %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	leaq	.LC16(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movsd	24(%rsp), %xmm0
	leaq	.LC50(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	call	__printf_chk@PLT
	movq	40(%rsp), %rdi
	call	cudaFree@PLT
	movq	%rbx, %rdi
	call	free@PLT
	call	cudaGetLastError@PLT
	testl	%eax, %eax
	je	.L43
	leaq	.LC51(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
.L43:
	movq	232(%rsp), %rax
	subq	%fs:40, %rax
	je	.L44
	call	__stack_chk_fail@PLT
.L27:
	incl	%ebp
	jmp	.L31
.L44:
	addq	$248, %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
.LFE3852:
	.size	main, .-main
	.section	.rodata.str1.1
.LC52:
	.string	"_Z17verlet_integratorP9Particles"
.LC53:
	.string	"precalc_xorwow_matrix"
.LC54:
	.string	"precalc_xorwow_offset_matrix"
.LC55:
	.string	"mrg32k3aM1"
.LC56:
	.string	"mrg32k3aM2"
.LC57:
	.string	"mrg32k3aM1SubSeq"
.LC58:
	.string	"mrg32k3aM2SubSeq"
.LC59:
	.string	"mrg32k3aM1Seq"
.LC60:
	.string	"mrg32k3aM2Seq"
.LC61:
	.string	"__cr_lgamma_table"
	.section	.text.startup
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB3880:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC52(%rip), %rdx
	movq	%rax, %rdi
	movq	%rax, %rbx
	pushq	$0
	.cfi_def_cfa_offset 40
	movq	%rdx, %rcx
	leaq	_Z17verlet_integratorP9Particles(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 48
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC53(%rip), %rdx
	movl	$102400, %r9d
	leaq	_ZL21precalc_xorwow_matrix(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	call	__cudaRegisterVar@PLT
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rdx
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC54(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$102400, %r9d
	leaq	_ZL28precalc_xorwow_offset_matrix(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rcx
	.cfi_def_cfa_offset 24
	popq	%rsi
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC55(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2304, %r9d
	leaq	_ZL10mrg32k3aM1(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rdi
	.cfi_def_cfa_offset 24
	popq	%r8
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC56(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2304, %r9d
	leaq	_ZL10mrg32k3aM2(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%r9
	.cfi_def_cfa_offset 24
	popq	%r10
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC57(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2016, %r9d
	leaq	_ZL16mrg32k3aM1SubSeq(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%r11
	.cfi_def_cfa_offset 24
	popq	%rax
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC58(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2016, %r9d
	leaq	_ZL16mrg32k3aM2SubSeq(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rdx
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC59(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2304, %r9d
	leaq	_ZL13mrg32k3aM1Seq(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rcx
	.cfi_def_cfa_offset 24
	popq	%rsi
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC60(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2304, %r9d
	leaq	_ZL13mrg32k3aM2Seq(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rdi
	.cfi_def_cfa_offset 24
	popq	%r8
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$1
	.cfi_def_cfa_offset 32
	leaq	.LC61(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movl	$72, %r9d
	movq	%rdx, %rcx
	leaq	_ZL17__cr_lgamma_table(%rip), %rsi
	call	__cudaRegisterVar@PLT
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	popq	%r9
	.cfi_def_cfa_offset 24
	popq	%r10
	.cfi_def_cfa_offset 16
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE3880:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.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
	.local	_ZL17__cr_lgamma_table
	.comm	_ZL17__cr_lgamma_table,72,32
	.local	_ZL13mrg32k3aM2Seq
	.comm	_ZL13mrg32k3aM2Seq,2304,32
	.local	_ZL13mrg32k3aM1Seq
	.comm	_ZL13mrg32k3aM1Seq,2304,32
	.local	_ZL16mrg32k3aM2SubSeq
	.comm	_ZL16mrg32k3aM2SubSeq,2016,32
	.local	_ZL16mrg32k3aM1SubSeq
	.comm	_ZL16mrg32k3aM1SubSeq,2016,32
	.local	_ZL10mrg32k3aM2
	.comm	_ZL10mrg32k3aM2,2304,32
	.local	_ZL10mrg32k3aM1
	.comm	_ZL10mrg32k3aM1,2304,32
	.local	_ZL28precalc_xorwow_offset_matrix
	.comm	_ZL28precalc_xorwow_offset_matrix,102400,32
	.local	_ZL21precalc_xorwow_matrix
	.comm	_ZL21precalc_xorwow_matrix,102400,32
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1072693248
	.align 8
.LC2:
	.long	-266631570
	.long	1074340345
	.align 8
.LC3:
	.long	0
	.long	1083129856
	.align 8
.LC4:
	.long	0
	.long	1087924736
	.align 8
.LC5:
	.long	1386906694
	.long	1066838119
	.align 8
.LC6:
	.long	-262882235
	.long	-1092317180
	.align 8
.LC7:
	.long	-2135559683
	.long	1083228990
	.align 8
.LC8:
	.long	0
	.long	1076920320
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC9:
	.long	0
	.long	-2147483648
	.long	0
	.long	0
	.section	.rodata.cst8
	.align 8
.LC10:
	.long	-85796022
	.long	984994190
	.align 8
.LC11:
	.long	2089564201
	.long	968624727
	.align 8
.LC12:
	.long	1611761867
	.long	1042552351
	.align 8
.LC13:
	.long	-1257721166
	.long	-1131103903
	.align 8
.LC14:
	.long	1202590843
	.long	1068792545
	.align 8
.LC15:
	.long	0
	.long	1082081280
	.section	.rodata.cst4,"aM",@progbits,4
	.align 4
.LC30:
	.long	1148846080
	.section	.rodata.cst16
	.align 16
.LC33:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.section	.rodata.cst8
	.align 8
.LC34:
	.long	-1717986918
	.long	1068079513
	.align 8
.LC35:
	.long	0
	.long	1090021888
	.align 8
.LC42:
	.long	0
	.long	1086556160
	.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:

#include <stdio.h>
#include <iostream>
#include <limits>

#include <hiprand/hiprand.h>
#include<cmath>

#include "hip/hip_runtime.h"

#include <hiprand/hiprand_kernel.h>

typedef std::numeric_limits< double > dbl;

// simulation parameters
const double dt = 0.1;
const int N = 100000;
const int T_max = 100000*(1/dt);
const double energy_error_check = 0.05; 

// basic constants
const double kB = 1.38065e-23;
const double g = 9.805e-6;
const double pi = 3.14159;

// Fiber and Field Parameters 
const double r_casimir_cutoff = 0.1;

//******************************************************//
//******************************************************//
// // T. Yoon et al. PRA, 2019
// // T. Yoon et al. J. Phys, 2020
// // const char atom_species = 'Cs';

// Big Fiber 
// const double r_hcpcf = 15;
// const double alpha = 9.4657e-18;
// const double m = 2.2069e-25;

// const double P = 1e-7;
// const double w0 = 11.8;
// const double wvlngth = 0.935; 
// const double zR = 467.8453059741634;

// const double Temp = 30e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 1500;

// const double slope = 2000./5000.; 
// const double r_check = 400; 


// // Small Fiber
// const double r_hcpcf = 3.75 - r_casimir_cutoff;
// const double alpha = 9.4657e-18; 
// const double m = 2.2069e-25;

// // scattering rate constants 
// const double beta = 25449.809972971874; 
// const double spont_v_factor = 0.003360217090858776; 
// const double abs_v_factor = 0.0032150016610518837; 

// // field realted constants 
// const double P = 0.5e-7;
// const double w0 = 2.75;
// const double wvlngth = 0.935; 
// const double zR = 25.40994058050568;

// const double Temp = 32e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 1500;

// const double slope = 1000./5000.; 
// const double r_check = 250;


//******************************************************//
//******************************************************//

// // M. Bajcsy et al. PRA, 2011
// // const char atom_species = 'Rb';

// const double r_hcpcf = 3.5 - r_casimir_cutoff;
// const double m = 1.44316060e-25;
// const double alpha = 3.038831243e-17;

// scattering rate constants 
// const double beta = 382499.3875547423; 
// const double spont_v_factor = 0.00578236135589983; 
// const double abs_v_factor = 0.005731739384291537; 

// const double P = 0.25e-7;
// const double w0 = 2;
// const double wvlngth = 0.802;
// const double zR = 15.668791289724654;

// const double Temp = 40e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 6300;
// const double R = 340;

// const double slope = 1000./5000.; 
// const double r_check = 250; 

//******************************************************//
//******************************************************//
// // A. P Hilton et al. PRApplied, 2018
// // const char atom_species = 'Rb - 85';

const double r_hcpcf = 22.5 - r_casimir_cutoff;
const double m = 1.409993199e-25;
const double alpha = 7.190132913713667e-17;

// scattering rate constants 
const double beta = 3015911.2228300544; 
const double spont_v_factor = 0.005918379158044901; 
const double abs_v_factor = 0.005901520518109168; 

const double P = 10e-7;
const double w0 = 16.5;
const double wvlngth = 0.79725;
const double zR = 1072.8110378674457;

const double Temp = 5e-6;
const double cx = 0;
const double cy = 0;
const double cz = 25000;
const double R = 1000;  // Gaussian MOT

const double slope = 2000./25000.; 
const double r_check = 500; 

//******************************************************//
//******************************************************//
// // Yang et al. Fibers, 2020
// // const char atom_species = 'Rb - 85';

// const double r_hcpcf = 32 - r_casimir_cutoff;
// const double m = 1.409993199e-25;
// const double alpha = 1.1732431139058278e-17;

// scattering rate constants 
// const double beta = 48021.0283738874; 
// const double spont_v_factor = 0.005918379158044901; 
// const double abs_v_factor = 0.005730800527481771; 

// const double P = 5e-7;
// const double w0 = 22;
// const double wvlngth = 0.821;
// const double zR = 1852.0473134439221;

// const double Temp = 10e-6;
// const double cx = 0;
// const double cy = 0;
// const double cz = 5000;
// const double R = 2000; // Gaussian MOT

// const double slope = 2000./5000.; 
// const double r_check = 500; 

//******************************************************//
//******************************************************//

struct Particles
{
    double p[3];
    double v[3];
    double a[3];
    double t; 
    double energy_initial; 
    double energy_current; 
    double energy_kick_tab;
    int statusi;                                   //  0 -- running 
                                                   //  1 -- z < 0 -- loaded 
                                                   //  2 -- z < 0 -- not loaded
                                                   //  3 -- out of bounds 
    double N_scattering;


};


// force field function 
__device__ void a_dipole(double x, double y, double z, double &ax, double &ay, double &az, int &statusi, double& OPE)
{   
    double w = 0;
    double gaussian = 0;
    double intensity = 0;

    double ax_dipole = 0;
    double ay_dipole = 0;
    double az_dipole = 0;
    
    double r = sqrt(pow(x,2) + pow(y,2));
    double I0 = (2*P)/(pi*pow(w0,2));

    // out of bounds check
    if (r > (r_check + slope*z)){
        statusi = 3;
    } 
    
    // a_dipole acceleration update
    if (z > 0) {
        w = w0*sqrt(1 + pow((z/zR),2));
        gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        intensity = I0*pow((w0/w),2)*gaussian;
        ax_dipole = -4*x*alpha*intensity/(m*pow(w,2));
        ay_dipole = -4*y*alpha*intensity/(m*pow(w,2));
        az_dipole = alpha*intensity*(4*(z/(pow(zR,2)))*pow((w0/w),4)*((pow(x,2) + pow(y,2))/pow(w0,2)) - (2*z/(pow(zR,2)))*pow((w0/w),2))/m;

    }

    else {

        w = w0;
        gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        intensity = I0*pow((w0/w),2)*gaussian;
        ax_dipole = -4*x*alpha*intensity/(m*pow(w,2));
        ay_dipole = -4*y*alpha*intensity/(m*pow(w,2));
        az_dipole = 0;

        // inside hcpcf
        if (r < r_hcpcf){

            // stop condition, loaded
            if (z < -100){
                statusi = 1;
            }

        }

        // collided, not loaded
        else if (r > r_hcpcf){

            statusi = 2;

        }

    }

    ax = ax_dipole;
    ay = ay_dipole;
    az = az_dipole - g;
    OPE = -alpha*intensity; 


}


// velocity-verlet updater
__global__ void verlet_integrator(struct Particles atoms[])
{
   
    double KE = 0;
    double GPE = 0;
    double OPE = 0;
    double KE_kick = 0; 

    double intensity = 0;
    double p_scattering = 0;

    int index = blockIdx.x * blockDim.x + threadIdx.x;
    int stride = blockDim.x * gridDim.x;


    for (int particle_id = index; particle_id < N; particle_id += stride){

        for (int T = 1; atoms[particle_id].statusi == 0 && T < T_max; T += 1){ // atoms[particle_id].p[2]>0;  T < 50000
        
            atoms[particle_id].v[0] = atoms[particle_id].v[0] + 0.5*atoms[particle_id].a[0]*dt;
            atoms[particle_id].v[1] = atoms[particle_id].v[1] + 0.5*atoms[particle_id].a[1]*dt;
            atoms[particle_id].v[2] = atoms[particle_id].v[2] + 0.5*atoms[particle_id].a[2]*dt;

            atoms[particle_id].p[0] = atoms[particle_id].p[0] + atoms[particle_id].v[0]*dt;
            atoms[particle_id].p[1] = atoms[particle_id].p[1] + atoms[particle_id].v[1]*dt;
            atoms[particle_id].p[2] = atoms[particle_id].p[2] + atoms[particle_id].v[2]*dt;

            a_dipole(atoms[particle_id].p[0], atoms[particle_id].p[1], atoms[particle_id].p[2], atoms[particle_id].a[0], atoms[particle_id].a[1], atoms[particle_id].a[2], atoms[particle_id].statusi, OPE);

            atoms[particle_id].v[0] = atoms[particle_id].v[0] + 0.5*atoms[particle_id].a[0]*dt;
            atoms[particle_id].v[1] = atoms[particle_id].v[1] + 0.5*atoms[particle_id].a[1]*dt;
            atoms[particle_id].v[2] = atoms[particle_id].v[2] + 0.5*atoms[particle_id].a[2]*dt;

            KE = 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));

            // scattering kick: ad-hoc implementation
            hiprandState state_p;
            hiprand_init((unsigned long long)clock() + index, 0, 0, &state_p);
            p_scattering = hiprand_uniform_double(&state_p);
            intensity = OPE/(-1*alpha);
            
            if (p_scattering < beta*intensity*dt){

                atoms[particle_id].N_scattering = atoms[particle_id].N_scattering + 1; 

                hiprandState state_phi;
                hiprandState state_theta;
                hiprand_init((unsigned long long)clock() + index, 0, 0, &state_phi);    
                hiprand_init((unsigned long long)clock() + index, 0, 0, &state_theta);
                double phi = 2*pi*hiprand_uniform_double(&state_phi);
                double theta = pi*hiprand_uniform_double(&state_theta);

                atoms[particle_id].v[0] = atoms[particle_id].v[0] + spont_v_factor*cos(phi)*sin(theta);
                atoms[particle_id].v[1] = atoms[particle_id].v[1] + spont_v_factor*sin(phi)*sin(theta);
                atoms[particle_id].v[2] = atoms[particle_id].v[2] + abs_v_factor + spont_v_factor*cos(theta);
                KE_kick = KE - 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));

            }

            // energy updater
            KE = 0.5*m*(pow(atoms[particle_id].v[0],2) + pow(atoms[particle_id].v[1],2) + pow(atoms[particle_id].v[2],2));
            GPE = m*g*atoms[particle_id].p[2]; 
            atoms[particle_id].energy_current = (KE + GPE + OPE);
            atoms[particle_id].energy_kick_tab = atoms[particle_id].energy_kick_tab + (KE_kick);

            // timer
            atoms[particle_id].t = atoms[particle_id].t + dt; 
            KE_kick = 0;

        }
   
    }

}

void initialize_MB_cloud(struct Particles atoms[]){

    // initializing MB cloud functions
    double *phi, *costheta, *u, *therm; 
    double theta, r;
      
    phi = (double *) malloc(N*sizeof(double));
    costheta = (double *) malloc(N*sizeof(double));
    u = (double *) malloc(N*sizeof(double));
    therm = (double *) malloc(3*N*sizeof(double));
          
    // random number generation   
    double *d_phi, *d_costheta, *d_u, *d_therm;
    hipMalloc(&d_phi, N*sizeof(double));
    hipMalloc(&d_costheta, N*sizeof(double));
    hipMalloc(&d_u, N*sizeof(double));
    hipMalloc(&d_therm, 3*N*sizeof(double));

    // unsigned int seeder, seeder1, seeder2, seeder3;
    // seeder = 1234ULL;
    // seeder1 = 1234ULL;
    // seeder2 = 1234ULL;
    // seeder3 = 1234ULL;

    time_t seeder;
    time(&seeder);
    srand((unsigned int) seeder);
   
    // generates N random numbers between 0 and 1
    hiprandGenerator_t gen;
    hiprandCreateGenerator(&gen, HIPRAND_RNG_PSEUDO_XORWOW);
    hiprandSetPseudoRandomGeneratorSeed(gen, seeder);
    hiprandGenerateUniformDouble(gen, d_phi, N);
    hipMemcpy(phi, d_phi, N*sizeof(double), hipMemcpyDeviceToHost);
    hiprandDestroyGenerator(gen);
    hipFree(d_phi);
    
    time_t seeder1;
    time(&seeder1);
    srand((unsigned int) seeder1);
    
    hiprandGenerator_t gen1;
    hiprandCreateGenerator(&gen1, HIPRAND_RNG_PSEUDO_MTGP32);
    hiprandSetPseudoRandomGeneratorSeed(gen1, seeder1);
    hiprandGenerateUniformDouble(gen1, d_costheta, N);
    hipMemcpy(costheta, d_costheta, N*sizeof(double), hipMemcpyDeviceToHost);
    hiprandDestroyGenerator(gen1);
    hipFree(d_costheta);

   
    time_t seeder2;
    time(&seeder2);
    srand((unsigned int) seeder2);
      
    hiprandGenerator_t gen2;
    hiprandCreateGenerator(&gen2, HIPRAND_RNG_PSEUDO_MRG32K3A);
    hiprandSetPseudoRandomGeneratorSeed(gen2, seeder2);
    hiprandGenerateUniformDouble(gen2, d_u, N);
    hipMemcpy(u, d_u, N*sizeof(double), hipMemcpyDeviceToHost);
    hiprandDestroyGenerator(gen2);
    hipFree(d_u);
   
    time_t seeder3;
    time(&seeder3);
    srand((unsigned int) seeder3);
      
    // normal distribution to sample thermal velocities 
    hiprandGenerator_t gen3;
    hiprandCreateGenerator(&gen3, HIPRAND_RNG_PSEUDO_DEFAULT);
    hiprandSetPseudoRandomGeneratorSeed(gen3, seeder3);
    hiprandGenerateNormalDouble(gen3, d_therm, 3*N, 0, 1);
    hipMemcpy(therm, d_therm, 3*N*sizeof(double), hipMemcpyDeviceToHost);
    hiprandDestroyGenerator(gen3);
    hipFree(d_therm);

    // initializing (p, v, a, t, status) array values for atoms
    for (int i = 0; i < N; i++){

        phi[i] = phi[i]*2*pi;
        costheta[i] = costheta[i]*2 - 1;

        theta = acos(costheta[i]);
        r = R*cbrt(u[i]);

        atoms[i].p[0] = cx + r*sin(theta)*cos(phi[i]);
        atoms[i].p[1] = cy + r*sin(theta)*sin(phi[i]);
        atoms[i].p[2] = cz + r*cos(theta);

        atoms[i].v[0] = sqrt(kB*Temp/m)*therm[i];
        atoms[i].v[1] = sqrt(kB*Temp/m)*therm[i + N - 1];
        atoms[i].v[2] = sqrt(kB*Temp/m)*therm[i + 2*N - 1];

        atoms[i].a[0] = 0;
        atoms[i].a[1] = 0;
        atoms[i].a[2] = -g;

        atoms[i].N_scattering = 0; 

        double KE = 0.5*m*(pow(atoms[i].v[0],2) + pow(atoms[i].v[1],2) + pow(atoms[i].v[2],2));
        double GE = m*g*atoms[i].p[2];

        double x = atoms[i].p[0];
        double y = atoms[i].p[1];
        double z = atoms[i].p[2];

        // calculating dipole field and potneial 

        double I0 = (2*P)/(pi*pow(w0,2));

        double w = w0*sqrt(1 + pow((z/zR),2));
        double gaussian = exp(-(2*(pow(x,2) + pow(y,2)))/(pow(w,2)));
        double intensity = I0*pow((w0/w),2)*gaussian;
        double OPE = -alpha*intensity;

        atoms[i].energy_current = (KE + GE + OPE);
        atoms[i].energy_initial = atoms[i].energy_current;
        double r = sqrt(pow(atoms[i].p[0], 2) + pow(atoms[i].p[1], 2)); // has to be sqrt
    
        if (r > (r_check + slope*atoms[i].p[2])){
            atoms[i].statusi = 3;
        } 

    }

}




int main(void){

    // AoS allocating memory
    struct Particles *Atoms = (struct Particles*)malloc(N*sizeof(struct Particles));

    // initializing atoms
    initialize_MB_cloud(Atoms);

    //************************************************//
    printf("----------------------------\n");
    printf("Before Evolution:\n");
    printf("px = %lf\n", Atoms[0].p[0]);
    printf("py = %lf\n", Atoms[0].p[1]);
    printf("pz = %lf\n", Atoms[0].p[2]);
           
    printf("vx = %lf\n", Atoms[0].v[0]);
    printf("vy = %lf\n", Atoms[0].v[1]);
    printf("vz = %lf\n", Atoms[0].v[2]);

    
    std::cout.precision(dbl::digits10);
    std::cout << "az (precision) " << Atoms[0].a[2] << std::endl;
    printf("----------------------------\n");
    //************************************************//

    printf("Memory Allocation Begin\n");

    // device: 1D arrays for position, velocity and acceleration
    Particles *dev_Atoms;

    // device: allocation of  memory 
    hipMalloc(&dev_Atoms, N*sizeof(Particles)); 

    // device: copying initial values 
    hipMemcpy(dev_Atoms, Atoms, N*sizeof(Particles), hipMemcpyHostToDevice);
       

    printf("Memory Allocation End \n");

    // kernel initialization
    // code reference:  https://stackoverflow.com/questions/9985912/how-do-i-choose-grid-and-block-dimensions-for-cuda-kernels

    int blockSize;      // The launch configurator returned block size 
    int minGridSize;    // The minimum grid size needed to achieve the maximum occupancy for a full device launch 
    int gridSize;       // The actual grid size needed, based on input size 

    hipOccupancyMaxPotentialBlockSize(&minGridSize, &blockSize, verlet_integrator, 0, N); 

    // Round up according to array size 
    gridSize = (N + blockSize - 1) / blockSize; 

    printf("Grid Size (GPU, AoS) = %d\n", gridSize); 
    printf("Block Size (GPU, AoS) = %d\n", blockSize); 


    hipEvent_t cuda_start, cuda_stop;
    hipEventCreate(&cuda_start);
    hipEventCreate(&cuda_stop);


    // testing timing of one verlet update of N particles
    hipEventRecord(cuda_start);
    verlet_integrator<<<gridSize, blockSize>>>(dev_Atoms);
    hipEventRecord(cuda_stop);
    
    hipEventSynchronize(cuda_stop);
    float cuda_diffs = 0;
    hipEventElapsedTime(&cuda_diffs, cuda_start, cuda_stop);
    cuda_diffs = cuda_diffs/1000.0;
    printf("GPU Time for Verlet integration (GPU, AoS) = %lf\n", cuda_diffs);

    
    // device: copying initial values 
    hipMemcpy(Atoms, dev_Atoms, N*sizeof(Particles), hipMemcpyDeviceToHost);

    //************************************************//
    printf("----------------------------\n");
    printf("After Evolution:\n");
    printf("px = %lf\n", Atoms[0].p[0]);
    printf("py = %lf\n", Atoms[0].p[1]);
    printf("pz = %lf\n", Atoms[0].p[2]);
       
    printf("vx = %lf\n", Atoms[0].v[0]);
    printf("vy = %lf\n", Atoms[0].v[1]);
    printf("vz = %lf\n", Atoms[0].v[2]);
 
    std::cout.precision(dbl::digits10);
    std::cout << "az (precision) " << Atoms[0].a[2] << std::endl;
    printf("----------------------------\n");
    //************************************************//
    
    int completed = 0; 
    int trapped = 0;
    int escaped = 0; 
    int running = 0;

    int unstable_integration_counter = 0; 

    double *fractional_energy_change;
    fractional_energy_change = (double *) malloc(N*sizeof(double));

    int fractional_energy_change_trapped = 0; 

    double N_scattering_average_total = 0;
    double N_scattering_average_loaded = 0;

    double loading_efficiency; 
    for (int i = 0; i < N; i++){
        if (Atoms[i].statusi == 1 || Atoms[i].statusi == 2) {
            completed ++; 
        }

        if (Atoms[i].statusi == 1){
            trapped++;
            fractional_energy_change[i] = abs(Atoms[i].energy_current  + Atoms[i].energy_kick_tab - Atoms[i].energy_initial)/(Atoms[i].energy_initial);
            if (fractional_energy_change[i] > energy_error_check){
                fractional_energy_change_trapped++;
            }
            N_scattering_average_loaded = N_scattering_average_loaded + Atoms[i].N_scattering;
        }
        
        if (Atoms[i].statusi == 3){
            escaped++;
        }

        if (Atoms[i].statusi == 0){
            running++;
        }


        fractional_energy_change[i] = abs(Atoms[i].energy_current + Atoms[i].energy_kick_tab - Atoms[i].energy_initial)/(Atoms[i].energy_initial);
        if (fractional_energy_change[i] > energy_error_check){
            unstable_integration_counter++;
            // std::cout << "Energy instability (> 0.05): " << Atoms_GPU[i].p[0] << ", " << Atoms_GPU[i].p[1] << ", " << Atoms_GPU[i].p[2] << ", " << Atoms_GPU[i].statusi << std::endl;

        }
     

        N_scattering_average_total = N_scattering_average_total + Atoms[i].N_scattering;

    }
    
    N_scattering_average_total = N_scattering_average_total/N; 
    N_scattering_average_loaded = N_scattering_average_loaded/trapped;

    loading_efficiency = (double)trapped/N;

    printf("Total Number of Atoms = %d\n", N);
    printf("Accounted Number of Atoms = %d\n", completed + escaped + running);
    printf("Completed Atom Runs = %d\n", completed);
    printf("Number of Escaped Atoms = %d\n", escaped);
    printf("Number of Trapped Atoms = %d\n", trapped);
    printf("Number of Running Atoms = %d\n", running);
    printf("Loading Efficiency (1e-4) = %lf\n", loading_efficiency*1e4);


    double fractional_energy_change_min = fractional_energy_change[0];                
    for (int j = 0; j < N; j++){
        if (fractional_energy_change[j] < fractional_energy_change_min){
            fractional_energy_change_min = fractional_energy_change[j];
            if (fractional_energy_change_min == 0){
                std::cout << Atoms[j].p[0] << ", " << Atoms[j].p[1] << ", " << Atoms[j].p[2] << ", " << Atoms[j].statusi << std::endl;
            }
        }
    }


    double fractional_energy_change_max = fractional_energy_change[0];                
    for (int j = 0; j < N; j++){
        if (fractional_energy_change[j] > fractional_energy_change_max){
            fractional_energy_change_max = fractional_energy_change[j];
        }
    }

    printf("Total number of fractional errors in energy : %d\n", unstable_integration_counter);
    printf("Number of fractional errors that are loaded: %d\n", fractional_energy_change_trapped);
    printf("----------------------------\n");
    printf("Fractional energy change max: %lf\n", fractional_energy_change_max);
    printf("Fractional energy change min: %lf\n", fractional_energy_change_min);
    std::cout << "Fractional energy change min (precision) " << fractional_energy_change_min << std::endl;
    printf("----------------------------\n");

    printf("----------------------------\n");
    printf("Fractional energy change max: %lf\n", fractional_energy_change_max);
    printf("----------------------------\n");

    printf("Average No. of Scattering Events for Loaded Atoms = %lf\n", N_scattering_average_loaded);

    //************************************************/
    // clearing memory    
    hipFree(dev_Atoms);
    free(Atoms);

    hipError_t cudaResult;
    cudaResult = hipGetLastError();
    if (cudaResult != hipSuccess) {
        printf("In what house, shall thy find solace? ");

    }

}

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

                                        # End of file scope inline assembly
	.globl	_Z32__device_stub__verlet_integratorP9Particles # -- Begin function _Z32__device_stub__verlet_integratorP9Particles
	.type	_Z32__device_stub__verlet_integratorP9Particles,@function
_Z32__device_stub__verlet_integratorP9Particles: # @_Z32__device_stub__verlet_integratorP9Particles
	.cfi_startproc
# %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	$64, %rsp
	.cfi_def_cfa_offset 112
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	24(%rsp), %rax
	movq	%rdi, (%rax)
	movq	%rsp, %rbx
	movq	%rax, (%rbx)
	leaq	48(%rsp), %r14
	leaq	32(%rsp), %r15
	leaq	16(%rsp), %r12
	leaq	8(%rsp), %r13
	movq	%r14, %rdi
	movq	%r15, %rsi
	movq	%r12, %rdx
	movq	%r13, %rcx
	callq	__hipPopCallConfiguration
	movq	(%r14), %rsi
	movl	8(%r14), %edx
	movq	(%r15), %rcx
	movl	8(%r15), %r8d
	movl	$_Z17verlet_integratorP9Particles, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$80, %rsp
	.cfi_adjust_cfa_offset -80
	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
.Lfunc_end0:
	.size	_Z32__device_stub__verlet_integratorP9Particles, .Lfunc_end0-_Z32__device_stub__verlet_integratorP9Particles
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z19initialize_MB_cloudP9Particles
.LCPI1_0:
	.quad	0x3ff0000000000000              # double 1
.LCPI1_1:
	.quad	0x400921f9f01b866e              # double 3.1415899999999999
.LCPI1_2:
	.quad	0xbff0000000000000              # double -1
.LCPI1_3:
	.quad	0x408f400000000000              # double 1000
.LCPI1_4:
	.quad	0x40d86a0000000000              # double 25000
.LCPI1_5:
	.quad	0x3f96a86752aa8446              # double 0.022126783772027168
.LCPI1_6:
	.quad	0x3ab5d18efae2db4a              # double 7.0499659949999997E-26
.LCPI1_7:
	.quad	0x39bc0a577c8c3829              # double 1.3824983316194999E-30
.LCPI1_8:
	.quad	0x4090c33e80b5f1fd              # double 1072.8110378674457
.LCPI1_9:
	.quad	0x4030800000000000              # double 16.5
.LCPI1_10:
	.quad	0xc000000000000000              # double -2
.LCPI1_11:
	.quad	0xbe24161f601188cb              # double -2.3383666119293041E-9
.LCPI1_12:
	.quad	0x3c94b961b508b2b2              # double 7.1901329137136672E-17
.LCPI1_13:
	.quad	0x3fb47ae147ae147b              # double 0.080000000000000002
.LCPI1_14:
	.quad	0x407f400000000000              # double 500
.LCPI1_16:
	.quad	0x0000000000000000              # double 0
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI1_15:
	.zero	16
	.text
	.globl	_Z19initialize_MB_cloudP9Particles
	.type	_Z19initialize_MB_cloudP9Particles,@function
_Z19initialize_MB_cloudP9Particles:     # @_Z19initialize_MB_cloudP9Particles
	.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	%rdi, %rbx
	movl	$800000, %edi                   # imm = 0xC3500
	callq	malloc
	movq	%rax, %r14
	movl	$800000, %edi                   # imm = 0xC3500
	callq	malloc
	movq	%rax, %r15
	movl	$800000, %edi                   # imm = 0xC3500
	callq	malloc
	movq	%rax, 32(%rsp)                  # 8-byte Spill
	movl	$2400000, %edi                  # imm = 0x249F00
	callq	malloc
	movq	%rax, %r13
	leaq	88(%rsp), %rdi
	movl	$800000, %esi                   # imm = 0xC3500
	callq	hipMalloc
	leaq	80(%rsp), %rdi
	movl	$800000, %esi                   # imm = 0xC3500
	callq	hipMalloc
	leaq	72(%rsp), %rdi
	movl	$800000, %esi                   # imm = 0xC3500
	callq	hipMalloc
	leaq	64(%rsp), %rdi
	movl	$2400000, %esi                  # imm = 0x249F00
	callq	hipMalloc
	leaq	128(%rsp), %rbp
	movq	%rbp, %rdi
	callq	time
	movl	(%rbp), %edi
	callq	srand
	leaq	120(%rsp), %r12
	movq	%r12, %rdi
	movl	$401, %esi                      # imm = 0x191
	callq	hiprandCreateGenerator
	movq	(%r12), %rdi
	movq	(%rbp), %rsi
	callq	hiprandSetPseudoRandomGeneratorSeed
	movq	(%r12), %rdi
	leaq	88(%rsp), %rbp
	movq	(%rbp), %rsi
	movl	$100000, %edx                   # imm = 0x186A0
	callq	hiprandGenerateUniformDouble
	movq	(%rbp), %rsi
	movl	$800000, %edx                   # imm = 0xC3500
	movq	%r14, %rdi
	movl	$2, %ecx
	callq	hipMemcpy
	movq	(%r12), %rdi
	callq	hiprandDestroyGenerator
	movq	(%rbp), %rdi
	callq	hipFree
	leaq	112(%rsp), %rbp
	movq	%rbp, %rdi
	callq	time
	movl	(%rbp), %edi
	callq	srand
	leaq	104(%rsp), %r12
	movq	%r12, %rdi
	movl	$403, %esi                      # imm = 0x193
	callq	hiprandCreateGenerator
	movq	(%r12), %rdi
	movq	(%rbp), %rsi
	callq	hiprandSetPseudoRandomGeneratorSeed
	movq	(%r12), %rdi
	movq	%r12, %rbp
	leaq	80(%rsp), %r12
	movq	(%r12), %rsi
	movl	$100000, %edx                   # imm = 0x186A0
	callq	hiprandGenerateUniformDouble
	movq	(%r12), %rsi
	movl	$800000, %edx                   # imm = 0xC3500
	movq	%r15, %rdi
	movl	$2, %ecx
	callq	hipMemcpy
	movq	(%rbp), %rdi
	callq	hiprandDestroyGenerator
	movq	(%r12), %rdi
	callq	hipFree
	leaq	96(%rsp), %rbp
	movq	%rbp, %rdi
	callq	time
	movl	(%rbp), %edi
	callq	srand
	leaq	56(%rsp), %r12
	movq	%r12, %rdi
	movl	$402, %esi                      # imm = 0x192
	callq	hiprandCreateGenerator
	movq	(%r12), %rdi
	movq	(%rbp), %rsi
	callq	hiprandSetPseudoRandomGeneratorSeed
	movq	(%r12), %rdi
	leaq	72(%rsp), %rbp
	movq	(%rbp), %rsi
	movl	$100000, %edx                   # imm = 0x186A0
	callq	hiprandGenerateUniformDouble
	movq	(%rbp), %rsi
	movl	$800000, %edx                   # imm = 0xC3500
	movq	32(%rsp), %rdi                  # 8-byte Reload
	movq	%rdi, %r12
	movl	$2, %ecx
	callq	hipMemcpy
	leaq	56(%rsp), %rax
	movq	(%rax), %rdi
	callq	hiprandDestroyGenerator
	movq	(%rbp), %rdi
	callq	hipFree
	leaq	48(%rsp), %rbp
	movq	%rbp, %rdi
	callq	time
	movl	(%rbp), %edi
	callq	srand
	leaq	40(%rsp), %rbp
	movq	%rbp, %rdi
	movl	$400, %esi                      # imm = 0x190
	callq	hiprandCreateGenerator
	movq	(%rbp), %rdi
	leaq	48(%rsp), %rax
	movq	(%rax), %rsi
	callq	hiprandSetPseudoRandomGeneratorSeed
	movq	(%rbp), %rdi
	leaq	64(%rsp), %rbp
	movq	(%rbp), %rsi
	movsd	.LCPI1_0(%rip), %xmm1           # xmm1 = mem[0],zero
	movl	$300000, %edx                   # imm = 0x493E0
	xorpd	%xmm0, %xmm0
	callq	hiprandGenerateNormalDouble
	movq	(%rbp), %rsi
	movl	$2400000, %edx                  # imm = 0x249F00
	movq	%r13, %rdi
	movl	$2, %ecx
	callq	hipMemcpy
	leaq	40(%rsp), %rax
	movq	(%rax), %rdi
	callq	hiprandDestroyGenerator
	movq	(%rbp), %rdi
	callq	hipFree
	xorl	%ebp, %ebp
.LBB1_1:                                # =>This Inner Loop Header: Depth=1
	movsd	(%r14,%rbp), %xmm0              # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	mulsd	.LCPI1_1(%rip), %xmm0
	movsd	%xmm0, (%r14,%rbp)
	movsd	(%r15,%rbp), %xmm0              # xmm0 = mem[0],zero
	addsd	%xmm0, %xmm0
	addsd	.LCPI1_2(%rip), %xmm0
	movsd	%xmm0, (%r15,%rbp)
	callq	acos
	movsd	%xmm0, 16(%rsp)                 # 8-byte Spill
	movsd	(%r12,%rbp), %xmm0              # xmm0 = mem[0],zero
	callq	cbrt
	mulsd	.LCPI1_3(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movsd	(%r14,%rbp), %xmm0              # xmm0 = mem[0],zero
	callq	cos
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	xorpd	%xmm1, %xmm1
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%rbx)
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	sin
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	movsd	%xmm0, 24(%rsp)                 # 8-byte Spill
	movsd	(%r14,%rbp), %xmm0              # xmm0 = mem[0],zero
	callq	sin
	mulsd	24(%rsp), %xmm0                 # 8-byte Folded Reload
	addsd	.LCPI1_16(%rip), %xmm0
	movsd	%xmm0, 8(%rbx)
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	callq	cos
	mulsd	8(%rsp), %xmm0                  # 8-byte Folded Reload
	addsd	.LCPI1_4(%rip), %xmm0
	movsd	%xmm0, 16(%rbx)
	movsd	(%r13,%rbp), %xmm1              # xmm1 = mem[0],zero
	movsd	.LCPI1_5(%rip), %xmm4           # xmm4 = mem[0],zero
	mulsd	%xmm4, %xmm1
	movsd	%xmm1, 24(%rbx)
	movsd	799992(%r13,%rbp), %xmm2        # xmm2 = mem[0],zero
	mulsd	%xmm4, %xmm2
	movsd	%xmm2, 32(%rbx)
	movsd	1599992(%r13,%rbp), %xmm3       # xmm3 = mem[0],zero
	mulsd	%xmm4, %xmm3
	movsd	%xmm3, 40(%rbx)
	xorpd	%xmm4, %xmm4
	movupd	%xmm4, 48(%rbx)
	movabsq	$-4691466560926860219, %rax     # imm = 0xBEE49004F054BC45
	movq	%rax, 64(%rbx)
	movq	$0, 112(%rbx)
	mulsd	%xmm1, %xmm1
	mulsd	%xmm2, %xmm2
	addsd	%xmm1, %xmm2
	mulsd	%xmm3, %xmm3
	addsd	%xmm2, %xmm3
	mulsd	.LCPI1_6(%rip), %xmm3
	movapd	%xmm0, %xmm1
	mulsd	.LCPI1_7(%rip), %xmm1
	addsd	%xmm3, %xmm1
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movsd	(%rbx), %xmm2                   # xmm2 = mem[0],zero
	movsd	8(%rbx), %xmm1                  # xmm1 = mem[0],zero
	divsd	.LCPI1_8(%rip), %xmm0
	mulsd	%xmm0, %xmm0
	addsd	.LCPI1_0(%rip), %xmm0
	xorps	%xmm3, %xmm3
	sqrtsd	%xmm0, %xmm3
	movsd	.LCPI1_9(%rip), %xmm0           # xmm0 = mem[0],zero
	mulsd	%xmm0, %xmm3
	movsd	%xmm3, 8(%rsp)                  # 8-byte Spill
	mulsd	%xmm2, %xmm2
	mulsd	%xmm1, %xmm1
	addsd	%xmm2, %xmm1
	mulsd	.LCPI1_10(%rip), %xmm1
	movapd	%xmm3, %xmm0
	mulsd	%xmm3, %xmm0
	divsd	%xmm0, %xmm1
	movapd	%xmm1, %xmm0
	callq	exp
	movsd	.LCPI1_9(%rip), %xmm1           # xmm1 = mem[0],zero
	divsd	8(%rsp), %xmm1                  # 8-byte Folded Reload
	mulsd	%xmm1, %xmm1
	mulsd	.LCPI1_11(%rip), %xmm1
	mulsd	%xmm0, %xmm1
	mulsd	.LCPI1_12(%rip), %xmm1
	addsd	16(%rsp), %xmm1                 # 8-byte Folded Reload
	movsd	%xmm1, 88(%rbx)
	movsd	%xmm1, 80(%rbx)
	movsd	(%rbx), %xmm0                   # xmm0 = mem[0],zero
	movsd	8(%rbx), %xmm1                  # xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm0
	mulsd	%xmm1, %xmm1
	addsd	%xmm0, %xmm1
	xorps	%xmm0, %xmm0
	sqrtsd	%xmm1, %xmm0
	movsd	16(%rbx), %xmm1                 # xmm1 = mem[0],zero
	mulsd	.LCPI1_13(%rip), %xmm1
	addsd	.LCPI1_14(%rip), %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	.LBB1_3
# %bb.2:                                #   in Loop: Header=BB1_1 Depth=1
	movl	$3, 104(%rbx)
.LBB1_3:                                #   in Loop: Header=BB1_1 Depth=1
	addq	$8, %rbp
	addq	$120, %rbx
	cmpq	$800000, %rbp                   # imm = 0xC3500
	jne	.LBB1_1
# %bb.4:
	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_end1:
	.size	_Z19initialize_MB_cloudP9Particles, .Lfunc_end1-_Z19initialize_MB_cloudP9Particles
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst4,"aM",@progbits,4
	.p2align	2, 0x0                          # -- Begin function main
.LCPI2_0:
	.long	0x447a0000                      # float 1000
	.section	.rodata.cst16,"aM",@progbits,16
	.p2align	4, 0x0
.LCPI2_1:
	.quad	0x7fffffffffffffff              # double NaN
	.quad	0x7fffffffffffffff              # double NaN
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0
.LCPI2_2:
	.quad	0x3fa999999999999a              # double 0.050000000000000003
.LCPI2_3:
	.quad	0x40f86a0000000000              # double 1.0E+5
.LCPI2_4:
	.quad	0x40c3880000000000              # double 1.0E+4
.LCPI2_5:
	.quad	0x0000000000000000              # double 0
	.text
	.globl	main
	.type	main,@function
main:                                   # @main
	.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	$12000000, %edi                 # imm = 0xB71B00
	callq	malloc
	movq	%rax, %r14
	movq	%rax, %rdi
	callq	_Z19initialize_MB_cloudP9Particles
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.Lstr.1, %edi
	callq	puts@PLT
	movsd	(%r14), %xmm0                   # xmm0 = mem[0],zero
	movl	$.L.str.2, %edi
	movb	$1, %al
	callq	printf
	movsd	8(%r14), %xmm0                  # xmm0 = mem[0],zero
	movl	$.L.str.3, %edi
	movb	$1, %al
	callq	printf
	movsd	16(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.4, %edi
	movb	$1, %al
	callq	printf
	movsd	24(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.5, %edi
	movb	$1, %al
	callq	printf
	movsd	32(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.6, %edi
	movb	$1, %al
	callq	printf
	movsd	40(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.7, %edi
	movb	$1, %al
	callq	printf
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rax
	movq	$15, _ZSt4cout+8(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.8, %esi
	movl	$15, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	64(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$_ZSt4cout, %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
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.Lstr.3, %edi
	callq	puts@PLT
	leaq	32(%rsp), %rbx
	movl	$12000000, %esi                 # imm = 0xB71B00
	movq	%rbx, %rdi
	callq	hipMalloc
	movq	(%rbx), %rdi
	movl	$12000000, %edx                 # imm = 0xB71B00
	movq	%r14, %rsi
	movl	$1, %ecx
	callq	hipMemcpy
	movl	$.Lstr.4, %edi
	callq	puts@PLT
	leaq	80(%rsp), %rdi
	leaq	84(%rsp), %rbx
	movl	$_Z17verlet_integratorP9Particles, %edx
	movq	%rbx, %rsi
	xorl	%ecx, %ecx
	movl	$100000, %r8d                   # imm = 0x186A0
	callq	hipOccupancyMaxPotentialBlockSize
	movl	(%rbx), %ecx
	leal	99999(%rcx), %eax
	cltd
	idivl	%ecx
	movl	%eax, %r15d
	movl	$.L.str.11, %edi
	movl	%eax, %esi
	xorl	%eax, %eax
	callq	printf
	movl	(%rbx), %esi
	movl	$.L.str.12, %edi
	xorl	%eax, %eax
	callq	printf
	leaq	64(%rsp), %r12
	movq	%r12, %rdi
	callq	hipEventCreate
	leaq	24(%rsp), %rdi
	callq	hipEventCreate
	movq	(%r12), %rdi
	xorl	%esi, %esi
	callq	hipEventRecord
	movl	(%rbx), %edx
	btsq	$32, %r15
	btsq	$32, %rdx
	movq	%r15, %rdi
	movl	$1, %esi
	movl	$1, %ecx
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
	callq	__hipPushCallConfiguration
	testl	%eax, %eax
	jne	.LBB2_2
# %bb.1:
	movq	32(%rsp), %rdi
	callq	_Z32__device_stub__verlet_integratorP9Particles
.LBB2_2:
	movq	24(%rsp), %rdi
	xorl	%esi, %esi
	callq	hipEventRecord
	movq	24(%rsp), %rdi
	callq	hipEventSynchronize
	leaq	76(%rsp), %rbx
	movl	$0, (%rbx)
	movq	64(%rsp), %rsi
	movq	24(%rsp), %rdx
	movq	%rbx, %rdi
	callq	hipEventElapsedTime
	movss	(%rbx), %xmm0                   # xmm0 = mem[0],zero,zero,zero
	divss	.LCPI2_0(%rip), %xmm0
	movss	%xmm0, (%rbx)
	cvtss2sd	%xmm0, %xmm0
	movl	$.L.str.13, %edi
	movb	$1, %al
	callq	printf
	movq	32(%rsp), %rsi
	movl	$12000000, %edx                 # imm = 0xB71B00
	movq	%r14, %rdi
	movl	$2, %ecx
	callq	hipMemcpy
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.Lstr.6, %edi
	callq	puts@PLT
	movsd	(%r14), %xmm0                   # xmm0 = mem[0],zero
	movl	$.L.str.2, %edi
	movb	$1, %al
	callq	printf
	movsd	8(%r14), %xmm0                  # xmm0 = mem[0],zero
	movl	$.L.str.3, %edi
	movb	$1, %al
	callq	printf
	movsd	16(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.4, %edi
	movb	$1, %al
	callq	printf
	movsd	24(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.5, %edi
	movb	$1, %al
	callq	printf
	movsd	32(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.6, %edi
	movb	$1, %al
	callq	printf
	movsd	40(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$.L.str.7, %edi
	movb	$1, %al
	callq	printf
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rax
	movq	$15, _ZSt4cout+8(%rax)
	movl	$_ZSt4cout, %edi
	movl	$.L.str.8, %esi
	movl	$15, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	64(%r14), %xmm0                 # xmm0 = mem[0],zero
	movl	$_ZSt4cout, %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
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$800000, %edi                   # imm = 0xC3500
	callq	malloc
	movq	%rax, %r15
	movq	%r14, 56(%rsp)                  # 8-byte Spill
	addq	$80, %r14
	xorpd	%xmm4, %xmm4
	movapd	.LCPI2_1(%rip), %xmm0           # xmm0 = [NaN,NaN]
	movsd	.LCPI2_2(%rip), %xmm1           # xmm1 = mem[0],zero
	xorl	%ecx, %ecx
	xorl	%ebx, %ebx
	xorl	%r8d, %r8d
	xorl	%ebp, %ebp
	xorl	%r12d, %r12d
	xorl	%r13d, %r13d
	xorl	%edi, %edi
.LBB2_3:                                # =>This Inner Loop Header: Depth=1
	movl	24(%r14), %edx
	leal	-1(%rdx), %esi
	cmpl	$2, %esi
	adcl	$0, %edi
	cmpl	$1, %edx
	jne	.LBB2_4
# %bb.5:                                #   in Loop: Header=BB2_3 Depth=1
	incl	%ebx
	movsd	(%r14), %xmm3                   # xmm3 = mem[0],zero
	movsd	8(%r14), %xmm2                  # xmm2 = mem[0],zero
	addsd	16(%r14), %xmm2
	subsd	%xmm3, %xmm2
	andpd	%xmm0, %xmm2
	divsd	%xmm3, %xmm2
	xorl	%esi, %esi
	ucomisd	%xmm1, %xmm2
	seta	%sil
	addl	%esi, %r8d
	addsd	32(%r14), %xmm4
	jmp	.LBB2_6
.LBB2_4:                                # %._crit_edge
                                        #   in Loop: Header=BB2_3 Depth=1
	movsd	8(%r14), %xmm2                  # xmm2 = mem[0],zero
	addsd	16(%r14), %xmm2
	movsd	(%r14), %xmm3                   # xmm3 = mem[0],zero
	subsd	%xmm3, %xmm2
	andpd	%xmm0, %xmm2
	divsd	%xmm3, %xmm2
.LBB2_6:                                #   in Loop: Header=BB2_3 Depth=1
	xorl	%esi, %esi
	cmpl	$3, %edx
	sete	%sil
	addl	%esi, %ebp
	cmpl	$1, %edx
	adcl	$0, %r13d
	movsd	%xmm2, (%r15,%rcx,8)
	xorl	%edx, %edx
	ucomisd	%xmm1, %xmm2
	seta	%dl
	addl	%edx, %r12d
	incq	%rcx
	addq	$120, %r14
	cmpq	$100000, %rcx                   # imm = 0x186A0
	jne	.LBB2_3
# %bb.7:
	movl	%r8d, 44(%rsp)                  # 4-byte Spill
	movsd	%xmm4, 16(%rsp)                 # 8-byte Spill
	xorps	%xmm0, %xmm0
	cvtsi2sd	%ebx, %xmm0
	movsd	%xmm0, 48(%rsp)                 # 8-byte Spill
	divsd	.LCPI2_3(%rip), %xmm0
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	xorl	%r14d, %r14d
	movq	%rdi, (%rsp)                    # 8-byte Spill
	movl	$.L.str.15, %edi
	movl	$100000, %esi                   # imm = 0x186A0
	xorl	%eax, %eax
	callq	printf
	leal	(%rbp,%r13), %esi
	addl	(%rsp), %esi                    # 4-byte Folded Reload
	movl	$.L.str.16, %edi
	xorl	%eax, %eax
	callq	printf
	movl	$.L.str.17, %edi
	movq	(%rsp), %rsi                    # 8-byte Reload
                                        # kill: def $esi killed $esi killed $rsi
	xorl	%eax, %eax
	callq	printf
	movl	$.L.str.18, %edi
	movl	%ebp, %esi
	xorl	%eax, %eax
	callq	printf
	movl	$.L.str.19, %edi
	movl	%ebx, %esi
	xorl	%eax, %eax
	callq	printf
	movl	$.L.str.20, %edi
	movl	%r13d, %esi
	xorl	%eax, %eax
	callq	printf
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	mulsd	.LCPI2_4(%rip), %xmm0
	movl	$.L.str.21, %edi
	movb	$1, %al
	callq	printf
	movsd	(%r15), %xmm2                   # xmm2 = mem[0],zero
	movq	%r15, %r13
	movapd	%xmm2, %xmm0
	movq	56(%rsp), %rbp                  # 8-byte Reload
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
.LBB2_8:                                # =>This Inner Loop Header: Depth=1
	movsd	(%r13), %xmm1                   # xmm1 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	.LBB2_12
# %bb.9:                                #   in Loop: Header=BB2_8 Depth=1
	ucomisd	.LCPI2_5(%rip), %xmm1
	jne	.LBB2_10
	jp	.LBB2_10
# %bb.11:                               #   in Loop: Header=BB2_8 Depth=1
	movsd	(%rbp,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movl	$_ZSt4cout, %edi
	movsd	%xmm1, (%rsp)                   # 8-byte Spill
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.22, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	8(%rbp,%r14,8), %xmm0           # xmm0 = mem[0],zero
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.22, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movsd	16(%rbp,%r14,8), %xmm0          # xmm0 = mem[0],zero
	movq	%rbx, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
	movq	%rax, %rbx
	movl	$.L.str.22, %esi
	movl	$2, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	104(%rbp,%r14,8), %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
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	jmp	.LBB2_12
.LBB2_10:                               #   in Loop: Header=BB2_8 Depth=1
	movapd	%xmm1, %xmm0
.LBB2_12:                               #   in Loop: Header=BB2_8 Depth=1
	addq	$15, %r14
	addq	$8, %r13
	cmpq	$1500000, %r14                  # imm = 0x16E360
	jne	.LBB2_8
# %bb.13:                               # %.preheader.preheader
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	xorl	%eax, %eax
	movsd	16(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
.LBB2_14:                               # %.preheader
                                        # =>This Inner Loop Header: Depth=1
	movapd	%xmm2, %xmm0
	movsd	(%r15,%rax,8), %xmm2            # xmm2 = mem[0],zero
	maxsd	%xmm0, %xmm2
	incq	%rax
	cmpq	$100000, %rax                   # imm = 0x186A0
	jne	.LBB2_14
# %bb.15:
	divsd	48(%rsp), %xmm1                 # 8-byte Folded Reload
	movsd	%xmm1, 16(%rsp)                 # 8-byte Spill
	movl	$.L.str.23, %edi
	movl	%r12d, %esi
	xorl	%eax, %eax
	movsd	%xmm2, 8(%rsp)                  # 8-byte Spill
	callq	printf
	movl	$.L.str.24, %edi
	movl	44(%rsp), %esi                  # 4-byte Reload
	xorl	%eax, %eax
	callq	printf
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.L.str.25, %edi
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movb	$1, %al
	callq	printf
	movl	$.L.str.26, %edi
	movsd	(%rsp), %xmm0                   # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movb	$1, %al
	callq	printf
	movl	$_ZSt4cout, %edi
	movl	$.L.str.27, %esi
	movl	$41, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movl	$_ZSt4cout, %edi
	movsd	(%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
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.L.str.25, %edi
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movb	$1, %al
	callq	printf
	movl	$.Lstr.11, %edi
	callq	puts@PLT
	movl	$.L.str.28, %edi
	movsd	16(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movb	$1, %al
	callq	printf
	movq	32(%rsp), %rdi
	callq	hipFree
	movq	%rbp, %rdi
	callq	free
	callq	hipGetLastError
	testl	%eax, %eax
	je	.LBB2_17
# %bb.16:
	movl	$.L.str.29, %edi
	xorl	%eax, %eax
	callq	printf
.LBB2_17:
	xorl	%eax, %eax
	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_end2:
	.size	main, .Lfunc_end2-main
	.cfi_endproc
                                        # -- End function
	.p2align	4, 0x90                         # -- Begin function __hip_module_ctor
	.type	__hip_module_ctor,@function
__hip_module_ctor:                      # @__hip_module_ctor
	.cfi_startproc
# %bb.0:
	subq	$40, %rsp
	.cfi_def_cfa_offset 48
	movq	__hip_gpubin_handle(%rip), %rdi
	testq	%rdi, %rdi
	jne	.LBB3_2
# %bb.1:
	movl	$__hip_fatbin_wrapper, %edi
	callq	__hipRegisterFatBinary
	movq	%rax, %rdi
	movq	%rax, __hip_gpubin_handle(%rip)
.LBB3_2:
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z17verlet_integratorP9Particles, %esi
	movl	$.L__unnamed_1, %edx
	movl	$.L__unnamed_1, %ecx
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	movl	$__hip_module_dtor, %edi
	addq	$40, %rsp
	.cfi_def_cfa_offset 8
	jmp	atexit                          # TAILCALL
.Lfunc_end3:
	.size	__hip_module_ctor, .Lfunc_end3-__hip_module_ctor
	.cfi_endproc
                                        # -- End function
	.p2align	4, 0x90                         # -- Begin function __hip_module_dtor
	.type	__hip_module_dtor,@function
__hip_module_dtor:                      # @__hip_module_dtor
	.cfi_startproc
# %bb.0:
	movq	__hip_gpubin_handle(%rip), %rdi
	testq	%rdi, %rdi
	je	.LBB4_2
# %bb.1:
	pushq	%rax
	.cfi_def_cfa_offset 16
	callq	__hipUnregisterFatBinary
	movq	$0, __hip_gpubin_handle(%rip)
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
.LBB4_2:
	retq
.Lfunc_end4:
	.size	__hip_module_dtor, .Lfunc_end4-__hip_module_dtor
	.cfi_endproc
                                        # -- End function
	.type	_Z17verlet_integratorP9Particles,@object # @_Z17verlet_integratorP9Particles
	.section	.rodata,"a",@progbits
	.globl	_Z17verlet_integratorP9Particles
	.p2align	3, 0x0
_Z17verlet_integratorP9Particles:
	.quad	_Z32__device_stub__verlet_integratorP9Particles
	.size	_Z17verlet_integratorP9Particles, 8

	.type	.L.str.2,@object                # @.str.2
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str.2:
	.asciz	"px = %lf\n"
	.size	.L.str.2, 10

	.type	.L.str.3,@object                # @.str.3
.L.str.3:
	.asciz	"py = %lf\n"
	.size	.L.str.3, 10

	.type	.L.str.4,@object                # @.str.4
.L.str.4:
	.asciz	"pz = %lf\n"
	.size	.L.str.4, 10

	.type	.L.str.5,@object                # @.str.5
.L.str.5:
	.asciz	"vx = %lf\n"
	.size	.L.str.5, 10

	.type	.L.str.6,@object                # @.str.6
.L.str.6:
	.asciz	"vy = %lf\n"
	.size	.L.str.6, 10

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	"vz = %lf\n"
	.size	.L.str.7, 10

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"az (precision) "
	.size	.L.str.8, 16

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"Grid Size (GPU, AoS) = %d\n"
	.size	.L.str.11, 27

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"Block Size (GPU, AoS) = %d\n"
	.size	.L.str.12, 28

	.type	.L.str.13,@object               # @.str.13
.L.str.13:
	.asciz	"GPU Time for Verlet integration (GPU, AoS) = %lf\n"
	.size	.L.str.13, 50

	.type	.L.str.15,@object               # @.str.15
.L.str.15:
	.asciz	"Total Number of Atoms = %d\n"
	.size	.L.str.15, 28

	.type	.L.str.16,@object               # @.str.16
.L.str.16:
	.asciz	"Accounted Number of Atoms = %d\n"
	.size	.L.str.16, 32

	.type	.L.str.17,@object               # @.str.17
.L.str.17:
	.asciz	"Completed Atom Runs = %d\n"
	.size	.L.str.17, 26

	.type	.L.str.18,@object               # @.str.18
.L.str.18:
	.asciz	"Number of Escaped Atoms = %d\n"
	.size	.L.str.18, 30

	.type	.L.str.19,@object               # @.str.19
.L.str.19:
	.asciz	"Number of Trapped Atoms = %d\n"
	.size	.L.str.19, 30

	.type	.L.str.20,@object               # @.str.20
.L.str.20:
	.asciz	"Number of Running Atoms = %d\n"
	.size	.L.str.20, 30

	.type	.L.str.21,@object               # @.str.21
.L.str.21:
	.asciz	"Loading Efficiency (1e-4) = %lf\n"
	.size	.L.str.21, 33

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

	.type	.L.str.23,@object               # @.str.23
.L.str.23:
	.asciz	"Total number of fractional errors in energy : %d\n"
	.size	.L.str.23, 50

	.type	.L.str.24,@object               # @.str.24
.L.str.24:
	.asciz	"Number of fractional errors that are loaded: %d\n"
	.size	.L.str.24, 49

	.type	.L.str.25,@object               # @.str.25
.L.str.25:
	.asciz	"Fractional energy change max: %lf\n"
	.size	.L.str.25, 35

	.type	.L.str.26,@object               # @.str.26
.L.str.26:
	.asciz	"Fractional energy change min: %lf\n"
	.size	.L.str.26, 35

	.type	.L.str.27,@object               # @.str.27
.L.str.27:
	.asciz	"Fractional energy change min (precision) "
	.size	.L.str.27, 42

	.type	.L.str.28,@object               # @.str.28
.L.str.28:
	.asciz	"Average No. of Scattering Events for Loaded Atoms = %lf\n"
	.size	.L.str.28, 57

	.type	.L.str.29,@object               # @.str.29
.L.str.29:
	.asciz	"In what house, shall thy find solace? "
	.size	.L.str.29, 39

	.type	.L__unnamed_1,@object           # @0
.L__unnamed_1:
	.asciz	"_Z17verlet_integratorP9Particles"
	.size	.L__unnamed_1, 33

	.type	__hip_fatbin_wrapper,@object    # @__hip_fatbin_wrapper
	.section	.hipFatBinSegment,"a",@progbits
	.p2align	3, 0x0
__hip_fatbin_wrapper:
	.long	1212764230                      # 0x48495046
	.long	1                               # 0x1
	.quad	__hip_fatbin
	.quad	0
	.size	__hip_fatbin_wrapper, 24

	.type	__hip_gpubin_handle,@object     # @__hip_gpubin_handle
	.local	__hip_gpubin_handle
	.comm	__hip_gpubin_handle,8,8
	.section	.init_array,"aw",@init_array
	.p2align	3, 0x0
	.quad	__hip_module_ctor
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.type	.Lstr.1,@object                 # @str.1
	.section	.rodata.str1.1,"aMS",@progbits,1
.Lstr.1:
	.asciz	"Before Evolution:"
	.size	.Lstr.1, 18

	.type	.Lstr.3,@object                 # @str.3
.Lstr.3:
	.asciz	"Memory Allocation Begin"
	.size	.Lstr.3, 24

	.type	.Lstr.4,@object                 # @str.4
.Lstr.4:
	.asciz	"Memory Allocation End "
	.size	.Lstr.4, 23

	.type	.Lstr.6,@object                 # @str.6
.Lstr.6:
	.asciz	"After Evolution:"
	.size	.Lstr.6, 17

	.type	.Lstr.11,@object                # @str.11
.Lstr.11:
	.asciz	"----------------------------"
	.size	.Lstr.11, 29

	.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 _Z32__device_stub__verlet_integratorP9Particles
	.addrsig_sym __hip_module_ctor
	.addrsig_sym __hip_module_dtor
	.addrsig_sym _Z17verlet_integratorP9Particles
	.addrsig_sym _ZSt4cout
	.addrsig_sym __hip_fatbin
	.addrsig_sym __hip_fatbin_wrapper
	.addrsig_sym __hip_cuid_

	.text
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.protected	_Z17verlet_integratorP9Particles ; -- Begin function _Z17verlet_integratorP9Particles
	.globl	_Z17verlet_integratorP9Particles
	.p2align	8
	.type	_Z17verlet_integratorP9Particles,@function
_Z17verlet_integratorP9Particles:       ; @_Z17verlet_integratorP9Particles
; %bb.0:
	s_load_b32 s4, s[0:1], 0x14
	s_add_u32 s2, s0, 8
	s_addc_u32 s3, s1, 0
	s_mov_b32 s5, exec_lo
	s_waitcnt lgkmcnt(0)
	s_and_b32 s4, s4, 0xffff
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[12:13], null, s15, s4, v[0:1]
	v_cmpx_gt_i32_e32 0x186a0, v12
	s_cbranch_execz .LBB0_42
; %bb.1:                                ; %.preheader.lr.ph
	s_load_b32 s2, s[2:3], 0x0
	s_load_b64 s[0:1], s[0:1], 0x0
                                        ; implicit-def: $vgpr79 : SGPR spill to VGPR lane
	v_ashrrev_i32_e32 v55, 31, v12
	v_dual_mov_b32 v56, 3 :: v_dual_mov_b32 v57, 2
	v_dual_mov_b32 v58, 1 :: v_dual_mov_b32 v13, 0
	v_mov_b32_e32 v59, v12
	s_mov_b32 s10, 0x9999999a
	s_mov_b32 s12, 0x55555555
	s_mov_b32 s14, 0x968915a9
	s_mov_b32 s16, 0x4222de17
	s_mov_b32 s18, 0x3abe935a
	s_mov_b32 s20, 0x47e6c9c2
	s_mov_b32 s22, 0xcfa74449
	s_mov_b32 s24, 0x71bf3c30
	s_mov_b32 s26, 0x1c7792ce
	s_mov_b32 s28, 0x924920da
	s_mov_b32 s30, 0x9999999c
	s_mov_b32 s34, 0xfefa39ef
	s_mov_b32 s36, 0x3b39803f
	s_waitcnt lgkmcnt(0)
	v_writelane_b32 v79, s0, 0
	s_mov_b32 s40, 0xd5df274d
	s_mov_b32 s42, 0x652b82fe
	s_mov_b32 s48, 0xfca7ab0c
	s_mov_b32 s50, 0x6a5dcb37
	v_writelane_b32 v79, s1, 1
	s_mov_b32 s52, 0x623fde64
	s_mov_b32 s54, 0x7c89e6b0
	s_mov_b32 s56, 0x14761f6e
	s_mov_b32 s58, 0x1852b7b0
	s_mov_b32 s60, 0x11122322
	s_mov_b32 s62, 0x555502a1
	s_mov_b32 s64, 0x55555511
	s_mov_b32 s66, 11
	s_mov_b32 s74, 0xb508b2b2
	s_mov_b32 s82, 0xfae2db4a
	s_mov_b32 s78, 0x33145c00
	s_mov_b32 s80, 0x46cc5e42
	s_mov_b32 s94, 0xa17f65f6
	s_mov_b32 s8, 0x19f4ec90
	s_mov_b32 s100, 0x16c16967
	s_mov_b32 s86, 0xf9a43bb8
	s_mov_b32 s98, 0x796cde01
	s_mov_b32 s88, 0xceddb853
	s_mov_b32 s0, 0
	s_mov_b32 s11, 0x3fb99999
	s_mov_b32 s13, 0x3fe55555
	s_mov_b32 s15, 0x3fba6564
	s_mov_b32 s17, 0x3fbdee67
	s_mov_b32 s19, 0x3fbe25e4
	s_mov_b32 s21, 0x3fc110ef
	s_mov_b32 s23, 0x3fc3b13b
	s_mov_b32 s25, 0x3fc745d1
	s_mul_i32 s1, s2, s4
	s_mov_b32 s27, 0x3fcc71c7
	s_mov_b32 s29, 0x3fd24924
	s_mov_b32 s31, 0x3fd99999
	s_mov_b32 s35, 0x3fe62e42
	s_mov_b32 s37, 0x3c7abc9e
	s_mov_b32 s39, 0xbfe55555
	s_mov_b32 s41, 0x3c8543b0
	s_mov_b32 s43, 0x3ff71547
	s_mov_b32 s45, 0xbfe62e42
	s_mov_b32 s47, 0xbc7abc9e
	s_mov_b32 s49, 0x3e928af3
	s_mov_b32 s51, 0x3e5ade15
	s_mov_b32 s53, 0x3ec71dee
	s_mov_b32 s55, 0x3efa0199
	s_mov_b32 s57, 0x3f2a01a0
	s_mov_b32 s59, 0x3f56c16c
	s_mov_b32 s61, 0x3f811111
	s_mov_b32 s63, 0x3fa55555
	s_mov_b32 s65, 0x3fc55555
	s_mov_b32 s67, 0x3fe00000
	s_mov_b32 s73, 0x3c94b961
	s_mov_b32 s75, 0xbc94b961
	s_mov_b32 s85, 0x3ac5d18e
	s_mov_b32 s83, 0x3ab5d18e
	s_mov_b32 s93, 0x401921f9
	s_mov_b32 s97, 0x3ff921fb
	s_mov_b32 s79, 0xbc91a626
	s_mov_b32 s81, 0xbda907db
	s_mov_b32 s95, 0xbe927e4f
	s_mov_b32 s9, 0x3efa01a0
	s_mov_b32 s101, 0xbf56c16c
	s_mov_b32 s87, 0x3de5e0b2
	s_mov_b32 s99, 0x3ec71de3
	s_mov_b32 s89, 0x3f783dde
	s_mov_b32 s103, 0x3c91a626
	s_mov_b32 s68, 0x33145c07
	s_mov_b32 s70, 0x11110bb3
	s_mov_b32 s91, 0xbfc55555
	v_writelane_b32 v79, s1, 2
.LBB0_2:                                ; %.preheader
                                        ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB0_4 Depth 2
	v_writelane_b32 v79, s0, 3
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_readlane_b32 s0, v79, 0
	v_readlane_b32 s1, v79, 1
	v_mad_i64_i32 v[15:16], null, 0x78, v59, s[0:1]
	global_load_b32 v0, v[15:16], off offset:104
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e32 vcc_lo, 0, v0
	s_mov_b32 s0, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
	v_writelane_b32 v79, s0, 4
	s_and_b32 s0, s0, vcc_lo
	s_mov_b32 exec_lo, s0
	s_cbranch_execz .LBB0_41
; %bb.3:                                ; %.lr.ph
                                        ;   in Loop: Header=BB0_2 Depth=1
	global_load_b64 v[0:1], v[15:16], off offset:16
	v_add_co_u32 v17, vcc_lo, 0x68, v15
	v_add_co_ci_u32_e32 v18, vcc_lo, 0, v16, vcc_lo
	v_add_co_u32 v19, vcc_lo, v15, 24
	v_add_co_ci_u32_e32 v20, vcc_lo, 0, v16, vcc_lo
	v_add_co_u32 v21, vcc_lo, v15, 48
	v_add_co_ci_u32_e32 v22, vcc_lo, 0, v16, vcc_lo
	v_add_co_u32 v23, vcc_lo, 0x70, v15
	v_add_co_ci_u32_e32 v24, vcc_lo, 0, v16, vcc_lo
	v_add_co_u32 v25, vcc_lo, 0x58, v15
	v_add_co_ci_u32_e32 v26, vcc_lo, 0, v16, vcc_lo
	v_add_co_u32 v27, vcc_lo, 0x48, v15
	v_add_co_ci_u32_e32 v28, vcc_lo, 0, v16, vcc_lo
	s_mov_b32 s33, 1
	s_mov_b32 s104, 0
.LBB0_4:                                ;   Parent Loop BB0_2 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	global_load_b128 v[2:5], v[19:20], off offset:32
	s_mov_b32 s38, s12
	s_mov_b32 s44, s34
	s_mov_b32 s46, s36
	s_waitcnt vmcnt(0)
	v_mul_f64 v[8:9], v[4:5], 0.5
	global_load_b128 v[4:7], v[19:20], off offset:16
	v_mul_f64 v[2:3], v[2:3], 0.5
	s_waitcnt vmcnt(0)
	v_mul_f64 v[29:30], v[6:7], 0.5
	v_fma_f64 v[10:11], v[8:9], s[10:11], v[4:5]
	global_load_b128 v[4:7], v[19:20], off
	v_fma_f64 v[0:1], v[10:11], s[10:11], v[0:1]
	s_waitcnt vmcnt(0)
	v_fma_f64 v[8:9], v[2:3], s[10:11], v[6:7]
	v_fma_f64 v[2:3], v[29:30], s[10:11], v[4:5]
	global_load_b128 v[4:7], v[15:16], off
	global_store_b128 v[19:20], v[8:11], off offset:8
	s_waitcnt vmcnt(0)
	v_fma_f64 v[4:5], v[2:3], s[10:11], v[4:5]
	v_fma_f64 v[6:7], v[8:9], s[10:11], v[6:7]
	s_clause 0x1
	global_store_b128 v[15:16], v[4:7], off
	global_store_b128 v[15:16], v[0:3], off offset:16
	v_frexp_mant_f64_e64 v[29:30], |v[4:5]|
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[29:30]
	v_cndmask_b32_e64 v14, 0, 1, vcc_lo
	v_ldexp_f64 v[29:30], v[29:30], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], 1.0
	v_rcp_f64_e32 v[33:34], v[31:32]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_add_f64 v[35:36], v[31:32], -1.0
	v_add_f64 v[35:36], v[29:30], -v[35:36]
	v_add_f64 v[29:30], v[29:30], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[37:38], v[29:30], v[33:34]
	v_mul_f64 v[39:40], v[31:32], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[37:38], v[31:32], -v[39:40]
	v_fma_f64 v[31:32], v[37:38], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[39:40], v[31:32]
	v_add_f64 v[39:40], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[39:40], -v[31:32]
	v_add_f64 v[39:40], v[29:30], -v[35:36]
	v_add_f64 v[29:30], v[29:30], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[35:36]
	v_add_f64 v[29:30], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[39:40], v[29:30]
	v_mul_f64 v[29:30], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[37:38], v[29:30]
	v_add_f64 v[33:34], v[31:32], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_mul_f64 v[33:34], v[31:32], v[31:32]
	v_add_f64 v[37:38], v[29:30], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[31:32], v[31:32], -v[33:34]
	v_fma_f64 v[35:36], v[31:32], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[33:34], v[35:36]
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[35:36], -v[33:34]
	v_fma_f64 v[35:36], v[37:38], s[16:17], s[14:15]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[20:21]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[24:25]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[28:29]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[39:40], v[37:38], v[35:36]
	v_fma_f64 v[41:42], v[37:38], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], v[41:42]
	v_mul_f64 v[41:42], v[31:32], v[37:38]
	v_fma_f64 v[43:44], v[37:38], v[31:32], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[37:38], v[37:38], v[29:30], v[43:44]
	v_add_f64 v[43:44], v[39:40], v[35:36]
	v_ldexp_f64 v[29:30], v[29:30], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[33:34], v[33:34], v[31:32], v[37:38]
	v_add_f64 v[39:40], v[43:44], -v[39:40]
	v_ldexp_f64 v[31:32], v[31:32], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[39:40], v[43:44], s[12:13]
	v_add_f64 v[35:36], v[35:36], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[39:40], s[38:39]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[37:38], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], -v[37:38]
	v_add_f64 v[35:36], v[35:36], v[39:40]
	v_add_f64 v[39:40], v[41:42], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[43:44], v[39:40], v[37:38]
	v_fma_f64 v[45:46], v[39:40], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[39:40], v[35:36], v[45:46]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	v_add_f64 v[33:34], v[33:34], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[37:38], v[35:36]
	v_frexp_mant_f64_e64 v[35:36], |v[6:7]|
	v_cmp_gt_f64_e64 s0, s[12:13], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v14, 0, 1, s0
	v_ldexp_f64 v[35:36], v[35:36], v14
	v_frexp_exp_i32_f64_e32 v14, v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[35:36], 1.0
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[39:40], v[37:38]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[41:42], -v[37:38], v[39:40], 1.0
	v_fma_f64 v[39:40], v[41:42], v[39:40], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], -v[37:38], v[39:40], 1.0
	v_fma_f64 v[39:40], v[41:42], v[39:40], v[39:40]
	v_add_f64 v[41:42], v[37:38], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[35:36], -v[41:42]
	v_add_f64 v[35:36], v[35:36], -1.0
	v_mul_f64 v[45:46], v[35:36], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[47:48], v[37:38], v[45:46]
	v_fma_f64 v[37:38], v[45:46], v[37:38], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[45:46], v[41:42], v[37:38]
	v_add_f64 v[41:42], v[47:48], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[41:42], -v[47:48]
	v_add_f64 v[37:38], v[47:48], -v[37:38]
	v_add_f64 v[47:48], v[35:36], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[47:48]
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[37:38], v[35:36]
	v_add_f64 v[35:36], v[47:48], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[39:40], v[35:36]
	v_add_f64 v[37:38], v[45:46], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[37:38], -v[45:46]
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_mul_f64 v[39:40], v[37:38], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[45:46], v[35:36], v[35:36]
	v_fma_f64 v[41:42], v[37:38], v[37:38], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[37:38], v[45:46], v[41:42]
	v_add_f64 v[45:46], v[39:40], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[45:46], -v[39:40]
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	v_fma_f64 v[41:42], v[45:46], s[16:17], s[14:15]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[18:19]
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[20:21]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[22:23]
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[24:25]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[26:27]
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[28:29]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[45:46], v[41:42], s[30:31]
	v_mul_f64 v[47:48], v[45:46], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[45:46], v[41:42], -v[47:48]
	v_fma_f64 v[41:42], v[39:40], v[41:42], v[49:50]
	v_mul_f64 v[49:50], v[37:38], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[51:52], v[45:46], v[37:38], -v[49:50]
	v_fma_f64 v[45:46], v[45:46], v[35:36], v[51:52]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[47:48], v[41:42]
	v_fma_f64 v[39:40], v[39:40], v[37:38], v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[51:52], -v[47:48]
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	v_add_f64 v[47:48], v[51:52], s[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[41:42], s[40:41]
	v_add_f64 v[53:54], v[47:48], s[38:39]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[51:52], -v[53:54]
	v_add_f64 v[41:42], v[41:42], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[47:48], v[41:42]
	v_add_f64 v[47:48], v[47:48], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[41:42], v[47:48]
	v_add_f64 v[47:48], v[49:50], v[39:40]
	v_mul_f64 v[51:52], v[47:48], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[53:54], v[47:48], v[45:46], -v[51:52]
	v_fma_f64 v[41:42], v[47:48], v[41:42], v[53:54]
	v_add_f64 v[47:48], v[47:48], -v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], -v[47:48]
	v_fma_f64 v[39:40], v[39:40], v[45:46], v[41:42]
	v_add_f64 v[41:42], v[43:44], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[41:42], -v[43:44]
	v_add_f64 v[33:34], v[33:34], -v[43:44]
	v_add_f64 v[43:44], v[31:32], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[33:34]
	v_add_f64 v[31:32], v[43:44], -v[31:32]
	v_cvt_f64_i32_e32 v[33:34], v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[41:42], -v[31:32]
	v_mul_f64 v[41:42], v[33:34], s[34:35]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_fma_f64 v[45:46], v[33:34], s[34:35], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], s[36:37], v[45:46]
	v_add_f64 v[31:32], v[41:42], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[31:32], -v[41:42]
	v_add_f64 v[33:34], v[33:34], -v[41:42]
	v_add_f64 v[41:42], v[43:44], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[45:46], v[31:32], v[41:42]
	v_add_f64 v[43:44], v[41:42], -v[43:44]
	v_add_f64 v[47:48], v[45:46], -v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[43:44]
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	v_add_f64 v[47:48], v[45:46], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[47:48]
	v_add_f64 v[31:32], v[41:42], v[31:32]
	v_add_f64 v[41:42], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[41:42], -v[33:34]
	v_add_f64 v[31:32], v[41:42], v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[43:44]
	v_add_f64 v[43:44], v[41:42], -v[43:44]
	v_add_f64 v[33:34], v[33:34], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], v[33:34]
	v_add_f64 v[33:34], v[45:46], v[31:32]
	v_add_f64 v[41:42], v[33:34], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[41:42]
	v_add_f64 v[29:30], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[33:34], v[29:30]
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[31:32], v[31:32]
	v_fma_f64 v[31:32], v[31:32], 2.0, -v[33:34]
	v_cmp_class_f64_e64 vcc_lo, v[33:34], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], 2.0, v[31:32]
	v_add_f64 v[31:32], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v42, v32, v34 :: v_dual_cndmask_b32 v41, v31, v33
	v_add_f64 v[31:32], v[31:32], -v[33:34]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[41:42]|
	v_cmp_ngt_f64_e64 s1, 0xc090cc00, v[41:42]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_mul_f64 v[31:32], v[41:42], s[42:43]
	v_dual_cndmask_b32 v30, 0, v30 :: v_dual_cndmask_b32 v29, 0, v29
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[31:32], v[31:32]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[41:42]
	v_fma_f64 v[33:34], v[31:32], s[44:45], v[41:42]
	v_cvt_i32_f64_e32 v14, v[31:32]
	s_and_b32 s2, s1, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], s[46:47], v[33:34]
	v_fma_f64 v[41:42], v[33:34], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[52:53]
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[56:57]
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[60:61]
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[64:65]
	v_fma_f64 v[41:42], v[33:34], v[41:42], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[33:34], v[41:42], 1.0
	v_fma_f64 v[33:34], v[33:34], v[41:42], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[31:32], v[33:34], v14
	v_ldexp_f64 v[33:34], v[37:38], 1
	v_cndmask_b32_e32 v14, 0x7ff00000, v32, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v31, 0, v31, s2
	v_cndmask_b32_e64 v32, 0, v14, s1
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[29:30], v[31:32], v[29:30], v[31:32]
	v_cmp_class_f64_e64 vcc_lo, v[31:32], 0x204
	v_dual_cndmask_b32 v14, v30, v32 :: v_dual_cndmask_b32 v43, v29, v31
	v_add_f64 v[29:30], v[51:52], v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v14, 0x7fffffff, v14
	v_add_f64 v[37:38], v[33:34], v[29:30]
	v_add_f64 v[31:32], v[29:30], -v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	v_add_f64 v[31:32], v[39:40], -v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_ldexp_f64 v[33:34], v[35:36], 1
	v_add_f64 v[31:32], v[33:34], v[31:32]
	v_frexp_exp_i32_f64_e32 v33, v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[31:32], v[29:30]
	v_subrev_co_ci_u32_e64 v33, vcc_lo, 0, v33, s0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_f64_i32_e32 v[33:34], v33
	v_mul_f64 v[35:36], v[33:34], s[34:35]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[33:34], s[34:35], -v[35:36]
	v_fma_f64 v[33:34], v[33:34], s[36:37], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[35:36], v[33:34]
	v_add_f64 v[35:36], v[31:32], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], -v[35:36]
	v_add_f64 v[35:36], v[37:38], v[29:30]
	v_add_f64 v[39:40], v[31:32], v[35:36]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], -v[31:32]
	v_add_f64 v[29:30], v[29:30], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_add_f64 v[41:42], v[39:40], -v[41:42]
	v_add_f64 v[31:32], v[31:32], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[35:36], v[31:32]
	v_add_f64 v[35:36], v[33:34], v[29:30]
	v_add_f64 v[37:38], v[35:36], -v[33:34]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[35:36], v[31:32]
	v_add_f64 v[29:30], v[29:30], -v[37:38]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	v_add_f64 v[29:30], v[29:30], v[33:34]
	v_add_f64 v[33:34], v[39:40], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[33:34], -v[39:40]
	v_add_f64 v[31:32], v[31:32], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_add_f64 v[31:32], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[31:32], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[31:32], v[31:32], 2.0, -v[33:34]
	v_cmp_class_f64_e64 vcc_lo, v[33:34], 0x204
	v_fma_f64 v[29:30], v[29:30], 2.0, v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[33:34], v[29:30]
	v_dual_cndmask_b32 v36, v32, v34 :: v_dual_cndmask_b32 v35, v31, v33
	v_add_f64 v[31:32], v[31:32], -v[33:34]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[35:36]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[35:36]
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_mul_f64 v[31:32], v[35:36], s[42:43]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v30, 0, v30 :: v_dual_cndmask_b32 v29, 0, v29
	v_rndne_f64_e32 v[31:32], v[31:32]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], s[44:45], v[35:36]
	s_and_b32 s1, s0, vcc_lo
	v_fma_f64 v[33:34], v[31:32], s[46:47], v[33:34]
	v_cvt_i32_f64_e32 v31, v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], s[50:51], s[48:49]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[54:55]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[58:59]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[62:63]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[66:67]
	v_fma_f64 v[35:36], v[33:34], v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[35:36], 1.0
	v_ldexp_f64 v[31:32], v[33:34], v31
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v32, 0x7ff00000, v32, vcc_lo
	v_cndmask_b32_e64 v31, 0, v31, s1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v32, 0, v32, s0
	v_cmp_neq_f64_e64 s0, 0, v[4:5]
	v_fma_f64 v[29:30], v[31:32], v[29:30], v[31:32]
	v_cmp_class_f64_e64 vcc_lo, v[31:32], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v32, v30, v32 :: v_dual_cndmask_b32 v31, v29, v31
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[4:5]|
	v_cndmask_b32_e32 v14, 0x7ff00000, v14, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v29, 0, v43, vcc_lo
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[6:7]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v30, 0, v14, s0
	v_cmp_neq_f64_e64 s0, 0, v[6:7]
	v_and_b32_e32 v14, 0x7fffffff, v32
	v_cndmask_b32_e32 v14, 0x7ff00000, v14, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v31, 0, v31, vcc_lo
	v_cndmask_b32_e64 v32, 0, v14, s0
	s_mov_b32 s0, 0x47ae147b
	s_mov_b32 s1, 0x3fb47ae1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_cmp_gt_f64_e32 vcc_lo, 0x10000000, v[29:30]
	v_cndmask_b32_e64 v14, 0, 1, vcc_lo
	v_cndmask_b32_e64 v8, 0, 0xffffff80, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b32_e32 v14, 8, v14
	v_ldexp_f64 v[31:32], v[29:30], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)
	v_rsq_f64_e32 v[33:34], v[31:32]
	v_cmp_class_f64_e64 vcc_lo, v[31:32], 0x260
	s_waitcnt_depctr 0xfff
	v_mul_f64 v[35:36], v[31:32], v[33:34]
	v_mul_f64 v[33:34], v[33:34], 0.5
	v_fma_f64 v[37:38], -v[33:34], v[35:36], 0.5
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[35:36], v[35:36], v[37:38], v[35:36]
	v_fma_f64 v[33:34], v[33:34], v[37:38], v[33:34]
	v_fma_f64 v[37:38], -v[35:36], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[33:34], v[35:36]
	v_fma_f64 v[37:38], -v[35:36], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[37:38], v[33:34], v[35:36]
	v_ldexp_f64 v[8:9], v[33:34], v8
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v35, v8, v31 :: v_dual_cndmask_b32 v36, v9, v32
	v_fma_f64 v[8:9], v[0:1], s[0:1], 0x407f4000
	s_mov_b32 s0, exec_lo
	v_cmpx_gt_f64_e32 v[35:36], v[8:9]
	s_cbranch_execz .LBB0_6
; %bb.5:                                ;   in Loop: Header=BB0_4 Depth=2
	global_store_b32 v[17:18], v56, off
.LBB0_6:                                ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s0
	v_mul_f64 v[4:5], v[4:5], -4.0
	v_mul_f64 v[2:3], v[6:7], -4.0
	v_mul_f64 v[31:32], v[29:30], -2.0
                                        ; implicit-def: $vgpr33_vgpr34
                                        ; implicit-def: $vgpr10_vgpr11
                                        ; implicit-def: $vgpr6_vgpr7
	s_mov_b32 s0, exec_lo
	v_cmpx_nlt_f64_e32 0, v[0:1]
	s_xor_b32 s1, exec_lo, s0
	s_cbranch_execz .LBB0_16
; %bb.7:                                ;   in Loop: Header=BB0_4 Depth=2
	s_delay_alu instid0(VALU_DEP_2)
	v_div_scale_f64 v[6:7], null, 0x40710400, 0x40710400, v[31:32]
	s_mov_b32 s44, s34
	s_mov_b32 s46, s36
	s_mov_b32 s2, 0x601188cb
	s_mov_b32 s3, 0x3e24161f
	s_mov_b32 s72, s74
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_mul_f64 v[4:5], v[4:5], s[72:73]
	v_mul_f64 v[2:3], v[2:3], s[72:73]
	v_rcp_f64_e32 v[8:9], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	v_div_scale_f64 v[10:11], vcc_lo, v[31:32], 0x40710400, v[31:32]
	v_mul_f64 v[29:30], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], -v[6:7], v[29:30], v[10:11]
	v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fixup_f64 v[6:7], v[6:7], 0x40710400, v[31:32]
	v_mul_f64 v[8:9], v[6:7], s[42:43]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[6:7]
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[6:7]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[8:9], v[8:9]
	v_fma_f64 v[10:11], v[8:9], s[44:45], v[6:7]
	v_cvt_i32_f64_e32 v14, v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[8:9], s[46:47], v[10:11]
	v_fma_f64 v[8:9], v[10:11], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[52:53]
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[56:57]
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[60:61]
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[64:65]
	v_fma_f64 v[8:9], v[10:11], v[8:9], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[10:11], v[8:9], 1.0
	v_fma_f64 v[8:9], v[10:11], v[8:9], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[8:9], v[8:9], v14
	v_mul_f64 v[8:9], v[8:9], s[2:3]
	s_mov_b32 s2, 0x4e4fc1b5
	s_mov_b32 s3, 0x3b47341c
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v6, 0x7ff00000, v9, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v33, 0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v34, 0, v6, s0
	s_mov_b32 s0, exec_lo
	v_mul_f64 v[4:5], v[4:5], v[33:34]
	v_mul_f64 v[2:3], v[2:3], v[33:34]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_scale_f64 v[6:7], null, s[2:3], s[2:3], v[4:5]
	v_rcp_f64_e32 v[8:9], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	v_div_scale_f64 v[10:11], vcc_lo, v[4:5], s[2:3], v[4:5]
	v_mul_f64 v[29:30], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], -v[6:7], v[29:30], v[10:11]
	v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[29:30]
	v_div_scale_f64 v[8:9], null, s[2:3], s[2:3], v[2:3]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_div_fixup_f64 v[6:7], v[6:7], s[2:3], v[4:5]
	v_rcp_f64_e32 v[10:11], v[8:9]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[29:30], -v[8:9], v[10:11], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[10:11], v[29:30], v[10:11]
	v_fma_f64 v[29:30], -v[8:9], v[10:11], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[10:11], v[29:30], v[10:11]
	v_div_scale_f64 v[29:30], vcc_lo, v[2:3], s[2:3], v[2:3]
	v_mul_f64 v[31:32], v[29:30], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], -v[8:9], v[31:32], v[29:30]
	v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
	v_div_fixup_f64 v[8:9], v[8:9], s[2:3], v[2:3]
	s_mov_b32 s2, 0x66666666
	s_mov_b32 s3, 0x40366666
	v_cmpx_ngt_f64_e32 s[2:3], v[35:36]
	s_xor_b32 s0, exec_lo, s0
	s_cbranch_execz .LBB0_11
; %bb.8:                                ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_lt_f64_e32 vcc_lo, s[2:3], v[35:36]
	s_and_saveexec_b32 s2, vcc_lo
	s_cbranch_execz .LBB0_10
; %bb.9:                                ;   in Loop: Header=BB0_4 Depth=2
	global_store_b32 v[17:18], v57, off
.LBB0_10:                               ; %Flow227
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s2
                                        ; implicit-def: $vgpr0_vgpr1
.LBB0_11:                               ; %Flow229
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_saveexec_b32 s0, s0
	s_mov_b32 s2, 0xf054bc45
	s_mov_b32 s3, 0xbee49004
	s_delay_alu instid0(SALU_CYCLE_1)
	v_dual_mov_b32 v11, s3 :: v_dual_mov_b32 v10, s2
	s_xor_b32 exec_lo, exec_lo, s0
	s_cbranch_execz .LBB0_15
; %bb.12:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s2, exec_lo
	v_cmpx_gt_f64_e32 0xc0590000, v[0:1]
	s_cbranch_execz .LBB0_14
; %bb.13:                               ;   in Loop: Header=BB0_4 Depth=2
	global_store_b32 v[17:18], v58, off
.LBB0_14:                               ; %Flow228
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s2
	s_mov_b32 s2, 0xf054bc45
	s_mov_b32 s3, 0xbee49004
	s_delay_alu instid0(SALU_CYCLE_1)
	v_dual_mov_b32 v11, s3 :: v_dual_mov_b32 v10, s2
.LBB0_15:                               ; %Flow230
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s0
                                        ; implicit-def: $vgpr0_vgpr1
                                        ; implicit-def: $vgpr31_vgpr32
                                        ; implicit-def: $vgpr4_vgpr5
                                        ; implicit-def: $vgpr2_vgpr3
                                        ; implicit-def: $vgpr29_vgpr30
.LBB0_16:                               ; %Flow231
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s3, s1
	s_cbranch_execz .LBB0_18
; %bb.17:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s0, 0x80b5f1fd
	s_mov_b32 s1, 0x4090c33e
	s_mov_b32 s38, s12
	v_div_scale_f64 v[6:7], null, s[0:1], s[0:1], v[0:1]
	s_mov_b32 s44, s34
	s_mov_b32 s46, s36
	s_mov_b32 s4, 0x601188cb
	s_mov_b32 s5, 0x3e24161f
	s_mov_b32 s72, s74
	s_mov_b32 s84, s82
	v_mul_f64 v[4:5], v[4:5], s[72:73]
	v_mul_f64 v[2:3], v[2:3], s[72:73]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[8:9], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	v_div_scale_f64 v[10:11], vcc_lo, v[0:1], s[0:1], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[10:11], v[8:9]
	v_fma_f64 v[6:7], -v[6:7], v[33:34], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[33:34]
	v_div_fixup_f64 v[6:7], v[6:7], s[0:1], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_frexp_mant_f64_e64 v[8:9], |v[6:7]|
	v_frexp_exp_i32_f64_e32 v14, v[6:7]
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[8:9]
	v_cndmask_b32_e64 v10, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	v_ldexp_f64 v[8:9], v[8:9], v10
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[8:9], 1.0
	v_rcp_f64_e32 v[33:34], v[10:11]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[10:11], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_fma_f64 v[35:36], -v[10:11], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_add_f64 v[35:36], v[10:11], -1.0
	v_add_f64 v[35:36], v[8:9], -v[35:36]
	v_add_f64 v[8:9], v[8:9], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[37:38], v[8:9], v[33:34]
	v_mul_f64 v[39:40], v[10:11], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[37:38], v[10:11], -v[39:40]
	v_fma_f64 v[10:11], v[37:38], v[35:36], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[39:40], v[10:11]
	v_add_f64 v[39:40], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[39:40], -v[10:11]
	v_add_f64 v[39:40], v[8:9], -v[35:36]
	v_add_f64 v[8:9], v[8:9], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], -v[35:36]
	v_add_f64 v[8:9], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[39:40], v[8:9]
	v_mul_f64 v[8:9], v[33:34], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[37:38], v[8:9]
	v_add_f64 v[33:34], v[10:11], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[8:9], -v[33:34]
	v_mul_f64 v[33:34], v[10:11], v[10:11]
	v_add_f64 v[37:38], v[8:9], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[10:11], v[10:11], -v[33:34]
	v_fma_f64 v[35:36], v[10:11], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[33:34], v[35:36]
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[35:36], -v[33:34]
	v_fma_f64 v[35:36], v[37:38], s[16:17], s[14:15]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[20:21]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[24:25]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[28:29]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[39:40], v[37:38], v[35:36]
	v_fma_f64 v[41:42], v[37:38], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], v[41:42]
	v_mul_f64 v[41:42], v[10:11], v[37:38]
	v_fma_f64 v[43:44], v[37:38], v[10:11], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[37:38], v[37:38], v[8:9], v[43:44]
	v_add_f64 v[43:44], v[39:40], v[35:36]
	v_ldexp_f64 v[8:9], v[8:9], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[33:34], v[33:34], v[10:11], v[37:38]
	v_add_f64 v[39:40], v[43:44], -v[39:40]
	v_ldexp_f64 v[10:11], v[10:11], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[39:40], v[43:44], s[12:13]
	v_add_f64 v[35:36], v[35:36], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[39:40], s[38:39]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[37:38], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], -v[37:38]
	v_add_f64 v[35:36], v[35:36], v[39:40]
	v_add_f64 v[39:40], v[41:42], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[43:44], v[39:40], v[37:38]
	v_fma_f64 v[45:46], v[39:40], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[39:40], v[35:36], v[45:46]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	v_add_f64 v[33:34], v[33:34], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[37:38], v[35:36]
	v_add_f64 v[35:36], v[43:44], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[35:36], -v[43:44]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	v_add_f64 v[37:38], v[10:11], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[8:9], v[33:34]
	v_add_f64 v[10:11], v[37:38], -v[10:11]
	v_cvt_f64_i32_e32 v[33:34], v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[35:36], -v[10:11]
	v_mul_f64 v[35:36], v[33:34], s[34:35]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[8:9], v[10:11]
	v_fma_f64 v[39:40], v[33:34], s[34:35], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], s[36:37], v[39:40]
	v_add_f64 v[10:11], v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[10:11], -v[35:36]
	v_add_f64 v[33:34], v[33:34], -v[35:36]
	v_add_f64 v[35:36], v[37:38], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[10:11], v[35:36]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	v_add_f64 v[41:42], v[39:40], -v[10:11]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[8:9], -v[37:38]
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_add_f64 v[41:42], v[39:40], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], -v[41:42]
	v_add_f64 v[10:11], v[35:36], v[10:11]
	v_add_f64 v[35:36], v[33:34], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[37:38], v[35:36], -v[33:34]
	v_add_f64 v[10:11], v[35:36], v[10:11]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], -v[37:38]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], v[33:34]
	v_add_f64 v[33:34], v[39:40], v[10:11]
	v_add_f64 v[35:36], v[33:34], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], -v[35:36]
	v_add_f64 v[8:9], v[8:9], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[33:34], v[8:9]
	v_add_f64 v[33:34], v[10:11], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], -v[33:34]
	v_add_f64 v[33:34], v[10:11], v[10:11]
	v_fma_f64 v[10:11], v[10:11], 2.0, -v[33:34]
	v_cmp_class_f64_e64 vcc_lo, v[33:34], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[8:9], 2.0, v[10:11]
	v_add_f64 v[10:11], v[33:34], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v36, v11, v34 :: v_dual_cndmask_b32 v35, v10, v33
	v_add_f64 v[10:11], v[10:11], -v[33:34]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[35:36]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[8:9], -v[10:11]
	v_mul_f64 v[10:11], v[35:36], s[42:43]
	v_dual_cndmask_b32 v9, 0, v9 :: v_dual_cndmask_b32 v8, 0, v8
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[10:11], v[10:11]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[35:36]
	v_fma_f64 v[33:34], v[10:11], s[44:45], v[35:36]
	s_and_b32 s1, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[10:11], s[46:47], v[33:34]
	v_cvt_i32_f64_e32 v10, v[10:11]
	v_fma_f64 v[35:36], v[33:34], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[52:53]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[56:57]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[60:61]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[64:65]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], 1.0
	v_fma_f64 v[33:34], v[33:34], v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[10:11], v[33:34], v10
	v_cndmask_b32_e32 v11, 0x7ff00000, v11, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v10, 0, v10, s1
	v_cndmask_b32_e64 v11, 0, v11, s0
	v_cmp_neq_f64_e64 s0, 0, v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[8:9], v[10:11], v[8:9], v[10:11]
	v_cmp_class_f64_e64 vcc_lo, v[10:11], 0x204
	v_dual_cndmask_b32 v9, v9, v11 :: v_dual_cndmask_b32 v8, v8, v10
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[6:7]|
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], |v[8:9]|, 1.0
	s_and_b32 s1, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	v_cndmask_b32_e64 v6, 0, v6, s1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v7, 0x3ff00000, v7, s0
	v_cmp_gt_f64_e32 vcc_lo, 0x10000000, v[6:7]
	v_cndmask_b32_e64 v8, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b32_e32 v8, 8, v8
	v_ldexp_f64 v[6:7], v[6:7], v8
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_rsq_f64_e32 v[8:9], v[6:7]
	s_waitcnt_depctr 0xfff
	v_mul_f64 v[10:11], v[6:7], v[8:9]
	v_mul_f64 v[8:9], v[8:9], 0.5
	v_fma_f64 v[33:34], -v[8:9], v[10:11], 0.5
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[10:11], v[10:11], v[33:34], v[10:11]
	v_fma_f64 v[8:9], v[8:9], v[33:34], v[8:9]
	v_fma_f64 v[33:34], -v[10:11], v[10:11], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[33:34], v[8:9], v[10:11]
	v_fma_f64 v[33:34], -v[10:11], v[10:11], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_fma_f64 v[8:9], v[33:34], v[8:9], v[10:11]
	v_cndmask_b32_e64 v10, 0, 0xffffff80, vcc_lo
	v_cmp_class_f64_e64 vcc_lo, v[6:7], 0x260
	v_ldexp_f64 v[8:9], v[8:9], v10
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v7, v9, v7 :: v_dual_cndmask_b32 v6, v8, v6
	v_mul_f64 v[10:11], 0x40308000, v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_frexp_mant_f64_e64 v[6:7], |v[10:11]|
	v_frexp_exp_i32_f64_e32 v14, v[10:11]
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[6:7]
	v_cndmask_b32_e64 v8, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	v_ldexp_f64 v[6:7], v[6:7], v8
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[6:7], 1.0
	v_rcp_f64_e32 v[33:34], v[8:9]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[8:9], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_fma_f64 v[35:36], -v[8:9], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_add_f64 v[35:36], v[8:9], -1.0
	v_add_f64 v[35:36], v[6:7], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[37:38], v[6:7], v[33:34]
	v_mul_f64 v[39:40], v[8:9], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], v[37:38], v[8:9], -v[39:40]
	v_fma_f64 v[8:9], v[37:38], v[35:36], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[39:40], v[8:9]
	v_add_f64 v[39:40], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[39:40], -v[8:9]
	v_add_f64 v[39:40], v[6:7], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[35:36]
	v_add_f64 v[6:7], v[8:9], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[39:40], v[6:7]
	v_mul_f64 v[6:7], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[37:38], v[6:7]
	v_add_f64 v[33:34], v[8:9], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], -v[33:34]
	v_mul_f64 v[33:34], v[8:9], v[8:9]
	v_add_f64 v[37:38], v[6:7], v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[8:9], v[8:9], -v[33:34]
	v_fma_f64 v[35:36], v[8:9], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[33:34], v[35:36]
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[35:36], -v[33:34]
	v_fma_f64 v[35:36], v[37:38], s[16:17], s[14:15]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[20:21]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[24:25]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[28:29]
	v_fma_f64 v[35:36], v[37:38], v[35:36], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[39:40], v[37:38], v[35:36]
	v_fma_f64 v[41:42], v[37:38], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], v[41:42]
	v_mul_f64 v[41:42], v[8:9], v[37:38]
	v_fma_f64 v[43:44], v[37:38], v[8:9], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[37:38], v[37:38], v[6:7], v[43:44]
	v_add_f64 v[43:44], v[39:40], v[35:36]
	v_ldexp_f64 v[6:7], v[6:7], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[33:34], v[33:34], v[8:9], v[37:38]
	v_add_f64 v[39:40], v[43:44], -v[39:40]
	v_ldexp_f64 v[8:9], v[8:9], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[39:40], v[43:44], s[12:13]
	v_add_f64 v[35:36], v[35:36], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[39:40], s[38:39]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[37:38], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], -v[37:38]
	v_add_f64 v[35:36], v[35:36], v[39:40]
	v_add_f64 v[39:40], v[41:42], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[43:44], v[39:40], v[37:38]
	v_fma_f64 v[45:46], v[39:40], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[39:40], v[35:36], v[45:46]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	v_add_f64 v[33:34], v[33:34], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[37:38], v[35:36]
	v_add_f64 v[35:36], v[43:44], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[35:36], -v[43:44]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	v_add_f64 v[37:38], v[8:9], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], v[33:34]
	v_add_f64 v[8:9], v[37:38], -v[8:9]
	v_cvt_f64_i32_e32 v[33:34], v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[8:9], v[35:36], -v[8:9]
	v_mul_f64 v[35:36], v[33:34], s[34:35]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], v[8:9]
	v_fma_f64 v[39:40], v[33:34], s[34:35], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], s[36:37], v[39:40]
	v_add_f64 v[8:9], v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[8:9], -v[35:36]
	v_add_f64 v[33:34], v[33:34], -v[35:36]
	v_add_f64 v[35:36], v[37:38], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[8:9], v[35:36]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	v_add_f64 v[41:42], v[39:40], -v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], -v[37:38]
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_add_f64 v[41:42], v[39:40], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], -v[41:42]
	v_add_f64 v[8:9], v[35:36], v[8:9]
	v_add_f64 v[35:36], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[37:38], v[35:36], -v[33:34]
	v_add_f64 v[8:9], v[35:36], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[37:38]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[33:34]
	v_add_f64 v[33:34], v[39:40], v[8:9]
	v_add_f64 v[35:36], v[33:34], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[8:9], -v[35:36]
	v_add_f64 v[6:7], v[6:7], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[8:9], v[33:34], v[6:7]
	v_add_f64 v[33:34], v[8:9], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[33:34]
	v_add_f64 v[33:34], v[8:9], v[8:9]
	v_fma_f64 v[8:9], v[8:9], 2.0, -v[33:34]
	v_cmp_class_f64_e64 vcc_lo, v[33:34], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[6:7], 2.0, v[8:9]
	v_add_f64 v[8:9], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v36, v9, v34 :: v_dual_cndmask_b32 v35, v8, v33
	v_add_f64 v[8:9], v[8:9], -v[33:34]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[35:36]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], -v[8:9]
	v_mul_f64 v[8:9], v[35:36], s[42:43]
	v_dual_cndmask_b32 v7, 0, v7 :: v_dual_cndmask_b32 v6, 0, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[8:9], v[8:9]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[35:36]
	v_fma_f64 v[33:34], v[8:9], s[44:45], v[35:36]
	s_and_b32 s1, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[8:9], s[46:47], v[33:34]
	v_cvt_i32_f64_e32 v8, v[8:9]
	v_fma_f64 v[35:36], v[33:34], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[52:53]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[56:57]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[60:61]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[64:65]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], 1.0
	v_fma_f64 v[33:34], v[33:34], v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[8:9], v[33:34], v8
	v_cndmask_b32_e32 v9, 0x7ff00000, v9, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v8, 0, v8, s1
	v_cndmask_b32_e64 v9, 0, v9, s0
	v_cmp_neq_f64_e64 s0, 0, v[10:11]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[8:9], v[6:7], v[8:9]
	v_cmp_class_f64_e64 vcc_lo, v[8:9], 0x204
	v_dual_cndmask_b32 v7, v7, v9 :: v_dual_cndmask_b32 v6, v6, v8
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[10:11]|
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v7, 0x7fffffff, v7
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v6, 0, v6, vcc_lo
	v_cndmask_b32_e64 v7, 0, v7, s0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_scale_f64 v[8:9], null, v[6:7], v[6:7], v[31:32]
	v_rcp_f64_e32 v[33:34], v[8:9]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[8:9], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[35:36], v[33:34]
	v_fma_f64 v[35:36], -v[8:9], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[35:36], v[33:34]
	v_div_scale_f64 v[35:36], vcc_lo, v[31:32], v[6:7], v[31:32]
	v_mul_f64 v[37:38], v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], -v[8:9], v[37:38], v[35:36]
	v_div_fmas_f64 v[8:9], v[8:9], v[33:34], v[37:38]
	v_div_scale_f64 v[33:34], null, v[10:11], v[10:11], 0x40308000
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_div_fixup_f64 v[8:9], v[8:9], v[6:7], v[31:32]
	v_rcp_f64_e32 v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_2)
	v_mul_f64 v[31:32], v[8:9], s[42:43]
	v_cmp_ngt_f64_e64 s2, 0xc090cc00, v[8:9]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[37:38], -v[33:34], v[35:36], 1.0
	v_rndne_f64_e32 v[31:32], v[31:32]
	v_fma_f64 v[35:36], v[35:36], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], -v[33:34], v[35:36], 1.0
	v_fma_f64 v[35:36], v[35:36], v[37:38], v[35:36]
	v_div_scale_f64 v[37:38], vcc_lo, 0x40308000, v[10:11], 0x40308000
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[39:40], v[37:38], v[35:36]
	v_fma_f64 v[33:34], -v[33:34], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[33:34], v[33:34], v[35:36], v[39:40]
	v_div_fixup_f64 v[33:34], v[33:34], v[10:11], 0x40308000
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_frexp_mant_f64_e64 v[10:11], |v[33:34]|
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[10:11]
	v_cndmask_b32_e64 v14, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[10:11], v[10:11], v14
	v_frexp_exp_i32_f64_e32 v14, v[33:34]
	v_add_f64 v[35:36], v[10:11], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	v_rcp_f64_e32 v[37:38], v[35:36]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[39:40], -v[35:36], v[37:38], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[39:40], v[37:38], v[37:38]
	v_fma_f64 v[39:40], -v[35:36], v[37:38], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[39:40], v[37:38], v[37:38]
	v_add_f64 v[39:40], v[35:36], -1.0
	v_add_f64 v[39:40], v[10:11], -v[39:40]
	v_add_f64 v[10:11], v[10:11], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[41:42], v[10:11], v[37:38]
	v_mul_f64 v[43:44], v[35:36], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[41:42], v[35:36], -v[43:44]
	v_fma_f64 v[35:36], v[41:42], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[43:44], v[35:36]
	v_add_f64 v[43:44], v[39:40], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[43:44], -v[35:36]
	v_add_f64 v[43:44], v[10:11], -v[39:40]
	v_add_f64 v[10:11], v[10:11], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], -v[39:40]
	v_add_f64 v[10:11], v[35:36], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[43:44], v[10:11]
	v_mul_f64 v[10:11], v[37:38], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[41:42], v[10:11]
	v_add_f64 v[37:38], v[35:36], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[10:11], -v[37:38]
	v_mul_f64 v[37:38], v[35:36], v[35:36]
	v_add_f64 v[41:42], v[10:11], v[10:11]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[35:36], v[35:36], -v[37:38]
	v_fma_f64 v[39:40], v[35:36], v[41:42], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[37:38], v[39:40]
	v_add_f64 v[37:38], v[41:42], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[39:40], -v[37:38]
	v_fma_f64 v[39:40], v[41:42], s[16:17], s[14:15]
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[20:21]
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[24:25]
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[28:29]
	v_fma_f64 v[39:40], v[41:42], v[39:40], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[43:44], v[41:42], v[39:40]
	v_fma_f64 v[45:46], v[41:42], v[39:40], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[37:38], v[39:40], v[45:46]
	v_mul_f64 v[45:46], v[35:36], v[41:42]
	v_fma_f64 v[47:48], v[41:42], v[35:36], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[41:42], v[41:42], v[10:11], v[47:48]
	v_add_f64 v[47:48], v[43:44], v[39:40]
	v_ldexp_f64 v[10:11], v[10:11], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[37:38], v[37:38], v[35:36], v[41:42]
	v_add_f64 v[43:44], v[47:48], -v[43:44]
	v_ldexp_f64 v[35:36], v[35:36], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[39:40], -v[43:44]
	v_add_f64 v[43:44], v[47:48], s[12:13]
	v_add_f64 v[39:40], v[39:40], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[49:50], v[43:44], s[38:39]
	v_add_f64 v[47:48], v[47:48], -v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], v[47:48]
	v_add_f64 v[41:42], v[43:44], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], -v[41:42]
	v_add_f64 v[39:40], v[39:40], v[43:44]
	v_add_f64 v[43:44], v[45:46], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[47:48], v[43:44], v[41:42]
	v_fma_f64 v[49:50], v[43:44], v[41:42], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[43:44], v[39:40], v[49:50]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	v_add_f64 v[37:38], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[37:38], v[41:42], v[39:40]
	v_add_f64 v[39:40], v[47:48], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[39:40], -v[47:48]
	v_add_f64 v[37:38], v[37:38], -v[41:42]
	v_add_f64 v[41:42], v[35:36], v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[10:11], v[37:38]
	v_add_f64 v[35:36], v[41:42], -v[35:36]
	v_cvt_f64_i32_e32 v[37:38], v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[39:40], -v[35:36]
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[10:11], v[35:36]
	v_fma_f64 v[43:44], v[37:38], s[34:35], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[43:44]
	v_add_f64 v[35:36], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[35:36], -v[39:40]
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[39:40], v[41:42], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[35:36], v[39:40]
	v_add_f64 v[41:42], v[39:40], -v[41:42]
	v_add_f64 v[45:46], v[43:44], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[10:11], -v[41:42]
	v_add_f64 v[39:40], v[39:40], -v[45:46]
	v_add_f64 v[45:46], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[45:46]
	v_add_f64 v[35:36], v[39:40], v[35:36]
	v_add_f64 v[39:40], v[37:38], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[41:42], v[39:40], -v[37:38]
	v_add_f64 v[35:36], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], -v[41:42]
	v_add_f64 v[41:42], v[39:40], -v[41:42]
	v_add_f64 v[37:38], v[37:38], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], v[37:38]
	v_add_f64 v[37:38], v[43:44], v[35:36]
	v_add_f64 v[39:40], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[35:36], v[10:11], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[37:38], v[35:36]
	v_add_f64 v[37:38], v[10:11], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_add_f64 v[37:38], v[10:11], v[10:11]
	v_fma_f64 v[39:40], v[10:11], 2.0, -v[37:38]
	v_cmp_class_f64_e64 vcc_lo, v[37:38], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[35:36], 2.0, v[39:40]
	v_add_f64 v[41:42], v[37:38], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v44, v42, v38 :: v_dual_cndmask_b32 v43, v41, v37
	v_add_f64 v[37:38], v[41:42], -v[37:38]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[43:44]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[43:44]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[39:40], -v[37:38]
	v_mul_f64 v[39:40], v[43:44], s[42:43]
	v_dual_cndmask_b32 v38, 0, v38 :: v_dual_cndmask_b32 v37, 0, v37
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[39:40], v[39:40]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[43:44]
	v_fma_f64 v[41:42], v[39:40], s[44:45], v[43:44]
	v_cvt_i32_f64_e32 v14, v[39:40]
	s_and_b32 s1, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[39:40], s[46:47], v[41:42]
	v_fma_f64 v[43:44], v[41:42], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[52:53]
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[56:57]
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[60:61]
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[64:65]
	v_fma_f64 v[43:44], v[41:42], v[43:44], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], 1.0
	v_fma_f64 v[41:42], v[41:42], v[43:44], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[39:40], v[41:42], v14
	v_cndmask_b32_e64 v39, 0, v39, s1
	v_cmp_nlt_f64_e64 s1, 0x40900000, v[8:9]
	v_fma_f64 v[8:9], v[31:32], s[44:45], v[8:9]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v14, 0x7ff00000, v40, vcc_lo
	v_cndmask_b32_e64 v40, 0, v14, s0
	v_cmp_class_f64_e64 s0, v[33:34], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_4)
	v_fma_f64 v[37:38], v[39:40], v[37:38], v[39:40]
	v_cmp_class_f64_e64 vcc_lo, v[39:40], 0x204
	v_fma_f64 v[8:9], v[31:32], s[46:47], v[8:9]
	v_cvt_i32_f64_e32 v31, v[31:32]
	v_dual_cndmask_b32 v14, v38, v40 :: v_dual_cndmask_b32 v37, v37, v39
	v_cmp_eq_f64_e32 vcc_lo, 0, v[33:34]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_1)
	v_and_b32_e32 v14, 0x7fffffff, v14
	v_fma_f64 v[33:34], v[8:9], s[50:51], s[48:49]
	v_cndmask_b32_e64 v53, 0x7ff00000, 0, vcc_lo
	s_or_b32 s0, vcc_lo, s0
	s_and_b32 vcc_lo, s2, s1
	v_cndmask_b32_e64 v32, v14, v53, s0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[52:53]
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[56:57]
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[60:61]
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[64:65]
	v_fma_f64 v[33:34], v[8:9], v[33:34], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[8:9], v[33:34], 1.0
	v_fma_f64 v[8:9], v[8:9], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[8:9], v[8:9], v31
	v_cndmask_b32_e64 v31, v37, 0, s0
	v_mul_f64 v[33:34], v[31:32], s[4:5]
	s_mov_b32 s4, 0x85e16072
	s_mov_b32 s5, 0x41318fcb
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_cndmask_b32_e64 v9, 0x7ff00000, v9, s1
	v_cndmask_b32_e32 v8, 0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v9, 0, v9, s2
	v_mul_f64 v[33:34], v[33:34], v[8:9]
	v_mul_f64 v[8:9], v[6:7], s[84:85]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_f64 v[4:5], v[4:5], v[33:34]
	v_mul_f64 v[2:3], v[2:3], v[33:34]
	v_div_scale_f64 v[6:7], null, v[8:9], v[8:9], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[37:38], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[39:40], -v[6:7], v[37:38], 1.0
	v_fma_f64 v[37:38], v[37:38], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], -v[6:7], v[37:38], 1.0
	v_fma_f64 v[37:38], v[37:38], v[39:40], v[37:38]
	v_div_scale_f64 v[39:40], vcc_lo, v[4:5], v[8:9], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[41:42], v[39:40], v[37:38]
	v_fma_f64 v[6:7], -v[6:7], v[41:42], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_div_fmas_f64 v[6:7], v[6:7], v[37:38], v[41:42]
	v_div_scale_f64 v[37:38], null, v[8:9], v[8:9], v[2:3]
	v_div_fixup_f64 v[6:7], v[6:7], v[8:9], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[39:40], v[37:38]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[41:42], -v[37:38], v[39:40], 1.0
	v_fma_f64 v[39:40], v[39:40], v[41:42], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], -v[37:38], v[39:40], 1.0
	v_fma_f64 v[39:40], v[39:40], v[41:42], v[39:40]
	v_div_scale_f64 v[41:42], vcc_lo, v[2:3], v[8:9], v[2:3]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[43:44], v[41:42], v[39:40]
	v_fma_f64 v[37:38], -v[37:38], v[43:44], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_div_fmas_f64 v[37:38], v[37:38], v[39:40], v[43:44]
	v_div_scale_f64 v[39:40], null, s[4:5], s[4:5], v[0:1]
	v_div_fixup_f64 v[8:9], v[37:38], v[8:9], v[2:3]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[41:42], v[39:40]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[43:44], -v[39:40], v[41:42], 1.0
	v_fma_f64 v[41:42], v[41:42], v[43:44], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], -v[39:40], v[41:42], 1.0
	v_fma_f64 v[41:42], v[41:42], v[43:44], v[41:42]
	v_div_scale_f64 v[43:44], vcc_lo, v[0:1], s[4:5], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[45:46], v[43:44], v[41:42]
	v_fma_f64 v[39:40], -v[39:40], v[45:46], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[39:40], v[39:40], v[41:42], v[45:46]
	v_div_scale_f64 v[41:42], null, 0x40710400, 0x40710400, v[29:30]
	v_rcp_f64_e32 v[43:44], v[41:42]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[45:46], -v[41:42], v[43:44], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[43:44], v[45:46], v[43:44]
	v_fma_f64 v[45:46], -v[41:42], v[43:44], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[43:44], v[45:46], v[43:44]
	v_div_scale_f64 v[45:46], vcc_lo, v[29:30], 0x40710400, v[29:30]
	v_mul_f64 v[47:48], v[45:46], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], -v[41:42], v[47:48], v[45:46]
	v_div_fmas_f64 v[41:42], v[41:42], v[43:44], v[47:48]
	v_add_f64 v[43:44], v[0:1], v[0:1]
	v_div_fixup_f64 v[0:1], v[39:40], s[4:5], v[0:1]
	v_mul_f64 v[39:40], v[10:11], 4.0
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_div_fixup_f64 v[29:30], v[41:42], 0x40710400, v[29:30]
	v_div_scale_f64 v[45:46], null, s[4:5], s[4:5], v[43:44]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_fma_f64 v[10:11], v[10:11], 4.0, -v[39:40]
	v_mul_f64 v[0:1], v[0:1], 4.0
	v_rcp_f64_e32 v[47:48], v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_fma_f64 v[10:11], v[35:36], 4.0, v[10:11]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_add_f64 v[35:36], v[39:40], v[10:11]
	v_fma_f64 v[47:48], v[47:48], v[49:50], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_fma_f64 v[47:48], v[47:48], v[49:50], v[47:48]
	v_div_scale_f64 v[49:50], vcc_lo, v[43:44], s[4:5], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[51:52], v[49:50], v[47:48]
	v_fma_f64 v[45:46], -v[45:46], v[51:52], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_div_fmas_f64 v[45:46], v[45:46], v[47:48], v[51:52]
	v_cmp_class_f64_e64 vcc_lo, v[39:40], 0x204
	v_dual_cndmask_b32 v48, v36, v40 :: v_dual_cndmask_b32 v47, v35, v39
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[47:48]|
	v_cmp_ngt_f64_e64 s1, 0xc090cc00, v[47:48]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[10:11], -v[35:36]
	v_mul_f64 v[35:36], v[47:48], s[42:43]
	v_cndmask_b32_e32 v11, 0, v11, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_rndne_f64_e32 v[35:36], v[35:36]
	v_cndmask_b32_e32 v10, 0, v10, vcc_lo
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[47:48]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_fma_f64 v[39:40], v[35:36], s[44:45], v[47:48]
	v_cvt_i32_f64_e32 v14, v[35:36]
	s_and_b32 s2, s1, vcc_lo
	v_fma_f64 v[39:40], v[35:36], s[46:47], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[39:40], s[50:51], s[48:49]
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[54:55]
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[58:59]
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[62:63]
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[39:40], v[47:48], s[66:67]
	v_fma_f64 v[47:48], v[39:40], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[39:40], v[47:48], 1.0
	v_ldexp_f64 v[35:36], v[39:40], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v14, 0x7ff00000, v36, vcc_lo
	v_cndmask_b32_e64 v35, 0, v35, s2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v36, 0, v14, s1
	v_fma_f64 v[10:11], v[35:36], v[10:11], v[35:36]
	v_cmp_class_f64_e64 vcc_lo, v[35:36], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v35, v10, v35 :: v_dual_cndmask_b32 v14, v11, v36
	v_div_fixup_f64 v[10:11], v[45:46], s[4:5], v[43:44]
	v_and_b32_e32 v14, 0x7fffffff, v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[10:11], v[10:11], v[31:32]
	v_cndmask_b32_e64 v32, v14, v53, s0
	v_cndmask_b32_e64 v31, v35, 0, s0
	s_mov_b32 s0, 0xf054bc45
	s_mov_b32 s1, 0xbee49004
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[0:1], v[0:1], v[31:32]
	v_fma_f64 v[0:1], v[29:30], v[0:1], -v[10:11]
	v_mul_f64 v[10:11], v[33:34], s[72:73]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[0:1], v[0:1], v[10:11]
	v_div_scale_f64 v[10:11], null, s[84:85], s[84:85], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[29:30], v[10:11]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[31:32], -v[10:11], v[29:30], 1.0
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], -v[10:11], v[29:30], 1.0
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[29:30]
	v_div_scale_f64 v[31:32], vcc_lo, v[0:1], s[84:85], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[31:32], v[29:30]
	v_fma_f64 v[10:11], -v[10:11], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[10:11], v[10:11], v[29:30], v[35:36]
	v_div_fixup_f64 v[0:1], v[10:11], s[84:85], v[0:1]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[10:11], v[0:1], s[0:1]
.LBB0_18:                               ; %_Z8a_dipoledddRdS_S_RiS_.exit
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s3
	global_load_b128 v[0:3], v[19:20], off
	v_mul_f64 v[29:30], v[8:9], 0.5
	global_store_b128 v[21:22], v[8:11], off offset:8
	global_load_b64 v[8:9], v[19:20], off offset:16
	v_mul_f64 v[4:5], v[6:7], 0.5
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_fma_f64 v[0:1], v[4:5], s[10:11], v[0:1]
	v_mul_f64 v[4:5], v[10:11], 0.5
	v_fma_f64 v[2:3], v[29:30], s[10:11], v[2:3]
	s_waitcnt vmcnt(0)
	v_fma_f64 v[4:5], v[4:5], s[10:11], v[8:9]
	v_mul_f64 v[8:9], v[33:34], s[74:75]
	s_clause 0x1
	global_store_b128 v[19:20], v[0:3], off
	global_store_b128 v[19:20], v[4:7], off offset:16
	s_getreg_b32 s0, hwreg(HW_REG_SHADER_CYCLES, 0, 20)
	v_div_scale_f64 v[10:11], null, s[74:75], s[74:75], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[29:30], v[10:11]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[31:32], -v[10:11], v[29:30], 1.0
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], -v[10:11], v[29:30], 1.0
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[29:30]
	v_div_scale_f64 v[31:32], vcc_lo, v[8:9], s[74:75], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[31:32], v[29:30]
	v_fma_f64 v[10:11], -v[10:11], v[33:34], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[10:11], v[10:11], v[29:30], v[33:34]
	v_add_co_u32 v6, vcc_lo, s0, v12
	s_mov_b32 s0, 0x9c85b1fa
	s_mov_b32 s1, 0x41470273
	v_xor_b32_e32 v6, 0x2c7f967f, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v6, 0x493c4aa1, v6
	v_add_nc_u32_e32 v7, 0x75bcd15, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshrrev_b32_e32 v14, 2, v7
	v_xor_b32_e32 v7, v14, v7
	v_add_nc_u32_e32 v14, 0x583f19, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_lshlrev_b32_e32 v30, 1, v7
	v_lshlrev_b32_e32 v29, 4, v14
	v_div_fixup_f64 v[10:11], v[10:11], s[74:75], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v29, v29, v30
	v_xor3_b32 v7, v29, v14, v7
	v_xor_b32_e32 v14, 0x159a55e5, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_lshlrev_b32_e32 v30, 4, v7
	v_lshrrev_b32_e32 v29, 2, v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v14, v29, v14
	v_lshlrev_b32_e32 v29, 1, v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v29, v29, v30
	v_add_co_ci_u32_e32 v30, vcc_lo, 0, v55, vcc_lo
	v_xor3_b32 v14, v29, v14, v7
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v30, 0xa03697cb, v30
	v_mul_f64 v[10:11], v[10:11], s[0:1]
	v_mul_lo_u32 v30, 0x7b99840d, v30
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add3_u32 v6, v6, v30, 0x64f0c9
	v_add3_u32 v14, v6, v14, 0xb0f8a
	v_add3_u32 v29, v6, v7, 0x587c5
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_lshrrev_b32_e32 v6, 11, v14
	v_cvt_f64_u32_e32 v[29:30], v29
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cvt_f64_u32_e32 v[6:7], v6
	v_mul_f64 v[10:11], v[10:11], s[10:11]
	v_ldexp_f64 v[6:7], v[6:7], 32
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[29:30]
	v_fma_f64 v[6:7], 0x3ca00000, v[6:7], 0x3ca00000
	s_delay_alu instid0(VALU_DEP_1)
	v_cmp_lt_f64_e32 vcc_lo, v[6:7], v[10:11]
	v_mov_b32_e32 v10, 0
	v_mov_b32_e32 v11, 0
	s_and_saveexec_b32 s4, vcc_lo
	s_cbranch_execz .LBB0_40
; %bb.19:                               ;   in Loop: Header=BB0_4 Depth=2
	global_load_b64 v[6:7], v[19:20], off offset:88
	s_mov_b32 s2, 0xf01b866e
	s_mov_b32 s3, 0x400921f9
	s_mov_b32 s92, s2
                                        ; implicit-def: $vgpr60
                                        ; implicit-def: $vgpr47_vgpr48
                                        ; implicit-def: $vgpr49_vgpr50
	s_waitcnt vmcnt(0)
	v_add_f64 v[6:7], v[6:7], 1.0
	global_store_b64 v[23:24], v[6:7], off
	s_getreg_b32 s0, hwreg(HW_REG_SHADER_CYCLES, 0, 20)
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_co_u32 v6, vcc_lo, s0, v12
	s_getreg_b32 s0, hwreg(HW_REG_SHADER_CYCLES, 0, 20)
	v_xor_b32_e32 v6, 0x2c7f967f, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v6, 0x493c4aa1, v6
	v_add_nc_u32_e32 v7, 0x75bcd15, v6
	v_xor_b32_e32 v10, 0x159a55e5, v6
	v_add_nc_u32_e32 v14, 0x583f19, v6
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_lshrrev_b32_e32 v11, 2, v7
	v_lshrrev_b32_e32 v29, 2, v10
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_xor_b32_e32 v7, v11, v7
	v_lshlrev_b32_e32 v11, 4, v14
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_xor_b32_e32 v10, v29, v10
	v_lshlrev_b32_e32 v29, 1, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v11, v11, v29
	v_add_co_ci_u32_e32 v29, vcc_lo, 0, v55, vcc_lo
	v_xor3_b32 v14, v11, v14, v7
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v29, 0xa03697cb, v29
	v_lshlrev_b32_e32 v11, 1, v10
	v_mul_lo_u32 v7, 0x7b99840d, v29
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b32_e32 v29, 4, v14
	v_xor_b32_e32 v11, v11, v29
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_add3_u32 v30, v6, v7, 0x64f0c9
	global_load_b64 v[6:7], v[19:20], off
	v_xor3_b32 v10, v11, v10, v14
	v_add3_u32 v14, v30, v14, 0x587c5
	v_add3_u32 v10, v30, v10, 0xb0f8a
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cvt_f64_u32_e32 v[29:30], v14
	v_lshrrev_b32_e32 v10, 11, v10
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_f64_u32_e32 v[10:11], v10
	v_ldexp_f64 v[10:11], v[10:11], 32
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[10:11], v[29:30]
	v_fma_f64 v[10:11], 0x3ca00000, v[10:11], 0x3ca00000
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[10:11], v[10:11], s[92:93]
	v_cmp_ngt_f64_e64 s1, 0x41d00000, v[10:11]
	v_trig_preop_f64 v[43:44], v[10:11], 0
	v_trig_preop_f64 v[31:32], v[10:11], 1
	v_ldexp_f64 v[45:46], v[10:11], 0xffffff80
	v_trig_preop_f64 v[29:30], v[10:11], 2
	s_and_saveexec_b32 s2, s1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s2, exec_lo, s2
	s_cbranch_execz .LBB0_21
; %bb.20:                               ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_le_f64_e32 vcc_lo, 0x7b000000, v[10:11]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_mov_b32 s96, s6
	s_mov_b32 s69, s103
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v34, v11, v46 :: v_dual_cndmask_b32 v33, v10, v45
	v_mul_f64 v[35:36], v[43:44], v[33:34]
	v_mul_f64 v[37:38], v[31:32], v[33:34]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[43:44], v[33:34], -v[35:36]
	v_add_f64 v[41:42], v[37:38], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[41:42], -v[37:38]
	v_add_f64 v[49:50], v[35:36], v[41:42]
	v_add_f64 v[39:40], v[39:40], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[49:50], -v[35:36]
	v_add_f64 v[47:48], v[41:42], -v[47:48]
	v_add_f64 v[35:36], v[41:42], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[41:42], v[37:38], -v[47:48]
	v_fma_f64 v[37:38], v[31:32], v[33:34], -v[37:38]
	v_mul_f64 v[47:48], v[29:30], v[33:34]
	v_add_f64 v[39:40], v[39:40], v[41:42]
	v_ldexp_f64 v[41:42], v[49:50], -2
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[49:50], v[47:48], v[37:38]
	v_fma_f64 v[33:34], v[29:30], v[33:34], -v[47:48]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[41:42]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[53:54], v[49:50], v[39:40]
	v_add_f64 v[51:52], v[49:50], -v[47:48]
	v_fract_f64_e32 v[41:42], v[41:42]
	v_add_f64 v[60:61], v[53:54], -v[49:50]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[37:38], v[37:38], -v[51:52]
	v_add_f64 v[51:52], v[49:50], -v[51:52]
	v_dual_cndmask_b32 v42, 0, v42 :: v_dual_cndmask_b32 v41, 0, v41
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_3)
	v_ldexp_f64 v[41:42], v[41:42], 2
	v_add_f64 v[39:40], v[39:40], -v[60:61]
	v_add_f64 v[60:61], v[53:54], -v[60:61]
	v_add_f64 v[51:52], v[47:48], -v[51:52]
	v_add_f64 v[47:48], v[35:36], v[53:54]
	v_add_f64 v[49:50], v[49:50], -v[60:61]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[37:38], v[37:38], v[51:52]
	v_add_f64 v[35:36], v[47:48], -v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[39:40], v[39:40], v[49:50]
	v_add_f64 v[49:50], v[47:48], v[41:42]
	v_add_f64 v[35:36], v[53:54], -v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[37:38], v[37:38], v[39:40]
	v_cmp_gt_f64_e32 vcc_lo, 0, v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], v[37:38]
	v_cndmask_b32_e64 v14, 0, 0x40100000, vcc_lo
	v_add_f64 v[37:38], v[41:42], v[13:14]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[33:34], v[35:36], v[33:34]
	v_add_f64 v[39:40], v[47:48], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f64_e32 v41, v[39:40]
	v_cvt_f64_i32_e32 v[39:40], v41
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[35:36], v[47:48], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	v_cmp_le_f64_e32 vcc_lo, 0.5, v[35:36]
	v_add_f64 v[37:38], v[47:48], -v[37:38]
	v_cndmask_b32_e64 v14, 0, 0x3ff00000, vcc_lo
	v_add_co_ci_u32_e32 v60, vcc_lo, 0, v41, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[35:36], v[35:36], -v[13:14]
	v_add_f64 v[33:34], v[33:34], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[35:36], v[33:34]
	v_add_f64 v[35:36], v[37:38], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], -v[35:36]
	v_mul_f64 v[35:36], v[37:38], s[96:97]
	v_fma_f64 v[39:40], v[37:38], s[96:97], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[37:38], s[68:69], v[39:40]
	v_fma_f64 v[33:34], v[33:34], s[96:97], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[35:36], v[33:34]
	v_add_f64 v[35:36], v[47:48], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[49:50], v[33:34], -v[35:36]
.LBB0_21:                               ; %Flow225
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s2, s2
	s_cbranch_execz .LBB0_23
; %bb.22:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s6, 0x6dc9c883
	s_mov_b32 s7, 0x3fe45f30
	s_mov_b32 s102, s78
	v_mul_f64 v[33:34], v[10:11], s[6:7]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[33:34], v[33:34]
	v_fma_f64 v[35:36], v[33:34], s[6:7], v[10:11]
	v_mul_f64 v[37:38], v[33:34], s[78:79]
	s_mov_b32 s6, 0x252049c0
	s_mov_b32 s7, 0xb97b839a
	v_cvt_i32_f64_e32 v60, v[33:34]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[41:42], v[33:34], s[78:79], v[35:36]
	v_add_f64 v[39:40], v[35:36], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], v[37:38]
	v_fma_f64 v[37:38], v[33:34], s[102:103], v[37:38]
	v_add_f64 v[35:36], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_fma_f64 v[35:36], v[33:34], s[6:7], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[41:42], v[35:36]
	v_add_f64 v[37:38], v[47:48], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[49:50], v[35:36], -v[37:38]
.LBB0_23:                               ; %_ZL3cosd.exit
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s2
	v_add_co_u32 v14, vcc_lo, s0, v12
	s_mov_b32 s2, 0xf01b866e
	s_mov_b32 s3, 0x400921f9
                                        ; implicit-def: $vgpr51_vgpr52
                                        ; implicit-def: $vgpr53_vgpr54
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v14, 0x2c7f967f, v14
	v_mul_lo_u32 v14, 0x493c4aa1, v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v33, 0x75bcd15, v14
	v_add_nc_u32_e32 v35, 0x583f19, v14
	v_lshrrev_b32_e32 v34, 2, v33
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_lshlrev_b32_e32 v36, 4, v35
	v_xor_b32_e32 v33, v34, v33
	v_xor_b32_e32 v34, 0x159a55e5, v14
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_lshlrev_b32_e32 v37, 1, v33
	v_lshrrev_b32_e32 v38, 2, v34
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_xor_b32_e32 v36, v36, v37
	v_add_co_ci_u32_e32 v37, vcc_lo, 0, v55, vcc_lo
	v_xor_b32_e32 v34, v38, v34
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_xor3_b32 v35, v36, v35, v33
	v_xor_b32_e32 v33, 0xa03697cb, v37
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_lshlrev_b32_e32 v36, 1, v34
	v_lshlrev_b32_e32 v37, 4, v35
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v33, 0x7b99840d, v33
	v_xor_b32_e32 v36, v36, v37
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add3_u32 v14, v14, v33, 0x64f0c9
	v_xor3_b32 v33, v36, v34, v35
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add3_u32 v33, v14, v33, 0xb0f8a
	v_add3_u32 v14, v14, v35, 0x587c5
	v_lshrrev_b32_e32 v33, 11, v33
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cvt_f64_u32_e32 v[35:36], v14
                                        ; implicit-def: $vgpr14
	v_cvt_f64_u32_e32 v[33:34], v33
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[33:34], v[33:34], 32
	v_add_f64 v[33:34], v[33:34], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], 0x3ca00000, v[33:34], 0x3ca00000
	v_mul_f64 v[35:36], v[33:34], s[2:3]
	s_delay_alu instid0(VALU_DEP_1)
	v_cmp_ngt_f64_e64 s0, 0x41d00000, v[35:36]
	v_trig_preop_f64 v[39:40], v[35:36], 0
	v_trig_preop_f64 v[37:38], v[35:36], 1
	v_ldexp_f64 v[41:42], v[35:36], 0xffffff80
	v_trig_preop_f64 v[33:34], v[35:36], 2
	s_and_saveexec_b32 s2, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s2, exec_lo, s2
	s_cbranch_execz .LBB0_25
; %bb.24:                               ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_le_f64_e32 vcc_lo, 0x7b000000, v[35:36]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_mov_b32 s96, s6
	s_mov_b32 s69, s103
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v52, v36, v42 :: v_dual_cndmask_b32 v51, v35, v41
	v_mul_f64 v[53:54], v[39:40], v[51:52]
	v_mul_f64 v[61:62], v[37:38], v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[63:64], v[39:40], v[51:52], -v[53:54]
	v_add_f64 v[65:66], v[61:62], v[63:64]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[67:68], v[65:66], -v[61:62]
	v_add_f64 v[69:70], v[53:54], v[65:66]
	v_add_f64 v[63:64], v[63:64], -v[67:68]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[53:54], v[69:70], -v[53:54]
	v_add_f64 v[67:68], v[65:66], -v[67:68]
	v_add_f64 v[53:54], v[65:66], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[65:66], v[61:62], -v[67:68]
	v_fma_f64 v[61:62], v[37:38], v[51:52], -v[61:62]
	v_mul_f64 v[67:68], v[33:34], v[51:52]
	v_add_f64 v[63:64], v[63:64], v[65:66]
	v_ldexp_f64 v[65:66], v[69:70], -2
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[69:70], v[67:68], v[61:62]
	v_fma_f64 v[51:52], v[33:34], v[51:52], -v[67:68]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[65:66]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[73:74], v[69:70], v[63:64]
	v_add_f64 v[71:72], v[69:70], -v[67:68]
	v_fract_f64_e32 v[65:66], v[65:66]
	v_add_f64 v[75:76], v[73:74], -v[69:70]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[61:62], v[61:62], -v[71:72]
	v_add_f64 v[71:72], v[69:70], -v[71:72]
	v_dual_cndmask_b32 v66, 0, v66 :: v_dual_cndmask_b32 v65, 0, v65
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_3)
	v_ldexp_f64 v[65:66], v[65:66], 2
	v_add_f64 v[63:64], v[63:64], -v[75:76]
	v_add_f64 v[75:76], v[73:74], -v[75:76]
	v_add_f64 v[71:72], v[67:68], -v[71:72]
	v_add_f64 v[67:68], v[53:54], v[73:74]
	v_add_f64 v[69:70], v[69:70], -v[75:76]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[61:62], v[61:62], v[71:72]
	v_add_f64 v[53:54], v[67:68], -v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[63:64], v[63:64], v[69:70]
	v_add_f64 v[69:70], v[67:68], v[65:66]
	v_add_f64 v[53:54], v[73:74], -v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[61:62], v[61:62], v[63:64]
	v_cmp_gt_f64_e32 vcc_lo, 0, v[69:70]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[51:52], v[61:62]
	v_cndmask_b32_e64 v14, 0, 0x40100000, vcc_lo
	v_add_f64 v[61:62], v[65:66], v[13:14]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[53:54], v[51:52]
	v_add_f64 v[63:64], v[67:68], v[61:62]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f64_e32 v65, v[63:64]
	v_cvt_f64_i32_e32 v[63:64], v65
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[61:62], v[61:62], -v[63:64]
	v_add_f64 v[53:54], v[67:68], v[61:62]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[61:62], v[53:54], -v[61:62]
	v_cmp_le_f64_e32 vcc_lo, 0.5, v[53:54]
	v_add_f64 v[61:62], v[67:68], -v[61:62]
	v_cndmask_b32_e64 v14, 0, 0x3ff00000, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[53:54], v[53:54], -v[13:14]
	v_add_co_ci_u32_e32 v14, vcc_lo, 0, v65, vcc_lo
	v_add_f64 v[51:52], v[51:52], v[61:62]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[61:62], v[53:54], v[51:52]
	v_add_f64 v[53:54], v[61:62], -v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[51:52], -v[53:54]
	v_mul_f64 v[53:54], v[61:62], s[96:97]
	v_fma_f64 v[63:64], v[61:62], s[96:97], -v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[61:62], v[61:62], s[68:69], v[63:64]
	v_fma_f64 v[61:62], v[51:52], s[96:97], v[61:62]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[53:54], v[61:62]
	v_add_f64 v[53:54], v[51:52], -v[53:54]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[53:54], v[61:62], -v[53:54]
.LBB0_25:                               ; %Flow224
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s2, s2
	s_cbranch_execz .LBB0_27
; %bb.26:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s6, 0x6dc9c883
	s_mov_b32 s7, 0x3fe45f30
	s_mov_b32 s102, s78
	v_mul_f64 v[51:52], v[35:36], s[6:7]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[61:62], v[51:52]
	v_fma_f64 v[51:52], v[61:62], s[6:7], v[35:36]
	v_mul_f64 v[53:54], v[61:62], s[78:79]
	s_mov_b32 s6, 0x252049c0
	s_mov_b32 s7, 0xb97b839a
	v_cvt_i32_f64_e32 v14, v[61:62]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[65:66], v[61:62], s[78:79], v[51:52]
	v_add_f64 v[63:64], v[51:52], v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[51:52], v[51:52], -v[63:64]
	v_add_f64 v[63:64], v[63:64], -v[65:66]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[51:52], v[53:54]
	v_fma_f64 v[53:54], v[61:62], s[102:103], v[53:54]
	v_add_f64 v[51:52], v[63:64], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[51:52], -v[53:54]
	v_fma_f64 v[53:54], v[61:62], s[6:7], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[65:66], v[53:54]
	v_add_f64 v[63:64], v[51:52], -v[65:66]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[53:54], v[53:54], -v[63:64]
.LBB0_27:                               ; %_ZL3sind.exit
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s2
	v_mul_f64 v[61:62], v[47:48], v[47:48]
	s_mov_b32 s6, 0x9037ab78
	s_mov_b32 s7, 0x3e21eeb6
	s_mov_b32 s2, s12
	s_mov_b32 s3, s63
	s_mov_b32 s82, 0xb42fdfa7
	s_mov_b32 s83, 0xbe5ae600
	s_mov_b32 s76, 0x19e83e5c
	s_mov_b32 s77, 0xbf2a01a0
	s_mov_b32 s71, s61
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_f64 v[75:76], v[53:54], 0.5
	s_mov_b32 s90, s12
	v_mul_f64 v[63:64], v[61:62], 0.5
	v_mul_f64 v[69:70], v[61:62], v[61:62]
	v_mul_f64 v[71:72], v[47:48], -v[61:62]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[65:66], -v[63:64], 1.0
	v_add_f64 v[67:68], -v[65:66], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[63:64], v[67:68], -v[63:64]
	v_fma_f64 v[67:68], v[61:62], s[80:81], s[6:7]
	v_fma_f64 v[63:64], v[47:48], -v[49:50], v[63:64]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[94:95]
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[100:101]
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[2:3]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_fma_f64 v[63:64], v[69:70], v[67:68], v[63:64]
	v_fma_f64 v[67:68], v[61:62], s[86:87], s[82:83]
	v_mul_f64 v[69:70], v[49:50], 0.5
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[98:99]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[76:77]
	v_fma_f64 v[67:68], v[61:62], v[67:68], s[70:71]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[67:68], v[71:72], v[67:68], v[69:70]
	v_fma_f64 v[49:50], v[61:62], v[67:68], -v[49:50]
	v_mul_f64 v[61:62], v[51:52], v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[49:50], v[71:72], s[90:91], v[49:50]
	v_mul_f64 v[67:68], v[61:62], 0.5
	v_mul_f64 v[77:78], v[51:52], -v[61:62]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[47:48], v[47:48], -v[49:50]
	v_add_f64 v[69:70], -v[67:68], 1.0
	v_add_f64 v[49:50], v[65:66], v[63:64]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_xor_b32_e32 v48, 0x80000000, v48
	v_add_f64 v[73:74], -v[69:70], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[67:68], v[73:74], -v[67:68]
	v_fma_f64 v[73:74], v[61:62], s[86:87], s[82:83]
	v_fma_f64 v[67:68], v[51:52], -v[53:54], v[67:68]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[98:99]
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[76:77]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[70:71]
	v_fma_f64 v[73:74], v[77:78], v[73:74], v[75:76]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[53:54], v[61:62], v[73:74], -v[53:54]
	v_fma_f64 v[73:74], v[61:62], s[80:81], s[6:7]
	v_fma_f64 v[53:54], v[77:78], s[90:91], v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[94:95]
	v_add_f64 v[51:52], v[51:52], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[8:9]
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[100:101]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_fma_f64 v[73:74], v[61:62], v[73:74], s[2:3]
	v_mul_f64 v[61:62], v[61:62], v[61:62]
	v_cmp_lg_f64_e64 s2, 0x7ff00000, v[10:11]
	v_fma_f64 v[61:62], v[61:62], v[73:74], v[67:68]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[61:62], v[69:70], v[61:62]
	v_and_b32_e32 v53, 1, v14
	v_cmp_eq_u32_e32 vcc_lo, 0, v53
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v52, v62, v52 :: v_dual_cndmask_b32 v51, v61, v51
	v_lshlrev_b32_e32 v14, 30, v14
	v_xor_b32_e32 v14, v14, v36
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v14, 0x80000000, v14
	v_xor_b32_e32 v14, v52, v14
	v_and_b32_e32 v53, 1, v60
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)
	v_cmp_eq_u32_e32 vcc_lo, 0, v53
                                        ; implicit-def: $vgpr53
	v_cndmask_b32_e32 v47, v47, v49, vcc_lo
	v_dual_cndmask_b32 v48, v48, v50 :: v_dual_lshlrev_b32 v49, 30, v60
	v_cmp_lg_f64_e32 vcc_lo, 0x7ff00000, v[35:36]
	v_cndmask_b32_e64 v47, 0, v47, s2
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v49, 0x80000000, v49
	v_xor_b32_e32 v48, v48, v49
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v48, 0x7ff80000, v48, s2
	v_mul_f64 v[47:48], v[47:48], s[88:89]
	v_cndmask_b32_e32 v50, 0x7ff80000, v14, vcc_lo
	v_cndmask_b32_e32 v49, 0, v51, vcc_lo
                                        ; implicit-def: $vgpr51_vgpr52
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[6:7], v[47:48], v[49:50], v[6:7]
	global_load_b64 v[47:48], v[19:20], off offset:8
                                        ; implicit-def: $vgpr49_vgpr50
	global_store_b64 v[19:20], v[6:7], off
	s_and_saveexec_b32 s3, s1
	s_xor_b32 s3, exec_lo, s3
	s_cbranch_execz .LBB0_29
; %bb.28:                               ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_le_f64_e64 s1, 0x7b000000, v[10:11]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_mov_b32 s96, s6
	s_mov_b32 s69, s103
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v46, v11, v46, s1
	v_cndmask_b32_e64 v45, v10, v45, s1
	v_mul_f64 v[49:50], v[43:44], v[45:46]
	v_mul_f64 v[51:52], v[31:32], v[45:46]
	v_mul_f64 v[53:54], v[29:30], v[45:46]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[43:44], v[43:44], v[45:46], -v[49:50]
	v_fma_f64 v[31:32], v[31:32], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[29:30], v[29:30], v[45:46], -v[53:54]
	v_add_f64 v[45:46], v[51:52], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[60:61], v[45:46], -v[51:52]
	v_add_f64 v[43:44], v[43:44], -v[60:61]
	v_add_f64 v[60:61], v[45:46], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[51:52], -v[60:61]
	v_add_f64 v[60:61], v[49:50], v[45:46]
	v_add_f64 v[43:44], v[43:44], v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[49:50], v[60:61], -v[49:50]
	v_ldexp_f64 v[60:61], v[60:61], -2
	v_add_f64 v[45:46], v[45:46], -v[49:50]
	v_add_f64 v[49:50], v[53:54], v[31:32]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_cmp_neq_f64_e64 s1, 0x7ff00000, |v[60:61]|
	v_fract_f64_e32 v[60:61], v[60:61]
	v_add_f64 v[51:52], v[49:50], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cndmask_b32_e64 v61, 0, v61, s1
	v_cndmask_b32_e64 v60, 0, v60, s1
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[51:52]
	v_add_f64 v[51:52], v[49:50], -v[51:52]
	v_add_f64 v[51:52], v[53:54], -v[51:52]
	v_add_f64 v[53:54], v[49:50], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[31:32], v[51:52]
	v_add_f64 v[62:63], v[53:54], -v[49:50]
	v_add_f64 v[51:52], v[45:46], v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], -v[62:63]
	v_add_f64 v[62:63], v[53:54], -v[62:63]
	v_add_f64 v[49:50], v[49:50], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[43:44], v[49:50]
	v_ldexp_f64 v[49:50], v[60:61], 2
	v_add_f64 v[31:32], v[31:32], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[60:61], v[51:52], v[49:50]
	v_add_f64 v[43:44], v[51:52], -v[45:46]
	v_add_f64 v[29:30], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cmp_gt_f64_e64 s1, 0, v[60:61]
	v_add_f64 v[43:44], v[53:54], -v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v14, 0, 0x40100000, s1
	v_add_f64 v[29:30], v[43:44], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[49:50], v[13:14]
	v_add_f64 v[45:46], v[51:52], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f64_e32 v53, v[45:46]
	v_cvt_f64_i32_e32 v[45:46], v53
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[45:46]
	v_add_f64 v[43:44], v[51:52], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[43:44], -v[31:32]
	v_cmp_le_f64_e64 s1, 0.5, v[43:44]
	v_add_f64 v[31:32], v[51:52], -v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v14, 0, 0x3ff00000, s1
	v_add_co_ci_u32_e64 v53, s1, 0, v53, s1
	v_add_f64 v[43:44], v[43:44], -v[13:14]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_add_f64 v[31:32], v[43:44], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[31:32], -v[43:44]
	v_mul_f64 v[45:46], v[31:32], s[96:97]
	v_add_f64 v[29:30], v[29:30], -v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[31:32], s[96:97], -v[45:46]
	v_fma_f64 v[31:32], v[31:32], s[68:69], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], s[96:97], v[31:32]
	v_add_f64 v[49:50], v[45:46], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[49:50], -v[45:46]
	v_add_f64 v[51:52], v[29:30], -v[31:32]
.LBB0_29:                               ; %Flow223
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s1, s3
	s_cbranch_execz .LBB0_31
; %bb.30:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s6, 0x6dc9c883
	s_mov_b32 s7, 0x3fe45f30
	s_mov_b32 s102, s78
	v_mul_f64 v[29:30], v[10:11], s[6:7]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[29:30], v[29:30]
	v_fma_f64 v[31:32], v[29:30], s[6:7], v[10:11]
	v_mul_f64 v[43:44], v[29:30], s[78:79]
	s_mov_b32 s6, 0x252049c0
	s_mov_b32 s7, 0xb97b839a
	v_cvt_i32_f64_e32 v53, v[29:30]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[51:52], v[29:30], s[78:79], v[31:32]
	v_add_f64 v[45:46], v[31:32], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[31:32], v[31:32], -v[45:46]
	v_add_f64 v[45:46], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[31:32], v[43:44]
	v_fma_f64 v[43:44], v[29:30], s[102:103], v[43:44]
	v_add_f64 v[31:32], v[45:46], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[43:44]
	v_fma_f64 v[31:32], v[29:30], s[6:7], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[49:50], v[51:52], v[31:32]
	v_add_f64 v[43:44], v[49:50], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[51:52], v[31:32], -v[43:44]
.LBB0_31:                               ; %_ZL3sind.exit168
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s1
                                        ; implicit-def: $vgpr10
                                        ; implicit-def: $vgpr29_vgpr30
                                        ; implicit-def: $vgpr31_vgpr32
	s_and_saveexec_b32 s1, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s3, exec_lo, s1
	s_cbranch_execz .LBB0_33
; %bb.32:                               ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_le_f64_e64 s1, 0x7b000000, v[35:36]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_mov_b32 s96, s6
	s_mov_b32 s69, s103
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v30, v36, v42, s1
	v_cndmask_b32_e64 v29, v35, v41, s1
	v_mul_f64 v[31:32], v[39:40], v[29:30]
	v_mul_f64 v[43:44], v[37:38], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[39:40], v[29:30], -v[31:32]
	v_add_f64 v[60:61], v[43:44], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[62:63], v[60:61], -v[43:44]
	v_add_f64 v[64:65], v[31:32], v[60:61]
	v_add_f64 v[45:46], v[45:46], -v[62:63]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[64:65], -v[31:32]
	v_add_f64 v[62:63], v[60:61], -v[62:63]
	v_add_f64 v[31:32], v[60:61], -v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[60:61], v[43:44], -v[62:63]
	v_fma_f64 v[43:44], v[37:38], v[29:30], -v[43:44]
	v_mul_f64 v[62:63], v[33:34], v[29:30]
	v_add_f64 v[45:46], v[45:46], v[60:61]
	v_ldexp_f64 v[60:61], v[64:65], -2
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[64:65], v[62:63], v[43:44]
	v_fma_f64 v[29:30], v[33:34], v[29:30], -v[62:63]
	v_cmp_neq_f64_e64 s1, 0x7ff00000, |v[60:61]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[68:69], v[64:65], v[45:46]
	v_add_f64 v[66:67], v[64:65], -v[62:63]
	v_fract_f64_e32 v[60:61], v[60:61]
	v_add_f64 v[70:71], v[68:69], -v[64:65]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[43:44], v[43:44], -v[66:67]
	v_add_f64 v[66:67], v[64:65], -v[66:67]
	v_cndmask_b32_e64 v61, 0, v61, s1
	v_cndmask_b32_e64 v60, 0, v60, s1
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_3)
	v_ldexp_f64 v[60:61], v[60:61], 2
	v_add_f64 v[45:46], v[45:46], -v[70:71]
	v_add_f64 v[70:71], v[68:69], -v[70:71]
	v_add_f64 v[66:67], v[62:63], -v[66:67]
	v_add_f64 v[62:63], v[31:32], v[68:69]
	v_add_f64 v[64:65], v[64:65], -v[70:71]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[43:44], v[66:67]
	v_add_f64 v[31:32], v[62:63], -v[31:32]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[45:46], v[45:46], v[64:65]
	v_add_f64 v[64:65], v[62:63], v[60:61]
	v_add_f64 v[31:32], v[68:69], -v[31:32]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[43:44], v[45:46]
	v_cmp_gt_f64_e64 s1, 0, v[64:65]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[43:44]
	v_cndmask_b32_e64 v14, 0, 0x40100000, s1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[60:61], v[13:14]
	v_add_f64 v[29:30], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[62:63], v[43:44]
	v_cvt_i32_f64_e32 v10, v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_f64_i32_e32 v[45:46], v10
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[62:63], v[43:44]
	v_add_f64 v[43:44], v[31:32], -v[43:44]
	v_cmp_le_f64_e64 s1, 0.5, v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[62:63], -v[43:44]
	v_cndmask_b32_e64 v14, 0, 0x3ff00000, s1
	v_add_co_ci_u32_e64 v10, s1, 0, v10, s1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[31:32], v[31:32], -v[13:14]
	v_add_f64 v[29:30], v[29:30], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[31:32], v[29:30]
	v_add_f64 v[31:32], v[43:44], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_mul_f64 v[31:32], v[43:44], s[96:97]
	v_fma_f64 v[45:46], v[43:44], s[96:97], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[43:44], s[68:69], v[45:46]
	v_fma_f64 v[43:44], v[29:30], s[96:97], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[31:32], v[43:44]
	v_add_f64 v[31:32], v[29:30], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[31:32], v[43:44], -v[31:32]
.LBB0_33:                               ; %Flow221
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s1, s3
	s_cbranch_execz .LBB0_35
; %bb.34:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s6, 0x6dc9c883
	s_mov_b32 s7, 0x3fe45f30
	s_mov_b32 s102, s78
	v_mul_f64 v[29:30], v[35:36], s[6:7]
	s_mov_b32 s6, 0x54442d18
	s_mov_b32 s7, 0xbff921fb
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[43:44], v[29:30]
	v_fma_f64 v[29:30], v[43:44], s[6:7], v[35:36]
	v_mul_f64 v[31:32], v[43:44], s[78:79]
	s_mov_b32 s6, 0x252049c0
	s_mov_b32 s7, 0xb97b839a
	v_cvt_i32_f64_e32 v10, v[43:44]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[60:61], v[43:44], s[78:79], v[29:30]
	v_add_f64 v[45:46], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[29:30], v[29:30], -v[45:46]
	v_add_f64 v[45:46], v[45:46], -v[60:61]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_fma_f64 v[31:32], v[43:44], s[102:103], v[31:32]
	v_add_f64 v[29:30], v[45:46], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_fma_f64 v[31:32], v[43:44], s[6:7], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[60:61], v[31:32]
	v_add_f64 v[45:46], v[29:30], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[45:46]
.LBB0_35:                               ; %_ZL3sind.exit173
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s1
	v_mul_f64 v[43:44], v[49:50], v[49:50]
	s_mov_b32 s86, 0xb42fdfa7
	s_mov_b32 s98, 0xf9a43bb8
	s_mov_b32 s87, 0xbe5ae600
	s_mov_b32 s99, 0x3de5e0b2
	s_mov_b32 s6, 0x796cde01
	s_mov_b32 s7, 0x3ec71de3
	s_mov_b32 s88, 0x19e83e5c
	s_mov_b32 s89, 0xbf2a01a0
	s_mov_b32 s71, s61
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_3)
	v_mul_f64 v[64:65], v[51:52], 0.5
	s_mov_b32 s80, 0x9037ab78
	s_mov_b32 s100, 0x46cc5e42
	s_mov_b32 s81, 0x3e21eeb6
	s_mov_b32 s101, 0xbda907db
	v_mul_f64 v[70:71], v[31:32], 0.5
	s_mov_b32 s90, s12
	v_and_b32_e32 v14, 1, v53
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_cmp_eq_u32_e64 s1, 0, v14
	v_mul_f64 v[45:46], v[43:44], 0.5
	v_mul_f64 v[66:67], v[49:50], -v[43:44]
	v_add_f64 v[60:61], -v[45:46], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[62:63], -v[60:61], 1.0
	v_add_f64 v[45:46], v[62:63], -v[45:46]
	v_fma_f64 v[62:63], v[43:44], s[98:99], s[86:87]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[45:46], v[49:50], -v[51:52], v[45:46]
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[6:7]
	s_mov_b32 s6, 0x16c16967
	s_mov_b32 s7, 0xbf56c16c
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[88:89]
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[70:71]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[62:63], v[66:67], v[62:63], v[64:65]
	v_fma_f64 v[51:52], v[43:44], v[62:63], -v[51:52]
	v_fma_f64 v[62:63], v[43:44], s[100:101], s[80:81]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[51:52], v[66:67], s[90:91], v[51:52]
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[94:95]
	s_mov_b32 s94, 0x9037ab78
	s_mov_b32 s95, 0x3e21eeb6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[49:50], v[49:50], -v[51:52]
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[8:9]
	s_mov_b32 s8, 0xa17f65f6
	s_mov_b32 s9, 0xbe927e4f
	s_delay_alu instid0(VALU_DEP_1)
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[6:7]
	s_mov_b32 s6, s12
	s_mov_b32 s7, s63
	s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[62:63], v[43:44], v[62:63], s[6:7]
	v_mul_f64 v[43:44], v[43:44], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[43:44], v[43:44], v[62:63], v[45:46]
	v_mul_f64 v[45:46], v[29:30], v[29:30]
	v_add_f64 v[43:44], v[60:61], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_mul_f64 v[62:63], v[45:46], 0.5
	v_mul_f64 v[72:73], v[29:30], -v[45:46]
	v_cndmask_b32_e64 v14, v43, v49, s1
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[64:65], -v[62:63], 1.0
	v_cndmask_b32_e64 v49, v44, v50, s1
	v_add_f64 v[68:69], -v[64:65], 1.0
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[62:63], v[68:69], -v[62:63]
	v_fma_f64 v[68:69], v[45:46], s[98:99], s[86:87]
	s_mov_b32 s98, 0x796cde01
	s_mov_b32 s99, 0x3ec71de3
	s_mov_b32 s86, 0xf9a43bb8
	s_mov_b32 s87, 0x3de5e0b2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[62:63], v[29:30], -v[31:32], v[62:63]
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[98:99]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[88:89]
	s_mov_b32 s88, 0xceddb853
	s_mov_b32 s89, 0x3f783dde
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[70:71]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[68:69], v[72:73], v[68:69], v[70:71]
	v_fma_f64 v[31:32], v[45:46], v[68:69], -v[31:32]
	v_fma_f64 v[68:69], v[45:46], s[100:101], s[80:81]
	s_mov_b32 s100, 0x16c16967
	s_mov_b32 s101, 0xbf56c16c
	s_mov_b32 s80, 0x46cc5e42
	s_mov_b32 s81, 0xbda907db
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[31:32], v[72:73], s[90:91], v[31:32]
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[8:9]
	s_mov_b32 s8, 0x19f4ec90
	s_mov_b32 s9, 0x3efa01a0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[8:9]
	v_and_b32_e32 v31, 1, v10
	v_lshlrev_b32_e32 v10, 30, v10
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_eq_u32_e64 s1, 0, v31
	v_xor_b32_e32 v10, v10, v36
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_and_b32_e32 v10, 0x80000000, v10
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[100:101]
	v_fma_f64 v[68:69], v[45:46], v[68:69], s[6:7]
	v_mul_f64 v[45:46], v[45:46], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[45:46], v[68:69], v[62:63]
	v_add_f64 v[43:44], v[64:65], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v31, v43, v29, s1
	v_cndmask_b32_e64 v32, v44, v30, s1
	global_load_b64 v[43:44], v[19:20], off offset:16
	v_lshlrev_b32_e32 v29, 30, v53
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v11, v29, v11
	v_cndmask_b32_e64 v29, 0, v14, s2
                                        ; implicit-def: $vgpr14
	v_and_b32_e32 v11, 0x80000000, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v11, v49, v11
	v_cndmask_b32_e64 v30, 0x7ff80000, v11, s2
	v_xor_b32_e32 v11, v32, v10
	v_cndmask_b32_e32 v10, 0, v31, vcc_lo
                                        ; implicit-def: $vgpr31_vgpr32
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_mul_f64 v[29:30], v[29:30], s[88:89]
	v_cndmask_b32_e32 v11, 0x7ff80000, v11, vcc_lo
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[10:11], v[29:30], v[10:11], v[47:48]
                                        ; implicit-def: $vgpr29_vgpr30
	global_store_b64 v[19:20], v[10:11], off offset:8
	s_and_saveexec_b32 s1, s0
	s_xor_b32 s1, exec_lo, s1
	s_cbranch_execz .LBB0_37
; %bb.36:                               ;   in Loop: Header=BB0_4 Depth=2
	v_cmp_le_f64_e64 s0, 0x7b000000, v[35:36]
	s_mov_b32 s2, 0x54442d18
	s_mov_b32 s3, 0xbff921fb
	s_mov_b32 s96, s2
	s_mov_b32 s69, s103
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v30, v36, v42, s0
	v_cndmask_b32_e64 v29, v35, v41, s0
	v_mul_f64 v[31:32], v[39:40], v[29:30]
	v_mul_f64 v[41:42], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[39:40], v[29:30], -v[31:32]
	v_mul_f64 v[39:40], v[37:38], v[29:30]
	v_fma_f64 v[37:38], v[37:38], v[29:30], -v[39:40]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[29:30], v[33:34], v[29:30], -v[41:42]
	v_add_f64 v[33:34], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[33:34], -v[39:40]
	v_add_f64 v[35:36], v[35:36], -v[45:46]
	v_add_f64 v[45:46], v[33:34], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[39:40], -v[45:46]
	v_add_f64 v[45:46], v[31:32], v[33:34]
	v_add_f64 v[31:32], v[45:46], -v[31:32]
	v_ldexp_f64 v[45:46], v[45:46], -2
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_add_f64 v[33:34], v[35:36], v[39:40]
	v_add_f64 v[35:36], v[41:42], v[37:38]
	v_cmp_neq_f64_e64 s0, 0x7ff00000, |v[45:46]|
	v_fract_f64_e32 v[45:46], v[45:46]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[35:36], -v[41:42]
	v_cndmask_b32_e64 v46, 0, v46, s0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cndmask_b32_e64 v45, 0, v45, s0
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[39:40], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	v_add_f64 v[41:42], v[35:36], v[33:34]
	v_add_f64 v[37:38], v[37:38], v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[41:42], -v[35:36]
	v_add_f64 v[39:40], v[31:32], v[41:42]
	v_add_f64 v[33:34], v[33:34], -v[47:48]
	v_add_f64 v[47:48], v[41:42], -v[47:48]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[39:40], -v[31:32]
	v_add_f64 v[35:36], v[35:36], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[41:42], -v[31:32]
	v_add_f64 v[33:34], v[33:34], v[35:36]
	v_ldexp_f64 v[35:36], v[45:46], 2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[33:34], v[37:38], v[33:34]
	v_add_f64 v[45:46], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[33:34]
	v_cmp_gt_f64_e64 s0, 0, v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[31:32], v[29:30]
	v_cndmask_b32_e64 v14, 0, 0x40100000, s0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[13:14]
	v_add_f64 v[37:38], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f64_e32 v45, v[37:38]
	v_cvt_f64_i32_e32 v[37:38], v45
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_add_f64 v[33:34], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[33:34], -v[35:36]
	v_cmp_le_f64_e64 s0, 0.5, v[33:34]
	v_add_f64 v[31:32], v[39:40], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v14, 0, 0x3ff00000, s0
	v_add_f64 v[29:30], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[33:34], -v[13:14]
	v_add_co_ci_u32_e64 v14, s0, 0, v45, s0
	v_add_f64 v[33:34], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_f64 v[35:36], v[33:34], s[96:97]
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_fma_f64 v[37:38], v[33:34], s[96:97], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_fma_f64 v[31:32], v[33:34], s[68:69], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], s[96:97], v[31:32]
	v_add_f64 v[29:30], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[29:30], -v[35:36]
                                        ; implicit-def: $vgpr35_vgpr36
	v_add_f64 v[31:32], v[31:32], -v[33:34]
.LBB0_37:                               ; %Flow
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_and_not1_saveexec_b32 s0, s1
	s_cbranch_execz .LBB0_39
; %bb.38:                               ;   in Loop: Header=BB0_4 Depth=2
	s_mov_b32 s2, 0x6dc9c883
	s_mov_b32 s3, 0x3fe45f30
	s_mov_b32 s102, s78
	v_mul_f64 v[29:30], v[35:36], s[2:3]
	s_mov_b32 s2, 0x54442d18
	s_mov_b32 s3, 0xbff921fb
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rndne_f64_e32 v[33:34], v[29:30]
	v_fma_f64 v[29:30], v[33:34], s[2:3], v[35:36]
	v_mul_f64 v[31:32], v[33:34], s[78:79]
	s_mov_b32 s2, 0x252049c0
	s_mov_b32 s3, 0xb97b839a
	v_cvt_i32_f64_e32 v14, v[33:34]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[37:38], v[33:34], s[78:79], v[29:30]
	v_add_f64 v[35:36], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[29:30], v[29:30], -v[35:36]
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[31:32]
	v_fma_f64 v[31:32], v[33:34], s[102:103], v[31:32]
	v_add_f64 v[29:30], v[35:36], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_fma_f64 v[31:32], v[33:34], s[2:3], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[37:38], v[31:32]
	v_add_f64 v[35:36], v[29:30], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], -v[35:36]
.LBB0_39:                               ; %_ZL3cosd.exit178
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s0
	v_frexp_mant_f64_e64 v[35:36], |v[4:5]|
	s_mov_b32 s0, 0x59f383c9
	s_mov_b32 s1, 0x3f782c31
	s_mov_b32 s38, s12
	s_waitcnt vmcnt(0)
	v_add_f64 v[33:34], v[43:44], s[0:1]
	v_frexp_exp_i32_f64_e32 v37, v[4:5]
	s_mov_b32 s44, s34
	s_mov_b32 s46, s36
	s_mov_b32 s71, s61
	s_mov_b32 s90, s12
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e64 s0, s[12:13], v[35:36]
	v_cndmask_b32_e64 v43, 0, 1, s0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_subrev_co_ci_u32_e64 v37, s0, 0, v37, s0
	v_ldexp_f64 v[35:36], v[35:36], v43
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cvt_f64_i32_e32 v[37:38], v37
	v_add_f64 v[45:46], v[35:36], 1.0
	v_add_f64 v[43:44], v[35:36], -1.0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	v_rcp_f64_e32 v[47:48], v[45:46]
	v_add_f64 v[53:54], v[45:46], -1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[41:42], v[37:38], s[34:35], -v[39:40]
	v_add_f64 v[35:36], v[35:36], -v[53:54]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	v_add_f64 v[41:42], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[49:50], v[43:44], v[47:48]
	v_mul_f64 v[51:52], v[45:46], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[49:50], v[45:46], -v[51:52]
	v_fma_f64 v[35:36], v[49:50], v[35:36], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[51:52], v[35:36]
	v_add_f64 v[53:54], v[43:44], -v[45:46]
	v_add_f64 v[51:52], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	v_add_f64 v[35:36], v[51:52], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	v_add_f64 v[35:36], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[53:54], v[35:36]
	v_mul_f64 v[35:36], v[47:48], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[49:50], v[35:36]
	v_add_f64 v[49:50], v[43:44], -v[49:50]
	v_mul_f64 v[47:48], v[43:44], v[43:44]
	v_ldexp_f64 v[45:46], v[43:44], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[35:36], -v[49:50]
	v_fma_f64 v[51:52], v[43:44], v[43:44], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[49:50], v[35:36], v[35:36]
	v_fma_f64 v[49:50], v[43:44], v[49:50], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[47:48], v[49:50]
	v_fma_f64 v[60:61], v[51:52], s[16:17], s[14:15]
	v_mul_f64 v[53:54], v[43:44], v[51:52]
	v_add_f64 v[47:48], v[51:52], -v[47:48]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[18:19]
	v_add_f64 v[47:48], v[49:50], -v[47:48]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[49:50], v[51:52], v[43:44], -v[53:54]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[20:21]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_fma_f64 v[49:50], v[51:52], v[35:36], v[49:50]
	v_ldexp_f64 v[35:36], v[35:36], 1
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[22:23]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[43:44], v[47:48], v[43:44], v[49:50]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[24:25]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[49:50], v[53:54], v[43:44]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[26:27]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[53:54], v[49:50], -v[53:54]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[28:29]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[62:63], v[51:52], v[60:61]
	v_fma_f64 v[51:52], v[51:52], v[60:61], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[47:48], v[60:61], v[51:52]
	v_add_f64 v[51:52], v[62:63], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[60:61], v[51:52], s[12:13]
	v_add_f64 v[62:63], v[51:52], -v[62:63]
	v_add_f64 v[47:48], v[47:48], -v[62:63]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[62:63], v[60:61], s[38:39]
	v_add_f64 v[47:48], v[47:48], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[51:52], -v[62:63]
	v_add_f64 v[47:48], v[47:48], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[60:61], v[47:48]
	v_mul_f64 v[62:63], v[49:50], v[51:52]
	v_add_f64 v[53:54], v[60:61], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[47:48], v[47:48], v[53:54]
	v_fma_f64 v[53:54], v[49:50], v[51:52], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[53:54]
	v_fma_f64 v[43:44], v[43:44], v[51:52], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[62:63], v[43:44]
	v_add_f64 v[51:52], v[47:48], -v[62:63]
	v_add_f64 v[49:50], v[45:46], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], -v[51:52]
	v_add_f64 v[35:36], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[49:50], -v[45:46]
	v_add_f64 v[43:44], v[47:48], -v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[43:44], v[49:50], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[45:46], v[41:42], v[43:44]
	v_add_f64 v[39:40], v[43:44], -v[49:50]
	v_add_f64 v[47:48], v[45:46], -v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	v_add_f64 v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[47:48], v[45:46], -v[47:48]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[37:38], v[35:36]
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[39:40], -v[37:38]
	v_add_f64 v[41:42], v[43:44], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[47:48]
	v_add_f64 v[41:42], v[39:40], v[41:42]
	v_add_f64 v[39:40], v[39:40], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[45:46], v[41:42]
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[35:36], v[37:38]
	v_add_f64 v[37:38], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[41:42], -v[37:38]
	v_add_f64 v[35:36], v[35:36], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[43:44], v[35:36]
	v_add_f64 v[39:40], v[37:38], v[37:38]
	v_add_f64 v[41:42], v[37:38], -v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[37:38], v[37:38], 2.0, -v[39:40]
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_cmp_class_f64_e64 s0, v[39:40], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[35:36], 2.0, v[37:38]
	v_add_f64 v[37:38], v[39:40], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v42, v38, v40, s0
	v_cndmask_b32_e64 v41, v37, v39, s0
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
	v_mul_f64 v[43:44], v[41:42], s[42:43]
	v_cmp_nlt_f64_e64 s0, 0x40900000, v[41:42]
	v_cmp_ngt_f64_e64 s1, 0xc090cc00, v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_frexp_exp_i32_f64_e32 v37, v[2:3]
	v_rndne_f64_e32 v[43:44], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[43:44], s[44:45], v[41:42]
	v_fma_f64 v[45:46], v[43:44], s[46:47], v[45:46]
	v_cvt_i32_f64_e32 v43, v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], s[50:51], s[48:49]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[54:55]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[58:59]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[62:63]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[66:67]
	v_fma_f64 v[47:48], v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[45:46], v[47:48], 1.0
	v_ldexp_f64 v[43:44], v[45:46], v43
	s_delay_alu instid0(VALU_DEP_1)
	v_cndmask_b32_e64 v44, 0x7ff00000, v44, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_cndmask_b32_e64 v43, 0, v43, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v44, 0, v44, s1
	v_cmp_neq_f64_e64 s1, 0x7ff00000, |v[41:42]|
	v_cmp_class_f64_e64 s0, v[43:44], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, 0, v36, s1
	v_cndmask_b32_e64 v35, 0, v35, s1
	v_cmp_neq_f64_e64 s1, 0, v[4:5]
	v_fma_f64 v[35:36], v[43:44], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, v36, v44, s0
	v_cndmask_b32_e64 v35, v35, v43, s0
	v_cmp_neq_f64_e64 s0, 0x7ff00000, |v[4:5]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v36, 0x7fffffff, v36
	v_cndmask_b32_e64 v36, 0x7ff00000, v36, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v4, 0, v35, s0
	v_cndmask_b32_e64 v5, 0, v36, s1
	v_frexp_mant_f64_e64 v[35:36], |v[2:3]|
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e64 s0, s[12:13], v[35:36]
	v_cndmask_b32_e64 v43, 0, 1, s0
	v_subrev_co_ci_u32_e64 v37, s0, 0, v37, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[35:36], v[35:36], v43
	v_cvt_f64_i32_e32 v[37:38], v37
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[45:46], v[35:36], 1.0
	v_add_f64 v[43:44], v[35:36], -1.0
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rcp_f64_e32 v[47:48], v[45:46]
	v_add_f64 v[53:54], v[45:46], -1.0
	v_fma_f64 v[41:42], v[37:38], s[34:35], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[53:54]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[41:42]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], v[37:38]
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_mul_f64 v[49:50], v[43:44], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[51:52], v[45:46], v[49:50]
	v_fma_f64 v[45:46], v[49:50], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[49:50], v[35:36], v[45:46]
	v_add_f64 v[45:46], v[51:52], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[53:54], v[43:44], -v[45:46]
	v_add_f64 v[51:52], v[45:46], -v[51:52]
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[51:52], -v[35:36]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[35:36], v[53:54], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[47:48], v[35:36]
	v_add_f64 v[43:44], v[49:50], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[49:50], v[43:44], -v[49:50]
	v_mul_f64 v[47:48], v[43:44], v[43:44]
	v_ldexp_f64 v[45:46], v[43:44], 1
	v_add_f64 v[35:36], v[35:36], -v[49:50]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[51:52], v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[49:50], v[35:36], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[43:44], v[49:50], v[51:52]
	v_add_f64 v[51:52], v[47:48], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_fma_f64 v[60:61], v[51:52], s[16:17], s[14:15]
	v_mul_f64 v[53:54], v[43:44], v[51:52]
	v_add_f64 v[47:48], v[51:52], -v[47:48]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[18:19]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[47:48], v[49:50], -v[47:48]
	v_fma_f64 v[49:50], v[51:52], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[20:21]
	v_fma_f64 v[49:50], v[51:52], v[35:36], v[49:50]
	v_ldexp_f64 v[35:36], v[35:36], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[22:23]
	v_fma_f64 v[43:44], v[47:48], v[43:44], v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[24:25]
	v_add_f64 v[49:50], v[53:54], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[26:27]
	v_add_f64 v[53:54], v[49:50], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[28:29]
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[30:31]
	v_mul_f64 v[62:63], v[51:52], v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[51:52], v[51:52], v[60:61], -v[62:63]
	v_fma_f64 v[47:48], v[47:48], v[60:61], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[62:63], v[47:48]
	v_add_f64 v[60:61], v[51:52], s[12:13]
	v_add_f64 v[62:63], v[51:52], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[47:48], v[47:48], -v[62:63]
	v_add_f64 v[62:63], v[60:61], s[38:39]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[47:48], s[40:41]
	v_add_f64 v[51:52], v[51:52], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[47:48], v[51:52]
	v_add_f64 v[51:52], v[60:61], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_mul_f64 v[62:63], v[49:50], v[51:52]
	v_add_f64 v[53:54], v[60:61], -v[51:52]
	v_add_f64 v[47:48], v[47:48], v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[53:54], v[49:50], v[51:52], -v[62:63]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[43:44], v[51:52], v[47:48]
	v_add_f64 v[47:48], v[62:63], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[47:48], -v[62:63]
	v_add_f64 v[49:50], v[45:46], v[47:48]
	v_add_f64 v[43:44], v[43:44], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[43:44], v[49:50], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[47:48], -v[43:44]
	v_add_f64 v[35:36], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[49:50], v[35:36]
	v_add_f64 v[45:46], v[41:42], v[43:44]
	v_add_f64 v[39:40], v[43:44], -v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[45:46], -v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[47:48], v[45:46], -v[47:48]
	v_add_f64 v[39:40], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	v_add_f64 v[47:48], v[39:40], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[43:44], v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], v[41:42]
	v_add_f64 v[39:40], v[39:40], -v[47:48]
	v_add_f64 v[43:44], v[45:46], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[35:36], v[35:36], v[37:38]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[43:44], -v[45:46]
	v_add_f64 v[37:38], v[41:42], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[37:38]
	v_add_f64 v[37:38], v[43:44], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[37:38], v[37:38]
	v_add_f64 v[41:42], v[37:38], -v[43:44]
	v_fma_f64 v[37:38], v[37:38], 2.0, -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_cmp_class_f64_e64 s0, v[39:40], 0x204
	v_fma_f64 v[35:36], v[35:36], 2.0, v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[39:40], v[35:36]
	v_cndmask_b32_e64 v42, v38, v40, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v41, v37, v39, s0
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_mul_f64 v[43:44], v[41:42], s[42:43]
	v_cmp_nlt_f64_e64 s0, 0x40900000, v[41:42]
	v_cmp_ngt_f64_e64 s1, 0xc090cc00, v[41:42]
	s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_frexp_exp_i32_f64_e32 v37, v[0:1]
	v_rndne_f64_e32 v[43:44], v[43:44]
	v_fma_f64 v[45:46], v[43:44], s[44:45], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[45:46], v[43:44], s[46:47], v[45:46]
	v_cvt_i32_f64_e32 v43, v[43:44]
	v_fma_f64 v[47:48], v[45:46], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[52:53]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[56:57]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[60:61]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[64:65]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], 1.0
	v_fma_f64 v[45:46], v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[43:44], v[45:46], v43
	v_cndmask_b32_e64 v44, 0x7ff00000, v44, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_cndmask_b32_e64 v43, 0, v43, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v44, 0, v44, s1
	v_cmp_neq_f64_e64 s1, 0x7ff00000, |v[41:42]|
	v_cmp_class_f64_e64 s0, v[43:44], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, 0, v36, s1
	v_cndmask_b32_e64 v35, 0, v35, s1
	v_cmp_neq_f64_e64 s1, 0, v[2:3]
	v_fma_f64 v[35:36], v[43:44], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, v36, v44, s0
	v_cndmask_b32_e64 v35, v35, v43, s0
	v_cmp_neq_f64_e64 s0, 0x7ff00000, |v[2:3]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v36, 0x7fffffff, v36
	v_cndmask_b32_e64 v36, 0x7ff00000, v36, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v2, 0, v35, s0
	v_cndmask_b32_e64 v3, 0, v36, s1
	v_frexp_mant_f64_e64 v[35:36], |v[0:1]|
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e64 s0, s[12:13], v[35:36]
	v_cndmask_b32_e64 v43, 0, 1, s0
	v_subrev_co_ci_u32_e64 v37, s0, 0, v37, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[35:36], v[35:36], v43
	v_cvt_f64_i32_e32 v[37:38], v37
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[45:46], v[35:36], 1.0
	v_add_f64 v[43:44], v[35:36], -1.0
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rcp_f64_e32 v[47:48], v[45:46]
	v_add_f64 v[53:54], v[45:46], -1.0
	v_fma_f64 v[41:42], v[37:38], s[34:35], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[53:54]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[41:42]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], v[37:38]
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_mul_f64 v[49:50], v[43:44], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[51:52], v[45:46], v[49:50]
	v_fma_f64 v[45:46], v[49:50], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[49:50], v[35:36], v[45:46]
	v_add_f64 v[45:46], v[51:52], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[53:54], v[43:44], -v[45:46]
	v_add_f64 v[51:52], v[45:46], -v[51:52]
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[51:52], -v[35:36]
	v_add_f64 v[43:44], v[43:44], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[35:36], v[53:54], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[47:48], v[35:36]
	v_add_f64 v[43:44], v[49:50], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[49:50], v[43:44], -v[49:50]
	v_mul_f64 v[47:48], v[43:44], v[43:44]
	v_ldexp_f64 v[45:46], v[43:44], 1
	v_add_f64 v[35:36], v[35:36], -v[49:50]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[51:52], v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[49:50], v[35:36], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[43:44], v[49:50], v[51:52]
	v_add_f64 v[51:52], v[47:48], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_fma_f64 v[60:61], v[51:52], s[16:17], s[14:15]
	v_mul_f64 v[53:54], v[43:44], v[51:52]
	v_add_f64 v[47:48], v[51:52], -v[47:48]
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[18:19]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[47:48], v[49:50], -v[47:48]
	v_fma_f64 v[49:50], v[51:52], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[20:21]
	v_fma_f64 v[49:50], v[51:52], v[35:36], v[49:50]
	v_ldexp_f64 v[35:36], v[35:36], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[22:23]
	v_fma_f64 v[43:44], v[47:48], v[43:44], v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[24:25]
	v_add_f64 v[49:50], v[53:54], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[26:27]
	v_add_f64 v[53:54], v[49:50], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[28:29]
	v_add_f64 v[43:44], v[43:44], -v[53:54]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[60:61], v[51:52], v[60:61], s[30:31]
	v_mul_f64 v[62:63], v[51:52], v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[51:52], v[51:52], v[60:61], -v[62:63]
	v_fma_f64 v[47:48], v[47:48], v[60:61], v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[51:52], v[62:63], v[47:48]
	v_add_f64 v[60:61], v[51:52], s[12:13]
	v_add_f64 v[62:63], v[51:52], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[47:48], v[47:48], -v[62:63]
	v_add_f64 v[62:63], v[60:61], s[38:39]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[47:48], s[40:41]
	v_add_f64 v[51:52], v[51:52], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[47:48], v[51:52]
	v_add_f64 v[51:52], v[60:61], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_mul_f64 v[62:63], v[49:50], v[51:52]
	v_add_f64 v[53:54], v[60:61], -v[51:52]
	v_add_f64 v[47:48], v[47:48], v[53:54]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[53:54], v[49:50], v[51:52], -v[62:63]
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[43:44], v[51:52], v[47:48]
	v_add_f64 v[47:48], v[62:63], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[51:52], v[47:48], -v[62:63]
	v_add_f64 v[49:50], v[45:46], v[47:48]
	v_add_f64 v[43:44], v[43:44], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[35:36], v[43:44]
	v_add_f64 v[43:44], v[49:50], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[47:48], -v[43:44]
	v_add_f64 v[35:36], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[49:50], v[35:36]
	v_add_f64 v[45:46], v[41:42], v[43:44]
	v_add_f64 v[39:40], v[43:44], -v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[47:48], v[45:46], -v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[47:48], v[45:46], -v[47:48]
	v_add_f64 v[39:40], v[37:38], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	v_add_f64 v[47:48], v[39:40], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[43:44], v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], v[41:42]
	v_add_f64 v[39:40], v[39:40], -v[47:48]
	v_add_f64 v[43:44], v[45:46], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[35:36], v[35:36], v[37:38]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[43:44], -v[45:46]
	v_add_f64 v[37:38], v[41:42], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], v[37:38]
	v_add_f64 v[37:38], v[43:44], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[37:38], v[37:38]
	v_add_f64 v[41:42], v[37:38], -v[43:44]
	v_fma_f64 v[37:38], v[37:38], 2.0, -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[35:36], -v[41:42]
	v_cmp_class_f64_e64 s0, v[39:40], 0x204
	v_fma_f64 v[35:36], v[35:36], 2.0, v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[39:40], v[35:36]
	v_cndmask_b32_e64 v42, v38, v40, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v41, v37, v39, s0
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_mul_f64 v[43:44], v[41:42], s[42:43]
	v_cmp_nlt_f64_e64 s0, 0x40900000, v[41:42]
	v_cmp_ngt_f64_e64 s1, 0xc090cc00, v[41:42]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_rndne_f64_e32 v[43:44], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[43:44], s[44:45], v[41:42]
	v_fma_f64 v[45:46], v[43:44], s[46:47], v[45:46]
	v_cvt_i32_f64_e32 v43, v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], s[50:51], s[48:49]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[54:55]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[58:59]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[62:63]
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[45:46], v[47:48], s[66:67]
	v_fma_f64 v[47:48], v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[45:46], v[47:48], 1.0
	v_ldexp_f64 v[43:44], v[45:46], v43
	s_delay_alu instid0(VALU_DEP_1)
	v_cndmask_b32_e64 v44, 0x7ff00000, v44, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_cndmask_b32_e64 v43, 0, v43, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v44, 0, v44, s1
	v_cmp_neq_f64_e64 s1, 0x7ff00000, |v[41:42]|
	v_cmp_class_f64_e64 s0, v[43:44], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, 0, v36, s1
	v_cndmask_b32_e64 v35, 0, v35, s1
	v_cmp_neq_f64_e64 s1, 0, v[0:1]
	v_fma_f64 v[35:36], v[43:44], v[35:36], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v36, v36, v44, s0
	v_cndmask_b32_e64 v35, v35, v43, s0
	v_cmp_neq_f64_e64 s0, 0x7ff00000, |v[0:1]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v36, 0x7fffffff, v36
	v_cndmask_b32_e64 v36, 0x7ff00000, v36, s0
	s_and_b32 s0, s1, s0
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v0, 0, v35, s0
	s_mov_b32 s0, s12
	v_cndmask_b32_e64 v1, 0, v36, s1
	s_mov_b32 s1, s63
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[0:1], v[0:1], v[2:3]
	v_mul_f64 v[2:3], v[29:30], v[29:30]
	v_add_f64 v[0:1], v[0:1], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_mul_f64 v[4:5], v[2:3], 0.5
	v_fma_f64 v[39:40], v[2:3], s[80:81], s[94:95]
	s_mov_b32 s94, 0xa17f65f6
	s_mov_b32 s95, 0xbe927e4f
	v_add_f64 v[35:36], -v[4:5], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[39:40], v[2:3], v[39:40], s[94:95]
	v_add_f64 v[37:38], -v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[39:40], v[2:3], v[39:40], s[8:9]
	v_add_f64 v[4:5], v[37:38], -v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_fma_f64 v[39:40], v[2:3], v[39:40], s[100:101]
	v_mul_f64 v[37:38], v[2:3], v[2:3]
	v_fma_f64 v[4:5], v[29:30], -v[31:32], v[4:5]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[2:3], v[39:40], s[0:1]
	v_fma_f64 v[4:5], v[37:38], v[39:40], v[4:5]
	v_mul_f64 v[37:38], v[29:30], -v[2:3]
	v_mul_f64 v[39:40], v[31:32], 0.5
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[35:36], v[4:5]
	v_fma_f64 v[35:36], v[2:3], s[86:87], s[82:83]
	s_mov_b32 s82, 0xfae2db4a
	s_mov_b32 s83, 0x3ab5d18e
	v_fma_f64 v[35:36], v[2:3], v[35:36], s[98:99]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[2:3], v[35:36], s[76:77]
	v_fma_f64 v[35:36], v[2:3], v[35:36], s[70:71]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[37:38], v[35:36], v[39:40]
	v_fma_f64 v[2:3], v[2:3], v[35:36], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[2:3], v[37:38], s[90:91], v[2:3]
	v_add_f64 v[2:3], v[29:30], -v[2:3]
	v_and_b32_e32 v29, 1, v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cmp_eq_u32_e64 s0, 0, v29
	v_xor_b32_e32 v3, 0x80000000, v3
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_cndmask_b32_e64 v2, v2, v4, s0
	v_lshlrev_b32_e32 v4, 30, v14
	v_cndmask_b32_e64 v3, v3, v5, s0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cndmask_b32_e32 v2, 0, v2, vcc_lo
	v_and_b32_e32 v4, 0x80000000, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v3, v3, v4
	v_frexp_mant_f64_e64 v[4:5], |v[6:7]|
	v_cndmask_b32_e32 v3, 0x7ff80000, v3, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[2:3], v[2:3], s[88:89], v[33:34]
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[4:5]
	global_store_b64 v[19:20], v[2:3], off offset:16
	v_cndmask_b32_e64 v14, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[4:5], v[4:5], v14
	v_frexp_exp_i32_f64_e32 v14, v[6:7]
	v_add_f64 v[31:32], v[4:5], 1.0
	v_add_f64 v[29:30], v[4:5], -1.0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	v_add_f64 v[33:34], v[31:32], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_rcp_f64_e32 v[33:34], v[31:32]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[29:30], v[33:34]
	v_mul_f64 v[37:38], v[31:32], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[35:36], v[31:32], -v[37:38]
	v_fma_f64 v[4:5], v[35:36], v[4:5], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[37:38], v[4:5]
	v_add_f64 v[39:40], v[29:30], -v[31:32]
	v_add_f64 v[37:38], v[31:32], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], -v[39:40]
	v_add_f64 v[4:5], v[37:38], -v[4:5]
	v_cvt_f64_i32_e32 v[37:38], v14
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_add_f64 v[4:5], v[4:5], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[4:5], v[39:40], v[4:5]
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[4:5], v[33:34], v[4:5]
	v_fma_f64 v[41:42], v[37:38], s[34:35], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[35:36], v[4:5]
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[41:42]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	v_add_f64 v[41:42], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_mul_f64 v[31:32], v[29:30], v[29:30]
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[4:5], v[4:5]
	v_fma_f64 v[33:34], v[29:30], v[29:30], -v[31:32]
	v_ldexp_f64 v[43:44], v[4:5], 1
	s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_ldexp_f64 v[39:40], v[29:30], 1
	v_fma_f64 v[33:34], v[29:30], v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[31:32], v[33:34]
	v_add_f64 v[31:32], v[35:36], -v[31:32]
	v_mul_f64 v[45:46], v[29:30], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_fma_f64 v[33:34], v[35:36], s[16:17], s[14:15]
	v_fma_f64 v[47:48], v[35:36], v[29:30], -v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[18:19]
	v_fma_f64 v[4:5], v[35:36], v[4:5], v[47:48]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[20:21]
	v_fma_f64 v[4:5], v[31:32], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[22:23]
	v_add_f64 v[29:30], v[45:46], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[24:25]
	v_add_f64 v[45:46], v[29:30], -v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[26:27]
	v_add_f64 v[4:5], v[4:5], -v[45:46]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[28:29]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[45:46], v[35:36], v[33:34]
	v_fma_f64 v[35:36], v[35:36], v[33:34], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[31:32], v[33:34], v[35:36]
	v_add_f64 v[33:34], v[45:46], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[33:34], -v[45:46]
	v_add_f64 v[31:32], v[31:32], -v[35:36]
	v_add_f64 v[35:36], v[33:34], s[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[31:32], s[40:41]
	v_add_f64 v[45:46], v[35:36], s[38:39]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], -v[45:46]
	v_add_f64 v[31:32], v[31:32], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[35:36], v[31:32]
	v_add_f64 v[35:36], v[35:36], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], v[35:36]
	v_mul_f64 v[35:36], v[29:30], v[33:34]
	v_fma_f64 v[45:46], v[29:30], v[33:34], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[45:46]
	v_fma_f64 v[4:5], v[4:5], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[35:36], v[4:5]
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[31:32], v[39:40], v[29:30]
	v_add_f64 v[4:5], v[43:44], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[31:32], -v[39:40]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], v[29:30]
	v_add_f64 v[29:30], v[31:32], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[31:32]
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[31:32], v[41:42], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[31:32], -v[41:42]
	v_add_f64 v[35:36], v[31:32], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[37:38], v[4:5]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[41:42], -v[35:36]
	v_add_f64 v[29:30], v[29:30], v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[33:34], -v[37:38]
	v_add_f64 v[29:30], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[39:40], v[33:34], -v[35:36]
	v_add_f64 v[4:5], v[4:5], -v[35:36]
	v_add_f64 v[33:34], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], v[37:38]
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], v[29:30]
	v_add_f64 v[29:30], v[33:34], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[33:34]
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[31:32], v[29:30], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[29:30], v[29:30], 2.0, -v[31:32]
	v_cmp_class_f64_e64 vcc_lo, v[31:32], 0x204
	v_fma_f64 v[4:5], v[4:5], 2.0, v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[31:32], v[4:5]
	v_add_f64 v[33:34], v[29:30], -v[31:32]
	v_dual_cndmask_b32 v30, v30, v32 :: v_dual_cndmask_b32 v29, v29, v31
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
	v_mul_f64 v[31:32], v[29:30], s[42:43]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[29:30]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[29:30]
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_rndne_f64_e32 v[31:32], v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_dual_cndmask_b32 v5, 0, v5 :: v_dual_cndmask_b32 v4, 0, v4
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[29:30]
	v_fma_f64 v[33:34], v[31:32], s[44:45], v[29:30]
	v_cvt_i32_f64_e32 v14, v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], s[46:47], v[33:34]
	v_fma_f64 v[35:36], v[33:34], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[52:53]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[56:57]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[60:61]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[64:65]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], 1.0
	v_fma_f64 v[33:34], v[33:34], v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[31:32], v[33:34], v14
	v_cndmask_b32_e32 v14, 0x7ff00000, v32, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v29, 0, v31, vcc_lo
	v_cndmask_b32_e64 v30, 0, v14, s0
	v_cmp_neq_f64_e64 s0, 0, v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[4:5], v[29:30], v[4:5], v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	v_dual_cndmask_b32 v5, v5, v30 :: v_dual_cndmask_b32 v4, v4, v29
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[6:7]|
	v_frexp_mant_f64_e64 v[6:7], |v[10:11]|
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v5, 0x7fffffff, v5
	v_cndmask_b32_e32 v5, 0x7ff00000, v5, vcc_lo
	s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v4, 0, v4, vcc_lo
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[6:7]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v5, 0, v5, s0
	v_cndmask_b32_e64 v14, 0, 1, vcc_lo
	v_ldexp_f64 v[6:7], v[6:7], v14
	v_frexp_exp_i32_f64_e32 v14, v[10:11]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[31:32], v[6:7], 1.0
	v_add_f64 v[29:30], v[6:7], -1.0
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v14, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[31:32], -1.0
	v_add_f64 v[6:7], v[6:7], -v[33:34]
	v_rcp_f64_e32 v[33:34], v[31:32]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_fma_f64 v[35:36], -v[31:32], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], v[33:34]
	v_mul_f64 v[35:36], v[29:30], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[37:38], v[31:32], v[35:36]
	v_fma_f64 v[31:32], v[35:36], v[31:32], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[35:36], v[6:7], v[31:32]
	v_add_f64 v[31:32], v[37:38], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[39:40], v[29:30], -v[31:32]
	v_add_f64 v[37:38], v[31:32], -v[37:38]
	v_add_f64 v[29:30], v[29:30], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[6:7], v[37:38], -v[6:7]
	v_cvt_f64_i32_e32 v[37:38], v14
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[29:30]
	v_add_f64 v[6:7], v[39:40], v[6:7]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[39:40], v[37:38], s[34:35]
	v_mul_f64 v[6:7], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[41:42], v[37:38], s[34:35], -v[39:40]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[37:38], v[37:38], s[36:37], v[41:42]
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[41:42], v[39:40], v[37:38]
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_mul_f64 v[31:32], v[29:30], v[29:30]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[39:40], v[41:42], -v[39:40]
	v_add_f64 v[35:36], v[6:7], v[6:7]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_fma_f64 v[33:34], v[29:30], v[29:30], -v[31:32]
	v_ldexp_f64 v[43:44], v[6:7], 1
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_ldexp_f64 v[39:40], v[29:30], 1
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[29:30], v[35:36], v[33:34]
	v_add_f64 v[35:36], v[31:32], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[35:36], -v[31:32]
	v_mul_f64 v[45:46], v[29:30], v[35:36]
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_fma_f64 v[33:34], v[35:36], s[16:17], s[14:15]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[47:48], v[35:36], v[29:30], -v[45:46]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[18:19]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[35:36], v[6:7], v[47:48]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[20:21]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[31:32], v[29:30], v[6:7]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[22:23]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[45:46], v[6:7]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[24:25]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[45:46], v[29:30], -v[45:46]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[26:27]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], -v[45:46]
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[28:29]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[35:36], v[33:34], s[30:31]
	v_mul_f64 v[45:46], v[35:36], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[35:36], v[33:34], -v[45:46]
	v_fma_f64 v[31:32], v[31:32], v[33:34], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[45:46], v[31:32]
	v_add_f64 v[35:36], v[33:34], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[31:32], -v[35:36]
	v_add_f64 v[35:36], v[33:34], s[12:13]
	v_add_f64 v[31:32], v[31:32], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[35:36], s[38:39]
	v_add_f64 v[33:34], v[33:34], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[31:32], v[33:34]
	v_add_f64 v[33:34], v[35:36], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[35:36], v[35:36], -v[33:34]
	v_add_f64 v[31:32], v[31:32], v[35:36]
	v_mul_f64 v[35:36], v[29:30], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[29:30], v[33:34], -v[35:36]
	v_fma_f64 v[29:30], v[29:30], v[31:32], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[6:7], v[33:34], v[29:30]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_add_f64 v[31:32], v[39:40], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[43:44], v[6:7]
	v_add_f64 v[33:34], v[31:32], -v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[6:7], v[6:7], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[31:32], v[6:7]
	v_add_f64 v[31:32], v[29:30], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_add_f64 v[31:32], v[41:42], v[29:30]
	v_add_f64 v[33:34], v[31:32], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_add_f64 v[35:36], v[31:32], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[37:38], v[6:7]
	v_add_f64 v[35:36], v[41:42], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[29:30], v[29:30], v[35:36]
	v_add_f64 v[35:36], v[33:34], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[33:34], v[29:30]
	v_add_f64 v[39:40], v[33:34], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[33:34], v[31:32], v[29:30]
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_add_f64 v[6:7], v[6:7], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_add_f64 v[6:7], v[6:7], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[33:34], v[6:7]
	v_add_f64 v[31:32], v[29:30], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_add_f64 v[31:32], v[29:30], v[29:30]
	v_fma_f64 v[29:30], v[29:30], 2.0, -v[31:32]
	v_cmp_class_f64_e64 vcc_lo, v[31:32], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[6:7], 2.0, v[29:30]
	v_add_f64 v[29:30], v[31:32], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[29:30], -v[31:32]
	v_dual_cndmask_b32 v30, v30, v32 :: v_dual_cndmask_b32 v29, v29, v31
	v_mul_f64 v[31:32], v[29:30], s[42:43]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[29:30]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[29:30]
	v_add_f64 v[6:7], v[6:7], -v[33:34]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[31:32], v[31:32]
	v_dual_cndmask_b32 v7, 0, v7 :: v_dual_cndmask_b32 v6, 0, v6
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[29:30]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[33:34], v[31:32], s[44:45], v[29:30]
	v_cvt_i32_f64_e32 v14, v[31:32]
	v_fma_f64 v[33:34], v[31:32], s[46:47], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], s[50:51], s[48:49]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[54:55]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[58:59]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[62:63]
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[33:34], v[35:36], s[66:67]
	v_fma_f64 v[35:36], v[33:34], v[35:36], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[33:34], v[35:36], 1.0
	v_ldexp_f64 v[31:32], v[33:34], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v14, 0x7ff00000, v32, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v29, 0, v31, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v30, 0, v14, s0
	v_cmp_neq_f64_e64 s0, 0, v[10:11]
	v_fma_f64 v[6:7], v[29:30], v[6:7], v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v7, v7, v30 :: v_dual_cndmask_b32 v6, v6, v29
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[10:11]|
	v_and_b32_e32 v7, 0x7fffffff, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v6, 0, v6, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v7, 0, v7, s0
	v_add_f64 v[4:5], v[4:5], v[6:7]
	v_frexp_mant_f64_e64 v[6:7], |v[2:3]|
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[6:7]
	v_cndmask_b32_e64 v10, 0, 1, vcc_lo
	v_ldexp_f64 v[6:7], v[6:7], v10
	v_frexp_exp_i32_f64_e32 v10, v[2:3]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[6:7], 1.0
	v_subrev_co_ci_u32_e32 v14, vcc_lo, 0, v10, vcc_lo
	v_add_f64 v[10:11], v[6:7], -1.0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -1.0
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_rcp_f64_e32 v[31:32], v[29:30]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[33:34], -v[29:30], v[31:32], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[33:34], v[31:32], v[31:32]
	v_fma_f64 v[33:34], -v[29:30], v[31:32], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[33:34], v[31:32], v[31:32]
	v_mul_f64 v[33:34], v[10:11], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[29:30], v[33:34]
	v_fma_f64 v[29:30], v[33:34], v[29:30], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[33:34], v[6:7], v[29:30]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[10:11], -v[29:30]
	v_add_f64 v[35:36], v[29:30], -v[35:36]
	v_add_f64 v[10:11], v[10:11], -v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[35:36], -v[6:7]
	v_add_f64 v[10:11], v[10:11], -v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[10:11]
	v_add_f64 v[6:7], v[37:38], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[6:7], v[31:32], v[6:7]
	v_add_f64 v[35:36], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[35:36], -v[33:34]
	v_ldexp_f64 v[31:32], v[35:36], 1
	v_add_f64 v[33:34], v[6:7], -v[10:11]
	v_mul_f64 v[6:7], v[35:36], v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[33:34], v[33:34]
	v_fma_f64 v[10:11], v[35:36], v[35:36], -v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], v[35:36], v[29:30], v[10:11]
	v_add_f64 v[37:38], v[6:7], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[37:38], -v[6:7]
	v_mul_f64 v[43:44], v[35:36], v[37:38]
	v_add_f64 v[39:40], v[10:11], -v[6:7]
	v_fma_f64 v[6:7], v[37:38], s[16:17], s[14:15]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[45:46], v[37:38], v[35:36], -v[43:44]
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[20:21]
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[24:25]
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[37:38], v[6:7], s[28:29]
	v_fma_f64 v[41:42], v[37:38], v[6:7], s[30:31]
	v_cvt_f64_i32_e32 v[6:7], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[29:30], v[6:7], s[34:35]
	v_fma_f64 v[10:11], v[6:7], s[34:35], -v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[6:7], s[36:37], v[10:11]
	v_add_f64 v[10:11], v[29:30], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[10:11], -v[29:30]
	v_add_f64 v[6:7], v[6:7], -v[29:30]
	v_ldexp_f64 v[29:30], v[33:34], 1
	v_fma_f64 v[33:34], v[37:38], v[33:34], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[39:40], v[35:36], v[33:34]
	v_add_f64 v[35:36], v[43:44], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[35:36], -v[43:44]
	v_add_f64 v[43:44], v[33:34], -v[43:44]
	v_mul_f64 v[33:34], v[37:38], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[37:38], v[37:38], v[41:42], -v[33:34]
	v_fma_f64 v[37:38], v[39:40], v[41:42], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[33:34], v[37:38]
	v_add_f64 v[33:34], v[39:40], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	v_add_f64 v[37:38], v[39:40], s[12:13]
	v_add_f64 v[33:34], v[33:34], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[37:38], s[38:39]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[33:34], v[39:40]
	v_add_f64 v[39:40], v[37:38], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[37:38], -v[39:40]
	v_add_f64 v[37:38], v[33:34], v[37:38]
	v_mul_f64 v[33:34], v[35:36], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[35:36], v[39:40], -v[33:34]
	v_fma_f64 v[35:36], v[35:36], v[37:38], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[35:36], v[43:44], v[39:40], v[35:36]
	v_add_f64 v[37:38], v[33:34], v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[37:38], -v[33:34]
	v_add_f64 v[33:34], v[35:36], -v[33:34]
	v_add_f64 v[35:36], v[31:32], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[29:30], v[33:34]
	v_add_f64 v[31:32], v[35:36], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[37:38], -v[31:32]
	v_add_f64 v[29:30], v[29:30], v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[35:36], v[29:30]
	v_add_f64 v[33:34], v[31:32], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[10:11], v[31:32]
	v_add_f64 v[35:36], v[33:34], -v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[33:34], -v[35:36]
	v_add_f64 v[31:32], v[31:32], -v[35:36]
	v_add_f64 v[10:11], v[10:11], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[31:32], v[10:11]
	v_add_f64 v[31:32], v[6:7], v[29:30]
	v_add_f64 v[35:36], v[31:32], -v[6:7]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[31:32], v[10:11]
	v_add_f64 v[37:38], v[31:32], -v[35:36]
	v_add_f64 v[29:30], v[29:30], -v[35:36]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[37:38]
	v_add_f64 v[6:7], v[29:30], v[6:7]
	v_add_f64 v[29:30], v[33:34], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[33:34]
	v_add_f64 v[10:11], v[10:11], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[10:11]
	v_add_f64 v[10:11], v[29:30], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[10:11], -v[29:30]
	v_add_f64 v[6:7], v[6:7], -v[29:30]
	v_add_f64 v[29:30], v[10:11], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[10:11], v[10:11], 2.0, -v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	v_fma_f64 v[6:7], v[6:7], 2.0, v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[10:11], v[29:30], v[6:7]
	v_add_f64 v[31:32], v[10:11], -v[29:30]
	v_dual_cndmask_b32 v11, v11, v30 :: v_dual_cndmask_b32 v10, v10, v29
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
	v_mul_f64 v[29:30], v[10:11], s[42:43]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[10:11]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[10:11]
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_rndne_f64_e32 v[29:30], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_dual_cndmask_b32 v7, 0, v7 :: v_dual_cndmask_b32 v6, 0, v6
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[10:11]
	v_fma_f64 v[31:32], v[29:30], s[44:45], v[10:11]
	v_cvt_i32_f64_e32 v14, v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], s[46:47], v[31:32]
	v_fma_f64 v[33:34], v[31:32], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[52:53]
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[56:57]
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[60:61]
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[64:65]
	v_fma_f64 v[33:34], v[31:32], v[33:34], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[33:34], v[31:32], v[33:34], 1.0
	v_fma_f64 v[31:32], v[31:32], v[33:34], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ldexp_f64 v[29:30], v[31:32], v14
	v_cndmask_b32_e32 v14, 0x7ff00000, v30, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v10, 0, v29, vcc_lo
	v_cndmask_b32_e64 v11, 0, v14, s0
	v_cmp_neq_f64_e64 s0, 0, v[2:3]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[10:11], v[6:7], v[10:11]
	v_cmp_class_f64_e64 vcc_lo, v[10:11], 0x204
	v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v10
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v7, 0x7fffffff, v7
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v2, 0, v6, vcc_lo
	v_cndmask_b32_e64 v3, 0, v7, s0
	s_mov_b32 s0, 0xfae2db4a
	s_mov_b32 s1, 0x3ab5d18e
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[2:3], v[4:5], v[2:3]
	v_mul_f64 v[2:3], v[2:3], s[0:1]
	s_delay_alu instid0(VALU_DEP_1)
	v_fma_f64 v[10:11], v[0:1], s[0:1], -v[2:3]
.LBB0_40:                               ; %Flow226
                                        ;   in Loop: Header=BB0_4 Depth=2
	s_or_b32 exec_lo, exec_lo, s4
	global_load_b128 v[0:3], v[15:16], off offset:16
	s_mov_b32 s38, s12
	s_mov_b32 s44, s34
	s_mov_b32 s46, s36
	s_waitcnt vmcnt(0)
	v_frexp_mant_f64_e64 v[4:5], |v[2:3]|
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_gt_f64_e32 vcc_lo, s[12:13], v[4:5]
	v_cndmask_b32_e64 v6, 0, 1, vcc_lo
	v_ldexp_f64 v[4:5], v[4:5], v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[4:5], 1.0
	v_rcp_f64_e32 v[29:30], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[31:32], -v[6:7], v[29:30], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[31:32], v[29:30], v[29:30]
	v_fma_f64 v[31:32], -v[6:7], v[29:30], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[31:32], v[29:30], v[29:30]
	v_add_f64 v[31:32], v[6:7], -1.0
	v_add_f64 v[31:32], v[4:5], -v[31:32]
	v_add_f64 v[4:5], v[4:5], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[4:5], v[29:30]
	v_mul_f64 v[35:36], v[6:7], v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[33:34], v[6:7], -v[35:36]
	v_fma_f64 v[6:7], v[33:34], v[31:32], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[35:36], v[6:7]
	v_add_f64 v[35:36], v[31:32], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[35:36], -v[6:7]
	v_add_f64 v[35:36], v[4:5], -v[31:32]
	v_add_f64 v[4:5], v[4:5], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[4:5], v[6:7], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[35:36], v[4:5]
	v_mul_f64 v[4:5], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[33:34], v[4:5]
	v_add_f64 v[6:7], v[31:32], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[4:5], -v[6:7]
	v_mul_f64 v[4:5], v[31:32], v[31:32]
	v_add_f64 v[33:34], v[29:30], v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[31:32], v[31:32], -v[4:5]
	v_fma_f64 v[6:7], v[31:32], v[33:34], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[4:5], v[6:7]
	v_add_f64 v[4:5], v[33:34], -v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[6:7], -v[4:5]
	v_fma_f64 v[6:7], v[33:34], s[16:17], s[14:15]
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[20:21]
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[24:25]
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[28:29]
	v_fma_f64 v[6:7], v[33:34], v[6:7], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[35:36], v[33:34], v[6:7]
	v_fma_f64 v[37:38], v[33:34], v[6:7], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[4:5], v[6:7], v[37:38]
	v_mul_f64 v[37:38], v[31:32], v[33:34]
	v_fma_f64 v[39:40], v[33:34], v[31:32], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[33:34], v[33:34], v[29:30], v[39:40]
	v_add_f64 v[39:40], v[35:36], v[6:7]
	v_ldexp_f64 v[29:30], v[29:30], 1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_fma_f64 v[4:5], v[4:5], v[31:32], v[33:34]
	v_add_f64 v[35:36], v[39:40], -v[35:36]
	v_ldexp_f64 v[31:32], v[31:32], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], -v[35:36]
	v_add_f64 v[35:36], v[39:40], s[12:13]
	v_add_f64 v[6:7], v[6:7], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[35:36], s[38:39]
	v_add_f64 v[39:40], v[39:40], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], v[39:40]
	v_add_f64 v[39:40], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[33:34], v[35:36], -v[39:40]
	v_add_f64 v[35:36], v[37:38], v[4:5]
	v_add_f64 v[6:7], v[6:7], v[33:34]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[35:36], v[39:40]
	v_fma_f64 v[41:42], v[35:36], v[39:40], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[6:7], v[35:36], v[6:7], v[41:42]
	v_add_f64 v[35:36], v[35:36], -v[37:38]
	v_add_f64 v[4:5], v[4:5], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1)
	v_fma_f64 v[35:36], v[4:5], v[39:40], v[6:7]
	global_load_b128 v[4:7], v[15:16], off offset:32
	s_waitcnt vmcnt(0)
	v_frexp_mant_f64_e64 v[37:38], |v[4:5]|
	v_cmp_neq_f64_e64 s3, 0x7ff00000, |v[4:5]|
	v_cmp_neq_f64_e64 s2, 0, v[4:5]
	v_cmp_neq_f64_e64 s4, 0x7ff00000, |v[6:7]|
	v_cmp_neq_f64_e64 s5, 0, v[6:7]
	v_cmp_gt_f64_e64 s0, s[12:13], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v14, 0, 1, s0
	v_ldexp_f64 v[37:38], v[37:38], v14
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[37:38], 1.0
	v_rcp_f64_e32 v[41:42], v[39:40]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[43:44], -v[39:40], v[41:42], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[43:44], v[41:42], v[41:42]
	v_fma_f64 v[43:44], -v[39:40], v[41:42], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[43:44], v[41:42], v[41:42]
	v_add_f64 v[43:44], v[39:40], -1.0
	v_add_f64 v[43:44], v[37:38], -v[43:44]
	v_add_f64 v[37:38], v[37:38], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[45:46], v[37:38], v[41:42]
	v_mul_f64 v[47:48], v[39:40], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[39:40], v[45:46], v[39:40], -v[47:48]
	v_fma_f64 v[39:40], v[45:46], v[43:44], v[39:40]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[47:48], v[39:40]
	v_add_f64 v[47:48], v[43:44], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[47:48], -v[39:40]
	v_add_f64 v[47:48], v[37:38], -v[43:44]
	v_add_f64 v[37:38], v[37:38], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[37:38], -v[43:44]
	v_add_f64 v[37:38], v[39:40], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[37:38], v[47:48], v[37:38]
	v_mul_f64 v[37:38], v[41:42], v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[39:40], v[45:46], v[37:38]
	v_add_f64 v[41:42], v[39:40], -v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[37:38], v[37:38], -v[41:42]
	v_mul_f64 v[41:42], v[39:40], v[39:40]
	v_add_f64 v[45:46], v[37:38], v[37:38]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[39:40], v[39:40], -v[41:42]
	v_fma_f64 v[43:44], v[39:40], v[45:46], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[41:42], v[43:44]
	v_add_f64 v[41:42], v[45:46], -v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[41:42], v[43:44], -v[41:42]
	v_fma_f64 v[43:44], v[45:46], s[16:17], s[14:15]
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[20:21]
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[24:25]
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[28:29]
	v_fma_f64 v[43:44], v[45:46], v[43:44], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[47:48], v[45:46], v[43:44]
	v_fma_f64 v[49:50], v[45:46], v[43:44], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[41:42], v[43:44], v[49:50]
	v_mul_f64 v[49:50], v[39:40], v[45:46]
	v_fma_f64 v[51:52], v[45:46], v[39:40], -v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[45:46], v[45:46], v[37:38], v[51:52]
	v_add_f64 v[51:52], v[47:48], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[41:42], v[41:42], v[39:40], v[45:46]
	v_add_f64 v[47:48], v[51:52], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[43:44], -v[47:48]
	v_add_f64 v[47:48], v[51:52], s[12:13]
	v_add_f64 v[43:44], v[43:44], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[53:54], v[47:48], s[38:39]
	v_add_f64 v[51:52], v[51:52], -v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], v[51:52]
	v_add_f64 v[45:46], v[47:48], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[47:48], -v[45:46]
	v_add_f64 v[43:44], v[43:44], v[47:48]
	v_add_f64 v[47:48], v[49:50], v[41:42]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[51:52], v[47:48], v[45:46]
	v_fma_f64 v[53:54], v[47:48], v[45:46], -v[51:52]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[43:44], v[47:48], v[43:44], v[53:54]
	v_add_f64 v[47:48], v[47:48], -v[49:50]
	v_add_f64 v[41:42], v[41:42], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[41:42], v[41:42], v[45:46], v[43:44]
	v_frexp_mant_f64_e64 v[43:44], |v[6:7]|
	v_cmp_gt_f64_e64 s1, s[12:13], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v14, 0, 1, s1
	v_ldexp_f64 v[43:44], v[43:44], v14
	v_frexp_exp_i32_f64_e32 v14, v[4:5]
	v_add_f64 v[4:5], v[33:34], v[35:36]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[43:44], 1.0
	v_rcp_f64_e32 v[47:48], v[45:46]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	v_fma_f64 v[49:50], -v[45:46], v[47:48], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[47:48], v[49:50], v[47:48], v[47:48]
	v_add_f64 v[49:50], v[45:46], -1.0
	v_add_f64 v[49:50], v[43:44], -v[49:50]
	v_add_f64 v[43:44], v[43:44], -1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[53:54], v[43:44], v[47:48]
	v_mul_f64 v[60:61], v[45:46], v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[45:46], v[53:54], v[45:46], -v[60:61]
	v_fma_f64 v[45:46], v[53:54], v[49:50], v[45:46]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[49:50], v[60:61], v[45:46]
	v_add_f64 v[60:61], v[49:50], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[60:61], -v[45:46]
	v_add_f64 v[60:61], v[43:44], -v[49:50]
	v_add_f64 v[43:44], v[43:44], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[43:44], -v[49:50]
	v_add_f64 v[43:44], v[45:46], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[43:44], v[60:61], v[43:44]
	v_mul_f64 v[43:44], v[47:48], v[43:44]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[45:46], v[53:54], v[43:44]
	v_add_f64 v[47:48], v[45:46], -v[53:54]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[43:44], v[43:44], -v[47:48]
	v_mul_f64 v[47:48], v[45:46], v[45:46]
	v_add_f64 v[53:54], v[43:44], v[43:44]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[45:46], v[45:46], -v[47:48]
	v_fma_f64 v[49:50], v[45:46], v[53:54], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[53:54], v[47:48], v[49:50]
	v_add_f64 v[47:48], v[53:54], -v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[47:48], v[49:50], -v[47:48]
	v_fma_f64 v[49:50], v[53:54], s[16:17], s[14:15]
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[18:19]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[20:21]
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[22:23]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[24:25]
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[26:27]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[28:29]
	v_fma_f64 v[49:50], v[53:54], v[49:50], s[30:31]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[60:61], v[53:54], v[49:50]
	v_fma_f64 v[62:63], v[53:54], v[49:50], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[47:48], v[49:50], v[62:63]
	v_mul_f64 v[62:63], v[45:46], v[53:54]
	v_fma_f64 v[64:65], v[53:54], v[45:46], -v[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_fma_f64 v[53:54], v[53:54], v[43:44], v[64:65]
	v_add_f64 v[64:65], v[60:61], v[49:50]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[47:48], v[47:48], v[45:46], v[53:54]
	v_add_f64 v[60:61], v[64:65], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[49:50], v[49:50], -v[60:61]
	v_add_f64 v[60:61], v[64:65], s[12:13]
	v_add_f64 v[49:50], v[49:50], s[40:41]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[66:67], v[60:61], s[38:39]
	v_add_f64 v[64:65], v[64:65], -v[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[49:50], v[49:50], v[64:65]
	v_add_f64 v[53:54], v[60:61], v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[60:61], v[60:61], -v[53:54]
	v_add_f64 v[49:50], v[49:50], v[60:61]
	v_add_f64 v[60:61], v[62:63], v[47:48]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[64:65], v[60:61], v[53:54]
	v_fma_f64 v[66:67], v[60:61], v[53:54], -v[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[49:50], v[60:61], v[49:50], v[66:67]
	v_add_f64 v[60:61], v[60:61], -v[62:63]
	v_add_f64 v[47:48], v[47:48], -v[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)
	v_fma_f64 v[47:48], v[47:48], v[53:54], v[49:50]
	v_frexp_exp_i32_f64_e32 v53, v[6:7]
	v_add_f64 v[6:7], v[4:5], -v[33:34]
	v_add_f64 v[33:34], v[31:32], v[4:5]
	v_add_f64 v[6:7], v[35:36], -v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_add_f64 v[6:7], v[29:30], v[6:7]
	v_frexp_exp_i32_f64_e32 v29, v[2:3]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_subrev_co_ci_u32_e32 v29, vcc_lo, 0, v29, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[6:7], v[4:5]
	v_cvt_f64_i32_e32 v[29:30], v29
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[31:32], v[29:30], s[34:35]
	v_fma_f64 v[35:36], v[29:30], s[34:35], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], s[36:37], v[35:36]
	v_add_f64 v[6:7], v[31:32], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[6:7], -v[31:32]
	v_add_f64 v[29:30], v[29:30], -v[31:32]
	v_add_f64 v[31:32], v[33:34], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[6:7], v[31:32]
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	v_add_f64 v[49:50], v[35:36], -v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_add_f64 v[31:32], v[31:32], -v[49:50]
	v_add_f64 v[49:50], v[35:36], -v[49:50]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[49:50]
	v_add_f64 v[6:7], v[31:32], v[6:7]
	v_add_f64 v[31:32], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[33:34], v[31:32], -v[29:30]
	v_add_f64 v[6:7], v[31:32], v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], v[29:30]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	v_add_f64 v[4:5], v[4:5], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[29:30], v[4:5]
	v_add_f64 v[29:30], v[6:7], -v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], -v[29:30]
	v_add_f64 v[29:30], v[6:7], v[6:7]
	v_fma_f64 v[6:7], v[6:7], 2.0, -v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[4:5], v[4:5], 2.0, v[6:7]
	v_add_f64 v[6:7], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v32, v7, v30 :: v_dual_cndmask_b32 v31, v6, v29
	v_add_f64 v[6:7], v[6:7], -v[29:30]
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[31:32]|
	v_cmp_ngt_f64_e64 s6, 0xc090cc00, v[31:32]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[6:7]
	v_mul_f64 v[6:7], v[31:32], s[42:43]
	v_dual_cndmask_b32 v5, 0, v5 :: v_dual_cndmask_b32 v4, 0, v4
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rndne_f64_e32 v[6:7], v[6:7]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[31:32]
	v_fma_f64 v[29:30], v[6:7], s[44:45], v[31:32]
	s_and_b32 s7, s6, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[29:30], v[6:7], s[46:47], v[29:30]
	v_cvt_i32_f64_e32 v6, v[6:7]
	v_fma_f64 v[31:32], v[29:30], s[50:51], s[48:49]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[52:53]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[54:55]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[56:57]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[58:59]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[60:61]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[62:63]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[64:65]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[66:67]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], 1.0
	v_fma_f64 v[29:30], v[29:30], v[31:32], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_ldexp_f64 v[6:7], v[29:30], v6
	v_ldexp_f64 v[29:30], v[39:40], 1
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v6, 0, v6, s7
	v_cndmask_b32_e64 v7, 0, v7, s6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[4:5], v[6:7], v[4:5], v[6:7]
	v_cmp_class_f64_e64 vcc_lo, v[6:7], 0x204
	v_dual_cndmask_b32 v49, v5, v7 :: v_dual_cndmask_b32 v50, v4, v6
	v_add_f64 v[4:5], v[51:52], v[41:42]
	v_subrev_co_ci_u32_e64 v14, vcc_lo, 0, v14, s0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[29:30], v[4:5]
	v_add_f64 v[6:7], v[4:5], -v[51:52]
	v_add_f64 v[29:30], v[31:32], -v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[41:42], -v[6:7]
	v_add_f64 v[4:5], v[4:5], -v[29:30]
	v_ldexp_f64 v[29:30], v[37:38], 1
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[29:30], v[6:7]
	v_cvt_f64_i32_e32 v[29:30], v14
	v_add_f64 v[4:5], v[6:7], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[29:30], s[34:35]
	v_fma_f64 v[35:36], v[29:30], s[34:35], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], s[36:37], v[35:36]
	v_add_f64 v[6:7], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[6:7], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[31:32], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[6:7], v[33:34]
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_add_f64 v[37:38], v[35:36], -v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[29:30], v[4:5]
	v_add_f64 v[6:7], v[6:7], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[6:7], v[33:34], v[6:7]
	v_add_f64 v[33:34], v[31:32], -v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[31:32], v[6:7]
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[4:5], v[4:5], v[29:30]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], v[6:7]
	v_add_f64 v[6:7], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[6:7], -v[29:30]
	v_add_f64 v[4:5], v[4:5], -v[29:30]
	v_add_f64 v[29:30], v[6:7], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[6:7], 2.0, -v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	v_fma_f64 v[4:5], v[4:5], 2.0, v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[29:30], v[4:5]
	v_dual_cndmask_b32 v32, v7, v30 :: v_dual_cndmask_b32 v31, v6, v29
	v_add_f64 v[6:7], v[6:7], -v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[31:32]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[31:32]
	v_add_f64 v[4:5], v[4:5], -v[6:7]
	v_mul_f64 v[6:7], v[31:32], s[42:43]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v5, 0, v5 :: v_dual_cndmask_b32 v4, 0, v4
	v_rndne_f64_e32 v[6:7], v[6:7]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[6:7], s[44:45], v[31:32]
	s_and_b32 s6, s0, vcc_lo
	v_fma_f64 v[29:30], v[6:7], s[46:47], v[29:30]
	v_cvt_i32_f64_e32 v6, v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], s[50:51], s[48:49]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[54:55]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[58:59]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[62:63]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[66:67]
	v_fma_f64 v[31:32], v[29:30], v[31:32], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], v[31:32], 1.0
	v_ldexp_f64 v[6:7], v[29:30], v6
	v_ldexp_f64 v[29:30], v[45:46], 1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	v_cndmask_b32_e64 v6, 0, v6, s6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v7, 0, v7, s0
	v_fma_f64 v[4:5], v[6:7], v[4:5], v[6:7]
	v_cmp_class_f64_e64 vcc_lo, v[6:7], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v14, v5, v7 :: v_dual_cndmask_b32 v39, v4, v6
	v_add_f64 v[4:5], v[64:65], v[47:48]
	v_add_f64 v[31:32], v[29:30], v[4:5]
	v_add_f64 v[6:7], v[4:5], -v[64:65]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[29:30], v[31:32], -v[29:30]
	v_add_f64 v[6:7], v[47:48], -v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], -v[29:30]
	v_ldexp_f64 v[29:30], v[43:44], 1
	v_add_f64 v[6:7], v[29:30], v[6:7]
	v_subrev_co_ci_u32_e64 v29, vcc_lo, 0, v53, s1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cvt_f64_i32_e32 v[29:30], v29
	v_add_f64 v[4:5], v[6:7], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[33:34], v[29:30], s[34:35]
	v_fma_f64 v[35:36], v[29:30], s[34:35], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], s[36:37], v[35:36]
	v_add_f64 v[6:7], v[33:34], v[29:30]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[33:34], v[6:7], -v[33:34]
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[33:34], v[31:32], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[35:36], v[6:7], v[33:34]
	v_add_f64 v[31:32], v[33:34], -v[31:32]
	v_add_f64 v[37:38], v[35:36], -v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], -v[31:32]
	v_add_f64 v[33:34], v[33:34], -v[37:38]
	v_add_f64 v[37:38], v[35:36], -v[37:38]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[31:32], v[29:30], v[4:5]
	v_add_f64 v[6:7], v[6:7], -v[37:38]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[6:7], v[33:34], v[6:7]
	v_add_f64 v[33:34], v[31:32], -v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[31:32], v[6:7]
	v_add_f64 v[4:5], v[4:5], -v[33:34]
	v_add_f64 v[33:34], v[31:32], -v[33:34]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[29:30], -v[33:34]
	v_add_f64 v[4:5], v[4:5], v[29:30]
	v_add_f64 v[29:30], v[35:36], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[31:32], v[29:30], -v[35:36]
	v_add_f64 v[6:7], v[6:7], -v[31:32]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[4:5], v[4:5], v[6:7]
	v_add_f64 v[6:7], v[29:30], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[29:30], v[6:7], -v[29:30]
	v_add_f64 v[4:5], v[4:5], -v[29:30]
	v_add_f64 v[29:30], v[6:7], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[6:7], 2.0, -v[29:30]
	v_cmp_class_f64_e64 vcc_lo, v[29:30], 0x204
	v_fma_f64 v[4:5], v[4:5], 2.0, v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_f64 v[6:7], v[29:30], v[4:5]
	v_dual_cndmask_b32 v32, v7, v30 :: v_dual_cndmask_b32 v31, v6, v29
	v_add_f64 v[6:7], v[6:7], -v[29:30]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[31:32]|
	v_cmp_ngt_f64_e64 s0, 0xc090cc00, v[31:32]
	v_add_f64 v[4:5], v[4:5], -v[6:7]
	v_mul_f64 v[6:7], v[31:32], s[42:43]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_dual_cndmask_b32 v5, 0, v5 :: v_dual_cndmask_b32 v4, 0, v4
	v_rndne_f64_e32 v[6:7], v[6:7]
	v_cmp_nlt_f64_e32 vcc_lo, 0x40900000, v[31:32]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[6:7], s[44:45], v[31:32]
	s_and_b32 s1, s0, vcc_lo
	v_fma_f64 v[29:30], v[6:7], s[46:47], v[29:30]
	v_cvt_i32_f64_e32 v6, v[6:7]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], s[50:51], s[48:49]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[52:53]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[54:55]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[56:57]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[58:59]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[60:61]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[62:63]
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[64:65]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[31:32], v[29:30], v[31:32], s[66:67]
	v_fma_f64 v[31:32], v[29:30], v[31:32], 1.0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[29:30], v[29:30], v[31:32], 1.0
	v_ldexp_f64 v[6:7], v[29:30], v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v7, 0x7ff00000, v7, vcc_lo
	v_cndmask_b32_e64 v6, 0, v6, s1
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cndmask_b32_e64 v7, 0, v7, s0
	v_cmp_neq_f64_e64 s0, 0, v[2:3]
	v_fma_f64 v[4:5], v[6:7], v[4:5], v[6:7]
	v_cmp_class_f64_e64 vcc_lo, v[6:7], 0x204
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v7, v5, v7 :: v_dual_cndmask_b32 v6, v4, v6
	v_cmp_neq_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|
	v_and_b32_e32 v2, 0x7fffffff, v49
	v_and_b32_e32 v4, 0x7fffffff, v14
	v_cndmask_b32_e64 v5, 0x7ff00000, v4, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_cndmask_b32_e64 v5, 0, v5, s2
	v_cndmask_b32_e32 v3, 0x7ff00000, v2, vcc_lo
	s_and_b32 vcc_lo, s0, vcc_lo
	v_cndmask_b32_e32 v2, 0, v50, vcc_lo
	s_and_b32 vcc_lo, s2, s3
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_4) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v3, 0, v3, s0
	v_cndmask_b32_e32 v4, 0, v39, vcc_lo
	s_and_b32 vcc_lo, s5, s4
	s_mov_b32 s0, 0x7c8c3829
	s_mov_b32 s1, 0x39bc0a57
	v_add_f64 v[2:3], v[2:3], v[4:5]
	v_and_b32_e32 v4, 0x7fffffff, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)
	v_cndmask_b32_e64 v5, 0x7ff00000, v4, s4
	v_cndmask_b32_e32 v4, 0, v6, vcc_lo
	v_add_co_u32 v6, vcc_lo, v15, 0x48
	v_add_co_ci_u32_e32 v7, vcc_lo, 0, v16, vcc_lo
	v_cndmask_b32_e64 v5, 0, v5, s5
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_add_f64 v[2:3], v[2:3], v[4:5]
	global_load_b64 v[4:5], v[6:7], off offset:24
	v_mul_f64 v[2:3], v[2:3], s[82:83]
	v_fma_f64 v[2:3], v[0:1], s[0:1], v[2:3]
	s_add_i32 s0, s33, 1
	s_cmp_gt_u32 s33, 0xf423e
	s_mov_b32 s33, s0
	s_cselect_b32 s1, -1, 0
	s_delay_alu instid0(VALU_DEP_1)
	v_add_f64 v[2:3], v[8:9], v[2:3]
	s_waitcnt vmcnt(0)
	v_add_f64 v[4:5], v[10:11], v[4:5]
	global_store_b128 v[25:26], v[2:5], off
	global_load_b64 v[2:3], v[6:7], off
	s_waitcnt vmcnt(0)
	v_add_f64 v[2:3], v[2:3], s[10:11]
	global_store_b64 v[27:28], v[2:3], off
	global_load_b32 v2, v[17:18], off
	s_waitcnt vmcnt(0)
	v_cmp_ne_u32_e32 vcc_lo, 0, v2
	s_or_b32 s1, vcc_lo, s1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s1, exec_lo, s1
	s_or_b32 s104, s1, s104
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s104
	s_cbranch_execnz .LBB0_4
.LBB0_41:                               ; %Flow233
                                        ;   in Loop: Header=BB0_2 Depth=1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readlane_b32 s0, v79, 4
	s_or_b32 exec_lo, exec_lo, s0
	v_readlane_b32 s1, v79, 2
	v_readlane_b32 s0, v79, 3
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_nc_u32_e32 v59, s1, v59
	v_cmp_lt_i32_e32 vcc_lo, 0x1869f, v59
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s0, vcc_lo, s0
	s_and_not1_b32 exec_lo, exec_lo, s0
	s_cbranch_execnz .LBB0_2
.LBB0_42:                               ; %._crit_edge203
	s_nop 0
	s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z17verlet_integratorP9Particles
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 264
		.amdhsa_user_sgpr_count 15
		.amdhsa_user_sgpr_dispatch_ptr 0
		.amdhsa_user_sgpr_queue_ptr 0
		.amdhsa_user_sgpr_kernarg_segment_ptr 1
		.amdhsa_user_sgpr_dispatch_id 0
		.amdhsa_user_sgpr_private_segment_size 0
		.amdhsa_wavefront_size32 1
		.amdhsa_uses_dynamic_stack 0
		.amdhsa_enable_private_segment 0
		.amdhsa_system_sgpr_workgroup_id_x 1
		.amdhsa_system_sgpr_workgroup_id_y 0
		.amdhsa_system_sgpr_workgroup_id_z 0
		.amdhsa_system_sgpr_workgroup_info 0
		.amdhsa_system_vgpr_workitem_id 0
		.amdhsa_next_free_vgpr 80
		.amdhsa_next_free_sgpr 105
		.amdhsa_float_round_mode_32 0
		.amdhsa_float_round_mode_16_64 0
		.amdhsa_float_denorm_mode_32 3
		.amdhsa_float_denorm_mode_16_64 3
		.amdhsa_dx10_clamp 1
		.amdhsa_ieee_mode 1
		.amdhsa_fp16_overflow 0
		.amdhsa_workgroup_processor_mode 1
		.amdhsa_memory_ordered 1
		.amdhsa_forward_progress 0
		.amdhsa_shared_vgpr_count 0
		.amdhsa_exception_fp_ieee_invalid_op 0
		.amdhsa_exception_fp_denorm_src 0
		.amdhsa_exception_fp_ieee_div_zero 0
		.amdhsa_exception_fp_ieee_overflow 0
		.amdhsa_exception_fp_ieee_underflow 0
		.amdhsa_exception_fp_ieee_inexact 0
		.amdhsa_exception_int_div_zero 0
	.end_amdhsa_kernel
	.text
.Lfunc_end0:
	.size	_Z17verlet_integratorP9Particles, .Lfunc_end0-_Z17verlet_integratorP9Particles
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 32860
; NumSgprs: 107
; NumVgprs: 80
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 13
; VGPRBlocks: 9
; NumSGPRsForWavesPerEU: 107
; NumVGPRsForWavesPerEU: 80
; Occupancy: 16
; WaveLimiterHint : 0
; COMPUTE_PGM_RSRC2:SCRATCH_EN: 0
; COMPUTE_PGM_RSRC2:USER_SGPR: 15
; COMPUTE_PGM_RSRC2:TRAP_HANDLER: 0
; COMPUTE_PGM_RSRC2:TGID_X_EN: 1
; COMPUTE_PGM_RSRC2:TGID_Y_EN: 0
; COMPUTE_PGM_RSRC2:TGID_Z_EN: 0
; COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 0
	.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_
	.amdgpu_metadata
---
amdhsa.kernels:
  - .args:
      - .address_space:  global
        .offset:         0
        .size:           8
        .value_kind:     global_buffer
      - .offset:         8
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         12
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         16
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         20
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         22
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         24
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         26
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         28
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         30
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         48
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         56
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         64
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         72
        .size:           2
        .value_kind:     hidden_grid_dims
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 264
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z17verlet_integratorP9Particles
    .private_segment_fixed_size: 0
    .sgpr_count:     107
    .sgpr_spill_count: 5
    .symbol:         _Z17verlet_integratorP9Particles.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     80
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
