/**
 * @file pctdemo_processMandelbrotElement.cu
 * 
 * CUDA code to calculate the Mandelbrot Set on a GPU.
 * 
 * Based on previous work by The MathWorks, Inc in 2011.
 */
__constant__ double Rvalues [256] = { 0.2422, 0.2444, 0.2464, 0.2484, 0.2503, 0.2522, 0.2540, 0.2558, 0.2576, 0.2594, 0.2611, 0.2628, 0.2645, 0.2661, 0.2676, 0.2691, 0.2704, 0.2717, 0.2729, 0.2740, 0.2749, 0.2758, 0.2766, 0.2774, 0.2781, 0.2788, 0.2794, 0.2798, 0.2802, 0.2806, 0.2809, 0.2811, 0.2813, 0.2814, 0.2814, 0.2813, 0.2811, 0.2809, 0.2807, 0.2803, 0.2798, 0.2791, 0.2784, 0.2776, 0.2766, 0.2754, 0.2741, 0.2726, 0.2710, 0.2691, 0.2670, 0.2647, 0.2621, 0.2591, 0.2556, 0.2517, 0.2473, 0.2424, 0.2369, 0.2311, 0.2250, 0.2189, 0.2128, 0.2066, 0.2006, 0.1950, 0.1903, 0.1869, 0.1847, 0.1831, 0.1818, 0.1806, 0.1795, 0.1785, 0.1778, 0.1773, 0.1768, 0.1764, 0.1755, 0.1740, 0.1716, 0.1686, 0.1649, 0.1610, 0.1573, 0.1540, 0.1513, 0.1492, 0.1475, 0.1461, 0.1446, 0.1429, 0.1408, 0.1383, 0.1354, 0.1321, 0.1288, 0.1253, 0.1219, 0.1185, 0.1152, 0.1119, 0.1085, 0.1048, 0.1009, 0.0964, 0.0914, 0.0855, 0.0789, 0.0713, 0.0628, 0.0535, 0.0433, 0.0328, 0.0234, 0.0155, 0.0091, 0.0046, 0.0019, 0.0009, 0.0018, 0.0046, 0.0094, 0.0162, 0.0253, 0.0369, 0.0504, 0.0638, 0.0770, 0.0899, 0.1023, 0.1141, 0.1252, 0.1354, 0.1448, 0.1532, 0.1609, 0.1678, 0.1741, 0.1799, 0.1853, 0.1905, 0.1954, 0.2003, 0.2061, 0.2118, 0.2178, 0.2244, 0.2318, 0.2401, 0.2491, 0.2589, 0.2695, 0.2809, 0.2929, 0.3052, 0.3176, 0.3301, 0.3424, 0.3548, 0.3671, 0.3795, 0.3921, 0.4050, 0.4184, 0.4322, 0.4463, 0.4608, 0.4753, 0.4899, 0.5044, 0.5187, 0.5329, 0.5470, 0.5609, 0.5748, 0.5886, 0.6024, 0.6161, 0.6297, 0.6433, 0.6567, 0.6701, 0.6833, 0.6963, 0.7091, 0.7218, 0.7344, 0.7468, 0.7590, 0.7710, 0.7829, 0.7945, 0.8060, 0.8172, 0.8281, 0.8389, 0.8495, 0.8600, 0.8703, 0.8804, 0.8903, 0.9000, 0.9093, 0.9184, 0.9272, 0.9357, 0.9440, 0.9523, 0.9606, 0.9689, 0.9770, 0.9842, 0.9900, 0.9946, 0.9966, 0.9971, 0.9972, 0.9971, 0.9969, 0.9966, 0.9962, 0.9957, 0.9949, 0.9938, 0.9923, 0.9906, 0.9885, 0.9861, 0.9835, 0.9807, 0.9778, 0.9748, 0.9720, 0.9694, 0.9671, 0.9651, 0.9634, 0.9619, 0.9608, 0.9601, 0.9596, 0.9595, 0.9597, 0.9601, 0.9608, 0.9618, 0.9629, 0.9642, 0.9657, 0.9674, 0.9692, 0.9711, 0.9730, 0.9749, 0.9769 };
__constant__ double Gvalues [256] = { 0.1504, 0.1534, 0.1569, 0.1607, 0.1648, 0.1689, 0.1732, 0.1773, 0.1814, 0.1854, 0.1893, 0.1932, 0.1972, 0.2011, 0.2052, 0.2094, 0.2138, 0.2184, 0.2231, 0.2280, 0.2330, 0.2382, 0.2435, 0.2489, 0.2543, 0.2598, 0.2653, 0.2708, 0.2764, 0.2819, 0.2875, 0.2930, 0.2985, 0.3040, 0.3095, 0.3150, 0.3204, 0.3259, 0.3313, 0.3367, 0.3421, 0.3475, 0.3529, 0.3583, 0.3638, 0.3693, 0.3748, 0.3804, 0.3860, 0.3916, 0.3973, 0.4030, 0.4088, 0.4145, 0.4203, 0.4261, 0.4319, 0.4378, 0.4437, 0.4497, 0.4559, 0.4620, 0.4682, 0.4743, 0.4803, 0.4861, 0.4919, 0.4975, 0.5030, 0.5084, 0.5138, 0.5191, 0.5244, 0.5296, 0.5349, 0.5401, 0.5452, 0.5504, 0.5554, 0.5605, 0.5655, 0.5705, 0.5755, 0.5805, 0.5854, 0.5902, 0.5950, 0.5997, 0.6043, 0.6089, 0.6135, 0.6180, 0.6226, 0.6272, 0.6317, 0.6363, 0.6408, 0.6453, 0.6497, 0.6541, 0.6584, 0.6627, 0.6669, 0.6710, 0.6750, 0.6789, 0.6828, 0.6865, 0.6902, 0.6938, 0.6972, 0.7006, 0.7039, 0.7071, 0.7103, 0.7133, 0.7163, 0.7192, 0.7220, 0.7248, 0.7275, 0.7301, 0.7327, 0.7352, 0.7376, 0.7400, 0.7423, 0.7446, 0.7468, 0.7489, 0.7510, 0.7531, 0.7552, 0.7572, 0.7593, 0.7614, 0.7635, 0.7656, 0.7678, 0.7699, 0.7721, 0.7743, 0.7765, 0.7787, 0.7808, 0.7828, 0.7849, 0.7869, 0.7887, 0.7905, 0.7922, 0.7937, 0.7951, 0.7964, 0.7975, 0.7985, 0.7994, 0.8002, 0.8009, 0.8016, 0.8021, 0.8026, 0.8029, 0.8031, 0.8030, 0.8028, 0.8024, 0.8018, 0.8011, 0.8002, 0.7993, 0.7982, 0.7970, 0.7957, 0.7943, 0.7929, 0.7913, 0.7896, 0.7878, 0.7859, 0.7839, 0.7818, 0.7796, 0.7773, 0.7750, 0.7727, 0.7703, 0.7679, 0.7654, 0.7629, 0.7604, 0.7579, 0.7554, 0.7529, 0.7505, 0.7481, 0.7457, 0.7435, 0.7413, 0.7392, 0.7372, 0.7353, 0.7336, 0.7321, 0.7308, 0.7298, 0.7290, 0.7285, 0.7284, 0.7285, 0.7292, 0.7304, 0.7330, 0.7365, 0.7407, 0.7458, 0.7513, 0.7569, 0.7626, 0.7683, 0.7740, 0.7798, 0.7856, 0.7915, 0.7974, 0.8034, 0.8095, 0.8156, 0.8218, 0.8280, 0.8342, 0.8404, 0.8467, 0.8529, 0.8591, 0.8654, 0.8716, 0.8778, 0.8840, 0.8902, 0.8963, 0.9023, 0.9084, 0.9143, 0.9203, 0.9262, 0.9320, 0.9379, 0.9437, 0.9494, 0.9552, 0.9609, 0.9667, 0.9724, 0.9782, 0.9839 };
__constant__ double Bvalues [256] = { 0.6603, 0.6728, 0.6847, 0.6961, 0.7071, 0.7179, 0.7286, 0.7393, 0.7501, 0.7610, 0.7719, 0.7828, 0.7937, 0.8043, 0.8148, 0.8249, 0.8346, 0.8439, 0.8528, 0.8612, 0.8692, 0.8767, 0.8840, 0.8908, 0.8973, 0.9035, 0.9094, 0.9150, 0.9204, 0.9255, 0.9305, 0.9352, 0.9397, 0.9441, 0.9483, 0.9524, 0.9563, 0.9600, 0.9636, 0.9670, 0.9702, 0.9733, 0.9763, 0.9791, 0.9817, 0.9840, 0.9862, 0.9881, 0.9898, 0.9912, 0.9924, 0.9935, 0.9946, 0.9955, 0.9965, 0.9974, 0.9983, 0.9991, 0.9996, 0.9995, 0.9985, 0.9968, 0.9948, 0.9926, 0.9906, 0.9887, 0.9867, 0.9844, 0.9819, 0.9793, 0.9766, 0.9738, 0.9709, 0.9677, 0.9641, 0.9602, 0.9560, 0.9516, 0.9473, 0.9432, 0.9393, 0.9357, 0.9323, 0.9289, 0.9254, 0.9218, 0.9182, 0.9147, 0.9113, 0.9080, 0.9050, 0.9022, 0.8998, 0.8975, 0.8953, 0.8932, 0.8910, 0.8887, 0.8862, 0.8834, 0.8804, 0.8770, 0.8734, 0.8695, 0.8653, 0.8609, 0.8562, 0.8513, 0.8462, 0.8409, 0.8355, 0.8299, 0.8242, 0.8183, 0.8124, 0.8064, 0.8003, 0.7941, 0.7878, 0.7815, 0.7752, 0.7688, 0.7623, 0.7558, 0.7492, 0.7426, 0.7359, 0.7292, 0.7224, 0.7156, 0.7088, 0.7019, 0.6950, 0.6881, 0.6812, 0.6741, 0.6671, 0.6599, 0.6527, 0.6454, 0.6379, 0.6303, 0.6225, 0.6146, 0.6065, 0.5983, 0.5899, 0.5813, 0.5725, 0.5636, 0.5546, 0.5454, 0.5360, 0.5266, 0.5170, 0.5074, 0.4975, 0.4876, 0.4774, 0.4669, 0.4563, 0.4454, 0.4344, 0.4233, 0.4122, 0.4013, 0.3904, 0.3797, 0.3691, 0.3586, 0.3480, 0.3374, 0.3267, 0.3159, 0.3050, 0.2941, 0.2833, 0.2726, 0.2622, 0.2521, 0.2423, 0.2329, 0.2239, 0.2155, 0.2075, 0.1998, 0.1924, 0.1852, 0.1782, 0.1717, 0.1658, 0.1608, 0.1570, 0.1546, 0.1535, 0.1536, 0.1546, 0.1564, 0.1587, 0.1615, 0.1650, 0.1695, 0.1749, 0.1815, 0.1890, 0.1973, 0.2061, 0.2151, 0.2237, 0.2312, 0.2373, 0.2418, 0.2446, 0.2429, 0.2394, 0.2351, 0.2309, 0.2267, 0.2224, 0.2181, 0.2138, 0.2095, 0.2053, 0.2012, 0.1974, 0.1939, 0.1906, 0.1875, 0.1846, 0.1817, 0.1787, 0.1757, 0.1726, 0.1695, 0.1665, 0.1636, 0.1608, 0.1582, 0.1557, 0.1532, 0.1507, 0.1480, 0.1450, 0.1418, 0.1382, 0.1344, 0.1304, 0.1261, 0.1216, 0.1168, 0.1116, 0.1061, 0.1001, 0.0938, 0.0872, 0.0805 };


/** Work out which piece of the global array this thread should operate on */ 
__device__ size_t calculateGlobalIndex() {
    // Which block are we?
    size_t const globalBlockIndex = blockIdx.x + blockIdx.y * gridDim.x;
    // Which thread are we within the block?
    size_t const localThreadIdx = threadIdx.x + blockDim.x * threadIdx.y;
    // How big is each block?
    size_t const threadsPerBlock = blockDim.x*blockDim.y;
    // Which thread are we overall?
    return localThreadIdx + globalBlockIndex*threadsPerBlock;

}

/** The actual Mandelbrot algorithm for a single location */ 
__device__ unsigned int doIterations( double const realPart0, 
                                      double const imagPart0, 
                                      unsigned int const maxIters ) {
    // Initialise: z = z0
    double realPart = realPart0;
    double imagPart = imagPart0;
    unsigned int count = 0;
    // Loop until escape
    while ( ( count <= maxIters )
            && ((realPart*realPart + imagPart*imagPart) <= 4.0) ) {
        ++count;
        // Update: z = z*z + z0;
        double const oldRealPart = realPart;
        realPart = realPart*realPart - imagPart*imagPart + realPart0;
        imagPart = 2*oldRealPart*imagPart + imagPart0;
    }
    return count;
}


/** Main entry point.
 * Works out where the current thread should read/write to global memory
 * and calls doIterations to do the actual work.
 */
__global__ void processMandelbrotElement( 
                      double * outR,
                      double * outG,
                      double * outB,
                      int * minCountsNow,
                      const double * x, 
                      const double * y,
                      const unsigned int maxIters, 
                      const unsigned int numel,
                      unsigned int minCountsLast) {
    // Work out which thread we are
    size_t const globalThreadIdx = calculateGlobalIndex();

    // If we're off the end, return now
    if (globalThreadIdx >= numel) {
        return;
    }
    
    // Get our X and Y coords
    double const realPart0 = x[globalThreadIdx];
    double const imagPart0 = y[globalThreadIdx];

    // Run the itearations on this location
    unsigned int const count = doIterations( realPart0, imagPart0, maxIters );
    unsigned int const value = log( double( count + 1 - minCountsLast))/log(double(maxIters))*255;
    
    if (count < minCountsNow[0]) {
        minCountsNow[0] = count;
    }
    
    outR[globalThreadIdx] = Rvalues[value];
    outG[globalThreadIdx] = Gvalues[value];
    outB[globalThreadIdx] = Bvalues[value];

}

	.file	"tmpxft_0036f920_00000000-6_pctdemo_processMandelbrotElement2.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB2012:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE2012:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.globl	_Z20calculateGlobalIndexv
	.type	_Z20calculateGlobalIndexv, @function
_Z20calculateGlobalIndexv:
.LFB2008:
	.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
.LFE2008:
	.size	_Z20calculateGlobalIndexv, .-_Z20calculateGlobalIndexv
	.globl	_Z12doIterationsddj
	.type	_Z12doIterationsddj, @function
_Z12doIterationsddj:
.LFB2009:
	.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
.LFE2009:
	.size	_Z12doIterationsddj, .-_Z12doIterationsddj
	.globl	_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj
	.type	_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj, @function
