// nvcc iso2PCF.cu -o par.out && ./par.out data_5K.dat rand0_5K.dat 5000 30 180
#include <iostream>
#include <fstream>
#include <string.h>
#include <time.h>
#include <math.h>

using namespace std;

//Point with weight value. Structure
struct PointW3D{
    float x;
    float y; 
    float z;
    float w;
};

struct Node{
    int len;		// Number of points in the node
    PointW3D *elements;	// Points in the node
};


void open_files(string name_file, int pts, PointW3D *datos){
    /* Opens the daya files. Receives the file location, number of points to read and the array of points where the data is stored */
    ifstream file;

    string mypathto_files = "../../../fake_DATA/DATOS/";
    //This creates the full path to where I have my data files
    name_file.insert(0,mypathto_files);

    file.open(name_file.c_str(), ios::in | ios::binary); //Tells the program this is a binary file using ios::binary
    if (file.fail()){
        cout << "Failed to load the file in " << name_file << endl;
        exit(1);
    }

    for ( int c = 0; c < pts; c++) //Reads line by line and stores each c line in the c PointW3D element of the array
    {
        file >> datos[c].x >> datos[c].y >> datos[c].z >> datos[c].w; 
    }
    file.close();
}

//====================================================================

void save_histogram(string name, int bns, double *histo){
    /* This function saves a one dimensional histogram in a file.
    Receives the name of the file, number of bins in the histogram and the histogram array
    */

    ofstream file2;
    file2.open(name.c_str(), ios::out | ios::binary);

    if (file2.fail()){
        cout << "Failed to save the the histogram in " << name << endl;
        exit(1);
    }
    for (int i = 0; i < bns; i++){
        file2 << histo[i] << endl;
    }
    file2.close();
}

//====================================================================

void save_histogram(string name, int bns, float *histo){
    /* This function saves a one dimensional histogram in a file.
    Receives the name of the file, number of bins in the histogram and the histogram array
    */

    ofstream file2;
    file2.open(name.c_str(), ios::out | ios::binary);

    if (file2.fail()){
        cout << "Failed to save the the histogram in " << name << endl;
        exit(1);
    }
    for (int i = 0; i < bns; i++){
        file2 << histo[i] << endl;
    }
    file2.close();
}

//=================================================================== 
void add(PointW3D *&array, int &lon, float _x, float _y, float _z, float _w){
    /*
    This function manages adding points to an specific Node. It receives the previous array, longitude and point to add
    and updates the previous array and length with the same array with the new point at the end and adds +1 to the length +1

    It manages the memory allocation and free of the previous and new elements.
    */
    lon++;
    PointW3D *array_aux;
    cudaMallocManaged(&array_aux, lon*sizeof(PointW3D)); 
    for (int i=0; i<lon-1; i++){
        array_aux[i].x = array[i].x;
        array_aux[i].y = array[i].y;
        array_aux[i].z = array[i].z;
        array_aux[i].w = array[i].w;
    }

    cudaFree(array);
    array = array_aux;
    array[lon-1].x = _x;
    array[lon-1].y = _y;
    array[lon-1].z = _z;
    array[lon-1].w = _w;
}

void make_nodos(Node ***nod, PointW3D *dat, unsigned int partitions, float size_node, unsigned int np){
    /*
    This function classifies the data in the nodes

    Args
    nod: Node 3D array where the data will be classified
    dat: array of PointW3D data to be classified and stored in the nodes
    partitions: number nodes in each direction
    size_node: dimensions of a single node
    np: number of points in the dat array
    */

    int row, col, mom;

    // First allocate memory as an empty node:
    for (row=0; row<partitions; row++){
        for (col=0; col<partitions; col++){
            for (mom=0; mom<partitions; mom++){
                nod[row][col][mom].len = 0;
                cudaMallocManaged(&nod[row][col][mom].elements, sizeof(PointW3D));
            }
        }
    }

    // Classificate the ith elment of the data into a node and add that point to the node with the add function:
    for (int i=0; i<np; i++){
        row = (int)(dat[i].x/size_node);
        col = (int)(dat[i].y/size_node);
        mom = (int)(dat[i].z/size_node);
        add(nod[row][col][mom].elements, nod[row][col][mom].len, dat[i].x, dat[i].y, dat[i].z, dat[i].w);
    }
}

//====================================================================
//============ Kernels Section ======================================= 
//====================================================================

__device__ void count_distances11(float *XX, PointW3D *elements, int len, float ds, float dd_max, int sum){
    /*
    This device function counts the distances betweeen points within one node.

    Args:
    XX: The histogram where the distances are counted in
    elements:  Array of PointW3D points inside the node
    len: lenght of the elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */

    int bin;
    float d, v;
    float x1,y1,z1,w1,x2,y2,z2,w2;

    for (int i=0; i<len-1; ++i){
        x1 = elements[i].x;
        y1 = elements[i].y;
        z1 = elements[i].z;
        w1 = elements[i].w;
        for (int j=i+1; j<len; ++j){
            x2 = elements[j].x;
            y2 = elements[j].y;
            z2 = elements[j].z;
            w2 = elements[j].w;
            d = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1);
            if (d<=dd_max+1){
                bin = (int)(sqrt(d)*ds);
                v = 2*w1*w2;
                atomicAdd(&XX[bin],sum);
            }
        }
    }
}

__device__ void count_distances12(float *XX, PointW3D *elements1, int len1, PointW3D *elements2, int len2, float ds, float dd_max, int sum){
    /*
    This device function counts the distances betweeen points between two different nodes.

    Args:
    XX: The histogram where the distances are counted in
    elements1:  Array of PointW3D points inside the first node
    len1: lenght of the first elements array
    elements2:  Array of PointW3D points inside the second node
    len2: lenght of the second elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */

    int bin;
    float d, v;
    float x1,y1,z1,w1,x2,y2,z2,w2;

    for (int i=0; i<len1; ++i){
        x1 = elements1[i].x;
        y1 = elements1[i].y;
        z1 = elements1[i].z;
        w1 = elements1[i].w;
        for (int j=0; j<len2; ++j){
            x2 = elements2[j].x;
            y2 = elements2[j].y;
            z2 = elements2[j].z;
            w2 = elements2[j].w;
            d = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1);
            if (d<=dd_max+1){
                bin = (int)(sqrt(d)*ds);
                v = 2*w1*w2;
                atomicAdd(&XX[bin],sum);
            }
        }
    }
}

__device__ void BPC_loop(float *XX, Node ***nodeD, int row, int col, int mom, int partitions, int did_max, float dd_max, float ds, int sum, float size_box, bool x_border, bool y_border, bool z_border, bool x_upperborder, bool y_upperborder, bool z_upperborder, bool x_lowerborder, bool y_lowerborder, bool z_lowerborder){
    /*
    This device function counts the distances betweeen points between two different nodes from periodic boundary conditiojns.

    Args:
    XX: The histogram where the distances are counted in
    elements1:  Array of PointW3D points inside the first node
    len1: lenght of the first elements array
    elements2:  Array of PointW3D points inside the second node
    len2: lenght of the second elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */
    int bin, d_node, u, v, w, did_max2=did_max*did_max;
    float d, s;
    float x1,y1,z1,w1,dx12,dy12,dz12,w2;


    int x_from = 10; //((row-did_max)*(row>did_max))*(!x_border) + (partitions-(did_max-row))*(x_lowerborder&&!x_upperborder);
    int x_to = partitions-10; //(partitions-1)*((row+did_max>partitions-1 && !x_upperborder)||x_lowerborder) + (row+did_max)*((row+did_max<partitions)&&!x_border) + (!x_lowerborder&&x_upperborder)*(x_from+(did_max-(partitions-1-row)));
    int y_from = 10; //((col-did_max)*(col>did_max))*(!y_border) + (partitions-(did_max-col))*(y_lowerborder&&!y_upperborder);
    int y_to = partitions-10; // (partitions-1)*((col+did_max>partitions-1 && !y_upperborder)||y_lowerborder) + (col+did_max)*((col+did_max<partitions)&&!y_border) + (!y_lowerborder&&y_upperborder)*(y_from+(did_max-(partitions-1-col)));
    int z_from =  10; // ((mom-did_max)*(mom>did_max))*(!z_border) + (partitions-(did_max-mom))*(z_lowerborder&&!z_upperborder);
    int z_to = partitions-10; //(partitions-1)*((mom+did_max>partitions-1 && !z_upperborder)||z_lowerborder) + (mom+did_max)*((mom+did_max<partitions)&&!z_border) + (!z_lowerborder&&z_upperborder)*(z_from+(did_max-(partitions-1-mom)));
    //If the z direction is not the nearest border the z index it is 0 if mom<did_max or mom-did-max otherwise.
    //If both z borders or ONLY the upper z border are the nearest borders the z index starts from 0
    //If ONLY the lower z border is the nearest the z index starts from partitions-(did_max-mom)
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //If both borders are the nearest the highest limit is partitions-1
    //If the lower border is the nearest the highes limit is partitions-1
    //If the upper border is not the nerarest and mom+did_max>partitions the highest limit is partitions-1
    //If this is not the border side and mom+did_max< paritions then the highest limit is mom+did_max
    //If only the upper border is the nearest border the higher limit is the lower limit + (did_max-(partitions-1-mom))

    for (u=x_from; u<=x_to; u++){
        for (v=y_from; v<=y_to; v++){
            for (w=z_from; w<=z_to; w++){
                d_node=(w-mom)*(w-mom) + (v-col)*(v-col) + (u-row)*(u-row);
                if (d_node<=did_max2){
                    for (int i=0; i<nodeD[row][col][mom].len; ++i){
                        x1 = nodeD[row][col][mom].elements[i].x;
                        y1 = nodeD[row][col][mom].elements[i].y;
                        z1 = nodeD[row][col][mom].elements[i].z;
                        w1 = nodeD[row][col][mom].elements[i].w;
                        for (int j=0; j<nodeD[u][v][w].len; ++j){
                            dx12 = fabsf(x1-nodeD[u][v][w].elements[j].x) - size_box*x_border;
                            dy12 = fabsf(y1-nodeD[u][v][w].elements[j].y) - size_box*y_border;
                            dz12 = fabsf(z1-nodeD[u][v][w].elements[j].z) - size_box*z_border;
                            w2 = nodeD[u][v][w].elements[j].w;
                            d = dx12*dx12 + dy12*dy12 + dz12*dz12;
                            if (d<=dd_max+1){
                                bin = (int)(sqrt(d)*ds);
                                s = 2*w1*w2;
                                atomicAdd(&XX[bin],sum);
                            }
                        }
                    }
                }
            }
        }
    }
}
__global__ void BPC_XX(float *XX_A, float *XX_B, Node ***nodeD, float ds, float d_max, float size_node, float size_box){
    /*
    This device function counts the distances betweeen points between a node and a node reproduction in the border.

    Args:
    XX: The histogram where the distances are counted in
    nodeD: Full array of nodes
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    
    dd_max: The maximum distance of interest.
    did_max: maximum number of node between two nodes be considered
    did_max2: did_max*did_max
    size_box:  Size of the whole box
    */
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        //printf("%i, %i, %i \n", mom, col,row);

        //This may see redundant but with this these often checked values are upgraded to device memory
        float dd_max = d_max*d_max;
        int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));

        if (idx==0){
            printf("Partitions: %i, did_max: %i\n", partitions, did_max);
        }
        
        if (nodeD[row][col][mom].len > 0 && (row<did_max-1 || partitions-row<did_max || col<did_max-1 || partitions-col<did_max || mom<did_max-1 || partitions-mom<did_max)){
            //Only if the current node has elements and it is near to any border does the thread will be active
            atomicAdd(&XX_A[0],1); //Count how many nodes are considered as near a border
            /*
            bool x_border=false, y_border=false, z_border=false, x_upperborder=false, y_upperborder=false, z_upperborder=false, x_lowerborder=false, y_lowerborder=false, z_lowerborder=false;
            
            x_border=(row<did_max-1 || partitions-row<did_max);
            if (x_border){
                x_upperborder=partitions-row<did_max;
                x_lowerborder=row<did_max-1;
                BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, false, false, x_upperborder, false, false, x_lowerborder, false, false);
            }
            
            y_border=(col<did_max-1 || partitions-col<did_max);
            if (y_border){
                y_upperborder=partitions-col<did_max;
                y_lowerborder=col<did_max-1;

                //Only Y boundaries
                BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, y_border, false, false, y_upperborder, false, false, y_lowerborder, false); 
                if (x_border){
                    //Boundaries in the XY walls
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, y_border, false, x_upperborder, y_upperborder, false, x_lowerborder, y_lowerborder, false);
                }
            }
            
            z_border=(mom<did_max-1 || partitions-mom<did_max);
            if (z_border){
                z_upperborder=partitions-mom<did_max;
                z_lowerborder=mom<did_max-1;
                
                //Only Z boundaries
                BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, false, z_border, false, false, z_upperborder, false, false, z_lowerborder); 
                if (x_border){
                    //For the ZY corner
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, false, z_border, x_upperborder, false, z_upperborder, x_lowerborder, false, z_lowerborder); 
                    if (y_border){
                        //For the XYZ corner
                        BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, y_border, z_border, x_upperborder, y_upperborder, z_upperborder, x_lowerborder, y_lowerborder, z_lowerborder); 
                    }

                }

                if (y_border){
                    //For the YZ
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, y_border, z_border, false, y_upperborder, z_upperborder, false, y_lowerborder, z_lowerborder); 
                }
            }
            */

        }
    }
}


__global__ void make_histoXX(float *XX_A, float *XX_B, Node ***nodeD, float ds, float d_max, float size_node, float size_box){
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        //printf("%i, %i, %i \n", mom, col,row)
        
        if (nodeD[row][col][mom].len > 0){
            
            //This may see redundant but with this these often checked values are upgraded to device memory
            float dd_max = d_max*d_max;
            int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));
            int did_max2 = did_max*did_max;

            // Counts distances betweeen the same node
            if (idx%2==0){ //If the main index is even stores the countings in the XX_A subhistogram
                count_distances11(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, ds, dd_max, 2);
            } else { //If the main index is odd stores the countings in the XX_B subhistogram
                count_distances11(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, ds, dd_max, 2);
            }
            
            
            int u,v,w; // Position index of the second node
            int dx_nod12, dy_nod12, dz_nod12, dd_nod12; //Internodal distance

            //Second node movil in Z direction
            for(w = mom+1; w<partitions && w-row<=did_max; w++){
                if (idx%2==0){ //If the main index is even stores the countings in the XX_A subhistogram
                    count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][col][w].elements, nodeD[row][col][w].len, ds, dd_max, 2);
                } else { //If the main index is odd stores the countings in the XX_B subhistogram
                    count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][col][w].elements, nodeD[row][col][w].len, ds, dd_max, 2);
                }
            }

            //Second node movil in YZ
            for(v=col+1; v<partitions && v-col<=did_max; v++){
                dy_nod12 = v-col;
                for(w=(mom-did_max)*(mom>did_max); w<partitions && w-mom<=did_max; w++){
                    dz_nod12 = w-mom;
                    dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12;
                    if (dd_nod12<=did_max2){
                        if (idx%2==0){
                            count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][v][w].elements, nodeD[row][v][w].len, ds, dd_max, 2);
                        } else {
                            count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][v][w].elements, nodeD[row][v][w].len, ds, dd_max, 2);
                        }
                    }
                    //}
                }
            }

            //Second node movil in XYZ
            for(u = row+1; u < partitions && u-row< did_max; u++){
                dx_nod12 = u-row;
                for(v = (col-did_max)*(col>did_max); v < partitions && v-col< did_max; v++){
                    dy_nod12 = v-col;
                    for(w = (mom-did_max)*(mom>did_max); w < partitions && w-mom< did_max; w++){
                        dz_nod12 = w-mom;
                        dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12 + dx_nod12*dx_nod12;
                        if (dd_nod12<=did_max2){
                            if (idx%2==0){
                                count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[u][v][w].elements, nodeD[u][v][w].len, ds, dd_max, 2);
                            } else {
                                count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[u][v][w].elements, nodeD[u][v][w].len, ds, dd_max, 2);
                            }
                        }
                    }
                }
            }

        }
    }
}
__global__ void make_histoXY(float *XY_A, float *XY_B, Node ***nodeD, Node ***nodeR, float ds, float d_max, float size_node, float size_box){
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        
        if (nodeD[row][col][mom].len > 0){
            
            //This may see redundant but with this these often checked values are upgraded to device memory
            float dd_max = d_max*d_max;
            int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));
            int did_max2 = did_max*did_max;
            
            int u,v,w; //Position of the second node
            unsigned int dx_nod12, dy_nod12, dz_nod12, dd_nod12;


            //Second node movil in XYZ
            //for(u = (row-did_max)*(row>did_max); u < partitions && u-row< did_max; u++){
            for(u = 0; u < partitions && u-row< did_max; u++){
                dx_nod12 = u-row;
                //for(v = (col-did_max)*(col>did_max); v < partitions && v-col< did_max; v++){
                for(v = 0; v < partitions && v-col< did_max; v++){
                    dy_nod12 = v-col;
                    //for(w = (mom-did_max)*(mom>did_max); w < partitions && w-mom< did_max; w++){
                    for(w = 0; w < partitions && w-mom< did_max; w++){
                        dz_nod12 = w-mom;
                        dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12 + dx_nod12*dx_nod12;
                        if (dd_nod12<=did_max2){
                            if (idx%2==0){
                                count_distances12(XY_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeR[u][v][w].elements, nodeR[u][v][w].len, ds, dd_max, 1);
                            } else {
                                count_distances12(XY_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeR[u][v][w].elements, nodeR[u][v][w].len, ds, dd_max, 1);
                            }
                        }
                    }
                }
            }
            
        }
    }
}

__global__ void make_analyticRR(float *RR, float d_max, int bn, float size_box, int n_pts){
    /*
    Analytic calculation of the RR histogram

    */
    int a = threadIdx.x;
    if (a < bn){
        float dr = (d_max/bn);
        float V = size_box*size_box*size_box;
        float beta1 = n_pts*n_pts/V;
        float alph = 4*(2*acosf(0.0))*(beta1)*dr*dr*dr/3;
        float r1, r2;
        r2 = (float) a;
        r1 = r2+1;
        float sum = alph*((r1*r1*r1)-(r2*r2*r2));
        atomicAdd(&RR[a],sum);
    }
}

int main(int argc, char **argv){
	
    unsigned int np = stoi(argv[3]), bn = stoi(argv[4]);
    float dmax = stof(argv[5]);
    float ds = ((float)(bn))/dmax, size_box = 250.0, alpha = 2.176;
    float size_node = alpha*(size_box/pow((float)(np),1/3.));
    unsigned int partitions = (int)(ceil(size_box/size_node));

    float *DD_A, *DR_A, *DD_B, *DR_B, *RR;
    double *DD, *DR;
    PointW3D *dataD;
    PointW3D *dataR;
    cudaMallocManaged(&dataD, np*sizeof(PointW3D));
    cudaMallocManaged(&dataR, np*sizeof(PointW3D));

    // Name of the files where the results are saved
    string nameDD = "DDiso.dat", nameRR = "RRiso.dat", nameDR = "DRiso.dat";

    // Allocate memory for the histogram as double
    // And the subhistograms as simple presision floats
    DD = new double[bn];
    RR = new float[bn];
    DR = new double[bn];
    cudaMallocManaged(&DD_A, bn*sizeof(float));
    cudaMallocManaged(&DR_A, bn*sizeof(float));
    cudaMallocManaged(&DD_B, bn*sizeof(float));
    cudaMallocManaged(&DR_B, bn*sizeof(float));
    
    //Initialize the histograms in 0
    for (int i = 0; i < bn; i++){
        *(DD+i) = 0;
        *(RR+i) = 0;
        *(DR+i) = 0;
        *(DD_A+i) = 0;
        *(DR_A+i) = 0;
        *(DD_B+i) = 0;
        *(DR_B+i) = 0;
    }
	
	// Open and read the files to store the data in the arrays
	open_files(argv[1], np, dataD);
    open_files(argv[2], np, dataR);

    //Init the nodes arrays
    Node ***nodeD;
    Node ***nodeR;
    cudaMallocManaged(&nodeR, partitions*sizeof(Node**));
    cudaMallocManaged(&nodeD, partitions*sizeof(Node**));
    for (int i=0; i<partitions; i++){
        cudaMallocManaged(&*(nodeR+i), partitions*sizeof(Node*));
        cudaMallocManaged(&*(nodeD+i), partitions*sizeof(Node*));
        for (int j=0; j<partitions; j++){
            cudaMallocManaged(&*(*(nodeR+i)+j), partitions*sizeof(Node));
            cudaMallocManaged(&*(*(nodeD+i)+j), partitions*sizeof(Node));
        }
    }
    
    //Classificate the data into the nodes
    make_nodos(nodeD, dataD, partitions, size_node, np);
    make_nodos(nodeR, dataR, partitions, size_node, np);

    //Get the dimensions of the GPU grid
    int blocks = (int)(ceil((float)((partitions*partitions*partitions)/512.0)));
    dim3 grid(blocks,1,1);
    dim3 block(512,1,1);

    clock_t begin = clock();
    //Launch the kernels
    //make_histoXX<<<grid,block>>>(DD_A, DD_B, nodeD, ds, dmax, size_node, size_box);
    BPC_XX<<<grid,block>>>(DD_A, DD_B, nodeD, ds, dmax, size_node, size_box);

    //make_histoXY<<<grid,block>>>(DR_A, DR_B, nodeD, nodeR, ds, dmax, size_node, size_box);
    
    blocks = (int)(ceil((float)(bn)/512.0));
    dim3 grid_a(blocks,1,1);
    dim3 block_a(512,1,1);

    make_analyticRR<<<grid_a,block_a>>>(RR, dmax, bn, size_box, np);

    //Waits for the GPU to finish
    cudaDeviceSynchronize();  
    cout << "Size of a node " << size_node << endl;
    cout << "Nodes considered as boundary: " << DD_A[0] <<endl;

    //Check here for errors
    cudaError_t error = cudaGetLastError(); 
    cout << "The error code is " << error << endl;
    if(error != 0)
    {
      // print the CUDA error message and exit
      printf("CUDA error: %s\n", cudaGetErrorString(error));
      exit(-1);
    }

    clock_t end = clock();
    double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    printf("\nSpent time = %.4f seg.\n", time_spent );

    //Collect the subhistograms data into the double precision main histograms
    //THis has to be done in CPU since GPU only allows single precision
    for (int i = 0; i < bn; i++){
        DD[i] = (double)(DD_A[i]+ DD_B[i]);
        DR[i] = (double)(DR_A[i]+ DR_B[i]);
    }

    cout << "Termine de hacer todos los histogramas" << endl;
    /*
    // Shows the histograms
    cout << "\nHistograma DD:" << endl;
    int sum = 0;
    for (int k = 0; k<bn; k++){
        cout << DD[k] << "\t";
        sum += DD[k];
    }
    cout << "Total: " << sum << endl;

    cout << "\nHistograma RR:" << endl;
    for (int k = 0; k<bn; k++){
        cout << RR[k] << "\t";
    }

    cout << "\nHistograma DR:" << endl;
    for (int k = 0; k<bn; k++){
        cout << DR[k] << "\t";
    }
    */
	
	// Guardamos los histogramas
	save_histogram(nameDD, bn, DD);
	cout << "Guarde histograma DD..." << endl;
	save_histogram(nameRR, bn, RR);
	cout << "Guarde histograma RR..." << endl;
	save_histogram(nameDR, bn, DR);
	cout << "Guarde histograma DR..." << endl;

    //Free the memory
    cudaFree(&dataD);
    cudaFree(&dataR);

    delete[] DD;
    delete[] DR;
    delete[] RR;
    cudaFree(&DD_A);
    cudaFree(&DR_A);
    cudaFree(&DD_B);
    cudaFree(&DR_B);


    for (int i=0; i<partitions; i++){
        for (int j=0; j<partitions; j++){
            cudaFree(&*(*(nodeR+i)+j));
            cudaFree(&*(*(nodeD+i)+j));
        }
        cudaFree(&*(nodeR+i));
        cudaFree(&*(nodeD+i));
    }
    cudaFree(&nodeR);
    cudaFree(&nodeD);

    cout << "Programa Terminado..." << endl;
    return 0;
}


	.file	"tmpxft_002d5e9c_00000000-6_iso2PCF.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB3777:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE3777:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.type	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0, @function
_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0:
.LFB4529:
	.cfi_startproc
	movl	$1, %edx
	jmp	cudaMallocManaged@PLT
	.cfi_endproc
.LFE4529:
	.size	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0, .-_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	.align 2
	.type	_ZNSolsEPFRSoS_E.isra.0, @function
_ZNSolsEPFRSoS_E.isra.0:
.LFB4530:
	.cfi_startproc
	jmp	*%rsi
	.cfi_endproc
.LFE4530:
	.size	_ZNSolsEPFRSoS_E.isra.0, .-_ZNSolsEPFRSoS_E.isra.0
	.globl	_Z3addRP8PointW3DRiffff
	.type	_Z3addRP8PointW3DRiffff, @function
_Z3addRP8PointW3DRiffff:
.LFB3769:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movd	%xmm1, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movd	%xmm0, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movd	%xmm3, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movd	%xmm2, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rdi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	movl	(%rsi), %eax
	movq	%rsp, %rdi
	leal	1(%rax), %esi
	movl	%esi, 0(%rbp)
	movslq	%esi, %rsi
	salq	$4, %rsi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	movl	0(%rbp), %eax
	movq	(%rsp), %rdx
	xorl	%esi, %esi
	movq	(%rbx), %r8
	leal	-1(%rax), %edi
	xorl	%eax, %eax
.L5:
	cmpl	%esi, %edi
	jle	.L10
	leaq	(%r8,%rax), %rcx
	incl	%esi
	movss	(%rcx), %xmm0
	movss	%xmm0, (%rdx,%rax)
	movss	4(%rcx), %xmm0
	movss	%xmm0, 4(%rdx,%rax)
	movss	8(%rcx), %xmm0
	movss	%xmm0, 8(%rdx,%rax)
	movss	12(%rcx), %xmm0
	movss	%xmm0, 12(%rdx,%rax)
	addq	$16, %rax
	jmp	.L5
.L10:
	movq	%r8, %rdi
	call	cudaFree@PLT
	movslq	0(%rbp), %rax
	movq	(%rsp), %rdx
	salq	$4, %rax
	movq	%rdx, (%rbx)
	leaq	-16(%rdx,%rax), %rax
	movl	%r14d, (%rax)
	movl	%r15d, 4(%rax)
	movl	%r12d, 8(%rax)
	movl	%r13d, 12(%rax)
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	je	.L7
	call	__stack_chk_fail@PLT
.L7:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3769:
	.size	_Z3addRP8PointW3DRiffff, .-_Z3addRP8PointW3DRiffff
	.globl	_Z10make_nodosPPP4NodeP8PointW3Djfj
	.type	_Z10make_nodosPPP4NodeP8PointW3Djfj, @function
_Z10make_nodosPPP4NodeP8PointW3Djfj:
.LFB3770:
	.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
	xorl	%r14d, %r14d
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movl	%edx, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rsi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movl	%ecx, 4(%rsp)
	movss	%xmm0, (%rsp)
.L12:
	cmpq	%r13, %r14
	je	.L21
	xorl	%eax, %eax
.L15:
	leaq	0(,%rax,8), %rbp
	xorl	%r15d, %r15d
.L13:
	movq	(%r12,%r14,8), %rcx
	movq	%r15, %rdi
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	salq	$4, %rdi
	movl	$16, %esi
	incq	%r15
	addq	(%rcx,%rbp), %rdi
	movl	%eax, (%rdi)
	addq	$8, %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	cmpq	%r13, %r15
	movq	8(%rsp), %rax
	jne	.L13
	incq	%rax
	cmpq	%r13, %rax
	jne	.L15
	incq	%r14
	jmp	.L12
.L21:
	movl	4(%rsp), %ebp
	salq	$4, %rbp
	addq	%rbx, %rbp
.L16:
	cmpq	%rbx, %rbp
	je	.L22
	movss	(%rbx), %xmm0
	movss	4(%rbx), %xmm1
	addq	$16, %rbx
	movss	-8(%rbx), %xmm2
	movaps	%xmm0, %xmm3
	divss	(%rsp), %xmm3
	cvttss2sil	%xmm3, %edx
	movaps	%xmm1, %xmm3
	divss	(%rsp), %xmm3
	cvttss2sil	%xmm3, %eax
	movaps	%xmm2, %xmm3
	divss	(%rsp), %xmm3
	cvttss2sil	%xmm3, %esi
	movss	-4(%rbx), %xmm3
	movslq	%edx, %rdx
	movq	(%r12,%rdx,8), %rdx
	cltq
	movslq	%esi, %rsi
	salq	$4, %rsi
	addq	(%rdx,%rax,8), %rsi
	leaq	8(%rsi), %rdi
	call	_Z3addRP8PointW3DRiffff
	jmp	.L16
.L22:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3770:
	.size	_Z10make_nodosPPP4NodeP8PointW3Djfj, .-_Z10make_nodosPPP4NodeP8PointW3Djfj
	.globl	_Z17count_distances11PfP8PointW3Diffi
	.type	_Z17count_distances11PfP8PointW3Diffi, @function
_Z17count_distances11PfP8PointW3Diffi:
.LFB3771:
	.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
.LFE3771:
	.size	_Z17count_distances11PfP8PointW3Diffi, .-_Z17count_distances11PfP8PointW3Diffi
	.globl	_Z17count_distances12PfP8PointW3DiS1_iffi
	.type	_Z17count_distances12PfP8PointW3DiS1_iffi, @function
_Z17count_distances12PfP8PointW3DiS1_iffi:
.LFB3772:
	.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
.LFE3772:
	.size	_Z17count_distances12PfP8PointW3DiS1_iffi, .-_Z17count_distances12PfP8PointW3DiS1_iffi
	.globl	_Z8BPC_loopPfPPP4Nodeiiiiiffifbbbbbbbbb
	.type	_Z8BPC_loopPfPPP4Nodeiiiiiffifbbbbbbbbb, @function
_Z8BPC_loopPfPPP4Nodeiiiiiffifbbbbbbbbb:
.LFB3773:
	.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
.LFE3773:
	.size	_Z8BPC_loopPfPPP4Nodeiiiiiffifbbbbbbbbb, .-_Z8BPC_loopPfPPP4Nodeiiiiiffifbbbbbbbbb
	.globl	_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.type	_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff, @function
_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff:
.LFB3799:
	.cfi_startproc
	endbr64
	subq	$184, %rsp
	.cfi_def_cfa_offset 192
	movq	%rdi, 40(%rsp)
	leaq	56(%rsp), %rcx
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movss	%xmm0, 20(%rsp)
	movss	%xmm1, 16(%rsp)
	movss	%xmm2, 12(%rsp)
	movss	%xmm3, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 168(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 112(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 128(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 136(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 144(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 152(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 160(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L29
	pushq	56(%rsp)
	.cfi_def_cfa_offset 200
	leaq	_Z6BPC_XXPfS_PPP4Nodeffff(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 208
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	128(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 200
	popq	%rdx
	.cfi_def_cfa_offset 192
.L29:
	movq	168(%rsp), %rax
	subq	%fs:40, %rax
	je	.L31
	call	__stack_chk_fail@PLT
.L31:
	addq	$184, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3799:
	.size	_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff, .-_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.globl	_Z6BPC_XXPfS_PPP4Nodeffff
	.type	_Z6BPC_XXPfS_PPP4Nodeffff, @function
_Z6BPC_XXPfS_PPP4Nodeffff:
.LFB3800:
	.cfi_startproc
	endbr64
	jmp	_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.cfi_endproc
.LFE3800:
	.size	_Z6BPC_XXPfS_PPP4Nodeffff, .-_Z6BPC_XXPfS_PPP4Nodeffff
	.globl	_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.type	_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff, @function
_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff:
.LFB3801:
	.cfi_startproc
	endbr64
	subq	$184, %rsp
	.cfi_def_cfa_offset 192
	movq	%rdi, 40(%rsp)
	leaq	56(%rsp), %rcx
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movss	%xmm0, 20(%rsp)
	movss	%xmm1, 16(%rsp)
	movss	%xmm2, 12(%rsp)
	movss	%xmm3, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 168(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 72(%rsp)
	movq	%rax, 112(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 128(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 136(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 144(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 152(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 160(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L34
	pushq	56(%rsp)
	.cfi_def_cfa_offset 200
	leaq	_Z12make_histoXXPfS_PPP4Nodeffff(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 208
	movq	92(%rsp), %rcx
	movl	100(%rsp), %r8d
	movq	80(%rsp), %rsi
	movl	88(%rsp), %edx
	leaq	128(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 200
	popq	%rdx
	.cfi_def_cfa_offset 192
.L34:
	movq	168(%rsp), %rax
	subq	%fs:40, %rax
	je	.L36
	call	__stack_chk_fail@PLT
.L36:
	addq	$184, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3801:
	.size	_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff, .-_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.globl	_Z12make_histoXXPfS_PPP4Nodeffff
	.type	_Z12make_histoXXPfS_PPP4Nodeffff, @function
_Z12make_histoXXPfS_PPP4Nodeffff:
.LFB3802:
	.cfi_startproc
	endbr64
	jmp	_Z46__device_stub__Z12make_histoXXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	.cfi_endproc
.LFE3802:
	.size	_Z12make_histoXXPfS_PPP4Nodeffff, .-_Z12make_histoXXPfS_PPP4Nodeffff
	.globl	_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff
	.type	_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff, @function
_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff:
.LFB3803:
	.cfi_startproc
	endbr64
	subq	$200, %rsp
	.cfi_def_cfa_offset 208
	movq	%rdi, 40(%rsp)
	leaq	72(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	84(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	56(%rsp), %rdx
	movq	%rcx, 16(%rsp)
	leaq	64(%rsp), %rcx
	movss	%xmm0, 12(%rsp)
	movss	%xmm1, 8(%rsp)
	movss	%xmm2, 4(%rsp)
	movss	%xmm3, (%rsp)
	movq	%fs:40, %rax
	movq	%rax, 184(%rsp)
	xorl	%eax, %eax
	leaq	40(%rsp), %rax
	movl	$1, 80(%rsp)
	movq	%rax, 120(%rsp)
	leaq	32(%rsp), %rax
	movq	%rax, 128(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, 136(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 144(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 152(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 160(%rsp)
	leaq	4(%rsp), %rax
	movq	%rax, 168(%rsp)
	movq	%rsp, %rax
	movq	%rax, 176(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 72(%rsp)
	movq	%rax, 84(%rsp)
	movl	$1, 92(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L39
	pushq	64(%rsp)
	.cfi_def_cfa_offset 216
	leaq	_Z12make_histoXYPfS_PPP4NodeS3_ffff(%rip), %rdi
	pushq	64(%rsp)
	.cfi_def_cfa_offset 224
	movq	100(%rsp), %rcx
	movl	108(%rsp), %r8d
	movq	88(%rsp), %rsi
	movl	96(%rsp), %edx
	leaq	136(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 216
	popq	%rdx
	.cfi_def_cfa_offset 208
.L39:
	movq	184(%rsp), %rax
	subq	%fs:40, %rax
	je	.L41
	call	__stack_chk_fail@PLT
.L41:
	addq	$200, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3803:
	.size	_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff, .-_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff
	.globl	_Z12make_histoXYPfS_PPP4NodeS3_ffff
	.type	_Z12make_histoXYPfS_PPP4NodeS3_ffff, @function
_Z12make_histoXYPfS_PPP4NodeS3_ffff:
.LFB3804:
	.cfi_startproc
	endbr64
	jmp	_Z49__device_stub__Z12make_histoXYPfS_PPP4NodeS3_ffffPfS_PPP4NodeS3_ffff
	.cfi_endproc
.LFE3804:
	.size	_Z12make_histoXYPfS_PPP4NodeS3_ffff, .-_Z12make_histoXYPfS_PPP4NodeS3_ffff
	.globl	_Z39__device_stub__Z15make_analyticRRPffifiPffifi
	.type	_Z39__device_stub__Z15make_analyticRRPffifiPffifi, @function
_Z39__device_stub__Z15make_analyticRRPffifiPffifi:
.LFB3805:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 24(%rsp)
	leaq	40(%rsp), %rcx
	leaq	48(%rsp), %rdi
	movl	%esi, 16(%rsp)
	leaq	60(%rsp), %rsi
	movl	%edx, 8(%rsp)
	leaq	32(%rsp), %rdx
	movss	%xmm0, 20(%rsp)
	movss	%xmm1, 12(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 56(%rsp)
	movq	%rax, 96(%rsp)
	leaq	20(%rsp), %rax
	movq	%rax, 104(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	12(%rsp), %rax
	movq	%rax, 120(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 48(%rsp)
	movq	%rax, 60(%rsp)
	movl	$1, 68(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L44
	pushq	40(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z15make_analyticRRPffifi(%rip), %rdi
	pushq	40(%rsp)
	.cfi_def_cfa_offset 176
	movq	76(%rsp), %rcx
	movl	84(%rsp), %r8d
	movq	64(%rsp), %rsi
	movl	72(%rsp), %edx
	leaq	112(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L44:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L46
	call	__stack_chk_fail@PLT
.L46:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3805:
	.size	_Z39__device_stub__Z15make_analyticRRPffifiPffifi, .-_Z39__device_stub__Z15make_analyticRRPffifiPffifi
	.globl	_Z15make_analyticRRPffifi
	.type	_Z15make_analyticRRPffifi, @function
_Z15make_analyticRRPffifi:
.LFB3806:
	.cfi_startproc
	endbr64
	jmp	_Z39__device_stub__Z15make_analyticRRPffifiPffifi
	.cfi_endproc
.LFE3806:
	.size	_Z15make_analyticRRPffifi, .-_Z15make_analyticRRPffifi
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"_Z15make_analyticRRPffifi"
.LC1:
	.string	"_Z12make_histoXYPfS_PPP4NodeS3_ffff"
.LC2:
	.string	"_Z12make_histoXXPfS_PPP4Nodeffff"
.LC3:
	.string	"_Z6BPC_XXPfS_PPP4Nodeffff"
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB3808:
	.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	.LC0(%rip), %rdx
	movq	%rax, %rdi
	movq	%rax, %rbx
	pushq	$0
	.cfi_def_cfa_offset 40
	movq	%rdx, %rcx
	leaq	_Z15make_analyticRRPffifi(%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	%r9d, %r9d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC1(%rip), %rdx
	orl	$-1, %r8d
	leaq	_Z12make_histoXYPfS_PPP4NodeS3_ffff(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r9d, %r9d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC2(%rip), %rdx
	orl	$-1, %r8d
	leaq	_Z12make_histoXXPfS_PPP4Nodeffff(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r9d, %r9d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC3(%rip), %rdx
	orl	$-1, %r8d
	leaq	_Z6BPC_XXPfS_PPP4Nodeffff(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	pushq	$0
	.cfi_def_cfa_offset 40
	pushq	$0
	.cfi_def_cfa_offset 48
	call	__cudaRegisterFunction@PLT
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	addq	$32, %rsp
	.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
.LFE3808:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev,"axG",@progbits,_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD5Ev,comdat
	.align 2
	.weak	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.type	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev, @function
_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev:
.LFB3887:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	__errno_location@PLT
	cmpl	$0, (%rax)
	jne	.L51
	movl	(%rbx), %edx
	movl	%edx, (%rax)
.L51:
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3887:
	.size	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev, .-_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.weak	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	.set	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev,_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.section	.text._ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,"axG",@progbits,_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,comdat
	.weak	_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_
	.type	_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_, @function
_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_:
.LFB3882:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA3882
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdi, %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rsi, %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rcx, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rdx, %rbx
	subq	$56, %rsp
	.cfi_def_cfa_offset 112
	movl	%r8d, 12(%rsp)
	leaq	28(%rsp), %r13
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	call	__errno_location@PLT
	movl	12(%rsp), %edx
	leaq	32(%rsp), %rsi
	movq	%rbx, %rdi
	movq	%rax, %rbp
	movl	(%rax), %eax
	movl	%eax, 28(%rsp)
	xorl	%eax, %eax
	movl	%eax, 0(%rbp)
.LEHB0:
	call	*%r15
	movq	32(%rsp), %rdx
	cmpq	%rbx, %rdx
	jne	.L55
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L68
	movq	%r14, %rdi
	call	_ZSt24__throw_invalid_argumentPKc@PLT
.L55:
	cmpl	$34, 0(%rbp)
	je	.L57
	movl	$2147483648, %ecx
	movl	$4294967295, %esi
	addq	%rax, %rcx
	cmpq	%rcx, %rsi
	jnb	.L58
.L57:
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L68
	movq	%r14, %rdi
	call	_ZSt20__throw_out_of_rangePKc@PLT
.LEHE0:
.L58:
	testq	%r12, %r12
	je	.L60
	subq	%rbx, %rdx
	movq	%rdx, (%r12)
.L60:
	movq	%r13, %rdi
	movl	%eax, 12(%rsp)
	call	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	movl	12(%rsp), %eax
	movq	40(%rsp), %rdx
	subq	%fs:40, %rdx
	je	.L63
	jmp	.L68
.L64:
	endbr64
	movq	%rax, %rbx
.L61:
	movq	%r13, %rdi
	call	_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	movq	40(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L68
	movq	%rbx, %rdi
.LEHB1:
	call	_Unwind_Resume@PLT
.LEHE1:
.L68:
	call	__stack_chk_fail@PLT
.L63:
	addq	$56, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3882:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table._ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,"aG",@progbits,_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,comdat
.LLSDA3882:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE3882-.LLSDACSB3882
.LLSDACSB3882:
	.uleb128 .LEHB0-.LFB3882
	.uleb128 .LEHE0-.LEHB0
	.uleb128 .L64-.LFB3882
	.uleb128 0
	.uleb128 .LEHB1-.LFB3882
	.uleb128 .LEHE1-.LEHB1
	.uleb128 0
	.uleb128 0
.LLSDACSE3882:
	.section	.text._ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,"axG",@progbits,_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_,comdat
	.size	_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_, .-_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_
	.section	.text._ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev,"axG",@progbits,_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD5Ev,comdat
	.align 2
	.weak	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.type	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev, @function
_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev:
.LFB3932:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	__errno_location@PLT
	cmpl	$0, (%rax)
	jne	.L71
	movl	(%rbx), %edx
	movl	%edx, (%rax)
.L71:
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3932:
	.size	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev, .-_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.weak	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	.set	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev,_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev
	.section	.rodata._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.str1.1,"aMS",@progbits,1
.LC4:
	.string	"basic_string: construction from null is not valid"
	.section	.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_,"axG",@progbits,_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC5IS3_EEPKcRKS3_,comdat
	.align 2
	.weak	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_, @function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_:
.LFB4132:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	leaq	16(%rdi), %rax
	movq	%rax, (%rdi)
	testq	%rsi, %rsi
	jne	.L75
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L80
	leaq	.LC4(%rip), %rdi
	call	_ZSt19__throw_logic_errorPKc@PLT
.L75:
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	movq	%rsi, %rbp
	call	strlen@PLT
	movq	%rax, (%rsp)
	leaq	0(%rbp,%rax), %r12
	cmpq	$15, %rax
	jbe	.L77
	movq	%rsp, %rsi
	xorl	%edx, %edx
	movq	%rbx, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm@PLT
	movq	%rax, (%rbx)
	movq	(%rsp), %rax
	movq	%rax, 16(%rbx)
.L77:
	movq	(%rbx), %rdi
	movq	%r12, %rdx
	movq	%rbp, %rsi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_@PLT
	movq	(%rsp), %rax
	movq	(%rbx), %rdx
	movq	%rax, 8(%rbx)
	movb	$0, (%rdx,%rax)
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	je	.L78
.L80:
	call	__stack_chk_fail@PLT
.L78:
	addq	$16, %rsp
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4132:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_, .-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.weak	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
	.set	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_,_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.section	.rodata.str1.1
.LC5:
	.string	"../../../fake_DATA/DATOS/"
.LC6:
	.string	"Failed to load the file in "
	.text
	.globl	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
	.type	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D, @function
_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D:
.LFB3766:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA3766
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	%esi, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rdi, %r14
	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	%rdx, %rbx
	subq	$584, %rsp
	.cfi_def_cfa_offset 640
	movq	%fs:40, %rax
	movq	%rax, 568(%rsp)
	xorl	%eax, %eax
	leaq	48(%rsp), %rbp
	leaq	16(%rsp), %r13
	movq	%rbp, %rdi
.LEHB2:
	call	_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE2:
	leaq	15(%rsp), %rdx
	leaq	.LC5(%rip), %rsi
	movq	%r13, %rdi
.LEHB3:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE3:
	movq	24(%rsp), %r8
	movq	16(%rsp), %rcx
	xorl	%edx, %edx
	xorl	%esi, %esi
	movq	%r14, %rdi
.LEHB4:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@PLT
	movq	(%r14), %rsi
	movl	$12, %edx
	movq	%rbp, %rdi
	call	_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	movl	336(%rsp), %r12d
	andl	$5, %r12d
	jne	.L82
	addq	$12, %rbx
	jmp	.L83
.L82:
	leaq	.LC6(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%r14, %rsi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movl	$1, %edi
	call	exit@PLT
.L84:
	leaq	-12(%rbx), %rsi
	movq	%rbp, %rdi
	call	_ZNSi10_M_extractIfEERSiRT_@PLT
	movq	%rax, %rdi
	leaq	-8(%rbx), %rsi
	call	_ZNSi10_M_extractIfEERSiRT_@PLT
	movq	%rax, %rdi
	leaq	-4(%rbx), %rsi
	call	_ZNSi10_M_extractIfEERSiRT_@PLT
	movq	%rax, %rdi
	movq	%rbx, %rsi
	call	_ZNSi10_M_extractIfEERSiRT_@PLT
	incl	%r12d
	addq	$16, %rbx
.L83:
	cmpl	%r15d, %r12d
	jl	.L84
	movq	%rbp, %rdi
	call	_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE4:
	movq	%r13, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	%rbp, %rdi
	call	_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	568(%rsp), %rax
	subq	%fs:40, %rax
	je	.L88
	jmp	.L91
.L90:
	endbr64
	movq	%rax, %rbx
.L85:
	movq	%r13, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L86
.L89:
	endbr64
	movq	%rax, %rbx
.L86:
	movq	%rbp, %rdi
	call	_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	568(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L91
	movq	%rbx, %rdi
.LEHB5:
	call	_Unwind_Resume@PLT
.LEHE5:
.L91:
	call	__stack_chk_fail@PLT
.L88:
	addq	$584, %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
.LFE3766:
	.section	.gcc_except_table,"a",@progbits
.LLSDA3766:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE3766-.LLSDACSB3766
.LLSDACSB3766:
	.uleb128 .LEHB2-.LFB3766
	.uleb128 .LEHE2-.LEHB2
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB3-.LFB3766
	.uleb128 .LEHE3-.LEHB3
	.uleb128 .L89-.LFB3766
	.uleb128 0
	.uleb128 .LEHB4-.LFB3766
	.uleb128 .LEHE4-.LEHB4
	.uleb128 .L90-.LFB3766
	.uleb128 0
	.uleb128 .LEHB5-.LFB3766
	.uleb128 .LEHE5-.LEHB5
	.uleb128 0
	.uleb128 0
.LLSDACSE3766:
	.text
	.size	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D, .-_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
	.section	.rodata.str1.1
.LC7:
	.string	"Failed to save the the histogram in "
	.text
	.globl	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
	.type	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd, @function
_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd:
.LFB3767:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA3767
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rdx, %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movl	%esi, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$528, %rsp
	.cfi_def_cfa_offset 576
	movq	%fs:40, %rax
	movq	%rax, 520(%rsp)
	xorl	%eax, %eax
	leaq	8(%rsp), %rbx
	movq	%rbx, %rdi
.LEHB6:
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE6:
	movq	(%r12), %rsi
	movl	$20, %edx
	movq	%rbx, %rdi
.LEHB7:
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	xorl	%ebp, %ebp
	testb	$5, 288(%rsp)
	je	.L94
	leaq	.LC7(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movl	$1, %edi
	call	exit@PLT
.L95:
	movsd	(%r14,%rbp,8), %xmm0
	movq	%rbx, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	incq	%rbp
.L94:
	cmpl	%ebp, %r13d
	jg	.L95
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE7:
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	520(%rsp), %rax
	subq	%fs:40, %rax
	je	.L98
	jmp	.L103
.L100:
	endbr64
	movq	%rax, %rbp
.L96:
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	520(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L103
	movq	%rbp, %rdi
.LEHB8:
	call	_Unwind_Resume@PLT
.LEHE8:
.L103:
	call	__stack_chk_fail@PLT
.L98:
	addq	$528, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3767:
	.section	.gcc_except_table
.LLSDA3767:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE3767-.LLSDACSB3767
.LLSDACSB3767:
	.uleb128 .LEHB6-.LFB3767
	.uleb128 .LEHE6-.LEHB6
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB7-.LFB3767
	.uleb128 .LEHE7-.LEHB7
	.uleb128 .L100-.LFB3767
	.uleb128 0
	.uleb128 .LEHB8-.LFB3767
	.uleb128 .LEHE8-.LEHB8
	.uleb128 0
	.uleb128 0
.LLSDACSE3767:
	.text
	.size	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd, .-_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
	.globl	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
	.type	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf, @function
_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf:
.LFB3768:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA3768
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	movq	%rdx, %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movl	%esi, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$528, %rsp
	.cfi_def_cfa_offset 576
	movq	%fs:40, %rax
	movq	%rax, 520(%rsp)
	xorl	%eax, %eax
	leaq	8(%rsp), %rbx
	movq	%rbx, %rdi
.LEHB9:
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@PLT
.LEHE9:
	movq	(%r12), %rsi
	movl	$20, %edx
	movq	%rbx, %rdi
.LEHB10:
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@PLT
	xorl	%ebp, %ebp
	testb	$5, 288(%rsp)
	je	.L106
	leaq	.LC7(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%r12, %rsi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movl	$1, %edi
	call	exit@PLT
.L107:
	movq	%rbx, %rdi
	cvtss2sd	(%r14,%rbp,4), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	incq	%rbp
.L106:
	cmpl	%ebp, %r13d
	jg	.L107
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@PLT
.LEHE10:
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	520(%rsp), %rax
	subq	%fs:40, %rax
	je	.L110
	jmp	.L115
.L112:
	endbr64
	movq	%rax, %rbp
.L108:
	movq	%rbx, %rdi
	call	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@PLT
	movq	520(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L115
	movq	%rbp, %rdi
.LEHB11:
	call	_Unwind_Resume@PLT
.LEHE11:
.L115:
	call	__stack_chk_fail@PLT
.L110:
	addq	$528, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE3768:
	.section	.gcc_except_table
.LLSDA3768:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE3768-.LLSDACSB3768
.LLSDACSB3768:
	.uleb128 .LEHB9-.LFB3768
	.uleb128 .LEHE9-.LEHB9
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB10-.LFB3768
	.uleb128 .LEHE10-.LEHB10
	.uleb128 .L112-.LFB3768
	.uleb128 0
	.uleb128 .LEHB11-.LFB3768
	.uleb128 .LEHE11-.LEHB11
	.uleb128 0
	.uleb128 0
.LLSDACSE3768:
	.text
	.size	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf, .-_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
	.section	.rodata.str1.1
.LC8:
	.string	"stoi"
.LC9:
	.string	"stof"
.LC14:
	.string	"DDiso.dat"
.LC15:
	.string	"RRiso.dat"
.LC16:
	.string	"DRiso.dat"
.LC20:
	.string	"Size of a node "
.LC21:
	.string	"Nodes considered as boundary: "
.LC22:
	.string	"The error code is "
.LC23:
	.string	"CUDA error: %s\n"
.LC25:
	.string	"\nSpent time = %.4f seg.\n"
.LC26:
	.string	"Termine de hacer todos los histogramas"
.LC27:
	.string	"Guarde histograma DD..."
.LC28:
	.string	"Guarde histograma RR..."
.LC29:
	.string	"Guarde histograma DR..."
.LC30:
	.string	"Programa Terminado..."
	.section	.text.startup
	.globl	main
	.type	main, @function
main:
.LFB3774:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA3774
	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
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	.LC8(%rip), %rbx
	subq	$328, %rsp
	.cfi_def_cfa_offset 384
	movq	24(%rsi), %rsi
	movq	%fs:40, %rax
	movq	%rax, 312(%rsp)
	xorl	%eax, %eax
	leaq	168(%rsp), %r15
	leaq	280(%rsp), %rax
	movq	%r15, %rdx
	movq	%rax, %rdi
	movq	%rax, (%rsp)
.LEHB12:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE12:
	movl	$10, %r8d
	xorl	%ecx, %ecx
	movq	%rbx, %rsi
	movq	280(%rsp), %rdx
	movq	__isoc23_strtol@GOTPCREL(%rip), %rdi
.LEHB13:
	call	_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_
.LEHE13:
	movq	(%rsp), %rdi
	movl	%eax, 8(%rsp)
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	32(%r12), %rsi
	movq	(%rsp), %rdi
	movq	%r15, %rdx
.LEHB14:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE14:
	movl	$10, %r8d
	xorl	%ecx, %ecx
	movq	%rbx, %rsi
	movq	280(%rsp), %rdx
	movq	__isoc23_strtol@GOTPCREL(%rip), %rdi
.LEHB15:
	call	_ZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_
.LEHE15:
	movq	(%rsp), %rdi
	movl	%eax, %ebp
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	40(%r12), %rsi
	movq	(%rsp), %rdi
	leaq	144(%rsp), %rdx
.LEHB16:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE16:
	movq	280(%rsp), %rbx
	call	__errno_location@PLT
	movq	%r15, %rsi
	movq	%rax, %r13
	movl	(%rax), %eax
	movq	%rbx, %rdi
	movl	%eax, 156(%rsp)
	xorl	%eax, %eax
	movl	%eax, 0(%r13)
	call	strtof@PLT
	cmpq	168(%rsp), %rbx
	leaq	156(%rsp), %rbx
	movss	%xmm0, 48(%rsp)
	jne	.L118
	movq	312(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L179
	leaq	.LC9(%rip), %rdi
.LEHB17:
	call	_ZSt24__throw_invalid_argumentPKc@PLT
.L118:
	cmpl	$34, 0(%r13)
	jne	.L120
	movq	312(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L179
	leaq	.LC9(%rip), %rdi
	call	_ZSt20__throw_out_of_rangePKc@PLT
.LEHE17:
.L120:
	movq	%rbx, %rdi
	movl	%ebp, %r13d
	call	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	movq	(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movl	8(%rsp), %r14d
	cvtsi2ssq	%r13, %xmm4
	movsd	.LC10(%rip), %xmm1
	cvtsi2ssq	%r14, %xmm0
	salq	$4, %r14
	movss	%xmm4, 52(%rsp)
	cvtss2sd	%xmm0, %xmm0
	call	pow@PLT
	movaps	%xmm0, %xmm1
	movsd	.LC11(%rip), %xmm0
	divsd	%xmm1, %xmm0
	mulsd	.LC12(%rip), %xmm0
	cvtsd2ss	%xmm0, %xmm5
	movss	.LC13(%rip), %xmm0
	movss	%xmm5, 20(%rsp)
	divss	%xmm5, %xmm0
	call	ceilf@PLT
	leaq	96(%rsp), %rdi
	movq	%r14, %rsi
	cvttss2sil	%xmm0, %ebx
.LEHB18:
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	104(%rsp), %rdi
	movq	%r14, %rsi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	184(%rsp), %rdi
	movq	%r15, %rdx
	leaq	.LC14(%rip), %rsi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE18:
	leaq	216(%rsp), %rdi
	movq	%r15, %rdx
	leaq	.LC15(%rip), %rsi
.LEHB19:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE19:
	jmp	.L188
.L173:
	endbr64
	movq	%rax, %rbp
.L127:
	movq	%rbx, %rdi
	call	_ZZN9__gnu_cxx6__stoaIffcJEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD1Ev
	movq	(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	%rbp, %rdi
	movq	312(%rsp), %rax
	subq	%fs:40, %rax
	je	.L183
	jmp	.L179
.L188:
	leaq	248(%rsp), %rdi
	movq	%r15, %rdx
	leaq	.LC16(%rip), %rsi
.LEHB20:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE20:
	leaq	0(,%r13,8), %r14
	movq	%r14, %rdi
.LEHB21:
	call	_Znam@PLT
	salq	$2, %r13
	movq	%rax, 24(%rsp)
	movq	%r13, %rdi
	call	_Znam@PLT
	movq	%r14, %rdi
	movq	%rax, 32(%rsp)
	call	_Znam@PLT
	leaq	64(%rsp), %rdi
	movq	%r13, %rsi
	movq	%rax, 40(%rsp)
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	72(%rsp), %rdi
	movq	%r13, %rsi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	80(%rsp), %rdi
	movq	%r13, %rsi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	leaq	88(%rsp), %rdi
	movq	%r13, %rsi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	64(%rsp), %rdx
	movq	72(%rsp), %rcx
	xorl	%eax, %eax
	movq	80(%rsp), %rsi
	movq	88(%rsp), %rdi
.L129:
	cmpl	%ebp, %eax
	jnb	.L189
	movq	24(%rsp), %r10
	movq	32(%rsp), %r11
	movq	40(%rsp), %r9
	movl	$0x00000000, (%r11,%rax,4)
	movq	$0x000000000, (%r10,%rax,8)
	movl	$0x00000000, (%rdx,%rax,4)
	movq	$0x000000000, (%r9,%rax,8)
	movl	$0x00000000, (%rcx,%rax,4)
	movl	$0x00000000, (%rsi,%rax,4)
	movl	$0x00000000, (%rdi,%rax,4)
	incq	%rax
	jmp	.L129
.L189:
	movq	8(%r12), %rsi
	movq	(%rsp), %rdi
	movq	%r15, %rdx
	movq	96(%rsp), %r13
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE21:
	movl	8(%rsp), %esi
	movq	(%rsp), %rdi
	movq	%r13, %rdx
.LEHB22:
	call	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
.LEHE22:
	movq	(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	16(%r12), %rsi
	movq	(%rsp), %rdi
	movq	%r15, %rdx
	movq	104(%rsp), %r13
.LEHB23:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IS3_EEPKcRKS3_
.LEHE23:
	movl	8(%rsp), %esi
	movq	(%rsp), %rdi
	movq	%r13, %rdx
.LEHB24:
	call	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
.LEHE24:
	movq	(%rsp), %rdi
	movl	%ebx, %r12d
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	0(,%r12,8), %rax
	leaq	120(%rsp), %rdi
	movq	%rax, %rsi
	movq	%rax, (%rsp)
.LEHB25:
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	(%rsp), %rsi
	leaq	112(%rsp), %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	salq	$4, %r12
	movq	%r12, 56(%rsp)
	xorl	%r12d, %r12d
.L131:
	cmpl	%ebx, %r12d
	jnb	.L190
	movq	120(%rsp), %rdi
	leaq	0(,%r12,8), %r14
	movq	(%rsp), %rsi
	addq	%r14, %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	112(%rsp), %rdi
	movq	(%rsp), %rsi
	addq	%r14, %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	xorl	%r13d, %r13d
.L132:
	movq	120(%rsp), %rax
	leaq	0(,%r13,8), %r15
	movq	56(%rsp), %rsi
	movq	(%rax,%r14), %rdi
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	movq	112(%rsp), %rax
	movq	56(%rsp), %rsi
	movq	(%rax,%r14), %rdi
	addq	%r15, %rdi
	call	_Z17cudaMallocManagedI8PointW3DE9cudaErrorPPT_mj.constprop.0.isra.0
	incq	%r13
	cmpl	%ebx, %r13d
	jb	.L132
	incq	%r12
	jmp	.L131
.L190:
	movl	8(%rsp), %ecx
	movss	20(%rsp), %xmm0
	movl	%ebx, %edx
	movq	96(%rsp), %rsi
	movq	112(%rsp), %rdi
	call	_Z10make_nodosPPP4NodeP8PointW3Djfj
	movl	8(%rsp), %ecx
	movss	20(%rsp), %xmm0
	movl	%ebx, %edx
	movq	104(%rsp), %rsi
	movq	120(%rsp), %rdi
	call	_Z10make_nodosPPP4NodeP8PointW3Djfj
	movl	%ebx, %eax
	imull	%ebx, %eax
	imull	%ebx, %eax
	cvtsi2sdq	%rax, %xmm0
	mulsd	.LC19(%rip), %xmm0
	cvtsd2ss	%xmm0, %xmm0
	call	ceilf@PLT
	movl	$1, 152(%rsp)
	cvttss2sil	%xmm0, %eax
	movl	%eax, 132(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 136(%rsp)
	addq	$511, %rax
	movq	%rax, 144(%rsp)
	call	clock@PLT
	movl	152(%rsp), %ecx
	xorl	%r9d, %r9d
	movq	144(%rsp), %rdx
	movq	132(%rsp), %rdi
	movl	140(%rsp), %esi
	xorl	%r8d, %r8d
	movq	%rax, %r13
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	je	.L136
.L138:
	cvtss2sd	52(%rsp), %xmm0
	mulsd	.LC19(%rip), %xmm0
	call	ceil@PLT
	movl	$8388609, %edx
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	cvttsd2sil	%xmm0, %eax
	salq	$9, %rdx
	movl	$1, %ecx
	movl	$1, 176(%rsp)
	movq	%rdx, 168(%rsp)
	movl	%eax, 156(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 160(%rsp)
	movq	156(%rsp), %rdi
	movl	164(%rsp), %esi
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	je	.L139
	jmp	.L141
.L136:
	movss	48(%rsp), %xmm1
	movss	52(%rsp), %xmm0
	movss	.LC13(%rip), %xmm3
	movss	20(%rsp), %xmm2
	divss	%xmm1, %xmm0
	movq	112(%rsp), %rdx
	movq	80(%rsp), %rsi
	movq	64(%rsp), %rdi
	call	_Z39__device_stub__Z6BPC_XXPfS_PPP4NodeffffPfS_PPP4Nodeffff
	jmp	.L138
.L139:
	movl	8(%rsp), %edx
	movss	.LC13(%rip), %xmm1
	movl	%ebp, %esi
	movss	48(%rsp), %xmm0
	movq	32(%rsp), %rdi
	call	_Z39__device_stub__Z15make_analyticRRPffifiPffifi
.L141:
	call	cudaDeviceSynchronize@PLT
	leaq	_ZSt4cout(%rip), %r14
	leaq	.LC20(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	cvtss2sd	20(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	.LC21(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	64(%rsp), %rax
	cvtss2sd	(%rax), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	call	cudaGetLastError@PLT
	leaq	.LC22(%rip), %rsi
	movq	%r14, %rdi
	movl	%eax, %r12d
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%r12d, %esi
	call	_ZNSolsEi@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	testl	%r12d, %r12d
	je	.L142
	movl	%r12d, %edi
	call	cudaGetErrorString@PLT
	movq	%rax, %rdx
	leaq	.LC23(%rip), %rsi
	movl	$2, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	orl	$-1, %edi
	call	exit@PLT
.L142:
	call	clock@PLT
	leaq	.LC25(%rip), %rsi
	movl	$2, %edi
	subq	%r13, %rax
	cvtsi2sdq	%rax, %xmm0
	movb	$1, %al
	divsd	.LC24(%rip), %xmm0
	call	__printf_chk@PLT
	movq	64(%rsp), %rdx
	movq	80(%rsp), %rcx
	xorl	%eax, %eax
	movq	72(%rsp), %rsi
	movq	88(%rsp), %rdi
.L143:
	cmpl	%ebp, %eax
	jnb	.L191
	movss	(%rdx,%rax,4), %xmm0
	addss	(%rcx,%rax,4), %xmm0
	movq	24(%rsp), %r10
	movq	40(%rsp), %r11
	cvtss2sd	%xmm0, %xmm0
	movsd	%xmm0, (%r10,%rax,8)
	movss	(%rsi,%rax,4), %xmm0
	addss	(%rdi,%rax,4), %xmm0
	cvtss2sd	%xmm0, %xmm0
	movsd	%xmm0, (%r11,%rax,8)
	incq	%rax
	jmp	.L143
.L191:
	leaq	.LC26(%rip), %rsi
	movq	%r14, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	184(%rsp), %rax
	leaq	280(%rsp), %r13
	movq	%rax, %rsi
	movq	%r13, %rdi
	movq	%rax, (%rsp)
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@PLT
.LEHE25:
	movq	24(%rsp), %rdx
	movl	%ebp, %esi
	movq	%r13, %rdi
.LEHB26:
	call	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
.LEHE26:
	movq	%r13, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	.LC27(%rip), %rsi
	movq	%r14, %rdi
.LEHB27:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	216(%rsp), %rax
	movq	%r13, %rdi
	movq	%rax, %rsi
	movq	%rax, 8(%rsp)
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@PLT
.LEHE27:
	movq	32(%rsp), %rdx
	movl	%ebp, %esi
	movq	%r13, %rdi
.LEHB28:
	call	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
.LEHE28:
	movq	%r13, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	.LC28(%rip), %rsi
	movq	%r14, %rdi
.LEHB29:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	248(%rsp), %r12
	movq	%r13, %rdi
	movq	%r12, %rsi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@PLT
.LEHE29:
	movq	40(%rsp), %rdx
	movl	%ebp, %esi
	movq	%r13, %rdi
.LEHB30:
	call	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
.LEHE30:
	movq	%r13, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	leaq	.LC29(%rip), %rsi
	movq	%r14, %rdi
.LEHB31:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	96(%rsp), %rdi
	call	cudaFree@PLT
	leaq	104(%rsp), %rdi
	call	cudaFree@PLT
	movq	24(%rsp), %rdi
	call	_ZdaPv@PLT
	movq	40(%rsp), %rdi
	call	_ZdaPv@PLT
	movq	32(%rsp), %rdi
	call	_ZdaPv@PLT
	leaq	64(%rsp), %rdi
	call	cudaFree@PLT
	leaq	72(%rsp), %rdi
	call	cudaFree@PLT
	leaq	80(%rsp), %rdi
	call	cudaFree@PLT
	leaq	88(%rsp), %rdi
	call	cudaFree@PLT
	xorl	%r13d, %r13d
.L145:
	cmpl	%ebx, %r13d
	jnb	.L192
	leaq	0(,%r13,8), %rbp
	xorl	%r14d, %r14d
.L146:
	movq	120(%rsp), %rax
	leaq	0(,%r14,8), %r15
	movq	(%rax,%rbp), %rdi
	addq	%r15, %rdi
	call	cudaFree@PLT
	movq	112(%rsp), %rax
	movq	(%rax,%rbp), %rdi
	addq	%r15, %rdi
	call	cudaFree@PLT
	incq	%r14
	cmpl	%ebx, %r14d
	jb	.L146
	movq	120(%rsp), %rdi
	addq	%rbp, %rdi
	call	cudaFree@PLT
	movq	112(%rsp), %rdi
	addq	%rbp, %rdi
	call	cudaFree@PLT
	incq	%r13
	jmp	.L145
.L192:
	leaq	120(%rsp), %rdi
	call	cudaFree@PLT
	leaq	112(%rsp), %rdi
	call	cudaFree@PLT
	leaq	.LC30(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
.LEHE31:
	movq	%r12, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	8(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	312(%rsp), %rax
	subq	%fs:40, %rax
	je	.L161
	jmp	.L179
.L163:
	endbr64
	jmp	.L187
.L164:
	endbr64
.L187:
	movq	%rax, %rbx
.L150:
	movq	(%rsp), %rdi
	jmp	.L185
.L168:
	endbr64
	jmp	.L186
.L169:
	endbr64
.L186:
	movq	%rax, %rbx
.L154:
	movq	(%rsp), %rdi
	jmp	.L181
.L170:
	endbr64
	jmp	.L184
.L171:
	endbr64
.L184:
	movq	%rax, %rbx
.L156:
	movq	%r13, %rdi
.L181:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L153
.L172:
	endbr64
	jmp	.L184
.L167:
	endbr64
	movq	%rax, %rbx
.L153:
	leaq	248(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L158
.L166:
	endbr64
	movq	%rax, %rbx
.L158:
	leaq	216(%rsp), %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L159
.L165:
	endbr64
	movq	%rax, %rbx
.L159:
	leaq	184(%rsp), %rdi
.L185:
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	%rbx, %rdi
	movq	312(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L179
.L183:
.LEHB32:
	call	_Unwind_Resume@PLT
.LEHE32:
.L179:
	call	__stack_chk_fail@PLT
.L161:
	addq	$328, %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
.LFE3774:
	.section	.gcc_except_table
.LLSDA3774:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE3774-.LLSDACSB3774
.LLSDACSB3774:
	.uleb128 .LEHB12-.LFB3774
	.uleb128 .LEHE12-.LEHB12
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB13-.LFB3774
	.uleb128 .LEHE13-.LEHB13
	.uleb128 .L163-.LFB3774
	.uleb128 0
	.uleb128 .LEHB14-.LFB3774
	.uleb128 .LEHE14-.LEHB14
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB15-.LFB3774
	.uleb128 .LEHE15-.LEHB15
	.uleb128 .L164-.LFB3774
	.uleb128 0
	.uleb128 .LEHB16-.LFB3774
	.uleb128 .LEHE16-.LEHB16
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB17-.LFB3774
	.uleb128 .LEHE17-.LEHB17
	.uleb128 .L173-.LFB3774
	.uleb128 0
	.uleb128 .LEHB18-.LFB3774
	.uleb128 .LEHE18-.LEHB18
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB19-.LFB3774
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L165-.LFB3774
	.uleb128 0
	.uleb128 .LEHB20-.LFB3774
	.uleb128 .LEHE20-.LEHB20
	.uleb128 .L166-.LFB3774
	.uleb128 0
	.uleb128 .LEHB21-.LFB3774
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB22-.LFB3774
	.uleb128 .LEHE22-.LEHB22
	.uleb128 .L168-.LFB3774
	.uleb128 0
	.uleb128 .LEHB23-.LFB3774
	.uleb128 .LEHE23-.LEHB23
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB24-.LFB3774
	.uleb128 .LEHE24-.LEHB24
	.uleb128 .L169-.LFB3774
	.uleb128 0
	.uleb128 .LEHB25-.LFB3774
	.uleb128 .LEHE25-.LEHB25
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB26-.LFB3774
	.uleb128 .LEHE26-.LEHB26
	.uleb128 .L170-.LFB3774
	.uleb128 0
	.uleb128 .LEHB27-.LFB3774
	.uleb128 .LEHE27-.LEHB27
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB28-.LFB3774
	.uleb128 .LEHE28-.LEHB28
	.uleb128 .L171-.LFB3774
	.uleb128 0
	.uleb128 .LEHB29-.LFB3774
	.uleb128 .LEHE29-.LEHB29
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB30-.LFB3774
	.uleb128 .LEHE30-.LEHB30
	.uleb128 .L172-.LFB3774
	.uleb128 0
	.uleb128 .LEHB31-.LFB3774
	.uleb128 .LEHE31-.LEHB31
	.uleb128 .L167-.LFB3774
	.uleb128 0
	.uleb128 .LEHB32-.LFB3774
	.uleb128 .LEHE32-.LEHB32
	.uleb128 0
	.uleb128 0
.LLSDACSE3774:
	.section	.text.startup
	.size	main, .-main
	.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
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC10:
	.long	1431655765
	.long	1070945621
	.align 8
.LC11:
	.long	0
	.long	1081032704
	.align 8
.LC12:
	.long	-1073741824
	.long	1073834098
	.section	.rodata.cst4,"aM",@progbits,4
	.align 4
.LC13:
	.long	1132068864
	.section	.rodata.cst8
	.align 8
.LC19:
	.long	0
	.long	1063256064
	.align 8
.LC24:
	.long	0
	.long	1093567616
	.hidden	DW.ref.__gxx_personality_v0
	.weak	DW.ref.__gxx_personality_v0
	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
	.align 8
	.type	DW.ref.__gxx_personality_v0, @object
	.size	DW.ref.__gxx_personality_v0, 8
DW.ref.__gxx_personality_v0:
	.quad	__gxx_personality_v0
	.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:

// nvcc iso2PCF.cu -o par.out && ./par.out data_5K.dat rand0_5K.dat 5000 30 180

#include <hip/hip_runtime.h>
#include <iostream>
#include <fstream>
#include <string.h>
#include <time.h>
#include <math.h>

using namespace std;

//Point with weight value. Structure
struct PointW3D{
    float x;
    float y; 
    float z;
    float w;
};

struct Node{
    int len;		// Number of points in the node
    PointW3D *elements;	// Points in the node
};


void open_files(string name_file, int pts, PointW3D *datos){
    /* Opens the daya files. Receives the file location, number of points to read and the array of points where the data is stored */
    ifstream file;

    string mypathto_files = "../../../fake_DATA/DATOS/";
    //This creates the full path to where I have my data files
    name_file.insert(0,mypathto_files);

    file.open(name_file.c_str(), ios::in | ios::binary); //Tells the program this is a binary file using ios::binary
    if (file.fail()){
        cout << "Failed to load the file in " << name_file << endl;
        exit(1);
    }

    for ( int c = 0; c < pts; c++) //Reads line by line and stores each c line in the c PointW3D element of the array
    {
        file >> datos[c].x >> datos[c].y >> datos[c].z >> datos[c].w; 
    }
    file.close();
}

//====================================================================

void save_histogram(string name, int bns, double *histo){
    /* This function saves a one dimensional histogram in a file.
    Receives the name of the file, number of bins in the histogram and the histogram array
    */

    ofstream file2;
    file2.open(name.c_str(), ios::out | ios::binary);

    if (file2.fail()){
        cout << "Failed to save the the histogram in " << name << endl;
        exit(1);
    }
    for (int i = 0; i < bns; i++){
        file2 << histo[i] << endl;
    }
    file2.close();
}

//====================================================================

void save_histogram(string name, int bns, float *histo){
    /* This function saves a one dimensional histogram in a file.
    Receives the name of the file, number of bins in the histogram and the histogram array
    */

    ofstream file2;
    file2.open(name.c_str(), ios::out | ios::binary);

    if (file2.fail()){
        cout << "Failed to save the the histogram in " << name << endl;
        exit(1);
    }
    for (int i = 0; i < bns; i++){
        file2 << histo[i] << endl;
    }
    file2.close();
}

//=================================================================== 
void add(PointW3D *&array, int &lon, float _x, float _y, float _z, float _w){
    /*
    This function manages adding points to an specific Node. It receives the previous array, longitude and point to add
    and updates the previous array and length with the same array with the new point at the end and adds +1 to the length +1

    It manages the memory allocation and free of the previous and new elements.
    */
    lon++;
    PointW3D *array_aux;
    hipMallocManaged(&array_aux, lon*sizeof(PointW3D)); 
    for (int i=0; i<lon-1; i++){
        array_aux[i].x = array[i].x;
        array_aux[i].y = array[i].y;
        array_aux[i].z = array[i].z;
        array_aux[i].w = array[i].w;
    }

    hipFree(array);
    array = array_aux;
    array[lon-1].x = _x;
    array[lon-1].y = _y;
    array[lon-1].z = _z;
    array[lon-1].w = _w;
}

void make_nodos(Node ***nod, PointW3D *dat, unsigned int partitions, float size_node, unsigned int np){
    /*
    This function classifies the data in the nodes

    Args
    nod: Node 3D array where the data will be classified
    dat: array of PointW3D data to be classified and stored in the nodes
    partitions: number nodes in each direction
    size_node: dimensions of a single node
    np: number of points in the dat array
    */

    int row, col, mom;

    // First allocate memory as an empty node:
    for (row=0; row<partitions; row++){
        for (col=0; col<partitions; col++){
            for (mom=0; mom<partitions; mom++){
                nod[row][col][mom].len = 0;
                hipMallocManaged(&nod[row][col][mom].elements, sizeof(PointW3D));
            }
        }
    }

    // Classificate the ith elment of the data into a node and add that point to the node with the add function:
    for (int i=0; i<np; i++){
        row = (int)(dat[i].x/size_node);
        col = (int)(dat[i].y/size_node);
        mom = (int)(dat[i].z/size_node);
        add(nod[row][col][mom].elements, nod[row][col][mom].len, dat[i].x, dat[i].y, dat[i].z, dat[i].w);
    }
}

//====================================================================
//============ Kernels Section ======================================= 
//====================================================================

__device__ void count_distances11(float *XX, PointW3D *elements, int len, float ds, float dd_max, int sum){
    /*
    This device function counts the distances betweeen points within one node.

    Args:
    XX: The histogram where the distances are counted in
    elements:  Array of PointW3D points inside the node
    len: lenght of the elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */

    int bin;
    float d, v;
    float x1,y1,z1,w1,x2,y2,z2,w2;

    for (int i=0; i<len-1; ++i){
        x1 = elements[i].x;
        y1 = elements[i].y;
        z1 = elements[i].z;
        w1 = elements[i].w;
        for (int j=i+1; j<len; ++j){
            x2 = elements[j].x;
            y2 = elements[j].y;
            z2 = elements[j].z;
            w2 = elements[j].w;
            d = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1);
            if (d<=dd_max+1){
                bin = (int)(sqrt(d)*ds);
                v = 2*w1*w2;
                atomicAdd(&XX[bin],sum);
            }
        }
    }
}

__device__ void count_distances12(float *XX, PointW3D *elements1, int len1, PointW3D *elements2, int len2, float ds, float dd_max, int sum){
    /*
    This device function counts the distances betweeen points between two different nodes.

    Args:
    XX: The histogram where the distances are counted in
    elements1:  Array of PointW3D points inside the first node
    len1: lenght of the first elements array
    elements2:  Array of PointW3D points inside the second node
    len2: lenght of the second elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */

    int bin;
    float d, v;
    float x1,y1,z1,w1,x2,y2,z2,w2;

    for (int i=0; i<len1; ++i){
        x1 = elements1[i].x;
        y1 = elements1[i].y;
        z1 = elements1[i].z;
        w1 = elements1[i].w;
        for (int j=0; j<len2; ++j){
            x2 = elements2[j].x;
            y2 = elements2[j].y;
            z2 = elements2[j].z;
            w2 = elements2[j].w;
            d = (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1);
            if (d<=dd_max+1){
                bin = (int)(sqrt(d)*ds);
                v = 2*w1*w2;
                atomicAdd(&XX[bin],sum);
            }
        }
    }
}

__device__ void BPC_loop(float *XX, Node ***nodeD, int row, int col, int mom, int partitions, int did_max, float dd_max, float ds, int sum, float size_box, bool x_border, bool y_border, bool z_border, bool x_upperborder, bool y_upperborder, bool z_upperborder, bool x_lowerborder, bool y_lowerborder, bool z_lowerborder){
    /*
    This device function counts the distances betweeen points between two different nodes from periodic boundary conditiojns.

    Args:
    XX: The histogram where the distances are counted in
    elements1:  Array of PointW3D points inside the first node
    len1: lenght of the first elements array
    elements2:  Array of PointW3D points inside the second node
    len2: lenght of the second elements array
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    dd_max: The maximum distance of interest.
    */
    int bin, d_node, u, v, w, did_max2=did_max*did_max;
    float d, s;
    float x1,y1,z1,w1,dx12,dy12,dz12,w2;


    int x_from = 10; //((row-did_max)*(row>did_max))*(!x_border) + (partitions-(did_max-row))*(x_lowerborder&&!x_upperborder);
    int x_to = partitions-10; //(partitions-1)*((row+did_max>partitions-1 && !x_upperborder)||x_lowerborder) + (row+did_max)*((row+did_max<partitions)&&!x_border) + (!x_lowerborder&&x_upperborder)*(x_from+(did_max-(partitions-1-row)));
    int y_from = 10; //((col-did_max)*(col>did_max))*(!y_border) + (partitions-(did_max-col))*(y_lowerborder&&!y_upperborder);
    int y_to = partitions-10; // (partitions-1)*((col+did_max>partitions-1 && !y_upperborder)||y_lowerborder) + (col+did_max)*((col+did_max<partitions)&&!y_border) + (!y_lowerborder&&y_upperborder)*(y_from+(did_max-(partitions-1-col)));
    int z_from =  10; // ((mom-did_max)*(mom>did_max))*(!z_border) + (partitions-(did_max-mom))*(z_lowerborder&&!z_upperborder);
    int z_to = partitions-10; //(partitions-1)*((mom+did_max>partitions-1 && !z_upperborder)||z_lowerborder) + (mom+did_max)*((mom+did_max<partitions)&&!z_border) + (!z_lowerborder&&z_upperborder)*(z_from+(did_max-(partitions-1-mom)));
    //If the z direction is not the nearest border the z index it is 0 if mom<did_max or mom-did-max otherwise.
    //If both z borders or ONLY the upper z border are the nearest borders the z index starts from 0
    //If ONLY the lower z border is the nearest the z index starts from partitions-(did_max-mom)
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //If both borders are the nearest the highest limit is partitions-1
    //If the lower border is the nearest the highes limit is partitions-1
    //If the upper border is not the nerarest and mom+did_max>partitions the highest limit is partitions-1
    //If this is not the border side and mom+did_max< paritions then the highest limit is mom+did_max
    //If only the upper border is the nearest border the higher limit is the lower limit + (did_max-(partitions-1-mom))

    for (u=x_from; u<=x_to; u++){
        for (v=y_from; v<=y_to; v++){
            for (w=z_from; w<=z_to; w++){
                d_node=(w-mom)*(w-mom) + (v-col)*(v-col) + (u-row)*(u-row);
                if (d_node<=did_max2){
                    for (int i=0; i<nodeD[row][col][mom].len; ++i){
                        x1 = nodeD[row][col][mom].elements[i].x;
                        y1 = nodeD[row][col][mom].elements[i].y;
                        z1 = nodeD[row][col][mom].elements[i].z;
                        w1 = nodeD[row][col][mom].elements[i].w;
                        for (int j=0; j<nodeD[u][v][w].len; ++j){
                            dx12 = fabsf(x1-nodeD[u][v][w].elements[j].x) - size_box*x_border;
                            dy12 = fabsf(y1-nodeD[u][v][w].elements[j].y) - size_box*y_border;
                            dz12 = fabsf(z1-nodeD[u][v][w].elements[j].z) - size_box*z_border;
                            w2 = nodeD[u][v][w].elements[j].w;
                            d = dx12*dx12 + dy12*dy12 + dz12*dz12;
                            if (d<=dd_max+1){
                                bin = (int)(sqrt(d)*ds);
                                s = 2*w1*w2;
                                atomicAdd(&XX[bin],sum);
                            }
                        }
                    }
                }
            }
        }
    }
}
__global__ void BPC_XX(float *XX_A, float *XX_B, Node ***nodeD, float ds, float d_max, float size_node, float size_box){
    /*
    This device function counts the distances betweeen points between a node and a node reproduction in the border.

    Args:
    XX: The histogram where the distances are counted in
    nodeD: Full array of nodes
    ds: number of bins divided by the maximum distance. Used to calculate the bin it should be counted at
    
    dd_max: The maximum distance of interest.
    did_max: maximum number of node between two nodes be considered
    did_max2: did_max*did_max
    size_box:  Size of the whole box
    */
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        //printf("%i, %i, %i \n", mom, col,row);

        //This may see redundant but with this these often checked values are upgraded to device memory
        float dd_max = d_max*d_max;
        int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));

        if (idx==0){
            printf("Partitions: %i, did_max: %i\n", partitions, did_max);
        }
        
        if (nodeD[row][col][mom].len > 0 && (row<did_max-1 || partitions-row<did_max || col<did_max-1 || partitions-col<did_max || mom<did_max-1 || partitions-mom<did_max)){
            //Only if the current node has elements and it is near to any border does the thread will be active
            atomicAdd(&XX_A[0],1); //Count how many nodes are considered as near a border
            /*
            bool x_border=false, y_border=false, z_border=false, x_upperborder=false, y_upperborder=false, z_upperborder=false, x_lowerborder=false, y_lowerborder=false, z_lowerborder=false;
            
            x_border=(row<did_max-1 || partitions-row<did_max);
            if (x_border){
                x_upperborder=partitions-row<did_max;
                x_lowerborder=row<did_max-1;
                BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, false, false, x_upperborder, false, false, x_lowerborder, false, false);
            }
            
            y_border=(col<did_max-1 || partitions-col<did_max);
            if (y_border){
                y_upperborder=partitions-col<did_max;
                y_lowerborder=col<did_max-1;

                //Only Y boundaries
                BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, y_border, false, false, y_upperborder, false, false, y_lowerborder, false); 
                if (x_border){
                    //Boundaries in the XY walls
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, y_border, false, x_upperborder, y_upperborder, false, x_lowerborder, y_lowerborder, false);
                }
            }
            
            z_border=(mom<did_max-1 || partitions-mom<did_max);
            if (z_border){
                z_upperborder=partitions-mom<did_max;
                z_lowerborder=mom<did_max-1;
                
                //Only Z boundaries
                BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, false, z_border, false, false, z_upperborder, false, false, z_lowerborder); 
                if (x_border){
                    //For the ZY corner
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, false, z_border, x_upperborder, false, z_upperborder, x_lowerborder, false, z_lowerborder); 
                    if (y_border){
                        //For the XYZ corner
                        BPC_loop(XX_B, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, x_border, y_border, z_border, x_upperborder, y_upperborder, z_upperborder, x_lowerborder, y_lowerborder, z_lowerborder); 
                    }

                }

                if (y_border){
                    //For the YZ
                    BPC_loop(XX_A, nodeD, row, col, mom, partitions, did_max, dd_max, ds, 2, size_box, false, y_border, z_border, false, y_upperborder, z_upperborder, false, y_lowerborder, z_lowerborder); 
                }
            }
            */

        }
    }
}


__global__ void make_histoXX(float *XX_A, float *XX_B, Node ***nodeD, float ds, float d_max, float size_node, float size_box){
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        //printf("%i, %i, %i \n", mom, col,row)
        
        if (nodeD[row][col][mom].len > 0){
            
            //This may see redundant but with this these often checked values are upgraded to device memory
            float dd_max = d_max*d_max;
            int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));
            int did_max2 = did_max*did_max;

            // Counts distances betweeen the same node
            if (idx%2==0){ //If the main index is even stores the countings in the XX_A subhistogram
                count_distances11(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, ds, dd_max, 2);
            } else { //If the main index is odd stores the countings in the XX_B subhistogram
                count_distances11(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, ds, dd_max, 2);
            }
            
            
            int u,v,w; // Position index of the second node
            int dx_nod12, dy_nod12, dz_nod12, dd_nod12; //Internodal distance

            //Second node movil in Z direction
            for(w = mom+1; w<partitions && w-row<=did_max; w++){
                if (idx%2==0){ //If the main index is even stores the countings in the XX_A subhistogram
                    count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][col][w].elements, nodeD[row][col][w].len, ds, dd_max, 2);
                } else { //If the main index is odd stores the countings in the XX_B subhistogram
                    count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][col][w].elements, nodeD[row][col][w].len, ds, dd_max, 2);
                }
            }

            //Second node movil in YZ
            for(v=col+1; v<partitions && v-col<=did_max; v++){
                dy_nod12 = v-col;
                for(w=(mom-did_max)*(mom>did_max); w<partitions && w-mom<=did_max; w++){
                    dz_nod12 = w-mom;
                    dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12;
                    if (dd_nod12<=did_max2){
                        if (idx%2==0){
                            count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][v][w].elements, nodeD[row][v][w].len, ds, dd_max, 2);
                        } else {
                            count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[row][v][w].elements, nodeD[row][v][w].len, ds, dd_max, 2);
                        }
                    }
                    //}
                }
            }

            //Second node movil in XYZ
            for(u = row+1; u < partitions && u-row< did_max; u++){
                dx_nod12 = u-row;
                for(v = (col-did_max)*(col>did_max); v < partitions && v-col< did_max; v++){
                    dy_nod12 = v-col;
                    for(w = (mom-did_max)*(mom>did_max); w < partitions && w-mom< did_max; w++){
                        dz_nod12 = w-mom;
                        dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12 + dx_nod12*dx_nod12;
                        if (dd_nod12<=did_max2){
                            if (idx%2==0){
                                count_distances12(XX_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[u][v][w].elements, nodeD[u][v][w].len, ds, dd_max, 2);
                            } else {
                                count_distances12(XX_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeD[u][v][w].elements, nodeD[u][v][w].len, ds, dd_max, 2);
                            }
                        }
                    }
                }
            }

        }
    }
}
__global__ void make_histoXY(float *XY_A, float *XY_B, Node ***nodeD, Node ***nodeR, float ds, float d_max, float size_node, float size_box){
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    int partitions = (int)(ceilf(size_box/size_node));
    if (idx<(partitions*partitions*partitions)){
        //Get the node positon in this thread
        int mom = (int) (idx/(partitions*partitions));
        int col = (int) ((idx%(partitions*partitions))/partitions);
        int row = idx%partitions;
        
        if (nodeD[row][col][mom].len > 0){
            
            //This may see redundant but with this these often checked values are upgraded to device memory
            float dd_max = d_max*d_max;
            int did_max = (int)(ceilf((d_max+size_node*sqrt(3.0))/size_node));
            int did_max2 = did_max*did_max;
            
            int u,v,w; //Position of the second node
            unsigned int dx_nod12, dy_nod12, dz_nod12, dd_nod12;


            //Second node movil in XYZ
            //for(u = (row-did_max)*(row>did_max); u < partitions && u-row< did_max; u++){
            for(u = 0; u < partitions && u-row< did_max; u++){
                dx_nod12 = u-row;
                //for(v = (col-did_max)*(col>did_max); v < partitions && v-col< did_max; v++){
                for(v = 0; v < partitions && v-col< did_max; v++){
                    dy_nod12 = v-col;
                    //for(w = (mom-did_max)*(mom>did_max); w < partitions && w-mom< did_max; w++){
                    for(w = 0; w < partitions && w-mom< did_max; w++){
                        dz_nod12 = w-mom;
                        dd_nod12 = dz_nod12*dz_nod12 + dy_nod12*dy_nod12 + dx_nod12*dx_nod12;
                        if (dd_nod12<=did_max2){
                            if (idx%2==0){
                                count_distances12(XY_A, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeR[u][v][w].elements, nodeR[u][v][w].len, ds, dd_max, 1);
                            } else {
                                count_distances12(XY_B, nodeD[row][col][mom].elements, nodeD[row][col][mom].len, nodeR[u][v][w].elements, nodeR[u][v][w].len, ds, dd_max, 1);
                            }
                        }
                    }
                }
            }
            
        }
    }
}

__global__ void make_analyticRR(float *RR, float d_max, int bn, float size_box, int n_pts){
    /*
    Analytic calculation of the RR histogram

    */
    int a = threadIdx.x;
    if (a < bn){
        float dr = (d_max/bn);
        float V = size_box*size_box*size_box;
        float beta1 = n_pts*n_pts/V;
        float alph = 4*(2*acosf(0.0))*(beta1)*dr*dr*dr/3;
        float r1, r2;
        r2 = (float) a;
        r1 = r2+1;
        float sum = alph*((r1*r1*r1)-(r2*r2*r2));
        atomicAdd(&RR[a],sum);
    }
}

int main(int argc, char **argv){
	
    unsigned int np = stoi(argv[3]), bn = stoi(argv[4]);
    float dmax = stof(argv[5]);
    float ds = ((float)(bn))/dmax, size_box = 250.0, alpha = 2.176;
    float size_node = alpha*(size_box/pow((float)(np),1/3.));
    unsigned int partitions = (int)(ceil(size_box/size_node));

    float *DD_A, *DR_A, *DD_B, *DR_B, *RR;
    double *DD, *DR;
    PointW3D *dataD;
    PointW3D *dataR;
    hipMallocManaged(&dataD, np*sizeof(PointW3D));
    hipMallocManaged(&dataR, np*sizeof(PointW3D));

    // Name of the files where the results are saved
    string nameDD = "DDiso.dat", nameRR = "RRiso.dat", nameDR = "DRiso.dat";

    // Allocate memory for the histogram as double
    // And the subhistograms as simple presision floats
    DD = new double[bn];
    RR = new float[bn];
    DR = new double[bn];
    hipMallocManaged(&DD_A, bn*sizeof(float));
    hipMallocManaged(&DR_A, bn*sizeof(float));
    hipMallocManaged(&DD_B, bn*sizeof(float));
    hipMallocManaged(&DR_B, bn*sizeof(float));
    
    //Initialize the histograms in 0
    for (int i = 0; i < bn; i++){
        *(DD+i) = 0;
        *(RR+i) = 0;
        *(DR+i) = 0;
        *(DD_A+i) = 0;
        *(DR_A+i) = 0;
        *(DD_B+i) = 0;
        *(DR_B+i) = 0;
    }
	
	// Open and read the files to store the data in the arrays
	open_files(argv[1], np, dataD);
    open_files(argv[2], np, dataR);

    //Init the nodes arrays
    Node ***nodeD;
    Node ***nodeR;
    hipMallocManaged(&nodeR, partitions*sizeof(Node**));
    hipMallocManaged(&nodeD, partitions*sizeof(Node**));
    for (int i=0; i<partitions; i++){
        hipMallocManaged(&*(nodeR+i), partitions*sizeof(Node*));
        hipMallocManaged(&*(nodeD+i), partitions*sizeof(Node*));
        for (int j=0; j<partitions; j++){
            hipMallocManaged(&*(*(nodeR+i)+j), partitions*sizeof(Node));
            hipMallocManaged(&*(*(nodeD+i)+j), partitions*sizeof(Node));
        }
    }
    
    //Classificate the data into the nodes
    make_nodos(nodeD, dataD, partitions, size_node, np);
    make_nodos(nodeR, dataR, partitions, size_node, np);

    //Get the dimensions of the GPU grid
    int blocks = (int)(ceil((float)((partitions*partitions*partitions)/512.0)));
    dim3 grid(blocks,1,1);
    dim3 block(512,1,1);

    clock_t begin = clock();
    //Launch the kernels
    //make_histoXX<<<grid,block>>>(DD_A, DD_B, nodeD, ds, dmax, size_node, size_box);
    BPC_XX<<<grid,block>>>(DD_A, DD_B, nodeD, ds, dmax, size_node, size_box);

    //make_histoXY<<<grid,block>>>(DR_A, DR_B, nodeD, nodeR, ds, dmax, size_node, size_box);
    
    blocks = (int)(ceil((float)(bn)/512.0));
    dim3 grid_a(blocks,1,1);
    dim3 block_a(512,1,1);

    make_analyticRR<<<grid_a,block_a>>>(RR, dmax, bn, size_box, np);

    //Waits for the GPU to finish
    hipDeviceSynchronize();  
    cout << "Size of a node " << size_node << endl;
    cout << "Nodes considered as boundary: " << DD_A[0] <<endl;

    //Check here for errors
    hipError_t error = hipGetLastError(); 
    cout << "The error code is " << error << endl;
    if(error != 0)
    {
      // print the CUDA error message and exit
      printf("CUDA error: %s\n", hipGetErrorString(error));
      exit(-1);
    }

    clock_t end = clock();
    double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    printf("\nSpent time = %.4f seg.\n", time_spent );

    //Collect the subhistograms data into the double precision main histograms
    //THis has to be done in CPU since GPU only allows single precision
    for (int i = 0; i < bn; i++){
        DD[i] = (double)(DD_A[i]+ DD_B[i]);
        DR[i] = (double)(DR_A[i]+ DR_B[i]);
    }

    cout << "Termine de hacer todos los histogramas" << endl;
    /*
    // Shows the histograms
    cout << "\nHistograma DD:" << endl;
    int sum = 0;
    for (int k = 0; k<bn; k++){
        cout << DD[k] << "\t";
        sum += DD[k];
    }
    cout << "Total: " << sum << endl;

    cout << "\nHistograma RR:" << endl;
    for (int k = 0; k<bn; k++){
        cout << RR[k] << "\t";
    }

    cout << "\nHistograma DR:" << endl;
    for (int k = 0; k<bn; k++){
        cout << DR[k] << "\t";
    }
    */
	
	// Guardamos los histogramas
	save_histogram(nameDD, bn, DD);
	cout << "Guarde histograma DD..." << endl;
	save_histogram(nameRR, bn, RR);
	cout << "Guarde histograma RR..." << endl;
	save_histogram(nameDR, bn, DR);
	cout << "Guarde histograma DR..." << endl;

    //Free the memory
    hipFree(&dataD);
    hipFree(&dataR);

    delete[] DD;
    delete[] DR;
    delete[] RR;
    hipFree(&DD_A);
    hipFree(&DR_A);
    hipFree(&DD_B);
    hipFree(&DR_B);


    for (int i=0; i<partitions; i++){
        for (int j=0; j<partitions; j++){
            hipFree(&*(*(nodeR+i)+j));
            hipFree(&*(*(nodeD+i)+j));
        }
        hipFree(&*(nodeR+i));
        hipFree(&*(nodeD+i));
    }
    hipFree(&nodeR);
    hipFree(&nodeD);

    cout << "Programa Terminado..." << endl;
    return 0;
}


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

                                        # End of file scope inline assembly
	.globl	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D # -- Begin function _Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
	.type	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D,@function
_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D: # @_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
.Lfunc_begin0:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception0
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$560, %rsp                      # imm = 0x230
	.cfi_def_cfa_offset 608
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %rbx
	movl	%esi, %ebp
	movq	%rdi, %r14
	leaq	40(%rsp), %rdi
	callq	_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev
	leaq	24(%rsp), %r15
	movq	%r15, -16(%r15)
.Ltmp0:
	leaq	8(%rsp), %rdi
	movl	$.L.str, %esi
	movl	$.L.str+25, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
.Ltmp1:
# %bb.1:                                # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit
	movq	8(%rsp), %rcx
	movq	16(%rsp), %r8
.Ltmp3:
	movq	%r14, %rdi
	xorl	%esi, %esi
	xorl	%edx, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm
.Ltmp4:
# %bb.2:                                # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_.exit
	movq	(%r14), %rsi
.Ltmp5:
	leaq	40(%rsp), %rdi
	movl	$12, %edx
	callq	_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp6:
# %bb.3:
	movq	40(%rsp), %rax
	movq	-24(%rax), %rax
	testb	$5, 72(%rsp,%rax)
	jne	.LBB0_15
# %bb.4:                                # %.preheader
	testl	%ebp, %ebp
	jle	.LBB0_11
# %bb.5:                                # %.lr.ph.preheader
	movl	%ebp, %r12d
	leaq	40(%rsp), %r14
.LBB0_6:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
.Ltmp13:
	movq	%r14, %rdi
	movq	%rbx, %rsi
	callq	_ZNSi10_M_extractIfEERSiRT_
.Ltmp14:
# %bb.7:                                # %_ZNSirsERf.exit
                                        #   in Loop: Header=BB0_6 Depth=1
	leaq	4(%rbx), %rsi
.Ltmp15:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIfEERSiRT_
.Ltmp16:
# %bb.8:                                # %_ZNSirsERf.exit17
                                        #   in Loop: Header=BB0_6 Depth=1
	leaq	8(%rbx), %rsi
.Ltmp17:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIfEERSiRT_
.Ltmp18:
# %bb.9:                                # %_ZNSirsERf.exit18
                                        #   in Loop: Header=BB0_6 Depth=1
	leaq	12(%rbx), %rsi
.Ltmp19:
	movq	%rax, %rdi
	callq	_ZNSi10_M_extractIfEERSiRT_
.Ltmp20:
# %bb.10:                               # %_ZNSirsERf.exit19
                                        #   in Loop: Header=BB0_6 Depth=1
	addq	$16, %rbx
	decq	%r12
	jne	.LBB0_6
.LBB0_11:                               # %._crit_edge
.Ltmp22:
	leaq	40(%rsp), %rdi
	callq	_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv
.Ltmp23:
# %bb.12:
	movq	8(%rsp), %rdi
	cmpq	%r15, %rdi
	je	.LBB0_14
# %bb.13:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i
	callq	_ZdlPv
.LBB0_14:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit
	leaq	40(%rsp), %rdi
	callq	_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev
	addq	$560, %rsp                      # imm = 0x230
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB0_15:
	.cfi_def_cfa_offset 608
.Ltmp7:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.1, %esi
	movl	$27, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp8:
# %bb.16:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	(%r14), %rsi
	movq	8(%r14), %rdx
.Ltmp9:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp10:
# %bb.17:                               # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit
.Ltmp11:
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp12:
# %bb.18:                               # %_ZNSolsEPFRSoS_E.exit
	movl	$1, %edi
	callq	exit
.LBB0_19:
.Ltmp2:
	movq	%rax, %rbx
	jmp	.LBB0_24
.LBB0_21:
.Ltmp24:
	jmp	.LBB0_22
.LBB0_20:
.Ltmp21:
.LBB0_22:
	movq	%rax, %rbx
	movq	8(%rsp), %rdi
	cmpq	%r15, %rdi
	je	.LBB0_24
# %bb.23:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i20
	callq	_ZdlPv
.LBB0_24:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit22
	leaq	40(%rsp), %rdi
	callq	_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end0:
	.size	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D, .Lfunc_end0-_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table0:
.Lexception0:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
	.uleb128 .Lfunc_begin0-.Lfunc_begin0    # >> Call Site 1 <<
	.uleb128 .Ltmp0-.Lfunc_begin0           #   Call between .Lfunc_begin0 and .Ltmp0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp0-.Lfunc_begin0           # >> Call Site 2 <<
	.uleb128 .Ltmp1-.Ltmp0                  #   Call between .Ltmp0 and .Ltmp1
	.uleb128 .Ltmp2-.Lfunc_begin0           #     jumps to .Ltmp2
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3-.Lfunc_begin0           # >> Call Site 3 <<
	.uleb128 .Ltmp6-.Ltmp3                  #   Call between .Ltmp3 and .Ltmp6
	.uleb128 .Ltmp24-.Lfunc_begin0          #     jumps to .Ltmp24
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp13-.Lfunc_begin0          # >> Call Site 4 <<
	.uleb128 .Ltmp20-.Ltmp13                #   Call between .Ltmp13 and .Ltmp20
	.uleb128 .Ltmp21-.Lfunc_begin0          #     jumps to .Ltmp21
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp22-.Lfunc_begin0          # >> Call Site 5 <<
	.uleb128 .Ltmp12-.Ltmp22                #   Call between .Ltmp22 and .Ltmp12
	.uleb128 .Ltmp24-.Lfunc_begin0          #     jumps to .Ltmp24
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp12-.Lfunc_begin0          # >> Call Site 6 <<
	.uleb128 .Lfunc_end0-.Ltmp12            #   Call between .Ltmp12 and .Lfunc_end0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end0:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_,"axG",@progbits,_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_,comdat
	.weak	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_ # -- Begin function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.p2align	1, 0x90
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_,@function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_: # @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	pushq	%rax
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	leaq	16(%rdi), %rax
	movq	%rax, (%rdi)
	testq	%rsi, %rsi
	je	.LBB1_1
# %bb.2:
	movq	%rsi, %rbx
	movq	%rdi, %r14
	movq	%rsi, %rdi
	callq	strlen
	leaq	(%rax,%rbx), %rdx
	movq	%r14, %rdi
	movq	%rbx, %rsi
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	jmp	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag # TAILCALL
.LBB1_1:
	.cfi_def_cfa_offset 32
	movl	$.L.str.20, %edi
	callq	_ZSt19__throw_logic_errorPKc
.Lfunc_end1:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_, .Lfunc_end1-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd # -- Begin function _Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
	.type	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd,@function
_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd: # @_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
.Lfunc_begin1:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception1
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$520, %rsp                      # imm = 0x208
	.cfi_def_cfa_offset 576
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %rbx
	movl	%esi, %ebp
	movq	%rdi, %r14
	leaq	8(%rsp), %r15
	movq	%r15, %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev
	movq	(%r14), %rsi
.Ltmp25:
	movq	%r15, %rdi
	movl	$20, %edx
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp26:
# %bb.1:
	movq	8(%rsp), %rax
	movq	-24(%rax), %rax
	testb	$5, 40(%rsp,%rax)
	jne	.LBB2_11
# %bb.2:                                # %.preheader
	testl	%ebp, %ebp
	jle	.LBB2_9
# %bb.3:                                # %.lr.ph.preheader
	movl	%ebp, %r12d
	xorl	%r13d, %r13d
	leaq	8(%rsp), %r14
.LBB2_4:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movsd	(%rbx,%r13,8), %xmm0            # xmm0 = mem[0],zero
.Ltmp33:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp34:
# %bb.5:                                # %_ZNSolsEd.exit
                                        #   in Loop: Header=BB2_4 Depth=1
	movq	%rax, %r15
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r15, %rdi
.Ltmp35:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp36:
# %bb.6:                                # %.noexc
                                        #   in Loop: Header=BB2_4 Depth=1
.Ltmp37:
	movsbl	%al, %esi
	movq	%r15, %rdi
	callq	_ZNSo3putEc
.Ltmp38:
# %bb.7:                                # %.noexc10
                                        #   in Loop: Header=BB2_4 Depth=1
.Ltmp39:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp40:
# %bb.8:                                # %_ZNSolsEPFRSoS_E.exit9
                                        #   in Loop: Header=BB2_4 Depth=1
	incq	%r13
	cmpq	%r13, %r12
	jne	.LBB2_4
.LBB2_9:                                # %._crit_edge
.Ltmp42:
	leaq	8(%rsp), %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv
.Ltmp43:
# %bb.10:
	movq	_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE(%rip), %rax
	leaq	16(%rsp), %rdi
	movq	%rax, -8(%rdi)
	movq	_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE+24(%rip), %rcx
	movq	-24(%rax), %rax
	movq	%rcx, 8(%rsp,%rax)
	callq	_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev
	leaq	256(%rsp), %rdi
	callq	_ZNSt8ios_baseD2Ev
	addq	$520, %rsp                      # imm = 0x208
	.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
.LBB2_11:
	.cfi_def_cfa_offset 576
.Ltmp27:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.2, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp28:
# %bb.12:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	(%r14), %rsi
	movq	8(%r14), %rdx
.Ltmp29:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp30:
# %bb.13:                               # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit
.Ltmp31:
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp32:
# %bb.14:                               # %_ZNSolsEPFRSoS_E.exit
	movl	$1, %edi
	callq	exit
.LBB2_16:
.Ltmp44:
	jmp	.LBB2_17
.LBB2_15:
.Ltmp41:
.LBB2_17:
	movq	%rax, %rbx
	leaq	8(%rsp), %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end2:
	.size	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd, .Lfunc_end2-_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table2:
.Lexception1:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
	.uleb128 .Lfunc_begin1-.Lfunc_begin1    # >> Call Site 1 <<
	.uleb128 .Ltmp25-.Lfunc_begin1          #   Call between .Lfunc_begin1 and .Ltmp25
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp25-.Lfunc_begin1          # >> Call Site 2 <<
	.uleb128 .Ltmp26-.Ltmp25                #   Call between .Ltmp25 and .Ltmp26
	.uleb128 .Ltmp44-.Lfunc_begin1          #     jumps to .Ltmp44
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp33-.Lfunc_begin1          # >> Call Site 3 <<
	.uleb128 .Ltmp40-.Ltmp33                #   Call between .Ltmp33 and .Ltmp40
	.uleb128 .Ltmp41-.Lfunc_begin1          #     jumps to .Ltmp41
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp42-.Lfunc_begin1          # >> Call Site 4 <<
	.uleb128 .Ltmp32-.Ltmp42                #   Call between .Ltmp42 and .Ltmp32
	.uleb128 .Ltmp44-.Lfunc_begin1          #     jumps to .Ltmp44
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp32-.Lfunc_begin1          # >> Call Site 5 <<
	.uleb128 .Lfunc_end2-.Ltmp32            #   Call between .Ltmp32 and .Lfunc_end2
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end1:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf # -- Begin function _Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
	.type	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf,@function
_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf: # @_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
.Lfunc_begin2:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception2
# %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	$520, %rsp                      # imm = 0x208
	.cfi_def_cfa_offset 576
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %rbx
	movl	%esi, %ebp
	movq	%rdi, %r14
	leaq	8(%rsp), %r15
	movq	%r15, %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev
	movq	(%r14), %rsi
.Ltmp45:
	movq	%r15, %rdi
	movl	$20, %edx
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode
.Ltmp46:
# %bb.1:
	movq	8(%rsp), %rax
	movq	-24(%rax), %rax
	testb	$5, 40(%rsp,%rax)
	jne	.LBB3_11
# %bb.2:                                # %.preheader
	testl	%ebp, %ebp
	jle	.LBB3_9
# %bb.3:                                # %.lr.ph.preheader
	movl	%ebp, %r12d
	xorl	%r13d, %r13d
	leaq	8(%rsp), %r14
.LBB3_4:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	xorps	%xmm0, %xmm0
	cvtss2sd	(%rbx,%r13,4), %xmm0
.Ltmp53:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp54:
# %bb.5:                                # %_ZNSolsEf.exit
                                        #   in Loop: Header=BB3_4 Depth=1
	movq	%rax, %r15
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%r15, %rdi
.Ltmp55:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp56:
# %bb.6:                                # %.noexc
                                        #   in Loop: Header=BB3_4 Depth=1
.Ltmp57:
	movsbl	%al, %esi
	movq	%r15, %rdi
	callq	_ZNSo3putEc
.Ltmp58:
# %bb.7:                                # %.noexc10
                                        #   in Loop: Header=BB3_4 Depth=1
.Ltmp59:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp60:
# %bb.8:                                # %_ZNSolsEPFRSoS_E.exit9
                                        #   in Loop: Header=BB3_4 Depth=1
	incq	%r13
	cmpq	%r13, %r12
	jne	.LBB3_4
.LBB3_9:                                # %._crit_edge
.Ltmp62:
	leaq	8(%rsp), %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv
.Ltmp63:
# %bb.10:
	movq	_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE(%rip), %rax
	leaq	16(%rsp), %rdi
	movq	%rax, -8(%rdi)
	movq	_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE+24(%rip), %rcx
	movq	-24(%rax), %rax
	movq	%rcx, 8(%rsp,%rax)
	callq	_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev
	leaq	256(%rsp), %rdi
	callq	_ZNSt8ios_baseD2Ev
	addq	$520, %rsp                      # imm = 0x208
	.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
.LBB3_11:
	.cfi_def_cfa_offset 576
.Ltmp47:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.2, %esi
	movl	$36, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp48:
# %bb.12:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movq	(%r14), %rsi
	movq	8(%r14), %rdx
.Ltmp49:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp50:
# %bb.13:                               # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit
.Ltmp51:
	movq	%rax, %rdi
	callq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.Ltmp52:
# %bb.14:                               # %_ZNSolsEPFRSoS_E.exit
	movl	$1, %edi
	callq	exit
.LBB3_16:
.Ltmp64:
	jmp	.LBB3_17
.LBB3_15:
.Ltmp61:
.LBB3_17:
	movq	%rax, %rbx
	leaq	8(%rsp), %rdi
	callq	_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end3:
	.size	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf, .Lfunc_end3-_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table3:
.Lexception2:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end2-.Lcst_begin2
.Lcst_begin2:
	.uleb128 .Lfunc_begin2-.Lfunc_begin2    # >> Call Site 1 <<
	.uleb128 .Ltmp45-.Lfunc_begin2          #   Call between .Lfunc_begin2 and .Ltmp45
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp45-.Lfunc_begin2          # >> Call Site 2 <<
	.uleb128 .Ltmp46-.Ltmp45                #   Call between .Ltmp45 and .Ltmp46
	.uleb128 .Ltmp64-.Lfunc_begin2          #     jumps to .Ltmp64
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp53-.Lfunc_begin2          # >> Call Site 3 <<
	.uleb128 .Ltmp60-.Ltmp53                #   Call between .Ltmp53 and .Ltmp60
	.uleb128 .Ltmp61-.Lfunc_begin2          #     jumps to .Ltmp61
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp62-.Lfunc_begin2          # >> Call Site 4 <<
	.uleb128 .Ltmp52-.Ltmp62                #   Call between .Ltmp62 and .Ltmp52
	.uleb128 .Ltmp64-.Lfunc_begin2          #     jumps to .Ltmp64
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp52-.Lfunc_begin2          # >> Call Site 5 <<
	.uleb128 .Lfunc_end3-.Ltmp52            #   Call between .Ltmp52 and .Lfunc_end3
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end2:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_Z3addRP8PointW3DRiffff         # -- Begin function _Z3addRP8PointW3DRiffff
	.type	_Z3addRP8PointW3DRiffff,@function
_Z3addRP8PointW3DRiffff:                # @_Z3addRP8PointW3DRiffff
	.cfi_startproc
# %bb.0:
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	subq	$24, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movss	%xmm3, 12(%rsp)                 # 4-byte Spill
	movss	%xmm2, 8(%rsp)                  # 4-byte Spill
	movss	%xmm1, 4(%rsp)                  # 4-byte Spill
	movss	%xmm0, (%rsp)                   # 4-byte Spill
	movq	%rsi, %rbx
	movq	%rdi, %r14
	movslq	(%rsi), %rsi
	incq	%rsi
	movl	%esi, (%rbx)
	shlq	$4, %rsi
	leaq	16(%rsp), %rdi
	movl	$1, %edx
	callq	hipMallocManaged
	movl	(%rbx), %eax
	movq	(%r14), %rdi
	cmpl	$2, %eax
	jl	.LBB4_3
# %bb.1:                                # %.lr.ph
	decl	%eax
	movq	16(%rsp), %rcx
	shlq	$4, %rax
	xorl	%edx, %edx
.LBB4_2:                                # =>This Inner Loop Header: Depth=1
	movss	(%rdi,%rdx), %xmm0              # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, (%rcx,%rdx)
	movss	4(%rdi,%rdx), %xmm0             # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, 4(%rcx,%rdx)
	movss	8(%rdi,%rdx), %xmm0             # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, 8(%rcx,%rdx)
	movss	12(%rdi,%rdx), %xmm0            # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, 12(%rcx,%rdx)
	addq	$16, %rdx
	cmpq	%rdx, %rax
	jne	.LBB4_2
.LBB4_3:                                # %._crit_edge
	callq	hipFree
	movq	16(%rsp), %rax
	movq	%rax, (%r14)
	movslq	(%rbx), %rcx
	shlq	$4, %rcx
	movss	(%rsp), %xmm0                   # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, -16(%rax,%rcx)
	movss	4(%rsp), %xmm0                  # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, -12(%rax,%rcx)
	movss	8(%rsp), %xmm0                  # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, -8(%rax,%rcx)
	movss	12(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	%xmm0, -4(%rax,%rcx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end4:
	.size	_Z3addRP8PointW3DRiffff, .Lfunc_end4-_Z3addRP8PointW3DRiffff
	.cfi_endproc
                                        # -- End function
	.globl	_Z10make_nodosPPP4NodeP8PointW3Djfj # -- Begin function _Z10make_nodosPPP4NodeP8PointW3Djfj
	.type	_Z10make_nodosPPP4NodeP8PointW3Djfj,@function
_Z10make_nodosPPP4NodeP8PointW3Djfj:    # @_Z10make_nodosPPP4NodeP8PointW3Djfj
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%ecx, 12(%rsp)                  # 4-byte Spill
	movss	%xmm0, 8(%rsp)                  # 4-byte Spill
	movq	%rsi, 16(%rsp)                  # 8-byte Spill
	movq	%rdi, %r14
	testl	%edx, %edx
	je	.LBB5_7
# %bb.1:                                # %.preheader49.preheader
	movl	%edx, %r15d
	movq	%r15, %r12
	shlq	$4, %r12
	xorl	%r13d, %r13d
.LBB5_2:                                # %.preheader49
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB5_3 Depth 2
                                        #       Child Loop BB5_4 Depth 3
	xorl	%ebp, %ebp
.LBB5_3:                                # %.preheader48
                                        #   Parent Loop BB5_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB5_4 Depth 3
	xorl	%ebx, %ebx
.LBB5_4:                                #   Parent Loop BB5_2 Depth=1
                                        #     Parent Loop BB5_3 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movq	(%r14,%r13,8), %rax
	movq	(%rax,%rbp,8), %rax
	leaq	(%rax,%rbx), %rdi
	addq	$8, %rdi
	movl	$0, -8(%rdi)
	movl	$16, %esi
	movl	$1, %edx
	callq	hipMallocManaged
	addq	$16, %rbx
	cmpq	%rbx, %r12
	jne	.LBB5_4
# %bb.5:                                #   in Loop: Header=BB5_3 Depth=2
	incq	%rbp
	cmpq	%r15, %rbp
	jne	.LBB5_3
# %bb.6:                                #   in Loop: Header=BB5_2 Depth=1
	incq	%r13
	cmpq	%r15, %r13
	jne	.LBB5_2
.LBB5_7:                                # %.preheader
	movl	12(%rsp), %eax                  # 4-byte Reload
	testl	%eax, %eax
	movss	8(%rsp), %xmm4                  # 4-byte Reload
                                        # xmm4 = mem[0],zero,zero,zero
	movq	16(%rsp), %rbx                  # 8-byte Reload
	je	.LBB5_10
# %bb.8:                                # %.lr.ph.preheader
	movl	%eax, %r15d
	shlq	$4, %r15
	xorl	%r12d, %r12d
.LBB5_9:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movss	(%rbx,%r12), %xmm0              # xmm0 = mem[0],zero,zero,zero
	movss	4(%rbx,%r12), %xmm1             # xmm1 = mem[0],zero,zero,zero
	movaps	%xmm0, %xmm2
	divss	%xmm4, %xmm2
	cvttss2si	%xmm2, %eax
	movaps	%xmm1, %xmm2
	divss	%xmm4, %xmm2
	cvttss2si	%xmm2, %ecx
	movss	8(%rbx,%r12), %xmm2             # xmm2 = mem[0],zero,zero,zero
	movaps	%xmm2, %xmm3
	divss	%xmm4, %xmm3
	cvttss2si	%xmm3, %edx
	cltq
	movq	(%r14,%rax,8), %rax
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	%edx, %rcx
	shlq	$4, %rcx
	leaq	(%rax,%rcx), %rsi
	leaq	(%rax,%rcx), %rdi
	addq	$8, %rdi
	movss	12(%rbx,%r12), %xmm3            # xmm3 = mem[0],zero,zero,zero
	callq	_Z3addRP8PointW3DRiffff
	movss	8(%rsp), %xmm4                  # 4-byte Reload
                                        # xmm4 = mem[0],zero,zero,zero
	addq	$16, %r12
	cmpq	%r12, %r15
	jne	.LBB5_9
.LBB5_10:                               # %._crit_edge
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end5:
	.size	_Z10make_nodosPPP4NodeP8PointW3Djfj, .Lfunc_end5-_Z10make_nodosPPP4NodeP8PointW3Djfj
	.cfi_endproc
                                        # -- End function
	.globl	_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff # -- Begin function _Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	.type	_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff,@function
_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff: # @_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	.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	$160, %rsp
	.cfi_def_cfa_offset 208
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	56(%rsp), %rax
	movq	%rdi, (%rax)
	leaq	48(%rsp), %rcx
	movq	%rsi, (%rcx)
	leaq	40(%rsp), %rsi
	movq	%rdx, (%rsi)
	leaq	20(%rsp), %rdx
	movss	%xmm0, (%rdx)
	leaq	16(%rsp), %rdi
	movss	%xmm1, (%rdi)
	leaq	12(%rsp), %r8
	movss	%xmm2, (%r8)
	leaq	8(%rsp), %r9
	movss	%xmm3, (%r9)
	leaq	96(%rsp), %rbx
	movq	%rax, (%rbx)
	movq	%rcx, 8(%rbx)
	movq	%rsi, 16(%rbx)
	movq	%rdx, 24(%rbx)
	movq	%rdi, 32(%rbx)
	movq	%r8, 40(%rbx)
	movq	%r9, 48(%rbx)
	leaq	80(%rsp), %r14
	leaq	64(%rsp), %r15
	leaq	32(%rsp), %r12
	leaq	24(%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	$_Z6BPC_XXPfS_PPP4Nodeffff, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$176, %rsp
	.cfi_adjust_cfa_offset -176
	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_end6:
	.size	_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff, .Lfunc_end6-_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	.cfi_endproc
                                        # -- End function
	.globl	_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff # -- Begin function _Z27__device_stub__make_histoXXPfS_PPP4Nodeffff
	.type	_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff,@function
_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff: # @_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff
	.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	$160, %rsp
	.cfi_def_cfa_offset 208
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	56(%rsp), %rax
	movq	%rdi, (%rax)
	leaq	48(%rsp), %rcx
	movq	%rsi, (%rcx)
	leaq	40(%rsp), %rsi
	movq	%rdx, (%rsi)
	leaq	20(%rsp), %rdx
	movss	%xmm0, (%rdx)
	leaq	16(%rsp), %rdi
	movss	%xmm1, (%rdi)
	leaq	12(%rsp), %r8
	movss	%xmm2, (%r8)
	leaq	8(%rsp), %r9
	movss	%xmm3, (%r9)
	leaq	96(%rsp), %rbx
	movq	%rax, (%rbx)
	movq	%rcx, 8(%rbx)
	movq	%rsi, 16(%rbx)
	movq	%rdx, 24(%rbx)
	movq	%rdi, 32(%rbx)
	movq	%r8, 40(%rbx)
	movq	%r9, 48(%rbx)
	leaq	80(%rsp), %r14
	leaq	64(%rsp), %r15
	leaq	32(%rsp), %r12
	leaq	24(%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	$_Z12make_histoXXPfS_PPP4Nodeffff, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$176, %rsp
	.cfi_adjust_cfa_offset -176
	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_end7:
	.size	_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff, .Lfunc_end7-_Z27__device_stub__make_histoXXPfS_PPP4Nodeffff
	.cfi_endproc
                                        # -- End function
	.globl	_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff # -- Begin function _Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff
	.type	_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff,@function
_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff: # @_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff
	.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	$160, %rsp
	.cfi_def_cfa_offset 208
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	56(%rsp), %rax
	movq	%rdi, (%rax)
	leaq	48(%rsp), %rdi
	movq	%rsi, (%rdi)
	leaq	40(%rsp), %rsi
	movq	%rdx, (%rsi)
	leaq	32(%rsp), %rdx
	movq	%rcx, (%rdx)
	leaq	12(%rsp), %rcx
	movss	%xmm0, (%rcx)
	leaq	8(%rsp), %r8
	movss	%xmm1, (%r8)
	leaq	4(%rsp), %r9
	movss	%xmm2, (%r9)
	movq	%rsp, %r10
	movss	%xmm3, (%r10)
	leaq	96(%rsp), %rbx
	movq	%rax, (%rbx)
	movq	%rdi, 8(%rbx)
	movq	%rsi, 16(%rbx)
	movq	%rdx, 24(%rbx)
	movq	%rcx, 32(%rbx)
	movq	%r8, 40(%rbx)
	movq	%r9, 48(%rbx)
	movq	%r10, 56(%rbx)
	leaq	80(%rsp), %r14
	leaq	64(%rsp), %r15
	leaq	24(%rsp), %r12
	leaq	16(%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	$_Z12make_histoXYPfS_PPP4NodeS3_ffff, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$176, %rsp
	.cfi_adjust_cfa_offset -176
	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_end8:
	.size	_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff, .Lfunc_end8-_Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff
	.cfi_endproc
                                        # -- End function
	.globl	_Z30__device_stub__make_analyticRRPffifi # -- Begin function _Z30__device_stub__make_analyticRRPffifi
	.type	_Z30__device_stub__make_analyticRRPffifi,@function
_Z30__device_stub__make_analyticRRPffifi: # @_Z30__device_stub__make_analyticRRPffifi
	.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	$128, %rsp
	.cfi_def_cfa_offset 176
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	40(%rsp), %rax
	movq	%rdi, (%rax)
	leaq	20(%rsp), %rcx
	movss	%xmm0, (%rcx)
	leaq	16(%rsp), %rdi
	movl	%esi, (%rdi)
	leaq	12(%rsp), %rsi
	movss	%xmm1, (%rsi)
	leaq	8(%rsp), %r8
	movl	%edx, (%r8)
	leaq	80(%rsp), %rbx
	movq	%rax, (%rbx)
	movq	%rcx, 8(%rbx)
	movq	%rdi, 16(%rbx)
	movq	%rsi, 24(%rbx)
	movq	%r8, 32(%rbx)
	leaq	64(%rsp), %r14
	leaq	48(%rsp), %r15
	leaq	32(%rsp), %r12
	leaq	24(%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	$_Z15make_analyticRRPffifi, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$144, %rsp
	.cfi_adjust_cfa_offset -144
	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_end9:
	.size	_Z30__device_stub__make_analyticRRPffifi, .Lfunc_end9-_Z30__device_stub__make_analyticRRPffifi
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function main
.LCPI10_0:
	.quad	0x3fd5555555555555              # double 0.33333333333333331
.LCPI10_1:
	.quad	0x406f400000000000              # double 250
.LCPI10_2:
	.quad	0x40016872c0000000              # double 2.1760001182556152
.LCPI10_4:
	.quad	0x3f60000000000000              # double 0.001953125
.LCPI10_5:
	.quad	0x412e848000000000              # double 1.0E+6
	.section	.rodata.cst4,"aM",@progbits,4
	.p2align	2, 0x0
.LCPI10_3:
	.long	0x437a0000                      # float 250
	.text
	.globl	main
	.type	main,@function
main:                                   # @main
.Lfunc_begin3:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception3
# %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	$376, %rsp                      # imm = 0x178
	.cfi_def_cfa_offset 432
	.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	%rsi, %r13
	movq	24(%rsi), %rsi
.Ltmp65:
	leaq	40(%rsp), %rdi
	leaq	144(%rsp), %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
.Ltmp66:
# %bb.1:
	movq	40(%rsp), %rbx
	callq	__errno_location
	movq	%rax, %r14
	movl	(%rax), %ebp
	movl	$0, (%rax)
	leaq	176(%rsp), %r15
	movq	%rbx, %rdi
	movq	%r15, %rsi
	movl	$10, %edx
	callq	__isoc23_strtol
	cmpq	%rbx, (%r15)
	je	.LBB10_142
# %bb.2:
	movslq	%eax, %rcx
	movq	%rax, 136(%rsp)                 # 8-byte Spill
	cmpq	%rax, %rcx
	jne	.LBB10_144
# %bb.3:
	movl	(%r14), %eax
	cmpl	$34, %eax
	je	.LBB10_144
# %bb.4:
	testl	%eax, %eax
	jne	.LBB10_6
# %bb.5:
	movl	%ebp, (%r14)
.LBB10_6:
	leaq	56(%rsp), %rax
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB10_8
# %bb.7:                                # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i
	callq	_ZdlPv
.LBB10_8:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit
	movq	32(%r13), %rsi
.Ltmp68:
	leaq	40(%rsp), %rdi
	leaq	144(%rsp), %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
.Ltmp69:
# %bb.9:
	movq	40(%rsp), %rbx
	movl	(%r14), %ebp
	movl	$0, (%r14)
	leaq	176(%rsp), %r15
	movq	%rbx, %rdi
	movq	%r15, %rsi
	movl	$10, %edx
	callq	__isoc23_strtol
	cmpq	%rbx, (%r15)
	je	.LBB10_146
# %bb.10:
	movabsq	$-4294967296, %rdx              # imm = 0xFFFFFFFF00000000
	movq	%rax, 24(%rsp)                  # 8-byte Spill
	leaq	-2147483648(%rax), %rcx
	cmpq	%rdx, %rcx
	jb	.LBB10_148
# %bb.11:
	movl	(%r14), %eax
	cmpl	$34, %eax
	je	.LBB10_148
# %bb.12:
	testl	%eax, %eax
	jne	.LBB10_14
# %bb.13:
	movl	%ebp, (%r14)
.LBB10_14:
	movq	40(%rsp), %rdi
	leaq	56(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_16
# %bb.15:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i193
	callq	_ZdlPv
.LBB10_16:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit195
	movq	40(%r13), %rsi
.Ltmp71:
	leaq	40(%rsp), %rdi
	leaq	144(%rsp), %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
.Ltmp72:
# %bb.17:
	movq	40(%rsp), %rbx
	movl	(%r14), %ebp
	movl	$0, (%r14)
	leaq	176(%rsp), %r15
	movq	%rbx, %rdi
	movq	%r15, %rsi
	callq	strtof
	movss	%xmm0, 76(%rsp)                 # 4-byte Spill
	cmpq	%rbx, (%r15)
	je	.LBB10_150
# %bb.18:
	movl	(%r14), %eax
	testl	%eax, %eax
	je	.LBB10_22
# %bb.19:
	cmpl	$34, %eax
	jne	.LBB10_23
# %bb.20:                               # %.critedge.i.i196
.Ltmp74:
	movl	$.L.str.17, %edi
	callq	_ZSt20__throw_out_of_rangePKc
.Ltmp75:
# %bb.21:
.LBB10_22:
	movl	%ebp, (%r14)
.LBB10_23:
	movq	40(%rsp), %rdi
	leaq	56(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_25
# %bb.24:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i199
	callq	_ZdlPv
.LBB10_25:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit201
	movq	136(%rsp), %rbp                 # 8-byte Reload
	movl	%ebp, %eax
	xorps	%xmm0, %xmm0
	cvtsi2ss	%rax, %xmm0
	cvtss2sd	%xmm0, %xmm0
	movsd	.LCPI10_0(%rip), %xmm1          # xmm1 = mem[0],zero
	callq	pow
	movsd	.LCPI10_1(%rip), %xmm1          # xmm1 = mem[0],zero
	divsd	%xmm0, %xmm1
	mulsd	.LCPI10_2(%rip), %xmm1
	cvtsd2ss	%xmm1, %xmm1
	movss	.LCPI10_3(%rip), %xmm0          # xmm0 = mem[0],zero,zero,zero
	movss	%xmm1, 12(%rsp)                 # 4-byte Spill
	divss	%xmm1, %xmm0
	callq	ceilf@PLT
	movss	%xmm0, 8(%rsp)                  # 4-byte Spill
	movl	%ebp, %ebx
	shlq	$4, %rbx
	leaq	112(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	leaq	104(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
	leaq	40(%rsp), %rdi
	leaq	56(%rsp), %rax
	movq	%rax, (%rdi)
.Ltmp76:
	movl	$.L.str.3, %esi
	movl	$.L.str.3+9, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
.Ltmp77:
	movq	24(%rsp), %r14                  # 8-byte Reload
# %bb.26:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit
	leaq	192(%rsp), %rax
	movq	%rax, -16(%rax)
.Ltmp79:
	leaq	176(%rsp), %rdi
	movl	$.L.str.4, %esi
	movl	$.L.str.4+9, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
.Ltmp80:
# %bb.27:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit202
	leaq	160(%rsp), %rax
	movq	%rax, -16(%rax)
.Ltmp82:
	leaq	144(%rsp), %rdi
	movl	$.L.str.5, %esi
	movl	$.L.str.5+9, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
.Ltmp83:
# %bb.28:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit203
	movl	%r14d, %ebx
	leaq	(,%rbx,8), %r12
.Ltmp85:
	movq	%r12, %rdi
	callq	_Znam
.Ltmp86:
# %bb.29:
	movq	%rax, %r15
	shlq	$2, %rbx
.Ltmp87:
	movq	%rbx, %rdi
	callq	_Znam
	movq	%rax, 80(%rsp)                  # 8-byte Spill
.Ltmp88:
# %bb.30:
.Ltmp89:
	movq	%r12, %rdi
	callq	_Znam
.Ltmp90:
# %bb.31:
.Ltmp91:
	movq	%rax, %r12
	leaq	32(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp92:
# %bb.32:                               # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit
.Ltmp93:
	leaq	128(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp94:
# %bb.33:                               # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit204
.Ltmp95:
	leaq	88(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp96:
# %bb.34:                               # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit205
.Ltmp97:
	leaq	120(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp98:
# %bb.35:                               # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit206.preheader
	testl	%r14d, %r14d
	movq	80(%rsp), %r10                  # 8-byte Reload
	je	.LBB10_38
# %bb.36:                               # %.lr.ph
	movq	32(%rsp), %rax
	movq	128(%rsp), %rcx
	movq	88(%rsp), %rdx
	movq	120(%rsp), %rsi
	movl	%r14d, %edi
	shlq	$2, %rdi
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
.LBB10_37:                              # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit206
                                        # =>This Inner Loop Header: Depth=1
	movq	%r8, (%r15,%r9,2)
	movl	%r8d, (%r10,%r9)
	movq	%r8, (%r12,%r9,2)
	movl	%r8d, (%rax,%r9)
	movl	%r8d, (%rcx,%r9)
	movl	%r8d, (%rdx,%r9)
	movl	%r8d, (%rsi,%r9)
	addq	$4, %r9
	cmpq	%r9, %rdi
	jne	.LBB10_37
.LBB10_38:                              # %_ZL16hipMallocManagedIfE10hipError_tPPT_mj.exit206._crit_edge
	movq	8(%r13), %rsi
.Ltmp100:
	leaq	344(%rsp), %rdi
	movq	%rsp, %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
.Ltmp101:
# %bb.39:
	movq	112(%rsp), %rdx
.Ltmp103:
	leaq	344(%rsp), %rdi
	movl	%ebp, %esi
	callq	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
.Ltmp104:
# %bb.40:
	leaq	360(%rsp), %rax
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB10_42
# %bb.41:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i216
	callq	_ZdlPv
.LBB10_42:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit218
	movq	16(%r13), %rsi
.Ltmp106:
	leaq	312(%rsp), %rdi
	movq	%rsp, %rdx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_
.Ltmp107:
# %bb.43:
	movq	104(%rsp), %rdx
.Ltmp109:
	leaq	312(%rsp), %rdi
	movl	%ebp, %esi
	callq	_Z10open_filesNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiP8PointW3D
.Ltmp110:
# %bb.44:
	movq	%r15, 96(%rsp)                  # 8-byte Spill
	cvttss2si	8(%rsp), %ebx           # 4-byte Folded Reload
	leaq	328(%rsp), %rax
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB10_46
# %bb.45:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i219
	callq	_ZdlPv
.LBB10_46:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit221
	movl	%ebx, %r15d
	leaq	(,%r15,8), %r13
.Ltmp112:
	leaq	16(%rsp), %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp113:
# %bb.47:                               # %_ZL16hipMallocManagedIPP4NodeE10hipError_tPPT_mj.exit
.Ltmp114:
	movq	%rsp, %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp115:
# %bb.48:                               # %_ZL16hipMallocManagedIPP4NodeE10hipError_tPPT_mj.exit222.preheader
	movl	%ebx, 8(%rsp)                   # 4-byte Spill
	testl	%ebx, %ebx
	je	.LBB10_57
# %bb.49:                               # %.lr.ph327
	movq	%r15, %rbx
	shlq	$4, %rbx
	xorl	%r14d, %r14d
.LBB10_50:                              # =>This Loop Header: Depth=1
                                        #     Child Loop BB10_53 Depth 2
	leaq	(,%r14,8), %rbp
	movq	16(%rsp), %rdi
	addq	%rbp, %rdi
.Ltmp116:
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp117:
# %bb.51:                               # %_ZL16hipMallocManagedIP4NodeE10hipError_tPPT_mj.exit
                                        #   in Loop: Header=BB10_50 Depth=1
	addq	(%rsp), %rbp
.Ltmp118:
	movq	%rbp, %rdi
	movq	%r13, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp119:
# %bb.52:                               # %_ZL16hipMallocManagedIP4NodeE10hipError_tPPT_mj.exit229.preheader.preheader
                                        #   in Loop: Header=BB10_50 Depth=1
	xorl	%ebp, %ebp
.LBB10_53:                              # %_ZL16hipMallocManagedIP4NodeE10hipError_tPPT_mj.exit229.preheader
                                        #   Parent Loop BB10_50 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	16(%rsp), %rax
	movq	(%rax,%r14,8), %rdi
	addq	%rbp, %rdi
.Ltmp121:
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp122:
# %bb.54:                               # %_ZL16hipMallocManagedI4NodeE10hipError_tPPT_mj.exit
                                        #   in Loop: Header=BB10_53 Depth=2
	movq	(%rsp), %rax
	movq	(%rax,%r14,8), %rdi
	addq	%rbp, %rdi
.Ltmp123:
	movq	%rbx, %rsi
	movl	$1, %edx
	callq	hipMallocManaged
.Ltmp124:
# %bb.55:                               # %_ZL16hipMallocManagedI4NodeE10hipError_tPPT_mj.exit230
                                        #   in Loop: Header=BB10_53 Depth=2
	addq	$8, %rbp
	cmpq	%rbp, %r13
	jne	.LBB10_53
# %bb.56:                               # %_ZL16hipMallocManagedIPP4NodeE10hipError_tPPT_mj.exit222
                                        #   in Loop: Header=BB10_50 Depth=1
	incq	%r14
	cmpq	%r15, %r14
	jne	.LBB10_50
.LBB10_57:                              # %_ZL16hipMallocManagedIPP4NodeE10hipError_tPPT_mj.exit222._crit_edge
	movq	(%rsp), %rdi
	movq	112(%rsp), %rsi
.Ltmp126:
	movl	8(%rsp), %ebx                   # 4-byte Reload
	movl	%ebx, %edx
	movss	12(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movq	136(%rsp), %rbp                 # 8-byte Reload
	movl	%ebp, %ecx
	callq	_Z10make_nodosPPP4NodeP8PointW3Djfj
.Ltmp127:
# %bb.58:
	movq	16(%rsp), %rdi
	movq	104(%rsp), %rsi
.Ltmp128:
	movl	%ebx, %edx
	movss	12(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movl	%ebp, %ecx
	callq	_Z10make_nodosPPP4NodeP8PointW3Djfj
.Ltmp129:
# %bb.59:
	movl	%ebx, %eax
	imull	%eax, %eax
	imull	%ebx, %eax
	xorps	%xmm0, %xmm0
	cvtsi2sd	%rax, %xmm0
	mulsd	.LCPI10_4(%rip), %xmm0
	cvtsd2ss	%xmm0, %xmm0
	callq	ceilf@PLT
	cvttss2si	%xmm0, %ebx
	btsq	$32, %rbx
	callq	clock
	movq	%rax, 208(%rsp)                 # 8-byte Spill
.Ltmp131:
	movabsq	$4294967808, %rdx               # imm = 0x100000200
	movq	%rbx, %rdi
	movl	$1, %esi
	movl	$1, %ecx
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
	callq	__hipPushCallConfiguration
.Ltmp132:
	movq	24(%rsp), %r14                  # 8-byte Reload
# %bb.60:
	movl	%r14d, %ecx
	xorps	%xmm0, %xmm0
	cvtsi2ss	%rcx, %xmm0
	testl	%eax, %eax
	jne	.LBB10_62
# %bb.61:
	movss	%xmm0, 72(%rsp)                 # 4-byte Spill
	movss	72(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movss	76(%rsp), %xmm1                 # 4-byte Reload
                                        # xmm1 = mem[0],zero,zero,zero
	divss	%xmm1, %xmm0
	movq	32(%rsp), %rdi
	movq	88(%rsp), %rsi
	movq	(%rsp), %rdx
.Ltmp133:
	movss	.LCPI10_3(%rip), %xmm3          # xmm3 = mem[0],zero,zero,zero
	movss	12(%rsp), %xmm2                 # 4-byte Reload
                                        # xmm2 = mem[0],zero,zero,zero
	callq	_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	movss	72(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
.Ltmp134:
.LBB10_62:
	movabsq	$4294967296, %rbx               # imm = 0x100000000
	cvtss2sd	%xmm0, %xmm0
	mulsd	.LCPI10_4(%rip), %xmm0
	callq	ceil@PLT
	cvttsd2si	%xmm0, %edi
	orq	%rbx, %rdi
.Ltmp136:
	movabsq	$4294967808, %rdx               # imm = 0x100000200
	movl	$1, %esi
	movl	$1, %ecx
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
	callq	__hipPushCallConfiguration
.Ltmp137:
# %bb.63:
	testl	%eax, %eax
	jne	.LBB10_65
# %bb.64:
.Ltmp138:
	movss	.LCPI10_3(%rip), %xmm1          # xmm1 = mem[0],zero,zero,zero
	movq	80(%rsp), %rdi                  # 8-byte Reload
	movss	76(%rsp), %xmm0                 # 4-byte Reload
                                        # xmm0 = mem[0],zero,zero,zero
	movl	%r14d, %esi
	movl	%ebp, %edx
	callq	_Z30__device_stub__make_analyticRRPffifi
.Ltmp139:
.LBB10_65:
.Ltmp140:
	callq	hipDeviceSynchronize
.Ltmp141:
# %bb.66:
.Ltmp142:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.6, %esi
	movl	$15, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp143:
# %bb.67:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	xorps	%xmm0, %xmm0
	cvtss2sd	12(%rsp), %xmm0                 # 4-byte Folded Reload
.Ltmp144:
	movl	$_ZSt4cout, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp145:
# %bb.68:                               # %_ZNSolsEf.exit
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp146:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp147:
# %bb.69:                               # %.noexc
.Ltmp148:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp149:
# %bb.70:                               # %.noexc284
.Ltmp150:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp151:
# %bb.71:                               # %_ZNSolsEPFRSoS_E.exit
.Ltmp152:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.7, %esi
	movl	$30, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp153:
# %bb.72:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit231
	movq	32(%rsp), %rax
	xorps	%xmm0, %xmm0
	cvtss2sd	(%rax), %xmm0
.Ltmp154:
	movl	$_ZSt4cout, %edi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp155:
# %bb.73:                               # %_ZNSolsEf.exit232
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp156:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp157:
# %bb.74:                               # %.noexc286
.Ltmp158:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp159:
# %bb.75:                               # %.noexc287
.Ltmp160:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp161:
# %bb.76:                               # %_ZNSolsEPFRSoS_E.exit233
.Ltmp163:
	callq	hipGetLastError
.Ltmp164:
# %bb.77:
.Ltmp165:
	movl	%eax, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.8, %esi
	movl	$18, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp166:
# %bb.78:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit234
.Ltmp167:
	movl	$_ZSt4cout, %edi
	movl	%ebx, %esi
	callq	_ZNSolsEi
.Ltmp168:
# %bb.79:
	movq	%rax, %rbp
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbp, %rdi
.Ltmp169:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp170:
# %bb.80:                               # %.noexc290
.Ltmp171:
	movsbl	%al, %esi
	movq	%rbp, %rdi
	callq	_ZNSo3putEc
.Ltmp172:
# %bb.81:                               # %.noexc291
.Ltmp173:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp174:
# %bb.82:                               # %_ZNSolsEPFRSoS_E.exit235
	testl	%ebx, %ebx
	jne	.LBB10_152
# %bb.83:
	callq	clock
	subq	208(%rsp), %rax                 # 8-byte Folded Reload
	xorps	%xmm0, %xmm0
	cvtsi2sd	%rax, %xmm0
	divsd	.LCPI10_5(%rip), %xmm0
	movl	$.L.str.10, %edi
	movb	$1, %al
	callq	printf
	testl	%r14d, %r14d
	movq	96(%rsp), %r9                   # 8-byte Reload
	je	.LBB10_86
# %bb.84:                               # %.lr.ph329
	movq	32(%rsp), %rax
	movq	88(%rsp), %rcx
	movq	128(%rsp), %rdx
	movq	120(%rsp), %rsi
	movl	%r14d, %edi
	xorl	%r8d, %r8d
.LBB10_85:                              # =>This Inner Loop Header: Depth=1
	movss	(%rax,%r8,4), %xmm0             # xmm0 = mem[0],zero,zero,zero
	addss	(%rcx,%r8,4), %xmm0
	cvtss2sd	%xmm0, %xmm0
	movsd	%xmm0, (%r9,%r8,8)
	movss	(%rdx,%r8,4), %xmm0             # xmm0 = mem[0],zero,zero,zero
	addss	(%rsi,%r8,4), %xmm0
	cvtss2sd	%xmm0, %xmm0
	movsd	%xmm0, (%r12,%r8,8)
	incq	%r8
	cmpq	%r8, %rdi
	jne	.LBB10_85
.LBB10_86:                              # %._crit_edge
.Ltmp178:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.11, %esi
	movl	$38, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp179:
# %bb.87:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit236
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp180:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp181:
# %bb.88:                               # %.noexc294
.Ltmp182:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp183:
# %bb.89:                               # %.noexc295
.Ltmp184:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp185:
# %bb.90:                               # %_ZNSolsEPFRSoS_E.exit237
	leaq	296(%rsp), %r14
	movq	%r14, -16(%r14)
	movq	40(%rsp), %rsi
	movq	48(%rsp), %rdx
	addq	%rsi, %rdx
.Ltmp186:
	leaq	280(%rsp), %rdi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
.Ltmp187:
# %bb.91:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit
.Ltmp188:
	leaq	280(%rsp), %rdi
	movq	24(%rsp), %rsi                  # 8-byte Reload
                                        # kill: def $esi killed $esi killed $rsi
	movq	96(%rsp), %rdx                  # 8-byte Reload
	callq	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
.Ltmp189:
# %bb.92:
	movq	280(%rsp), %rdi
	cmpq	%r14, %rdi
	je	.LBB10_94
# %bb.93:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i238
	callq	_ZdlPv
.LBB10_94:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit240
.Ltmp191:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.12, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp192:
# %bb.95:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit241
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp193:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp194:
# %bb.96:                               # %.noexc298
.Ltmp195:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp196:
# %bb.97:                               # %.noexc299
.Ltmp197:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp198:
# %bb.98:                               # %_ZNSolsEPFRSoS_E.exit242
	leaq	264(%rsp), %r14
	movq	%r14, -16(%r14)
	movq	176(%rsp), %rsi
	movq	184(%rsp), %rdx
	addq	%rsi, %rdx
.Ltmp199:
	leaq	248(%rsp), %rdi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
.Ltmp200:
# %bb.99:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit243
.Ltmp201:
	leaq	248(%rsp), %rdi
	movq	24(%rsp), %rsi                  # 8-byte Reload
                                        # kill: def $esi killed $esi killed $rsi
	movq	80(%rsp), %rdx                  # 8-byte Reload
	callq	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPf
.Ltmp202:
# %bb.100:
	movq	248(%rsp), %rdi
	cmpq	%r14, %rdi
	je	.LBB10_102
# %bb.101:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i244
	callq	_ZdlPv
.LBB10_102:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit246
.Ltmp204:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.13, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp205:
# %bb.103:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit247
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp206:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp207:
# %bb.104:                              # %.noexc302
.Ltmp208:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp209:
# %bb.105:                              # %.noexc303
.Ltmp210:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp211:
# %bb.106:                              # %_ZNSolsEPFRSoS_E.exit248
	leaq	232(%rsp), %r14
	movq	%r14, -16(%r14)
	movq	144(%rsp), %rsi
	movq	152(%rsp), %rdx
	addq	%rsi, %rdx
.Ltmp212:
	leaq	216(%rsp), %rdi
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
.Ltmp213:
# %bb.107:                              # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit249
.Ltmp214:
	leaq	216(%rsp), %rdi
	movq	24(%rsp), %rsi                  # 8-byte Reload
                                        # kill: def $esi killed $esi killed $rsi
	movq	%r12, %rdx
	callq	_Z14save_histogramNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiPd
.Ltmp215:
# %bb.108:
	movq	216(%rsp), %rdi
	cmpq	%r14, %rdi
	je	.LBB10_110
# %bb.109:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i250
	callq	_ZdlPv
.LBB10_110:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit252
.Ltmp217:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.14, %esi
	movl	$23, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp218:
# %bb.111:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit253
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp219:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp220:
# %bb.112:                              # %.noexc306
.Ltmp221:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp222:
# %bb.113:                              # %.noexc307
.Ltmp223:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp224:
# %bb.114:                              # %_ZNSolsEPFRSoS_E.exit254
.Ltmp225:
	leaq	112(%rsp), %rdi
	callq	hipFree
.Ltmp226:
# %bb.115:
.Ltmp227:
	leaq	104(%rsp), %rdi
	callq	hipFree
.Ltmp228:
# %bb.116:
	movq	96(%rsp), %rdi                  # 8-byte Reload
	callq	_ZdaPv
	movq	%r12, %rdi
	callq	_ZdaPv
	movq	80(%rsp), %rdi                  # 8-byte Reload
	callq	_ZdaPv
.Ltmp229:
	leaq	32(%rsp), %rdi
	callq	hipFree
.Ltmp230:
# %bb.117:
.Ltmp231:
	leaq	128(%rsp), %rdi
	callq	hipFree
.Ltmp232:
# %bb.118:
.Ltmp233:
	leaq	88(%rsp), %rdi
	callq	hipFree
.Ltmp234:
# %bb.119:
.Ltmp235:
	leaq	120(%rsp), %rdi
	callq	hipFree
.Ltmp236:
# %bb.120:                              # %.preheader323
	cmpl	$0, 8(%rsp)                     # 4-byte Folded Reload
	je	.LBB10_129
# %bb.121:                              # %.preheader.preheader
	xorl	%r14d, %r14d
.LBB10_122:                             # %.preheader
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB10_123 Depth 2
	xorl	%ebx, %ebx
.LBB10_123:                             #   Parent Loop BB10_122 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movq	16(%rsp), %rax
	movq	(%rax,%r14,8), %rdi
	addq	%rbx, %rdi
.Ltmp237:
	callq	hipFree
.Ltmp238:
# %bb.124:                              #   in Loop: Header=BB10_123 Depth=2
	movq	(%rsp), %rax
	movq	(%rax,%r14,8), %rdi
	addq	%rbx, %rdi
.Ltmp239:
	callq	hipFree
.Ltmp240:
# %bb.125:                              #   in Loop: Header=BB10_123 Depth=2
	addq	$8, %rbx
	cmpq	%rbx, %r13
	jne	.LBB10_123
# %bb.126:                              #   in Loop: Header=BB10_122 Depth=1
	leaq	(,%r14,8), %rbx
	movq	16(%rsp), %rdi
	addq	%rbx, %rdi
.Ltmp242:
	callq	hipFree
.Ltmp243:
# %bb.127:                              #   in Loop: Header=BB10_122 Depth=1
	addq	(%rsp), %rbx
.Ltmp244:
	movq	%rbx, %rdi
	callq	hipFree
.Ltmp245:
# %bb.128:                              #   in Loop: Header=BB10_122 Depth=1
	incq	%r14
	cmpq	%r15, %r14
	jne	.LBB10_122
.LBB10_129:                             # %._crit_edge332
.Ltmp247:
	leaq	16(%rsp), %rdi
	callq	hipFree
.Ltmp248:
# %bb.130:
.Ltmp249:
	movq	%rsp, %rdi
	callq	hipFree
.Ltmp250:
# %bb.131:
.Ltmp251:
	movl	$_ZSt4cout, %ebx
	movl	$_ZSt4cout, %edi
	movl	$.L.str.15, %esi
	movl	$21, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp252:
# %bb.132:                              # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit264
	movq	_ZSt4cout(%rip), %rax
	addq	-24(%rax), %rbx
.Ltmp253:
	movq	%rbx, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp254:
# %bb.133:                              # %.noexc310
.Ltmp255:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp256:
# %bb.134:                              # %.noexc311
.Ltmp257:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp258:
# %bb.135:                              # %_ZNSolsEPFRSoS_E.exit265
	movq	144(%rsp), %rdi
	leaq	160(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_137
# %bb.136:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i266
	callq	_ZdlPv
.LBB10_137:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit268
	movq	176(%rsp), %rdi
	leaq	192(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_139
# %bb.138:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i269
	callq	_ZdlPv
.LBB10_139:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit271
	movq	40(%rsp), %rdi
	leaq	56(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_141
# %bb.140:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i272
	callq	_ZdlPv
.LBB10_141:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit274
	xorl	%eax, %eax
	addq	$376, %rsp                      # imm = 0x178
	.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
.LBB10_142:
	.cfi_def_cfa_offset 432
.Ltmp270:
	movl	$.L.str.16, %edi
	callq	_ZSt24__throw_invalid_argumentPKc
.Ltmp271:
# %bb.143:
.LBB10_144:                             # %.critedge.i.i
.Ltmp268:
	movl	$.L.str.16, %edi
	callq	_ZSt20__throw_out_of_rangePKc
.Ltmp269:
# %bb.145:
.LBB10_146:
.Ltmp265:
	movl	$.L.str.16, %edi
	callq	_ZSt24__throw_invalid_argumentPKc
.Ltmp266:
# %bb.147:
.LBB10_148:                             # %.critedge.i.i188
.Ltmp263:
	movl	$.L.str.16, %edi
	callq	_ZSt20__throw_out_of_rangePKc
.Ltmp264:
# %bb.149:
.LBB10_150:
.Ltmp260:
	movl	$.L.str.17, %edi
	callq	_ZSt24__throw_invalid_argumentPKc
.Ltmp261:
# %bb.151:
.LBB10_152:
.Ltmp175:
	movl	%ebx, %edi
	callq	hipGetErrorString
.Ltmp176:
# %bb.153:
	movl	$.L.str.9, %edi
	movq	%rax, %rsi
	xorl	%eax, %eax
	callq	printf
	movl	$-1, %edi
	callq	exit
.LBB10_154:
.Ltmp216:
	movq	%rax, %rbx
	movq	216(%rsp), %rdi
	jmp	.LBB10_157
.LBB10_155:
.Ltmp203:
	movq	%rax, %rbx
	movq	248(%rsp), %rdi
	jmp	.LBB10_157
.LBB10_156:
.Ltmp190:
	movq	%rax, %rbx
	movq	280(%rsp), %rdi
.LBB10_157:
	cmpq	%r14, %rdi
	jne	.LBB10_162
	jmp	.LBB10_189
.LBB10_158:
.Ltmp111:
	movq	%rax, %rbx
	leaq	328(%rsp), %rax
	jmp	.LBB10_161
.LBB10_159:
.Ltmp108:
	jmp	.LBB10_188
.LBB10_160:
.Ltmp105:
	movq	%rax, %rbx
	leaq	360(%rsp), %rax
.LBB10_161:
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB10_189
.LBB10_162:                             # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i223
	callq	_ZdlPv
	jmp	.LBB10_189
.LBB10_163:
.Ltmp102:
	jmp	.LBB10_188
.LBB10_164:
.Ltmp84:
	movq	%rax, %rbx
	jmp	.LBB10_191
.LBB10_165:
.Ltmp81:
	movq	%rax, %rbx
	jmp	.LBB10_193
.LBB10_166:
.Ltmp78:
	jmp	.LBB10_170
.LBB10_167:
.Ltmp73:
	jmp	.LBB10_170
.LBB10_168:
.Ltmp70:
	jmp	.LBB10_170
.LBB10_169:
.Ltmp67:
.LBB10_170:
	movq	%rax, %rbx
	jmp	.LBB10_196
.LBB10_171:
.Ltmp135:
	jmp	.LBB10_188
.LBB10_172:
.Ltmp262:
	jmp	.LBB10_174
.LBB10_173:
.Ltmp267:
.LBB10_174:
	movq	%rax, %rbx
	cmpl	$0, (%r14)
	jne	.LBB10_193
# %bb.175:
	movl	%ebp, (%r14)
	jmp	.LBB10_193
.LBB10_176:
.Ltmp272:
	movq	%rax, %rbx
	cmpl	$0, (%r14)
	jne	.LBB10_178
# %bb.177:
	movl	%ebp, (%r14)
.LBB10_178:                             # %_ZZN9__gnu_cxx6__stoaIlicJiEEET0_PFT_PKT1_PPS3_DpT2_EPKcS5_PmS9_EN11_Save_errnoD2Ev.exit.i.i
	leaq	56(%rsp), %rax
	movq	-16(%rax), %rdi
	jmp	.LBB10_194
.LBB10_179:
.Ltmp130:
	jmp	.LBB10_188
.LBB10_180:
.Ltmp177:
	jmp	.LBB10_188
.LBB10_181:
.Ltmp99:
	jmp	.LBB10_188
.LBB10_182:
.Ltmp162:
	jmp	.LBB10_188
.LBB10_183:
.Ltmp259:
	jmp	.LBB10_188
.LBB10_184:
.Ltmp246:
	jmp	.LBB10_188
.LBB10_185:
.Ltmp120:
	jmp	.LBB10_188
.LBB10_186:
.Ltmp241:
	jmp	.LBB10_188
.LBB10_187:
.Ltmp125:
.LBB10_188:
	movq	%rax, %rbx
.LBB10_189:
	movq	144(%rsp), %rdi
	leaq	160(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_191
# %bb.190:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i275
	callq	_ZdlPv
.LBB10_191:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit277
	movq	176(%rsp), %rdi
	leaq	192(%rsp), %rax
	cmpq	%rax, %rdi
	je	.LBB10_193
# %bb.192:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i278
	callq	_ZdlPv
.LBB10_193:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit280
	movq	40(%rsp), %rdi
	leaq	56(%rsp), %rax
.LBB10_194:                             # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit280
	cmpq	%rax, %rdi
	je	.LBB10_196
# %bb.195:                              # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i281
	callq	_ZdlPv
.LBB10_196:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end10:
	.size	main, .Lfunc_end10-main
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table10:
.Lexception3:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end3-.Lcst_begin3
.Lcst_begin3:
	.uleb128 .Ltmp65-.Lfunc_begin3          # >> Call Site 1 <<
	.uleb128 .Ltmp66-.Ltmp65                #   Call between .Ltmp65 and .Ltmp66
	.uleb128 .Ltmp67-.Lfunc_begin3          #     jumps to .Ltmp67
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp68-.Lfunc_begin3          # >> Call Site 2 <<
	.uleb128 .Ltmp69-.Ltmp68                #   Call between .Ltmp68 and .Ltmp69
	.uleb128 .Ltmp70-.Lfunc_begin3          #     jumps to .Ltmp70
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp71-.Lfunc_begin3          # >> Call Site 3 <<
	.uleb128 .Ltmp72-.Ltmp71                #   Call between .Ltmp71 and .Ltmp72
	.uleb128 .Ltmp73-.Lfunc_begin3          #     jumps to .Ltmp73
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp74-.Lfunc_begin3          # >> Call Site 4 <<
	.uleb128 .Ltmp75-.Ltmp74                #   Call between .Ltmp74 and .Ltmp75
	.uleb128 .Ltmp262-.Lfunc_begin3         #     jumps to .Ltmp262
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp75-.Lfunc_begin3          # >> Call Site 5 <<
	.uleb128 .Ltmp76-.Ltmp75                #   Call between .Ltmp75 and .Ltmp76
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp76-.Lfunc_begin3          # >> Call Site 6 <<
	.uleb128 .Ltmp77-.Ltmp76                #   Call between .Ltmp76 and .Ltmp77
	.uleb128 .Ltmp78-.Lfunc_begin3          #     jumps to .Ltmp78
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp79-.Lfunc_begin3          # >> Call Site 7 <<
	.uleb128 .Ltmp80-.Ltmp79                #   Call between .Ltmp79 and .Ltmp80
	.uleb128 .Ltmp81-.Lfunc_begin3          #     jumps to .Ltmp81
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp82-.Lfunc_begin3          # >> Call Site 8 <<
	.uleb128 .Ltmp83-.Ltmp82                #   Call between .Ltmp82 and .Ltmp83
	.uleb128 .Ltmp84-.Lfunc_begin3          #     jumps to .Ltmp84
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp85-.Lfunc_begin3          # >> Call Site 9 <<
	.uleb128 .Ltmp98-.Ltmp85                #   Call between .Ltmp85 and .Ltmp98
	.uleb128 .Ltmp99-.Lfunc_begin3          #     jumps to .Ltmp99
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp100-.Lfunc_begin3         # >> Call Site 10 <<
	.uleb128 .Ltmp101-.Ltmp100              #   Call between .Ltmp100 and .Ltmp101
	.uleb128 .Ltmp102-.Lfunc_begin3         #     jumps to .Ltmp102
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp103-.Lfunc_begin3         # >> Call Site 11 <<
	.uleb128 .Ltmp104-.Ltmp103              #   Call between .Ltmp103 and .Ltmp104
	.uleb128 .Ltmp105-.Lfunc_begin3         #     jumps to .Ltmp105
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp106-.Lfunc_begin3         # >> Call Site 12 <<
	.uleb128 .Ltmp107-.Ltmp106              #   Call between .Ltmp106 and .Ltmp107
	.uleb128 .Ltmp108-.Lfunc_begin3         #     jumps to .Ltmp108
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp109-.Lfunc_begin3         # >> Call Site 13 <<
	.uleb128 .Ltmp110-.Ltmp109              #   Call between .Ltmp109 and .Ltmp110
	.uleb128 .Ltmp111-.Lfunc_begin3         #     jumps to .Ltmp111
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp112-.Lfunc_begin3         # >> Call Site 14 <<
	.uleb128 .Ltmp115-.Ltmp112              #   Call between .Ltmp112 and .Ltmp115
	.uleb128 .Ltmp130-.Lfunc_begin3         #     jumps to .Ltmp130
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp116-.Lfunc_begin3         # >> Call Site 15 <<
	.uleb128 .Ltmp119-.Ltmp116              #   Call between .Ltmp116 and .Ltmp119
	.uleb128 .Ltmp120-.Lfunc_begin3         #     jumps to .Ltmp120
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp121-.Lfunc_begin3         # >> Call Site 16 <<
	.uleb128 .Ltmp124-.Ltmp121              #   Call between .Ltmp121 and .Ltmp124
	.uleb128 .Ltmp125-.Lfunc_begin3         #     jumps to .Ltmp125
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp126-.Lfunc_begin3         # >> Call Site 17 <<
	.uleb128 .Ltmp129-.Ltmp126              #   Call between .Ltmp126 and .Ltmp129
	.uleb128 .Ltmp130-.Lfunc_begin3         #     jumps to .Ltmp130
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp129-.Lfunc_begin3         # >> Call Site 18 <<
	.uleb128 .Ltmp131-.Ltmp129              #   Call between .Ltmp129 and .Ltmp131
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp131-.Lfunc_begin3         # >> Call Site 19 <<
	.uleb128 .Ltmp134-.Ltmp131              #   Call between .Ltmp131 and .Ltmp134
	.uleb128 .Ltmp135-.Lfunc_begin3         #     jumps to .Ltmp135
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp134-.Lfunc_begin3         # >> Call Site 20 <<
	.uleb128 .Ltmp136-.Ltmp134              #   Call between .Ltmp134 and .Ltmp136
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp136-.Lfunc_begin3         # >> Call Site 21 <<
	.uleb128 .Ltmp161-.Ltmp136              #   Call between .Ltmp136 and .Ltmp161
	.uleb128 .Ltmp162-.Lfunc_begin3         #     jumps to .Ltmp162
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp163-.Lfunc_begin3         # >> Call Site 22 <<
	.uleb128 .Ltmp174-.Ltmp163              #   Call between .Ltmp163 and .Ltmp174
	.uleb128 .Ltmp177-.Lfunc_begin3         #     jumps to .Ltmp177
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp178-.Lfunc_begin3         # >> Call Site 23 <<
	.uleb128 .Ltmp187-.Ltmp178              #   Call between .Ltmp178 and .Ltmp187
	.uleb128 .Ltmp259-.Lfunc_begin3         #     jumps to .Ltmp259
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp188-.Lfunc_begin3         # >> Call Site 24 <<
	.uleb128 .Ltmp189-.Ltmp188              #   Call between .Ltmp188 and .Ltmp189
	.uleb128 .Ltmp190-.Lfunc_begin3         #     jumps to .Ltmp190
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp191-.Lfunc_begin3         # >> Call Site 25 <<
	.uleb128 .Ltmp200-.Ltmp191              #   Call between .Ltmp191 and .Ltmp200
	.uleb128 .Ltmp259-.Lfunc_begin3         #     jumps to .Ltmp259
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp201-.Lfunc_begin3         # >> Call Site 26 <<
	.uleb128 .Ltmp202-.Ltmp201              #   Call between .Ltmp201 and .Ltmp202
	.uleb128 .Ltmp203-.Lfunc_begin3         #     jumps to .Ltmp203
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp204-.Lfunc_begin3         # >> Call Site 27 <<
	.uleb128 .Ltmp213-.Ltmp204              #   Call between .Ltmp204 and .Ltmp213
	.uleb128 .Ltmp259-.Lfunc_begin3         #     jumps to .Ltmp259
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp214-.Lfunc_begin3         # >> Call Site 28 <<
	.uleb128 .Ltmp215-.Ltmp214              #   Call between .Ltmp214 and .Ltmp215
	.uleb128 .Ltmp216-.Lfunc_begin3         #     jumps to .Ltmp216
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp217-.Lfunc_begin3         # >> Call Site 29 <<
	.uleb128 .Ltmp236-.Ltmp217              #   Call between .Ltmp217 and .Ltmp236
	.uleb128 .Ltmp259-.Lfunc_begin3         #     jumps to .Ltmp259
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp237-.Lfunc_begin3         # >> Call Site 30 <<
	.uleb128 .Ltmp240-.Ltmp237              #   Call between .Ltmp237 and .Ltmp240
	.uleb128 .Ltmp241-.Lfunc_begin3         #     jumps to .Ltmp241
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp242-.Lfunc_begin3         # >> Call Site 31 <<
	.uleb128 .Ltmp245-.Ltmp242              #   Call between .Ltmp242 and .Ltmp245
	.uleb128 .Ltmp246-.Lfunc_begin3         #     jumps to .Ltmp246
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp247-.Lfunc_begin3         # >> Call Site 32 <<
	.uleb128 .Ltmp258-.Ltmp247              #   Call between .Ltmp247 and .Ltmp258
	.uleb128 .Ltmp259-.Lfunc_begin3         #     jumps to .Ltmp259
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp270-.Lfunc_begin3         # >> Call Site 33 <<
	.uleb128 .Ltmp269-.Ltmp270              #   Call between .Ltmp270 and .Ltmp269
	.uleb128 .Ltmp272-.Lfunc_begin3         #     jumps to .Ltmp272
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp265-.Lfunc_begin3         # >> Call Site 34 <<
	.uleb128 .Ltmp264-.Ltmp265              #   Call between .Ltmp265 and .Ltmp264
	.uleb128 .Ltmp267-.Lfunc_begin3         #     jumps to .Ltmp267
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp260-.Lfunc_begin3         # >> Call Site 35 <<
	.uleb128 .Ltmp261-.Ltmp260              #   Call between .Ltmp260 and .Ltmp261
	.uleb128 .Ltmp262-.Lfunc_begin3         #     jumps to .Ltmp262
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp175-.Lfunc_begin3         # >> Call Site 36 <<
	.uleb128 .Ltmp176-.Ltmp175              #   Call between .Ltmp175 and .Ltmp176
	.uleb128 .Ltmp177-.Lfunc_begin3         #     jumps to .Ltmp177
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp176-.Lfunc_begin3         # >> Call Site 37 <<
	.uleb128 .Lfunc_end10-.Ltmp176          #   Call between .Ltmp176 and .Lfunc_end10
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end3:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag,"axG",@progbits,_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag,comdat
	.weak	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag # -- Begin function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
	.p2align	1, 0x90
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag,@function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag: # @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	subq	%rsi, %r14
	movq	%r14, (%rsp)
	cmpq	$15, %r14
	jbe	.LBB11_1
# %bb.2:
	movq	%rsp, %r12
	movq	%rbx, %rdi
	movq	%r12, %rsi
	xorl	%edx, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm
	movq	%rax, (%rbx)
	movq	(%r12), %rcx
	movq	%rcx, 16(%rbx)
	jmp	.LBB11_3
.LBB11_1:                               # %._crit_edge
	movq	(%rbx), %rax
.LBB11_3:
	testq	%r14, %r14
	je	.LBB11_7
# %bb.4:
	cmpq	$1, %r14
	jne	.LBB11_6
# %bb.5:
	movb	(%r15), %cl
	movb	%cl, (%rax)
	jmp	.LBB11_7
.LBB11_6:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	memcpy@PLT
.LBB11_7:                               # %_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tagEN6_GuardD2Ev.exit
	movq	(%rsp), %rax
	movq	%rax, 8(%rbx)
	movq	(%rbx), %rcx
	movb	$0, (%rcx,%rax)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end11:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag, .Lfunc_end11-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag,"axG",@progbits,_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag,comdat
	.weak	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag # -- Begin function _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
	.p2align	1, 0x90
	.type	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag,@function
_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag: # @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	subq	%rsi, %r14
	movq	%r14, (%rsp)
	cmpq	$15, %r14
	jbe	.LBB12_1
# %bb.2:
	movq	%rsp, %r12
	movq	%rbx, %rdi
	movq	%r12, %rsi
	xorl	%edx, %edx
	callq	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm
	movq	%rax, (%rbx)
	movq	(%r12), %rcx
	movq	%rcx, 16(%rbx)
	jmp	.LBB12_3
.LBB12_1:                               # %._crit_edge
	movq	(%rbx), %rax
.LBB12_3:
	testq	%r14, %r14
	je	.LBB12_7
# %bb.4:
	cmpq	$1, %r14
	jne	.LBB12_6
# %bb.5:
	movb	(%r15), %cl
	movb	%cl, (%rax)
	jmp	.LBB12_7
.LBB12_6:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	memcpy@PLT
.LBB12_7:                               # %_ZZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tagEN6_GuardD2Ev.exit
	movq	(%rsp), %rax
	movq	%rax, 8(%rbx)
	movq	(%rbx), %rcx
	movb	$0, (%rcx,%rax)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end12:
	.size	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag, .Lfunc_end12-_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag
	.cfi_endproc
                                        # -- End function
	.text
	.p2align	4, 0x90                         # -- Begin function __hip_module_ctor
	.type	__hip_module_ctor,@function
__hip_module_ctor:                      # @__hip_module_ctor
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	subq	$32, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -16
	movq	__hip_gpubin_handle(%rip), %rbx
	testq	%rbx, %rbx
	jne	.LBB13_2
# %bb.1:
	movl	$__hip_fatbin_wrapper, %edi
	callq	__hipRegisterFatBinary
	movq	%rax, %rbx
	movq	%rax, __hip_gpubin_handle(%rip)
.LBB13_2:
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z6BPC_XXPfS_PPP4Nodeffff, %esi
	movl	$.L__unnamed_1, %edx
	movl	$.L__unnamed_1, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z12make_histoXXPfS_PPP4Nodeffff, %esi
	movl	$.L__unnamed_2, %edx
	movl	$.L__unnamed_2, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z12make_histoXYPfS_PPP4NodeS3_ffff, %esi
	movl	$.L__unnamed_3, %edx
	movl	$.L__unnamed_3, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z15make_analyticRRPffifi, %esi
	movl	$.L__unnamed_4, %edx
	movl	$.L__unnamed_4, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	movl	$__hip_module_dtor, %edi
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit                          # TAILCALL
.Lfunc_end13:
	.size	__hip_module_ctor, .Lfunc_end13-__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	.LBB14_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
.LBB14_2:
	retq
.Lfunc_end14:
	.size	__hip_module_dtor, .Lfunc_end14-__hip_module_dtor
	.cfi_endproc
                                        # -- End function
	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	"../../../fake_DATA/DATOS/"
	.size	.L.str, 26

	.type	.L.str.1,@object                # @.str.1
.L.str.1:
	.asciz	"Failed to load the file in "
	.size	.L.str.1, 28

	.type	.L.str.2,@object                # @.str.2
.L.str.2:
	.asciz	"Failed to save the the histogram in "
	.size	.L.str.2, 37

	.type	_Z6BPC_XXPfS_PPP4Nodeffff,@object # @_Z6BPC_XXPfS_PPP4Nodeffff
	.section	.rodata,"a",@progbits
	.globl	_Z6BPC_XXPfS_PPP4Nodeffff
	.p2align	3, 0x0
_Z6BPC_XXPfS_PPP4Nodeffff:
	.quad	_Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	.size	_Z6BPC_XXPfS_PPP4Nodeffff, 8

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

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

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

	.type	.L.str.3,@object                # @.str.3
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str.3:
	.asciz	"DDiso.dat"
	.size	.L.str.3, 10

	.type	.L.str.4,@object                # @.str.4
.L.str.4:
	.asciz	"RRiso.dat"
	.size	.L.str.4, 10

	.type	.L.str.5,@object                # @.str.5
.L.str.5:
	.asciz	"DRiso.dat"
	.size	.L.str.5, 10

	.type	.L.str.6,@object                # @.str.6
.L.str.6:
	.asciz	"Size of a node "
	.size	.L.str.6, 16

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	"Nodes considered as boundary: "
	.size	.L.str.7, 31

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"The error code is "
	.size	.L.str.8, 19

	.type	.L.str.9,@object                # @.str.9
.L.str.9:
	.asciz	"CUDA error: %s\n"
	.size	.L.str.9, 16

	.type	.L.str.10,@object               # @.str.10
.L.str.10:
	.asciz	"\nSpent time = %.4f seg.\n"
	.size	.L.str.10, 25

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"Termine de hacer todos los histogramas"
	.size	.L.str.11, 39

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"Guarde histograma DD..."
	.size	.L.str.12, 24

	.type	.L.str.13,@object               # @.str.13
.L.str.13:
	.asciz	"Guarde histograma RR..."
	.size	.L.str.13, 24

	.type	.L.str.14,@object               # @.str.14
.L.str.14:
	.asciz	"Guarde histograma DR..."
	.size	.L.str.14, 24

	.type	.L.str.15,@object               # @.str.15
.L.str.15:
	.asciz	"Programa Terminado..."
	.size	.L.str.15, 22

	.type	.L.str.16,@object               # @.str.16
.L.str.16:
	.asciz	"stoi"
	.size	.L.str.16, 5

	.type	.L.str.17,@object               # @.str.17
.L.str.17:
	.asciz	"stof"
	.size	.L.str.17, 5

	.type	.L.str.20,@object               # @.str.20
.L.str.20:
	.asciz	"basic_string: construction from null is not valid"
	.size	.L.str.20, 50

	.type	.L__unnamed_1,@object           # @0
.L__unnamed_1:
	.asciz	"_Z6BPC_XXPfS_PPP4Nodeffff"
	.size	.L__unnamed_1, 26

	.type	.L__unnamed_2,@object           # @1
.L__unnamed_2:
	.asciz	"_Z12make_histoXXPfS_PPP4Nodeffff"
	.size	.L__unnamed_2, 33

	.type	.L__unnamed_3,@object           # @2
.L__unnamed_3:
	.asciz	"_Z12make_histoXYPfS_PPP4NodeS3_ffff"
	.size	.L__unnamed_3, 36

	.type	.L__unnamed_4,@object           # @3
.L__unnamed_4:
	.asciz	"_Z15make_analyticRRPffifi"
	.size	.L__unnamed_4, 26

	.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

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __gxx_personality_v0
	.addrsig_sym _Z21__device_stub__BPC_XXPfS_PPP4Nodeffff
	.addrsig_sym _Z27__device_stub__make_histoXXPfS_PPP4Nodeffff
	.addrsig_sym _Z27__device_stub__make_histoXYPfS_PPP4NodeS3_ffff
	.addrsig_sym _Z30__device_stub__make_analyticRRPffifi
	.addrsig_sym __hip_module_ctor
	.addrsig_sym __hip_module_dtor
	.addrsig_sym _Unwind_Resume
	.addrsig_sym _ZSt4cout
	.addrsig_sym _Z6BPC_XXPfS_PPP4Nodeffff
	.addrsig_sym _Z12make_histoXXPfS_PPP4Nodeffff
	.addrsig_sym _Z12make_histoXYPfS_PPP4NodeS3_ffff
	.addrsig_sym _Z15make_analyticRRPffifi
	.addrsig_sym __hip_fatbin
	.addrsig_sym __hip_fatbin_wrapper
	.addrsig_sym __hip_cuid_

	.text
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.protected	_Z6BPC_XXPfS_PPP4Nodeffff ; -- Begin function _Z6BPC_XXPfS_PPP4Nodeffff
	.globl	_Z6BPC_XXPfS_PPP4Nodeffff
	.p2align	8
	.type	_Z6BPC_XXPfS_PPP4Nodeffff,@function
_Z6BPC_XXPfS_PPP4Nodeffff:              ; @_Z6BPC_XXPfS_PPP4Nodeffff
; %bb.0:
	s_load_b128 s[4:7], s[0:1], 0x1c
	s_waitcnt lgkmcnt(0)
	s_load_b32 s7, s[0:1], 0x34
	s_add_u32 s2, s0, 40
	s_addc_u32 s3, s1, 0
	v_div_scale_f32 v1, null, s5, s5, s6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f32_e32 v2, v1
	s_waitcnt_depctr 0xfff
	v_fma_f32 v3, -v1, v2, 1.0
	v_fmac_f32_e32 v2, v3, v2
	v_div_scale_f32 v3, vcc_lo, s6, s5, s6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v4, v3, v2
	v_fma_f32 v5, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v4, v5, v2
	v_fma_f32 v1, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f32 v1, v1, v2, v4
	v_div_fixup_f32 v1, v1, s5, s6
	s_waitcnt lgkmcnt(0)
	s_and_b32 s6, s7, 0xffff
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ceil_f32_e32 v1, v1
	v_cvt_i32_f32_e32 v34, v1
	v_mad_u64_u32 v[31:32], null, s15, s6, v[0:1]
	s_mov_b32 s6, exec_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v35, v34, v34
	v_mul_lo_u32 v0, v35, v34
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v31, v0
	s_cbranch_execz .LBB0_203
; %bb.1:
	v_cvt_f64_f32_e32 v[0:1], s4
	v_cvt_f64_f32_e32 v[2:3], s5
	s_mov_b32 s4, 0xe8584caa
	s_mov_b32 s5, 0x3ffbb67a
	s_mov_b32 s16, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[0:1], v[2:3], s[4:5], v[0:1]
	v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]
	v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[6:7], v[4:5]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
	v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0
	v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[8:9], v[10:11], v[6:7]
	v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]
	v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_f32_f64_e32 v0, v[0:1]
	v_ceil_f32_e32 v0, v0
	s_delay_alu instid0(VALU_DEP_1)
	v_cvt_i32_f32_e32 v2, v0
	v_cmpx_eq_u32_e32 0, v31
	s_cbranch_execz .LBB0_198
; %bb.2:
	s_load_b64 s[4:5], s[2:3], 0x50
	v_mbcnt_lo_u32_b32 v32, -1, 0
	v_mov_b32_e32 v0, 0
	v_mov_b32_e32 v1, 0
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_mov_b32_e32 v7, v32
	;;#ASMSTART
	;;#ASMEND
	v_readfirstlane_b32 s2, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s2, v7
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_8
; %bb.3:
	v_mov_b32_e32 v3, 0
	s_mov_b32 s6, exec_lo
	s_waitcnt lgkmcnt(0)
	global_load_b64 v[10:11], v3, s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	s_clause 0x1
	global_load_b64 v[0:1], v3, s[4:5] offset:40
	global_load_b64 v[4:5], v3, s[4:5]
	s_waitcnt vmcnt(1)
	v_and_b32_e32 v0, v0, v10
	v_and_b32_e32 v1, v1, v11
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v6, v0, 24
	v_mul_lo_u32 v1, v1, 24
	v_mul_lo_u32 v0, v0, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v1, v6, v1
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v4, v0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v1, vcc_lo, v5, v1, vcc_lo
	global_load_b64 v[8:9], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v3, v[8:11], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmpx_ne_u64_e64 v[0:1], v[10:11]
	s_cbranch_execz .LBB0_7
; %bb.4:                                ; %.preheader3.i.i.i.preheader
	s_mov_b32 s7, 0
.LBB0_5:                                ; %.preheader3.i.i.i
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	s_clause 0x1
	global_load_b64 v[4:5], v3, s[4:5] offset:40
	global_load_b64 v[8:9], v3, s[4:5]
	v_dual_mov_b32 v11, v1 :: v_dual_mov_b32 v10, v0
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v4, v4, v10
	v_and_b32_e32 v6, v5, v11
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[0:1], null, v4, 24, v[8:9]
	v_mad_u64_u32 v[4:5], null, v6, 24, v[1:2]
	s_delay_alu instid0(VALU_DEP_1)
	v_mov_b32_e32 v1, v4
	global_load_b64 v[8:9], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v3, v[8:11], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[10:11]
	s_or_b32 s7, vcc_lo, s7
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s7
	s_cbranch_execnz .LBB0_5
; %bb.6:                                ; %Flow438
	s_or_b32 exec_lo, exec_lo, s7
.LBB0_7:                                ; %Flow440
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s6
.LBB0_8:                                ; %.loopexit4.i.i.i
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s3
	v_mov_b32_e32 v8, 0
	v_readfirstlane_b32 s6, v0
	v_readfirstlane_b32 s7, v1
	s_mov_b32 s12, exec_lo
	s_waitcnt lgkmcnt(0)
	s_clause 0x1
	global_load_b64 v[9:10], v8, s[4:5] offset:40
	global_load_b128 v[3:6], v8, s[4:5]
	s_waitcnt vmcnt(1)
	v_readfirstlane_b32 s8, v9
	v_readfirstlane_b32 s9, v10
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[8:9], s[6:7], s[8:9]
	s_mul_i32 s3, s9, 24
	s_mul_hi_u32 s10, s8, 24
	s_mul_i32 s11, s8, 24
	s_and_saveexec_b32 s13, s2
	s_cbranch_execz .LBB0_10
; %bb.9:
	v_dual_mov_b32 v9, s12 :: v_dual_mov_b32 v10, v8
	s_add_i32 s12, s10, s3
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v3, s11
	v_add_co_ci_u32_e32 v1, vcc_lo, s12, v4, vcc_lo
	v_dual_mov_b32 v11, 2 :: v_dual_mov_b32 v12, 1
	global_store_b128 v[0:1], v[9:12], off offset:8
.LBB0_10:
	s_or_b32 exec_lo, exec_lo, s13
	s_lshl_b64 s[8:9], s[8:9], 12
	v_lshlrev_b64 v[0:1], 6, v[7:8]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v5, vcc_lo, v5, s8
	v_add_co_ci_u32_e32 v6, vcc_lo, s9, v6, vcc_lo
	s_mov_b32 s12, 0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_u32 v0, vcc_lo, v5, v0
	s_mov_b32 s13, s12
	s_mov_b32 s14, s12
	s_mov_b32 s15, s12
	v_add_co_ci_u32_e32 v1, vcc_lo, v6, v1, vcc_lo
	v_dual_mov_b32 v7, 33 :: v_dual_mov_b32 v10, v8
	v_mov_b32_e32 v9, v8
	v_dual_mov_b32 v11, s12 :: v_dual_mov_b32 v14, s15
	v_dual_mov_b32 v12, s13 :: v_dual_mov_b32 v13, s14
	s_clause 0x3
	global_store_b128 v[0:1], v[7:10], off
	global_store_b128 v[0:1], v[11:14], off offset:16
	global_store_b128 v[0:1], v[11:14], off offset:32
	global_store_b128 v[0:1], v[11:14], off offset:48
	s_and_saveexec_b32 s8, s2
	s_cbranch_execz .LBB0_17
; %bb.11:
	v_mov_b32_e32 v11, 0
	s_mov_b32 s9, exec_lo
	s_clause 0x1
	global_load_b64 v[14:15], v11, s[4:5] offset:32 glc
	global_load_b64 v[5:6], v11, s[4:5] offset:40
	v_dual_mov_b32 v12, s6 :: v_dual_mov_b32 v13, s7
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v6, s7, v6
	v_and_b32_e32 v5, s6, v5
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v6, v6, 24
	v_mul_hi_u32 v7, v5, 24
	v_mul_lo_u32 v5, v5, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v6, v7, v6
	v_add_co_u32 v9, vcc_lo, v3, v5
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v10, vcc_lo, v4, v6, vcc_lo
	global_store_b64 v[9:10], v[14:15], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[7:8], v11, v[12:15], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmpx_ne_u64_e64 v[7:8], v[14:15]
	s_cbranch_execz .LBB0_13
.LBB0_12:                               ; %.preheader1.i.i.i
                                        ; =>This Inner Loop Header: Depth=1
	v_dual_mov_b32 v5, s6 :: v_dual_mov_b32 v6, s7
	s_sleep 1
	global_store_b64 v[9:10], v[7:8], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v11, v[5:8], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[5:6], v[7:8]
	v_dual_mov_b32 v8, v6 :: v_dual_mov_b32 v7, v5
	s_or_b32 s12, vcc_lo, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s12
	s_cbranch_execnz .LBB0_12
.LBB0_13:                               ; %Flow436
	s_or_b32 exec_lo, exec_lo, s9
	v_mov_b32_e32 v8, 0
	s_mov_b32 s12, exec_lo
	s_mov_b32 s9, exec_lo
	v_mbcnt_lo_u32_b32 v7, s12, 0
	global_load_b64 v[5:6], v8, s[4:5] offset:16
	v_cmpx_eq_u32_e32 0, v7
	s_cbranch_execz .LBB0_15
; %bb.14:
	s_bcnt1_i32_b32 s12, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	v_mov_b32_e32 v7, s12
	s_waitcnt vmcnt(0)
	global_atomic_add_u64 v[5:6], v[7:8], off offset:8
.LBB0_15:
	s_or_b32 exec_lo, exec_lo, s9
	s_waitcnt vmcnt(0)
	global_load_b64 v[7:8], v[5:6], off offset:16
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[7:8]
	s_cbranch_vccnz .LBB0_17
; %bb.16:
	global_load_b32 v5, v[5:6], off offset:24
	v_mov_b32_e32 v6, 0
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s9, v5
	s_waitcnt_vscnt null, 0x0
	global_store_b64 v[7:8], v[5:6], off
	s_and_b32 m0, s9, 0xff
	s_sendmsg sendmsg(MSG_INTERRUPT)
.LBB0_17:                               ; %Flow437
	s_or_b32 exec_lo, exec_lo, s8
	s_add_i32 s10, s10, s3
	v_add_co_u32 v3, vcc_lo, v3, s11
	v_add_co_ci_u32_e32 v4, vcc_lo, s10, v4, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v3, vcc_lo, v3, 20
	v_add_co_ci_u32_e32 v4, vcc_lo, 0, v4, vcc_lo
.LBB0_18:                               ; =>This Inner Loop Header: Depth=1
	v_mov_b32_e32 v5, 1
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_20
; %bb.19:                               ;   in Loop: Header=BB0_18 Depth=1
	global_load_b32 v5, v[3:4], off glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_and_b32_e32 v5, 1, v5
.LBB0_20:                               ;   in Loop: Header=BB0_18 Depth=1
	s_or_b32 exec_lo, exec_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readfirstlane_b32 s3, v5
	s_cmp_eq_u32 s3, 0
	s_cbranch_scc1 .LBB0_22
; %bb.21:                               ;   in Loop: Header=BB0_18 Depth=1
	s_mov_b32 s3, 0
	s_sleep 1
	s_branch .LBB0_23
.LBB0_22:                               ;   in Loop: Header=BB0_18 Depth=1
	s_mov_b32 s3, -1
.LBB0_23:                               ; %Flow431
                                        ;   in Loop: Header=BB0_18 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s3
	s_cbranch_vccnz .LBB0_18
; %bb.24:
	global_load_b64 v[3:4], v[0:1], off
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_28
; %bb.25:
	v_mov_b32_e32 v9, 0
	s_clause 0x2
	global_load_b64 v[0:1], v9, s[4:5] offset:40
	global_load_b64 v[10:11], v9, s[4:5] offset:24 glc
	global_load_b64 v[7:8], v9, s[4:5]
	s_waitcnt vmcnt(2)
	v_add_co_u32 v12, vcc_lo, v0, 1
	v_add_co_ci_u32_e32 v13, vcc_lo, 0, v1, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v5, vcc_lo, v12, s6
	v_add_co_ci_u32_e32 v6, vcc_lo, s7, v13, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[5:6]
	v_dual_cndmask_b32 v6, v6, v13 :: v_dual_cndmask_b32 v5, v5, v12
	v_and_b32_e32 v1, v6, v1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v0, v5, v0
	v_mul_lo_u32 v1, v1, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v12, v0, 24
	v_mul_lo_u32 v0, v0, 24
	v_add_nc_u32_e32 v1, v12, v1
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_co_u32 v0, vcc_lo, v7, v0
	v_mov_b32_e32 v7, v10
	v_add_co_ci_u32_e32 v1, vcc_lo, v8, v1, vcc_lo
	v_mov_b32_e32 v8, v11
	global_store_b64 v[0:1], v[10:11], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[7:8], v9, v[5:8], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_ne_u64_e32 vcc_lo, v[7:8], v[10:11]
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_28
; %bb.26:                               ; %.preheader.i.i.i.preheader
	s_mov_b32 s2, 0
.LBB0_27:                               ; %.preheader.i.i.i
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	global_store_b64 v[0:1], v[7:8], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[10:11], v9, v[5:8], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[10:11], v[7:8]
	v_dual_mov_b32 v7, v10 :: v_dual_mov_b32 v8, v11
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_27
.LBB0_28:                               ; %__ockl_printf_begin.exit
	s_or_b32 exec_lo, exec_lo, s3
	s_getpc_b64 s[6:7]
	s_add_u32 s6, s6, .str@rel32@lo+4
	s_addc_u32 s7, s7, .str@rel32@hi+12
	s_delay_alu instid0(SALU_CYCLE_1)
	s_cmp_lg_u64 s[6:7], 0
	s_cbranch_scc0 .LBB0_114
; %bb.29:
	s_waitcnt vmcnt(0)
	v_dual_mov_b32 v6, v4 :: v_dual_and_b32 v33, 2, v3
	v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v10, 1
	v_and_b32_e32 v5, -3, v3
	v_mov_b32_e32 v9, 2
	s_mov_b64 s[8:9], 29
.LBB0_30:                               ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB0_33 Depth 2
                                        ;     Child Loop BB0_40 Depth 2
                                        ;     Child Loop BB0_48 Depth 2
                                        ;     Child Loop BB0_56 Depth 2
                                        ;     Child Loop BB0_64 Depth 2
                                        ;     Child Loop BB0_72 Depth 2
                                        ;     Child Loop BB0_80 Depth 2
                                        ;     Child Loop BB0_88 Depth 2
                                        ;     Child Loop BB0_96 Depth 2
                                        ;     Child Loop BB0_102 Depth 2
                                        ;     Child Loop BB0_111 Depth 2
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_u64_e64 s2, s[8:9], 56
                                        ; implicit-def: $vgpr13_vgpr14
                                        ; implicit-def: $sgpr18
	s_and_b32 s2, s2, exec_lo
	s_cselect_b32 s10, s8, 56
	s_cselect_b32 s11, s9, 0
	s_cmp_gt_u32 s10, 7
	s_mov_b32 s2, -1
	s_cbranch_scc1 .LBB0_35
; %bb.31:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v13, 0
	v_mov_b32_e32 v14, 0
	s_cmp_eq_u32 s10, 0
	s_cbranch_scc1 .LBB0_34
; %bb.32:                               ; %.preheader31.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_lshl_b64 s[2:3], s[10:11], 3
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], s[6:7]
.LBB0_33:                               ; %.preheader31.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	global_load_u8 v0, v1, s[14:15]
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_add_u32 s14, s14, 1
	s_addc_u32 s15, s15, 0
	s_cmp_lg_u32 s2, s12
	v_or_b32_e32 v13, v7, v13
	v_or_b32_e32 v14, v8, v14
	s_cbranch_scc1 .LBB0_33
.LBB0_34:                               ; %Flow407
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s2, 0
	s_mov_b32 s18, 0
.LBB0_35:                               ; %Flow409
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_and_not1_b32 vcc_lo, exec_lo, s2
	s_mov_b64 s[2:3], s[6:7]
	s_cbranch_vccnz .LBB0_37
; %bb.36:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[13:14], v1, s[6:7]
	s_add_i32 s18, s10, -8
	s_add_u32 s2, s6, 8
	s_addc_u32 s3, s7, 0
.LBB0_37:                               ; %.loopexit32.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s18, 7
	s_cbranch_scc1 .LBB0_42
; %bb.38:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v15, 0
	v_mov_b32_e32 v16, 0
	s_cmp_eq_u32 s18, 0
	s_cbranch_scc1 .LBB0_41
; %bb.39:                               ; %.preheader29.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], 0
.LBB0_40:                               ; %.preheader29.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_add_u32 s20, s2, s14
	s_addc_u32 s21, s3, s15
	s_add_u32 s14, s14, 1
	global_load_u8 v0, v1, s[20:21]
	s_addc_u32 s15, s15, 0
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_cmp_lg_u32 s18, s14
	v_or_b32_e32 v15, v7, v15
	s_delay_alu instid0(VALU_DEP_2)
	v_or_b32_e32 v16, v8, v16
	s_cbranch_scc1 .LBB0_40
.LBB0_41:                               ; %Flow402
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_mov_b32 s17, 0
	s_branch .LBB0_43
.LBB0_42:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
                                        ; implicit-def: $vgpr15_vgpr16
                                        ; implicit-def: $sgpr17
.LBB0_43:                               ; %Flow404
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_45
; %bb.44:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[15:16], v1, s[2:3]
	s_add_i32 s17, s18, -8
	s_add_u32 s2, s2, 8
	s_addc_u32 s3, s3, 0
.LBB0_45:                               ; %.loopexit30.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s17, 7
	s_cbranch_scc1 .LBB0_50
; %bb.46:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v17, 0
	v_mov_b32_e32 v18, 0
	s_cmp_eq_u32 s17, 0
	s_cbranch_scc1 .LBB0_49
; %bb.47:                               ; %.preheader27.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], 0
.LBB0_48:                               ; %.preheader27.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_add_u32 s18, s2, s14
	s_addc_u32 s19, s3, s15
	s_add_u32 s14, s14, 1
	global_load_u8 v0, v1, s[18:19]
	s_addc_u32 s15, s15, 0
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_cmp_lg_u32 s17, s14
	v_or_b32_e32 v17, v7, v17
	s_delay_alu instid0(VALU_DEP_2)
	v_or_b32_e32 v18, v8, v18
	s_cbranch_scc1 .LBB0_48
.LBB0_49:                               ; %Flow397
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_mov_b32 s18, 0
	s_branch .LBB0_51
.LBB0_50:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
                                        ; implicit-def: $sgpr18
.LBB0_51:                               ; %Flow399
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_53
; %bb.52:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[17:18], v1, s[2:3]
	s_add_i32 s18, s17, -8
	s_add_u32 s2, s2, 8
	s_addc_u32 s3, s3, 0
.LBB0_53:                               ; %.loopexit28.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s18, 7
	s_cbranch_scc1 .LBB0_58
; %bb.54:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v19, 0
	v_mov_b32_e32 v20, 0
	s_cmp_eq_u32 s18, 0
	s_cbranch_scc1 .LBB0_57
; %bb.55:                               ; %.preheader25.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], 0
.LBB0_56:                               ; %.preheader25.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_add_u32 s20, s2, s14
	s_addc_u32 s21, s3, s15
	s_add_u32 s14, s14, 1
	global_load_u8 v0, v1, s[20:21]
	s_addc_u32 s15, s15, 0
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_cmp_lg_u32 s18, s14
	v_or_b32_e32 v19, v7, v19
	s_delay_alu instid0(VALU_DEP_2)
	v_or_b32_e32 v20, v8, v20
	s_cbranch_scc1 .LBB0_56
.LBB0_57:                               ; %Flow392
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_mov_b32 s17, 0
	s_branch .LBB0_59
.LBB0_58:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
                                        ; implicit-def: $vgpr19_vgpr20
                                        ; implicit-def: $sgpr17
.LBB0_59:                               ; %Flow394
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_61
; %bb.60:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[19:20], v1, s[2:3]
	s_add_i32 s17, s18, -8
	s_add_u32 s2, s2, 8
	s_addc_u32 s3, s3, 0
.LBB0_61:                               ; %.loopexit26.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s17, 7
	s_cbranch_scc1 .LBB0_66
; %bb.62:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v21, 0
	v_mov_b32_e32 v22, 0
	s_cmp_eq_u32 s17, 0
	s_cbranch_scc1 .LBB0_65
; %bb.63:                               ; %.preheader23.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], 0
.LBB0_64:                               ; %.preheader23.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_add_u32 s18, s2, s14
	s_addc_u32 s19, s3, s15
	s_add_u32 s14, s14, 1
	global_load_u8 v0, v1, s[18:19]
	s_addc_u32 s15, s15, 0
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_cmp_lg_u32 s17, s14
	v_or_b32_e32 v21, v7, v21
	s_delay_alu instid0(VALU_DEP_2)
	v_or_b32_e32 v22, v8, v22
	s_cbranch_scc1 .LBB0_64
.LBB0_65:                               ; %Flow387
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_mov_b32 s18, 0
	s_branch .LBB0_67
.LBB0_66:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
                                        ; implicit-def: $sgpr18
.LBB0_67:                               ; %Flow389
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_69
; %bb.68:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[21:22], v1, s[2:3]
	s_add_i32 s18, s17, -8
	s_add_u32 s2, s2, 8
	s_addc_u32 s3, s3, 0
.LBB0_69:                               ; %.loopexit24.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s18, 7
	s_cbranch_scc1 .LBB0_74
; %bb.70:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v23, 0
	v_mov_b32_e32 v24, 0
	s_cmp_eq_u32 s18, 0
	s_cbranch_scc1 .LBB0_73
; %bb.71:                               ; %.preheader21.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], 0
.LBB0_72:                               ; %.preheader21.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_add_u32 s20, s2, s14
	s_addc_u32 s21, s3, s15
	s_add_u32 s14, s14, 1
	global_load_u8 v0, v1, s[20:21]
	s_addc_u32 s15, s15, 0
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_cmp_lg_u32 s18, s14
	v_or_b32_e32 v23, v7, v23
	s_delay_alu instid0(VALU_DEP_2)
	v_or_b32_e32 v24, v8, v24
	s_cbranch_scc1 .LBB0_72
.LBB0_73:                               ; %Flow382
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_mov_b32 s17, 0
	s_branch .LBB0_75
.LBB0_74:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
                                        ; implicit-def: $vgpr23_vgpr24
                                        ; implicit-def: $sgpr17
.LBB0_75:                               ; %Flow384
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_77
; %bb.76:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[23:24], v1, s[2:3]
	s_add_i32 s17, s18, -8
	s_add_u32 s2, s2, 8
	s_addc_u32 s3, s3, 0
.LBB0_77:                               ; %.loopexit22.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_cmp_gt_u32 s17, 7
	s_cbranch_scc1 .LBB0_82
; %bb.78:                               ;   in Loop: Header=BB0_30 Depth=1
	v_mov_b32_e32 v25, 0
	v_mov_b32_e32 v26, 0
	s_cmp_eq_u32 s17, 0
	s_cbranch_scc1 .LBB0_81
; %bb.79:                               ; %.preheader.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b64 s[12:13], 0
	s_mov_b64 s[14:15], s[2:3]
.LBB0_80:                               ; %.preheader.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	global_load_u8 v0, v1, s[14:15]
	s_add_i32 s17, s17, -1
	s_waitcnt vmcnt(0)
	v_and_b32_e32 v0, 0xffff, v0
	s_delay_alu instid0(VALU_DEP_1)
	v_lshlrev_b64 v[7:8], s12, v[0:1]
	s_add_u32 s12, s12, 8
	s_addc_u32 s13, s13, 0
	s_add_u32 s14, s14, 1
	s_addc_u32 s15, s15, 0
	s_cmp_lg_u32 s17, 0
	v_or_b32_e32 v25, v7, v25
	v_or_b32_e32 v26, v8, v26
	s_cbranch_scc1 .LBB0_80
.LBB0_81:                               ; %Flow377
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, 0
	s_branch .LBB0_83
.LBB0_82:                               ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s12, -1
.LBB0_83:                               ; %Flow379
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s12
	s_cbranch_vccnz .LBB0_85
; %bb.84:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[25:26], v1, s[2:3]
.LBB0_85:                               ; %.loopexit.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_waitcnt vmcnt(0)
	v_dual_mov_b32 v0, v32 :: v_dual_mov_b32 v7, 0
	;;#ASMSTART
	;;#ASMEND
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_readfirstlane_b32 s2, v0
	v_mov_b32_e32 v8, 0
	v_cmp_eq_u32_e64 s2, s2, v0
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_91
; %bb.86:                               ;   in Loop: Header=BB0_30 Depth=1
	global_load_b64 v[29:30], v1, s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	s_clause 0x1
	global_load_b64 v[7:8], v1, s[4:5] offset:40
	global_load_b64 v[11:12], v1, s[4:5]
	s_mov_b32 s12, exec_lo
	s_waitcnt vmcnt(1)
	v_and_b32_e32 v8, v8, v30
	v_and_b32_e32 v7, v7, v29
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v8, v8, 24
	v_mul_hi_u32 v27, v7, 24
	v_mul_lo_u32 v7, v7, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v8, v27, v8
	s_waitcnt vmcnt(0)
	v_add_co_u32 v7, vcc_lo, v11, v7
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v8, vcc_lo, v12, v8, vcc_lo
	global_load_b64 v[27:28], v[7:8], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[7:8], v1, v[27:30], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmpx_ne_u64_e64 v[7:8], v[29:30]
	s_cbranch_execz .LBB0_90
; %bb.87:                               ; %.preheader3.i.i19.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s13, 0
.LBB0_88:                               ; %.preheader3.i.i19.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_sleep 1
	s_clause 0x1
	global_load_b64 v[11:12], v1, s[4:5] offset:40
	global_load_b64 v[27:28], v1, s[4:5]
	v_dual_mov_b32 v30, v8 :: v_dual_mov_b32 v29, v7
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_and_b32_e32 v11, v11, v29
	s_waitcnt vmcnt(0)
	v_mad_u64_u32 v[7:8], null, v11, 24, v[27:28]
	v_and_b32_e32 v27, v12, v30
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[11:12], null, v27, 24, v[8:9]
	v_mov_b32_e32 v8, v11
	global_load_b64 v[27:28], v[7:8], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[7:8], v1, v[27:30], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[29:30]
	s_or_b32 s13, vcc_lo, s13
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s13
	s_cbranch_execnz .LBB0_88
; %bb.89:                               ; %Flow372
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s13
.LBB0_90:                               ; %Flow374
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s12
.LBB0_91:                               ; %.loopexit4.i.i14.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s3
	s_clause 0x1
	global_load_b64 v[11:12], v1, s[4:5] offset:40
	global_load_b128 v[27:30], v1, s[4:5]
	v_readfirstlane_b32 s12, v7
	v_readfirstlane_b32 s13, v8
	s_mov_b32 s19, exec_lo
	s_waitcnt vmcnt(1)
	v_readfirstlane_b32 s14, v11
	v_readfirstlane_b32 s15, v12
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[14:15], s[12:13], s[14:15]
	s_mul_i32 s3, s15, 24
	s_mul_hi_u32 s17, s14, 24
	s_mul_i32 s18, s14, 24
	s_and_saveexec_b32 s20, s2
	s_cbranch_execz .LBB0_93
; %bb.92:                               ;   in Loop: Header=BB0_30 Depth=1
	v_dual_mov_b32 v7, s19 :: v_dual_mov_b32 v8, v1
	s_add_i32 s19, s17, s3
	s_waitcnt vmcnt(0)
	v_add_co_u32 v11, vcc_lo, v27, s18
	v_add_co_ci_u32_e32 v12, vcc_lo, s19, v28, vcc_lo
	global_store_b128 v[11:12], v[7:10], off offset:8
.LBB0_93:                               ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s20
	v_cmp_gt_u64_e64 vcc_lo, s[8:9], 56
	v_or_b32_e32 v7, 0, v6
	v_or_b32_e32 v8, v5, v33
	s_lshl_b64 s[14:15], s[14:15], 12
	s_lshl_b32 s19, s10, 2
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	s_add_i32 s19, s19, 28
	v_dual_cndmask_b32 v12, v7, v6 :: v_dual_cndmask_b32 v7, v8, v5
	v_lshlrev_b64 v[5:6], 6, v[0:1]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v29, s14
	v_add_co_ci_u32_e32 v8, vcc_lo, s15, v30, vcc_lo
	s_and_b32 s19, s19, 0x1e0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_co_u32 v29, vcc_lo, v0, v5
	v_and_or_b32 v11, 0xffffff1f, v7, s19
	v_add_co_ci_u32_e32 v30, vcc_lo, v8, v6, vcc_lo
	s_clause 0x3
	global_store_b128 v[29:30], v[11:14], off
	global_store_b128 v[29:30], v[15:18], off offset:16
	global_store_b128 v[29:30], v[19:22], off offset:32
	global_store_b128 v[29:30], v[23:26], off offset:48
	s_and_saveexec_b32 s14, s2
	s_cbranch_execz .LBB0_101
; %bb.94:                               ;   in Loop: Header=BB0_30 Depth=1
	s_clause 0x1
	global_load_b64 v[15:16], v1, s[4:5] offset:32 glc
	global_load_b64 v[5:6], v1, s[4:5] offset:40
	v_dual_mov_b32 v13, s12 :: v_dual_mov_b32 v14, s13
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s20, v5
	v_readfirstlane_b32 s21, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[20:21], s[20:21], s[12:13]
	s_mul_i32 s15, s21, 24
	s_mul_hi_u32 s19, s20, 24
	s_mul_i32 s20, s20, 24
	s_add_i32 s19, s19, s15
	v_add_co_u32 v11, vcc_lo, v27, s20
	v_add_co_ci_u32_e32 v12, vcc_lo, s19, v28, vcc_lo
	s_mov_b32 s15, exec_lo
	global_store_b64 v[11:12], v[15:16], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[7:8], v1, v[13:16], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmpx_ne_u64_e64 v[7:8], v[15:16]
	s_cbranch_execz .LBB0_97
; %bb.95:                               ; %.preheader1.i.i17.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s19, 0
.LBB0_96:                               ; %.preheader1.i.i17.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	v_dual_mov_b32 v5, s12 :: v_dual_mov_b32 v6, s13
	s_sleep 1
	global_store_b64 v[11:12], v[7:8], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v1, v[5:8], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[5:6], v[7:8]
	v_dual_mov_b32 v8, v6 :: v_dual_mov_b32 v7, v5
	s_or_b32 s19, vcc_lo, s19
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s19
	s_cbranch_execnz .LBB0_96
.LBB0_97:                               ; %Flow370
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s15
	global_load_b64 v[5:6], v1, s[4:5] offset:16
	s_mov_b32 s19, exec_lo
	s_mov_b32 s15, exec_lo
	v_mbcnt_lo_u32_b32 v0, s19, 0
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_eq_u32_e32 0, v0
	s_cbranch_execz .LBB0_99
; %bb.98:                               ;   in Loop: Header=BB0_30 Depth=1
	s_bcnt1_i32_b32 s19, s19
	s_delay_alu instid0(SALU_CYCLE_1)
	v_mov_b32_e32 v0, s19
	s_waitcnt vmcnt(0)
	global_atomic_add_u64 v[5:6], v[0:1], off offset:8
.LBB0_99:                               ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s15
	s_waitcnt vmcnt(0)
	global_load_b64 v[7:8], v[5:6], off offset:16
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[7:8]
	s_cbranch_vccnz .LBB0_101
; %bb.100:                              ;   in Loop: Header=BB0_30 Depth=1
	global_load_b32 v0, v[5:6], off offset:24
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s15, v0
	s_waitcnt_vscnt null, 0x0
	global_store_b64 v[7:8], v[0:1], off
	s_and_b32 m0, s15, 0xff
	s_sendmsg sendmsg(MSG_INTERRUPT)
.LBB0_101:                              ; %Flow371
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s14
	s_add_i32 s17, s17, s3
	v_add_co_u32 v0, vcc_lo, v27, s18
	v_add_co_ci_u32_e32 v6, vcc_lo, s17, v28, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v5, vcc_lo, v0, 20
	v_add_co_ci_u32_e32 v6, vcc_lo, 0, v6, vcc_lo
.LBB0_102:                              ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	v_mov_b32_e32 v0, 1
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_104
; %bb.103:                              ;   in Loop: Header=BB0_102 Depth=2
	global_load_b32 v0, v[5:6], off glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_and_b32_e32 v0, 1, v0
.LBB0_104:                              ;   in Loop: Header=BB0_102 Depth=2
	s_or_b32 exec_lo, exec_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readfirstlane_b32 s3, v0
	s_cmp_eq_u32 s3, 0
	s_cbranch_scc1 .LBB0_106
; %bb.105:                              ;   in Loop: Header=BB0_102 Depth=2
	s_mov_b32 s3, 0
	s_sleep 1
	s_branch .LBB0_107
.LBB0_106:                              ;   in Loop: Header=BB0_102 Depth=2
	s_mov_b32 s3, -1
.LBB0_107:                              ; %Flow365
                                        ;   in Loop: Header=BB0_102 Depth=2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s3
	s_cbranch_vccnz .LBB0_102
; %bb.108:                              ;   in Loop: Header=BB0_30 Depth=1
	global_load_b128 v[5:8], v[29:30], off
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_112
; %bb.109:                              ;   in Loop: Header=BB0_30 Depth=1
	s_clause 0x2
	global_load_b64 v[7:8], v1, s[4:5] offset:40
	global_load_b64 v[15:16], v1, s[4:5] offset:24 glc
	global_load_b64 v[13:14], v1, s[4:5]
	s_waitcnt vmcnt(2)
	v_add_co_u32 v0, vcc_lo, v7, 1
	v_add_co_ci_u32_e32 v17, vcc_lo, 0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v11, vcc_lo, v0, s12
	v_add_co_ci_u32_e32 v12, vcc_lo, s13, v17, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[11:12]
	v_dual_cndmask_b32 v12, v12, v17 :: v_dual_cndmask_b32 v11, v11, v0
	v_and_b32_e32 v0, v12, v8
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_and_b32_e32 v7, v11, v7
	v_mul_hi_u32 v8, v7, 24
	v_mul_lo_u32 v7, v7, 24
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_add_co_u32 v7, vcc_lo, v13, v7
	v_mov_b32_e32 v13, v15
	v_mul_lo_u32 v0, v0, 24
	v_add_nc_u32_e32 v0, v8, v0
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e32 v8, vcc_lo, v14, v0, vcc_lo
	v_mov_b32_e32 v14, v16
	global_store_b64 v[7:8], v[15:16], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[13:14], v1, v[11:14], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_ne_u64_e32 vcc_lo, v[13:14], v[15:16]
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_112
; %bb.110:                              ; %.preheader.i.i16.i.preheader
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_mov_b32 s2, 0
.LBB0_111:                              ; %.preheader.i.i16.i
                                        ;   Parent Loop BB0_30 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	s_sleep 1
	global_store_b64 v[7:8], v[13:14], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[15:16], v1, v[11:14], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[15:16], v[13:14]
	v_dual_mov_b32 v13, v15 :: v_dual_mov_b32 v14, v16
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_111
.LBB0_112:                              ; %__ockl_hostcall_preview.exit20.i
                                        ;   in Loop: Header=BB0_30 Depth=1
	s_or_b32 exec_lo, exec_lo, s3
	s_sub_u32 s8, s8, s10
	s_subb_u32 s9, s9, s11
	s_add_u32 s6, s6, s10
	s_addc_u32 s7, s7, s11
	s_cmp_lg_u64 s[8:9], 0
	s_cbranch_scc1 .LBB0_30
; %bb.113:                              ; %Flow410
	s_mov_b32 s2, 0
	s_branch .LBB0_115
.LBB0_114:
	s_mov_b32 s2, -1
                                        ; implicit-def: $vgpr5_vgpr6
.LBB0_115:                              ; %Flow425
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_b32 vcc_lo, exec_lo, s2
	s_cbranch_vccz .LBB0_144
; %bb.116:
	s_waitcnt vmcnt(0)
	v_dual_mov_b32 v5, v32 :: v_dual_mov_b32 v0, 0
	;;#ASMSTART
	;;#ASMEND
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_readfirstlane_b32 s2, v5
	v_mov_b32_e32 v1, 0
	v_cmp_eq_u32_e64 s2, s2, v5
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_122
; %bb.117:
	v_mov_b32_e32 v6, 0
	s_mov_b32 s6, exec_lo
	global_load_b64 v[9:10], v6, s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	s_clause 0x1
	global_load_b64 v[0:1], v6, s[4:5] offset:40
	global_load_b64 v[7:8], v6, s[4:5]
	s_waitcnt vmcnt(1)
	v_and_b32_e32 v1, v1, v10
	v_and_b32_e32 v0, v0, v9
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v1, v1, 24
	v_mul_hi_u32 v11, v0, 24
	v_mul_lo_u32 v0, v0, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v1, v11, v1
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v7, v0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v1, vcc_lo, v8, v1, vcc_lo
	global_load_b64 v[7:8], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v6, v[7:10], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmpx_ne_u64_e64 v[0:1], v[9:10]
	s_cbranch_execz .LBB0_121
; %bb.118:                              ; %.preheader3.i.i.i62.preheader
	s_mov_b32 s7, 0
.LBB0_119:                              ; %.preheader3.i.i.i62
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	s_clause 0x1
	global_load_b64 v[7:8], v6, s[4:5] offset:40
	global_load_b64 v[11:12], v6, s[4:5]
	v_dual_mov_b32 v10, v1 :: v_dual_mov_b32 v9, v0
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_and_b32_e32 v7, v7, v9
	s_waitcnt vmcnt(0)
	v_mad_u64_u32 v[0:1], null, v7, 24, v[11:12]
	v_and_b32_e32 v11, v8, v10
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[7:8], null, v11, 24, v[1:2]
	v_mov_b32_e32 v1, v7
	global_load_b64 v[7:8], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v6, v[7:10], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[9:10]
	s_or_b32 s7, vcc_lo, s7
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s7
	s_cbranch_execnz .LBB0_119
; %bb.120:                              ; %Flow422
	s_or_b32 exec_lo, exec_lo, s7
.LBB0_121:                              ; %Flow424
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s6
.LBB0_122:                              ; %.loopexit4.i.i.i57
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s3
	v_mov_b32_e32 v6, 0
	v_readfirstlane_b32 s6, v0
	v_readfirstlane_b32 s7, v1
	s_mov_b32 s12, exec_lo
	s_clause 0x1
	global_load_b64 v[11:12], v6, s[4:5] offset:40
	global_load_b128 v[7:10], v6, s[4:5]
	s_waitcnt vmcnt(1)
	v_readfirstlane_b32 s8, v11
	v_readfirstlane_b32 s9, v12
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[8:9], s[6:7], s[8:9]
	s_mul_i32 s3, s9, 24
	s_mul_hi_u32 s10, s8, 24
	s_mul_i32 s11, s8, 24
	s_and_saveexec_b32 s13, s2
	s_cbranch_execz .LBB0_124
; %bb.123:
	v_dual_mov_b32 v11, s12 :: v_dual_mov_b32 v12, v6
	s_add_i32 s12, s10, s3
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v7, s11
	v_add_co_ci_u32_e32 v1, vcc_lo, s12, v8, vcc_lo
	v_dual_mov_b32 v13, 2 :: v_dual_mov_b32 v14, 1
	global_store_b128 v[0:1], v[11:14], off offset:8
.LBB0_124:
	s_or_b32 exec_lo, exec_lo, s13
	s_lshl_b64 s[8:9], s[8:9], 12
	v_lshlrev_b64 v[0:1], 6, v[5:6]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v5, vcc_lo, v9, s8
	v_add_co_ci_u32_e32 v9, vcc_lo, s9, v10, vcc_lo
	s_mov_b32 s12, 0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_u32 v0, vcc_lo, v5, v0
	s_mov_b32 s13, s12
	s_mov_b32 s14, s12
	s_mov_b32 s15, s12
	v_and_or_b32 v3, 0xffffff1f, v3, 32
	v_add_co_ci_u32_e32 v1, vcc_lo, v9, v1, vcc_lo
	v_mov_b32_e32 v5, v6
	v_dual_mov_b32 v9, s12 :: v_dual_mov_b32 v12, s15
	v_dual_mov_b32 v10, s13 :: v_dual_mov_b32 v11, s14
	s_clause 0x3
	global_store_b128 v[0:1], v[3:6], off
	global_store_b128 v[0:1], v[9:12], off offset:16
	global_store_b128 v[0:1], v[9:12], off offset:32
	global_store_b128 v[0:1], v[9:12], off offset:48
	s_and_saveexec_b32 s8, s2
	s_cbranch_execz .LBB0_132
; %bb.125:
	v_dual_mov_b32 v11, 0 :: v_dual_mov_b32 v12, s6
	v_mov_b32_e32 v13, s7
	s_clause 0x1
	global_load_b64 v[14:15], v11, s[4:5] offset:32 glc
	global_load_b64 v[3:4], v11, s[4:5] offset:40
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s12, v3
	v_readfirstlane_b32 s13, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[12:13], s[12:13], s[6:7]
	s_mul_i32 s9, s13, 24
	s_mul_hi_u32 s13, s12, 24
	s_mul_i32 s12, s12, 24
	s_add_i32 s13, s13, s9
	v_add_co_u32 v9, vcc_lo, v7, s12
	v_add_co_ci_u32_e32 v10, vcc_lo, s13, v8, vcc_lo
	s_mov_b32 s9, exec_lo
	global_store_b64 v[9:10], v[14:15], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v11, v[12:15], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmpx_ne_u64_e64 v[5:6], v[14:15]
	s_cbranch_execz .LBB0_128
; %bb.126:                              ; %.preheader1.i.i.i60.preheader
	s_mov_b32 s12, 0
.LBB0_127:                              ; %.preheader1.i.i.i60
                                        ; =>This Inner Loop Header: Depth=1
	v_dual_mov_b32 v3, s6 :: v_dual_mov_b32 v4, s7
	s_sleep 1
	global_store_b64 v[9:10], v[5:6], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[3:4], v11, v[3:6], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[5:6]
	v_dual_mov_b32 v6, v4 :: v_dual_mov_b32 v5, v3
	s_or_b32 s12, vcc_lo, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s12
	s_cbranch_execnz .LBB0_127
.LBB0_128:                              ; %Flow420
	s_or_b32 exec_lo, exec_lo, s9
	v_mov_b32_e32 v6, 0
	s_mov_b32 s12, exec_lo
	s_mov_b32 s9, exec_lo
	v_mbcnt_lo_u32_b32 v5, s12, 0
	global_load_b64 v[3:4], v6, s[4:5] offset:16
	v_cmpx_eq_u32_e32 0, v5
	s_cbranch_execz .LBB0_130
; %bb.129:
	s_bcnt1_i32_b32 s12, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	v_mov_b32_e32 v5, s12
	s_waitcnt vmcnt(0)
	global_atomic_add_u64 v[3:4], v[5:6], off offset:8
.LBB0_130:
	s_or_b32 exec_lo, exec_lo, s9
	s_waitcnt vmcnt(0)
	global_load_b64 v[5:6], v[3:4], off offset:16
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[5:6]
	s_cbranch_vccnz .LBB0_132
; %bb.131:
	global_load_b32 v3, v[3:4], off offset:24
	v_mov_b32_e32 v4, 0
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s9, v3
	s_waitcnt_vscnt null, 0x0
	global_store_b64 v[5:6], v[3:4], off
	s_and_b32 m0, s9, 0xff
	s_sendmsg sendmsg(MSG_INTERRUPT)
.LBB0_132:                              ; %Flow421
	s_or_b32 exec_lo, exec_lo, s8
	s_add_i32 s10, s10, s3
	v_add_co_u32 v3, vcc_lo, v7, s11
	v_add_co_ci_u32_e32 v4, vcc_lo, s10, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v3, vcc_lo, v3, 20
	v_add_co_ci_u32_e32 v4, vcc_lo, 0, v4, vcc_lo
.LBB0_133:                              ; =>This Inner Loop Header: Depth=1
	v_mov_b32_e32 v5, 1
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_135
; %bb.134:                              ;   in Loop: Header=BB0_133 Depth=1
	global_load_b32 v5, v[3:4], off glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_and_b32_e32 v5, 1, v5
.LBB0_135:                              ;   in Loop: Header=BB0_133 Depth=1
	s_or_b32 exec_lo, exec_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readfirstlane_b32 s3, v5
	s_cmp_eq_u32 s3, 0
	s_cbranch_scc1 .LBB0_137
; %bb.136:                              ;   in Loop: Header=BB0_133 Depth=1
	s_mov_b32 s3, 0
	s_sleep 1
	s_branch .LBB0_138
.LBB0_137:                              ;   in Loop: Header=BB0_133 Depth=1
	s_mov_b32 s3, -1
.LBB0_138:                              ; %Flow415
                                        ;   in Loop: Header=BB0_133 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s3
	s_cbranch_vccnz .LBB0_133
; %bb.139:
	global_load_b128 v[5:8], v[0:1], off
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_143
; %bb.140:
	v_mov_b32_e32 v3, 0
	s_clause 0x2
	global_load_b64 v[0:1], v3, s[4:5] offset:40
	global_load_b64 v[11:12], v3, s[4:5] offset:24 glc
	global_load_b64 v[9:10], v3, s[4:5]
	s_waitcnt vmcnt(2)
	v_add_co_u32 v4, vcc_lo, v0, 1
	v_add_co_ci_u32_e32 v13, vcc_lo, 0, v1, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v7, vcc_lo, v4, s6
	v_add_co_ci_u32_e32 v8, vcc_lo, s7, v13, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[7:8]
	v_dual_cndmask_b32 v8, v8, v13 :: v_dual_cndmask_b32 v7, v7, v4
	v_and_b32_e32 v1, v8, v1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v0, v7, v0
	v_mul_lo_u32 v1, v1, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v4, v0, 24
	v_mul_lo_u32 v0, v0, 24
	v_add_nc_u32_e32 v1, v4, v1
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_co_u32 v0, vcc_lo, v9, v0
	v_mov_b32_e32 v9, v11
	v_add_co_ci_u32_e32 v1, vcc_lo, v10, v1, vcc_lo
	v_mov_b32_e32 v10, v12
	global_store_b64 v[0:1], v[11:12], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[9:10], v3, v[7:10], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_ne_u64_e32 vcc_lo, v[9:10], v[11:12]
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_143
; %bb.141:                              ; %.preheader.i.i.i59.preheader
	s_mov_b32 s2, 0
.LBB0_142:                              ; %.preheader.i.i.i59
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	global_store_b64 v[0:1], v[9:10], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[11:12], v3, v[7:10], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[11:12], v[9:10]
	v_dual_mov_b32 v9, v11 :: v_dual_mov_b32 v10, v12
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_142
.LBB0_143:                              ; %__ockl_hostcall_preview.exit.i
	s_or_b32 exec_lo, exec_lo, s3
.LBB0_144:                              ; %__ockl_printf_append_string_n.exit
	s_waitcnt vmcnt(0)
	v_dual_mov_b32 v7, v32 :: v_dual_mov_b32 v0, 0
	;;#ASMSTART
	;;#ASMEND
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_readfirstlane_b32 s2, v7
	v_mov_b32_e32 v1, 0
	v_cmp_eq_u32_e64 s2, s2, v7
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_150
; %bb.145:
	v_mov_b32_e32 v3, 0
	s_mov_b32 s6, exec_lo
	global_load_b64 v[10:11], v3, s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	s_clause 0x1
	global_load_b64 v[0:1], v3, s[4:5] offset:40
	global_load_b64 v[8:9], v3, s[4:5]
	s_waitcnt vmcnt(1)
	v_and_b32_e32 v0, v0, v10
	v_and_b32_e32 v1, v1, v11
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v4, v0, 24
	v_mul_lo_u32 v1, v1, 24
	v_mul_lo_u32 v0, v0, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v1, v4, v1
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v8, v0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v1, vcc_lo, v9, v1, vcc_lo
	global_load_b64 v[8:9], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v3, v[8:11], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmpx_ne_u64_e64 v[0:1], v[10:11]
	s_cbranch_execz .LBB0_149
; %bb.146:                              ; %.preheader3.i.i.i69.preheader
	s_mov_b32 s7, 0
.LBB0_147:                              ; %.preheader3.i.i.i69
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	s_clause 0x1
	global_load_b64 v[8:9], v3, s[4:5] offset:40
	global_load_b64 v[12:13], v3, s[4:5]
	v_dual_mov_b32 v11, v1 :: v_dual_mov_b32 v10, v0
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_and_b32_e32 v4, v8, v10
	s_waitcnt vmcnt(0)
	v_mad_u64_u32 v[0:1], null, v4, 24, v[12:13]
	v_and_b32_e32 v4, v9, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[8:9], null, v4, 24, v[1:2]
	v_mov_b32_e32 v1, v8
	global_load_b64 v[8:9], v[0:1], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[0:1], v3, v[8:11], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[10:11]
	s_or_b32 s7, vcc_lo, s7
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s7
	s_cbranch_execnz .LBB0_147
; %bb.148:                              ; %Flow358
	s_or_b32 exec_lo, exec_lo, s7
.LBB0_149:                              ; %Flow360
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s6
.LBB0_150:                              ; %.loopexit4.i.i.i63
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s3
	v_mov_b32_e32 v8, 0
	v_readfirstlane_b32 s6, v0
	v_readfirstlane_b32 s7, v1
	s_mov_b32 s12, exec_lo
	s_clause 0x1
	global_load_b64 v[3:4], v8, s[4:5] offset:40
	global_load_b128 v[9:12], v8, s[4:5]
	s_waitcnt vmcnt(1)
	v_readfirstlane_b32 s8, v3
	v_readfirstlane_b32 s9, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[8:9], s[6:7], s[8:9]
	s_mul_i32 s3, s9, 24
	s_mul_hi_u32 s10, s8, 24
	s_mul_i32 s11, s8, 24
	s_and_saveexec_b32 s13, s2
	s_cbranch_execz .LBB0_152
; %bb.151:
	v_dual_mov_b32 v13, s12 :: v_dual_mov_b32 v14, v8
	s_add_i32 s12, s10, s3
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v9, s11
	v_add_co_ci_u32_e32 v1, vcc_lo, s12, v10, vcc_lo
	v_dual_mov_b32 v15, 2 :: v_dual_mov_b32 v16, 1
	global_store_b128 v[0:1], v[13:16], off offset:8
.LBB0_152:
	s_or_b32 exec_lo, exec_lo, s13
	s_lshl_b64 s[8:9], s[8:9], 12
	v_lshlrev_b64 v[0:1], 6, v[7:8]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v3, vcc_lo, v11, s8
	v_add_co_ci_u32_e32 v4, vcc_lo, s9, v12, vcc_lo
	s_mov_b32 s12, 0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_u32 v0, vcc_lo, v3, v0
	s_mov_b32 s13, s12
	s_mov_b32 s14, s12
	s_mov_b32 s15, s12
	v_and_or_b32 v5, 0xffffff1f, v5, 32
	v_add_co_ci_u32_e32 v1, vcc_lo, v4, v1, vcc_lo
	v_mov_b32_e32 v7, v34
	v_dual_mov_b32 v11, s12 :: v_dual_mov_b32 v14, s15
	v_dual_mov_b32 v12, s13 :: v_dual_mov_b32 v13, s14
	s_clause 0x3
	global_store_b128 v[0:1], v[5:8], off
	global_store_b128 v[0:1], v[11:14], off offset:16
	global_store_b128 v[0:1], v[11:14], off offset:32
	global_store_b128 v[0:1], v[11:14], off offset:48
	s_and_saveexec_b32 s8, s2
	s_cbranch_execz .LBB0_160
; %bb.153:
	v_dual_mov_b32 v11, 0 :: v_dual_mov_b32 v12, s6
	v_mov_b32_e32 v13, s7
	s_clause 0x1
	global_load_b64 v[14:15], v11, s[4:5] offset:32 glc
	global_load_b64 v[3:4], v11, s[4:5] offset:40
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s12, v3
	v_readfirstlane_b32 s13, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[12:13], s[12:13], s[6:7]
	s_mul_i32 s9, s13, 24
	s_mul_hi_u32 s13, s12, 24
	s_mul_i32 s12, s12, 24
	s_add_i32 s13, s13, s9
	v_add_co_u32 v7, vcc_lo, v9, s12
	v_add_co_ci_u32_e32 v8, vcc_lo, s13, v10, vcc_lo
	s_mov_b32 s9, exec_lo
	global_store_b64 v[7:8], v[14:15], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v11, v[12:15], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmpx_ne_u64_e64 v[5:6], v[14:15]
	s_cbranch_execz .LBB0_156
; %bb.154:                              ; %.preheader1.i.i.i67.preheader
	s_mov_b32 s12, 0
.LBB0_155:                              ; %.preheader1.i.i.i67
                                        ; =>This Inner Loop Header: Depth=1
	v_dual_mov_b32 v3, s6 :: v_dual_mov_b32 v4, s7
	s_sleep 1
	global_store_b64 v[7:8], v[5:6], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[3:4], v11, v[3:6], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[5:6]
	v_dual_mov_b32 v6, v4 :: v_dual_mov_b32 v5, v3
	s_or_b32 s12, vcc_lo, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s12
	s_cbranch_execnz .LBB0_155
.LBB0_156:                              ; %Flow356
	s_or_b32 exec_lo, exec_lo, s9
	v_mov_b32_e32 v6, 0
	s_mov_b32 s12, exec_lo
	s_mov_b32 s9, exec_lo
	v_mbcnt_lo_u32_b32 v5, s12, 0
	global_load_b64 v[3:4], v6, s[4:5] offset:16
	v_cmpx_eq_u32_e32 0, v5
	s_cbranch_execz .LBB0_158
; %bb.157:
	s_bcnt1_i32_b32 s12, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	v_mov_b32_e32 v5, s12
	s_waitcnt vmcnt(0)
	global_atomic_add_u64 v[3:4], v[5:6], off offset:8
.LBB0_158:
	s_or_b32 exec_lo, exec_lo, s9
	s_waitcnt vmcnt(0)
	global_load_b64 v[5:6], v[3:4], off offset:16
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[5:6]
	s_cbranch_vccnz .LBB0_160
; %bb.159:
	global_load_b32 v3, v[3:4], off offset:24
	v_mov_b32_e32 v4, 0
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s9, v3
	s_waitcnt_vscnt null, 0x0
	global_store_b64 v[5:6], v[3:4], off
	s_and_b32 m0, s9, 0xff
	s_sendmsg sendmsg(MSG_INTERRUPT)
.LBB0_160:                              ; %Flow357
	s_or_b32 exec_lo, exec_lo, s8
	s_add_i32 s10, s10, s3
	v_add_co_u32 v3, vcc_lo, v9, s11
	v_add_co_ci_u32_e32 v4, vcc_lo, s10, v10, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v3, vcc_lo, v3, 20
	v_add_co_ci_u32_e32 v4, vcc_lo, 0, v4, vcc_lo
.LBB0_161:                              ; =>This Inner Loop Header: Depth=1
	v_mov_b32_e32 v5, 1
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_163
; %bb.162:                              ;   in Loop: Header=BB0_161 Depth=1
	global_load_b32 v5, v[3:4], off glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_and_b32_e32 v5, 1, v5
.LBB0_163:                              ;   in Loop: Header=BB0_161 Depth=1
	s_or_b32 exec_lo, exec_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readfirstlane_b32 s3, v5
	s_cmp_eq_u32 s3, 0
	s_cbranch_scc1 .LBB0_165
; %bb.164:                              ;   in Loop: Header=BB0_161 Depth=1
	s_mov_b32 s3, 0
	s_sleep 1
	s_branch .LBB0_166
.LBB0_165:                              ;   in Loop: Header=BB0_161 Depth=1
	s_mov_b32 s3, -1
.LBB0_166:                              ; %Flow351
                                        ;   in Loop: Header=BB0_161 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s3
	s_cbranch_vccnz .LBB0_161
; %bb.167:
	global_load_b64 v[0:1], v[0:1], off
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_171
; %bb.168:
	v_mov_b32_e32 v9, 0
	s_clause 0x2
	global_load_b64 v[5:6], v9, s[4:5] offset:40
	global_load_b64 v[10:11], v9, s[4:5] offset:24 glc
	global_load_b64 v[7:8], v9, s[4:5]
	s_waitcnt vmcnt(2)
	v_add_co_u32 v12, vcc_lo, v5, 1
	v_add_co_ci_u32_e32 v13, vcc_lo, 0, v6, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v3, vcc_lo, v12, s6
	v_add_co_ci_u32_e32 v4, vcc_lo, s7, v13, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[3:4]
	v_dual_cndmask_b32 v4, v4, v13 :: v_dual_cndmask_b32 v3, v3, v12
	v_and_b32_e32 v6, v4, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v5, v3, v5
	v_mul_lo_u32 v6, v6, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v12, v5, 24
	v_mul_lo_u32 v5, v5, 24
	v_add_nc_u32_e32 v6, v12, v6
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_co_u32 v7, vcc_lo, v7, v5
	v_mov_b32_e32 v5, v10
	v_add_co_ci_u32_e32 v8, vcc_lo, v8, v6, vcc_lo
	v_mov_b32_e32 v6, v11
	global_store_b64 v[7:8], v[10:11], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v9, v[3:6], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_ne_u64_e32 vcc_lo, v[5:6], v[10:11]
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_171
; %bb.169:                              ; %.preheader.i.i.i66.preheader
	s_mov_b32 s2, 0
.LBB0_170:                              ; %.preheader.i.i.i66
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	global_store_b64 v[7:8], v[5:6], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[10:11], v9, v[3:6], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[10:11], v[5:6]
	v_dual_mov_b32 v5, v10 :: v_dual_mov_b32 v6, v11
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_170
.LBB0_171:                              ; %__ockl_printf_append_args.exit
	s_or_b32 exec_lo, exec_lo, s3
	;;#ASMSTART
	;;#ASMEND
	v_readfirstlane_b32 s2, v32
	v_mov_b32_e32 v8, 0
	v_mov_b32_e32 v9, 0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s2, v32
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_177
; %bb.172:
	v_mov_b32_e32 v3, 0
	s_mov_b32 s6, exec_lo
	global_load_b64 v[6:7], v3, s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	s_clause 0x1
	global_load_b64 v[4:5], v3, s[4:5] offset:40
	global_load_b64 v[8:9], v3, s[4:5]
	s_waitcnt vmcnt(1)
	v_and_b32_e32 v4, v4, v6
	v_and_b32_e32 v5, v5, v7
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v10, v4, 24
	v_mul_lo_u32 v5, v5, 24
	v_mul_lo_u32 v4, v4, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v5, v10, v5
	s_waitcnt vmcnt(0)
	v_add_co_u32 v4, vcc_lo, v8, v4
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v5, vcc_lo, v9, v5, vcc_lo
	global_load_b64 v[4:5], v[4:5], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[8:9], v3, v[4:7], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmpx_ne_u64_e64 v[8:9], v[6:7]
	s_cbranch_execz .LBB0_176
; %bb.173:                              ; %.preheader3.i.i.i76.preheader
	s_mov_b32 s7, 0
.LBB0_174:                              ; %.preheader3.i.i.i76
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	s_clause 0x1
	global_load_b64 v[4:5], v3, s[4:5] offset:40
	global_load_b64 v[10:11], v3, s[4:5]
	v_dual_mov_b32 v6, v8 :: v_dual_mov_b32 v7, v9
	s_waitcnt vmcnt(1)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v4, v4, v6
	v_and_b32_e32 v5, v5, v7
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[8:9], null, v4, 24, v[10:11]
	v_mov_b32_e32 v4, v9
	s_delay_alu instid0(VALU_DEP_1)
	v_mad_u64_u32 v[9:10], null, v5, 24, v[4:5]
	global_load_b64 v[4:5], v[8:9], off glc
	s_waitcnt vmcnt(0)
	global_atomic_cmpswap_b64 v[8:9], v3, v[4:7], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_cmp_eq_u64_e32 vcc_lo, v[8:9], v[6:7]
	s_or_b32 s7, vcc_lo, s7
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s7
	s_cbranch_execnz .LBB0_174
; %bb.175:                              ; %Flow344
	s_or_b32 exec_lo, exec_lo, s7
.LBB0_176:                              ; %Flow346
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s6
.LBB0_177:                              ; %.loopexit4.i.i.i70
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s3
	v_mov_b32_e32 v33, 0
	v_readfirstlane_b32 s6, v8
	v_readfirstlane_b32 s7, v9
	s_mov_b32 s12, exec_lo
	s_clause 0x1
	global_load_b64 v[10:11], v33, s[4:5] offset:40
	global_load_b128 v[4:7], v33, s[4:5]
	s_waitcnt vmcnt(1)
	v_readfirstlane_b32 s8, v10
	v_readfirstlane_b32 s9, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[8:9], s[6:7], s[8:9]
	s_mul_i32 s3, s9, 24
	s_mul_hi_u32 s10, s8, 24
	s_mul_i32 s11, s8, 24
	s_and_saveexec_b32 s13, s2
	s_cbranch_execz .LBB0_179
; %bb.178:
	v_dual_mov_b32 v8, s12 :: v_dual_mov_b32 v9, v33
	s_add_i32 s12, s10, s3
	s_waitcnt vmcnt(0)
	v_add_co_u32 v12, vcc_lo, v4, s11
	v_add_co_ci_u32_e32 v13, vcc_lo, s12, v5, vcc_lo
	v_dual_mov_b32 v10, 2 :: v_dual_mov_b32 v11, 1
	global_store_b128 v[12:13], v[8:11], off offset:8
.LBB0_179:
	s_or_b32 exec_lo, exec_lo, s13
	s_lshl_b64 s[8:9], s[8:9], 12
	v_lshlrev_b64 v[8:9], 6, v[32:33]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v3, vcc_lo, v6, s8
	v_add_co_ci_u32_e32 v6, vcc_lo, s9, v7, vcc_lo
	s_mov_b32 s12, 0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_u32 v10, vcc_lo, v3, v8
	s_mov_b32 s13, s12
	s_mov_b32 s14, s12
	s_mov_b32 s15, s12
	v_and_or_b32 v0, 0xffffff1d, v0, 34
	v_add_co_ci_u32_e32 v11, vcc_lo, v6, v9, vcc_lo
	v_dual_mov_b32 v3, v33 :: v_dual_mov_b32 v6, s12
	v_dual_mov_b32 v7, s13 :: v_dual_mov_b32 v8, s14
	v_mov_b32_e32 v9, s15
	s_clause 0x3
	global_store_b128 v[10:11], v[0:3], off
	global_store_b128 v[10:11], v[6:9], off offset:16
	global_store_b128 v[10:11], v[6:9], off offset:32
	global_store_b128 v[10:11], v[6:9], off offset:48
	s_and_saveexec_b32 s8, s2
	s_cbranch_execz .LBB0_187
; %bb.180:
	v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v8, s6
	v_mov_b32_e32 v9, s7
	s_clause 0x1
	global_load_b64 v[10:11], v3, s[4:5] offset:32 glc
	global_load_b64 v[0:1], v3, s[4:5] offset:40
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s12, v0
	v_readfirstlane_b32 s13, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b64 s[12:13], s[12:13], s[6:7]
	s_mul_i32 s9, s13, 24
	s_mul_hi_u32 s13, s12, 24
	s_mul_i32 s12, s12, 24
	s_add_i32 s13, s13, s9
	v_add_co_u32 v0, vcc_lo, v4, s12
	v_add_co_ci_u32_e32 v1, vcc_lo, s13, v5, vcc_lo
	s_mov_b32 s9, exec_lo
	global_store_b64 v[0:1], v[10:11], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[8:9], v3, v[8:11], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmpx_ne_u64_e64 v[8:9], v[10:11]
	s_cbranch_execz .LBB0_183
; %bb.181:                              ; %.preheader1.i.i.i74.preheader
	s_mov_b32 s12, 0
.LBB0_182:                              ; %.preheader1.i.i.i74
                                        ; =>This Inner Loop Header: Depth=1
	v_dual_mov_b32 v6, s6 :: v_dual_mov_b32 v7, s7
	s_sleep 1
	global_store_b64 v[0:1], v[8:9], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[6:7], v3, v[6:9], s[4:5] offset:32 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]
	v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v6
	s_or_b32 s12, vcc_lo, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s12
	s_cbranch_execnz .LBB0_182
.LBB0_183:                              ; %Flow342
	s_or_b32 exec_lo, exec_lo, s9
	v_mov_b32_e32 v7, 0
	s_mov_b32 s12, exec_lo
	s_mov_b32 s9, exec_lo
	v_mbcnt_lo_u32_b32 v3, s12, 0
	global_load_b64 v[0:1], v7, s[4:5] offset:16
	v_cmpx_eq_u32_e32 0, v3
	s_cbranch_execz .LBB0_185
; %bb.184:
	s_bcnt1_i32_b32 s12, s12
	s_delay_alu instid0(SALU_CYCLE_1)
	v_mov_b32_e32 v6, s12
	s_waitcnt vmcnt(0)
	global_atomic_add_u64 v[0:1], v[6:7], off offset:8
.LBB0_185:
	s_or_b32 exec_lo, exec_lo, s9
	s_waitcnt vmcnt(0)
	global_load_b64 v[6:7], v[0:1], off offset:16
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[6:7]
	s_cbranch_vccnz .LBB0_187
; %bb.186:
	global_load_b32 v0, v[0:1], off offset:24
	v_mov_b32_e32 v1, 0
	s_waitcnt vmcnt(0)
	v_readfirstlane_b32 s9, v0
	s_waitcnt_vscnt null, 0x0
	global_store_b64 v[6:7], v[0:1], off
	s_and_b32 m0, s9, 0xff
	s_sendmsg sendmsg(MSG_INTERRUPT)
.LBB0_187:                              ; %Flow343
	s_or_b32 exec_lo, exec_lo, s8
	s_add_i32 s10, s10, s3
	v_add_co_u32 v0, vcc_lo, v4, s11
	v_add_co_ci_u32_e32 v1, vcc_lo, s10, v5, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v0, vcc_lo, v0, 20
	v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
.LBB0_188:                              ; =>This Inner Loop Header: Depth=1
	v_mov_b32_e32 v3, 1
	s_and_saveexec_b32 s3, s2
	s_cbranch_execz .LBB0_190
; %bb.189:                              ;   in Loop: Header=BB0_188 Depth=1
	global_load_b32 v3, v[0:1], off glc
	s_waitcnt vmcnt(0)
	buffer_gl1_inv
	buffer_gl0_inv
	v_and_b32_e32 v3, 1, v3
.LBB0_190:                              ;   in Loop: Header=BB0_188 Depth=1
	s_or_b32 exec_lo, exec_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_readfirstlane_b32 s3, v3
	s_cmp_eq_u32 s3, 0
	s_cbranch_scc1 .LBB0_192
; %bb.191:                              ;   in Loop: Header=BB0_188 Depth=1
	s_mov_b32 s3, 0
	s_sleep 1
	s_branch .LBB0_193
.LBB0_192:                              ;   in Loop: Header=BB0_188 Depth=1
	s_mov_b32 s3, -1
.LBB0_193:                              ; %Flow337
                                        ;   in Loop: Header=BB0_188 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 vcc_lo, exec_lo, s3
	s_cbranch_vccnz .LBB0_188
; %bb.194:
	s_and_b32 exec_lo, exec_lo, s2
	s_cbranch_execz .LBB0_198
; %bb.195:
	v_mov_b32_e32 v7, 0
	s_clause 0x2
	global_load_b64 v[0:1], v7, s[4:5] offset:40
	global_load_b64 v[8:9], v7, s[4:5] offset:24 glc
	global_load_b64 v[5:6], v7, s[4:5]
	s_waitcnt vmcnt(2)
	v_add_co_u32 v10, vcc_lo, v0, 1
	v_add_co_ci_u32_e32 v11, vcc_lo, 0, v1, vcc_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v3, vcc_lo, v10, s6
	v_add_co_ci_u32_e32 v4, vcc_lo, s7, v11, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_cmp_eq_u64_e32 vcc_lo, 0, v[3:4]
	v_dual_cndmask_b32 v4, v4, v11 :: v_dual_cndmask_b32 v3, v3, v10
	v_and_b32_e32 v1, v4, v1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_and_b32_e32 v0, v3, v0
	v_mul_lo_u32 v1, v1, 24
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_hi_u32 v10, v0, 24
	v_mul_lo_u32 v0, v0, 24
	v_add_nc_u32_e32 v1, v10, v1
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_co_u32 v0, vcc_lo, v5, v0
	v_mov_b32_e32 v5, v8
	v_add_co_ci_u32_e32 v1, vcc_lo, v6, v1, vcc_lo
	v_mov_b32_e32 v6, v9
	global_store_b64 v[0:1], v[8:9], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[5:6], v7, v[3:6], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_ne_u64_e32 vcc_lo, v[5:6], v[8:9]
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_198
; %bb.196:                              ; %.preheader.i.i.i73.preheader
	s_mov_b32 s2, 0
.LBB0_197:                              ; %.preheader.i.i.i73
                                        ; =>This Inner Loop Header: Depth=1
	s_sleep 1
	global_store_b64 v[0:1], v[5:6], off
	s_waitcnt_vscnt null, 0x0
	global_atomic_cmpswap_b64 v[8:9], v7, v[3:6], s[4:5] offset:24 glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u64_e32 vcc_lo, v[8:9], v[5:6]
	v_dual_mov_b32 v5, v8 :: v_dual_mov_b32 v6, v9
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_197
.LBB0_198:                              ; %Flow441
	s_or_b32 exec_lo, exec_lo, s16
	v_ashrrev_i32_e32 v5, 31, v34
	v_ashrrev_i32_e32 v9, 31, v31
	s_load_b64 s[2:3], s[0:1], 0x10
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_nc_u32_e32 v0, v34, v5
	v_add_nc_u32_e32 v3, v31, v9
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v6, v0, v5
	v_xor_b32_e32 v10, v3, v9
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cvt_f32_u32_e32 v0, v6
	v_sub_nc_u32_e32 v1, 0, v6
	v_rcp_iflag_f32_e32 v0, v0
	s_waitcnt_depctr 0xfff
	v_mul_f32_e32 v0, 0x4f7ffffe, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v0, v0
	v_mul_lo_u32 v1, v1, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v1, v0, v1
	v_add_nc_u32_e32 v11, v0, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v0, v10, v11
	v_mul_lo_u32 v0, v0, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v0, v10, v0
	v_sub_nc_u32_e32 v1, v0, v6
	v_cmp_ge_u32_e32 vcc_lo, v0, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v0, v0, v1, vcc_lo
	v_sub_nc_u32_e32 v1, v0, v6
	v_cmp_ge_u32_e32 vcc_lo, v0, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v0, v0, v1, vcc_lo
	v_xor_b32_e32 v0, v0, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v0, v0, v9
	v_ashrrev_i32_e32 v1, 31, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[3:4], 3, v[0:1]
	v_cvt_f32_u32_e32 v1, v35
	v_rcp_iflag_f32_e32 v1, v1
	s_waitcnt lgkmcnt(0)
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_co_u32 v3, vcc_lo, s2, v3
	v_add_co_ci_u32_e32 v4, vcc_lo, s3, v4, vcc_lo
	global_load_b64 v[7:8], v[3:4], off
	v_sub_nc_u32_e32 v3, 0, v35
	v_mul_f32_e32 v1, 0x4f7ffffe, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v1, v1
	v_mul_lo_u32 v3, v3, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v3, v1, v3
	v_add_nc_u32_e32 v1, v1, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v1, v10, v1
	v_mul_lo_u32 v3, v1, v35
	v_add_nc_u32_e32 v4, 1, v1
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v3, v10, v3
	v_sub_nc_u32_e32 v10, v3, v35
	v_cmp_ge_u32_e32 vcc_lo, v3, v35
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v1, v1, v4, vcc_lo
	v_dual_cndmask_b32 v3, v3, v10 :: v_dual_add_nc_u32 v4, 1, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_ge_u32_e32 vcc_lo, v3, v35
	v_cndmask_b32_e32 v1, v1, v4, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v1, v1, v9
	v_sub_nc_u32_e32 v3, v1, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v1, v3, v35
	v_sub_nc_u32_e32 v1, v31, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ashrrev_i32_e32 v4, 31, v1
	v_add_nc_u32_e32 v1, v1, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v1, v1, v4
	v_xor_b32_e32 v4, v4, v5
	v_mul_hi_u32 v9, v1, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v10, v9, v6
	v_sub_nc_u32_e32 v1, v1, v10
	v_add_nc_u32_e32 v10, 1, v9
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_sub_nc_u32_e32 v11, v1, v6
	v_cmp_ge_u32_e32 vcc_lo, v1, v6
	v_cndmask_b32_e32 v9, v9, v10, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_cndmask_b32 v1, v1, v11 :: v_dual_add_nc_u32 v10, 1, v9
	v_cmp_ge_u32_e32 vcc_lo, v1, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v1, v9, v10, vcc_lo
	v_xor_b32_e32 v1, v1, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_sub_nc_u32_e32 v5, v1, v4
	v_ashrrev_i32_e32 v4, 31, v3
	v_ashrrev_i32_e32 v6, 31, v5
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[9:10], 3, v[5:6]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v6, vcc_lo, v7, v9
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v7, vcc_lo, v8, v10, vcc_lo
	v_lshlrev_b64 v[8:9], 4, v[3:4]
	flat_load_b64 v[6:7], v[6:7]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_add_co_u32 v6, vcc_lo, v6, v8
	v_add_co_ci_u32_e32 v7, vcc_lo, v7, v9, vcc_lo
	flat_load_b32 v1, v[6:7]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e32 vcc_lo, 0, v1
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB0_203
; %bb.199:
	v_add_nc_u32_e32 v1, -1, v2
	v_sub_nc_u32_e32 v4, v34, v0
	v_sub_nc_u32_e32 v6, v34, v5
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cmp_lt_i32_e32 vcc_lo, v0, v1
	v_cmp_lt_i32_e64 s2, v4, v2
	v_cmp_lt_i32_e64 s3, v5, v1
	v_sub_nc_u32_e32 v0, v34, v3
	v_cmp_lt_i32_e64 s4, v6, v2
	s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
	s_or_b32 s2, vcc_lo, s2
	v_cmp_lt_i32_e32 vcc_lo, v3, v1
	s_or_b32 s3, s3, s2
	v_cmp_lt_i32_e64 s2, v0, v2
	s_or_b32 s3, s3, s4
	s_or_b32 s3, vcc_lo, s3
	s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)
	s_or_b32 s2, s3, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_b32 exec_lo, exec_lo, s2
	s_cbranch_execz .LBB0_203
; %bb.200:
	s_mov_b32 s3, exec_lo
	s_mov_b32 s2, 0
	v_mbcnt_lo_u32_b32 v0, s3, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
	v_cmp_eq_u32_e32 vcc_lo, 0, v0
	s_and_b32 s4, exec_lo, vcc_lo
	s_mov_b32 exec_lo, s4
	s_cbranch_execz .LBB0_203
; %bb.201:
	s_load_b64 s[0:1], s[0:1], 0x0
	v_mov_b32_e32 v2, 0
	s_bcnt1_i32_b32 s3, s3
	s_delay_alu instid0(SALU_CYCLE_1)
	v_cvt_f32_ubyte0_e32 v3, s3
	s_waitcnt lgkmcnt(0)
	global_load_b32 v1, v2, s[0:1]
.LBB0_202:                              ; %atomicrmw.start
                                        ; =>This Inner Loop Header: Depth=1
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v0, v1, v3
	global_atomic_cmpswap_b32 v0, v2, v[0:1], s[0:1] glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e32 vcc_lo, v0, v1
	v_mov_b32_e32 v1, v0
	s_or_b32 s2, vcc_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB0_202
.LBB0_203:
	s_nop 0
	s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z6BPC_XXPfS_PPP4Nodeffff
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 296
		.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 36
		.amdhsa_next_free_sgpr 22
		.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	_Z6BPC_XXPfS_PPP4Nodeffff, .Lfunc_end0-_Z6BPC_XXPfS_PPP4Nodeffff
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 9164
; NumSgprs: 24
; NumVgprs: 36
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 2
; VGPRBlocks: 4
; NumSGPRsForWavesPerEU: 24
; NumVGPRsForWavesPerEU: 36
; Occupancy: 16
; WaveLimiterHint : 1
; 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
	.protected	_Z12make_histoXXPfS_PPP4Nodeffff ; -- Begin function _Z12make_histoXXPfS_PPP4Nodeffff
	.globl	_Z12make_histoXXPfS_PPP4Nodeffff
	.p2align	8
	.type	_Z12make_histoXXPfS_PPP4Nodeffff,@function
_Z12make_histoXXPfS_PPP4Nodeffff:       ; @_Z12make_histoXXPfS_PPP4Nodeffff
; %bb.0:
	s_clause 0x1
	s_load_b128 s[8:11], s[0:1], 0x18
	s_load_b32 s2, s[0:1], 0x34
	s_waitcnt lgkmcnt(0)
	v_div_scale_f32 v1, null, s10, s10, s11
	s_and_b32 s2, s2, 0xffff
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f32_e32 v2, v1
	s_waitcnt_depctr 0xfff
	v_fma_f32 v3, -v1, v2, 1.0
	v_fmac_f32_e32 v2, v3, v2
	v_div_scale_f32 v3, vcc_lo, s11, s10, s11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v4, v3, v2
	v_fma_f32 v5, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v4, v5, v2
	v_fma_f32 v1, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f32 v1, v1, v2, v4
	v_div_fixup_f32 v1, v1, s10, s11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ceil_f32_e32 v1, v1
	v_cvt_i32_f32_e32 v3, v1
	v_mad_u64_u32 v[1:2], null, s15, s2, v[0:1]
	s_mov_b32 s2, exec_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v7, v3, v3
	v_readfirstlane_b32 s18, v3
	v_mul_lo_u32 v0, v7, v3
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v1, v0
	s_cbranch_execz .LBB1_116
; %bb.1:
	s_delay_alu instid0(VALU_DEP_3)
	s_ashr_i32 s2, s18, 31
	v_ashrrev_i32_e32 v6, 31, v1
	s_add_i32 s3, s18, s2
	s_load_b64 s[6:7], s[0:1], 0x10
	s_xor_b32 s3, s3, s2
	v_sub_nc_u32_e32 v9, 0, v7
	v_cvt_f32_u32_e32 v0, s3
	s_sub_i32 s4, 0, s3
	v_add_nc_u32_e32 v3, v1, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rcp_iflag_f32_e32 v0, v0
	v_xor_b32_e32 v8, v3, v6
	s_waitcnt_depctr 0xfff
	v_mul_f32_e32 v0, 0x4f7ffffe, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v0, v0
	v_mul_lo_u32 v2, s4, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v2, v0, v2
	v_add_nc_u32_e32 v0, v0, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v2, v8, v0
	v_mul_lo_u32 v2, v2, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v2, v8, v2
	v_subrev_nc_u32_e32 v3, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v2, v2, v3, vcc_lo
	v_subrev_nc_u32_e32 v3, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v2, v2, v3, vcc_lo
	v_xor_b32_e32 v2, v2, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_sub_nc_u32_e32 v3, v2, v6
	v_cvt_f32_u32_e32 v2, v7
	v_ashrrev_i32_e32 v4, 31, v3
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rcp_iflag_f32_e32 v2, v2
	v_lshlrev_b64 v[4:5], 3, v[3:4]
	s_waitcnt_depctr 0xfff
	v_mul_f32_e32 v2, 0x4f7ffffe, v2
	s_waitcnt lgkmcnt(0)
	v_add_co_u32 v4, vcc_lo, s6, v4
	v_add_co_ci_u32_e32 v5, vcc_lo, s7, v5, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v2, v2
	global_load_b64 v[11:12], v[4:5], off
	v_mul_lo_u32 v9, v9, v2
	v_mul_hi_u32 v9, v2, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_nc_u32_e32 v2, v2, v9
	v_mul_hi_u32 v2, v8, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v9, v2, v7
	v_sub_nc_u32_e32 v8, v8, v9
	v_add_nc_u32_e32 v9, 1, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_sub_nc_u32_e32 v10, v8, v7
	v_cmp_ge_u32_e32 vcc_lo, v8, v7
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v8, v8, v10, vcc_lo
	v_add_nc_u32_e32 v9, 1, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_ge_u32_e32 vcc_lo, v8, v7
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v2, v2, v6
	v_sub_nc_u32_e32 v6, v2, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v2, v6, v7
	v_sub_nc_u32_e32 v2, v1, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ashrrev_i32_e32 v7, 31, v2
	v_add_nc_u32_e32 v2, v2, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v2, v2, v7
	v_xor_b32_e32 v7, s2, v7
	v_mul_hi_u32 v0, v2, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v8, v0, s3
	v_sub_nc_u32_e32 v2, v2, v8
	v_add_nc_u32_e32 v8, 1, v0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_subrev_nc_u32_e32 v9, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	v_cndmask_b32_e32 v0, v0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	v_add_nc_u32_e32 v8, 1, v0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	v_cndmask_b32_e32 v0, v0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v0, v0, v7
	v_sub_nc_u32_e32 v8, v0, v7
	v_ashrrev_i32_e32 v7, 31, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ashrrev_i32_e32 v9, 31, v8
	v_lshlrev_b64 v[9:10], 3, v[8:9]
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v11, vcc_lo, v11, v9
	v_add_co_ci_u32_e32 v12, vcc_lo, v12, v10, vcc_lo
	global_load_b64 v[13:14], v[11:12], off
	v_lshlrev_b64 v[11:12], 4, v[6:7]
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v13, vcc_lo, v13, v11
	v_add_co_ci_u32_e32 v14, vcc_lo, v14, v12, vcc_lo
	global_load_b32 v19, v[13:14], off
	s_waitcnt vmcnt(0)
	v_cmp_lt_i32_e32 vcc_lo, 0, v19
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB1_116
; %bb.2:
	global_load_b64 v[13:14], v[13:14], off offset:8
	s_load_b128 s[12:15], s[0:1], 0x0
	v_and_b32_e32 v0, 1, v1
	v_mul_f32_e64 v7, s9, s9
	v_cmp_ne_u32_e32 vcc_lo, 1, v19
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s0, 1, v0
	s_and_saveexec_b32 s1, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s3, exec_lo, s1
	s_cbranch_execz .LBB1_12
; %bb.3:
	s_and_saveexec_b32 s11, vcc_lo
	s_cbranch_execz .LBB1_11
; %bb.4:                                ; %.lr.ph47.i270
	v_add_f32_e32 v20, 1.0, v7
	v_add_nc_u32_e32 v21, -2, v19
	s_mov_b32 s5, 0
	s_mov_b32 s19, 0
	s_mov_b32 s17, 0
.LBB1_5:                                ; %.lr.ph.preheader.i271
                                        ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_6 Depth 2
                                        ;       Child Loop BB1_8 Depth 3
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
	s_mov_b32 s16, s17
	s_mov_b32 s17, s5
	s_lshl_b64 s[20:21], s[16:17], 4
	s_add_i32 s17, s16, 1
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, s1, v13, s20
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v1, s1, s21, v14, s1
	s_mov_b32 s20, s5
	s_mov_b32 s4, s17
	global_load_b96 v[0:2], v[0:1], off
.LBB1_6:                                ; %.lr.ph.i273
                                        ;   Parent Loop BB1_5 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_8 Depth 3
	s_lshl_b64 s[22:23], s[4:5], 4
	s_mov_b32 s21, exec_lo
	v_add_co_u32 v15, s1, v13, s22
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v16, s1, s23, v14, s1
	global_load_b96 v[15:17], v[15:16], off
	s_waitcnt vmcnt(0)
	v_sub_f32_e32 v18, v15, v0
	v_sub_f32_e32 v16, v16, v1
	v_dual_mul_f32 v15, v16, v16 :: v_dual_sub_f32 v16, v17, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v15, v18, v18
	v_fmac_f32_e32 v15, v16, v16
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v15, v20
	s_cbranch_execz .LBB1_9
; %bb.7:                                ;   in Loop: Header=BB1_6 Depth=2
	v_mul_f32_e32 v16, 0x4f800000, v15
	v_cmp_gt_f32_e64 s1, 0xf800000, v15
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v15, v15, v16, s1
	v_sqrt_f32_e32 v16, v15
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v17, -1, v16
	v_add_nc_u32_e32 v18, 1, v16
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v22, -v17, v16, v15
	v_fma_f32 v23, -v18, v16, v15
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s2, 0, v22
	v_cndmask_b32_e64 v16, v16, v17, s2
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s2, 0, v23
	v_cndmask_b32_e64 v16, v16, v18, s2
	s_mov_b32 s2, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v17, 0x37800000, v16
	v_cndmask_b32_e64 v16, v16, v17, s1
	v_cmp_class_f32_e64 s1, v15, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v15, v16, v15, s1
	v_mul_f32_e32 v15, s8, v15
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v15, v15
	v_ashrrev_i32_e32 v16, 31, v15
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[15:16], 2, v[15:16]
	s_waitcnt lgkmcnt(0)
	v_add_co_u32 v15, s1, s14, v15
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v16, s1, s15, v16, s1
	global_load_b32 v18, v[15:16], off
.LBB1_8:                                ; %atomicrmw.start375
                                        ;   Parent Loop BB1_5 Depth=1
                                        ;     Parent Loop BB1_6 Depth=2
                                        ; =>    This Inner Loop Header: Depth=3
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v17, 2.0, v18
	global_atomic_cmpswap_b32 v17, v[15:16], v[17:18], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s1, v17, v18
	v_mov_b32_e32 v18, v17
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s2, s1, s2
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB1_8
.LBB1_9:                                ; %Flow508
                                        ;   in Loop: Header=BB1_6 Depth=2
	s_or_b32 exec_lo, exec_lo, s21
	s_add_i32 s4, s4, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_i32_e64 s1, s4, v19
	s_or_b32 s20, s1, s20
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s20
	s_cbranch_execnz .LBB1_6
; %bb.10:                               ; %.loopexit.i275
                                        ;   in Loop: Header=BB1_5 Depth=1
	s_or_b32 exec_lo, exec_lo, s20
	v_cmp_eq_u32_e64 s1, s16, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s19, s1, s19
	s_and_not1_b32 exec_lo, exec_lo, s19
	s_cbranch_execnz .LBB1_5
.LBB1_11:                               ; %Flow511
	s_or_b32 exec_lo, exec_lo, s11
                                        ; implicit-def: $vgpr19
                                        ; implicit-def: $vgpr13_vgpr14
.LBB1_12:                               ; %Flow518
	s_and_not1_saveexec_b32 s11, s3
	s_cbranch_execz .LBB1_22
; %bb.13:
	s_and_saveexec_b32 s16, vcc_lo
	s_cbranch_execz .LBB1_21
; %bb.14:                               ; %.lr.ph47.i
	v_add_f32_e32 v20, 1.0, v7
	v_add_nc_u32_e32 v21, -2, v19
	s_mov_b32 s3, 0
	s_mov_b32 s17, 0
	s_mov_b32 s5, 0
.LBB1_15:                               ; %.lr.ph.preheader.i
                                        ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_16 Depth 2
                                        ;       Child Loop BB1_18 Depth 3
	s_delay_alu instid0(SALU_CYCLE_1)
	s_mov_b32 s4, s5
	s_mov_b32 s5, s3
	s_mov_b32 s19, s3
	s_lshl_b64 s[20:21], s[4:5], 4
	s_add_i32 s5, s4, 1
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v13, s20
	v_add_co_ci_u32_e32 v1, vcc_lo, s21, v14, vcc_lo
	s_mov_b32 s2, s5
	global_load_b96 v[0:2], v[0:1], off
.LBB1_16:                               ; %.lr.ph.i
                                        ;   Parent Loop BB1_15 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_18 Depth 3
	s_lshl_b64 s[20:21], s[2:3], 4
	s_delay_alu instid0(SALU_CYCLE_1)
	v_add_co_u32 v15, vcc_lo, v13, s20
	v_add_co_ci_u32_e32 v16, vcc_lo, s21, v14, vcc_lo
	s_mov_b32 s20, exec_lo
	global_load_b96 v[15:17], v[15:16], off
	s_waitcnt vmcnt(0)
	v_sub_f32_e32 v18, v15, v0
	v_sub_f32_e32 v16, v16, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_mul_f32 v15, v16, v16 :: v_dual_sub_f32 v16, v17, v2
	v_fmac_f32_e32 v15, v18, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v15, v16, v16
	v_cmpx_le_f32_e32 v15, v20
	s_cbranch_execz .LBB1_19
; %bb.17:                               ;   in Loop: Header=BB1_16 Depth=2
	v_mul_f32_e32 v16, 0x4f800000, v15
	v_cmp_gt_f32_e32 vcc_lo, 0xf800000, v15
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v15, v15, v16, vcc_lo
	v_sqrt_f32_e32 v16, v15
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v17, -1, v16
	v_add_nc_u32_e32 v18, 1, v16
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v22, -v17, v16, v15
	v_fma_f32 v23, -v18, v16, v15
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s1, 0, v22
	v_cndmask_b32_e64 v16, v16, v17, s1
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s1, 0, v23
	v_cndmask_b32_e64 v16, v16, v18, s1
	s_mov_b32 s1, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v17, 0x37800000, v16
	v_cndmask_b32_e32 v16, v16, v17, vcc_lo
	v_cmp_class_f32_e64 vcc_lo, v15, 0x260
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v15, v16, v15, vcc_lo
	v_mul_f32_e32 v15, s8, v15
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v15, v15
	v_ashrrev_i32_e32 v16, 31, v15
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[15:16], 2, v[15:16]
	s_waitcnt lgkmcnt(0)
	v_add_co_u32 v15, vcc_lo, s12, v15
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v16, vcc_lo, s13, v16, vcc_lo
	global_load_b32 v18, v[15:16], off
.LBB1_18:                               ; %atomicrmw.start
                                        ;   Parent Loop BB1_15 Depth=1
                                        ;     Parent Loop BB1_16 Depth=2
                                        ; =>    This Inner Loop Header: Depth=3
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v17, 2.0, v18
	global_atomic_cmpswap_b32 v17, v[15:16], v[17:18], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e32 vcc_lo, v17, v18
	v_mov_b32_e32 v18, v17
	s_or_b32 s1, vcc_lo, s1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s1
	s_cbranch_execnz .LBB1_18
.LBB1_19:                               ; %Flow514
                                        ;   in Loop: Header=BB1_16 Depth=2
	s_or_b32 exec_lo, exec_lo, s20
	s_add_i32 s2, s2, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
	v_cmp_ge_i32_e32 vcc_lo, s2, v19
	s_or_b32 s19, vcc_lo, s19
	s_and_not1_b32 exec_lo, exec_lo, s19
	s_cbranch_execnz .LBB1_16
; %bb.20:                               ; %.loopexit.i
                                        ;   in Loop: Header=BB1_15 Depth=1
	s_or_b32 exec_lo, exec_lo, s19
	v_cmp_eq_u32_e32 vcc_lo, s4, v21
	s_or_b32 s17, vcc_lo, s17
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s17
	s_cbranch_execnz .LBB1_15
.LBB1_21:                               ; %Flow517
	s_or_b32 exec_lo, exec_lo, s16
.LBB1_22:                               ; %_Z17count_distances11PfP8PointW3Diffi.exit
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 exec_lo, exec_lo, s11
	v_cvt_f64_f32_e32 v[0:1], s9
	s_waitcnt vmcnt(0)
	v_cvt_f64_f32_e32 v[13:14], s10
	s_mov_b32 s2, 0xe8584caa
	s_mov_b32 s3, 0x3ffbb67a
	v_add_f32_e32 v31, 1.0, v7
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[0:1], v[13:14], s[2:3], v[0:1]
	v_div_scale_f64 v[15:16], null, v[13:14], v[13:14], v[0:1]
	v_div_scale_f64 v[21:22], vcc_lo, v[0:1], v[13:14], v[0:1]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[17:18], v[15:16]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[19:20], -v[15:16], v[17:18], 1.0
	v_fma_f64 v[17:18], v[17:18], v[19:20], v[17:18]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[19:20], -v[15:16], v[17:18], 1.0
	v_fma_f64 v[17:18], v[17:18], v[19:20], v[17:18]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[19:20], v[21:22], v[17:18]
	v_fma_f64 v[15:16], -v[15:16], v[19:20], v[21:22]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[15:16], v[15:16], v[17:18], v[19:20]
	v_div_fixup_f64 v[0:1], v[15:16], v[13:14], v[0:1]
	v_add_nc_u32_e32 v13, 1, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_cmp_gt_i32_e32 vcc_lo, s18, v13
	v_cvt_f32_f64_e32 v0, v[0:1]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ceil_f32_e32 v0, v0
	v_cvt_i32_f32_e32 v30, v0
	v_sub_nc_u32_e32 v0, v13, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s1, v0, v30
	s_and_b32 s1, vcc_lo, s1
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_saveexec_b32 s9, s1
	s_cbranch_execz .LBB1_47
; %bb.23:                               ; %.lr.ph
	s_mov_b32 s5, 0
	s_mov_b32 s16, 0
.LBB1_24:                               ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_27 Depth 2
                                        ;       Child Loop BB1_29 Depth 3
                                        ;         Child Loop BB1_31 Depth 4
                                        ;     Child Loop BB1_38 Depth 2
                                        ;       Child Loop BB1_40 Depth 3
                                        ;         Child Loop BB1_42 Depth 4
	global_load_b64 v[0:1], v[4:5], off
	s_waitcnt vmcnt(1) lgkmcnt(0)
	v_ashrrev_i32_e32 v14, 31, v13
	s_delay_alu instid0(VALU_DEP_1)
	v_lshlrev_b64 v[14:15], 4, v[13:14]
	s_waitcnt vmcnt(0)
	v_add_co_u32 v0, vcc_lo, v0, v9
	v_add_co_ci_u32_e32 v1, vcc_lo, v1, v10, vcc_lo
	flat_load_b64 v[0:1], v[0:1]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_add_co_u32 v14, vcc_lo, v0, v14
	v_add_co_ci_u32_e32 v15, vcc_lo, v1, v15, vcc_lo
	v_add_co_u32 v0, vcc_lo, v0, v11
	v_add_co_ci_u32_e32 v1, vcc_lo, v1, v12, vcc_lo
	s_clause 0x3
	flat_load_b32 v22, v[14:15]
	flat_load_b32 v7, v[0:1]
	flat_load_b64 v[16:17], v[0:1] offset:8
	flat_load_b64 v[14:15], v[14:15] offset:8
	s_waitcnt vmcnt(2) lgkmcnt(2)
	v_cmp_lt_i32_e32 vcc_lo, 0, v7
	s_and_saveexec_b32 s1, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s17, exec_lo, s1
	s_cbranch_execz .LBB1_35
; %bb.25:                               ;   in Loop: Header=BB1_24 Depth=1
	s_and_saveexec_b32 s19, vcc_lo
	s_cbranch_execz .LBB1_34
; %bb.26:                               ; %.lr.ph47.i281
                                        ;   in Loop: Header=BB1_24 Depth=1
	v_cmp_lt_i32_e64 s1, 0, v22
	s_mov_b32 s20, 0
	s_mov_b32 s10, 0
.LBB1_27:                               ;   Parent Loop BB1_24 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_29 Depth 3
                                        ;         Child Loop BB1_31 Depth 4
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s21, s1
	s_cbranch_execz .LBB1_33
; %bb.28:                               ; %.lr.ph.i285.preheader
                                        ;   in Loop: Header=BB1_27 Depth=2
	s_mov_b32 s11, s5
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	s_lshl_b64 s[2:3], s[10:11], 4
	s_mov_b32 s11, 0
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v0, s2, v16, s2
	v_add_co_ci_u32_e64 v1, s2, s3, v17, s2
	s_mov_b32 s4, s11
	flat_load_b96 v[0:2], v[0:1]
.LBB1_29:                               ; %.lr.ph.i285
                                        ;   Parent Loop BB1_24 Depth=1
                                        ;     Parent Loop BB1_27 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB1_31 Depth 4
	s_lshl_b64 s[2:3], s[4:5], 4
	s_mov_b32 s22, exec_lo
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v18, s2, v14, s2
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s2, s3, v15, s2
	flat_load_b96 v[18:20], v[18:19]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v19, v19, v1
	v_dual_sub_f32 v21, v18, v0 :: v_dual_mul_f32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v19, v20, v2 :: v_dual_fmac_f32 v18, v21, v21
	v_fmac_f32_e32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v18, v31
	s_cbranch_execz .LBB1_32
; %bb.30:                               ;   in Loop: Header=BB1_29 Depth=3
	v_mul_f32_e32 v19, 0x4f800000, v18
	v_cmp_gt_f32_e64 s2, 0xf800000, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v18, v19, s2
	v_sqrt_f32_e32 v19, v18
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v20, -1, v19
	v_add_nc_u32_e32 v21, 1, v19
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v23, -v20, v19, v18
	v_fma_f32 v24, -v21, v19, v18
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s3, 0, v23
	v_cndmask_b32_e64 v19, v19, v20, s3
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s3, 0, v24
	v_cndmask_b32_e64 v19, v19, v21, s3
	s_mov_b32 s3, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v20, 0x37800000, v19
	v_cndmask_b32_e64 v19, v19, v20, s2
	v_cmp_class_f32_e64 s2, v18, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v19, v18, s2
	v_mul_f32_e32 v18, s8, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v18, v18
	v_ashrrev_i32_e32 v19, 31, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[18:19], 2, v[18:19]
	v_add_co_u32 v18, s2, s14, v18
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s2, s15, v19, s2
	global_load_b32 v21, v[18:19], off
.LBB1_31:                               ; %atomicrmw.start387
                                        ;   Parent Loop BB1_24 Depth=1
                                        ;     Parent Loop BB1_27 Depth=2
                                        ;       Parent Loop BB1_29 Depth=3
                                        ; =>      This Inner Loop Header: Depth=4
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v20, 2.0, v21
	global_atomic_cmpswap_b32 v20, v[18:19], v[20:21], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s2, v20, v21
	v_mov_b32_e32 v21, v20
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s3, s2, s3
	s_and_not1_b32 exec_lo, exec_lo, s3
	s_cbranch_execnz .LBB1_31
.LBB1_32:                               ; %Flow491
                                        ;   in Loop: Header=BB1_29 Depth=3
	s_or_b32 exec_lo, exec_lo, s22
	s_add_i32 s4, s4, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s4, v22
	s_or_b32 s11, s2, s11
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s11
	s_cbranch_execnz .LBB1_29
.LBB1_33:                               ; %Flow493
                                        ;   in Loop: Header=BB1_27 Depth=2
	s_or_b32 exec_lo, exec_lo, s21
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s10, v7
	s_or_b32 s20, s2, s20
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s20
	s_cbranch_execnz .LBB1_27
.LBB1_34:                               ; %Flow495
                                        ;   in Loop: Header=BB1_24 Depth=1
	s_or_b32 exec_lo, exec_lo, s19
                                        ; implicit-def: $vgpr7
                                        ; implicit-def: $vgpr22
                                        ; implicit-def: $vgpr14_vgpr15
                                        ; implicit-def: $vgpr16_vgpr17
.LBB1_35:                               ; %Flow503
                                        ;   in Loop: Header=BB1_24 Depth=1
	s_and_not1_saveexec_b32 s3, s17
	s_cbranch_execz .LBB1_46
; %bb.36:                               ;   in Loop: Header=BB1_24 Depth=1
	s_and_saveexec_b32 s17, vcc_lo
	s_cbranch_execz .LBB1_45
; %bb.37:                               ; %.lr.ph47.i278
                                        ;   in Loop: Header=BB1_24 Depth=1
	v_cmp_lt_i32_e32 vcc_lo, 0, v22
	s_mov_b32 s19, 0
	s_mov_b32 s10, 0
.LBB1_38:                               ;   Parent Loop BB1_24 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_40 Depth 3
                                        ;         Child Loop BB1_42 Depth 4
	s_and_saveexec_b32 s20, vcc_lo
	s_cbranch_execz .LBB1_44
; %bb.39:                               ; %.lr.ph.i279.preheader
                                        ;   in Loop: Header=BB1_38 Depth=2
	s_mov_b32 s11, s5
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	s_lshl_b64 s[22:23], s[10:11], 4
	s_mov_b32 s11, 0
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v0, s1, v16, s22
	v_add_co_ci_u32_e64 v1, s1, s23, v17, s1
	s_mov_b32 s4, s11
	flat_load_b96 v[0:2], v[0:1]
.LBB1_40:                               ; %.lr.ph.i279
                                        ;   Parent Loop BB1_24 Depth=1
                                        ;     Parent Loop BB1_38 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB1_42 Depth 4
	s_lshl_b64 s[22:23], s[4:5], 4
	s_mov_b32 s21, exec_lo
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v18, s1, v14, s22
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s1, s23, v15, s1
	flat_load_b96 v[18:20], v[18:19]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v19, v19, v1
	v_dual_sub_f32 v21, v18, v0 :: v_dual_mul_f32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v19, v20, v2 :: v_dual_fmac_f32 v18, v21, v21
	v_fmac_f32_e32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v18, v31
	s_cbranch_execz .LBB1_43
; %bb.41:                               ;   in Loop: Header=BB1_40 Depth=3
	v_mul_f32_e32 v19, 0x4f800000, v18
	v_cmp_gt_f32_e64 s1, 0xf800000, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v18, v19, s1
	v_sqrt_f32_e32 v19, v18
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v20, -1, v19
	v_add_nc_u32_e32 v21, 1, v19
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v23, -v20, v19, v18
	v_fma_f32 v24, -v21, v19, v18
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s2, 0, v23
	v_cndmask_b32_e64 v19, v19, v20, s2
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s2, 0, v24
	v_cndmask_b32_e64 v19, v19, v21, s2
	s_mov_b32 s2, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v20, 0x37800000, v19
	v_cndmask_b32_e64 v19, v19, v20, s1
	v_cmp_class_f32_e64 s1, v18, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v19, v18, s1
	v_mul_f32_e32 v18, s8, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v18, v18
	v_ashrrev_i32_e32 v19, 31, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[18:19], 2, v[18:19]
	v_add_co_u32 v18, s1, s12, v18
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s1, s13, v19, s1
	global_load_b32 v21, v[18:19], off
.LBB1_42:                               ; %atomicrmw.start381
                                        ;   Parent Loop BB1_24 Depth=1
                                        ;     Parent Loop BB1_38 Depth=2
                                        ;       Parent Loop BB1_40 Depth=3
                                        ; =>      This Inner Loop Header: Depth=4
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v20, 2.0, v21
	global_atomic_cmpswap_b32 v20, v[18:19], v[20:21], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s1, v20, v21
	v_mov_b32_e32 v21, v20
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s2, s1, s2
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB1_42
.LBB1_43:                               ; %Flow498
                                        ;   in Loop: Header=BB1_40 Depth=3
	s_or_b32 exec_lo, exec_lo, s21
	s_add_i32 s4, s4, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s1, s4, v22
	s_or_b32 s11, s1, s11
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s11
	s_cbranch_execnz .LBB1_40
.LBB1_44:                               ; %Flow500
                                        ;   in Loop: Header=BB1_38 Depth=2
	s_or_b32 exec_lo, exec_lo, s20
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s1, s10, v7
	s_or_b32 s19, s1, s19
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s19
	s_cbranch_execnz .LBB1_38
.LBB1_45:                               ; %Flow502
                                        ;   in Loop: Header=BB1_24 Depth=1
	s_or_b32 exec_lo, exec_lo, s17
.LBB1_46:                               ; %_Z17count_distances12PfP8PointW3DiS1_iffi.exit
                                        ;   in Loop: Header=BB1_24 Depth=1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	s_or_b32 exec_lo, exec_lo, s3
	v_add_nc_u32_e32 v13, 1, v13
	v_sub_nc_u32_e32 v0, v13, v3
	v_cmp_le_i32_e32 vcc_lo, s18, v13
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_gt_i32_e64 s1, v0, v30
	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 s16, s1, s16
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s16
	s_cbranch_execnz .LBB1_24
.LBB1_47:                               ; %Flow505
	s_or_b32 exec_lo, exec_lo, s9
	v_mul_lo_u32 v32, v30, v30
	v_add_nc_u32_e32 v13, 1, v8
	v_sub_nc_u32_e32 v25, v6, v30
	s_mov_b32 s9, exec_lo
	s_delay_alu instid0(VALU_DEP_2)
	v_cmpx_gt_i32_e64 s18, v13
	s_cbranch_execz .LBB1_79
; %bb.48:                               ; %.lr.ph350
	v_cmp_gt_i32_e32 vcc_lo, v6, v30
	s_mov_b32 s11, 0
	s_mov_b32 s19, 0
                                        ; implicit-def: $sgpr20
	v_cndmask_b32_e32 v26, 0, v25, vcc_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmp_gt_i32_e32 vcc_lo, s18, v26
.LBB1_49:                               ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_52 Depth 2
                                        ;       Child Loop BB1_57 Depth 3
                                        ;         Child Loop BB1_59 Depth 4
                                        ;           Child Loop BB1_61 Depth 5
                                        ;       Child Loop BB1_68 Depth 3
                                        ;         Child Loop BB1_70 Depth 4
                                        ;           Child Loop BB1_72 Depth 5
	v_sub_nc_u32_e32 v0, v13, v8
	s_or_b32 s20, s20, exec_lo
	s_mov_b32 s21, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_i32_e64 v0, v30
	s_cbranch_execz .LBB1_78
; %bb.50:                               ;   in Loop: Header=BB1_49 Depth=1
	s_and_saveexec_b32 s22, vcc_lo
	s_cbranch_execz .LBB1_77
; %bb.51:                               ; %.lr.ph346
                                        ;   in Loop: Header=BB1_49 Depth=1
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_ashrrev_i32_e32 v14, 31, v13
	v_mul_lo_u32 v7, v0, v0
	v_mov_b32_e32 v16, v26
	s_mov_b32 s23, 0
                                        ; implicit-def: $sgpr24
	s_delay_alu instid0(VALU_DEP_3)
	v_lshlrev_b64 v[14:15], 3, v[13:14]
.LBB1_52:                               ;   Parent Loop BB1_49 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_57 Depth 3
                                        ;         Child Loop BB1_59 Depth 4
                                        ;           Child Loop BB1_61 Depth 5
                                        ;       Child Loop BB1_68 Depth 3
                                        ;         Child Loop BB1_70 Depth 4
                                        ;           Child Loop BB1_72 Depth 5
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v0, v16, v6
	s_or_b32 s24, s24, exec_lo
	s_mov_b32 s25, exec_lo
	v_cmpx_le_i32_e64 v0, v30
	s_cbranch_execz .LBB1_76
; %bb.53:                               ;   in Loop: Header=BB1_52 Depth=2
	v_mad_u64_u32 v[1:2], null, v0, v0, v[7:8]
	s_mov_b32 s26, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_u32_e64 v1, v32
	s_cbranch_execz .LBB1_75
; %bb.54:                               ;   in Loop: Header=BB1_52 Depth=2
	global_load_b64 v[0:1], v[4:5], off
	s_waitcnt vmcnt(0) lgkmcnt(2)
	v_add_co_u32 v17, s1, v0, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v18, s1, v1, v10, s1
	v_add_co_u32 v0, s1, v0, v14
	v_add_co_ci_u32_e64 v1, s1, v1, v15, s1
	s_waitcnt lgkmcnt(1)
	s_clause 0x1
	flat_load_b64 v[18:19], v[17:18]
	flat_load_b64 v[0:1], v[0:1]
	v_ashrrev_i32_e32 v17, 31, v16
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[20:21], 4, v[16:17]
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v17, s1, v18, v11
	v_add_co_ci_u32_e64 v18, s1, v19, v12, s1
	s_waitcnt vmcnt(0) lgkmcnt(0)
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_co_u32 v0, s1, v0, v20
	v_add_co_ci_u32_e64 v1, s1, v1, v21, s1
	s_clause 0x1
	flat_load_b32 v27, v[17:18]
	flat_load_b64 v[17:18], v[17:18] offset:8
	s_clause 0x1
	flat_load_b64 v[19:20], v[0:1] offset:8
	flat_load_b32 v28, v[0:1]
	s_waitcnt vmcnt(3) lgkmcnt(3)
	v_cmp_lt_i32_e64 s1, 0, v27
	s_and_saveexec_b32 s2, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s5, exec_lo, s2
	s_cbranch_execz .LBB1_65
; %bb.55:                               ;   in Loop: Header=BB1_52 Depth=2
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s27, s1
	s_cbranch_execz .LBB1_64
; %bb.56:                               ; %.lr.ph47.i297
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s2, 0, v28
	s_mov_b32 s28, 0
	s_mov_b32 s16, 0
.LBB1_57:                               ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB1_59 Depth 4
                                        ;           Child Loop BB1_61 Depth 5
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s29, s2
	s_cbranch_execz .LBB1_63
; %bb.58:                               ; %.lr.ph.i301.preheader
                                        ;   in Loop: Header=BB1_57 Depth=3
	s_mov_b32 s17, s11
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[30:31], s[16:17], 4
	s_mov_b32 s17, 0
	v_add_co_u32 v0, s3, v17, s30
	v_add_co_ci_u32_e64 v1, s3, s31, v18, s3
	s_mov_b32 s10, s17
	flat_load_b96 v[0:2], v[0:1]
.LBB1_59:                               ; %.lr.ph.i301
                                        ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ;       Parent Loop BB1_57 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB1_61 Depth 5
	s_lshl_b64 s[30:31], s[10:11], 4
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_co_u32 v21, s3, v19, s30
	v_add_co_ci_u32_e64 v22, s3, s31, v20, s3
	s_mov_b32 s30, exec_lo
	flat_load_b96 v[21:23], v[21:22]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v24, v21, v0
	v_sub_f32_e32 v22, v22, v1
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v21, v22, v22
	v_dual_sub_f32 v22, v23, v2 :: v_dual_fmac_f32 v21, v24, v24
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v21, v22, v22
	v_cmpx_le_f32_e32 v21, v31
	s_cbranch_execz .LBB1_62
; %bb.60:                               ;   in Loop: Header=BB1_59 Depth=4
	v_mul_f32_e32 v22, 0x4f800000, v21
	v_cmp_gt_f32_e64 s3, 0xf800000, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v21, v21, v22, s3
	v_sqrt_f32_e32 v22, v21
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v23, -1, v22
	v_add_nc_u32_e32 v24, 1, v22
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v29, -v23, v22, v21
	v_fma_f32 v33, -v24, v22, v21
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s4, 0, v29
	v_cndmask_b32_e64 v22, v22, v23, s4
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s4, 0, v33
	v_cndmask_b32_e64 v22, v22, v24, s4
	s_mov_b32 s4, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v23, 0x37800000, v22
	v_cndmask_b32_e64 v22, v22, v23, s3
	v_cmp_class_f32_e64 s3, v21, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v21, v22, v21, s3
	v_mul_f32_e32 v21, s8, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v21, v21
	v_ashrrev_i32_e32 v22, 31, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[21:22], 2, v[21:22]
	v_add_co_u32 v21, s3, s14, v21
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v22, s3, s15, v22, s3
	global_load_b32 v24, v[21:22], off
.LBB1_61:                               ; %atomicrmw.start399
                                        ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ;       Parent Loop BB1_57 Depth=3
                                        ;         Parent Loop BB1_59 Depth=4
                                        ; =>        This Inner Loop Header: Depth=5
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v23, 2.0, v24
	global_atomic_cmpswap_b32 v23, v[21:22], v[23:24], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s3, v23, v24
	v_mov_b32_e32 v24, v23
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s4, s3, s4
	s_and_not1_b32 exec_lo, exec_lo, s4
	s_cbranch_execnz .LBB1_61
.LBB1_62:                               ; %Flow467
                                        ;   in Loop: Header=BB1_59 Depth=4
	s_or_b32 exec_lo, exec_lo, s30
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s3, s10, v28
	s_or_b32 s17, s3, s17
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s17
	s_cbranch_execnz .LBB1_59
.LBB1_63:                               ; %Flow469
                                        ;   in Loop: Header=BB1_57 Depth=3
	s_or_b32 exec_lo, exec_lo, s29
	s_add_i32 s16, s16, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s3, s16, v27
	s_or_b32 s28, s3, s28
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s28
	s_cbranch_execnz .LBB1_57
.LBB1_64:                               ; %Flow471
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_or_b32 exec_lo, exec_lo, s27
                                        ; implicit-def: $vgpr27
                                        ; implicit-def: $vgpr28
                                        ; implicit-def: $vgpr19_vgpr20
                                        ; implicit-def: $vgpr17_vgpr18
.LBB1_65:                               ; %Flow479
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_and_not1_saveexec_b32 s2, s5
	s_cbranch_execz .LBB1_75
; %bb.66:                               ;   in Loop: Header=BB1_52 Depth=2
	s_and_b32 exec_lo, exec_lo, s1
	s_cbranch_execz .LBB1_75
; %bb.67:                               ; %.lr.ph47.i289
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s1, 0, v28
	s_mov_b32 s16, 0
	s_mov_b32 s4, 0
.LBB1_68:                               ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB1_70 Depth 4
                                        ;           Child Loop BB1_72 Depth 5
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s17, s1
	s_cbranch_execz .LBB1_74
; %bb.69:                               ; %.lr.ph.i293.preheader
                                        ;   in Loop: Header=BB1_68 Depth=3
	s_mov_b32 s5, s11
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[2:3], s[4:5], 4
	s_mov_b32 s5, 0
	v_add_co_u32 v0, s2, v17, s2
	v_add_co_ci_u32_e64 v1, s2, s3, v18, s2
	s_mov_b32 s10, s5
	flat_load_b96 v[0:2], v[0:1]
.LBB1_70:                               ; %.lr.ph.i293
                                        ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ;       Parent Loop BB1_68 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB1_72 Depth 5
	s_lshl_b64 s[2:3], s[10:11], 4
	s_mov_b32 s27, exec_lo
	v_add_co_u32 v21, s2, v19, s2
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v22, s2, s3, v20, s2
	flat_load_b96 v[21:23], v[21:22]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v24, v21, v0
	v_sub_f32_e32 v22, v22, v1
	v_mul_f32_e32 v21, v22, v22
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v22, v23, v2 :: v_dual_fmac_f32 v21, v24, v24
	v_fmac_f32_e32 v21, v22, v22
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v21, v31
	s_cbranch_execz .LBB1_73
; %bb.71:                               ;   in Loop: Header=BB1_70 Depth=4
	v_mul_f32_e32 v22, 0x4f800000, v21
	v_cmp_gt_f32_e64 s2, 0xf800000, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v21, v21, v22, s2
	v_sqrt_f32_e32 v22, v21
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v23, -1, v22
	v_add_nc_u32_e32 v24, 1, v22
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v29, -v23, v22, v21
	v_fma_f32 v33, -v24, v22, v21
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s3, 0, v29
	v_cndmask_b32_e64 v22, v22, v23, s3
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s3, 0, v33
	v_cndmask_b32_e64 v22, v22, v24, s3
	s_mov_b32 s3, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v23, 0x37800000, v22
	v_cndmask_b32_e64 v22, v22, v23, s2
	v_cmp_class_f32_e64 s2, v21, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v21, v22, v21, s2
	v_mul_f32_e32 v21, s8, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v21, v21
	v_ashrrev_i32_e32 v22, 31, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[21:22], 2, v[21:22]
	v_add_co_u32 v21, s2, s12, v21
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v22, s2, s13, v22, s2
	global_load_b32 v24, v[21:22], off
.LBB1_72:                               ; %atomicrmw.start393
                                        ;   Parent Loop BB1_49 Depth=1
                                        ;     Parent Loop BB1_52 Depth=2
                                        ;       Parent Loop BB1_68 Depth=3
                                        ;         Parent Loop BB1_70 Depth=4
                                        ; =>        This Inner Loop Header: Depth=5
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v23, 2.0, v24
	global_atomic_cmpswap_b32 v23, v[21:22], v[23:24], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s2, v23, v24
	v_mov_b32_e32 v24, v23
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s3, s2, s3
	s_and_not1_b32 exec_lo, exec_lo, s3
	s_cbranch_execnz .LBB1_72
.LBB1_73:                               ; %Flow474
                                        ;   in Loop: Header=BB1_70 Depth=4
	s_or_b32 exec_lo, exec_lo, s27
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s10, v28
	s_or_b32 s5, s2, s5
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s5
	s_cbranch_execnz .LBB1_70
.LBB1_74:                               ; %Flow476
                                        ;   in Loop: Header=BB1_68 Depth=3
	s_or_b32 exec_lo, exec_lo, s17
	s_add_i32 s4, s4, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s4, v27
	s_or_b32 s16, s2, s16
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s16
	s_cbranch_execnz .LBB1_68
.LBB1_75:                               ; %_Z17count_distances12PfP8PointW3DiS1_iffi.exit296
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_or_b32 exec_lo, exec_lo, s26
	v_add_nc_u32_e32 v16, 1, v16
	s_and_not1_b32 s2, s24, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s1, s18, v16
	s_and_b32 s1, s1, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 s24, s2, s1
.LBB1_76:                               ; %Flow482
                                        ;   in Loop: Header=BB1_52 Depth=2
	s_or_b32 exec_lo, exec_lo, s25
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s1, exec_lo, s24
	s_or_b32 s23, s1, s23
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s23
	s_cbranch_execnz .LBB1_52
.LBB1_77:                               ; %Flow484
                                        ;   in Loop: Header=BB1_49 Depth=1
	s_or_b32 exec_lo, exec_lo, s22
	v_add_nc_u32_e32 v13, 1, v13
	s_and_not1_b32 s2, s20, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s1, s18, v13
	s_and_b32 s1, s1, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 s20, s2, s1
.LBB1_78:                               ; %Flow486
                                        ;   in Loop: Header=BB1_49 Depth=1
	s_or_b32 exec_lo, exec_lo, s21
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s1, exec_lo, s20
	s_or_b32 s19, s1, s19
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s19
	s_cbranch_execnz .LBB1_49
.LBB1_79:                               ; %Flow488
	s_or_b32 exec_lo, exec_lo, s9
	v_add_nc_u32_e32 v13, 1, v3
	s_delay_alu instid0(VALU_DEP_1)
	v_cmp_gt_i32_e32 vcc_lo, s18, v13
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB1_116
; %bb.80:                               ; %.lr.ph359
	v_sub_nc_u32_e32 v0, v8, v30
	v_cmp_gt_i32_e32 vcc_lo, v8, v30
	s_mov_b32 s11, 0
	s_mov_b32 s9, 0
                                        ; implicit-def: $sgpr19
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)
	v_cndmask_b32_e32 v33, 0, v0, vcc_lo
	v_cmp_gt_i32_e32 vcc_lo, v6, v30
	v_cndmask_b32_e32 v34, 0, v25, vcc_lo
	v_cmp_gt_i32_e32 vcc_lo, s18, v33
	s_delay_alu instid0(VALU_DEP_2)
	v_cmp_gt_i32_e64 s1, s18, v34
.LBB1_81:                               ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_84 Depth 2
                                        ;       Child Loop BB1_87 Depth 3
                                        ;         Child Loop BB1_92 Depth 4
                                        ;           Child Loop BB1_94 Depth 5
                                        ;             Child Loop BB1_96 Depth 6
                                        ;         Child Loop BB1_103 Depth 4
                                        ;           Child Loop BB1_105 Depth 5
                                        ;             Child Loop BB1_107 Depth 6
	v_sub_nc_u32_e32 v0, v13, v3
	s_or_b32 s19, s19, exec_lo
	s_mov_b32 s20, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v0, v30
	s_cbranch_execz .LBB1_115
; %bb.82:                               ;   in Loop: Header=BB1_81 Depth=1
	s_and_saveexec_b32 s21, vcc_lo
	s_cbranch_execz .LBB1_114
; %bb.83:                               ; %.lr.ph355
                                        ;   in Loop: Header=BB1_81 Depth=1
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_ashrrev_i32_e32 v14, 31, v13
	v_mul_lo_u32 v7, v0, v0
	v_mov_b32_e32 v16, v33
	s_mov_b32 s22, 0
                                        ; implicit-def: $sgpr23
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[1:2], 3, v[13:14]
	v_add_co_u32 v14, s2, s6, v1
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v15, s2, s7, v2, s2
.LBB1_84:                               ;   Parent Loop BB1_81 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB1_87 Depth 3
                                        ;         Child Loop BB1_92 Depth 4
                                        ;           Child Loop BB1_94 Depth 5
                                        ;             Child Loop BB1_96 Depth 6
                                        ;         Child Loop BB1_103 Depth 4
                                        ;           Child Loop BB1_105 Depth 5
                                        ;             Child Loop BB1_107 Depth 6
	v_sub_nc_u32_e32 v0, v16, v8
	s_or_b32 s23, s23, exec_lo
	s_mov_b32 s24, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v0, v30
	s_cbranch_execz .LBB1_113
; %bb.85:                               ;   in Loop: Header=BB1_84 Depth=2
	s_and_saveexec_b32 s25, s1
	s_cbranch_execz .LBB1_112
; %bb.86:                               ; %.lr.ph352
                                        ;   in Loop: Header=BB1_84 Depth=2
	v_ashrrev_i32_e32 v17, 31, v16
	v_mad_u64_u32 v[18:19], null, v0, v0, v[7:8]
	v_mov_b32_e32 v21, v34
	s_mov_b32 s26, 0
	s_delay_alu instid0(VALU_DEP_3)
	v_lshlrev_b64 v[19:20], 3, v[16:17]
                                        ; implicit-def: $sgpr27
.LBB1_87:                               ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB1_92 Depth 4
                                        ;           Child Loop BB1_94 Depth 5
                                        ;             Child Loop BB1_96 Depth 6
                                        ;         Child Loop BB1_103 Depth 4
                                        ;           Child Loop BB1_105 Depth 5
                                        ;             Child Loop BB1_107 Depth 6
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v0, v21, v6
	s_or_b32 s27, s27, exec_lo
	s_mov_b32 s28, exec_lo
	v_cmpx_lt_i32_e64 v0, v30
	s_cbranch_execz .LBB1_111
; %bb.88:                               ;   in Loop: Header=BB1_87 Depth=3
	v_mad_u64_u32 v[1:2], null, v0, v0, v[18:19]
	s_mov_b32 s29, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_u32_e64 v1, v32
	s_cbranch_execz .LBB1_110
; %bb.89:                               ;   in Loop: Header=BB1_87 Depth=3
	global_load_b64 v[0:1], v[4:5], off
	s_waitcnt lgkmcnt(2)
	global_load_b64 v[22:23], v[14:15], off
	s_waitcnt vmcnt(1)
	v_add_co_u32 v0, s2, v0, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v1, s2, v1, v10, s2
	s_waitcnt vmcnt(0)
	v_add_co_u32 v22, s2, v22, v19
	v_add_co_ci_u32_e64 v23, s2, v23, v20, s2
	flat_load_b64 v[0:1], v[0:1]
	s_waitcnt lgkmcnt(2)
	flat_load_b64 v[23:24], v[22:23]
	v_ashrrev_i32_e32 v22, 31, v21
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[25:26], 4, v[21:22]
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v0, s2, v0, v11
	v_add_co_ci_u32_e64 v1, s2, v1, v12, s2
	s_waitcnt vmcnt(0) lgkmcnt(0)
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_co_u32 v27, s2, v23, v25
	v_add_co_ci_u32_e64 v28, s2, v24, v26, s2
	s_clause 0x1
	flat_load_b32 v17, v[0:1]
	flat_load_b64 v[22:23], v[0:1] offset:8
	s_clause 0x1
	flat_load_b64 v[24:25], v[27:28] offset:8
	flat_load_b32 v35, v[27:28]
	s_waitcnt vmcnt(3) lgkmcnt(3)
	v_cmp_lt_i32_e64 s2, 0, v17
	s_and_saveexec_b32 s3, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s30, exec_lo, s3
	s_cbranch_execz .LBB1_100
; %bb.90:                               ;   in Loop: Header=BB1_87 Depth=3
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s31, s2
	s_cbranch_execz .LBB1_99
; %bb.91:                               ; %.lr.ph47.i313
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s3, 0, v35
	s_mov_b32 s33, 0
	s_mov_b32 s16, 0
.LBB1_92:                               ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB1_94 Depth 5
                                        ;             Child Loop BB1_96 Depth 6
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s34, s3
	s_cbranch_execz .LBB1_98
; %bb.93:                               ; %.lr.ph.i317.preheader
                                        ;   in Loop: Header=BB1_92 Depth=4
	s_mov_b32 s17, s11
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[4:5], s[16:17], 4
	s_mov_b32 s17, 0
	v_add_co_u32 v0, s4, v22, s4
	v_add_co_ci_u32_e64 v1, s4, s5, v23, s4
	s_mov_b32 s10, s17
	flat_load_b96 v[0:2], v[0:1]
.LBB1_94:                               ; %.lr.ph.i317
                                        ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ;         Parent Loop BB1_92 Depth=4
                                        ; =>        This Loop Header: Depth=5
                                        ;             Child Loop BB1_96 Depth 6
	s_lshl_b64 s[4:5], s[10:11], 4
	s_mov_b32 s35, exec_lo
	v_add_co_u32 v26, s4, v24, s4
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v27, s4, s5, v25, s4
	flat_load_b96 v[26:28], v[26:27]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v27, v27, v1
	v_dual_sub_f32 v29, v26, v0 :: v_dual_mul_f32 v26, v27, v27
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v27, v28, v2 :: v_dual_fmac_f32 v26, v29, v29
	v_fmac_f32_e32 v26, v27, v27
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v26, v31
	s_cbranch_execz .LBB1_97
; %bb.95:                               ;   in Loop: Header=BB1_94 Depth=5
	v_mul_f32_e32 v27, 0x4f800000, v26
	v_cmp_gt_f32_e64 s4, 0xf800000, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v26, v26, v27, s4
	v_sqrt_f32_e32 v27, v26
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v28, -1, v27
	v_add_nc_u32_e32 v29, 1, v27
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v36, -v28, v27, v26
	v_fma_f32 v37, -v29, v27, v26
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s5, 0, v36
	v_cndmask_b32_e64 v27, v27, v28, s5
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s5, 0, v37
	v_cndmask_b32_e64 v27, v27, v29, s5
	s_mov_b32 s5, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v28, 0x37800000, v27
	v_cndmask_b32_e64 v27, v27, v28, s4
	v_cmp_class_f32_e64 s4, v26, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v26, v27, v26, s4
	v_mul_f32_e32 v26, s8, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v26, v26
	v_ashrrev_i32_e32 v27, 31, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[26:27], 2, v[26:27]
	v_add_co_u32 v26, s4, s14, v26
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v27, s4, s15, v27, s4
	global_load_b32 v29, v[26:27], off
.LBB1_96:                               ; %atomicrmw.start411
                                        ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ;         Parent Loop BB1_92 Depth=4
                                        ;           Parent Loop BB1_94 Depth=5
                                        ; =>          This Inner Loop Header: Depth=6
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v28, 2.0, v29
	global_atomic_cmpswap_b32 v28, v[26:27], v[28:29], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s4, v28, v29
	v_mov_b32_e32 v29, v28
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s5, s4, s5
	s_and_not1_b32 exec_lo, exec_lo, s5
	s_cbranch_execnz .LBB1_96
.LBB1_97:                               ; %Flow440
                                        ;   in Loop: Header=BB1_94 Depth=5
	s_or_b32 exec_lo, exec_lo, s35
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s4, s10, v35
	s_or_b32 s17, s4, s17
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s17
	s_cbranch_execnz .LBB1_94
.LBB1_98:                               ; %Flow442
                                        ;   in Loop: Header=BB1_92 Depth=4
	s_or_b32 exec_lo, exec_lo, s34
	s_add_i32 s16, s16, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s4, s16, v17
	s_or_b32 s33, s4, s33
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s33
	s_cbranch_execnz .LBB1_92
.LBB1_99:                               ; %Flow444
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_or_b32 exec_lo, exec_lo, s31
                                        ; implicit-def: $vgpr17
                                        ; implicit-def: $vgpr35
                                        ; implicit-def: $vgpr24_vgpr25
                                        ; implicit-def: $vgpr22_vgpr23
.LBB1_100:                              ; %Flow451
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_and_not1_saveexec_b32 s3, s30
	s_cbranch_execz .LBB1_110
; %bb.101:                              ;   in Loop: Header=BB1_87 Depth=3
	s_and_b32 exec_lo, exec_lo, s2
	s_cbranch_execz .LBB1_110
; %bb.102:                              ; %.lr.ph47.i305
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s2, 0, v35
	s_mov_b32 s5, 0
	s_mov_b32 s16, 0
.LBB1_103:                              ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB1_105 Depth 5
                                        ;             Child Loop BB1_107 Depth 6
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s30, s2
	s_cbranch_execz .LBB1_109
; %bb.104:                              ; %.lr.ph.i309.preheader
                                        ;   in Loop: Header=BB1_103 Depth=4
	s_mov_b32 s17, s11
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[34:35], s[16:17], 4
	s_mov_b32 s17, 0
	v_add_co_u32 v0, s3, v22, s34
	v_add_co_ci_u32_e64 v1, s3, s35, v23, s3
	s_mov_b32 s10, s17
	flat_load_b96 v[0:2], v[0:1]
.LBB1_105:                              ; %.lr.ph.i309
                                        ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ;         Parent Loop BB1_103 Depth=4
                                        ; =>        This Loop Header: Depth=5
                                        ;             Child Loop BB1_107 Depth 6
	s_lshl_b64 s[34:35], s[10:11], 4
	s_mov_b32 s31, exec_lo
	v_add_co_u32 v26, s3, v24, s34
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v27, s3, s35, v25, s3
	flat_load_b96 v[26:28], v[26:27]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v27, v27, v1
	v_dual_sub_f32 v29, v26, v0 :: v_dual_mul_f32 v26, v27, v27
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v27, v28, v2 :: v_dual_fmac_f32 v26, v29, v29
	v_fmac_f32_e32 v26, v27, v27
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v26, v31
	s_cbranch_execz .LBB1_108
; %bb.106:                              ;   in Loop: Header=BB1_105 Depth=5
	v_mul_f32_e32 v27, 0x4f800000, v26
	v_cmp_gt_f32_e64 s3, 0xf800000, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v26, v26, v27, s3
	v_sqrt_f32_e32 v27, v26
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v28, -1, v27
	v_add_nc_u32_e32 v29, 1, v27
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v36, -v28, v27, v26
	v_fma_f32 v37, -v29, v27, v26
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s4, 0, v36
	v_cndmask_b32_e64 v27, v27, v28, s4
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s4, 0, v37
	v_cndmask_b32_e64 v27, v27, v29, s4
	s_mov_b32 s4, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v28, 0x37800000, v27
	v_cndmask_b32_e64 v27, v27, v28, s3
	v_cmp_class_f32_e64 s3, v26, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v26, v27, v26, s3
	v_mul_f32_e32 v26, s8, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v26, v26
	v_ashrrev_i32_e32 v27, 31, v26
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[26:27], 2, v[26:27]
	v_add_co_u32 v26, s3, s12, v26
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v27, s3, s13, v27, s3
	global_load_b32 v29, v[26:27], off
.LBB1_107:                              ; %atomicrmw.start405
                                        ;   Parent Loop BB1_81 Depth=1
                                        ;     Parent Loop BB1_84 Depth=2
                                        ;       Parent Loop BB1_87 Depth=3
                                        ;         Parent Loop BB1_103 Depth=4
                                        ;           Parent Loop BB1_105 Depth=5
                                        ; =>          This Inner Loop Header: Depth=6
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v28, 2.0, v29
	global_atomic_cmpswap_b32 v28, v[26:27], v[28:29], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s3, v28, v29
	v_mov_b32_e32 v29, v28
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s4, s3, s4
	s_and_not1_b32 exec_lo, exec_lo, s4
	s_cbranch_execnz .LBB1_107
.LBB1_108:                              ; %Flow446
                                        ;   in Loop: Header=BB1_105 Depth=5
	s_or_b32 exec_lo, exec_lo, s31
	s_add_i32 s10, s10, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s3, s10, v35
	s_or_b32 s17, s3, s17
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s17
	s_cbranch_execnz .LBB1_105
.LBB1_109:                              ; %Flow448
                                        ;   in Loop: Header=BB1_103 Depth=4
	s_or_b32 exec_lo, exec_lo, s30
	s_add_i32 s16, s16, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s3, s16, v17
	s_or_b32 s5, s3, s5
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s5
	s_cbranch_execnz .LBB1_103
.LBB1_110:                              ; %_Z17count_distances12PfP8PointW3DiS1_iffi.exit312
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_or_b32 exec_lo, exec_lo, s29
	v_add_nc_u32_e32 v21, 1, v21
	s_and_not1_b32 s3, s27, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s2, s18, v21
	s_and_b32 s2, s2, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 s27, s3, s2
.LBB1_111:                              ; %Flow454
                                        ;   in Loop: Header=BB1_87 Depth=3
	s_or_b32 exec_lo, exec_lo, s28
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s2, exec_lo, s27
	s_or_b32 s26, s2, s26
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s26
	s_cbranch_execnz .LBB1_87
.LBB1_112:                              ; %Flow456
                                        ;   in Loop: Header=BB1_84 Depth=2
	s_or_b32 exec_lo, exec_lo, s25
	v_add_nc_u32_e32 v16, 1, v16
	s_and_not1_b32 s3, s23, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s2, s18, v16
	s_and_b32 s2, s2, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 s23, s3, s2
.LBB1_113:                              ; %Flow458
                                        ;   in Loop: Header=BB1_84 Depth=2
	s_or_b32 exec_lo, exec_lo, s24
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s2, exec_lo, s23
	s_or_b32 s22, s2, s22
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s22
	s_cbranch_execnz .LBB1_84
.LBB1_114:                              ; %Flow460
                                        ;   in Loop: Header=BB1_81 Depth=1
	s_or_b32 exec_lo, exec_lo, s21
	v_add_nc_u32_e32 v13, 1, v13
	s_and_not1_b32 s3, s19, exec_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_le_i32_e64 s2, s18, v13
	s_and_b32 s2, s2, exec_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_or_b32 s19, s3, s2
.LBB1_115:                              ; %Flow462
                                        ;   in Loop: Header=BB1_81 Depth=1
	s_or_b32 exec_lo, exec_lo, s20
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s2, exec_lo, s19
	s_or_b32 s9, s2, s9
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s9
	s_cbranch_execnz .LBB1_81
.LBB1_116:                              ; %.critedge6
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z12make_histoXXPfS_PPP4Nodeffff
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 296
		.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 38
		.amdhsa_next_free_sgpr 36
		.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_end1:
	.size	_Z12make_histoXXPfS_PPP4Nodeffff, .Lfunc_end1-_Z12make_histoXXPfS_PPP4Nodeffff
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 6436
; NumSgprs: 38
; NumVgprs: 38
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 4
; VGPRBlocks: 4
; NumSGPRsForWavesPerEU: 38
; NumVGPRsForWavesPerEU: 38
; Occupancy: 16
; WaveLimiterHint : 1
; 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
	.protected	_Z12make_histoXYPfS_PPP4NodeS3_ffff ; -- Begin function _Z12make_histoXYPfS_PPP4NodeS3_ffff
	.globl	_Z12make_histoXYPfS_PPP4NodeS3_ffff
	.p2align	8
	.type	_Z12make_histoXYPfS_PPP4NodeS3_ffff,@function
_Z12make_histoXYPfS_PPP4NodeS3_ffff:    ; @_Z12make_histoXYPfS_PPP4NodeS3_ffff
; %bb.0:
	s_clause 0x1
	s_load_b128 s[16:19], s[0:1], 0x20
	s_load_b32 s2, s[0:1], 0x3c
	s_waitcnt lgkmcnt(0)
	v_div_scale_f32 v1, null, s18, s18, s19
	s_and_b32 s2, s2, 0xffff
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f32_e32 v2, v1
	s_waitcnt_depctr 0xfff
	v_fma_f32 v3, -v1, v2, 1.0
	v_fmac_f32_e32 v2, v3, v2
	v_div_scale_f32 v3, vcc_lo, s19, s18, s19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v4, v3, v2
	v_fma_f32 v5, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v4, v5, v2
	v_fma_f32 v1, -v1, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f32 v1, v1, v2, v4
	v_div_fixup_f32 v1, v1, s18, s19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ceil_f32_e32 v1, v1
	v_cvt_i32_f32_e32 v3, v1
	v_mad_u64_u32 v[1:2], null, s15, s2, v[0:1]
	s_mov_b32 s2, exec_lo
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_mul_lo_u32 v7, v3, v3
	v_readfirstlane_b32 s26, v3
	v_mul_lo_u32 v0, v7, v3
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v1, v0
	s_cbranch_execz .LBB2_37
; %bb.1:
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)
	s_ashr_i32 s2, s26, 31
	v_ashrrev_i32_e32 v6, 31, v1
	s_add_i32 s3, s26, s2
	v_sub_nc_u32_e32 v9, 0, v7
	s_xor_b32 s3, s3, s2
	v_cvt_f32_u32_e32 v0, s3
	s_sub_i32 s4, 0, s3
	v_add_nc_u32_e32 v3, v1, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rcp_iflag_f32_e32 v0, v0
	v_xor_b32_e32 v8, v3, v6
	s_waitcnt_depctr 0xfff
	v_mul_f32_e32 v0, 0x4f7ffffe, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v0, v0
	v_mul_lo_u32 v2, s4, v0
	s_load_b256 s[4:11], s[0:1], 0x0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v2, v0, v2
	v_add_nc_u32_e32 v0, v0, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_hi_u32 v2, v8, v0
	v_mul_lo_u32 v2, v2, s3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v2, v8, v2
	v_subrev_nc_u32_e32 v3, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v2, v2, v3, vcc_lo
	v_subrev_nc_u32_e32 v3, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v2, v2, v3, vcc_lo
	v_xor_b32_e32 v2, v2, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_sub_nc_u32_e32 v3, v2, v6
	v_cvt_f32_u32_e32 v2, v7
	v_ashrrev_i32_e32 v4, 31, v3
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_rcp_iflag_f32_e32 v2, v2
	v_lshlrev_b64 v[4:5], 3, v[3:4]
	s_waitcnt_depctr 0xfff
	v_mul_f32_e32 v2, 0x4f7ffffe, v2
	s_waitcnt lgkmcnt(0)
	v_add_co_u32 v4, vcc_lo, s8, v4
	v_add_co_ci_u32_e32 v5, vcc_lo, s9, v5, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_cvt_u32_f32_e32 v2, v2
	global_load_b64 v[11:12], v[4:5], off
	v_mul_lo_u32 v9, v9, v2
	v_mul_hi_u32 v9, v2, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_add_nc_u32_e32 v2, v2, v9
	v_mul_hi_u32 v2, v8, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v9, v2, v7
	v_sub_nc_u32_e32 v8, v8, v9
	v_add_nc_u32_e32 v9, 1, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_sub_nc_u32_e32 v10, v8, v7
	v_cmp_ge_u32_e32 vcc_lo, v8, v7
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v8, v8, v10, vcc_lo
	v_add_nc_u32_e32 v9, 1, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_ge_u32_e32 vcc_lo, v8, v7
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v2, v2, v6
	v_sub_nc_u32_e32 v6, v2, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v2, v6, v7
	v_sub_nc_u32_e32 v2, v1, v2
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ashrrev_i32_e32 v7, 31, v2
	v_add_nc_u32_e32 v2, v2, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_xor_b32_e32 v2, v2, v7
	v_xor_b32_e32 v7, s2, v7
	v_mul_hi_u32 v0, v2, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_lo_u32 v8, v0, s3
	v_sub_nc_u32_e32 v2, v2, v8
	v_add_nc_u32_e32 v8, 1, v0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_subrev_nc_u32_e32 v9, s3, v2
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	v_cndmask_b32_e32 v0, v0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cndmask_b32_e32 v2, v2, v9, vcc_lo
	v_add_nc_u32_e32 v8, 1, v0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_le_u32_e32 vcc_lo, s3, v2
	v_cndmask_b32_e32 v0, v0, v8, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_xor_b32_e32 v0, v0, v7
	v_sub_nc_u32_e32 v8, v0, v7
	v_ashrrev_i32_e32 v7, 31, v6
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_ashrrev_i32_e32 v9, 31, v8
	v_lshlrev_b64 v[9:10], 3, v[8:9]
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v11, vcc_lo, v11, v9
	v_add_co_ci_u32_e32 v12, vcc_lo, v12, v10, vcc_lo
	global_load_b64 v[13:14], v[11:12], off
	v_lshlrev_b64 v[11:12], 4, v[6:7]
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v13, vcc_lo, v13, v11
	v_add_co_ci_u32_e32 v14, vcc_lo, v14, v12, vcc_lo
	global_load_b32 v0, v[13:14], off
	s_waitcnt vmcnt(0)
	v_cmp_lt_i32_e32 vcc_lo, 0, v0
	s_and_b32 exec_lo, exec_lo, vcc_lo
	s_cbranch_execz .LBB2_37
; %bb.2:
	s_cmp_lt_i32 s26, 1
	s_cbranch_scc1 .LBB2_37
; %bb.3:                                ; %.lr.ph130
	v_cvt_f64_f32_e32 v[13:14], s17
	v_cvt_f64_f32_e32 v[15:16], s18
	s_mov_b32 s0, 0xe8584caa
	s_mov_b32 s1, 0x3ffbb67a
	s_mov_b32 s9, 0
                                        ; implicit-def: $sgpr27
	v_mov_b32_e32 v25, 0
	s_mov_b32 s12, s9
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[13:14], v[15:16], s[0:1], v[13:14]
	v_div_scale_f64 v[17:18], null, v[15:16], v[15:16], v[13:14]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[19:20], v[17:18]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[21:22], -v[17:18], v[19:20], 1.0
	v_fma_f64 v[19:20], v[19:20], v[21:22], v[19:20]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[21:22], -v[17:18], v[19:20], 1.0
	v_fma_f64 v[19:20], v[19:20], v[21:22], v[19:20]
	v_div_scale_f64 v[21:22], vcc_lo, v[13:14], v[15:16], v[13:14]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[23:24], v[21:22], v[19:20]
	v_fma_f64 v[17:18], -v[17:18], v[23:24], v[21:22]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)
	v_div_fmas_f64 v[17:18], v[17:18], v[19:20], v[23:24]
	v_fma_f32 v24, s17, s17, 1.0
	s_mov_b32 s17, 0
	v_div_fixup_f64 v[13:14], v[17:18], v[15:16], v[13:14]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_f32_f64_e32 v0, v[13:14]
	v_ceil_f32_e32 v0, v0
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cvt_i32_f32_e32 v22, v0
	v_and_b32_e32 v0, 1, v1
	v_mul_lo_u32 v23, v22, v22
	s_delay_alu instid0(VALU_DEP_2)
	v_cmp_eq_u32_e32 vcc_lo, 1, v0
.LBB2_4:                                ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB2_6 Depth 2
                                        ;       Child Loop BB2_8 Depth 3
                                        ;         Child Loop BB2_13 Depth 4
                                        ;           Child Loop BB2_15 Depth 5
                                        ;             Child Loop BB2_17 Depth 6
                                        ;         Child Loop BB2_24 Depth 4
                                        ;           Child Loop BB2_26 Depth 5
                                        ;             Child Loop BB2_28 Depth 6
	v_sub_nc_u32_e32 v0, s12, v3
	s_or_b32 s27, s27, exec_lo
	s_mov_b32 s28, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v0, v22
	s_cbranch_execz .LBB2_36
; %bb.5:                                ; %.lr.ph127
                                        ;   in Loop: Header=BB2_4 Depth=1
	v_mul_lo_u32 v7, v0, v0
	s_mov_b32 s13, s9
	s_mov_b32 s18, 0
	s_lshl_b64 s[0:1], s[12:13], 3
	s_mov_b32 s13, 0
	s_add_u32 s14, s10, s0
	s_addc_u32 s15, s11, s1
                                        ; implicit-def: $sgpr29
.LBB2_6:                                ;   Parent Loop BB2_4 Depth=1
                                        ; =>  This Loop Header: Depth=2
                                        ;       Child Loop BB2_8 Depth 3
                                        ;         Child Loop BB2_13 Depth 4
                                        ;           Child Loop BB2_15 Depth 5
                                        ;             Child Loop BB2_17 Depth 6
                                        ;         Child Loop BB2_24 Depth 4
                                        ;           Child Loop BB2_26 Depth 5
                                        ;             Child Loop BB2_28 Depth 6
	v_sub_nc_u32_e32 v0, s18, v8
	s_or_b32 s29, s29, exec_lo
	s_mov_b32 s30, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_lt_i32_e64 v0, v22
	s_cbranch_execz .LBB2_34
; %bb.7:                                ; %.lr.ph
                                        ;   in Loop: Header=BB2_6 Depth=2
	s_waitcnt vmcnt(2) lgkmcnt(2)
	v_mad_u64_u32 v[13:14], null, v0, v0, v[7:8]
	s_mov_b32 s19, s9
	s_mov_b32 s31, 0
	s_lshl_b64 s[20:21], s[18:19], 3
	s_mov_b32 s22, 0
                                        ; implicit-def: $sgpr19
.LBB2_8:                                ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ; =>    This Loop Header: Depth=3
                                        ;         Child Loop BB2_13 Depth 4
                                        ;           Child Loop BB2_15 Depth 5
                                        ;             Child Loop BB2_17 Depth 6
                                        ;         Child Loop BB2_24 Depth 4
                                        ;           Child Loop BB2_26 Depth 5
                                        ;             Child Loop BB2_28 Depth 6
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_sub_nc_u32_e32 v0, s22, v6
	s_or_b32 s19, s19, exec_lo
	s_mov_b32 s33, exec_lo
	v_cmpx_lt_i32_e64 v0, v22
	s_cbranch_execz .LBB2_32
; %bb.9:                                ;   in Loop: Header=BB2_8 Depth=3
	s_waitcnt vmcnt(2) lgkmcnt(2)
	v_mad_u64_u32 v[1:2], null, v0, v0, v[13:14]
	s_mov_b32 s34, exec_lo
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_u32_e64 v1, v23
	s_cbranch_execz .LBB2_31
; %bb.10:                               ;   in Loop: Header=BB2_8 Depth=3
	global_load_b64 v[0:1], v[4:5], off
	global_load_b64 v[14:15], v25, s[14:15]
	s_mov_b32 s23, s9
	s_waitcnt vmcnt(1)
	v_add_co_u32 v0, s0, v0, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v1, s0, v1, v10, s0
	s_waitcnt vmcnt(0)
	v_add_co_u32 v14, s0, v14, s20
	v_add_co_ci_u32_e64 v15, s0, s21, v15, s0
	flat_load_b64 v[0:1], v[0:1]
	flat_load_b64 v[14:15], v[14:15]
	s_waitcnt vmcnt(1) lgkmcnt(1)
	v_add_co_u32 v0, s0, v0, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v1, s0, v1, v12, s0
	s_lshl_b64 s[0:1], s[22:23], 4
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_add_co_u32 v18, s0, v14, s0
	v_add_co_ci_u32_e64 v19, s0, s1, v15, s0
	s_clause 0x1
	flat_load_b32 v26, v[0:1]
	flat_load_b64 v[14:15], v[0:1] offset:8
	s_clause 0x1
	flat_load_b64 v[16:17], v[18:19] offset:8
	flat_load_b32 v27, v[18:19]
	s_waitcnt vmcnt(3) lgkmcnt(3)
	v_cmp_lt_i32_e64 s0, 0, v26
	s_and_saveexec_b32 s1, vcc_lo
	s_delay_alu instid0(SALU_CYCLE_1)
	s_xor_b32 s23, exec_lo, s1
	s_cbranch_execz .LBB2_21
; %bb.11:                               ;   in Loop: Header=BB2_8 Depth=3
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s35, s0
	s_cbranch_execz .LBB2_20
; %bb.12:                               ; %.lr.ph47.i112
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s1, 0, v27
	s_mov_b32 s36, 0
	s_mov_b32 s24, 0
.LBB2_13:                               ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB2_15 Depth 5
                                        ;             Child Loop BB2_17 Depth 6
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s37, s1
	s_cbranch_execz .LBB2_19
; %bb.14:                               ; %.lr.ph.i116.preheader
                                        ;   in Loop: Header=BB2_13 Depth=4
	s_mov_b32 s25, s9
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[2:3], s[24:25], 4
	s_mov_b32 s25, 0
	v_add_co_u32 v0, s2, v14, s2
	v_add_co_ci_u32_e64 v1, s2, s3, v15, s2
	s_mov_b32 s8, s25
	flat_load_b96 v[0:2], v[0:1]
.LBB2_15:                               ; %.lr.ph.i116
                                        ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ;         Parent Loop BB2_13 Depth=4
                                        ; =>        This Loop Header: Depth=5
                                        ;             Child Loop BB2_17 Depth 6
	s_lshl_b64 s[2:3], s[8:9], 4
	s_mov_b32 s38, exec_lo
	v_add_co_u32 v18, s2, v16, s2
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s2, s3, v17, s2
	flat_load_b96 v[18:20], v[18:19]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v19, v19, v1
	v_dual_sub_f32 v21, v18, v0 :: v_dual_mul_f32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v19, v20, v2 :: v_dual_fmac_f32 v18, v21, v21
	v_fmac_f32_e32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v18, v24
	s_cbranch_execz .LBB2_18
; %bb.16:                               ;   in Loop: Header=BB2_15 Depth=5
	v_mul_f32_e32 v19, 0x4f800000, v18
	v_cmp_gt_f32_e64 s2, 0xf800000, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v18, v19, s2
	v_sqrt_f32_e32 v19, v18
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v20, -1, v19
	v_add_nc_u32_e32 v21, 1, v19
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v28, -v20, v19, v18
	v_fma_f32 v29, -v21, v19, v18
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s3, 0, v28
	v_cndmask_b32_e64 v19, v19, v20, s3
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s3, 0, v29
	v_cndmask_b32_e64 v19, v19, v21, s3
	s_mov_b32 s3, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v20, 0x37800000, v19
	v_cndmask_b32_e64 v19, v19, v20, s2
	v_cmp_class_f32_e64 s2, v18, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v19, v18, s2
	v_mul_f32_e32 v18, s16, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v18, v18
	v_ashrrev_i32_e32 v19, 31, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[18:19], 2, v[18:19]
	v_add_co_u32 v18, s2, s6, v18
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s2, s7, v19, s2
	global_load_b32 v21, v[18:19], off
.LBB2_17:                               ; %atomicrmw.start139
                                        ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ;         Parent Loop BB2_13 Depth=4
                                        ;           Parent Loop BB2_15 Depth=5
                                        ; =>          This Inner Loop Header: Depth=6
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v20, 1.0, v21
	global_atomic_cmpswap_b32 v20, v[18:19], v[20:21], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s2, v20, v21
	v_mov_b32_e32 v21, v20
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s3, s2, s3
	s_and_not1_b32 exec_lo, exec_lo, s3
	s_cbranch_execnz .LBB2_17
.LBB2_18:                               ; %Flow168
                                        ;   in Loop: Header=BB2_15 Depth=5
	s_or_b32 exec_lo, exec_lo, s38
	s_add_i32 s8, s8, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s8, v27
	s_or_b32 s25, s2, s25
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s25
	s_cbranch_execnz .LBB2_15
.LBB2_19:                               ; %Flow170
                                        ;   in Loop: Header=BB2_13 Depth=4
	s_or_b32 exec_lo, exec_lo, s37
	s_add_i32 s24, s24, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s2, s24, v26
	s_or_b32 s36, s2, s36
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s36
	s_cbranch_execnz .LBB2_13
.LBB2_20:                               ; %Flow172
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_or_b32 exec_lo, exec_lo, s35
                                        ; implicit-def: $vgpr26
                                        ; implicit-def: $vgpr27
                                        ; implicit-def: $vgpr16_vgpr17
                                        ; implicit-def: $vgpr14_vgpr15
.LBB2_21:                               ; %Flow179
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_and_not1_saveexec_b32 s1, s23
	s_cbranch_execz .LBB2_31
; %bb.22:                               ;   in Loop: Header=BB2_8 Depth=3
	s_and_b32 exec_lo, exec_lo, s0
	s_cbranch_execz .LBB2_31
; %bb.23:                               ; %.lr.ph47.i
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_cmp_lt_i32_e64 s0, 0, v27
	s_mov_b32 s3, 0
	s_mov_b32 s24, 0
.LBB2_24:                               ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ; =>      This Loop Header: Depth=4
                                        ;           Child Loop BB2_26 Depth 5
                                        ;             Child Loop BB2_28 Depth 6
	s_delay_alu instid0(VALU_DEP_1)
	s_and_saveexec_b32 s23, s0
	s_cbranch_execz .LBB2_30
; %bb.25:                               ; %.lr.ph.i.preheader
                                        ;   in Loop: Header=BB2_24 Depth=4
	s_mov_b32 s25, s9
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	s_lshl_b64 s[36:37], s[24:25], 4
	s_mov_b32 s25, 0
	v_add_co_u32 v0, s1, v14, s36
	v_add_co_ci_u32_e64 v1, s1, s37, v15, s1
	s_mov_b32 s8, s25
	flat_load_b96 v[0:2], v[0:1]
.LBB2_26:                               ; %.lr.ph.i
                                        ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ;         Parent Loop BB2_24 Depth=4
                                        ; =>        This Loop Header: Depth=5
                                        ;             Child Loop BB2_28 Depth 6
	s_lshl_b64 s[36:37], s[8:9], 4
	s_mov_b32 s35, exec_lo
	v_add_co_u32 v18, s1, v16, s36
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s1, s37, v17, s1
	flat_load_b96 v[18:20], v[18:19]
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_sub_f32_e32 v19, v19, v1
	v_dual_sub_f32 v21, v18, v0 :: v_dual_mul_f32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_sub_f32 v19, v20, v2 :: v_dual_fmac_f32 v18, v21, v21
	v_fmac_f32_e32 v18, v19, v19
	s_delay_alu instid0(VALU_DEP_1)
	v_cmpx_le_f32_e32 v18, v24
	s_cbranch_execz .LBB2_29
; %bb.27:                               ;   in Loop: Header=BB2_26 Depth=5
	v_mul_f32_e32 v19, 0x4f800000, v18
	v_cmp_gt_f32_e64 s1, 0xf800000, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v18, v19, s1
	v_sqrt_f32_e32 v19, v18
	s_waitcnt_depctr 0xfff
	v_add_nc_u32_e32 v20, -1, v19
	v_add_nc_u32_e32 v21, 1, v19
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v28, -v20, v19, v18
	v_fma_f32 v29, -v21, v19, v18
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_ge_f32_e64 s2, 0, v28
	v_cndmask_b32_e64 v19, v19, v20, s2
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_lt_f32_e64 s2, 0, v29
	v_cndmask_b32_e64 v19, v19, v21, s2
	s_mov_b32 s2, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v20, 0x37800000, v19
	v_cndmask_b32_e64 v19, v19, v20, s1
	v_cmp_class_f32_e64 s1, v18, 0x260
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e64 v18, v19, v18, s1
	v_mul_f32_e32 v18, s16, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cvt_i32_f32_e32 v18, v18
	v_ashrrev_i32_e32 v19, 31, v18
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[18:19], 2, v[18:19]
	v_add_co_u32 v18, s1, s4, v18
	s_delay_alu instid0(VALU_DEP_1)
	v_add_co_ci_u32_e64 v19, s1, s5, v19, s1
	global_load_b32 v21, v[18:19], off
.LBB2_28:                               ; %atomicrmw.start
                                        ;   Parent Loop BB2_4 Depth=1
                                        ;     Parent Loop BB2_6 Depth=2
                                        ;       Parent Loop BB2_8 Depth=3
                                        ;         Parent Loop BB2_24 Depth=4
                                        ;           Parent Loop BB2_26 Depth=5
                                        ; =>          This Inner Loop Header: Depth=6
	s_waitcnt vmcnt(0)
	v_add_f32_e32 v20, 1.0, v21
	global_atomic_cmpswap_b32 v20, v[18:19], v[20:21], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e64 s1, v20, v21
	v_mov_b32_e32 v21, v20
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_or_b32 s2, s1, s2
	s_and_not1_b32 exec_lo, exec_lo, s2
	s_cbranch_execnz .LBB2_28
.LBB2_29:                               ; %Flow174
                                        ;   in Loop: Header=BB2_26 Depth=5
	s_or_b32 exec_lo, exec_lo, s35
	s_add_i32 s8, s8, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s1, s8, v27
	s_or_b32 s25, s1, s25
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s25
	s_cbranch_execnz .LBB2_26
.LBB2_30:                               ; %Flow176
                                        ;   in Loop: Header=BB2_24 Depth=4
	s_or_b32 exec_lo, exec_lo, s23
	s_add_i32 s24, s24, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cmp_eq_u32_e64 s1, s24, v26
	s_or_b32 s3, s1, s3
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s3
	s_cbranch_execnz .LBB2_24
.LBB2_31:                               ; %_Z17count_distances12PfP8PointW3DiS1_iffi.exit
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_or_b32 exec_lo, exec_lo, s34
	s_add_i32 s22, s22, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	s_cmp_eq_u32 s22, s26
	s_cselect_b32 s0, -1, 0
	s_and_not1_b32 s1, s19, exec_lo
	s_and_b32 s0, s0, exec_lo
	s_or_b32 s19, s1, s0
.LBB2_32:                               ; %Flow181
                                        ;   in Loop: Header=BB2_8 Depth=3
	s_or_b32 exec_lo, exec_lo, s33
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s0, exec_lo, s19
	s_or_b32 s31, s0, s31
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s31
	s_cbranch_execnz .LBB2_8
; %bb.33:                               ; %.critedge4
                                        ;   in Loop: Header=BB2_6 Depth=2
	s_or_b32 exec_lo, exec_lo, s31
	s_add_i32 s18, s18, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	s_cmp_eq_u32 s18, s26
	s_cselect_b32 s0, -1, 0
	s_and_not1_b32 s1, s29, exec_lo
	s_and_b32 s0, s0, exec_lo
	s_or_b32 s29, s1, s0
.LBB2_34:                               ; %Flow182
                                        ;   in Loop: Header=BB2_6 Depth=2
	s_or_b32 exec_lo, exec_lo, s30
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s0, exec_lo, s29
	s_or_b32 s13, s0, s13
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s13
	s_cbranch_execnz .LBB2_6
; %bb.35:                               ; %.critedge2
                                        ;   in Loop: Header=BB2_4 Depth=1
	s_or_b32 exec_lo, exec_lo, s13
	s_add_i32 s12, s12, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	s_cmp_eq_u32 s12, s26
	s_cselect_b32 s0, -1, 0
	s_and_not1_b32 s1, s27, exec_lo
	s_and_b32 s0, s0, exec_lo
	s_or_b32 s27, s1, s0
.LBB2_36:                               ; %Flow183
                                        ;   in Loop: Header=BB2_4 Depth=1
	s_or_b32 exec_lo, exec_lo, s28
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s0, exec_lo, s27
	s_or_b32 s17, s0, s17
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s17
	s_cbranch_execnz .LBB2_4
.LBB2_37:                               ; %.critedge
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z12make_histoXYPfS_PPP4NodeS3_ffff
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 304
		.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 30
		.amdhsa_next_free_sgpr 39
		.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_end2:
	.size	_Z12make_histoXYPfS_PPP4NodeS3_ffff, .Lfunc_end2-_Z12make_histoXYPfS_PPP4NodeS3_ffff
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 2528
; NumSgprs: 41
; NumVgprs: 30
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 5
; VGPRBlocks: 3
; NumSGPRsForWavesPerEU: 41
; NumVGPRsForWavesPerEU: 30
; Occupancy: 16
; WaveLimiterHint : 1
; 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
	.protected	_Z15make_analyticRRPffifi ; -- Begin function _Z15make_analyticRRPffifi
	.globl	_Z15make_analyticRRPffifi
	.p2align	8
	.type	_Z15make_analyticRRPffifi,@function
_Z15make_analyticRRPffifi:              ; @_Z15make_analyticRRPffifi
; %bb.0:
	s_load_b128 s[4:7], s[0:1], 0x8
	s_mov_b32 s2, exec_lo
	s_waitcnt lgkmcnt(0)
	v_cmpx_gt_i32_e64 s5, v0
	s_cbranch_execz .LBB3_3
; %bb.1:
	s_load_b64 s[2:3], s[0:1], 0x0
	v_mul_f32_e64 v3, s6, s6
	v_lshlrev_b32_e32 v2, 2, v0
	v_cvt_f32_i32_e32 v4, s5
	s_mul_i32 s0, s7, s7
	v_cvt_f32_i32_e32 v0, v0
	v_mul_f32_e32 v3, s6, v3
	v_cvt_f32_i32_e32 v5, s0
	v_div_scale_f32 v6, null, v4, v4, s4
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_div_scale_f32 v7, null, v3, v3, v5
	v_rcp_f32_e32 v8, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_2)
	v_rcp_f32_e32 v9, v7
	s_waitcnt lgkmcnt(0)
	global_load_b32 v1, v2, s[2:3]
	v_fma_f32 v10, -v6, v8, 1.0
	v_fma_f32 v11, -v7, v9, 1.0
	v_fmac_f32_e32 v8, v10, v8
	v_div_scale_f32 v10, vcc_lo, s4, v4, s4
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_fmac_f32_e32 v9, v11, v9
	v_div_scale_f32 v11, s0, v5, v3, v5
	v_dual_mul_f32 v12, v10, v8 :: v_dual_mul_f32 v13, v11, v9
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v14, -v6, v12, v10
	v_fma_f32 v15, -v7, v13, v11
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_dual_fmac_f32 v12, v14, v8 :: v_dual_fmac_f32 v13, v15, v9
	v_fma_f32 v6, -v6, v12, v10
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f32 v7, -v7, v13, v11
	v_div_fmas_f32 v6, v6, v8, v12
	s_mov_b32 vcc_lo, s0
	v_add_co_u32 v2, s0, s2, v2
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_div_fmas_f32 v7, v7, v9, v13
	v_div_fixup_f32 v4, v6, v4, s4
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fixup_f32 v3, v7, v3, v5
	v_mul_f32_e32 v3, 0x41490fdb, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v3, v4, v3
	v_mul_f32_e32 v3, v4, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v3, v4, v3
	v_div_scale_f32 v4, null, 0x40400000, 0x40400000, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f32_e32 v5, v4
	s_waitcnt_depctr 0xfff
	v_fma_f32 v6, -v4, v5, 1.0
	v_fmac_f32_e32 v5, v6, v5
	v_div_scale_f32 v6, vcc_lo, v3, 0x40400000, v3
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f32_e32 v7, v6, v5
	v_fma_f32 v8, -v4, v7, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_fmac_f32_e32 v7, v8, v5
	v_mul_f32_e32 v8, v0, v0
	v_fma_f32 v4, -v4, v7, v6
	v_add_f32_e32 v6, 1.0, v0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_mul_f32_e32 v0, v8, v0
	v_div_fmas_f32 v4, v4, v5, v7
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_div_fixup_f32 v3, v4, 0x40400000, v3
	v_mul_f32_e32 v5, v6, v6
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f32 v0, v6, v5, -v0
	v_mul_f32_e32 v4, v0, v3
	v_add_co_ci_u32_e64 v3, null, s3, 0, s0
	s_mov_b32 s0, 0
.LBB3_2:                                ; %atomicrmw.start
                                        ; =>This Inner Loop Header: Depth=1
	s_waitcnt vmcnt(0)
	s_delay_alu instid0(VALU_DEP_2)
	v_add_f32_e32 v0, v1, v4
	global_atomic_cmpswap_b32 v0, v[2:3], v[0:1], off glc
	s_waitcnt vmcnt(0)
	v_cmp_eq_u32_e32 vcc_lo, v0, v1
	v_mov_b32_e32 v1, v0
	s_or_b32 s0, vcc_lo, s0
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s0
	s_cbranch_execnz .LBB3_2
.LBB3_3:
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z15make_analyticRRPffifi
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 24
		.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 16
		.amdhsa_next_free_sgpr 8
		.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_end3:
	.size	_Z15make_analyticRRPffifi, .Lfunc_end3-_Z15make_analyticRRPffifi
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 500
; NumSgprs: 10
; NumVgprs: 16
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 1
; VGPRBlocks: 1
; NumSGPRsForWavesPerEU: 10
; NumVGPRsForWavesPerEU: 16
; 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	.str,@object                    ; @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.str:
	.asciz	"Partitions: %i, did_max: %i\n"
	.size	.str, 29

	.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
      - .address_space:  global
        .offset:         8
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         16
        .size:           8
        .value_kind:     global_buffer
      - .offset:         24
        .size:           4
        .value_kind:     by_value
      - .offset:         28
        .size:           4
        .value_kind:     by_value
      - .offset:         32
        .size:           4
        .value_kind:     by_value
      - .offset:         36
        .size:           4
        .value_kind:     by_value
      - .offset:         40
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         44
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         48
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         52
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         54
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         56
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         58
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         60
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         62
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         80
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         88
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         96
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         104
        .size:           2
        .value_kind:     hidden_grid_dims
      - .offset:         120
        .size:           8
        .value_kind:     hidden_hostcall_buffer
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 296
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z6BPC_XXPfS_PPP4Nodeffff
    .private_segment_fixed_size: 0
    .sgpr_count:     24
    .sgpr_spill_count: 0
    .symbol:         _Z6BPC_XXPfS_PPP4Nodeffff.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     36
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
  - .args:
      - .address_space:  global
        .offset:         0
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         8
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         16
        .size:           8
        .value_kind:     global_buffer
      - .offset:         24
        .size:           4
        .value_kind:     by_value
      - .offset:         28
        .size:           4
        .value_kind:     by_value
      - .offset:         32
        .size:           4
        .value_kind:     by_value
      - .offset:         36
        .size:           4
        .value_kind:     by_value
      - .offset:         40
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         44
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         48
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         52
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         54
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         56
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         58
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         60
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         62
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         80
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         88
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         96
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         104
        .size:           2
        .value_kind:     hidden_grid_dims
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 296
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z12make_histoXXPfS_PPP4Nodeffff
    .private_segment_fixed_size: 0
    .sgpr_count:     38
    .sgpr_spill_count: 0
    .symbol:         _Z12make_histoXXPfS_PPP4Nodeffff.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     38
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
  - .args:
      - .address_space:  global
        .offset:         0
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         8
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         16
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         24
        .size:           8
        .value_kind:     global_buffer
      - .offset:         32
        .size:           4
        .value_kind:     by_value
      - .offset:         36
        .size:           4
        .value_kind:     by_value
      - .offset:         40
        .size:           4
        .value_kind:     by_value
      - .offset:         44
        .size:           4
        .value_kind:     by_value
      - .offset:         48
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         52
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         56
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         60
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         62
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         64
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         66
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         68
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         70
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         88
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         96
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         104
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         112
        .size:           2
        .value_kind:     hidden_grid_dims
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 304
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z12make_histoXYPfS_PPP4NodeS3_ffff
    .private_segment_fixed_size: 0
    .sgpr_count:     41
    .sgpr_spill_count: 0
    .symbol:         _Z12make_histoXYPfS_PPP4NodeS3_ffff.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     30
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
  - .args:
      - .address_space:  global
        .offset:         0
        .size:           8
        .value_kind:     global_buffer
      - .offset:         8
        .size:           4
        .value_kind:     by_value
      - .offset:         12
        .size:           4
        .value_kind:     by_value
      - .offset:         16
        .size:           4
        .value_kind:     by_value
      - .offset:         20
        .size:           4
        .value_kind:     by_value
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 24
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z15make_analyticRRPffifi
    .private_segment_fixed_size: 0
    .sgpr_count:     10
    .sgpr_spill_count: 0
    .symbol:         _Z15make_analyticRRPffifi.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     16
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