_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj:
.LFB2034:
	.cfi_startproc
	endbr64
	subq	$200, %rsp
	.cfi_def_cfa_offset 208
	movq	%rdi, 40(%rsp)
	leaq	64(%rsp), %rdi
	movq	%rsi, 32(%rsp)
	leaq	76(%rsp), %rsi
	movq	%rdx, 24(%rsp)
	leaq	48(%rsp), %rdx
	movq	%rcx, 16(%rsp)
	leaq	56(%rsp), %rcx
	movq	%r8, 8(%rsp)
	movq	%r9, (%rsp)
	movq	%fs:40, %rax
	movq	%rax, 184(%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	16(%rsp), %rax
	movq	%rax, 136(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 144(%rsp)
	movq	%rsp, %rax
	movq	%rax, 152(%rsp)
	leaq	208(%rsp), %rax
	movq	%rax, 160(%rsp)
	leaq	216(%rsp), %rax
	movq	%rax, 168(%rsp)
	leaq	224(%rsp), %rax
	movq	%rax, 176(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 64(%rsp)
	movq	%rax, 76(%rsp)
	movl	$1, 84(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L6
	pushq	56(%rsp)
	.cfi_def_cfa_offset 216
	leaq	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj(%rip), %rdi
	pushq	56(%rsp)
	.cfi_def_cfa_offset 224
	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 216
	popq	%rdx
	.cfi_def_cfa_offset 208
.L6:
	movq	184(%rsp), %rax
	subq	%fs:40, %rax
	je	.L8
	call	__stack_chk_fail@PLT
.L8:
	addq	$200, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE2034:
	.size	_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj, .-_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj
	.globl	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.type	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, @function
_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj:
.LFB2035:
	.cfi_startproc
	endbr64
	jmp	_Z59__device_stub__Z24processMandelbrotElementPdS_S_PiPKdS2_jjjPdS_S_PiPKdS2_jjj
	.cfi_endproc
.LFE2035:
	.size	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, .-_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj"
.LC1:
	.string	"Rvalues"
.LC2:
	.string	"Gvalues"
.LC3:
	.string	"Bvalues"
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB2037:
	.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	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 48
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC1(%rip), %rdx
	movl	$2048, %r9d
	leaq	_ZL7Rvalues(%rip), %rsi
	pushq	$1
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	call	__cudaRegisterVar@PLT
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rdx
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$1
	.cfi_def_cfa_offset 32
	leaq	.LC2(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movq	%rdx, %rcx
	movl	$2048, %r9d
	leaq	_ZL7Gvalues(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rcx
	.cfi_def_cfa_offset 24
	popq	%rsi
	.cfi_def_cfa_offset 16
	pushq	$0
	.cfi_def_cfa_offset 24
	pushq	$1
	.cfi_def_cfa_offset 32
	leaq	.LC3(%rip), %rdx
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	movl	$2048, %r9d
	movq	%rdx, %rcx
	leaq	_ZL7Bvalues(%rip), %rsi
	call	__cudaRegisterVar@PLT
	popq	%rdi
	.cfi_def_cfa_offset 24
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	popq	%r8
	.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
.LFE2037:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.local	_ZL7Bvalues
	.comm	_ZL7Bvalues,2048,32
	.local	_ZL7Gvalues
	.comm	_ZL7Gvalues,2048,32
	.local	_ZL7Rvalues
	.comm	_ZL7Rvalues,2048,32
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:


#include <hip/hip_runtime.h>
/**
 * @file pctdemo_processMandelbrotElement.cu
 * 
 * CUDA code to calculate the Mandelbrot Set on a GPU.
 * 
 * Based on previous work by The MathWorks, Inc in 2011.
 */
__constant__ double Rvalues [256] = { 0.2422, 0.2444, 0.2464, 0.2484, 0.2503, 0.2522, 0.2540, 0.2558, 0.2576, 0.2594, 0.2611, 0.2628, 0.2645, 0.2661, 0.2676, 0.2691, 0.2704, 0.2717, 0.2729, 0.2740, 0.2749, 0.2758, 0.2766, 0.2774, 0.2781, 0.2788, 0.2794, 0.2798, 0.2802, 0.2806, 0.2809, 0.2811, 0.2813, 0.2814, 0.2814, 0.2813, 0.2811, 0.2809, 0.2807, 0.2803, 0.2798, 0.2791, 0.2784, 0.2776, 0.2766, 0.2754, 0.2741, 0.2726, 0.2710, 0.2691, 0.2670, 0.2647, 0.2621, 0.2591, 0.2556, 0.2517, 0.2473, 0.2424, 0.2369, 0.2311, 0.2250, 0.2189, 0.2128, 0.2066, 0.2006, 0.1950, 0.1903, 0.1869, 0.1847, 0.1831, 0.1818, 0.1806, 0.1795, 0.1785, 0.1778, 0.1773, 0.1768, 0.1764, 0.1755, 0.1740, 0.1716, 0.1686, 0.1649, 0.1610, 0.1573, 0.1540, 0.1513, 0.1492, 0.1475, 0.1461, 0.1446, 0.1429, 0.1408, 0.1383, 0.1354, 0.1321, 0.1288, 0.1253, 0.1219, 0.1185, 0.1152, 0.1119, 0.1085, 0.1048, 0.1009, 0.0964, 0.0914, 0.0855, 0.0789, 0.0713, 0.0628, 0.0535, 0.0433, 0.0328, 0.0234, 0.0155, 0.0091, 0.0046, 0.0019, 0.0009, 0.0018, 0.0046, 0.0094, 0.0162, 0.0253, 0.0369, 0.0504, 0.0638, 0.0770, 0.0899, 0.1023, 0.1141, 0.1252, 0.1354, 0.1448, 0.1532, 0.1609, 0.1678, 0.1741, 0.1799, 0.1853, 0.1905, 0.1954, 0.2003, 0.2061, 0.2118, 0.2178, 0.2244, 0.2318, 0.2401, 0.2491, 0.2589, 0.2695, 0.2809, 0.2929, 0.3052, 0.3176, 0.3301, 0.3424, 0.3548, 0.3671, 0.3795, 0.3921, 0.4050, 0.4184, 0.4322, 0.4463, 0.4608, 0.4753, 0.4899, 0.5044, 0.5187, 0.5329, 0.5470, 0.5609, 0.5748, 0.5886, 0.6024, 0.6161, 0.6297, 0.6433, 0.6567, 0.6701, 0.6833, 0.6963, 0.7091, 0.7218, 0.7344, 0.7468, 0.7590, 0.7710, 0.7829, 0.7945, 0.8060, 0.8172, 0.8281, 0.8389, 0.8495, 0.8600, 0.8703, 0.8804, 0.8903, 0.9000, 0.9093, 0.9184, 0.9272, 0.9357, 0.9440, 0.9523, 0.9606, 0.9689, 0.9770, 0.9842, 0.9900, 0.9946, 0.9966, 0.9971, 0.9972, 0.9971, 0.9969, 0.9966, 0.9962, 0.9957, 0.9949, 0.9938, 0.9923, 0.9906, 0.9885, 0.9861, 0.9835, 0.9807, 0.9778, 0.9748, 0.9720, 0.9694, 0.9671, 0.9651, 0.9634, 0.9619, 0.9608, 0.9601, 0.9596, 0.9595, 0.9597, 0.9601, 0.9608, 0.9618, 0.9629, 0.9642, 0.9657, 0.9674, 0.9692, 0.9711, 0.9730, 0.9749, 0.9769 };
__constant__ double Gvalues [256] = { 0.1504, 0.1534, 0.1569, 0.1607, 0.1648, 0.1689, 0.1732, 0.1773, 0.1814, 0.1854, 0.1893, 0.1932, 0.1972, 0.2011, 0.2052, 0.2094, 0.2138, 0.2184, 0.2231, 0.2280, 0.2330, 0.2382, 0.2435, 0.2489, 0.2543, 0.2598, 0.2653, 0.2708, 0.2764, 0.2819, 0.2875, 0.2930, 0.2985, 0.3040, 0.3095, 0.3150, 0.3204, 0.3259, 0.3313, 0.3367, 0.3421, 0.3475, 0.3529, 0.3583, 0.3638, 0.3693, 0.3748, 0.3804, 0.3860, 0.3916, 0.3973, 0.4030, 0.4088, 0.4145, 0.4203, 0.4261, 0.4319, 0.4378, 0.4437, 0.4497, 0.4559, 0.4620, 0.4682, 0.4743, 0.4803, 0.4861, 0.4919, 0.4975, 0.5030, 0.5084, 0.5138, 0.5191, 0.5244, 0.5296, 0.5349, 0.5401, 0.5452, 0.5504, 0.5554, 0.5605, 0.5655, 0.5705, 0.5755, 0.5805, 0.5854, 0.5902, 0.5950, 0.5997, 0.6043, 0.6089, 0.6135, 0.6180, 0.6226, 0.6272, 0.6317, 0.6363, 0.6408, 0.6453, 0.6497, 0.6541, 0.6584, 0.6627, 0.6669, 0.6710, 0.6750, 0.6789, 0.6828, 0.6865, 0.6902, 0.6938, 0.6972, 0.7006, 0.7039, 0.7071, 0.7103, 0.7133, 0.7163, 0.7192, 0.7220, 0.7248, 0.7275, 0.7301, 0.7327, 0.7352, 0.7376, 0.7400, 0.7423, 0.7446, 0.7468, 0.7489, 0.7510, 0.7531, 0.7552, 0.7572, 0.7593, 0.7614, 0.7635, 0.7656, 0.7678, 0.7699, 0.7721, 0.7743, 0.7765, 0.7787, 0.7808, 0.7828, 0.7849, 0.7869, 0.7887, 0.7905, 0.7922, 0.7937, 0.7951, 0.7964, 0.7975, 0.7985, 0.7994, 0.8002, 0.8009, 0.8016, 0.8021, 0.8026, 0.8029, 0.8031, 0.8030, 0.8028, 0.8024, 0.8018, 0.8011, 0.8002, 0.7993, 0.7982, 0.7970, 0.7957, 0.7943, 0.7929, 0.7913, 0.7896, 0.7878, 0.7859, 0.7839, 0.7818, 0.7796, 0.7773, 0.7750, 0.7727, 0.7703, 0.7679, 0.7654, 0.7629, 0.7604, 0.7579, 0.7554, 0.7529, 0.7505, 0.7481, 0.7457, 0.7435, 0.7413, 0.7392, 0.7372, 0.7353, 0.7336, 0.7321, 0.7308, 0.7298, 0.7290, 0.7285, 0.7284, 0.7285, 0.7292, 0.7304, 0.7330, 0.7365, 0.7407, 0.7458, 0.7513, 0.7569, 0.7626, 0.7683, 0.7740, 0.7798, 0.7856, 0.7915, 0.7974, 0.8034, 0.8095, 0.8156, 0.8218, 0.8280, 0.8342, 0.8404, 0.8467, 0.8529, 0.8591, 0.8654, 0.8716, 0.8778, 0.8840, 0.8902, 0.8963, 0.9023, 0.9084, 0.9143, 0.9203, 0.9262, 0.9320, 0.9379, 0.9437, 0.9494, 0.9552, 0.9609, 0.9667, 0.9724, 0.9782, 0.9839 };
__constant__ double Bvalues [256] = { 0.6603, 0.6728, 0.6847, 0.6961, 0.7071, 0.7179, 0.7286, 0.7393, 0.7501, 0.7610, 0.7719, 0.7828, 0.7937, 0.8043, 0.8148, 0.8249, 0.8346, 0.8439, 0.8528, 0.8612, 0.8692, 0.8767, 0.8840, 0.8908, 0.8973, 0.9035, 0.9094, 0.9150, 0.9204, 0.9255, 0.9305, 0.9352, 0.9397, 0.9441, 0.9483, 0.9524, 0.9563, 0.9600, 0.9636, 0.9670, 0.9702, 0.9733, 0.9763, 0.9791, 0.9817, 0.9840, 0.9862, 0.9881, 0.9898, 0.9912, 0.9924, 0.9935, 0.9946, 0.9955, 0.9965, 0.9974, 0.9983, 0.9991, 0.9996, 0.9995, 0.9985, 0.9968, 0.9948, 0.9926, 0.9906, 0.9887, 0.9867, 0.9844, 0.9819, 0.9793, 0.9766, 0.9738, 0.9709, 0.9677, 0.9641, 0.9602, 0.9560, 0.9516, 0.9473, 0.9432, 0.9393, 0.9357, 0.9323, 0.9289, 0.9254, 0.9218, 0.9182, 0.9147, 0.9113, 0.9080, 0.9050, 0.9022, 0.8998, 0.8975, 0.8953, 0.8932, 0.8910, 0.8887, 0.8862, 0.8834, 0.8804, 0.8770, 0.8734, 0.8695, 0.8653, 0.8609, 0.8562, 0.8513, 0.8462, 0.8409, 0.8355, 0.8299, 0.8242, 0.8183, 0.8124, 0.8064, 0.8003, 0.7941, 0.7878, 0.7815, 0.7752, 0.7688, 0.7623, 0.7558, 0.7492, 0.7426, 0.7359, 0.7292, 0.7224, 0.7156, 0.7088, 0.7019, 0.6950, 0.6881, 0.6812, 0.6741, 0.6671, 0.6599, 0.6527, 0.6454, 0.6379, 0.6303, 0.6225, 0.6146, 0.6065, 0.5983, 0.5899, 0.5813, 0.5725, 0.5636, 0.5546, 0.5454, 0.5360, 0.5266, 0.5170, 0.5074, 0.4975, 0.4876, 0.4774, 0.4669, 0.4563, 0.4454, 0.4344, 0.4233, 0.4122, 0.4013, 0.3904, 0.3797, 0.3691, 0.3586, 0.3480, 0.3374, 0.3267, 0.3159, 0.3050, 0.2941, 0.2833, 0.2726, 0.2622, 0.2521, 0.2423, 0.2329, 0.2239, 0.2155, 0.2075, 0.1998, 0.1924, 0.1852, 0.1782, 0.1717, 0.1658, 0.1608, 0.1570, 0.1546, 0.1535, 0.1536, 0.1546, 0.1564, 0.1587, 0.1615, 0.1650, 0.1695, 0.1749, 0.1815, 0.1890, 0.1973, 0.2061, 0.2151, 0.2237, 0.2312, 0.2373, 0.2418, 0.2446, 0.2429, 0.2394, 0.2351, 0.2309, 0.2267, 0.2224, 0.2181, 0.2138, 0.2095, 0.2053, 0.2012, 0.1974, 0.1939, 0.1906, 0.1875, 0.1846, 0.1817, 0.1787, 0.1757, 0.1726, 0.1695, 0.1665, 0.1636, 0.1608, 0.1582, 0.1557, 0.1532, 0.1507, 0.1480, 0.1450, 0.1418, 0.1382, 0.1344, 0.1304, 0.1261, 0.1216, 0.1168, 0.1116, 0.1061, 0.1001, 0.0938, 0.0872, 0.0805 };


/** Work out which piece of the global array this thread should operate on */ 
__device__ size_t calculateGlobalIndex() {
    // Which block are we?
    size_t const globalBlockIndex = blockIdx.x + blockIdx.y * gridDim.x;
    // Which thread are we within the block?
    size_t const localThreadIdx = threadIdx.x + blockDim.x * threadIdx.y;
    // How big is each block?
    size_t const threadsPerBlock = blockDim.x*blockDim.y;
    // Which thread are we overall?
    return localThreadIdx + globalBlockIndex*threadsPerBlock;

}

/** The actual Mandelbrot algorithm for a single location */ 
__device__ unsigned int doIterations( double const realPart0, 
                                      double const imagPart0, 
                                      unsigned int const maxIters ) {
    // Initialise: z = z0
    double realPart = realPart0;
    double imagPart = imagPart0;
    unsigned int count = 0;
    // Loop until escape
    while ( ( count <= maxIters )
            && ((realPart*realPart + imagPart*imagPart) <= 4.0) ) {
        ++count;
        // Update: z = z*z + z0;
        double const oldRealPart = realPart;
        realPart = realPart*realPart - imagPart*imagPart + realPart0;
        imagPart = 2*oldRealPart*imagPart + imagPart0;
    }
    return count;
}


/** Main entry point.
 * Works out where the current thread should read/write to global memory
 * and calls doIterations to do the actual work.
 */
__global__ void processMandelbrotElement( 
                      double * outR,
                      double * outG,
                      double * outB,
                      int * minCountsNow,
                      const double * x, 
                      const double * y,
                      const unsigned int maxIters, 
                      const unsigned int numel,
                      unsigned int minCountsLast) {
    // Work out which thread we are
    size_t const globalThreadIdx = calculateGlobalIndex();

    // If we're off the end, return now
    if (globalThreadIdx >= numel) {
        return;
    }
    
    // Get our X and Y coords
    double const realPart0 = x[globalThreadIdx];
    double const imagPart0 = y[globalThreadIdx];

    // Run the itearations on this location
    unsigned int const count = doIterations( realPart0, imagPart0, maxIters );
    unsigned int const value = log( double( count + 1 - minCountsLast))/log(double(maxIters))*255;
    
    if (count < minCountsNow[0]) {
        minCountsNow[0] = count;
    }
    
    outR[globalThreadIdx] = Rvalues[value];
    outG[globalThreadIdx] = Gvalues[value];
    outB[globalThreadIdx] = Bvalues[value];

}

	.text
	.file	"pctdemo_processMandelbrotElement2.hip"
	.globl	_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj # -- Begin function _Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj
	.type	_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj,@function
_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj: # @_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj
	.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	$176, %rsp
	.cfi_def_cfa_offset 224
	.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	24(%rsp), %rcx
	movq	%r8, (%rcx)
	leaq	16(%rsp), %r8
	movq	%r9, (%r8)
	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)
	leaq	224(%rsp), %rax
	movq	%rax, 48(%rbx)
	leaq	232(%rsp), %rax
	movq	%rax, 56(%rbx)
	leaq	240(%rsp), %rax
	movq	%rax, 64(%rbx)
	leaq	80(%rsp), %r14
	leaq	64(%rsp), %r15
	leaq	8(%rsp), %r12
	movq	%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	$_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$192, %rsp
	.cfi_adjust_cfa_offset -192
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end0:
	.size	_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj, .Lfunc_end0-_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj
	.cfi_endproc
                                        # -- End function
	.p2align	4, 0x90                         # -- Begin function __hip_module_ctor
	.type	__hip_module_ctor,@function
__hip_module_ctor:                      # @__hip_module_ctor
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movq	__hip_gpubin_handle(%rip), %rbx
	testq	%rbx, %rbx
	jne	.LBB1_2
# %bb.1:
	movl	$__hip_fatbin_wrapper, %edi
	callq	__hipRegisterFatBinary
	movq	%rax, %rbx
	movq	%rax, __hip_gpubin_handle(%rip)
.LBB1_2:
	subq	$32, %rsp
	.cfi_adjust_cfa_offset 32
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, %esi
	movl	$.L__unnamed_1, %edx
	movl	$.L__unnamed_1, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	addq	$32, %rsp
	.cfi_adjust_cfa_offset -32
	movl	$Rvalues, %esi
	movl	$.L__unnamed_2, %edx
	movl	$.L__unnamed_2, %ecx
	movl	$2048, %r9d                     # imm = 0x800
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_adjust_cfa_offset 8
	pushq	$1
	.cfi_adjust_cfa_offset 8
	callq	__hipRegisterVar
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movl	$Gvalues, %esi
	movl	$.L__unnamed_3, %edx
	movl	$.L__unnamed_3, %ecx
	movl	$2048, %r9d                     # imm = 0x800
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_adjust_cfa_offset 8
	pushq	$1
	.cfi_adjust_cfa_offset 8
	callq	__hipRegisterVar
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movl	$Bvalues, %esi
	movl	$.L__unnamed_4, %edx
	movl	$.L__unnamed_4, %ecx
	movl	$2048, %r9d                     # imm = 0x800
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_adjust_cfa_offset 8
	pushq	$1
	.cfi_adjust_cfa_offset 8
	callq	__hipRegisterVar
	addq	$16, %rsp
	.cfi_adjust_cfa_offset -16
	movl	$__hip_module_dtor, %edi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit                          # TAILCALL
.Lfunc_end1:
	.size	__hip_module_ctor, .Lfunc_end1-__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	.LBB2_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
.LBB2_2:
	retq
.Lfunc_end2:
	.size	__hip_module_dtor, .Lfunc_end2-__hip_module_dtor
	.cfi_endproc
                                        # -- End function
	.type	Rvalues,@object                 # @Rvalues
	.local	Rvalues
	.comm	Rvalues,2048,16
	.type	Gvalues,@object                 # @Gvalues
	.local	Gvalues
	.comm	Gvalues,2048,16
	.type	Bvalues,@object                 # @Bvalues
	.local	Bvalues
	.comm	Bvalues,2048,16
	.type	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj,@object # @_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.section	.rodata,"a",@progbits
	.globl	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.p2align	3, 0x0
_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj:
	.quad	_Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj
	.size	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, 8

	.type	.L__unnamed_1,@object           # @0
	.section	.rodata.str1.1,"aMS",@progbits,1
.L__unnamed_1:
	.asciz	"_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj"
	.size	.L__unnamed_1, 46

	.type	.L__unnamed_2,@object           # @1
.L__unnamed_2:
	.asciz	"Rvalues"
	.size	.L__unnamed_2, 8

	.type	.L__unnamed_3,@object           # @2
.L__unnamed_3:
	.asciz	"Gvalues"
	.size	.L__unnamed_3, 8

	.type	.L__unnamed_4,@object           # @3
.L__unnamed_4:
	.asciz	"Bvalues"
	.size	.L__unnamed_4, 8

	.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 _Z39__device_stub__processMandelbrotElementPdS_S_PiPKdS2_jjj
	.addrsig_sym __hip_module_ctor
	.addrsig_sym __hip_module_dtor
	.addrsig_sym Rvalues
	.addrsig_sym Gvalues
	.addrsig_sym Bvalues
	.addrsig_sym _Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.addrsig_sym __hip_fatbin
	.addrsig_sym __hip_fatbin_wrapper
	.addrsig_sym __hip_cuid_

	.text
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.protected	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj ; -- Begin function _Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.globl	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
	.p2align	8
	.type	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj,@function
_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj: ; @_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
; %bb.0:
	s_clause 0x1
	s_load_b32 s4, s[0:1], 0x40
	s_load_b32 s5, s[0:1], 0x4c
	s_add_u32 s2, s0, 64
	s_addc_u32 s3, s1, 0
	v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v2, 0x3ff, v0
	v_bfe_u32 v0, v0, 10, 10
	s_waitcnt lgkmcnt(0)
	s_mul_i32 s6, s4, s15
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	s_add_i32 s6, s6, s14
	s_cmp_lt_u32 s14, s4
	s_load_b128 s[12:15], s[0:1], 0x30
	s_cselect_b32 s4, 12, 18
	v_mov_b32_e32 v1, s4
	global_load_u16 v1, v1, s[2:3]
	s_lshr_b32 s2, s5, 16
	s_mov_b32 s3, 0
	s_waitcnt vmcnt(0)
	v_mul_lo_u32 v4, s2, v1
	v_mad_u32_u24 v2, v0, v1, v2
	s_waitcnt lgkmcnt(0)
	s_mov_b32 s2, s13
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[0:1], null, v4, s6, v[2:3]
	v_cmp_gt_u64_e32 vcc_lo, s[2:3], v[0:1]
	s_and_saveexec_b32 s2, vcc_lo
	s_cbranch_execz .LBB0_8
; %bb.1:
	s_load_b128 s[4:7], s[0:1], 0x20
	v_lshlrev_b64 v[0:1], 3, v[0:1]
	s_waitcnt lgkmcnt(0)
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_co_u32 v2, vcc_lo, s4, v0
	v_add_co_ci_u32_e32 v3, vcc_lo, s5, v1, vcc_lo
	v_add_co_u32 v4, vcc_lo, s6, v0
	v_add_co_ci_u32_e32 v5, vcc_lo, s7, v1, vcc_lo
	s_load_b256 s[4:11], s[0:1], 0x0
	global_load_b64 v[2:3], v[2:3], off
	global_load_b64 v[4:5], v[4:5], off
	s_mov_b32 s0, 0
                                        ; implicit-def: $sgpr1
	s_waitcnt vmcnt(1)
	v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v2
	s_waitcnt vmcnt(0)
	v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v4
.LBB0_2:                                ; =>This Inner Loop Header: Depth=1
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_mul_f64 v[10:11], v[6:7], v[6:7]
	s_or_b32 s1, s1, exec_lo
	v_fma_f64 v[12:13], v[8:9], v[8:9], v[10:11]
	s_delay_alu instid0(VALU_DEP_1)
	v_cmp_ge_f64_e32 vcc_lo, 4.0, v[12:13]
	v_mov_b32_e32 v12, s0
	s_and_saveexec_b32 s2, vcc_lo
	s_cbranch_execz .LBB0_4
; %bb.3:                                ;   in Loop: Header=BB0_2 Depth=1
	v_mul_f64 v[12:13], v[8:9], v[8:9]
	v_add_f64 v[8:9], v[8:9], v[8:9]
	s_add_i32 s0, s0, 1
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)
	s_cmp_gt_u32 s0, s12
	s_cselect_b32 s13, -1, 0
	s_and_not1_b32 s1, s1, exec_lo
	s_and_b32 s13, s13, exec_lo
	s_or_b32 s1, s1, s13
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[12:13], -v[10:11]
	v_fma_f64 v[6:7], v[8:9], v[6:7], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[2:3], v[10:11]
	v_mov_b32_e32 v12, s0
	v_dual_mov_b32 v8, v10 :: v_dual_mov_b32 v9, v11
.LBB0_4:                                ; %Flow
                                        ;   in Loop: Header=BB0_2 Depth=1
	s_or_b32 exec_lo, exec_lo, s2
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
	s_and_b32 s2, exec_lo, s1
	s_or_b32 s3, s2, s3
	s_delay_alu instid0(SALU_CYCLE_1)
	s_and_not1_b32 exec_lo, exec_lo, s3
	s_cbranch_execnz .LBB0_2
; %bb.5:                                ; %_Z12doIterationsddj.exit
	s_or_b32 exec_lo, exec_lo, s3
	s_waitcnt lgkmcnt(0)
	s_load_b32 s0, s[10:11], 0x0
	s_waitcnt lgkmcnt(0)
	v_cmp_gt_u32_e32 vcc_lo, s0, v12
	s_and_saveexec_b32 s0, vcc_lo
	s_cbranch_execz .LBB0_7
; %bb.6:
	v_mov_b32_e32 v2, 0
	global_store_b32 v2, v12, s[10:11]
.LBB0_7:
	s_or_b32 exec_lo, exec_lo, s0
	v_add_nc_u32_e32 v38, 1, v12
	v_cvt_f64_u32_e32 v[2:3], s12
	s_mov_b32 s0, 0x55555555
	s_mov_b32 s1, 0x3fe55555
	s_mov_b32 s2, 0x6b47b09a
	v_subrev_nc_u32_e32 v4, s14, v38
	s_mov_b32 s10, 0xbf559e2b
	s_mov_b32 s3, 0x3fc38538
	s_mov_b32 s11, 0x3fc3ab76
	s_cmp_lg_u32 s12, 0
	v_cvt_f64_u32_e32 v[4:5], v4
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_frexp_mant_f64_e32 v[6:7], v[2:3]
	v_frexp_mant_f64_e32 v[8:9], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_cmp_gt_f64_e32 vcc_lo, s[0:1], v[6:7]
	v_cmp_gt_f64_e64 s0, s[0:1], v[8:9]
	v_cndmask_b32_e64 v10, 0, 1, vcc_lo
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_ldexp_f64 v[6:7], v[6:7], v10
	v_cndmask_b32_e64 v11, 0, 1, s0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_ldexp_f64 v[8:9], v[8:9], v11
	v_add_f64 v[10:11], v[6:7], 1.0
	v_add_f64 v[22:23], v[6:7], -1.0
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[12:13], v[8:9], 1.0
	v_rcp_f64_e32 v[14:15], v[10:11]
	v_add_f64 v[26:27], v[10:11], -1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_rcp_f64_e32 v[16:17], v[12:13]
	v_add_f64 v[30:31], v[12:13], -1.0
	v_add_f64 v[6:7], v[6:7], -v[26:27]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0
	v_fma_f64 v[20:21], -v[12:13], v[16:17], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[14:15], v[18:19], v[14:15], v[14:15]
	v_fma_f64 v[16:17], v[20:21], v[16:17], v[16:17]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0
	v_fma_f64 v[20:21], -v[12:13], v[16:17], 1.0
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)
	v_fma_f64 v[14:15], v[18:19], v[14:15], v[14:15]
	v_add_f64 v[18:19], v[8:9], -1.0
	v_add_f64 v[8:9], v[8:9], -v[30:31]
	v_fma_f64 v[16:17], v[20:21], v[16:17], v[16:17]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[20:21], v[22:23], v[14:15]
	v_mul_f64 v[24:25], v[18:19], v[16:17]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[28:29], v[10:11], v[20:21]
	v_mul_f64 v[32:33], v[12:13], v[24:25]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[10:11], v[20:21], v[10:11], -v[28:29]
	v_fma_f64 v[12:13], v[24:25], v[12:13], -v[32:33]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_fma_f64 v[6:7], v[20:21], v[6:7], v[10:11]
	v_fma_f64 v[8:9], v[24:25], v[8:9], v[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[28:29], v[6:7]
	v_add_f64 v[12:13], v[32:33], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_add_f64 v[26:27], v[22:23], -v[10:11]
	v_add_f64 v[28:29], v[10:11], -v[28:29]
	v_add_f64 v[30:31], v[18:19], -v[12:13]
	v_add_f64 v[32:33], v[12:13], -v[32:33]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[22:23], v[22:23], -v[26:27]
	v_add_f64 v[6:7], v[28:29], -v[6:7]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[18:19], v[18:19], -v[30:31]
	v_add_f64 v[8:9], v[32:33], -v[8:9]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[10:11], v[22:23], -v[10:11]
	v_add_f64 v[12:13], v[18:19], -v[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[6:7], v[10:11]
	v_add_f64 v[8:9], v[8:9], v[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[6:7], v[26:27], v[6:7]
	v_add_f64 v[8:9], v[30:31], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[6:7], v[14:15], v[6:7]
	v_mul_f64 v[8:9], v[16:17], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[10:11], v[20:21], v[6:7]
	v_add_f64 v[12:13], v[24:25], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_mul_f64 v[14:15], v[10:11], v[10:11]
	v_mul_f64 v[16:17], v[12:13], v[12:13]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)
	v_fma_f64 v[18:19], v[14:15], s[10:11], s[2:3]
	v_mul_f64 v[26:27], v[10:11], v[14:15]
	v_fma_f64 v[22:23], v[16:17], s[10:11], s[2:3]
	s_mov_b32 s2, 0xd7f4df2e
	s_mov_b32 s3, 0x3fc7474d
	s_delay_alu instid0(VALU_DEP_3) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[18:19], v[14:15], v[18:19], s[2:3]
	s_delay_alu instid0(VALU_DEP_2)
	v_fma_f64 v[22:23], v[16:17], v[22:23], s[2:3]
	s_mov_b32 s2, 0x16291751
	s_mov_b32 s3, 0x3fcc71c0
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[18:19], v[14:15], v[18:19], s[2:3]
	s_delay_alu instid0(VALU_DEP_2)
	v_fma_f64 v[22:23], v[16:17], v[22:23], s[2:3]
	s_mov_b32 s2, 0x9b27acf1
	s_mov_b32 s3, 0x3fd24924
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[18:19], v[14:15], v[18:19], s[2:3]
	s_delay_alu instid0(VALU_DEP_2)
	v_fma_f64 v[22:23], v[16:17], v[22:23], s[2:3]
	s_mov_b32 s2, 0x998ef7b6
	s_mov_b32 s3, 0x3fd99999
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[18:19], v[14:15], v[18:19], s[2:3]
	s_delay_alu instid0(VALU_DEP_2)
	v_fma_f64 v[22:23], v[16:17], v[22:23], s[2:3]
	s_mov_b32 s2, 0x55555780
	s_mov_b32 s3, s1
	s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)
	v_fma_f64 v[14:15], v[14:15], v[18:19], s[2:3]
	v_mul_f64 v[18:19], v[12:13], v[16:17]
	s_delay_alu instid0(VALU_DEP_3)
	v_fma_f64 v[16:17], v[16:17], v[22:23], s[2:3]
	v_frexp_exp_i32_f64_e32 v22, v[2:3]
	v_frexp_exp_i32_f64_e32 v23, v[4:5]
	v_ldexp_f64 v[2:3], v[10:11], 1
	v_add_f64 v[10:11], v[10:11], -v[20:21]
	v_mul_f64 v[4:5], v[26:27], v[14:15]
	v_ldexp_f64 v[14:15], v[12:13], 1
	v_add_f64 v[12:13], v[12:13], -v[24:25]
	v_mul_f64 v[16:17], v[18:19], v[16:17]
	v_subrev_co_ci_u32_e32 v18, vcc_lo, 0, v22, vcc_lo
	v_subrev_co_ci_u32_e64 v22, vcc_lo, 0, v23, s0
	s_mov_b32 s0, 0xfefa39ef
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)
	v_cvt_f64_i32_e32 v[18:19], v18
	s_mov_b32 s1, 0x3fe62e42
	v_cvt_f64_i32_e32 v[22:23], v22
	v_add_f64 v[6:7], v[6:7], -v[10:11]
	v_cmp_ne_u32_e32 vcc_lo, s14, v38
	v_add_f64 v[20:21], v[2:3], v[4:5]
	v_add_f64 v[8:9], v[8:9], -v[12:13]
	v_add_f64 v[24:25], v[14:15], v[16:17]
	v_mul_f64 v[26:27], v[18:19], s[0:1]
	v_mul_f64 v[28:29], v[22:23], s[0:1]
	v_ldexp_f64 v[6:7], v[6:7], 1
	v_add_f64 v[2:3], v[20:21], -v[2:3]
	v_add_f64 v[10:11], v[24:25], -v[14:15]
	v_fma_f64 v[12:13], v[18:19], s[0:1], -v[26:27]
	v_fma_f64 v[14:15], v[22:23], s[0:1], -v[28:29]
	s_mov_b32 s0, 0x3b39803f
	s_mov_b32 s1, 0x3c7abc9e
	s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_3) | instid1(VALU_DEP_4)
	v_add_f64 v[2:3], v[4:5], -v[2:3]
	v_ldexp_f64 v[4:5], v[8:9], 1
	v_add_f64 v[8:9], v[16:17], -v[10:11]
	v_fma_f64 v[10:11], v[18:19], s[0:1], v[12:13]
	v_add_f64 v[2:3], v[6:7], v[2:3]
	v_fma_f64 v[6:7], v[22:23], s[0:1], v[14:15]
	s_cselect_b32 s0, -1, 0
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[4:5], v[4:5], v[8:9]
	v_add_f64 v[8:9], v[26:27], v[10:11]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[12:13], v[20:21], v[2:3]
	v_add_f64 v[14:15], v[28:29], v[6:7]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[16:17], v[24:25], v[4:5]
	v_add_f64 v[26:27], v[8:9], -v[26:27]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[18:19], v[8:9], v[12:13]
	v_add_f64 v[28:29], v[14:15], -v[28:29]
	v_add_f64 v[20:21], v[12:13], -v[20:21]
	v_add_f64 v[22:23], v[14:15], v[16:17]
	v_add_f64 v[24:25], v[16:17], -v[24:25]
	v_add_f64 v[10:11], v[10:11], -v[26:27]
	v_add_f64 v[30:31], v[18:19], -v[8:9]
	v_add_f64 v[6:7], v[6:7], -v[28:29]
	v_add_f64 v[2:3], v[2:3], -v[20:21]
	v_add_f64 v[32:33], v[22:23], -v[14:15]
	v_add_f64 v[4:5], v[4:5], -v[24:25]
	v_add_f64 v[34:35], v[18:19], -v[30:31]
	v_add_f64 v[12:13], v[12:13], -v[30:31]
	v_add_f64 v[20:21], v[10:11], v[2:3]
	v_add_f64 v[36:37], v[22:23], -v[32:33]
	v_add_f64 v[16:17], v[16:17], -v[32:33]
	v_add_f64 v[8:9], v[8:9], -v[34:35]
	s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[14:15], v[14:15], -v[36:37]
	v_add_f64 v[8:9], v[12:13], v[8:9]
	v_add_f64 v[12:13], v[6:7], v[4:5]
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)
	v_add_f64 v[14:15], v[16:17], v[14:15]
	v_add_f64 v[16:17], v[20:21], -v[10:11]
	v_add_f64 v[8:9], v[20:21], v[8:9]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[24:25], v[12:13], -v[6:7]
	v_add_f64 v[14:15], v[12:13], v[14:15]
	s_delay_alu instid0(VALU_DEP_4)
	v_add_f64 v[20:21], v[20:21], -v[16:17]
	v_add_f64 v[2:3], v[2:3], -v[16:17]
	v_add_f64 v[26:27], v[18:19], v[8:9]
	v_add_f64 v[12:13], v[12:13], -v[24:25]
	v_add_f64 v[4:5], v[4:5], -v[24:25]
	v_add_f64 v[28:29], v[22:23], v[14:15]
	v_add_f64 v[10:11], v[10:11], -v[20:21]
	v_add_f64 v[16:17], v[26:27], -v[18:19]
	v_add_f64 v[6:7], v[6:7], -v[12:13]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[12:13], v[28:29], -v[22:23]
	v_add_f64 v[2:3], v[2:3], v[10:11]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_f64 v[8:9], v[8:9], -v[16:17]
	v_add_f64 v[4:5], v[4:5], v[6:7]
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)
	v_add_f64 v[6:7], v[14:15], -v[12:13]
	v_add_f64 v[2:3], v[2:3], v[8:9]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[4:5], v[6:7]
	v_add_f64 v[2:3], v[26:27], v[2:3]
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
	v_add_f64 v[4:5], v[28:29], v[4:5]
	v_cndmask_b32_e64 v3, 0xfff00000, v3, s0
	s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_3)
	v_cndmask_b32_e64 v2, 0, v2, s0
	s_getpc_b64 s[0:1]
	s_add_u32 s0, s0, Rvalues@rel32@lo+4
	s_addc_u32 s1, s1, Rvalues@rel32@hi+12
	v_cndmask_b32_e32 v5, 0xfff00000, v5, vcc_lo
	s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_cndmask_b32_e32 v4, 0, v4, vcc_lo
	v_div_scale_f64 v[6:7], null, v[2:3], v[2:3], v[4:5]
	v_div_scale_f64 v[12:13], vcc_lo, v[4:5], v[2:3], v[4:5]
	s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)
	v_rcp_f64_e32 v[8:9], v[6:7]
	s_waitcnt_depctr 0xfff
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.0
	v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[10:11], v[12:13], v[8:9]
	v_fma_f64 v[6:7], -v[6:7], v[10:11], v[12:13]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[10:11]
	v_div_fixup_f64 v[2:3], v[6:7], v[2:3], v[4:5]
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mul_f64 v[2:3], 0x406fe000, v[2:3]
	v_cvt_u32_f64_e32 v2, v[2:3]
	v_mov_b32_e32 v3, 0
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[2:3], 3, v[2:3]
	v_add_co_u32 v4, vcc_lo, v2, s0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v5, vcc_lo, s1, v3, vcc_lo
	v_add_co_u32 v6, vcc_lo, s4, v0
	s_getpc_b64 s[0:1]
	s_add_u32 s0, s0, Gvalues@rel32@lo+4
	s_addc_u32 s1, s1, Gvalues@rel32@hi+12
	global_load_b64 v[4:5], v[4:5], off
	v_add_co_ci_u32_e32 v7, vcc_lo, s5, v1, vcc_lo
	v_add_co_u32 v8, vcc_lo, v2, s0
	v_add_co_ci_u32_e32 v9, vcc_lo, s1, v3, vcc_lo
	s_getpc_b64 s[0:1]
	s_add_u32 s0, s0, Bvalues@rel32@lo+4
	s_addc_u32 s1, s1, Bvalues@rel32@hi+12
	s_waitcnt vmcnt(0)
	global_store_b64 v[6:7], v[4:5], off
	global_load_b64 v[4:5], v[8:9], off
	v_add_co_u32 v6, vcc_lo, s6, v0
	v_add_co_ci_u32_e32 v7, vcc_lo, s7, v1, vcc_lo
	v_add_co_u32 v2, vcc_lo, v2, s0
	v_add_co_ci_u32_e32 v3, vcc_lo, s1, v3, vcc_lo
	v_add_co_u32 v0, vcc_lo, s8, v0
	v_add_co_ci_u32_e32 v1, vcc_lo, s9, v1, vcc_lo
	s_waitcnt vmcnt(0)
	global_store_b64 v[6:7], v[4:5], off
	global_load_b64 v[2:3], v[2:3], off
	s_waitcnt vmcnt(0)
	global_store_b64 v[0:1], v[2:3], off
.LBB0_8:
	s_nop 0
	s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 320
		.amdhsa_user_sgpr_count 14
		.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 1
		.amdhsa_system_sgpr_workgroup_id_z 0
		.amdhsa_system_sgpr_workgroup_info 0
		.amdhsa_system_vgpr_workitem_id 1
		.amdhsa_next_free_vgpr 39
		.amdhsa_next_free_sgpr 16
		.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	_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj, .Lfunc_end0-_Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 2376
; NumSgprs: 18
; NumVgprs: 39
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 2
; VGPRBlocks: 4
; NumSGPRsForWavesPerEU: 18
; NumVGPRsForWavesPerEU: 39
; Occupancy: 16
; WaveLimiterHint : 0
; COMPUTE_PGM_RSRC2:SCRATCH_EN: 0
; COMPUTE_PGM_RSRC2:USER_SGPR: 14
; COMPUTE_PGM_RSRC2:TRAP_HANDLER: 0
; COMPUTE_PGM_RSRC2:TGID_X_EN: 1
; COMPUTE_PGM_RSRC2:TGID_Y_EN: 1
; COMPUTE_PGM_RSRC2:TGID_Z_EN: 0
; COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 1
	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.protected	Rvalues                 ; @Rvalues
	.type	Rvalues,@object
	.data
	.globl	Rvalues
	.p2align	4, 0x0
Rvalues:
	.quad	0x3fcf0068db8bac71              ; double 0.2422
	.quad	0x3fcf487fcb923a2a              ; double 0.24440000000000001
	.quad	0x3fcf8a0902de00d2              ; double 0.24640000000000001
	.quad	0x3fcfcb923a29c77a              ; double 0.24840000000000001
	.quad	0x3fd004ea4a8c154d              ; double 0.25030000000000002
	.quad	0x3fd0240b780346dc              ; double 0.25219999999999998
	.quad	0x3fd04189374bc6a8              ; double 0.254
	.quad	0x3fd05f06f6944674              ; double 0.25580000000000003
	.quad	0x3fd07c84b5dcc63f              ; double 0.2576
	.quad	0x3fd09a027525460b              ; double 0.25940000000000002
	.quad	0x3fd0b5dcc63f1412              ; double 0.2611
	.quad	0x3fd0d1b71758e219              ; double 0.26279999999999998
	.quad	0x3fd0ed916872b021              ; double 0.26450000000000001
	.quad	0x3fd107c84b5dcc64              ; double 0.2661
	.quad	0x3fd1205bc01a36e3              ; double 0.2676
	.quad	0x3fd138ef34d6a162              ; double 0.26910000000000001
	.quad	0x3fd14e3bcd35a858              ; double 0.27039999999999997
	.quad	0x3fd163886594af4f              ; double 0.2717
	.quad	0x3fd177318fc50481              ; double 0.27289999999999998
	.quad	0x3fd189374bc6a7f0              ; double 0.27400000000000002
	.quad	0x3fd197f62b6ae7d5              ; double 0.27489999999999998
	.quad	0x3fd1a6b50b0f27bb              ; double 0.27579999999999999
	.quad	0x3fd1b3d07c84b5dd              ; double 0.27660000000000001
	.quad	0x3fd1c0ebedfa43fe              ; double 0.27739999999999998
	.quad	0x3fd1cc63f141205c              ; double 0.27810000000000001
	.quad	0x3fd1d7dbf487fcb9              ; double 0.27879999999999999
	.quad	0x3fd1e1b089a02752              ; double 0.27939999999999998
	.quad	0x3fd1e83e425aee63              ; double 0.27979999999999999
	.quad	0x3fd1eecbfb15b574              ; double 0.2802
	.quad	0x3fd1f559b3d07c85              ; double 0.28060000000000002
	.quad	0x3fd1fa43fe5c91d1              ; double 0.28089999999999998
	.quad	0x3fd1fd8adab9f55a              ; double 0.28110000000000002
	.quad	0x3fd200d1b71758e2              ; double 0.28129999999999999
	.quad	0x3fd2027525460aa6              ; double 0.28139999999999998
	.quad	0x3fd2027525460aa6              ; double 0.28139999999999998
	.quad	0x3fd200d1b71758e2              ; double 0.28129999999999999
	.quad	0x3fd1fd8adab9f55a              ; double 0.28110000000000002
	.quad	0x3fd1fa43fe5c91d1              ; double 0.28089999999999998
	.quad	0x3fd1f6fd21ff2e49              ; double 0.28070000000000001
	.quad	0x3fd1f06f69446738              ; double 0.28029999999999999
	.quad	0x3fd1e83e425aee63              ; double 0.27979999999999999
	.quad	0x3fd1dcc63f141206              ; double 0.27910000000000001
	.quad	0x3fd1d14e3bcd35a8              ; double 0.27839999999999998
	.quad	0x3fd1c432ca57a787              ; double 0.27760000000000001
	.quad	0x3fd1b3d07c84b5dd              ; double 0.27660000000000001
	.quad	0x3fd1a027525460aa              ; double 0.27539999999999998
	.quad	0x3fd18adab9f559b4              ; double 0.27410000000000001
	.quad	0x3fd172474538ef35              ; double 0.27260000000000001
	.quad	0x3fd15810624dd2f2              ; double 0.27100000000000002
	.quad	0x3fd138ef34d6a162              ; double 0.26910000000000001
	.quad	0x3fd116872b020c4a              ; double 0.26700000000000002
	.quad	0x3fd0f0d844d013a9              ; double 0.26469999999999999
	.quad	0x3fd0c63f141205bc              ; double 0.2621
	.quad	0x3fd095182a9930be              ; double 0.2591
	.quad	0x3fd05bc01a36e2eb              ; double 0.25559999999999999
	.quad	0x3fd01bda5119ce07              ; double 0.25169999999999998
	.quad	0x3fcfa786c226809d              ; double 0.24729999999999999
	.quad	0x3fcf06f694467382              ; double 0.2424
	.quad	0x3fce52bd3c361134              ; double 0.2369
	.quad	0x3fcd94af4f0d844d              ; double 0.2311
	.quad	0x3fcccccccccccccd              ; double 0.22500000000000001
	.quad	0x3fcc04ea4a8c154d              ; double 0.21890000000000001
	.quad	0x3fcb3d07c84b5dcc              ; double 0.21279999999999999
	.quad	0x3fca71de69ad42c4              ; double 0.20660000000000001
	.quad	0x3fc9ad42c3c9eecc              ; double 0.2006
	.quad	0x3fc8f5c28f5c28f6              ; double 0.19500000000000001
	.quad	0x3fc85bc01a36e2eb              ; double 0.1903
	.quad	0x3fc7ec56d5cfaace              ; double 0.18690000000000001
	.quad	0x3fc7a43fe5c91d15              ; double 0.1847
	.quad	0x3fc76fd21ff2e48f              ; double 0.18310000000000001
	.quad	0x3fc74538ef34d6a1              ; double 0.18179999999999999
	.quad	0x3fc71de69ad42c3d              ; double 0.18060000000000001
	.quad	0x3fc6f9db22d0e560              ; double 0.17949999999999999
	.quad	0x3fc6d916872b020c              ; double 0.17849999999999999
	.quad	0x3fc6c226809d4952              ; double 0.17780000000000001
	.quad	0x3fc6b1c432ca57a8              ; double 0.17730000000000001
	.quad	0x3fc6a161e4f765fe              ; double 0.17680000000000001
	.quad	0x3fc694467381d7dc              ; double 0.1764
	.quad	0x3fc676c8b4395810              ; double 0.17549999999999999
	.quad	0x3fc645a1cac08312              ; double 0.17399999999999999
	.quad	0x3fc5f6fd21ff2e49              ; double 0.1716
	.quad	0x3fc594af4f0d844d              ; double 0.1686
	.quad	0x3fc51b71758e2196              ; double 0.16489999999999999
	.quad	0x3fc49ba5e353f7cf              ; double 0.161
	.quad	0x3fc4226809d49518              ; double 0.1573
	.quad	0x3fc3b645a1cac083              ; double 0.154
	.quad	0x3fc35dcc63f14120              ; double 0.15129999999999999
	.quad	0x3fc318fc504816f0              ; double 0.1492
	.quad	0x3fc2e147ae147ae1              ; double 0.14749999999999999
	.quad	0x3fc2b367a0f9096c              ; double 0.14610000000000001
	.quad	0x3fc28240b780346e              ; double 0.14460000000000001
	.quad	0x3fc24a8c154c985f              ; double 0.1429
	.quad	0x3fc205bc01a36e2f              ; double 0.14080000000000001
	.quad	0x3fc1b3d07c84b5dd              ; double 0.13830000000000001
	.quad	0x3fc154c985f06f69              ; double 0.13539999999999999
	.quad	0x3fc0e8a71de69ad4              ; double 0.1321
	.quad	0x3fc07c84b5dcc63f              ; double 0.1288
	.quad	0x3fc009d495182a99              ; double 0.12529999999999999
	.quad	0x3fbf34d6a161e4f7              ; double 0.12189999999999999
	.quad	0x3fbe5604189374bc              ; double 0.11849999999999999
	.quad	0x3fbd7dbf487fcb92              ; double 0.1152
	.quad	0x3fbca57a786c2268              ; double 0.1119
	.quad	0x3fbbc6a7ef9db22d              ; double 0.1085
	.quad	0x3fbad42c3c9eecc0              ; double 0.1048
	.quad	0x3fb9d495182a9931              ; double 0.1009
	.quad	0x3fb8adab9f559b3d              ; double 0.0964
	.quad	0x3fb765fd8adab9f5              ; double 0.091399999999999995
	.quad	0x3fb5e353f7ced917              ; double 0.085500000000000007
	.quad	0x3fb432ca57a786c2              ; double 0.078899999999999997
	.quad	0x3fb240b780346dc6              ; double 0.071300000000000002
	.quad	0x3fb013a92a305532              ; double 0.062799999999999995
	.quad	0x3fab645a1cac0831              ; double 0.053499999999999999
	.quad	0x3fa62b6ae7d566cf              ; double 0.043299999999999998
	.quad	0x3fa0cb295e9e1b09              ; double 0.032800000000000003
	.quad	0x3f97f62b6ae7d567              ; double 0.023400000000000001
	.quad	0x3f8fbe76c8b43958              ; double 0.0155
	.quad	0x3f82a305532617c2              ; double 0.0091000000000000004
	.quad	0x3f72d77318fc5048              ; double 0.0045999999999999999
	.quad	0x3f5f212d77318fc5              ; double 0.0019
	.quad	0x3f4d7dbf487fcb92              ; double 8.9999999999999998E-4
	.quad	0x3f5d7dbf487fcb92              ; double 0.0018
	.quad	0x3f72d77318fc5048              ; double 0.0045999999999999999
	.quad	0x3f83404ea4a8c155              ; double 0.0094000000000000003
	.quad	0x3f9096bb98c7e282              ; double 0.016199999999999999
	.quad	0x3f99e83e425aee63              ; double 0.0253
	.quad	0x3fa2e48e8a71de6a              ; double 0.036900000000000002
	.quad	0x3fa9ce075f6fd220              ; double 0.0504
	.quad	0x3fb05532617c1bda              ; double 0.063799999999999996
	.quad	0x3fb3b645a1cac083              ; double 0.076999999999999999
	.quad	0x3fb703afb7e90ff9              ; double 0.089899999999999994
	.quad	0x3fba305532617c1c              ; double 0.1023
	.quad	0x3fbd35a858793dd9              ; double 0.11409999999999999
	.quad	0x3fc0068db8bac711              ; double 0.12520000000000001
	.quad	0x3fc154c985f06f69              ; double 0.13539999999999999
	.quad	0x3fc288ce703afb7f              ; double 0.14480000000000001
	.quad	0x3fc39c0ebedfa440              ; double 0.1532
	.quad	0x3fc4985f06f69446              ; double 0.16089999999999999
	.quad	0x3fc57a786c22680a              ; double 0.1678
	.quad	0x3fc648e8a71de69b              ; double 0.1741
	.quad	0x3fc706f694467382              ; double 0.1799
	.quad	0x3fc7b7e90ff97247              ; double 0.18529999999999999
	.quad	0x3fc8624dd2f1a9fc              ; double 0.1905
	.quad	0x3fc902de00d1b717              ; double 0.19539999999999999
	.quad	0x3fc9a36e2eb1c433              ; double 0.20030000000000001
	.quad	0x3fca617c1bda511a              ; double 0.20610000000000001
	.quad	0x3fcb1c432ca57a78              ; double 0.21179999999999999
	.quad	0x3fcbe0ded288ce70              ; double 0.21779999999999999
	.quad	0x3fccb923a29c779a              ; double 0.22439999999999999
	.quad	0x3fcdab9f559b3d08              ; double 0.23180000000000001
	.quad	0x3fcebb98c7e28241              ; double 0.24010000000000001
	.quad	0x3fcfe28240b78034              ; double 0.24909999999999999
	.quad	0x3fd091d14e3bcd36              ; double 0.25890000000000002
	.quad	0x3fd13f7ced916873              ; double 0.26950000000000002
	.quad	0x3fd1fa43fe5c91d1              ; double 0.28089999999999998
	.quad	0x3fd2bedfa43fe5c9              ; double 0.29289999999999999
	.quad	0x3fd3886594af4f0e              ; double 0.30520000000000003
	.quad	0x3fd4538ef34d6a16              ; double 0.31759999999999999
	.quad	0x3fd5205bc01a36e3              ; double 0.3301
	.quad	0x3fd5e9e1b089a027              ; double 0.34239999999999998
	.quad	0x3fd6b50b0f27bb30              ; double 0.3548
	.quad	0x3fd77e90ff972474              ; double 0.36709999999999998
	.quad	0x3fd849ba5e353f7d              ; double 0.3795
	.quad	0x3fd9182a9930be0e              ; double 0.3921
	.quad	0x3fd9eb851eb851ec              ; double 0.40500000000000003
	.quad	0x3fdac710cb295e9e              ; double 0.41839999999999999
	.quad	0x3fdba92a30553261              ; double 0.43219999999999997
	.quad	0x3fdc902de00d1b71              ; double 0.44629999999999997
	.quad	0x3fdd7dbf487fcb92              ; double 0.46079999999999999
	.quad	0x3fde6b50b0f27bb3              ; double 0.4753
	.quad	0x3fdf5a858793dd98              ; double 0.4899
	.quad	0x3fe0240b780346dc              ; double 0.50439999999999996
	.quad	0x3fe09930be0ded29              ; double 0.51870000000000005
	.quad	0x3fe10d844d013a93              ; double 0.53290000000000004
	.quad	0x3fe1810624dd2f1b              ; double 0.54700000000000004
	.quad	0x3fe1f2e48e8a71de              ; double 0.56089999999999995
	.quad	0x3fe264c2f837b4a2              ; double 0.57479999999999998
	.quad	0x3fe2d5cfaacd9e84              ; double 0.58860000000000001
	.quad	0x3fe346dc5d638866              ; double 0.60240000000000005
	.quad	0x3fe3b71758e21965              ; double 0.61609999999999998
	.quad	0x3fe426809d495183              ; double 0.62970000000000004
	.quad	0x3fe495e9e1b089a0              ; double 0.64329999999999998
	.quad	0x3fe503afb7e90ff9              ; double 0.65669999999999995
	.quad	0x3fe571758e219653              ; double 0.67010000000000003
	.quad	0x3fe5dd97f62b6ae8              ; double 0.68330000000000002
	.quad	0x3fe64816f0068db9              ; double 0.69630000000000003
	.quad	0x3fe6b0f27bb2fec5              ; double 0.70909999999999995
	.quad	0x3fe718fc504816f0              ; double 0.7218
	.quad	0x3fe780346dc5d639              ; double 0.73440000000000005
	.quad	0x3fe7e5c91d14e3bd              ; double 0.74680000000000002
	.quad	0x3fe849ba5e353f7d              ; double 0.75900000000000001
	.quad	0x3fe8ac083126e979              ; double 0.77100000000000002
	.quad	0x3fe90d844d013a93              ; double 0.78290000000000004
	.quad	0x3fe96c8b43958106              ; double 0.79449999999999998
	.quad	0x3fe9cac083126e98              ; double 0.80600000000000005
	.quad	0x3fea26809d495183              ; double 0.81720000000000004
	.quad	0x3fea7fcb923a29c7              ; double 0.82809999999999995
	.quad	0x3fead844d013a92a              ; double 0.83889999999999998
	.quad	0x3feb2f1a9fbe76c9              ; double 0.84950000000000003
	.quad	0x3feb851eb851eb85              ; double 0.85999999999999999
	.quad	0x3febd97f62b6ae7d              ; double 0.87029999999999996
	.quad	0x3fec2c3c9eecbfb1              ; double 0.88039999999999996
	.quad	0x3fec7d566cf41f21              ; double 0.89029999999999998
	.quad	0x3feccccccccccccd              ; double 0.90000000000000002
	.quad	0x3fed18fc504816f0              ; double 0.9093
	.quad	0x3fed63886594af4f              ; double 0.91839999999999999
	.quad	0x3fedab9f559b3d08              ; double 0.92720000000000002
	.quad	0x3fedf141205bc01a              ; double 0.93569999999999998
	.quad	0x3fee353f7ced9168              ; double 0.94399999999999995
	.quad	0x3fee793dd97f62b7              ; double 0.95230000000000004
	.quad	0x3feebd3c36113405              ; double 0.9606
	.quad	0x3fef013a92a30553              ; double 0.96889999999999998
	.quad	0x3fef4395810624dd              ; double 0.97699999999999997
	.quad	0x3fef7e90ff972474              ; double 0.98419999999999996
	.quad	0x3fefae147ae147ae              ; double 0.98999999999999999
	.quad	0x3fefd3c36113404f              ; double 0.99460000000000003
	.quad	0x3fefe425aee631f9              ; double 0.99660000000000004
	.quad	0x3fefe83e425aee63              ; double 0.99709999999999998
	.quad	0x3fefe90ff9724745              ; double 0.99719999999999997
	.quad	0x3fefe83e425aee63              ; double 0.99709999999999998
	.quad	0x3fefe69ad42c3c9f              ; double 0.9969
	.quad	0x3fefe425aee631f9              ; double 0.99660000000000004
	.quad	0x3fefe0ded288ce70              ; double 0.99619999999999997
	.quad	0x3fefdcc63f141206              ; double 0.99570000000000003
	.quad	0x3fefd63886594af5              ; double 0.9949
	.quad	0x3fefcd35a858793e              ; double 0.99380000000000002
	.quad	0x3fefc0ebedfa43fe              ; double 0.99229999999999996
	.quad	0x3fefb2fec56d5cfb              ; double 0.99060000000000003
	.quad	0x3fefa1cac083126f              ; double 0.98850000000000004
	.quad	0x3fef8e219652bd3c              ; double 0.98609999999999997
	.quad	0x3fef78d4fdf3b646              ; double 0.98350000000000004
	.quad	0x3fef61e4f765fd8b              ; double 0.98070000000000001
	.quad	0x3fef4a2339c0ebee              ; double 0.9778
	.quad	0x3fef318fc504816f              ; double 0.97479999999999999
	.quad	0x3fef1a9fbe76c8b4              ; double 0.97199999999999997
	.quad	0x3fef05532617c1be              ; double 0.96940000000000004
	.quad	0x3feef27bb2fec56d              ; double 0.96709999999999995
	.quad	0x3feee219652bd3c3              ; double 0.96509999999999995
	.quad	0x3feed42c3c9eecc0              ; double 0.96340000000000003
	.quad	0x3feec7e28240b780              ; double 0.96189999999999998
	.quad	0x3feebedfa43fe5c9              ; double 0.96079999999999998
	.quad	0x3feeb923a29c779a              ; double 0.96009999999999995
	.quad	0x3feeb50b0f27bb30              ; double 0.95960000000000001
	.quad	0x3feeb4395810624e              ; double 0.95950000000000002
	.quad	0x3feeb5dcc63f1412              ; double 0.9597
	.quad	0x3feeb923a29c779a              ; double 0.96009999999999995
	.quad	0x3feebedfa43fe5c9              ; double 0.96079999999999998
	.quad	0x3feec710cb295e9e              ; double 0.96179999999999999
	.quad	0x3feed013a92a3055              ; double 0.96289999999999997
	.quad	0x3feedab9f559b3d0              ; double 0.96419999999999995
	.quad	0x3feee703afb7e910              ; double 0.9657
	.quad	0x3feef4f0d844d014              ; double 0.96740000000000003
	.quad	0x3fef03afb7e90ff9              ; double 0.96919999999999995
	.quad	0x3fef13404ea4a8c1              ; double 0.97109999999999996
	.quad	0x3fef22d0e5604189              ; double 0.97299999999999997
	.quad	0x3fef32617c1bda51              ; double 0.97489999999999998
	.quad	0x3fef42c3c9eecbfb              ; double 0.97689999999999999
	.size	Rvalues, 2048

	.protected	Gvalues                 ; @Gvalues
	.type	Gvalues,@object
	.globl	Gvalues
	.p2align	4, 0x0
Gvalues:
	.quad	0x3fc3404ea4a8c155              ; double 0.15040000000000001
	.quad	0x3fc3a29c779a6b51              ; double 0.15340000000000001
	.quad	0x3fc4154c985f06f7              ; double 0.15690000000000001
	.quad	0x3fc491d14e3bcd36              ; double 0.16070000000000001
	.quad	0x3fc5182a9930be0e              ; double 0.1648
	.quad	0x3fc59e83e425aee6              ; double 0.16889999999999999
	.quad	0x3fc62b6ae7d566cf              ; double 0.17319999999999999
	.quad	0x3fc6b1c432ca57a8              ; double 0.17730000000000001
	.quad	0x3fc7381d7dbf4880              ; double 0.18140000000000001
	.quad	0x3fc7bb2fec56d5d0              ; double 0.18540000000000001
	.quad	0x3fc83afb7e90ff97              ; double 0.1893
	.quad	0x3fc8bac710cb295f              ; double 0.19320000000000001
	.quad	0x3fc93dd97f62b6ae              ; double 0.19719999999999999
	.quad	0x3fc9bda5119ce076              ; double 0.2011
	.quad	0x3fca43fe5c91d14e              ; double 0.20519999999999999
	.quad	0x3fcacd9e83e425af              ; double 0.2094
	.quad	0x3fcb5dcc63f14120              ; double 0.21379999999999999
	.quad	0x3fcbf487fcb923a3              ; double 0.21840000000000001
	.quad	0x3fcc8e8a71de69ad              ; double 0.22309999999999999
	.quad	0x3fcd2f1a9fbe76c9              ; double 0.22800000000000001
	.quad	0x3fcdd2f1a9fbe76d              ; double 0.23300000000000001
	.quad	0x3fce7d566cf41f21              ; double 0.2382
	.quad	0x3fcf2b020c49ba5e              ; double 0.24349999999999999
	.quad	0x3fcfdbf487fcb924              ; double 0.24890000000000001
	.quad	0x3fd0467381d7dbf5              ; double 0.25430000000000003
	.quad	0x3fd0a0902de00d1b              ; double 0.25979999999999998
	.quad	0x3fd0faacd9e83e42              ; double 0.26529999999999998
	.quad	0x3fd154c985f06f69              ; double 0.27079999999999999
	.quad	0x3fd1b089a0275254              ; double 0.27639999999999998
	.quad	0x3fd20aa64c2f837b              ; double 0.28189999999999998
	.quad	0x3fd2666666666666              ; double 0.28749999999999998
	.quad	0x3fd2c083126e978d              ; double 0.29299999999999998
	.quad	0x3fd31a9fbe76c8b4              ; double 0.29849999999999999
	.quad	0x3fd374bc6a7ef9db              ; double 0.30399999999999999
	.quad	0x3fd3ced916872b02              ; double 0.3095
	.quad	0x3fd428f5c28f5c29              ; double 0.315
	.quad	0x3fd4816f0068db8c              ; double 0.32040000000000002
	.quad	0x3fd4db8bac710cb3              ; double 0.32590000000000002
	.quad	0x3fd53404ea4a8c15              ; double 0.33129999999999998
	.quad	0x3fd58c7e28240b78              ; double 0.3367
	.quad	0x3fd5e4f765fd8adb              ; double 0.34210000000000002
	.quad	0x3fd63d70a3d70a3d              ; double 0.34749999999999998
	.quad	0x3fd695e9e1b089a0              ; double 0.35289999999999999
	.quad	0x3fd6ee631f8a0903              ; double 0.35830000000000001
	.quad	0x3fd7487fcb923a2a              ; double 0.36380000000000001
	.quad	0x3fd7a29c779a6b51              ; double 0.36930000000000002
	.quad	0x3fd7fcb923a29c78              ; double 0.37480000000000002
	.quad	0x3fd858793dd97f63              ; double 0.38040000000000002
	.quad	0x3fd8b4395810624e              ; double 0.38600000000000001
	.quad	0x3fd90ff972474539              ; double 0.3916
	.quad	0x3fd96d5cfaacd9e8              ; double 0.39729999999999999
	.quad	0x3fd9cac083126e98              ; double 0.40300000000000002
	.quad	0x3fda29c779a6b50b              ; double 0.4088
	.quad	0x3fda872b020c49ba              ; double 0.41449999999999998
	.quad	0x3fdae631f8a0902e              ; double 0.42030000000000001
	.quad	0x3fdb4538ef34d6a1              ; double 0.42609999999999998
	.quad	0x3fdba43fe5c91d15              ; double 0.43190000000000001
	.quad	0x3fdc04ea4a8c154d              ; double 0.43780000000000002
	.quad	0x3fdc6594af4f0d84              ; double 0.44369999999999998
	.quad	0x3fdcc7e28240b780              ; double 0.44969999999999999
	.quad	0x3fdd2d77318fc505              ; double 0.45590000000000003
	.quad	0x3fdd916872b020c5              ; double 0.46200000000000002
	.quad	0x3fddf6fd21ff2e49              ; double 0.46820000000000001
	.quad	0x3fde5aee631f8a09              ; double 0.4743
	.quad	0x3fdebd3c36113405              ; double 0.4803
	.quad	0x3fdf1c432ca57a78              ; double 0.48609999999999998
	.quad	0x3fdf7b4a2339c0ec              ; double 0.4919
	.quad	0x3fdfd70a3d70a3d7              ; double 0.4975
	.quad	0x3fe0189374bc6a7f              ; double 0.503
	.quad	0x3fe044d013a92a30              ; double 0.50839999999999996
	.quad	0x3fe0710cb295e9e2              ; double 0.51380000000000003
	.quad	0x3fe09c779a6b50b1              ; double 0.51910000000000001
	.quad	0x3fe0c7e28240b780              ; double 0.52439999999999998
	.quad	0x3fe0f27bb2fec56d              ; double 0.52959999999999996
	.quad	0x3fe11de69ad42c3d              ; double 0.53490000000000004
	.quad	0x3fe1487fcb923a2a              ; double 0.54010000000000002
	.quad	0x3fe172474538ef35              ; double 0.54520000000000002
	.quad	0x3fe19ce075f6fd22              ; double 0.5504
	.quad	0x3fe1c5d63886594b              ; double 0.5554
	.quad	0x3fe1ef9db22d0e56              ; double 0.5605
	.quad	0x3fe2189374bc6a7f              ; double 0.5655
	.quad	0x3fe24189374bc6a8              ; double 0.57050000000000001
	.quad	0x3fe26a7ef9db22d1              ; double 0.57550000000000001
	.quad	0x3fe29374bc6a7efa              ; double 0.58050000000000002
	.quad	0x3fe2bb98c7e28241              ; double 0.58540000000000003
	.quad	0x3fe2e2eb1c432ca5              ; double 0.59019999999999995
	.quad	0x3fe30a3d70a3d70a              ; double 0.59499999999999997
	.quad	0x3fe330be0ded288d              ; double 0.59970000000000001
	.quad	0x3fe3566cf41f212d              ; double 0.60429999999999995
	.quad	0x3fe37c1bda5119ce              ; double 0.6089
	.quad	0x3fe3a1cac083126f              ; double 0.61350000000000005
	.quad	0x3fe3c6a7ef9db22d              ; double 0.61799999999999999
	.quad	0x3fe3ec56d5cfaace              ; double 0.62260000000000004
	.quad	0x3fe41205bc01a36e              ; double 0.62719999999999998
	.quad	0x3fe436e2eb1c432d              ; double 0.63170000000000004
	.quad	0x3fe45c91d14e3bcd              ; double 0.63629999999999998
	.quad	0x3fe4816f0068db8c              ; double 0.64080000000000004
	.quad	0x3fe4a64c2f837b4a              ; double 0.64529999999999998
	.quad	0x3fe4ca57a786c227              ; double 0.64970000000000006
	.quad	0x3fe4ee631f8a0903              ; double 0.65410000000000001
	.quad	0x3fe5119ce075f6fd              ; double 0.65839999999999999
	.quad	0x3fe534d6a161e4f7              ; double 0.66269999999999996
	.quad	0x3fe5573eab367a10              ; double 0.66690000000000005
	.quad	0x3fe578d4fdf3b646              ; double 0.67100000000000004
	.quad	0x3fe599999999999a              ; double 0.67500000000000004
	.quad	0x3fe5b98c7e28240b              ; double 0.67889999999999995
	.quad	0x3fe5d97f62b6ae7d              ; double 0.68279999999999996
	.quad	0x3fe5f7ced916872b              ; double 0.6865
	.quad	0x3fe6161e4f765fd9              ; double 0.69020000000000004
	.quad	0x3fe6339c0ebedfa4              ; double 0.69379999999999997
	.quad	0x3fe64f765fd8adac              ; double 0.69720000000000004
	.quad	0x3fe66b50b0f27bb3              ; double 0.7006
	.quad	0x3fe686594af4f0d8              ; double 0.70389999999999997
	.quad	0x3fe6a0902de00d1b              ; double 0.70709999999999995
	.quad	0x3fe6bac710cb295f              ; double 0.71030000000000004
	.quad	0x3fe6d35a858793de              ; double 0.71330000000000005
	.quad	0x3fe6ebedfa43fe5d              ; double 0.71630000000000005
	.quad	0x3fe703afb7e90ff9              ; double 0.71919999999999995
	.quad	0x3fe71a9fbe76c8b4              ; double 0.72199999999999998
	.quad	0x3fe7318fc504816f              ; double 0.7248
	.quad	0x3fe747ae147ae148              ; double 0.72750000000000004
	.quad	0x3fe75cfaacd9e83e              ; double 0.73009999999999997
	.quad	0x3fe772474538ef35              ; double 0.73270000000000002
	.quad	0x3fe786c226809d49              ; double 0.73519999999999996
	.quad	0x3fe79a6b50b0f27c              ; double 0.73760000000000003
	.quad	0x3fe7ae147ae147ae              ; double 0.73999999999999999
	.quad	0x3fe7c0ebedfa43fe              ; double 0.74229999999999996
	.quad	0x3fe7d3c36113404f              ; double 0.74460000000000004
	.quad	0x3fe7e5c91d14e3bd              ; double 0.74680000000000002
	.quad	0x3fe7f6fd21ff2e49              ; double 0.74890000000000001
	.quad	0x3fe8083126e978d5              ; double 0.751
	.quad	0x3fe819652bd3c361              ; double 0.75309999999999999
	.quad	0x3fe82a9930be0ded              ; double 0.75519999999999998
	.quad	0x3fe83afb7e90ff97              ; double 0.75719999999999998
	.quad	0x3fe84c2f837b4a23              ; double 0.75929999999999997
	.quad	0x3fe85d63886594af              ; double 0.76139999999999997
	.quad	0x3fe86e978d4fdf3b              ; double 0.76349999999999996
	.quad	0x3fe87fcb923a29c7              ; double 0.76559999999999995
	.quad	0x3fe891d14e3bcd36              ; double 0.76780000000000004
	.quad	0x3fe8a305532617c2              ; double 0.76990000000000003
	.quad	0x3fe8b50b0f27bb30              ; double 0.77210000000000001
	.quad	0x3fe8c710cb295e9e              ; double 0.77429999999999999
	.quad	0x3fe8d916872b020c              ; double 0.77649999999999996
	.quad	0x3fe8eb1c432ca57a              ; double 0.77869999999999995
	.quad	0x3fe8fc504816f007              ; double 0.78080000000000005
	.quad	0x3fe90cb295e9e1b1              ; double 0.78280000000000005
	.quad	0x3fe91de69ad42c3d              ; double 0.78490000000000004
	.quad	0x3fe92e48e8a71de7              ; double 0.78690000000000004
	.quad	0x3fe93d07c84b5dcc              ; double 0.78869999999999995
	.quad	0x3fe94bc6a7ef9db2              ; double 0.79049999999999998
	.quad	0x3fe959b3d07c84b6              ; double 0.79220000000000002
	.quad	0x3fe965fd8adab9f5              ; double 0.79369999999999996
	.quad	0x3fe971758e219653              ; double 0.79510000000000003
	.quad	0x3fe97c1bda5119ce              ; double 0.7964
	.quad	0x3fe9851eb851eb85              ; double 0.79749999999999999
	.quad	0x3fe98d4fdf3b645a              ; double 0.79849999999999999
	.quad	0x3fe994af4f0d844d              ; double 0.7994
	.quad	0x3fe99b3d07c84b5e              ; double 0.80020000000000002
	.quad	0x3fe9a0f9096bb98c              ; double 0.80089999999999994
	.quad	0x3fe9a6b50b0f27bb              ; double 0.80159999999999998
	.quad	0x3fe9aacd9e83e426              ; double 0.80210000000000004
	.quad	0x3fe9aee631f8a090              ; double 0.80259999999999998
	.quad	0x3fe9b15b573eab36              ; double 0.80289999999999995
	.quad	0x3fe9b2fec56d5cfb              ; double 0.80310000000000004
	.quad	0x3fe9b22d0e560419              ; double 0.80300000000000005
	.quad	0x3fe9b089a0275254              ; double 0.80279999999999995
	.quad	0x3fe9ad42c3c9eecc              ; double 0.8024
	.quad	0x3fe9a858793dd97f              ; double 0.80179999999999996
	.quad	0x3fe9a29c779a6b51              ; double 0.80110000000000003
	.quad	0x3fe99b3d07c84b5e              ; double 0.80020000000000002
	.quad	0x3fe993dd97f62b6b              ; double 0.79930000000000001
	.quad	0x3fe98adab9f559b4              ; double 0.79820000000000002
	.quad	0x3fe9810624dd2f1b              ; double 0.79700000000000004
	.quad	0x3fe9765fd8adab9f              ; double 0.79569999999999996
	.quad	0x3fe96ae7d566cf42              ; double 0.79430000000000001
	.quad	0x3fe95f6fd21ff2e5              ; double 0.79290000000000005
	.quad	0x3fe9525460aa64c3              ; double 0.7913
	.quad	0x3fe94467381d7dbf              ; double 0.78959999999999997
	.quad	0x3fe935a858793dd9              ; double 0.78779999999999994
	.quad	0x3fe92617c1bda512              ; double 0.78590000000000004
	.quad	0x3fe915b573eab368              ; double 0.78390000000000004
	.quad	0x3fe904816f0068dc              ; double 0.78180000000000005
	.quad	0x3fe8f27bb2fec56d              ; double 0.77959999999999996
	.quad	0x3fe8dfa43fe5c91d              ; double 0.77729999999999999
	.quad	0x3fe8cccccccccccd              ; double 0.77500000000000002
	.quad	0x3fe8b9f559b3d07d              ; double 0.77270000000000005
	.quad	0x3fe8a64c2f837b4a              ; double 0.77029999999999998
	.quad	0x3fe892a305532618              ; double 0.76790000000000003
	.quad	0x3fe87e28240b7803              ; double 0.76539999999999997
	.quad	0x3fe869ad42c3c9ef              ; double 0.76290000000000002
	.quad	0x3fe85532617c1bda              ; double 0.76039999999999996
	.quad	0x3fe840b780346dc6              ; double 0.75790000000000002
	.quad	0x3fe82c3c9eecbfb1              ; double 0.75539999999999996
	.quad	0x3fe817c1bda5119d              ; double 0.75290000000000001
	.quad	0x3fe804189374bc6a              ; double 0.75049999999999994
	.quad	0x3fe7f06f69446738              ; double 0.74809999999999999
	.quad	0x3fe7dcc63f141206              ; double 0.74570000000000003
	.quad	0x3fe7cac083126e98              ; double 0.74350000000000005
	.quad	0x3fe7b8bac710cb29              ; double 0.74129999999999996
	.quad	0x3fe7a786c226809d              ; double 0.73919999999999997
	.quad	0x3fe7972474538ef3              ; double 0.73719999999999997
	.quad	0x3fe78793dd97f62b              ; double 0.73529999999999995
	.quad	0x3fe779a6b50b0f28              ; double 0.73360000000000003
	.quad	0x3fe76d5cfaacd9e8              ; double 0.73209999999999997
	.quad	0x3fe762b6ae7d566d              ; double 0.73080000000000001
	.quad	0x3fe75a858793dd98              ; double 0.7298
	.quad	0x3fe753f7ced91687              ; double 0.72899999999999998
	.quad	0x3fe74fdf3b645a1d              ; double 0.72850000000000004
	.quad	0x3fe74f0d844d013b              ; double 0.72840000000000005
	.quad	0x3fe74fdf3b645a1d              ; double 0.72850000000000004
	.quad	0x3fe7559b3d07c84b              ; double 0.72919999999999996
	.quad	0x3fe75f6fd21ff2e5              ; double 0.73040000000000005
	.quad	0x3fe774bc6a7ef9db              ; double 0.73299999999999998
	.quad	0x3fe7916872b020c5              ; double 0.73650000000000004
	.quad	0x3fe7b3d07c84b5dd              ; double 0.74070000000000003
	.quad	0x3fe7dd97f62b6ae8              ; double 0.74580000000000002
	.quad	0x3fe80aa64c2f837b              ; double 0.75129999999999997
	.quad	0x3fe83886594af4f1              ; double 0.75690000000000002
	.quad	0x3fe867381d7dbf48              ; double 0.76259999999999994
	.quad	0x3fe895e9e1b089a0              ; double 0.76829999999999998
	.quad	0x3fe8c49ba5e353f8              ; double 0.77400000000000002
	.quad	0x3fe8f41f212d7732              ; double 0.77980000000000005
	.quad	0x3fe923a29c779a6b              ; double 0.78559999999999997
	.quad	0x3fe953f7ced91687              ; double 0.79149999999999998
	.quad	0x3fe9844d013a92a3              ; double 0.7974
	.quad	0x3fe9b573eab367a1              ; double 0.8034
	.quad	0x3fe9e76c8b439581              ; double 0.8095
	.quad	0x3fea19652bd3c361              ; double 0.81559999999999999
	.quad	0x3fea4c2f837b4a23              ; double 0.82179999999999997
	.quad	0x3fea7ef9db22d0e5              ; double 0.82799999999999996
	.quad	0x3feab1c432ca57a8              ; double 0.83420000000000005
	.quad	0x3feae48e8a71de6a              ; double 0.84040000000000004
	.quad	0x3feb182a9930be0e              ; double 0.84670000000000001
	.quad	0x3feb4af4f0d844d0              ; double 0.85289999999999999
	.quad	0x3feb7dbf487fcb92              ; double 0.85909999999999997
	.quad	0x3febb15b573eab36              ; double 0.86539999999999995
	.quad	0x3febe425aee631f9              ; double 0.87160000000000004
	.quad	0x3fec16f0068db8bb              ; double 0.87780000000000002
	.quad	0x3fec49ba5e353f7d              ; double 0.88400000000000001
	.quad	0x3fec7c84b5dcc63f              ; double 0.89019999999999999
	.quad	0x3fecae7d566cf41f              ; double 0.89629999999999999
	.quad	0x3fecdfa43fe5c91d              ; double 0.90229999999999999
	.quad	0x3fed119ce075f6fd              ; double 0.90839999999999999
	.quad	0x3fed41f212d77319              ; double 0.9143
	.quad	0x3fed7318fc504817              ; double 0.92030000000000001
	.quad	0x3feda36e2eb1c433              ; double 0.92620000000000002
	.quad	0x3fedd2f1a9fbe76d              ; double 0.93200000000000005
	.quad	0x3fee0346dc5d6388              ; double 0.93789999999999995
	.quad	0x3fee32ca57a786c2              ; double 0.94369999999999998
	.quad	0x3fee617c1bda511a              ; double 0.94940000000000002
	.quad	0x3fee90ff97247454              ; double 0.95520000000000004
	.quad	0x3feebfb15b573eab              ; double 0.96089999999999997
	.quad	0x3feeef34d6a161e5              ; double 0.9667
	.quad	0x3fef1de69ad42c3d              ; double 0.97240000000000004
	.quad	0x3fef4d6a161e4f76              ; double 0.97819999999999996
	.quad	0x3fef7c1bda5119ce              ; double 0.9839
	.size	Gvalues, 2048

	.protected	Bvalues                 ; @Bvalues
	.type	Bvalues,@object
	.globl	Bvalues
	.p2align	4, 0x0
Bvalues:
	.quad	0x3fe5212d77318fc5              ; double 0.6603
	.quad	0x3fe58793dd97f62b              ; double 0.67279999999999995
	.quad	0x3fe5e90ff9724745              ; double 0.68469999999999998
	.quad	0x3fe6467381d7dbf5              ; double 0.69610000000000005
	.quad	0x3fe6a0902de00d1b              ; double 0.70709999999999995
	.quad	0x3fe6f9096bb98c7e              ; double 0.71789999999999998
	.quad	0x3fe750b0f27bb2ff              ; double 0.72860000000000003
	.quad	0x3fe7a858793dd97f              ; double 0.73929999999999996
	.quad	0x3fe800d1b71758e2              ; double 0.75009999999999999
	.quad	0x3fe85a1cac083127              ; double 0.76100000000000001
	.quad	0x3fe8b367a0f9096c              ; double 0.77190000000000003
	.quad	0x3fe90cb295e9e1b1              ; double 0.78280000000000005
	.quad	0x3fe965fd8adab9f5              ; double 0.79369999999999996
	.quad	0x3fe9bcd35a858794              ; double 0.80430000000000001
	.quad	0x3fea12d77318fc50              ; double 0.81479999999999997
	.quad	0x3fea6594af4f0d84              ; double 0.82489999999999996
	.quad	0x3feab50b0f27bb30              ; double 0.83460000000000001
	.quad	0x3feb013a92a30553              ; double 0.84389999999999998
	.quad	0x3feb4a2339c0ebee              ; double 0.8528
	.quad	0x3feb8ef34d6a161e              ; double 0.86119999999999997
	.quad	0x3febd07c84b5dcc6              ; double 0.86919999999999997
	.quad	0x3fec0ded288ce704              ; double 0.87670000000000003
	.quad	0x3fec49ba5e353f7d              ; double 0.88400000000000001
	.quad	0x3fec816f0068db8c              ; double 0.89080000000000003
	.quad	0x3fecb6ae7d566cf4              ; double 0.89729999999999998
	.quad	0x3fece978d4fdf3b6              ; double 0.90349999999999997
	.quad	0x3fed19ce075f6fd2              ; double 0.90939999999999999
	.quad	0x3fed47ae147ae148              ; double 0.91500000000000004
	.quad	0x3fed73eab367a0f9              ; double 0.9204
	.quad	0x3fed9db22d0e5604              ; double 0.92549999999999998
	.quad	0x3fedc6a7ef9db22d              ; double 0.93049999999999999
	.quad	0x3feded288ce703b0              ; double 0.93520000000000003
	.quad	0x3fee1205bc01a36e              ; double 0.93969999999999998
	.quad	0x3fee36113404ea4b              ; double 0.94410000000000005
	.quad	0x3fee58793dd97f63              ; double 0.94830000000000003
	.quad	0x3fee7a0f9096bb99              ; double 0.95240000000000002
	.quad	0x3fee9a027525460b              ; double 0.95630000000000004
	.quad	0x3feeb851eb851eb8              ; double 0.95999999999999996
	.quad	0x3feed5cfaacd9e84              ; double 0.96360000000000001
	.quad	0x3feef1a9fbe76c8b              ; double 0.96699999999999997
	.quad	0x3fef0be0ded288ce              ; double 0.97019999999999995
	.quad	0x3fef25460aa64c30              ; double 0.97330000000000005
	.quad	0x3fef3dd97f62b6ae              ; double 0.97629999999999995
	.quad	0x3fef54c985f06f69              ; double 0.97909999999999997
	.quad	0x3fef6a161e4f7660              ; double 0.98170000000000001
	.quad	0x3fef7ced916872b0              ; double 0.98399999999999999
	.quad	0x3fef8ef34d6a161e              ; double 0.98619999999999997
	.quad	0x3fef9e83e425aee6              ; double 0.98809999999999998
	.quad	0x3fefac710cb295ea              ; double 0.98980000000000001
	.quad	0x3fefb7e90ff97247              ; double 0.99119999999999996
	.quad	0x3fefc1bda5119ce0              ; double 0.99239999999999994
	.quad	0x3fefcac083126e98              ; double 0.99350000000000004
	.quad	0x3fefd3c36113404f              ; double 0.99460000000000003
	.quad	0x3fefdb22d0e56042              ; double 0.99550000000000005
	.quad	0x3fefe353f7ced917              ; double 0.99650000000000005
	.quad	0x3fefeab367a0f909              ; double 0.99739999999999995
	.quad	0x3feff212d77318fc              ; double 0.99829999999999996
	.quad	0x3feff8a0902de00d              ; double 0.99909999999999998
	.quad	0x3feffcb923a29c78              ; double 0.99960000000000004
	.quad	0x3feffbe76c8b4396              ; double 0.99950000000000006
	.quad	0x3feff3b645a1cac1              ; double 0.99850000000000005
	.quad	0x3fefe5c91d14e3bd              ; double 0.99680000000000001
	.quad	0x3fefd566cf41f213              ; double 0.99480000000000001
	.quad	0x3fefc36113404ea5              ; double 0.99260000000000003
	.quad	0x3fefb2fec56d5cfb              ; double 0.99060000000000003
	.quad	0x3fefa36e2eb1c433              ; double 0.98870000000000002
	.quad	0x3fef930be0ded289              ; double 0.98670000000000002
	.quad	0x3fef80346dc5d639              ; double 0.98440000000000005
	.quad	0x3fef6bb98c7e2824              ; double 0.98189999999999999
	.quad	0x3fef566cf41f212d              ; double 0.97929999999999994
	.quad	0x3fef404ea4a8c155              ; double 0.97660000000000002
	.quad	0x3fef295e9e1b089a              ; double 0.9738
	.quad	0x3fef119ce075f6fd              ; double 0.97089999999999998
	.quad	0x3feef765fd8adaba              ; double 0.9677
	.quad	0x3feed9e83e425aee              ; double 0.96409999999999996
	.quad	0x3feeb9f559b3d07d              ; double 0.96020000000000005
	.quad	0x3fee978d4fdf3b64              ; double 0.95599999999999996
	.quad	0x3fee7381d7dbf488              ; double 0.9516
	.quad	0x3fee504816f0068e              ; double 0.94730000000000003
	.quad	0x3fee2eb1c432ca58              ; double 0.94320000000000003
	.quad	0x3fee0ebedfa43fe6              ; double 0.93930000000000002
	.quad	0x3fedf141205bc01a              ; double 0.93569999999999998
	.quad	0x3fedd566cf41f213              ; double 0.93230000000000002
	.quad	0x3fedb98c7e28240b              ; double 0.92889999999999995
	.quad	0x3fed9ce075f6fd22              ; double 0.9254
	.quad	0x3fed7f62b6ae7d56              ; double 0.92179999999999995
	.quad	0x3fed61e4f765fd8b              ; double 0.91820000000000002
	.quad	0x3fed4538ef34d6a1              ; double 0.91469999999999996
	.quad	0x3fed295e9e1b089a              ; double 0.9113
	.quad	0x3fed0e5604189375              ; double 0.90800000000000003
	.quad	0x3fecf5c28f5c28f6              ; double 0.90500000000000003
	.quad	0x3fecded288ce703b              ; double 0.9022
	.quad	0x3feccb295e9e1b09              ; double 0.89980000000000004
	.quad	0x3fecb851eb851eb8              ; double 0.89749999999999996
	.quad	0x3feca64c2f837b4a              ; double 0.89529999999999998
	.quad	0x3fec95182a9930be              ; double 0.89319999999999999
	.quad	0x3fec83126e978d50              ; double 0.89100000000000001
	.quad	0x3fec703afb7e9100              ; double 0.88870000000000005
	.quad	0x3fec5bc01a36e2eb              ; double 0.88619999999999999
	.quad	0x3fec44d013a92a30              ; double 0.88339999999999996
	.quad	0x3fec2c3c9eecbfb1              ; double 0.88039999999999996
	.quad	0x3fec10624dd2f1aa              ; double 0.877
	.quad	0x3febf2e48e8a71de              ; double 0.87339999999999995
	.quad	0x3febd2f1a9fbe76d              ; double 0.86950000000000005
	.quad	0x3febb089a0275254              ; double 0.86529999999999995
	.quad	0x3feb8c7e28240b78              ; double 0.8609
	.quad	0x3feb65fd8adab9f5              ; double 0.85619999999999996
	.quad	0x3feb3dd97f62b6ae              ; double 0.85129999999999995
	.quad	0x3feb141205bc01a3              ; double 0.84619999999999995
	.quad	0x3feae8a71de69ad4              ; double 0.84089999999999998
	.quad	0x3feabc6a7ef9db23              ; double 0.83550000000000002
	.quad	0x3fea8e8a71de69ad              ; double 0.82989999999999997
	.quad	0x3fea5fd8adab9f56              ; double 0.82420000000000004
	.quad	0x3fea2f837b4a233a              ; double 0.81830000000000003
	.quad	0x3fe9ff2e48e8a71e              ; double 0.81240000000000001
	.quad	0x3fe9ce075f6fd220              ; double 0.8064
	.quad	0x3fe99c0ebedfa440              ; double 0.80030000000000001
	.quad	0x3fe9694467381d7e              ; double 0.79410000000000003
	.quad	0x3fe935a858793dd9              ; double 0.78779999999999994
	.quad	0x3fe9020c49ba5e35              ; double 0.78149999999999997
	.quad	0x3fe8ce703afb7e91              ; double 0.7752
	.quad	0x3fe89a027525460b              ; double 0.76880000000000004
	.quad	0x3fe864c2f837b4a2              ; double 0.76229999999999998
	.quad	0x3fe82f837b4a233a              ; double 0.75580000000000003
	.quad	0x3fe7f972474538ef              ; double 0.74919999999999998
	.quad	0x3fe7c36113404ea5              ; double 0.74260000000000004
	.quad	0x3fe78c7e28240b78              ; double 0.7359
	.quad	0x3fe7559b3d07c84b              ; double 0.72919999999999996
	.quad	0x3fe71de69ad42c3d              ; double 0.72240000000000004
	.quad	0x3fe6e631f8a0902e              ; double 0.71560000000000001
	.quad	0x3fe6ae7d566cf41f              ; double 0.70879999999999999
	.quad	0x3fe675f6fd21ff2e              ; double 0.70189999999999997
	.quad	0x3fe63d70a3d70a3d              ; double 0.69499999999999995
	.quad	0x3fe604ea4a8c154d              ; double 0.68810000000000004
	.quad	0x3fe5cc63f141205c              ; double 0.68120000000000003
	.quad	0x3fe5923a29c779a7              ; double 0.67410000000000003
	.quad	0x3fe558e219652bd4              ; double 0.66710000000000003
	.quad	0x3fe51de69ad42c3d              ; double 0.65990000000000004
	.quad	0x3fe4e2eb1c432ca5              ; double 0.65269999999999995
	.quad	0x3fe4a71de69ad42c              ; double 0.64539999999999997
	.quad	0x3fe469ad42c3c9ef              ; double 0.63790000000000002
	.quad	0x3fe42b6ae7d566cf              ; double 0.63029999999999997
	.quad	0x3fe3eb851eb851ec              ; double 0.62250000000000005
	.quad	0x3fe3aacd9e83e426              ; double 0.61460000000000004
	.quad	0x3fe36872b020c49c              ; double 0.60650000000000004
	.quad	0x3fe325460aa64c30              ; double 0.59830000000000005
	.quad	0x3fe2e075f6fd21ff              ; double 0.58989999999999998
	.quad	0x3fe29a027525460b              ; double 0.58130000000000004
	.quad	0x3fe251eb851eb852              ; double 0.57250000000000001
	.quad	0x3fe20902de00d1b7              ; double 0.56359999999999999
	.quad	0x3fe1bf487fcb923a              ; double 0.55459999999999998
	.quad	0x3fe173eab367a0f9              ; double 0.5454
	.quad	0x3fe126e978d4fdf4              ; double 0.53600000000000003
	.quad	0x3fe0d9e83e425aee              ; double 0.52659999999999996
	.quad	0x3fe08b4395810625              ; double 0.51700000000000002
	.quad	0x3fe03c9eecbfb15b              ; double 0.50739999999999996
	.quad	0x3fdfd70a3d70a3d7              ; double 0.4975
	.quad	0x3fdf34d6a161e4f7              ; double 0.48759999999999998
	.quad	0x3fde8db8bac710cb              ; double 0.47739999999999999
	.quad	0x3fdde1b089a02752              ; double 0.46689999999999998
	.quad	0x3fdd3404ea4a8c15              ; double 0.45629999999999998
	.quad	0x3fdc816f0068db8c              ; double 0.44540000000000002
	.quad	0x3fdbcd35a858793e              ; double 0.43440000000000001
	.quad	0x3fdb1758e219652c              ; double 0.42330000000000001
	.quad	0x3fda617c1bda511a              ; double 0.41220000000000001
	.quad	0x3fd9aee631f8a090              ; double 0.40129999999999999
	.quad	0x3fd8fc504816f007              ; double 0.39040000000000002
	.quad	0x3fd84d013a92a305              ; double 0.37969999999999998
	.quad	0x3fd79f559b3d07c8              ; double 0.36909999999999998
	.quad	0x3fd6f34d6a161e4f              ; double 0.35859999999999997
	.quad	0x3fd645a1cac08312              ; double 0.34799999999999998
	.quad	0x3fd597f62b6ae7d5              ; double 0.33739999999999998
	.quad	0x3fd4e8a71de69ad4              ; double 0.32669999999999999
	.quad	0x3fd437b4a2339c0f              ; double 0.31590000000000001
	.quad	0x3fd3851eb851eb85              ; double 0.30499999999999999
	.quad	0x3fd2d288ce703afb              ; double 0.29409999999999997
	.quad	0x3fd2219652bd3c36              ; double 0.2833
	.quad	0x3fd172474538ef35              ; double 0.27260000000000001
	.quad	0x3fd0c7e28240b780              ; double 0.26219999999999999
	.quad	0x3fd0226809d49518              ; double 0.25209999999999999
	.quad	0x3fcf03afb7e90ff9              ; double 0.24229999999999999
	.quad	0x3fcdcfaacd9e83e4              ; double 0.2329
	.quad	0x3fcca8c154c985f0              ; double 0.22389999999999999
	.quad	0x3fcb95810624dd2f              ; double 0.2155
	.quad	0x3fca8f5c28f5c28f              ; double 0.20749999999999999
	.quad	0x3fc9930be0ded289              ; double 0.19980000000000001
	.quad	0x3fc8a0902de00d1b              ; double 0.19239999999999999
	.quad	0x3fc7b4a2339c0ebf              ; double 0.1852
	.quad	0x3fc6cf41f212d773              ; double 0.1782
	.quad	0x3fc5fa43fe5c91d1              ; double 0.17169999999999999
	.quad	0x3fc538ef34d6a162              ; double 0.1658
	.quad	0x3fc495182a9930be              ; double 0.1608
	.quad	0x3fc4189374bc6a7f              ; double 0.157
	.quad	0x3fc3c9eecbfb15b5              ; double 0.15459999999999999
	.quad	0x3fc3a5e353f7ced9              ; double 0.1535
	.quad	0x3fc3a92a30553261              ; double 0.15359999999999999
	.quad	0x3fc3c9eecbfb15b5              ; double 0.15459999999999999
	.quad	0x3fc404ea4a8c154d              ; double 0.15640000000000001
	.quad	0x3fc4504816f0068e              ; double 0.15870000000000001
	.quad	0x3fc4ac083126e979              ; double 0.1615
	.quad	0x3fc51eb851eb851f              ; double 0.16500000000000001
	.quad	0x3fc5b22d0e560419              ; double 0.16950000000000001
	.quad	0x3fc6631f8a0902de              ; double 0.1749
	.quad	0x3fc73b645a1cac08              ; double 0.18149999999999999
	.quad	0x3fc83126e978d4fe              ; double 0.189
	.quad	0x3fc941205bc01a37              ; double 0.1973
	.quad	0x3fca617c1bda511a              ; double 0.20610000000000001
	.quad	0x3fcb886594af4f0e              ; double 0.21510000000000001
	.quad	0x3fcca2339c0ebee0              ; double 0.22370000000000001
	.quad	0x3fcd97f62b6ae7d5              ; double 0.23119999999999999
	.quad	0x3fce5fd8adab9f56              ; double 0.23730000000000001
	.quad	0x3fcef34d6a161e4f              ; double 0.24179999999999999
	.quad	0x3fcf4f0d844d013b              ; double 0.24460000000000001
	.quad	0x3fcf1758e219652c              ; double 0.2429
	.quad	0x3fcea4a8c154c986              ; double 0.2394
	.quad	0x3fce17c1bda5119d              ; double 0.2351
	.quad	0x3fcd8e219652bd3c              ; double 0.23089999999999999
	.quad	0x3fcd04816f0068dc              ; double 0.22670000000000001
	.quad	0x3fcc779a6b50b0f2              ; double 0.22239999999999999
	.quad	0x3fcbeab367a0f909              ; double 0.21809999999999999
	.quad	0x3fcb5dcc63f14120              ; double 0.21379999999999999
	.quad	0x3fcad0e560418937              ; double 0.20949999999999999
	.quad	0x3fca474538ef34d7              ; double 0.20530000000000001
	.quad	0x3fc9c0ebedfa43fe              ; double 0.20119999999999999
	.quad	0x3fc94467381d7dbf              ; double 0.19739999999999999
	.quad	0x3fc8d1b71758e219              ; double 0.19389999999999999
	.quad	0x3fc86594af4f0d84              ; double 0.19059999999999999
	.quad	0x3fc8000000000000              ; double 0.1875
	.quad	0x3fc7a0f9096bb98c              ; double 0.18459999999999999
	.quad	0x3fc741f212d77319              ; double 0.1817
	.quad	0x3fc6dfa43fe5c91d              ; double 0.1787
	.quad	0x3fc67d566cf41f21              ; double 0.1757
	.quad	0x3fc617c1bda5119d              ; double 0.1726
	.quad	0x3fc5b22d0e560419              ; double 0.16950000000000001
	.quad	0x3fc54fdf3b645a1d              ; double 0.16650000000000001
	.quad	0x3fc4f0d844d013a9              ; double 0.1636
	.quad	0x3fc495182a9930be              ; double 0.1608
	.quad	0x3fc43fe5c91d14e4              ; double 0.15820000000000001
	.quad	0x3fc3edfa43fe5c92              ; double 0.15570000000000001
	.quad	0x3fc39c0ebedfa440              ; double 0.1532
	.quad	0x3fc34a2339c0ebee              ; double 0.1507
	.quad	0x3fc2f1a9fbe76c8b              ; double 0.14799999999999999
	.quad	0x3fc28f5c28f5c28f              ; double 0.14499999999999999
	.quad	0x3fc226809d495183              ; double 0.14180000000000001
	.quad	0x3fc1b089a0275254              ; double 0.13819999999999999
	.quad	0x3fc13404ea4a8c15              ; double 0.13439999999999999
	.quad	0x3fc0b0f27bb2fec5              ; double 0.13039999999999999
	.quad	0x3fc0240b780346dc              ; double 0.12609999999999999
	.quad	0x3fbf212d77318fc5              ; double 0.1216
	.quad	0x3fbde69ad42c3c9f              ; double 0.1168
	.quad	0x3fbc91d14e3bcd36              ; double 0.1116
	.quad	0x3fbb295e9e1b089a              ; double 0.1061
	.quad	0x3fb9a027525460aa              ; double 0.10009999999999999
	.quad	0x3fb80346dc5d6388              ; double 0.093799999999999994
	.quad	0x3fb652bd3c361134              ; double 0.0872
	.quad	0x3fb49ba5e353f7cf              ; double 0.080500000000000002
	.size	Bvalues, 2048

	.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 Rvalues
	.addrsig_sym Gvalues
	.addrsig_sym Bvalues
	.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
      - .address_space:  global
        .offset:         24
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         32
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         40
        .size:           8
        .value_kind:     global_buffer
      - .offset:         48
        .size:           4
        .value_kind:     by_value
      - .offset:         52
        .size:           4
        .value_kind:     by_value
      - .offset:         56
        .size:           4
        .value_kind:     by_value
      - .offset:         64
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         68
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         72
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         76
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         78
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         80
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         82
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         84
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         86
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         104
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         112
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         120
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         128
        .size:           2
        .value_kind:     hidden_grid_dims
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 320
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z24processMandelbrotElementPdS_S_PiPKdS2_jjj
    .private_segment_fixed_size: 0
    .sgpr_count:     18
    .sgpr_spill_count: 0
    .symbol:         _Z24processMandelbrotElementPdS_S_PiPKdS2_jjj.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     39
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
