#include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <list>
using namespace std;

//size at which the sequential multiplication is used instead of recursive Strassen
int thresholdSize = 128;  

void initMat(vector< vector<double> > &a, vector< vector<double> > &b, int n)
{
		// initialize matrices and fill them with random values
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				a[i][j] = (double)rand()/RAND_MAX*10;
				b[i][j] = (double)rand()/RAND_MAX*10;
			}
		}
}
	
void multiplyMatStandard(vector< vector<double> > &a, 
		vector< vector<double> > &b, vector< vector<double> > &c, int n)
{
		// standard matrix multipmlication: C <- C + A x B
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				double temp  = 0;
				for (int k = 0; k < n; ++k) {
					temp += a[i][k] * b[k][j];
				}
				c[i][j]=temp;
			}
		}
}

int getNextPowerOfTwo(int n)
{
	return pow(2, int(ceil(log2(n))));
}

void fillZeros(vector< vector<double> > &newA, vector< vector<double> > &newB,
	       vector< vector<double> > &a, vector< vector<double> > &b, int n)
{
  //pad matrix with zeros
	for (int i=0; i<n; i++){
		for (int j=0; j<n; j++){
			newA[i][j] = a[i][j];
			newB[i][j] = b[i][j];
		}
	}
}

void add(vector< vector<double> > &a, vector< vector<double> > &b,
	 vector< vector<double> > &resultMatrix, int n)
{
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			resultMatrix[i][j] = a[i][j] + b[i][j];
		}
	}
}

void subtract(vector< vector<double> > &a, vector< vector<double> > &b,
	      vector< vector<double> > &resultMatrix, int n)
{
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			resultMatrix[i][j] = a[i][j] - b[i][j];
		}
	}
}
	
void multiplyStrassen(vector< vector<double> > &a,
	vector< vector<double> > &b, vector< vector<double> > &c, int n)
{	
	if(n<=thresholdSize){
		multiplyMatStandard(a, b, c, n);
	}
	else{
		//expand and fill with zeros if matrix size is not a power of two
		int newSize = getNextPowerOfTwo(n);
		vector< vector<double> > 
			newA(newSize, vector<double>(newSize)), 
			newB(newSize, vector<double>(newSize)), 
			newC(newSize, vector<double>(newSize));
		if(n==newSize){   //matrix size is already a power of two
			newA = a;
			newB = b;
		}
		else{
			fillZeros(newA, newB, a, b, n);
		}
		
		//initialize submatrices
		int blockSize = newSize/2;  //size for a partition matrix
		vector<double> block (blockSize);
		vector< vector<double> > 
			/*partitions of newA*/
			a11(blockSize, block), a12(blockSize, block), 
			a21(blockSize, block), a22(blockSize, block), 
			/*partitions of newB*/
			b11(blockSize, block), b12(blockSize, block), 
			b21(blockSize, block), b22(blockSize, block), 
			/*partitions of newC*/
			c11(blockSize, block), c12(blockSize, block), 
			c21(blockSize, block), c22(blockSize, block), 
			/*matrices storing intermediate results*/
			aBlock(blockSize, block), bBlock(blockSize, block),
			/*set of submatrices derived from partitions*/
			m1(blockSize, block), m2(blockSize, block), 
			m3(blockSize, block), m4(blockSize, block),  
			m5(blockSize, block), m6(blockSize, block), 
			m7(blockSize, block);  
		
		//partition matrices
		for (int i=0; i<blockSize; i++){
			for (int j=0; j<blockSize; j++){
				a11[i][j] = newA[i][j];
				a12[i][j] = newA[i][j+blockSize];
				a21[i][j] = newA[i+blockSize][j];
				a22[i][j] = newA[i+blockSize][j+blockSize];
				b11[i][j] = newB[i][j];
				b12[i][j] = newB[i][j+blockSize];
				b21[i][j] = newB[i+blockSize][j];
				b22[i][j] = newB[i+blockSize][j+blockSize];
			}
		}
		
		//compute submatrices
		//m1 = (a11+a22)(b11+b22)
		add(a11, a22, aBlock, blockSize);
		add(b11, b22, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m1, blockSize);
		
		//m2 = (a21+a22)b11
		add(a21, a22, aBlock, blockSize);
		multiplyStrassen(aBlock, b11, m2, blockSize);
		
		//m3 = a11(b12-b22)
		subtract(b12, b22, bBlock, blockSize);
		multiplyStrassen(a11, bBlock, m3, blockSize);
		
		//m4 = a22(b21-b11)
		subtract(b21, b11, bBlock, blockSize);
		multiplyStrassen(a22, bBlock, m4, blockSize);
		
		//m5 = (a11+a12)b22
		add(a11, a12, aBlock, blockSize);
		multiplyStrassen(aBlock, b22, m5, blockSize);
		
		//m6 = (a21-a11)(b11+b12)
		subtract(a21, a11, aBlock, blockSize);
		add(b11, b12, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m6, blockSize);
		
		//m7 = (a12-a22)(b12+b22)
		subtract(a12, a22, aBlock, blockSize);
		add(b12, b22, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m7, blockSize);
		
		//calculate result submatrices
		//c11 = m1+m4-m5+m7
		add(m1, m4, aBlock, blockSize);
		subtract(aBlock, m5, bBlock, blockSize);
		add(bBlock, m7, c11, blockSize);
		
		//c12 = m3+m5
		add(m3, m5, c12, blockSize);
		
		//c21 = m2+m4
		add(m2, m4, c12, blockSize);
		
		//c22 = m1-m2+m3+m6
		subtract(m1, m2, aBlock, blockSize);
		add(aBlock, m3, bBlock, blockSize);
		add(bBlock, m6, c22, blockSize);
		
		//calculate final result matrix
		for(int i=0; i<blockSize; i++){
			for(int j=0; j<blockSize; j++){
				newC[i][j] = c11[i][j];
				newC[i][blockSize+j] = c12[i][j];
				newC[blockSize+i][j] = c21[i][j];
				newC[blockSize+i][blockSize+j] = c22[i][j];
			}
		}
		
		//remove additional values from expanded matrix
		for(int i=0; i<n; i++){
			for(int j=0; j<n; j++){
				c[i][j] = newC[i][j];
			}
		}
	}
}

double calculateMean(vector<double> data, int size) 
{
    double sum = 0.0, mean = 0.0;
    for (int i = 0; i < size; ++i) {
        sum += data[i];
    }

    mean = sum / size;
    return mean;
}
	
int main()
{
	//srand(time(0));   //seed for random number generation
	// number of sample size considered to evaluate average execution time      
	FILE * fp;
    fp=fopen("Strassen_Multiplication_UPDATED_CPU.csv","w+");
    fprintf(fp, "Algorithm_Name,Input_Dimensions,Execution_Time(ms)");
	double startTime;
	double elapsedTime;
	double standardMean;
	double strassenMean;
    float cpu_elapsed_time_ms;
    char algoname[100]="Strassen_Matrix_Multiplication_CPU";
    int my_list[]={1008, 1040, 1072, 1104, 1136, 1168, 1200, 1232, 1264, 1296, 1328, 1360, 1392, 1424, 1456, 1488, 1520, 1552, 1584, 1616, 1648, 1680, 1712, 1744, 1776, 1808, 1840, 1872, 1904, 1936, 1968, 2000, 2032, 2064, 2096, 2128, 2160, 2192, 2224, 2256, 2288, 2320, 2352, 2384, 2416, 2448, 2480, 2512, 2544, 2576, 2608, 2640, 2672, 2704, 2736, 2768, 2800, 2832, 2864, 2896, 2928, 2960, 2992, 3024, 3056, 3088, 3120, 3152, 3184, 3216, 3248, 3280, 3312, 3344, 3376, 3408, 3440, 3472, 3504, 3536, 3568, 3600, 3632, 3664, 3696, 3728, 3760, 3792, 3824, 3856, 3888, 3920, 3952, 3984, 4016, 4080, 4144, 4208, 4272, 4336, 4400, 4464, 4528, 4592, 4656, 4720, 4784, 4848, 4912, 4976, 5040, 5104, 5168, 5232, 5296, 5360, 5424, 5488, 5552, 5616, 5680, 5744, 5808, 5872, 5936, 6000, 6064, 6128, 6192, 6256, 6320, 6384, 6448, 6512, 6576, 6640, 6704, 6768, 6832, 6896, 6960, 7024, 7088, 7152, 7216, 7280, 7344, 7408, 7472, 7536, 7600, 7664, 7728, 7792, 7856, 7920, 7984, 8048, 8112, 8176, 8240, 8304, 8368, 8432, 8496, 8560, 8624, 8688, 8752, 8816, 8880, 8944, 9008, 9072, 9136, 9200, 9264, 9328, 9392, 9456, 9520, 9584, 9648, 9712, 9776, 9840, 9904, 9968, 10032, 10096, 10160, 10224, 10288, 10352, 10416, 10480, 10544, 10608, 10672, 10736, 10800, 10864, 10928, 10992};
    int length=sizeof(my_list)/sizeof(my_list[0]);
    printf("%d\n",length);
    //set threshold value if given by user
	// if(argc>1){
	// 	thresholdSize = atoi(argv[1]);  
	// }
	
	//vectors storing execution time values
	// vector<double> standardTime(sampleSize);      
	// vector<double> strassenTime(sampleSize);
	
	for (int k = 0; k < length; k++) {
		//initialize vectors for matrices a, b, c: a*b = c
        if(my_list[k]<=3500){
        int matSize = my_list[k];
		vector< vector<double> > 
			a(matSize,vector<double>(matSize)),
			b(matSize,vector<double>(matSize)),
			c(matSize,vector<double>(matSize));	
		initMat(a,b,matSize);
		double l[5];
		// //standard execution		
		// startTime = time(0);
		// multiplyMatStandard(a,b,c,matSize);
		// elapsedTime = time(0) - startTime;
		// standardTime[k] = elapsedTime;
		//multiplication using Strassen'
		if(my_list[k]<=1000){
		for(int j=0;j<5;j++){
        cudaEvent_t start, stop;
		cudaEventCreate(&start);
		cudaEventCreate(&stop);
        cudaEventRecord(start, 0);
        // cout<<startTime<<endl;
		multiplyStrassen(a,b,c,matSize);
        cudaEventRecord(stop, 0);
		cudaEventSynchronize(stop);
        cudaEventElapsedTime(&cpu_elapsed_time_ms, start, stop);
		l[j]=cpu_elapsed_time_ms;
		//printf("%lf\n",cpu_elapsed_time_ms);
	}// elapsedTime = time(0) - startTime;
		// double duration = elapsedTime;
        // clock_t begin1 = clock();
		// multiplyStrassen(a,b,c,matSize);
		// clock_t end1 = clock();
		// double time_spent1 = (double)1000*(end1 - begin1) / CLOCKS_PER_SEC;
		double avg;
	    avg=(l[0]+l[1]+l[2]+l[3]+l[4])/5;
		cout << "Using Milliseconds Clock: (AVG)"<< endl;
		cout << " CPU time taken to execute for strassen matrices of size - " 
		<< matSize << " : " <<avg<<" ms"<< endl;
		cout << endl;
        fprintf(fp,"\n%s,%d,%lf",algoname,matSize,avg);
}else{
	int matSize = my_list[k];
		vector< vector<double> > 
			a(matSize,vector<double>(matSize)),
			b(matSize,vector<double>(matSize)),
			c(matSize,vector<double>(matSize));	
		initMat(a,b,matSize);
	cudaEvent_t start, stop;
	cudaEventCreate(&start);
	cudaEventCreate(&stop);
	cudaEventRecord(start, 0);
	// cout<<startTime<<endl;
	multiplyStrassen(a,b,c,matSize);
	cudaEventRecord(stop, 0);
	cudaEventSynchronize(stop);
	cudaEventElapsedTime(&cpu_elapsed_time_ms, start, stop);
	cout << "Using Milliseconds Clock:(else above 1000) "<< endl;
		cout << " CPU time taken to execute for strassen matrices of size - " 
		<< matSize << " : " <<cpu_elapsed_time_ms<<" ms"<< endl;
		cout << endl;
        fprintf(fp,"\n%s,%d,%lf",algoname,matSize,cpu_elapsed_time_ms);
}
	// }
	// cout << "Standard multiplication"<< endl;
	// standardMean = calculateMean(standardTime, sampleSize);
	// cout << "Average time taken to execute matrices of size - " 
	// 	<< matSize << " : " << standardMean << endl;
	// cout << endl;
	// cout << "Multiplication using given Original Clock Strassen's"<< endl;
	// cout << "Average time taken to execute matrices of size - " 
	// 	<< matSize << " : " << time_spent1 << endl;
	// cout << endl;
	
	// cout << "Speed up gained by using Strassen's-" << matSize 
	// 	<< " : " << standardMean/strassenMean << endl;
	// cout << endl;
}else{
	        cout<<"MAX LIMIT"<<endl;
            int max_limit=800000;
            fprintf(fp,"\n%s,%d,%d",algoname,my_list[k],max_limit);
			
        }
    }
	return 0;
}


	.file	"tmpxft_002a4073_00000000-6_Strassen_CPU.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB4195:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE4195:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.align 2
	.type	_ZNSolsEPFRSoS_E.isra.0, @function
_ZNSolsEPFRSoS_E.isra.0:
.LFB5120:
	.cfi_startproc
	jmp	*%rsi
	.cfi_endproc
.LFE5120:
	.size	_ZNSolsEPFRSoS_E.isra.0, .-_ZNSolsEPFRSoS_E.isra.0
	.globl	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	.type	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i, @function
_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i:
.LFB4184:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movslq	%edx, %rdx
	movq	%rsi, %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rdx, %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	xorl	%r13d, %r13d
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
.L4:
	cmpl	%r13d, %r14d
	jle	.L10
	imulq	$24, %r13, %r12
	xorl	%ebx, %ebx
.L5:
	movq	%rdx, 8(%rsp)
	call	rand@PLT
	movl	%eax, %ecx
	movq	0(%rbp), %rax
	cvtsi2sdl	%ecx, %xmm0
	divsd	.LC1(%rip), %xmm0
	mulsd	.LC2(%rip), %xmm0
	movq	(%rax,%r12), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	call	rand@PLT
	movq	8(%rsp), %rdx
	movl	%eax, %ecx
	movq	(%r15), %rax
	cvtsi2sdl	%ecx, %xmm0
	divsd	.LC1(%rip), %xmm0
	mulsd	.LC2(%rip), %xmm0
	movq	(%rax,%r12), %rax
	movsd	%xmm0, (%rax,%rbx,8)
	incq	%rbx
	cmpq	%rdx, %rbx
	jne	.L5
	incq	%r13
	jmp	.L4
.L10:
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4184:
	.size	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i, .-_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	.globl	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, @function
_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i:
.LFB4185:
	.cfi_startproc
	endbr64
	movq	%rsi, %r8
	xorl	%esi, %esi
	movq	%rdi, %r9
	movq	%rdx, %rdi
	movl	%ecx, %edx
	cmpl	%esi, %ecx
	jg	.L22
	ret
.L22:
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
.L20:
	imulq	$24, %rsi, %rax
	movq	(%r9), %rcx
	movq	(%r8), %r11
	movq	(%rcx,%rax), %rbx
	movq	(%rdi), %rcx
	movq	(%rcx,%rax), %r10
	xorl	%eax, %eax
.L16:
	leaq	0(,%rax,8), %rbp
	xorl	%ecx, %ecx
	xorps	%xmm0, %xmm0
.L13:
	imulq	$24, %rcx, %r12
	movq	(%r11,%r12), %r12
	movsd	(%r12,%rbp), %xmm1
	mulsd	(%rbx,%rcx,8), %xmm1
	incq	%rcx
	addsd	%xmm1, %xmm0
	cmpl	%ecx, %edx
	jg	.L13
	movsd	%xmm0, (%r10,%rax,8)
	incq	%rax
	cmpl	%eax, %edx
	jg	.L16
	incq	%rsi
	cmpl	%esi, %edx
	jg	.L20
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4185:
	.size	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .-_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.globl	_Z17getNextPowerOfTwoi
	.type	_Z17getNextPowerOfTwoi, @function
_Z17getNextPowerOfTwoi:
.LFB4186:
	.cfi_startproc
	endbr64
	cvtsi2sdl	%edi, %xmm0
	pushq	%rax
	.cfi_def_cfa_offset 16
	call	log2@PLT
	call	ceil@PLT
	cvttsd2sil	%xmm0, %eax
	movsd	.LC4(%rip), %xmm0
	cvtsi2sdl	%eax, %xmm1
	call	pow@PLT
	popq	%rdx
	.cfi_def_cfa_offset 8
	cvttsd2sil	%xmm0, %eax
	ret
	.cfi_endproc
.LFE4186:
	.size	_Z17getNextPowerOfTwoi, .-_Z17getNextPowerOfTwoi
	.globl	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
	.type	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i, @function
_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i:
.LFB4187:
	.cfi_startproc
	endbr64
	movq	%rdx, %r9
	xorl	%edx, %edx
	cmpl	%edx, %r8d
	jg	.L32
	ret
.L32:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
.L28:
	imulq	$24, %rdx, %rax
	movq	(%r9), %r10
	movq	(%r10,%rax), %rbp
	movq	(%rdi), %r10
	movq	(%r10,%rax), %rbx
	movq	(%rcx), %r10
	movq	(%r10,%rax), %r11
	movq	(%rsi), %r10
	movq	(%r10,%rax), %r10
	xorl	%eax, %eax
.L27:
	movsd	0(%rbp,%rax,8), %xmm0
	movsd	%xmm0, (%rbx,%rax,8)
	movsd	(%r11,%rax,8), %xmm0
	movsd	%xmm0, (%r10,%rax,8)
	incq	%rax
	cmpl	%eax, %r8d
	jg	.L27
	incq	%rdx
	cmpl	%edx, %r8d
	jg	.L28
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4187:
	.size	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i, .-_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
	.globl	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, @function
_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i:
.LFB4188:
	.cfi_startproc
	endbr64
	movq	%rdx, %r8
	xorl	%edx, %edx
.L34:
	cmpl	%edx, %ecx
	jle	.L38
	imulq	$24, %rdx, %rax
	movq	(%rdi), %r9
	movq	(%r9,%rax), %r11
	movq	(%rsi), %r9
	movq	(%r9,%rax), %r10
	movq	(%r8), %r9
	movq	(%r9,%rax), %r9
	xorl	%eax, %eax
.L35:
	movsd	(%r11,%rax,8), %xmm0
	addsd	(%r10,%rax,8), %xmm0
	movsd	%xmm0, (%r9,%rax,8)
	incq	%rax
	cmpl	%eax, %ecx
	jg	.L35
	incq	%rdx
	jmp	.L34
.L38:
	ret
	.cfi_endproc
.LFE4188:
	.size	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .-_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.globl	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, @function
_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i:
.LFB4189:
	.cfi_startproc
	endbr64
	movq	%rdx, %r8
	xorl	%edx, %edx
.L40:
	cmpl	%edx, %ecx
	jle	.L44
	imulq	$24, %rdx, %rax
	movq	(%rdi), %r9
	movq	(%r9,%rax), %r11
	movq	(%rsi), %r9
	movq	(%r9,%rax), %r10
	movq	(%r8), %r9
	movq	(%r9,%rax), %r9
	xorl	%eax, %eax
.L41:
	movsd	(%r11,%rax,8), %xmm0
	subsd	(%r10,%rax,8), %xmm0
	movsd	%xmm0, (%r9,%rax,8)
	incq	%rax
	cmpl	%eax, %ecx
	jg	.L41
	incq	%rdx
	jmp	.L40
.L44:
	ret
	.cfi_endproc
.LFE4189:
	.size	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .-_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.globl	_Z13calculateMeanSt6vectorIdSaIdEEi
	.type	_Z13calculateMeanSt6vectorIdSaIdEEi, @function
_Z13calculateMeanSt6vectorIdSaIdEEi:
.LFB4191:
	.cfi_startproc
	endbr64
	xorl	%eax, %eax
	xorps	%xmm0, %xmm0
.L46:
	cmpl	%eax, %esi
	jle	.L48
	movq	(%rdi), %rdx
	addsd	(%rdx,%rax,8), %xmm0
	incq	%rax
	jmp	.L46
.L48:
	cvtsi2sdl	%esi, %xmm1
	divsd	%xmm1, %xmm0
	ret
	.cfi_endproc
.LFE4191:
	.size	_Z13calculateMeanSt6vectorIdSaIdEEi, .-_Z13calculateMeanSt6vectorIdSaIdEEi
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB4218:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE4218:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZNSt6vectorIdSaIdEED2Ev,"axG",@progbits,_ZNSt6vectorIdSaIdEED5Ev,comdat
	.align 2
	.weak	_ZNSt6vectorIdSaIdEED2Ev
	.type	_ZNSt6vectorIdSaIdEED2Ev, @function
_ZNSt6vectorIdSaIdEED2Ev:
.LFB4532:
	.cfi_startproc
	endbr64
	movq	(%rdi), %rax
	testq	%rax, %rax
	je	.L51
	movq	16(%rdi), %rsi
	movq	%rax, %rdi
	subq	%rax, %rsi
	jmp	_ZdlPvm@PLT
.L51:
	ret
	.cfi_endproc
.LFE4532:
	.size	_ZNSt6vectorIdSaIdEED2Ev, .-_ZNSt6vectorIdSaIdEED2Ev
	.weak	_ZNSt6vectorIdSaIdEED1Ev
	.set	_ZNSt6vectorIdSaIdEED1Ev,_ZNSt6vectorIdSaIdEED2Ev
	.section	.text._ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev,"axG",@progbits,_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED5Ev,comdat
	.align 2
	.weak	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev
	.type	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev, @function
_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev:
.LFB4726:
	.cfi_startproc
	endbr64
	movq	(%rdi), %rax
	testq	%rax, %rax
	je	.L53
	movq	16(%rdi), %rsi
	movq	%rax, %rdi
	subq	%rax, %rsi
	jmp	_ZdlPvm@PLT
.L53:
	ret
	.cfi_endproc
.LFE4726:
	.size	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev, .-_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev
	.weak	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED1Ev
	.set	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED1Ev,_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev
	.section	.text._ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm,"axG",@progbits,_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm,comdat
	.align 2
	.weak	_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm
	.type	_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm, @function
_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm:
.LFB4847:
	.cfi_startproc
	endbr64
	testq	%rsi, %rsi
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	0(,%rsi,8), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	pushq	%rdx
	.cfi_def_cfa_offset 32
	je	.L59
	movabsq	$1152921504606846975, %rax
	cmpq	%rsi, %rax
	jnb	.L57
	movabsq	$2305843009213693951, %rax
	cmpq	%rsi, %rax
	jnb	.L58
	call	_ZSt28__throw_bad_array_new_lengthv@PLT
.L58:
	call	_ZSt17__throw_bad_allocv@PLT
.L57:
	movq	%rbp, %rdi
	call	_Znwm@PLT
	jmp	.L56
.L59:
	xorl	%eax, %eax
.L56:
	movq	%rax, (%rbx)
	movq	%rax, 8(%rbx)
	addq	%rbp, %rax
	movq	%rax, 16(%rbx)
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4847:
	.size	_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm, .-_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm
	.section	.rodata._ZNSt6vectorIdSaIdEEC2EmRKS0_.str1.1,"aMS",@progbits,1
.LC5:
	.string	"cannot create std::vector larger than max_size()"
	.section	.text._ZNSt6vectorIdSaIdEEC2EmRKS0_,"axG",@progbits,_ZNSt6vectorIdSaIdEEC5EmRKS0_,comdat
	.align 2
	.weak	_ZNSt6vectorIdSaIdEEC2EmRKS0_
	.type	_ZNSt6vectorIdSaIdEEC2EmRKS0_, @function
_ZNSt6vectorIdSaIdEEC2EmRKS0_:
.LFB4529:
	.cfi_startproc
	endbr64
	movabsq	$1152921504606846975, %rax
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	pushq	%rcx
	.cfi_def_cfa_offset 32
	cmpq	%rsi, %rax
	jnb	.L62
	leaq	.LC5(%rip), %rdi
	call	_ZSt20__throw_length_errorPKc@PLT
.L62:
	xorl	%edx, %edx
	movq	%rdi, %rbp
	movq	%rsi, %rbx
	movq	%rdx, (%rdi)
	movq	%rdx, 8(%rdi)
	movq	%rdx, 16(%rdi)
	call	_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm
	movq	0(%rbp), %rax
	testq	%rbx, %rbx
	je	.L63
	movq	$0x000000000, (%rax)
	leaq	8(%rax), %rdx
	decq	%rbx
	je	.L66
	leaq	(%rdx,%rbx,8), %rcx
	movq	%rdx, %rsi
.L64:
	cmpq	%rsi, %rcx
	je	.L71
	movq	$0x000000000, (%rsi)
	addq	$8, %rsi
	jmp	.L64
.L71:
	subq	%rax, %rcx
	leaq	-8(%rdx,%rcx), %rax
	jmp	.L63
.L66:
	movq	%rdx, %rax
.L63:
	movq	%rax, 8(%rbp)
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4529:
	.size	_ZNSt6vectorIdSaIdEEC2EmRKS0_, .-_ZNSt6vectorIdSaIdEEC2EmRKS0_
	.weak	_ZNSt6vectorIdSaIdEEC1EmRKS0_
	.set	_ZNSt6vectorIdSaIdEEC1EmRKS0_,_ZNSt6vectorIdSaIdEEC2EmRKS0_
	.section	.text._ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_,"axG",@progbits,_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_,comdat
	.weak	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
	.type	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_, @function
_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_:
.LFB4962:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	pushq	%rdx
	.cfi_def_cfa_offset 32
.L73:
	cmpq	%rbp, %rbx
	je	.L76
	movq	%rbx, %rdi
	addq	$24, %rbx
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L73
.L76:
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4962:
	.size	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_, .-_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EED5Ev,comdat
	.align 2
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev, @function
_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev:
.LFB4544:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	movq	8(%rdi), %rsi
	movq	(%rdi), %rdi
	call	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
	movq	%rbx, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev
	.cfi_endproc
.LFE4544:
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev, .-_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	.set	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev,_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.section	.text._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_,"axG",@progbits,_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_,comdat
	.weak	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_
	.type	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_, @function
_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_:
.LFB5107:
	.cfi_startproc
	endbr64
	subq	%rdi, %rsi
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdx, %rcx
	movq	%rsi, %rbx
	cmpq	$8, %rsi
	jle	.L80
	movq	%rsi, %rdx
	movq	%rdi, %rsi
	movq	%rcx, %rdi
	call	memmove@PLT
	movq	%rax, %rcx
	jmp	.L81
.L80:
	jne	.L81
	movsd	(%rdi), %xmm0
	movsd	%xmm0, (%rdx)
.L81:
	leaq	(%rcx,%rbx), %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5107:
	.size	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_, .-_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_
	.section	.text._ZNSt6vectorIdSaIdEEC2ERKS1_,"axG",@progbits,_ZNSt6vectorIdSaIdEEC5ERKS1_,comdat
	.align 2
	.weak	_ZNSt6vectorIdSaIdEEC2ERKS1_
	.type	_ZNSt6vectorIdSaIdEEC2ERKS1_, @function
_ZNSt6vectorIdSaIdEEC2ERKS1_:
.LFB5049:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	xorl	%edx, %edx
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rdi, %rbx
	pushq	%rax
	.cfi_def_cfa_offset 32
	movq	8(%rsi), %rsi
	subq	0(%rbp), %rsi
	movq	%rdx, (%rdi)
	movq	%rdx, 8(%rdi)
	sarq	$3, %rsi
	movq	%rdx, 16(%rdi)
	call	_ZNSt12_Vector_baseIdSaIdEE17_M_create_storageEm
	movq	8(%rbp), %rsi
	movq	(%rbx), %rdx
	movq	0(%rbp), %rdi
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_
	movq	%rax, 8(%rbx)
	popq	%rcx
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5049:
	.size	_ZNSt6vectorIdSaIdEEC2ERKS1_, .-_ZNSt6vectorIdSaIdEEC2ERKS1_
	.weak	_ZNSt6vectorIdSaIdEEC1ERKS1_
	.set	_ZNSt6vectorIdSaIdEEC1ERKS1_,_ZNSt6vectorIdSaIdEEC2ERKS1_
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC5EmRKS1_RKS2_,comdat
	.align 2
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_, @function
_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_:
.LFB4541:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4541
	endbr64
	movabsq	$384307168202282325, %rax
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	cmpq	%rsi, %rax
	jnb	.L86
	leaq	.LC5(%rip), %rdi
.LEHB0:
	call	_ZSt20__throw_length_errorPKc@PLT
.L86:
	xorl	%eax, %eax
	imulq	$24, %rsi, %r13
	movq	%rdi, %rbx
	movq	%rsi, %r12
	movq	%rax, (%rdi)
	movq	%rdx, %r14
	xorl	%ebp, %ebp
	movq	%rax, 8(%rdi)
	movq	%rax, 16(%rdi)
	testq	%rsi, %rsi
	je	.L87
	movq	%r13, %rdi
	call	_Znwm@PLT
.LEHE0:
	movq	%rax, %rbp
.L87:
	movq	%rbp, (%rbx)
	addq	%rbp, %r13
	movq	%rbp, 8(%rbx)
	movq	%r13, 16(%rbx)
	movq	%rbp, %r13
.L88:
	testq	%r12, %r12
	je	.L98
	movq	%r14, %rsi
	movq	%r13, %rdi
.LEHB1:
	call	_ZNSt6vectorIdSaIdEEC1ERKS1_
.LEHE1:
	decq	%r12
	addq	$24, %r13
	jmp	.L88
.L98:
	movq	%r13, 8(%rbx)
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L94:
	.cfi_restore_state
	endbr64
	movq	%rax, %rdi
.L90:
	call	__cxa_begin_catch@PLT
	movq	%r13, %rsi
	movq	%rbp, %rdi
	call	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
.LEHB2:
	call	__cxa_rethrow@PLT
.LEHE2:
.L93:
	endbr64
	movq	%rax, %rbp
.L91:
	call	__cxa_end_catch@PLT
	movq	%rbx, %rdi
	call	_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev
	movq	%rbp, %rdi
.LEHB3:
	call	_Unwind_Resume@PLT
.LEHE3:
	.cfi_endproc
.LFE4541:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table._ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,"aG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC5EmRKS1_RKS2_,comdat
	.align 4
.LLSDA4541:
	.byte	0xff
	.byte	0x9b
	.uleb128 .LLSDATT4541-.LLSDATTD4541
.LLSDATTD4541:
	.byte	0x1
	.uleb128 .LLSDACSE4541-.LLSDACSB4541
.LLSDACSB4541:
	.uleb128 .LEHB0-.LFB4541
	.uleb128 .LEHE0-.LEHB0
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB1-.LFB4541
	.uleb128 .LEHE1-.LEHB1
	.uleb128 .L94-.LFB4541
	.uleb128 0x1
	.uleb128 .LEHB2-.LFB4541
	.uleb128 .LEHE2-.LEHB2
	.uleb128 .L93-.LFB4541
	.uleb128 0
	.uleb128 .LEHB3-.LFB4541
	.uleb128 .LEHE3-.LEHB3
	.uleb128 0
	.uleb128 0
.LLSDACSE4541:
	.byte	0x1
	.byte	0
	.align 4
	.long	0

.LLSDATT4541:
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC5EmRKS1_RKS2_,comdat
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_, .-_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
	.set	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
	.text
	.align 2
	.type	_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0, @function
_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0:
.LFB5136:
	.cfi_startproc
	cmpq	%rdi, %rsi
	je	.L113
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 64
	movq	8(%rsi), %rsi
	movq	(%r12), %r13
	movq	(%rdi), %rdi
	movq	16(%rbx), %rax
	movq	%rsi, %rbp
	subq	%r13, %rbp
	subq	%rdi, %rax
	cmpq	%rbp, %rax
	jnb	.L101
	movabsq	$9223372036854775800, %rax
	cmpq	%rbp, %rax
	jnb	.L102
	call	_ZSt28__throw_bad_array_new_lengthv@PLT
.L102:
	movq	%rbp, %rdi
	movq	%rsi, 8(%rsp)
	call	_Znwm@PLT
	movq	8(%rsp), %rsi
	movq	%r13, %rdi
	movq	%rax, %rdx
	movq	%rax, %r12
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.L103
	movq	16(%rbx), %rsi
	subq	%rdi, %rsi
	call	_ZdlPvm@PLT
.L103:
	movq	%r12, (%rbx)
	addq	%rbp, %r12
	movq	%r12, 16(%rbx)
	jmp	.L104
.L101:
	movq	8(%rbx), %rdx
	subq	%rdi, %rdx
	cmpq	%rbp, %rdx
	jb	.L105
	movq	%rdi, %rdx
	movq	%r13, %rdi
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKddEEPT0_PT_S7_S5_
	jmp	.L104
.L105:
	cmpq	$8, %rdx
	jle	.L106
	movq	%r13, %rsi
	call	memmove@PLT
	jmp	.L107
.L106:
	jne	.L107
	movsd	0(%r13), %xmm0
	movsd	%xmm0, (%rdi)
.L107:
	movq	8(%rbx), %rdi
	movq	8(%r12), %rdx
	movq	%rdi, %rsi
	subq	(%rbx), %rsi
	addq	(%r12), %rsi
	subq	%rsi, %rdx
	cmpq	$8, %rdx
	jle	.L108
	call	memmove@PLT
	jmp	.L104
.L108:
	jne	.L104
	movsd	(%rsi), %xmm0
	movsd	%xmm0, (%rdi)
.L104:
	addq	(%rbx), %rbp
	movq	%rbp, 8(%rbx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
.L113:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	ret
	.cfi_endproc
.LFE5136:
	.size	_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0, .-_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0
	.align 2
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0, @function
_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0:
.LFB5141:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA5141
	cmpq	%rdi, %rsi
	je	.L146
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rsi, %rax
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rdi, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movq	8(%rsi), %r13
	movq	(%rsi), %r14
	movq	(%rdi), %r15
	movq	16(%rdi), %rdx
	movq	%r13, %r12
	subq	%r14, %r12
	subq	%r15, %rdx
	cmpq	%r12, %rdx
	jnb	.L118
	movabsq	$9223372036854775800, %rax
	cmpq	%r12, %rax
	jnb	.L119
.LEHB4:
	call	_ZSt28__throw_bad_array_new_lengthv@PLT
.L119:
	movq	%r12, %rdi
	call	_Znwm@PLT
.LEHE4:
	movq	%rax, %rbp
	movq	%rax, %r15
.L120:
	cmpq	%r14, %r13
	je	.L149
	movq	%r14, %rsi
	movq	%r15, %rdi
.LEHB5:
	call	_ZNSt6vectorIdSaIdEEC1ERKS1_
.LEHE5:
	addq	$24, %r15
	addq	$24, %r14
	jmp	.L120
.L149:
	movq	(%rbx), %rdi
	movq	8(%rbx), %rsi
	call	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.L123
	movq	16(%rbx), %rsi
	subq	%rdi, %rsi
	call	_ZdlPvm@PLT
	jmp	.L123
.L141:
	endbr64
	movq	%rax, %rdi
.L124:
	call	__cxa_begin_catch@PLT
	movq	%r15, %rsi
	movq	%rbp, %rdi
	call	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
.LEHB6:
	call	__cxa_rethrow@PLT
.LEHE6:
.L142:
	endbr64
	movq	%rax, %rbx
.L125:
	call	__cxa_end_catch@PLT
	movq	%rbx, %rdi
	call	__cxa_begin_catch@PLT
	movq	%r12, %rsi
	movq	%rbp, %rdi
	call	_ZdlPvm@PLT
.LEHB7:
	call	__cxa_rethrow@PLT
.LEHE7:
.L140:
	endbr64
	movq	%rax, %rbx
.L126:
	call	__cxa_end_catch@PLT
	movq	%rbx, %rdi
.LEHB8:
	call	_Unwind_Resume@PLT
.L123:
	movq	%rbp, (%rbx)
	addq	%r12, %rbp
	movq	%rbp, 16(%rbx)
	jmp	.L127
.L118:
	movq	8(%rdi), %r13
	movq	%r13, %rbp
	subq	%r15, %rbp
	cmpq	%r12, %rbp
	jb	.L128
	movabsq	$-6148914691236517205, %rax
	movq	%r12, %rbp
	movq	%r15, %rdx
	sarq	$3, %rbp
	imulq	%rax, %rbp
	movq	%rbp, %rax
.L129:
	testq	%rax, %rax
	jle	.L150
	movq	%r14, %rsi
	movq	%rdx, %rdi
	movq	%rax, 8(%rsp)
	addq	$24, %r14
	movq	%rdx, (%rsp)
	call	_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0
	movq	(%rsp), %rdx
	movq	8(%rsp), %rax
	addq	$24, %rdx
	decq	%rax
	jmp	.L129
.L150:
	xorl	%eax, %eax
	testq	%rbp, %rbp
	cmovs	%rax, %rbp
	imulq	$24, %rbp, %rbp
	addq	%r15, %rbp
.L131:
	cmpq	%rbp, %r13
	je	.L127
	movq	%rbp, %rdi
	addq	$24, %rbp
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L131
.L128:
	movabsq	$-6148914691236517205, %rdx
	sarq	$3, %rbp
	imulq	%rdx, %rbp
.L134:
	testq	%rbp, %rbp
	jle	.L151
	movq	%r14, %rsi
	movq	%r15, %rdi
	movq	%rax, (%rsp)
	addq	$24, %r14
	call	_ZNSt6vectorIdSaIdEEaSERKS1_.isra.0
.LEHE8:
	addq	$24, %r15
	movq	(%rsp), %rax
	decq	%rbp
	jmp	.L134
.L151:
	movq	8(%rbx), %r13
	movq	8(%rax), %r14
	movq	%r13, %rbp
	movq	%r13, %r15
	subq	(%rbx), %rbp
	addq	(%rax), %rbp
.L136:
	cmpq	%rbp, %r14
	je	.L127
	movq	%rbp, %rsi
	movq	%r15, %rdi
.LEHB9:
	call	_ZNSt6vectorIdSaIdEEC1ERKS1_
.LEHE9:
	addq	$24, %rbp
	addq	$24, %r15
	jmp	.L136
.L143:
	endbr64
	movq	%rax, %rdi
.L138:
	call	__cxa_begin_catch@PLT
	movq	%r15, %rsi
	movq	%r13, %rdi
	call	_ZNSt12_Destroy_auxILb0EE9__destroyIPSt6vectorIdSaIdEEEEvT_S6_
.LEHB10:
	call	__cxa_rethrow@PLT
.LEHE10:
.L144:
	endbr64
	movq	%rax, %rbx
.L139:
	call	__cxa_end_catch@PLT
	movq	%rbx, %rdi
.LEHB11:
	call	_Unwind_Resume@PLT
.LEHE11:
.L127:
	addq	(%rbx), %r12
	movq	%r12, 8(%rbx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L146:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	.cfi_restore 14
	.cfi_restore 15
	ret
	.cfi_endproc
.LFE5141:
	.section	.gcc_except_table,"a",@progbits
	.align 4
.LLSDA5141:
	.byte	0xff
	.byte	0x9b
	.uleb128 .LLSDATT5141-.LLSDATTD5141
.LLSDATTD5141:
	.byte	0x1
	.uleb128 .LLSDACSE5141-.LLSDACSB5141
.LLSDACSB5141:
	.uleb128 .LEHB4-.LFB5141
	.uleb128 .LEHE4-.LEHB4
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB5-.LFB5141
	.uleb128 .LEHE5-.LEHB5
	.uleb128 .L141-.LFB5141
	.uleb128 0x1
	.uleb128 .LEHB6-.LFB5141
	.uleb128 .LEHE6-.LEHB6
	.uleb128 .L142-.LFB5141
	.uleb128 0x3
	.uleb128 .LEHB7-.LFB5141
	.uleb128 .LEHE7-.LEHB7
	.uleb128 .L140-.LFB5141
	.uleb128 0
	.uleb128 .LEHB8-.LFB5141
	.uleb128 .LEHE8-.LEHB8
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB9-.LFB5141
	.uleb128 .LEHE9-.LEHB9
	.uleb128 .L143-.LFB5141
	.uleb128 0x1
	.uleb128 .LEHB10-.LFB5141
	.uleb128 .LEHE10-.LEHB10
	.uleb128 .L144-.LFB5141
	.uleb128 0
	.uleb128 .LEHB11-.LFB5141
	.uleb128 .LEHE11-.LEHB11
	.uleb128 0
	.uleb128 0
.LLSDACSE5141:
	.byte	0x1
	.byte	0
	.byte	0
	.byte	0x7d
	.align 4
	.long	0

.LLSDATT5141:
	.text
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0, .-_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0
	.globl	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, @function
_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i:
.LFB4190:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4190
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%rsi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$760, %rsp
	.cfi_def_cfa_offset 816
	movq	%rdx, 96(%rsp)
	movl	%ecx, 16(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 744(%rsp)
	xorl	%eax, %eax
	cmpl	%ecx, thresholdSize(%rip)
	jl	.L153
	movq	744(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L232
	movl	16(%rsp), %ecx
	movq	96(%rsp), %rdx
	addq	$760, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.L153:
	.cfi_restore_state
	movl	16(%rsp), %edi
	leaq	672(%rsp), %r13
	leaq	144(%rsp), %r14
	call	_Z17getNextPowerOfTwoi
	movq	%r13, %rdx
	movslq	%eax, %rbx
	movl	%eax, 20(%rsp)
	leaq	720(%rsp), %rax
	movq	%rax, %rdi
	movq	%rbx, %rsi
	movq	%rax, (%rsp)
.LEHB12:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE12:
	movq	(%rsp), %rdx
	movq	%rbx, %rsi
	movq	%r14, %rdi
	leaq	696(%rsp), %rax
	movq	%rax, %rcx
	movq	%rax, 24(%rsp)
.LEHB13:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE13:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	(%rsp), %rdi
	movq	%r13, %rdx
	movq	%rbx, %rsi
.LEHB14:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE14:
	leaq	168(%rsp), %r15
	movq	24(%rsp), %rcx
	movq	(%rsp), %rdx
	movq	%rbx, %rsi
	movq	%r15, %rdi
.LEHB15:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE15:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	(%rsp), %rdi
	movq	%r13, %rdx
	movq	%rbx, %rsi
.LEHB16:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE16:
	movq	24(%rsp), %rcx
	movq	(%rsp), %rdx
	leaq	192(%rsp), %rdi
	movq	%rbx, %rsi
.LEHB17:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE17:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movl	20(%rsp), %ecx
	cmpl	%ecx, 16(%rsp)
	jne	.L155
	movq	%rbp, %rsi
	movq	%r14, %rdi
.LEHB18:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0
	movq	%r12, %rsi
	movq	%r15, %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_.isra.0
	jmp	.L156
.L155:
	movl	16(%rsp), %r8d
	movq	%r12, %rcx
	movq	%rbp, %rdx
	movq	%r15, %rsi
	movq	%r14, %rdi
	call	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
.L156:
	movl	20(%rsp), %eax
	movl	$2, %ecx
	leaq	216(%rsp), %rbp
	movq	%rbp, %rdi
	cltd
	idivl	%ecx
	movq	(%rsp), %rdx
	movslq	%eax, %rbx
	movl	%eax, 12(%rsp)
	movq	%rbx, %rsi
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE18:
	movq	(%rsp), %rcx
	leaq	240(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB19:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE19:
	movq	(%rsp), %rcx
	leaq	264(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB20:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE20:
	movq	(%rsp), %rcx
	leaq	288(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB21:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE21:
	movq	(%rsp), %rcx
	leaq	312(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB22:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE22:
	movq	(%rsp), %rcx
	leaq	336(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB23:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE23:
	movq	(%rsp), %rcx
	leaq	360(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB24:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE24:
	movq	(%rsp), %rcx
	leaq	384(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB25:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE25:
	movq	(%rsp), %rcx
	leaq	408(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB26:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE26:
	movq	(%rsp), %rcx
	leaq	432(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB27:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE27:
	movq	(%rsp), %rcx
	leaq	456(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB28:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE28:
	movq	(%rsp), %rcx
	leaq	480(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB29:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE29:
	movq	(%rsp), %rcx
	leaq	504(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB30:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE30:
	movq	(%rsp), %rcx
	leaq	528(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB31:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE31:
	movq	(%rsp), %rcx
	leaq	552(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB32:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE32:
	movq	(%rsp), %rcx
	leaq	576(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB33:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE33:
	movq	(%rsp), %rcx
	leaq	600(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB34:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE34:
	movq	(%rsp), %rcx
	leaq	624(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB35:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE35:
	movq	(%rsp), %rcx
	leaq	648(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB36:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE36:
	movq	(%rsp), %rcx
	movq	%rbp, %rdx
	movq	%rbx, %rsi
	movq	%r13, %rdi
.LEHB37:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE37:
	movq	(%rsp), %rcx
	movq	24(%rsp), %rdi
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB38:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE38:
	movq	(%rsp), %rdi
	leaq	143(%rsp), %rcx
	movq	%rbp, %rdx
	movq	%rbx, %rsi
.LEHB39:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE39:
	movq	240(%rsp), %rax
	movq	144(%rsp), %rdi
	xorl	%edx, %edx
	xorl	%esi, %esi
	movq	168(%rsp), %rbp
	movq	%rax, 120(%rsp)
	movq	264(%rsp), %rax
	movq	%rax, (%rsp)
	movq	288(%rsp), %rax
	movq	%rax, 32(%rsp)
	movq	312(%rsp), %rax
	movq	%rax, 72(%rsp)
	movq	336(%rsp), %rax
	movq	%rax, 80(%rsp)
	movq	360(%rsp), %rax
	movq	%rax, 104(%rsp)
	movq	384(%rsp), %rax
	movq	%rax, 56(%rsp)
	movq	408(%rsp), %rax
	movq	%rax, 40(%rsp)
	leaq	0(,%rbx,8), %rax
	movq	%rax, 88(%rsp)
.L157:
	movl	12(%rsp), %eax
	cmpl	%eax, %esi
	jge	.L159
	cmpl	$1, 20(%rsp)
	jle	.L161
	movq	120(%rsp), %rax
	movq	32(%rsp), %rcx
	movq	(%rdi,%rdx), %r11
	movq	0(%rbp,%rdx), %r9
	movq	(%rax,%rdx), %rax
	movq	(%rcx,%rdx), %r15
	movq	72(%rsp), %rcx
	movq	%rax, 112(%rsp)
	movq	(%rsp), %rax
	movq	(%rcx,%rdx), %r14
	movq	80(%rsp), %rcx
	movq	(%rax,%rdx), %rax
	movq	(%rcx,%rdx), %r13
	movq	104(%rsp), %rcx
	movq	%rax, 24(%rsp)
	movl	12(%rsp), %eax
	movq	(%rcx,%rdx), %r12
	movq	88(%rsp), %rcx
	addl	%esi, %eax
	movl	%eax, %eax
	imulq	$24, %rax, %rax
	movq	(%rdi,%rax), %r10
	movq	0(%rbp,%rax), %r8
	movq	56(%rsp), %rax
	movq	(%rax,%rdx), %rax
	movq	%rax, 64(%rsp)
	movq	40(%rsp), %rax
	movq	(%rax,%rdx), %rax
	movq	%rax, 48(%rsp)
	xorl	%eax, %eax
.L158:
	movsd	(%r11,%rax,8), %xmm0
	movq	112(%rsp), %rbx
	movsd	%xmm0, (%rbx,%rax,8)
	movq	24(%rsp), %rbx
	movsd	(%r11,%rcx), %xmm0
	movsd	%xmm0, (%rbx,%rax,8)
	movsd	(%r10,%rax,8), %xmm0
	movq	64(%rsp), %rbx
	movsd	%xmm0, (%r15,%rax,8)
	movsd	(%r10,%rcx), %xmm0
	movsd	%xmm0, (%r14,%rax,8)
	movsd	(%r9,%rax,8), %xmm0
	movsd	%xmm0, 0(%r13,%rax,8)
	movsd	(%r9,%rcx), %xmm0
	movsd	%xmm0, (%r12,%rax,8)
	movsd	(%r8,%rax,8), %xmm0
	movsd	%xmm0, (%rbx,%rax,8)
	movq	48(%rsp), %rbx
	movsd	(%r8,%rcx), %xmm0
	addq	$8, %rcx
	movsd	%xmm0, (%rbx,%rax,8)
	incq	%rax
	cmpl	%eax, 12(%rsp)
	jg	.L158
.L161:
	incl	%esi
	addq	$24, %rdx
	jmp	.L157
.L159:
	movl	12(%rsp), %ecx
	leaq	528(%rsp), %rbx
	leaq	312(%rsp), %rbp
	leaq	240(%rsp), %r13
	movq	%rbx, %rdx
	movq	%rbp, %rsi
	movq	%r13, %rdi
	leaq	552(%rsp), %r15
	leaq	408(%rsp), %r14
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r15, %rdx
	movq	%r14, %rsi
	leaq	336(%rsp), %r12
	movq	%r12, %rdi
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r15, %rsi
	movq	%rbx, %rdi
	leaq	720(%rsp), %rax
	leaq	576(%rsp), %rdx
	movq	%rax, 80(%rsp)
.LEHB40:
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	leaq	288(%rsp), %rdi
	movq	%rbx, %rdx
	movq	%rbp, %rsi
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r12, %rsi
	movq	%rbx, %rdi
	leaq	600(%rsp), %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	leaq	360(%rsp), %rdi
	movq	%r15, %rdx
	movq	%r14, %rsi
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r15, %rsi
	movq	%r13, %rdi
	leaq	624(%rsp), %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	leaq	384(%rsp), %rdi
	movq	%r15, %rdx
	movq	%r12, %rsi
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r15, %rsi
	movq	%rbp, %rdi
	leaq	648(%rsp), %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	leaq	528(%rsp), %rbx
	leaq	264(%rsp), %r15
	movq	%r13, %rdi
	movq	%rbx, %rdx
	movq	%r15, %rsi
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r14, %rsi
	movq	%rbx, %rdi
	leaq	672(%rsp), %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r13, %rsi
	leaq	288(%rsp), %rdi
	movq	%rbx, %rdx
	leaq	552(%rsp), %r13
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r13, %rdx
	movq	%r12, %rdi
	leaq	360(%rsp), %rsi
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r13, %rsi
	movq	%rbx, %rdi
	leaq	696(%rsp), %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%rbx, %rdx
	movq	%rbp, %rsi
	movq	%r15, %rdi
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	%r14, %rsi
	movq	%r13, %rdx
	leaq	360(%rsp), %rdi
	movq	%r13, 24(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	80(%rsp), %rdx
	movq	%rbx, %rdi
	movq	24(%rsp), %rsi
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.LEHE40:
	leaq	648(%rsp), %rax
	movl	12(%rsp), %ecx
	movq	%rbx, %rdx
	movq	%rbx, (%rsp)
	movq	%rax, 32(%rsp)
	leaq	576(%rsp), %rax
	movq	32(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, 40(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	(%rsp), %rdi
	movq	%r13, %rdx
	leaq	672(%rsp), %rax
	movq	%rax, %rsi
	movq	%rax, 48(%rsp)
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	leaq	432(%rsp), %rax
	movl	12(%rsp), %ecx
	movq	%r13, %rdi
	movq	%rax, %rdx
	leaq	720(%rsp), %rsi
	movq	%rax, 104(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	48(%rsp), %rsi
	leaq	456(%rsp), %rax
	movq	%rax, 56(%rsp)
	leaq	624(%rsp), %rax
	movq	56(%rsp), %rdx
	movq	%rax, %rdi
	movq	%rax, 64(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	56(%rsp), %rdx
	leaq	600(%rsp), %rax
	movq	32(%rsp), %rsi
	movq	%rax, %rdi
	movq	%rax, 72(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	(%rsp), %rdx
	movq	72(%rsp), %rsi
	movq	40(%rsp), %rdi
	call	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movl	12(%rsp), %ecx
	movq	(%rsp), %rdi
	movq	%r13, %rdx
	movq	64(%rsp), %rsi
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	leaq	504(%rsp), %rax
	movl	12(%rsp), %ecx
	movq	%r13, %rdi
	movq	%rax, 112(%rsp)
	leaq	696(%rsp), %rax
	movq	112(%rsp), %rdx
	movq	%rax, %rsi
	movq	%rax, 120(%rsp)
	call	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movq	432(%rsp), %rbp
	xorl	%edx, %edx
	movq	192(%rsp), %rdi
	movq	456(%rsp), %rbx
	movq	480(%rsp), %r11
	xorl	%ecx, %ecx
	movq	504(%rsp), %r10
.L162:
	movl	12(%rsp), %eax
	cmpl	%eax, %ecx
	jge	.L200
	cmpl	$1, 20(%rsp)
	jle	.L166
	movl	12(%rsp), %eax
	movq	0(%rbp,%rdx), %r15
	movq	(%rdi,%rdx), %r9
	movq	(%rbx,%rdx), %r14
	addl	%ecx, %eax
	movq	(%r11,%rdx), %r13
	movq	(%r10,%rdx), %r12
	movl	%eax, %eax
	movq	88(%rsp), %rsi
	imulq	$24, %rax, %rax
	movq	(%rdi,%rax), %r8
	xorl	%eax, %eax
.L163:
	movsd	(%r15,%rax,8), %xmm0
	movsd	%xmm0, (%r9,%rax,8)
	movsd	(%r14,%rax,8), %xmm0
	movsd	%xmm0, (%r9,%rsi)
	movsd	0(%r13,%rax,8), %xmm0
	movsd	%xmm0, (%r8,%rax,8)
	movsd	(%r12,%rax,8), %xmm0
	incq	%rax
	movsd	%xmm0, (%r8,%rsi)
	addq	$8, %rsi
	cmpl	%eax, 12(%rsp)
	jg	.L163
.L166:
	incl	%ecx
	addq	$24, %rdx
	jmp	.L162
.L200:
	xorl	%edx, %edx
	xorl	%ecx, %ecx
.L164:
	movl	16(%rsp), %eax
	cmpl	%eax, %ecx
	jge	.L236
	movq	96(%rsp), %rax
	movq	(%rdi,%rdx), %r8
	movq	(%rax), %rax
	movq	(%rax,%rdx), %rsi
	xorl	%eax, %eax
.L167:
	movsd	(%r8,%rax,8), %xmm0
	movsd	%xmm0, (%rsi,%rax,8)
	incq	%rax
	cmpl	%eax, 16(%rsp)
	jg	.L167
	incl	%ecx
	addq	$24, %rdx
	jmp	.L164
.L236:
	movq	80(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	120(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	48(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	32(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	64(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	72(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	40(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	24(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	112(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	480(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	56(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	104(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	408(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	384(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	360(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	336(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	312(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	288(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	264(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	240(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	216(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	leaq	192(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	168(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	leaq	144(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	744(%rsp), %rax
	subq	%fs:40, %rax
	je	.L199
	jmp	.L232
.L201:
	endbr64
	movq	%rax, %rbx
.L169:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L235
.L202:
	endbr64
	movq	%rax, %rbx
.L171:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L172
.L204:
	endbr64
	movq	%rax, %rbx
.L173:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L174
.L228:
	endbr64
	movq	%rax, %rbx
.L175:
	movq	80(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L176
.L227:
	endbr64
	movq	%rax, %rbx
.L176:
	leaq	696(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L177
.L226:
	endbr64
	movq	%rax, %rbx
.L177:
	leaq	672(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L178
.L225:
	endbr64
	movq	%rax, %rbx
.L178:
	leaq	648(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L179
.L224:
	endbr64
	movq	%rax, %rbx
.L179:
	leaq	624(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L180
.L223:
	endbr64
	movq	%rax, %rbx
.L180:
	leaq	600(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L181
.L222:
	endbr64
	movq	%rax, %rbx
.L181:
	leaq	576(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L182
.L221:
	endbr64
	movq	%rax, %rbx
.L182:
	leaq	552(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L183
.L220:
	endbr64
	movq	%rax, %rbx
.L183:
	leaq	528(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L184
.L219:
	endbr64
	movq	%rax, %rbx
.L184:
	leaq	504(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L185
.L218:
	endbr64
	movq	%rax, %rbx
.L185:
	leaq	480(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L186
.L217:
	endbr64
	movq	%rax, %rbx
.L186:
	leaq	456(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L187
.L216:
	endbr64
	movq	%rax, %rbx
.L187:
	leaq	432(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L188
.L215:
	endbr64
	movq	%rax, %rbx
.L188:
	leaq	408(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L189
.L214:
	endbr64
	movq	%rax, %rbx
.L189:
	leaq	384(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L190
.L213:
	endbr64
	movq	%rax, %rbx
.L190:
	leaq	360(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L191
.L212:
	endbr64
	movq	%rax, %rbx
.L191:
	leaq	336(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L192
.L211:
	endbr64
	movq	%rax, %rbx
.L192:
	leaq	312(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L193
.L210:
	endbr64
	movq	%rax, %rbx
.L193:
	leaq	288(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L194
.L209:
	endbr64
	movq	%rax, %rbx
.L194:
	leaq	264(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L195
.L208:
	endbr64
	movq	%rax, %rbx
.L195:
	leaq	240(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L196
.L207:
	endbr64
	movq	%rax, %rbx
.L196:
	leaq	216(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L197
.L206:
	endbr64
	movq	%rax, %rbx
.L197:
	leaq	192(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L174
.L205:
	endbr64
	movq	%rax, %rbx
.L174:
	leaq	168(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L172
.L203:
	endbr64
	movq	%rax, %rbx
.L172:
	leaq	144(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
.L235:
	movq	744(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L232
	movq	%rbx, %rdi
.LEHB41:
	call	_Unwind_Resume@PLT
.LEHE41:
.L232:
	call	__stack_chk_fail@PLT
.L199:
	addq	$760, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4190:
	.section	.gcc_except_table
.LLSDA4190:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4190-.LLSDACSB4190
.LLSDACSB4190:
	.uleb128 .LEHB12-.LFB4190
	.uleb128 .LEHE12-.LEHB12
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB13-.LFB4190
	.uleb128 .LEHE13-.LEHB13
	.uleb128 .L201-.LFB4190
	.uleb128 0
	.uleb128 .LEHB14-.LFB4190
	.uleb128 .LEHE14-.LEHB14
	.uleb128 .L203-.LFB4190
	.uleb128 0
	.uleb128 .LEHB15-.LFB4190
	.uleb128 .LEHE15-.LEHB15
	.uleb128 .L202-.LFB4190
	.uleb128 0
	.uleb128 .LEHB16-.LFB4190
	.uleb128 .LEHE16-.LEHB16
	.uleb128 .L205-.LFB4190
	.uleb128 0
	.uleb128 .LEHB17-.LFB4190
	.uleb128 .LEHE17-.LEHB17
	.uleb128 .L204-.LFB4190
	.uleb128 0
	.uleb128 .LEHB18-.LFB4190
	.uleb128 .LEHE18-.LEHB18
	.uleb128 .L206-.LFB4190
	.uleb128 0
	.uleb128 .LEHB19-.LFB4190
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L207-.LFB4190
	.uleb128 0
	.uleb128 .LEHB20-.LFB4190
	.uleb128 .LEHE20-.LEHB20
	.uleb128 .L208-.LFB4190
	.uleb128 0
	.uleb128 .LEHB21-.LFB4190
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L209-.LFB4190
	.uleb128 0
	.uleb128 .LEHB22-.LFB4190
	.uleb128 .LEHE22-.LEHB22
	.uleb128 .L210-.LFB4190
	.uleb128 0
	.uleb128 .LEHB23-.LFB4190
	.uleb128 .LEHE23-.LEHB23
	.uleb128 .L211-.LFB4190
	.uleb128 0
	.uleb128 .LEHB24-.LFB4190
	.uleb128 .LEHE24-.LEHB24
	.uleb128 .L212-.LFB4190
	.uleb128 0
	.uleb128 .LEHB25-.LFB4190
	.uleb128 .LEHE25-.LEHB25
	.uleb128 .L213-.LFB4190
	.uleb128 0
	.uleb128 .LEHB26-.LFB4190
	.uleb128 .LEHE26-.LEHB26
	.uleb128 .L214-.LFB4190
	.uleb128 0
	.uleb128 .LEHB27-.LFB4190
	.uleb128 .LEHE27-.LEHB27
	.uleb128 .L215-.LFB4190
	.uleb128 0
	.uleb128 .LEHB28-.LFB4190
	.uleb128 .LEHE28-.LEHB28
	.uleb128 .L216-.LFB4190
	.uleb128 0
	.uleb128 .LEHB29-.LFB4190
	.uleb128 .LEHE29-.LEHB29
	.uleb128 .L217-.LFB4190
	.uleb128 0
	.uleb128 .LEHB30-.LFB4190
	.uleb128 .LEHE30-.LEHB30
	.uleb128 .L218-.LFB4190
	.uleb128 0
	.uleb128 .LEHB31-.LFB4190
	.uleb128 .LEHE31-.LEHB31
	.uleb128 .L219-.LFB4190
	.uleb128 0
	.uleb128 .LEHB32-.LFB4190
	.uleb128 .LEHE32-.LEHB32
	.uleb128 .L220-.LFB4190
	.uleb128 0
	.uleb128 .LEHB33-.LFB4190
	.uleb128 .LEHE33-.LEHB33
	.uleb128 .L221-.LFB4190
	.uleb128 0
	.uleb128 .LEHB34-.LFB4190
	.uleb128 .LEHE34-.LEHB34
	.uleb128 .L222-.LFB4190
	.uleb128 0
	.uleb128 .LEHB35-.LFB4190
	.uleb128 .LEHE35-.LEHB35
	.uleb128 .L223-.LFB4190
	.uleb128 0
	.uleb128 .LEHB36-.LFB4190
	.uleb128 .LEHE36-.LEHB36
	.uleb128 .L224-.LFB4190
	.uleb128 0
	.uleb128 .LEHB37-.LFB4190
	.uleb128 .LEHE37-.LEHB37
	.uleb128 .L225-.LFB4190
	.uleb128 0
	.uleb128 .LEHB38-.LFB4190
	.uleb128 .LEHE38-.LEHB38
	.uleb128 .L226-.LFB4190
	.uleb128 0
	.uleb128 .LEHB39-.LFB4190
	.uleb128 .LEHE39-.LEHB39
	.uleb128 .L227-.LFB4190
	.uleb128 0
	.uleb128 .LEHB40-.LFB4190
	.uleb128 .LEHE40-.LEHB40
	.uleb128 .L228-.LFB4190
	.uleb128 0
	.uleb128 .LEHB41-.LFB4190
	.uleb128 .LEHE41-.LEHB41
	.uleb128 0
	.uleb128 0
.LLSDACSE4190:
	.text
	.size	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .-_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC6:
	.string	"w+"
.LC7:
	.string	"Strassen_Multiplication_UPDATED_CPU.csv"
.LC8:
	.string	"Algorithm_Name,Input_Dimensions,Execution_Time(ms)"
.LC10:
	.string	"%d\n"
.LC12:
	.string	"Using Milliseconds Clock: (AVG)"
.LC13:
	.string	" CPU time taken to execute for strassen matrices of size - "
.LC14:
	.string	" : "
.LC15:
	.string	" ms"
.LC16:
	.string	"\n%s,%d,%lf"
.LC17:
	.string	"Using Milliseconds Clock:(else above 1000) "
.LC18:
	.string	"MAX LIMIT"
.LC19:
	.string	"\n%s,%d,%d"
.LC9:
	.string	"Strassen_Matrix_Multiplication_CPU"
	.section	.rodata
	.align 32
.LC0:
	.long	1008
	.long	1040
	.long	1072
	.long	1104
	.long	1136
	.long	1168
	.long	1200
	.long	1232
	.long	1264
	.long	1296
	.long	1328
	.long	1360
	.long	1392
	.long	1424
	.long	1456
	.long	1488
	.long	1520
	.long	1552
	.long	1584
	.long	1616
	.long	1648
	.long	1680
	.long	1712
	.long	1744
	.long	1776
	.long	1808
	.long	1840
	.long	1872
	.long	1904
	.long	1936
	.long	1968
	.long	2000
	.long	2032
	.long	2064
	.long	2096
	.long	2128
	.long	2160
	.long	2192
	.long	2224
	.long	2256
	.long	2288
	.long	2320
	.long	2352
	.long	2384
	.long	2416
	.long	2448
	.long	2480
	.long	2512
	.long	2544
	.long	2576
	.long	2608
	.long	2640
	.long	2672
	.long	2704
	.long	2736
	.long	2768
	.long	2800
	.long	2832
	.long	2864
	.long	2896
	.long	2928
	.long	2960
	.long	2992
	.long	3024
	.long	3056
	.long	3088
	.long	3120
	.long	3152
	.long	3184
	.long	3216
	.long	3248
	.long	3280
	.long	3312
	.long	3344
	.long	3376
	.long	3408
	.long	3440
	.long	3472
	.long	3504
	.long	3536
	.long	3568
	.long	3600
	.long	3632
	.long	3664
	.long	3696
	.long	3728
	.long	3760
	.long	3792
	.long	3824
	.long	3856
	.long	3888
	.long	3920
	.long	3952
	.long	3984
	.long	4016
	.long	4080
	.long	4144
	.long	4208
	.long	4272
	.long	4336
	.long	4400
	.long	4464
	.long	4528
	.long	4592
	.long	4656
	.long	4720
	.long	4784
	.long	4848
	.long	4912
	.long	4976
	.long	5040
	.long	5104
	.long	5168
	.long	5232
	.long	5296
	.long	5360
	.long	5424
	.long	5488
	.long	5552
	.long	5616
	.long	5680
	.long	5744
	.long	5808
	.long	5872
	.long	5936
	.long	6000
	.long	6064
	.long	6128
	.long	6192
	.long	6256
	.long	6320
	.long	6384
	.long	6448
	.long	6512
	.long	6576
	.long	6640
	.long	6704
	.long	6768
	.long	6832
	.long	6896
	.long	6960
	.long	7024
	.long	7088
	.long	7152
	.long	7216
	.long	7280
	.long	7344
	.long	7408
	.long	7472
	.long	7536
	.long	7600
	.long	7664
	.long	7728
	.long	7792
	.long	7856
	.long	7920
	.long	7984
	.long	8048
	.long	8112
	.long	8176
	.long	8240
	.long	8304
	.long	8368
	.long	8432
	.long	8496
	.long	8560
	.long	8624
	.long	8688
	.long	8752
	.long	8816
	.long	8880
	.long	8944
	.long	9008
	.long	9072
	.long	9136
	.long	9200
	.long	9264
	.long	9328
	.long	9392
	.long	9456
	.long	9520
	.long	9584
	.long	9648
	.long	9712
	.long	9776
	.long	9840
	.long	9904
	.long	9968
	.long	10032
	.long	10096
	.long	10160
	.long	10224
	.long	10288
	.long	10352
	.long	10416
	.long	10480
	.long	10544
	.long	10608
	.long	10672
	.long	10736
	.long	10800
	.long	10864
	.long	10928
	.long	10992
	.section	.text.startup
	.globl	main
	.type	main, @function
main:
.LFB4192:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4192
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC6(%rip), %rsi
	leaq	.LC7(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$1224, %rsp
	.cfi_def_cfa_offset 1280
	movq	%fs:40, %rax
	movq	%rax, 1208(%rsp)
	xorl	%eax, %eax
	leaq	292(%rsp), %r15
.LEHB42:
	call	fopen@PLT
	leaq	.LC8(%rip), %rdx
	movl	$2, %esi
	movq	%rax, %rdi
	movq	%rax, 48(%rsp)
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
	xorl	%eax, %eax
	movl	$35, %ecx
	leaq	1108(%rsp), %rdi
	leaq	.LC9(%rip), %rsi
	movl	$204, %edx
	rep movsb
	leaq	1143(%rsp), %rdi
	movl	$65, %ecx
	leaq	.LC0(%rip), %rsi
	rep stosb
	leaq	292(%rsp), %rdi
	movl	$204, %ecx
	rep movsl
	leaq	.LC10(%rip), %rsi
	movl	$2, %edi
	call	__printf_chk@PLT
	leaq	1108(%rsp), %rax
	movq	%rax, 56(%rsp)
.L243:
	movl	(%r15,%r12,4), %ebx
	cmpl	$3500, %ebx
	jg	.L238
	leaq	176(%rsp), %rax
	movslq	%ebx, %rbp
	movq	%rax, 24(%rsp)
	leaq	224(%rsp), %rax
	movq	24(%rsp), %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, 8(%rsp)
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE42:
	leaq	200(%rsp), %rax
	movq	8(%rsp), %rdx
	movq	%rbp, %rsi
	movq	%rax, 16(%rsp)
	leaq	80(%rsp), %rax
	movq	16(%rsp), %rcx
	movq	%rax, %rdi
	movq	%rax, 32(%rsp)
.LEHB43:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE43:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	24(%rsp), %rdx
	movq	8(%rsp), %rdi
	movq	%rbp, %rsi
.LEHB44:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE44:
	leaq	104(%rsp), %rax
	movq	16(%rsp), %rcx
	movq	8(%rsp), %rdx
	movq	%rbp, %rsi
	movq	%rax, %rdi
	movq	%rax, 40(%rsp)
.LEHB45:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE45:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	24(%rsp), %rdx
	movq	8(%rsp), %rdi
	movq	%rbp, %rsi
.LEHB46:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE46:
	leaq	128(%rsp), %r13
	movq	16(%rsp), %rcx
	movq	8(%rsp), %rdx
	movq	%rbp, %rsi
	movq	%r13, %rdi
.LEHB47:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE47:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	40(%rsp), %rsi
	movq	32(%rsp), %rdi
	movl	%ebx, %edx
	call	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	cmpl	$1000, %ebx
	jg	.L239
	xorl	%ebp, %ebp
	leaq	68(%rsp), %r14
.L240:
	movq	16(%rsp), %rdi
.LEHB48:
	call	cudaEventCreate@PLT
	movq	8(%rsp), %rdi
	call	cudaEventCreate@PLT
	movq	200(%rsp), %rdi
	xorl	%esi, %esi
	call	cudaEventRecord@PLT
	movq	40(%rsp), %rsi
	movq	32(%rsp), %rdi
	movl	%ebx, %ecx
	movq	%r13, %rdx
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movq	224(%rsp), %rdi
	xorl	%esi, %esi
	call	cudaEventRecord@PLT
	movq	224(%rsp), %rdi
	call	cudaEventSynchronize@PLT
	movq	224(%rsp), %rdx
	movq	200(%rsp), %rsi
	movq	%r14, %rdi
	call	cudaEventElapsedTime@PLT
	cvtss2sd	68(%rsp), %xmm0
	movsd	%xmm0, 248(%rsp,%rbp,8)
	incq	%rbp
	cmpq	$5, %rbp
	jne	.L240
	leaq	_ZSt4cout(%rip), %r13
	leaq	.LC12(%rip), %rsi
	movsd	248(%rsp), %xmm0
	addsd	256(%rsp), %xmm0
	movq	%r13, %rdi
	addsd	264(%rsp), %xmm0
	addsd	272(%rsp), %xmm0
	addsd	280(%rsp), %xmm0
	divsd	.LC11(%rip), %xmm0
	movq	%xmm0, %rbp
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	.LC13(%rip), %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC14(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movq	%rbp, %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC15(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%r13, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movq	56(%rsp), %rcx
	movq	48(%rsp), %rdi
	movl	%ebx, %r8d
	movb	$1, %al
	movq	%rbp, %xmm0
	leaq	.LC16(%rip), %rdx
	movl	$2, %esi
	call	__fprintf_chk@PLT
	jmp	.L241
.L239:
	movq	24(%rsp), %rdx
	movq	8(%rsp), %rdi
	movq	%rbp, %rsi
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE48:
	leaq	152(%rsp), %r13
	movq	16(%rsp), %rcx
	movq	8(%rsp), %rdx
	movq	%rbp, %rsi
	movq	%r13, %rdi
.LEHB49:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE49:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	8(%rsp), %rdi
	leaq	72(%rsp), %rdx
	movq	%rbp, %rsi
.LEHB50:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE50:
	movq	16(%rsp), %rcx
	movq	8(%rsp), %rdx
	movq	%rbp, %rsi
	movq	24(%rsp), %rdi
.LEHB51:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE51:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	8(%rsp), %rdi
	leaq	67(%rsp), %rdx
	movq	%rbp, %rsi
.LEHB52:
	call	_ZNSt6vectorIdSaIdEEC1EmRKS0_
.LEHE52:
	leaq	72(%rsp), %r14
	movq	8(%rsp), %rdx
	movq	16(%rsp), %rdi
	movq	%rbp, %rsi
	movq	%r14, %rcx
.LEHB53:
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC1EmRKS1_RKS2_
.LEHE53:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	movq	24(%rsp), %rsi
	movq	%r13, %rdi
	movl	%ebx, %edx
	call	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	movq	%r14, %rdi
.LEHB54:
	call	cudaEventCreate@PLT
	movq	8(%rsp), %rdi
	call	cudaEventCreate@PLT
	movq	72(%rsp), %rdi
	xorl	%esi, %esi
	call	cudaEventRecord@PLT
	movq	16(%rsp), %rdx
	movq	24(%rsp), %rsi
	movl	%ebx, %ecx
	movq	%r13, %rdi
	call	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	movq	224(%rsp), %rdi
	xorl	%esi, %esi
	call	cudaEventRecord@PLT
	movq	224(%rsp), %rdi
	call	cudaEventSynchronize@PLT
	movq	224(%rsp), %rdx
	movq	72(%rsp), %rsi
	leaq	68(%rsp), %rdi
	call	cudaEventElapsedTime@PLT
	leaq	_ZSt4cout(%rip), %rbp
	leaq	.LC17(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	leaq	.LC13(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	movl	%ebx, %esi
	call	_ZNSolsEi@PLT
	movq	%rax, %rdi
	leaq	.LC14(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	%rax, %rdi
	cvtss2sd	68(%rsp), %xmm0
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	movq	%rax, %rdi
	leaq	.LC15(%rip), %rsi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rbp, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movq	56(%rsp), %rcx
	movq	48(%rsp), %rdi
	movl	%ebx, %r8d
	movb	$1, %al
	leaq	.LC16(%rip), %rdx
	movl	$2, %esi
	cvtss2sd	68(%rsp), %xmm0
	call	__fprintf_chk@PLT
.LEHE54:
	movq	16(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	24(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	%r13, %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
.L241:
	leaq	128(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	40(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	movq	32(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L242
.L238:
	leaq	.LC18(%rip), %rsi
	leaq	_ZSt4cout(%rip), %rdi
.LEHB55:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movq	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rsi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E.isra.0
	movq	56(%rsp), %rcx
	movl	%ebx, %r8d
	xorl	%eax, %eax
	movq	48(%rsp), %rdi
	movl	$800000, %r9d
	movl	$2, %esi
	leaq	.LC19(%rip), %rdx
	call	__fprintf_chk@PLT
.L242:
	incq	%r12
	cmpq	$204, %r12
	jne	.L243
	movq	1208(%rsp), %rax
	subq	%fs:40, %rax
	je	.L258
	jmp	.L273
.L259:
	endbr64
	movq	%rax, %rbx
.L244:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L276
.L260:
	endbr64
	movq	%rax, %rbx
.L246:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L247
.L262:
	endbr64
	movq	%rax, %rbx
.L248:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L249
.L265:
	endbr64
	movq	%rax, %rbx
.L250:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L251
.L266:
	endbr64
	movq	%rax, %rbx
.L252:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L253
.L268:
	endbr64
	movq	%rax, %rbx
.L254:
	movq	8(%rsp), %rdi
	call	_ZNSt6vectorIdSaIdEED1Ev
	jmp	.L255
.L270:
	endbr64
	movq	%rax, %rbx
.L256:
	movq	16(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L255
.L269:
	endbr64
	movq	%rax, %rbx
.L255:
	movq	24(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L253
.L267:
	endbr64
	movq	%rax, %rbx
.L253:
	leaq	152(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L251
.L264:
	endbr64
	movq	%rax, %rbx
.L251:
	leaq	128(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L249
.L263:
	endbr64
	movq	%rax, %rbx
.L249:
	movq	40(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
	jmp	.L247
.L261:
	endbr64
	movq	%rax, %rbx
.L247:
	movq	32(%rsp), %rdi
	call	_ZNSt6vectorIS_IdSaIdEESaIS1_EED1Ev
.L276:
	movq	1208(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L273
	movq	%rbx, %rdi
	call	_Unwind_Resume@PLT
.LEHE55:
.L273:
	call	__stack_chk_fail@PLT
.L258:
	addq	$1224, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4192:
	.section	.gcc_except_table
.LLSDA4192:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4192-.LLSDACSB4192
.LLSDACSB4192:
	.uleb128 .LEHB42-.LFB4192
	.uleb128 .LEHE42-.LEHB42
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB43-.LFB4192
	.uleb128 .LEHE43-.LEHB43
	.uleb128 .L259-.LFB4192
	.uleb128 0
	.uleb128 .LEHB44-.LFB4192
	.uleb128 .LEHE44-.LEHB44
	.uleb128 .L261-.LFB4192
	.uleb128 0
	.uleb128 .LEHB45-.LFB4192
	.uleb128 .LEHE45-.LEHB45
	.uleb128 .L260-.LFB4192
	.uleb128 0
	.uleb128 .LEHB46-.LFB4192
	.uleb128 .LEHE46-.LEHB46
	.uleb128 .L263-.LFB4192
	.uleb128 0
	.uleb128 .LEHB47-.LFB4192
	.uleb128 .LEHE47-.LEHB47
	.uleb128 .L262-.LFB4192
	.uleb128 0
	.uleb128 .LEHB48-.LFB4192
	.uleb128 .LEHE48-.LEHB48
	.uleb128 .L264-.LFB4192
	.uleb128 0
	.uleb128 .LEHB49-.LFB4192
	.uleb128 .LEHE49-.LEHB49
	.uleb128 .L265-.LFB4192
	.uleb128 0
	.uleb128 .LEHB50-.LFB4192
	.uleb128 .LEHE50-.LEHB50
	.uleb128 .L267-.LFB4192
	.uleb128 0
	.uleb128 .LEHB51-.LFB4192
	.uleb128 .LEHE51-.LEHB51
	.uleb128 .L266-.LFB4192
	.uleb128 0
	.uleb128 .LEHB52-.LFB4192
	.uleb128 .LEHE52-.LEHB52
	.uleb128 .L269-.LFB4192
	.uleb128 0
	.uleb128 .LEHB53-.LFB4192
	.uleb128 .LEHE53-.LEHB53
	.uleb128 .L268-.LFB4192
	.uleb128 0
	.uleb128 .LEHB54-.LFB4192
	.uleb128 .LEHE54-.LEHB54
	.uleb128 .L270-.LFB4192
	.uleb128 0
	.uleb128 .LEHB55-.LFB4192
	.uleb128 .LEHE55-.LEHB55
	.uleb128 0
	.uleb128 0
.LLSDACSE4192:
	.section	.text.startup
	.size	main, .-main
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.globl	thresholdSize
	.data
	.align 4
	.type	thresholdSize, @object
	.size	thresholdSize, 4
thresholdSize:
	.long	128
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC1:
	.long	-4194304
	.long	1105199103
	.align 8
.LC2:
	.long	0
	.long	1076101120
	.align 8
.LC4:
	.long	0
	.long	1073741824
	.align 8
.LC11:
	.long	0
	.long	1075052544
	.hidden	DW.ref.__gxx_personality_v0
	.weak	DW.ref.__gxx_personality_v0
	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
	.align 8
	.type	DW.ref.__gxx_personality_v0, @object
	.size	DW.ref.__gxx_personality_v0, 8
DW.ref.__gxx_personality_v0:
	.quad	__gxx_personality_v0
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:


#include <hip/hip_runtime.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <list>
using namespace std;

//size at which the sequential multiplication is used instead of recursive Strassen
int thresholdSize = 128;  

void initMat(vector< vector<double> > &a, vector< vector<double> > &b, int n)
{
		// initialize matrices and fill them with random values
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				a[i][j] = (double)rand()/RAND_MAX*10;
				b[i][j] = (double)rand()/RAND_MAX*10;
			}
		}
}
	
void multiplyMatStandard(vector< vector<double> > &a, 
		vector< vector<double> > &b, vector< vector<double> > &c, int n)
{
		// standard matrix multipmlication: C <- C + A x B
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				double temp  = 0;
				for (int k = 0; k < n; ++k) {
					temp += a[i][k] * b[k][j];
				}
				c[i][j]=temp;
			}
		}
}

int getNextPowerOfTwo(int n)
{
	return pow(2, int(ceil(log2(n))));
}

void fillZeros(vector< vector<double> > &newA, vector< vector<double> > &newB,
	       vector< vector<double> > &a, vector< vector<double> > &b, int n)
{
  //pad matrix with zeros
	for (int i=0; i<n; i++){
		for (int j=0; j<n; j++){
			newA[i][j] = a[i][j];
			newB[i][j] = b[i][j];
		}
	}
}

void add(vector< vector<double> > &a, vector< vector<double> > &b,
	 vector< vector<double> > &resultMatrix, int n)
{
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			resultMatrix[i][j] = a[i][j] + b[i][j];
		}
	}
}

void subtract(vector< vector<double> > &a, vector< vector<double> > &b,
	      vector< vector<double> > &resultMatrix, int n)
{
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			resultMatrix[i][j] = a[i][j] - b[i][j];
		}
	}
}
	
void multiplyStrassen(vector< vector<double> > &a,
	vector< vector<double> > &b, vector< vector<double> > &c, int n)
{	
	if(n<=thresholdSize){
		multiplyMatStandard(a, b, c, n);
	}
	else{
		//expand and fill with zeros if matrix size is not a power of two
		int newSize = getNextPowerOfTwo(n);
		vector< vector<double> > 
			newA(newSize, vector<double>(newSize)), 
			newB(newSize, vector<double>(newSize)), 
			newC(newSize, vector<double>(newSize));
		if(n==newSize){   //matrix size is already a power of two
			newA = a;
			newB = b;
		}
		else{
			fillZeros(newA, newB, a, b, n);
		}
		
		//initialize submatrices
		int blockSize = newSize/2;  //size for a partition matrix
		vector<double> block (blockSize);
		vector< vector<double> > 
			/*partitions of newA*/
			a11(blockSize, block), a12(blockSize, block), 
			a21(blockSize, block), a22(blockSize, block), 
			/*partitions of newB*/
			b11(blockSize, block), b12(blockSize, block), 
			b21(blockSize, block), b22(blockSize, block), 
			/*partitions of newC*/
			c11(blockSize, block), c12(blockSize, block), 
			c21(blockSize, block), c22(blockSize, block), 
			/*matrices storing intermediate results*/
			aBlock(blockSize, block), bBlock(blockSize, block),
			/*set of submatrices derived from partitions*/
			m1(blockSize, block), m2(blockSize, block), 
			m3(blockSize, block), m4(blockSize, block),  
			m5(blockSize, block), m6(blockSize, block), 
			m7(blockSize, block);  
		
		//partition matrices
		for (int i=0; i<blockSize; i++){
			for (int j=0; j<blockSize; j++){
				a11[i][j] = newA[i][j];
				a12[i][j] = newA[i][j+blockSize];
				a21[i][j] = newA[i+blockSize][j];
				a22[i][j] = newA[i+blockSize][j+blockSize];
				b11[i][j] = newB[i][j];
				b12[i][j] = newB[i][j+blockSize];
				b21[i][j] = newB[i+blockSize][j];
				b22[i][j] = newB[i+blockSize][j+blockSize];
			}
		}
		
		//compute submatrices
		//m1 = (a11+a22)(b11+b22)
		add(a11, a22, aBlock, blockSize);
		add(b11, b22, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m1, blockSize);
		
		//m2 = (a21+a22)b11
		add(a21, a22, aBlock, blockSize);
		multiplyStrassen(aBlock, b11, m2, blockSize);
		
		//m3 = a11(b12-b22)
		subtract(b12, b22, bBlock, blockSize);
		multiplyStrassen(a11, bBlock, m3, blockSize);
		
		//m4 = a22(b21-b11)
		subtract(b21, b11, bBlock, blockSize);
		multiplyStrassen(a22, bBlock, m4, blockSize);
		
		//m5 = (a11+a12)b22
		add(a11, a12, aBlock, blockSize);
		multiplyStrassen(aBlock, b22, m5, blockSize);
		
		//m6 = (a21-a11)(b11+b12)
		subtract(a21, a11, aBlock, blockSize);
		add(b11, b12, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m6, blockSize);
		
		//m7 = (a12-a22)(b12+b22)
		subtract(a12, a22, aBlock, blockSize);
		add(b12, b22, bBlock, blockSize);
		multiplyStrassen(aBlock, bBlock, m7, blockSize);
		
		//calculate result submatrices
		//c11 = m1+m4-m5+m7
		add(m1, m4, aBlock, blockSize);
		subtract(aBlock, m5, bBlock, blockSize);
		add(bBlock, m7, c11, blockSize);
		
		//c12 = m3+m5
		add(m3, m5, c12, blockSize);
		
		//c21 = m2+m4
		add(m2, m4, c12, blockSize);
		
		//c22 = m1-m2+m3+m6
		subtract(m1, m2, aBlock, blockSize);
		add(aBlock, m3, bBlock, blockSize);
		add(bBlock, m6, c22, blockSize);
		
		//calculate final result matrix
		for(int i=0; i<blockSize; i++){
			for(int j=0; j<blockSize; j++){
				newC[i][j] = c11[i][j];
				newC[i][blockSize+j] = c12[i][j];
				newC[blockSize+i][j] = c21[i][j];
				newC[blockSize+i][blockSize+j] = c22[i][j];
			}
		}
		
		//remove additional values from expanded matrix
		for(int i=0; i<n; i++){
			for(int j=0; j<n; j++){
				c[i][j] = newC[i][j];
			}
		}
	}
}

double calculateMean(vector<double> data, int size) 
{
    double sum = 0.0, mean = 0.0;
    for (int i = 0; i < size; ++i) {
        sum += data[i];
    }

    mean = sum / size;
    return mean;
}
	
int main()
{
	//srand(time(0));   //seed for random number generation
	// number of sample size considered to evaluate average execution time      
	FILE * fp;
    fp=fopen("Strassen_Multiplication_UPDATED_CPU.csv","w+");
    fprintf(fp, "Algorithm_Name,Input_Dimensions,Execution_Time(ms)");
	double startTime;
	double elapsedTime;
	double standardMean;
	double strassenMean;
    float cpu_elapsed_time_ms;
    char algoname[100]="Strassen_Matrix_Multiplication_CPU";
    int my_list[]={1008, 1040, 1072, 1104, 1136, 1168, 1200, 1232, 1264, 1296, 1328, 1360, 1392, 1424, 1456, 1488, 1520, 1552, 1584, 1616, 1648, 1680, 1712, 1744, 1776, 1808, 1840, 1872, 1904, 1936, 1968, 2000, 2032, 2064, 2096, 2128, 2160, 2192, 2224, 2256, 2288, 2320, 2352, 2384, 2416, 2448, 2480, 2512, 2544, 2576, 2608, 2640, 2672, 2704, 2736, 2768, 2800, 2832, 2864, 2896, 2928, 2960, 2992, 3024, 3056, 3088, 3120, 3152, 3184, 3216, 3248, 3280, 3312, 3344, 3376, 3408, 3440, 3472, 3504, 3536, 3568, 3600, 3632, 3664, 3696, 3728, 3760, 3792, 3824, 3856, 3888, 3920, 3952, 3984, 4016, 4080, 4144, 4208, 4272, 4336, 4400, 4464, 4528, 4592, 4656, 4720, 4784, 4848, 4912, 4976, 5040, 5104, 5168, 5232, 5296, 5360, 5424, 5488, 5552, 5616, 5680, 5744, 5808, 5872, 5936, 6000, 6064, 6128, 6192, 6256, 6320, 6384, 6448, 6512, 6576, 6640, 6704, 6768, 6832, 6896, 6960, 7024, 7088, 7152, 7216, 7280, 7344, 7408, 7472, 7536, 7600, 7664, 7728, 7792, 7856, 7920, 7984, 8048, 8112, 8176, 8240, 8304, 8368, 8432, 8496, 8560, 8624, 8688, 8752, 8816, 8880, 8944, 9008, 9072, 9136, 9200, 9264, 9328, 9392, 9456, 9520, 9584, 9648, 9712, 9776, 9840, 9904, 9968, 10032, 10096, 10160, 10224, 10288, 10352, 10416, 10480, 10544, 10608, 10672, 10736, 10800, 10864, 10928, 10992};
    int length=sizeof(my_list)/sizeof(my_list[0]);
    printf("%d\n",length);
    //set threshold value if given by user
	// if(argc>1){
	// 	thresholdSize = atoi(argv[1]);  
	// }
	
	//vectors storing execution time values
	// vector<double> standardTime(sampleSize);      
	// vector<double> strassenTime(sampleSize);
	
	for (int k = 0; k < length; k++) {
		//initialize vectors for matrices a, b, c: a*b = c
        if(my_list[k]<=3500){
        int matSize = my_list[k];
		vector< vector<double> > 
			a(matSize,vector<double>(matSize)),
			b(matSize,vector<double>(matSize)),
			c(matSize,vector<double>(matSize));	
		initMat(a,b,matSize);
		double l[5];
		// //standard execution		
		// startTime = time(0);
		// multiplyMatStandard(a,b,c,matSize);
		// elapsedTime = time(0) - startTime;
		// standardTime[k] = elapsedTime;
		//multiplication using Strassen'
		if(my_list[k]<=1000){
		for(int j=0;j<5;j++){
        hipEvent_t start, stop;
		hipEventCreate(&start);
		hipEventCreate(&stop);
        hipEventRecord(start, 0);
        // cout<<startTime<<endl;
		multiplyStrassen(a,b,c,matSize);
        hipEventRecord(stop, 0);
		hipEventSynchronize(stop);
        hipEventElapsedTime(&cpu_elapsed_time_ms, start, stop);
		l[j]=cpu_elapsed_time_ms;
		//printf("%lf\n",cpu_elapsed_time_ms);
	}// elapsedTime = time(0) - startTime;
		// double duration = elapsedTime;
        // clock_t begin1 = clock();
		// multiplyStrassen(a,b,c,matSize);
		// clock_t end1 = clock();
		// double time_spent1 = (double)1000*(end1 - begin1) / CLOCKS_PER_SEC;
		double avg;
	    avg=(l[0]+l[1]+l[2]+l[3]+l[4])/5;
		cout << "Using Milliseconds Clock: (AVG)"<< endl;
		cout << " CPU time taken to execute for strassen matrices of size - " 
		<< matSize << " : " <<avg<<" ms"<< endl;
		cout << endl;
        fprintf(fp,"\n%s,%d,%lf",algoname,matSize,avg);
}else{
	int matSize = my_list[k];
		vector< vector<double> > 
			a(matSize,vector<double>(matSize)),
			b(matSize,vector<double>(matSize)),
			c(matSize,vector<double>(matSize));	
		initMat(a,b,matSize);
	hipEvent_t start, stop;
	hipEventCreate(&start);
	hipEventCreate(&stop);
	hipEventRecord(start, 0);
	// cout<<startTime<<endl;
	multiplyStrassen(a,b,c,matSize);
	hipEventRecord(stop, 0);
	hipEventSynchronize(stop);
	hipEventElapsedTime(&cpu_elapsed_time_ms, start, stop);
	cout << "Using Milliseconds Clock:(else above 1000) "<< endl;
		cout << " CPU time taken to execute for strassen matrices of size - " 
		<< matSize << " : " <<cpu_elapsed_time_ms<<" ms"<< endl;
		cout << endl;
        fprintf(fp,"\n%s,%d,%lf",algoname,matSize,cpu_elapsed_time_ms);
}
	// }
	// cout << "Standard multiplication"<< endl;
	// standardMean = calculateMean(standardTime, sampleSize);
	// cout << "Average time taken to execute matrices of size - " 
	// 	<< matSize << " : " << standardMean << endl;
	// cout << endl;
	// cout << "Multiplication using given Original Clock Strassen's"<< endl;
	// cout << "Average time taken to execute matrices of size - " 
	// 	<< matSize << " : " << time_spent1 << endl;
	// cout << endl;
	
	// cout << "Speed up gained by using Strassen's-" << matSize 
	// 	<< " : " << standardMean/strassenMean << endl;
	// cout << endl;
}else{
	        cout<<"MAX LIMIT"<<endl;
            int max_limit=800000;
            fprintf(fp,"\n%s,%d,%d",algoname,my_list[k],max_limit);
			
        }
    }
	return 0;
}


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

                                        # End of file scope inline assembly
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
.LCPI0_0:
	.quad	0x41dfffffffc00000              # double 2147483647
.LCPI0_1:
	.quad	0x4024000000000000              # double 10
	.text
	.globl	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	.type	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i,@function
_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i: # @_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	.cfi_startproc
# %bb.0:
	testl	%edx, %edx
	jle	.LBB0_6
# %bb.1:                                # %.preheader.lr.ph
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rsi, %rbx
	movq	%rdi, %r14
	movl	%edx, %r15d
	xorl	%r12d, %r12d
.LBB0_2:                                # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB0_3 Depth 2
	leaq	(,%r12,8), %rax
	leaq	(%rax,%rax,2), %r13
	xorl	%ebp, %ebp
.LBB0_3:                                #   Parent Loop BB0_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	callq	rand
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	.LCPI0_0(%rip), %xmm0
	mulsd	.LCPI0_1(%rip), %xmm0
	movq	(%r14), %rax
	movq	(%rax,%r13), %rax
	movsd	%xmm0, (%rax,%rbp,8)
	callq	rand
	movsd	.LCPI0_0(%rip), %xmm1           # xmm1 = mem[0],zero
	xorps	%xmm0, %xmm0
	cvtsi2sd	%eax, %xmm0
	divsd	%xmm1, %xmm0
	movsd	.LCPI0_1(%rip), %xmm1           # xmm1 = mem[0],zero
	mulsd	%xmm1, %xmm0
	movq	(%rbx), %rax
	movq	(%rax,%r13), %rax
	movsd	%xmm0, (%rax,%rbp,8)
	incq	%rbp
	cmpq	%rbp, %r15
	jne	.LBB0_3
# %bb.4:                                # %._crit_edge
                                        #   in Loop: Header=BB0_2 Depth=1
	incq	%r12
	cmpq	%r15, %r12
	jne	.LBB0_2
# %bb.5:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	.cfi_restore %rbx
	.cfi_restore %r12
	.cfi_restore %r13
	.cfi_restore %r14
	.cfi_restore %r15
	.cfi_restore %rbp
.LBB0_6:                                # %._crit_edge15
	retq
.Lfunc_end0:
	.size	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i, .Lfunc_end0-_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
	.cfi_endproc
                                        # -- End function
	.globl	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i # -- Begin function _Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i,@function
_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i: # @_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_startproc
# %bb.0:
	testl	%ecx, %ecx
	jle	.LBB1_8
# %bb.1:                                # %.preheader23.lr.ph
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	(%rdx), %rax
	movl	%ecx, %ecx
	xorl	%edx, %edx
.LBB1_2:                                # %.preheader.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB1_3 Depth 2
                                        #       Child Loop BB1_4 Depth 3
	movq	(%rdi), %r10
	leaq	(,%rdx,8), %r8
	leaq	(%r8,%r8,2), %r11
	movq	(%rsi), %r8
	movq	(%rax,%r11), %r9
	movq	(%r10,%r11), %r10
	xorl	%r11d, %r11d
.LBB1_3:                                # %.preheader
                                        #   Parent Loop BB1_2 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB1_4 Depth 3
	xorpd	%xmm0, %xmm0
	movq	%r8, %rbx
	xorl	%r14d, %r14d
.LBB1_4:                                #   Parent Loop BB1_2 Depth=1
                                        #     Parent Loop BB1_3 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	movsd	(%r10,%r14,8), %xmm1            # xmm1 = mem[0],zero
	movq	(%rbx), %r15
	mulsd	(%r15,%r11,8), %xmm1
	addsd	%xmm1, %xmm0
	incq	%r14
	addq	$24, %rbx
	cmpq	%r14, %rcx
	jne	.LBB1_4
# %bb.5:                                # %._crit_edge
                                        #   in Loop: Header=BB1_3 Depth=2
	movsd	%xmm0, (%r9,%r11,8)
	incq	%r11
	cmpq	%rcx, %r11
	jne	.LBB1_3
# %bb.6:                                # %._crit_edge27
                                        #   in Loop: Header=BB1_2 Depth=1
	incq	%rdx
	cmpq	%rcx, %rdx
	jne	.LBB1_2
# %bb.7:
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	.cfi_restore %rbx
	.cfi_restore %r14
	.cfi_restore %r15
.LBB1_8:                                # %._crit_edge29
	retq
.Lfunc_end1:
	.size	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .Lfunc_end1-_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z17getNextPowerOfTwoi
.LCPI2_0:
	.quad	0x3ff0000000000000              # double 1
	.text
	.globl	_Z17getNextPowerOfTwoi
	.type	_Z17getNextPowerOfTwoi,@function
_Z17getNextPowerOfTwoi:                 # @_Z17getNextPowerOfTwoi
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	cvtsi2sd	%edi, %xmm0
	callq	log2
	callq	ceil@PLT
	cvttsd2si	%xmm0, %edi
	movsd	.LCPI2_0(%rip), %xmm0           # xmm0 = mem[0],zero
	callq	ldexp@PLT
	cvttsd2si	%xmm0, %eax
	popq	%rcx
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end2:
	.size	_Z17getNextPowerOfTwoi, .Lfunc_end2-_Z17getNextPowerOfTwoi
	.cfi_endproc
                                        # -- End function
	.globl	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i # -- Begin function _Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
	.type	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i,@function
_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i: # @_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
	.cfi_startproc
# %bb.0:
	testl	%r8d, %r8d
	jle	.LBB3_6
# %bb.1:                                # %.preheader.lr.ph
	pushq	%r14
	.cfi_def_cfa_offset 16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset %rbx, -24
	.cfi_offset %r14, -16
	movq	(%rdx), %rax
	movq	(%rdi), %rdx
	movq	(%rcx), %rcx
	movq	(%rsi), %rsi
	movl	%r8d, %edi
	xorl	%r8d, %r8d
.LBB3_2:                                # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB3_3 Depth 2
	leaq	(,%r8,8), %r9
	leaq	(%r9,%r9,2), %rbx
	movq	(%rax,%rbx), %r9
	movq	(%rdx,%rbx), %r10
	movq	(%rcx,%rbx), %r11
	movq	(%rsi,%rbx), %rbx
	xorl	%r14d, %r14d
.LBB3_3:                                #   Parent Loop BB3_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r9,%r14,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, (%r10,%r14,8)
	movsd	(%r11,%r14,8), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, (%rbx,%r14,8)
	incq	%r14
	cmpq	%r14, %rdi
	jne	.LBB3_3
# %bb.4:                                # %._crit_edge
                                        #   in Loop: Header=BB3_2 Depth=1
	incq	%r8
	cmpq	%rdi, %r8
	jne	.LBB3_2
# %bb.5:
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	.cfi_restore %rbx
	.cfi_restore %r14
.LBB3_6:                                # %._crit_edge21
	retq
.Lfunc_end3:
	.size	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i, .Lfunc_end3-_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
	.cfi_endproc
                                        # -- End function
	.globl	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i # -- Begin function _Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i,@function
_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i: # @_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_startproc
# %bb.0:
	testl	%ecx, %ecx
	jle	.LBB4_5
# %bb.1:                                # %.preheader.lr.ph
	movq	(%rdi), %rax
	movq	(%rsi), %rsi
	movq	(%rdx), %rdx
	movl	%ecx, %ecx
	xorl	%edi, %edi
.LBB4_2:                                # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB4_3 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rsi,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB4_3:                                #   Parent Loop BB4_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rcx
	jne	.LBB4_3
# %bb.4:                                # %._crit_edge
                                        #   in Loop: Header=BB4_2 Depth=1
	incq	%rdi
	cmpq	%rcx, %rdi
	jne	.LBB4_2
.LBB4_5:                                # %._crit_edge18
	retq
.Lfunc_end4:
	.size	_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .Lfunc_end4-_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_endproc
                                        # -- End function
	.globl	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i # -- Begin function _Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i,@function
_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i: # @_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_startproc
# %bb.0:
	testl	%ecx, %ecx
	jle	.LBB5_5
# %bb.1:                                # %.preheader.lr.ph
	movq	(%rdi), %rax
	movq	(%rsi), %rsi
	movq	(%rdx), %rdx
	movl	%ecx, %ecx
	xorl	%edi, %edi
.LBB5_2:                                # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB5_3 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rsi,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB5_3:                                #   Parent Loop BB5_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rcx
	jne	.LBB5_3
# %bb.4:                                # %._crit_edge
                                        #   in Loop: Header=BB5_2 Depth=1
	incq	%rdi
	cmpq	%rcx, %rdi
	jne	.LBB5_2
.LBB5_5:                                # %._crit_edge18
	retq
.Lfunc_end5:
	.size	_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .Lfunc_end5-_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function _Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.LCPI6_0:
	.quad	0x3ff0000000000000              # double 1
	.text
	.globl	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.type	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i,@function
_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i: # @_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Lfunc_begin0:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception0
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$760, %rsp                      # imm = 0x2F8
	.cfi_def_cfa_offset 816
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	%ecx, %ebx
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %r12
	cmpl	%ecx, thresholdSize(%rip)
	jge	.LBB6_16
# %bb.1:
	cvtsi2sd	%ebx, %xmm0
	callq	log2
	callq	ceil@PLT
	cvttsd2si	%xmm0, %edi
	movsd	.LCPI6_0(%rip), %xmm0           # xmm0 = mem[0],zero
	callq	ldexp@PLT
	cvttsd2si	%xmm0, %ebp
	movslq	%ebp, %r13
.Ltmp0:
	leaq	168(%rsp), %rdi
	leaq	144(%rsp), %rdx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp1:
# %bb.2:
.Ltmp3:
	leaq	712(%rsp), %rdi
	leaq	168(%rsp), %rdx
	movq	%rsp, %rcx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp4:
# %bb.3:
	movq	168(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_5
# %bb.4:
	callq	_ZdlPv
.LBB6_5:                                # %_ZNSt6vectorIdSaIdEED2Ev.exit
.Ltmp6:
	leaq	144(%rsp), %rdi
	movq	%rsp, %rdx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp7:
# %bb.6:
.Ltmp9:
	leaq	168(%rsp), %rdi
	leaq	144(%rsp), %rdx
	leaq	120(%rsp), %rcx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp10:
# %bb.7:
	movq	144(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_9
# %bb.8:
	callq	_ZdlPv
.LBB6_9:                                # %_ZNSt6vectorIdSaIdEED2Ev.exit223
.Ltmp12:
	movq	%rsp, %rdi
	leaq	120(%rsp), %rdx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp13:
# %bb.10:
.Ltmp15:
	leaq	144(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	288(%rsp), %rcx
	movq	%r13, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp16:
# %bb.11:
	movq	(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_13
# %bb.12:
	callq	_ZdlPv
.LBB6_13:                               # %_ZNSt6vectorIdSaIdEED2Ev.exit225
	cmpl	%ebx, %ebp
	jne	.LBB6_17
# %bb.14:
.Ltmp18:
	leaq	712(%rsp), %rdi
	movq	%r12, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_
.Ltmp19:
# %bb.15:
.Ltmp20:
	leaq	168(%rsp), %rdi
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_
.Ltmp21:
	jmp	.LBB6_18
.LBB6_16:
	movq	%r12, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	movl	%ebx, %ecx
	addq	$760, %rsp                      # imm = 0x2F8
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	_Z19multiplyMatStandardRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i # TAILCALL
.LBB6_17:
	.cfi_def_cfa_offset 816
	leaq	712(%rsp), %rdi
	leaq	168(%rsp), %rsi
	movq	%r12, %rdx
	movq	%r15, %rcx
	movl	%ebx, %r8d
	callq	_Z9fillZerosRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_S4_i
.LBB6_18:
	movl	%ebp, %r12d
	shrl	$31, %r12d
	addl	%ebp, %r12d
	sarl	%r12d
	movslq	%r12d, %r15
.Ltmp23:
	movq	%rsp, %rdi
	leaq	120(%rsp), %rdx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp24:
# %bb.19:
.Ltmp26:
	leaq	120(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	288(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp27:
# %bb.20:
.Ltmp29:
	leaq	288(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	456(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp30:
# %bb.21:
.Ltmp32:
	leaq	456(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	240(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp33:
# %bb.22:
.Ltmp35:
	leaq	240(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	216(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp36:
# %bb.23:
.Ltmp38:
	leaq	216(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	264(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp39:
# %bb.24:
.Ltmp41:
	leaq	264(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	688(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp42:
# %bb.25:
.Ltmp44:
	leaq	688(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	192(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp45:
# %bb.26:
.Ltmp47:
	leaq	192(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	664(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp48:
# %bb.27:
.Ltmp50:
	leaq	664(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	432(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp51:
# %bb.28:
.Ltmp53:
	leaq	432(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	736(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp54:
# %bb.29:
.Ltmp56:
	leaq	736(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	640(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp57:
# %bb.30:
.Ltmp59:
	leaq	640(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	56(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp60:
# %bb.31:
.Ltmp62:
	leaq	56(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	32(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp63:
# %bb.32:
.Ltmp65:
	leaq	32(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	408(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp66:
# %bb.33:
.Ltmp68:
	leaq	408(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	384(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp69:
# %bb.34:
.Ltmp71:
	leaq	384(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	360(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp72:
# %bb.35:
.Ltmp74:
	leaq	360(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	336(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp75:
# %bb.36:
.Ltmp77:
	leaq	336(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	312(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp78:
# %bb.37:
.Ltmp80:
	leaq	312(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	616(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp81:
# %bb.38:
.Ltmp83:
	leaq	616(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	592(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp84:
# %bb.39:
.Ltmp86:
	leaq	592(%rsp), %rdi
	movq	%rsp, %rdx
	leaq	31(%rsp), %rcx
	movq	%r15, %rsi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp87:
# %bb.40:
	movq	%r14, 480(%rsp)                 # 8-byte Spill
	movl	%ebx, 116(%rsp)                 # 4-byte Spill
	cmpl	$2, %ebp
	jl	.LBB6_54
# %bb.41:                               # %.preheader424.lr.ph
	movl	%ebp, 112(%rsp)                 # 4-byte Spill
	movq	712(%rsp), %rax
	movq	%rax, 560(%rsp)                 # 8-byte Spill
	movq	120(%rsp), %rax
	movq	%rax, 552(%rsp)                 # 8-byte Spill
	movq	288(%rsp), %rax
	movq	%rax, 544(%rsp)                 # 8-byte Spill
	movq	456(%rsp), %rax
	movq	%rax, 536(%rsp)                 # 8-byte Spill
	movq	240(%rsp), %rax
	movq	%rax, 528(%rsp)                 # 8-byte Spill
	movq	168(%rsp), %rax
	movq	%rax, 520(%rsp)                 # 8-byte Spill
	movq	216(%rsp), %rax
	movq	%rax, 512(%rsp)                 # 8-byte Spill
	movq	264(%rsp), %rax
	movq	%rax, 504(%rsp)                 # 8-byte Spill
	movq	688(%rsp), %rax
	movq	%rax, 496(%rsp)                 # 8-byte Spill
	movq	192(%rsp), %rax
	movq	%rax, 488(%rsp)                 # 8-byte Spill
	movl	%r12d, 108(%rsp)                # 4-byte Spill
	movl	%r12d, %r11d
	leaq	(,%r11,8), %r14
	xorl	%esi, %esi
	movq	%r11, 568(%rsp)                 # 8-byte Spill
.LBB6_42:                               # %.lr.ph
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_43 Depth 2
	leaq	(,%rsi,8), %rax
	leaq	(%rax,%rax,2), %rax
	movq	560(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rax), %rbp
	movq	552(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx,%rax), %rcx
	movq	%rcx, 96(%rsp)                  # 8-byte Spill
	movq	544(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx,%rax), %rcx
	movq	%rcx, 88(%rsp)                  # 8-byte Spill
	movq	%rsi, 576(%rsp)                 # 8-byte Spill
	leaq	(%rsi,%r11), %rcx
	shlq	$3, %rcx
	leaq	(%rcx,%rcx,2), %rcx
	movq	(%rdx,%rcx), %rsi
	movq	536(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rax), %rdx
	movq	%rdx, 80(%rsp)                  # 8-byte Spill
	movq	528(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rax), %rdx
	movq	%rdx, 584(%rsp)                 # 8-byte Spill
	movq	520(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rax), %r10
	movq	512(%rsp), %r9                  # 8-byte Reload
	movq	(%r9,%rax), %r11
	movq	504(%rsp), %r9                  # 8-byte Reload
	movq	(%r9,%rax), %r15
	movq	(%rdx,%rcx), %r12
	movq	496(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx,%rax), %rcx
	movq	488(%rsp), %rdx                 # 8-byte Reload
	movq	(%rdx,%rax), %r9
	leaq	(%r12,%r14), %rbx
	leaq	(%r10,%r14), %rax
	movq	%rsi, %r8
	leaq	(%rsi,%r14), %r13
	movq	%rbp, %rdi
	addq	%r14, %rbp
	xorl	%edx, %edx
.LBB6_43:                               #   Parent Loop BB6_42 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rdi,%rdx), %xmm0              # xmm0 = mem[0],zero
	movq	96(%rsp), %rsi                  # 8-byte Reload
	movsd	%xmm0, (%rsi,%rdx)
	movsd	(%rbp,%rdx), %xmm0              # xmm0 = mem[0],zero
	movq	88(%rsp), %rsi                  # 8-byte Reload
	movsd	%xmm0, (%rsi,%rdx)
	movsd	(%r8,%rdx), %xmm0               # xmm0 = mem[0],zero
	movq	80(%rsp), %rsi                  # 8-byte Reload
	movsd	%xmm0, (%rsi,%rdx)
	movsd	(%r13,%rdx), %xmm0              # xmm0 = mem[0],zero
	movq	584(%rsp), %rsi                 # 8-byte Reload
	movsd	%xmm0, (%rsi,%rdx)
	movsd	(%r10,%rdx), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%r11,%rdx)
	movsd	(%rax,%rdx), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%r15,%rdx)
	movsd	(%r12,%rdx), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%rcx,%rdx)
	movsd	(%rbx,%rdx), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%r9,%rdx)
	addq	$8, %rdx
	cmpq	%rdx, %r14
	jne	.LBB6_43
# %bb.44:                               # %._crit_edge
                                        #   in Loop: Header=BB6_42 Depth=1
	movq	576(%rsp), %rsi                 # 8-byte Reload
	incq	%rsi
	movq	568(%rsp), %r11                 # 8-byte Reload
	cmpq	%r11, %rsi
	jne	.LBB6_42
# %bb.45:                               # %._crit_edge427
	movl	112(%rsp), %ebp                 # 4-byte Reload
	cmpl	$2, %ebp
	movl	108(%rsp), %r12d                # 4-byte Reload
	jl	.LBB6_54
# %bb.46:                               # %.preheader.lr.ph.i
	movq	120(%rsp), %rcx
	movq	240(%rsp), %rdx
	movq	56(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_47:                               # %.lr.ph.i
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_48 Depth 2
	leaq	(,%rdi,8), %rax
	leaq	(%rax,%rax,2), %r9
	movq	(%rcx,%r9), %rax
	movq	(%rdx,%r9), %r8
	movq	(%rsi,%r9), %r9
	xorl	%r10d, %r10d
.LBB6_48:                               #   Parent Loop BB6_47 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rax,%r10,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%r8,%r10,8), %xmm0
	movsd	%xmm0, (%r9,%r10,8)
	incq	%r10
	cmpq	%r10, %r11
	jne	.LBB6_48
# %bb.49:                               # %._crit_edge.i
                                        #   in Loop: Header=BB6_47 Depth=1
	incq	%rdi
	cmpq	%r11, %rdi
	jne	.LBB6_47
# %bb.50:                               # %.preheader.lr.ph.i232
	movq	216(%rsp), %rcx
	movq	192(%rsp), %rdx
	movq	32(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_51:                               # %.lr.ph.i234
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_52 Depth 2
	leaq	(,%rdi,8), %rax
	leaq	(%rax,%rax,2), %r9
	movq	(%rcx,%r9), %rax
	movq	(%rdx,%r9), %r8
	movq	(%rsi,%r9), %r9
	xorl	%r10d, %r10d
.LBB6_52:                               #   Parent Loop BB6_51 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rax,%r10,8), %xmm0            # xmm0 = mem[0],zero
	addsd	(%r8,%r10,8), %xmm0
	movsd	%xmm0, (%r9,%r10,8)
	incq	%r10
	cmpq	%r10, %r11
	jne	.LBB6_52
# %bb.53:                               # %._crit_edge.i239
                                        #   in Loop: Header=BB6_51 Depth=1
	incq	%rdi
	cmpq	%r11, %rdi
	jne	.LBB6_51
.LBB6_54:                               # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit242
.Ltmp89:
	leaq	56(%rsp), %rdi
	leaq	32(%rsp), %rsi
	leaq	408(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp90:
# %bb.55:
	cmpl	$2, %ebp
	jl	.LBB6_60
# %bb.56:                               # %.preheader.lr.ph.i243
	movq	456(%rsp), %rax
	movq	240(%rsp), %rcx
	movq	56(%rsp), %rdx
	movl	%r12d, %esi
	xorl	%edi, %edi
.LBB6_57:                               # %.lr.ph.i245
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_58 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rcx,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_58:                               #   Parent Loop BB6_57 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rsi
	jne	.LBB6_58
# %bb.59:                               # %._crit_edge.i250
                                        #   in Loop: Header=BB6_57 Depth=1
	incq	%rdi
	cmpq	%rsi, %rdi
	jne	.LBB6_57
.LBB6_60:                               # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit253
.Ltmp91:
	leaq	56(%rsp), %rdi
	leaq	216(%rsp), %rsi
	leaq	384(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp92:
# %bb.61:
	cmpl	$2, %ebp
	jl	.LBB6_66
# %bb.62:                               # %.preheader.lr.ph.i254
	movq	264(%rsp), %rax
	movq	192(%rsp), %rcx
	movq	32(%rsp), %rdx
	movl	%r12d, %esi
	xorl	%edi, %edi
.LBB6_63:                               # %.lr.ph.i256
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_64 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rcx,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_64:                               #   Parent Loop BB6_63 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rsi
	jne	.LBB6_64
# %bb.65:                               # %._crit_edge.i261
                                        #   in Loop: Header=BB6_63 Depth=1
	incq	%rdi
	cmpq	%rsi, %rdi
	jne	.LBB6_63
.LBB6_66:                               # %_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit
.Ltmp93:
	leaq	120(%rsp), %rdi
	leaq	32(%rsp), %rsi
	leaq	360(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp94:
# %bb.67:
	cmpl	$2, %ebp
	jl	.LBB6_72
# %bb.68:                               # %.preheader.lr.ph.i264
	movq	688(%rsp), %rax
	movq	216(%rsp), %rcx
	movq	32(%rsp), %rdx
	movl	%r12d, %esi
	xorl	%edi, %edi
.LBB6_69:                               # %.lr.ph.i266
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_70 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rcx,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_70:                               #   Parent Loop BB6_69 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rsi
	jne	.LBB6_70
# %bb.71:                               # %._crit_edge.i271
                                        #   in Loop: Header=BB6_69 Depth=1
	incq	%rdi
	cmpq	%rsi, %rdi
	jne	.LBB6_69
.LBB6_72:                               # %_Z8subtractRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit274
.Ltmp95:
	leaq	240(%rsp), %rdi
	leaq	32(%rsp), %rsi
	leaq	336(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp96:
# %bb.73:
	cmpl	$2, %ebp
	jl	.LBB6_78
# %bb.74:                               # %.preheader.lr.ph.i275
	movq	120(%rsp), %rax
	movq	288(%rsp), %rcx
	movq	56(%rsp), %rdx
	movl	%r12d, %esi
	xorl	%edi, %edi
.LBB6_75:                               # %.lr.ph.i277
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_76 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rax,%r10), %r8
	movq	(%rcx,%r10), %r9
	movq	(%rdx,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_76:                               #   Parent Loop BB6_75 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rsi
	jne	.LBB6_76
# %bb.77:                               # %._crit_edge.i282
                                        #   in Loop: Header=BB6_75 Depth=1
	incq	%rdi
	cmpq	%rsi, %rdi
	jne	.LBB6_75
.LBB6_78:                               # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit285
.Ltmp97:
	leaq	56(%rsp), %rdi
	leaq	192(%rsp), %rsi
	leaq	312(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp98:
# %bb.79:
	cmpl	$2, %ebp
	jl	.LBB6_88
# %bb.80:                               # %.preheader.lr.ph.i286
	movq	456(%rsp), %rcx
	movq	120(%rsp), %rdx
	movq	56(%rsp), %rsi
	movl	%r12d, %eax
	xorl	%edi, %edi
.LBB6_81:                               # %.lr.ph.i288
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_82 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_82:                               #   Parent Loop BB6_81 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_82
# %bb.83:                               # %._crit_edge.i293
                                        #   in Loop: Header=BB6_81 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_81
# %bb.84:                               # %.preheader.lr.ph.i297
	movq	216(%rsp), %rcx
	movq	264(%rsp), %rdx
	movq	32(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_85:                               # %.lr.ph.i299
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_86 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_86:                               #   Parent Loop BB6_85 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_86
# %bb.87:                               # %._crit_edge.i304
                                        #   in Loop: Header=BB6_85 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_85
.LBB6_88:                               # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit307
.Ltmp99:
	leaq	56(%rsp), %rdi
	leaq	32(%rsp), %rsi
	leaq	616(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp100:
# %bb.89:
	cmpl	$2, %ebp
	jl	.LBB6_98
# %bb.90:                               # %.preheader.lr.ph.i308
	movq	288(%rsp), %rcx
	movq	240(%rsp), %rdx
	movq	56(%rsp), %rsi
	movl	%r12d, %eax
	xorl	%edi, %edi
.LBB6_91:                               # %.lr.ph.i310
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_92 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_92:                               #   Parent Loop BB6_91 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_92
# %bb.93:                               # %._crit_edge.i315
                                        #   in Loop: Header=BB6_91 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_91
# %bb.94:                               # %.preheader.lr.ph.i319
	movq	264(%rsp), %rcx
	movq	192(%rsp), %rdx
	movq	32(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_95:                               # %.lr.ph.i321
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_96 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_96:                               #   Parent Loop BB6_95 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_96
# %bb.97:                               # %._crit_edge.i326
                                        #   in Loop: Header=BB6_95 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_95
.LBB6_98:                               # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit329
.Ltmp101:
	leaq	56(%rsp), %rdi
	leaq	32(%rsp), %rsi
	leaq	592(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp102:
# %bb.99:
	cmpl	$2, %ebp
	jl	.LBB6_137
# %bb.100:                              # %.preheader.lr.ph.i330
	movq	408(%rsp), %rcx
	movq	336(%rsp), %rdx
	movq	56(%rsp), %rsi
	movl	%r12d, %eax
	xorl	%edi, %edi
.LBB6_101:                              # %.lr.ph.i332
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_102 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_102:                              #   Parent Loop BB6_101 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_102
# %bb.103:                              # %._crit_edge.i337
                                        #   in Loop: Header=BB6_101 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_101
# %bb.104:                              # %.preheader.lr.ph.i341
	movq	56(%rsp), %rcx
	movq	312(%rsp), %rdx
	movq	32(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_105:                              # %.lr.ph.i343
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_106 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_106:                              #   Parent Loop BB6_105 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_106
# %bb.107:                              # %._crit_edge.i348
                                        #   in Loop: Header=BB6_105 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_105
# %bb.108:                              # %.preheader.lr.ph.i352
	movq	32(%rsp), %rcx
	movq	592(%rsp), %rdx
	movq	664(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_109:                              # %.lr.ph.i354
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_110 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_110:                              #   Parent Loop BB6_109 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_110
# %bb.111:                              # %._crit_edge.i359
                                        #   in Loop: Header=BB6_109 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_109
# %bb.112:                              # %.preheader.lr.ph.i363
	movq	360(%rsp), %rcx
	movq	312(%rsp), %rdx
	movq	432(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_113:                              # %.lr.ph.i365
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_114 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_114:                              #   Parent Loop BB6_113 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_114
# %bb.115:                              # %._crit_edge.i370
                                        #   in Loop: Header=BB6_113 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_113
# %bb.116:                              # %.preheader.lr.ph.i374
	movq	384(%rsp), %rcx
	movq	336(%rsp), %rdx
	movq	432(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_117:                              # %.lr.ph.i376
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_118 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_118:                              #   Parent Loop BB6_117 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_118
# %bb.119:                              # %._crit_edge.i381
                                        #   in Loop: Header=BB6_117 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_117
# %bb.120:                              # %.preheader.lr.ph.i385
	movq	408(%rsp), %rcx
	movq	384(%rsp), %rdx
	movq	56(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_121:                              # %.lr.ph.i387
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_122 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_122:                              #   Parent Loop BB6_121 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	subsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_122
# %bb.123:                              # %._crit_edge.i392
                                        #   in Loop: Header=BB6_121 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_121
# %bb.124:                              # %.preheader.lr.ph.i396
	movq	56(%rsp), %rcx
	movq	360(%rsp), %rdx
	movq	32(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_125:                              # %.lr.ph.i398
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_126 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_126:                              #   Parent Loop BB6_125 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_126
# %bb.127:                              # %._crit_edge.i403
                                        #   in Loop: Header=BB6_125 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_125
# %bb.128:                              # %.preheader.lr.ph.i407
	movq	32(%rsp), %rcx
	movq	616(%rsp), %rdx
	movq	640(%rsp), %rsi
	xorl	%edi, %edi
.LBB6_129:                              # %.lr.ph.i409
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_130 Depth 2
	leaq	(,%rdi,8), %r8
	leaq	(%r8,%r8,2), %r10
	movq	(%rcx,%r10), %r8
	movq	(%rdx,%r10), %r9
	movq	(%rsi,%r10), %r10
	xorl	%r11d, %r11d
.LBB6_130:                              #   Parent Loop BB6_129 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%r8,%r11,8), %xmm0             # xmm0 = mem[0],zero
	addsd	(%r9,%r11,8), %xmm0
	movsd	%xmm0, (%r10,%r11,8)
	incq	%r11
	cmpq	%r11, %rax
	jne	.LBB6_130
# %bb.131:                              # %._crit_edge.i414
                                        #   in Loop: Header=BB6_129 Depth=1
	incq	%rdi
	cmpq	%rax, %rdi
	jne	.LBB6_129
# %bb.132:                              # %_Z3addRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i.exit417
	cmpl	$2, %ebp
	jl	.LBB6_137
# %bb.133:                              # %.preheader423.lr.ph
	movq	664(%rsp), %rcx
	movq	%rcx, 96(%rsp)                  # 8-byte Spill
	movq	144(%rsp), %rdx
	movq	432(%rsp), %rcx
	movq	%rcx, 88(%rsp)                  # 8-byte Spill
	movq	736(%rsp), %rcx
	movq	%rcx, 80(%rsp)                  # 8-byte Spill
	movq	640(%rsp), %r8
	leaq	(%rax,%rax,2), %rcx
	leaq	(%rdx,%rcx,8), %r9
	leaq	(,%rax,8), %r10
	xorl	%r11d, %r11d
.LBB6_134:                              # %.lr.ph429
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_135 Depth 2
	leaq	(,%r11,8), %rcx
	leaq	(%rcx,%rcx,2), %rcx
	movq	96(%rsp), %rsi                  # 8-byte Reload
	movq	(%rsi,%rcx), %rbx
	movq	(%rdx,%rcx), %r14
	movq	88(%rsp), %rsi                  # 8-byte Reload
	movq	(%rsi,%rcx), %r15
	movq	80(%rsp), %rsi                  # 8-byte Reload
	movq	(%rsi,%rcx), %r12
	movq	(%r9,%rcx), %r13
	movq	(%r8,%rcx), %rbp
	leaq	(%r10,%r13), %rcx
	leaq	(%r14,%r10), %rsi
	xorl	%edi, %edi
.LBB6_135:                              #   Parent Loop BB6_134 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rbx,%rdi), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%r14,%rdi)
	movsd	(%r15,%rdi), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%rsi,%rdi)
	movsd	(%r12,%rdi), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%r13,%rdi)
	movsd	(%rbp,%rdi), %xmm0              # xmm0 = mem[0],zero
	movsd	%xmm0, (%rcx,%rdi)
	addq	$8, %rdi
	cmpq	%rdi, %r10
	jne	.LBB6_135
# %bb.136:                              # %._crit_edge430
                                        #   in Loop: Header=BB6_134 Depth=1
	incq	%r11
	cmpq	%rax, %r11
	jne	.LBB6_134
.LBB6_137:                              # %.preheader422
	movl	116(%rsp), %edx                 # 4-byte Reload
	testl	%edx, %edx
	jle	.LBB6_142
# %bb.138:                              # %.preheader.lr.ph
	movq	144(%rsp), %rax
	movq	480(%rsp), %rcx                 # 8-byte Reload
	movq	(%rcx), %rcx
	movl	%edx, %edx
	xorl	%esi, %esi
.LBB6_139:                              # %.lr.ph433
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB6_140 Depth 2
	leaq	(,%rsi,8), %rdi
	leaq	(%rdi,%rdi,2), %r8
	movq	(%rax,%r8), %rdi
	movq	(%rcx,%r8), %r8
	xorl	%r9d, %r9d
.LBB6_140:                              #   Parent Loop BB6_139 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	(%rdi,%r9,8), %xmm0             # xmm0 = mem[0],zero
	movsd	%xmm0, (%r8,%r9,8)
	incq	%r9
	cmpq	%r9, %rdx
	jne	.LBB6_140
# %bb.141:                              # %._crit_edge434
                                        #   in Loop: Header=BB6_139 Depth=1
	incq	%rsi
	cmpq	%rdx, %rsi
	jne	.LBB6_139
.LBB6_142:                              # %._crit_edge436
	leaq	592(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	616(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	312(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	336(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	360(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	384(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	408(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	32(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	56(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	640(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	736(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	432(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	664(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	192(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	688(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	264(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	216(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	240(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	456(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	288(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	120(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	movq	(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_144
# %bb.143:
	callq	_ZdlPv
.LBB6_144:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit419
	leaq	144(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	168(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	712(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	addq	$760, %rsp                      # imm = 0x2F8
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB6_145:
	.cfi_def_cfa_offset 816
.Ltmp88:
	movq	%rax, %rbx
	jmp	.LBB6_179
.LBB6_146:
.Ltmp85:
	movq	%rax, %rbx
	jmp	.LBB6_180
.LBB6_147:
.Ltmp82:
	movq	%rax, %rbx
	jmp	.LBB6_181
.LBB6_148:
.Ltmp79:
	movq	%rax, %rbx
	jmp	.LBB6_182
.LBB6_149:
.Ltmp76:
	movq	%rax, %rbx
	jmp	.LBB6_183
.LBB6_150:
.Ltmp73:
	movq	%rax, %rbx
	jmp	.LBB6_184
.LBB6_151:
.Ltmp70:
	movq	%rax, %rbx
	jmp	.LBB6_185
.LBB6_152:
.Ltmp67:
	movq	%rax, %rbx
	jmp	.LBB6_186
.LBB6_153:
.Ltmp64:
	movq	%rax, %rbx
	jmp	.LBB6_187
.LBB6_154:
.Ltmp61:
	movq	%rax, %rbx
	jmp	.LBB6_188
.LBB6_155:
.Ltmp58:
	movq	%rax, %rbx
	jmp	.LBB6_189
.LBB6_156:
.Ltmp55:
	movq	%rax, %rbx
	jmp	.LBB6_190
.LBB6_157:
.Ltmp52:
	movq	%rax, %rbx
	jmp	.LBB6_191
.LBB6_158:
.Ltmp49:
	movq	%rax, %rbx
	jmp	.LBB6_192
.LBB6_159:
.Ltmp46:
	movq	%rax, %rbx
	jmp	.LBB6_193
.LBB6_160:
.Ltmp43:
	movq	%rax, %rbx
	jmp	.LBB6_194
.LBB6_161:
.Ltmp40:
	movq	%rax, %rbx
	jmp	.LBB6_195
.LBB6_162:
.Ltmp37:
	movq	%rax, %rbx
	jmp	.LBB6_196
.LBB6_163:
.Ltmp34:
	movq	%rax, %rbx
	jmp	.LBB6_197
.LBB6_164:
.Ltmp31:
	movq	%rax, %rbx
	jmp	.LBB6_198
.LBB6_165:
.Ltmp28:
	movq	%rax, %rbx
	jmp	.LBB6_199
.LBB6_166:
.Ltmp25:
	jmp	.LBB6_168
.LBB6_167:
.Ltmp22:
.LBB6_168:
	movq	%rax, %rbx
	jmp	.LBB6_201
.LBB6_169:
.Ltmp17:
	movq	%rax, %rbx
	movq	(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_202
# %bb.170:
	callq	_ZdlPv
	jmp	.LBB6_202
.LBB6_171:
.Ltmp14:
	movq	%rax, %rbx
	jmp	.LBB6_202
.LBB6_172:
.Ltmp11:
	movq	%rax, %rbx
	movq	144(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_203
# %bb.173:
	callq	_ZdlPv
	jmp	.LBB6_203
.LBB6_174:
.Ltmp8:
	movq	%rax, %rbx
	jmp	.LBB6_203
.LBB6_175:
.Ltmp5:
	movq	%rax, %rbx
	movq	168(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_204
# %bb.176:
	callq	_ZdlPv
	jmp	.LBB6_204
.LBB6_177:
.Ltmp2:
	movq	%rax, %rbx
	jmp	.LBB6_204
.LBB6_178:
.Ltmp103:
	movq	%rax, %rbx
	leaq	592(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_179:
	leaq	616(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_180:
	leaq	312(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_181:
	leaq	336(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_182:
	leaq	360(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_183:
	leaq	384(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_184:
	leaq	408(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_185:
	leaq	32(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_186:
	leaq	56(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_187:
	leaq	640(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_188:
	leaq	736(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_189:
	leaq	432(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_190:
	leaq	664(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_191:
	leaq	192(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_192:
	leaq	688(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_193:
	leaq	264(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_194:
	leaq	216(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_195:
	leaq	240(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_196:
	leaq	456(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_197:
	leaq	288(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_198:
	leaq	120(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_199:
	movq	(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB6_201
# %bb.200:
	callq	_ZdlPv
.LBB6_201:
	leaq	144(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_202:
	leaq	168(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_203:
	leaq	712(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB6_204:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end6:
	.size	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i, .Lfunc_end6-_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table6:
.Lexception0:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
	.uleb128 .Lfunc_begin0-.Lfunc_begin0    # >> Call Site 1 <<
	.uleb128 .Ltmp0-.Lfunc_begin0           #   Call between .Lfunc_begin0 and .Ltmp0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp0-.Lfunc_begin0           # >> Call Site 2 <<
	.uleb128 .Ltmp1-.Ltmp0                  #   Call between .Ltmp0 and .Ltmp1
	.uleb128 .Ltmp2-.Lfunc_begin0           #     jumps to .Ltmp2
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp3-.Lfunc_begin0           # >> Call Site 3 <<
	.uleb128 .Ltmp4-.Ltmp3                  #   Call between .Ltmp3 and .Ltmp4
	.uleb128 .Ltmp5-.Lfunc_begin0           #     jumps to .Ltmp5
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp6-.Lfunc_begin0           # >> Call Site 4 <<
	.uleb128 .Ltmp7-.Ltmp6                  #   Call between .Ltmp6 and .Ltmp7
	.uleb128 .Ltmp8-.Lfunc_begin0           #     jumps to .Ltmp8
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp9-.Lfunc_begin0           # >> Call Site 5 <<
	.uleb128 .Ltmp10-.Ltmp9                 #   Call between .Ltmp9 and .Ltmp10
	.uleb128 .Ltmp11-.Lfunc_begin0          #     jumps to .Ltmp11
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp12-.Lfunc_begin0          # >> Call Site 6 <<
	.uleb128 .Ltmp13-.Ltmp12                #   Call between .Ltmp12 and .Ltmp13
	.uleb128 .Ltmp14-.Lfunc_begin0          #     jumps to .Ltmp14
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp15-.Lfunc_begin0          # >> Call Site 7 <<
	.uleb128 .Ltmp16-.Ltmp15                #   Call between .Ltmp15 and .Ltmp16
	.uleb128 .Ltmp17-.Lfunc_begin0          #     jumps to .Ltmp17
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp18-.Lfunc_begin0          # >> Call Site 8 <<
	.uleb128 .Ltmp21-.Ltmp18                #   Call between .Ltmp18 and .Ltmp21
	.uleb128 .Ltmp22-.Lfunc_begin0          #     jumps to .Ltmp22
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp23-.Lfunc_begin0          # >> Call Site 9 <<
	.uleb128 .Ltmp24-.Ltmp23                #   Call between .Ltmp23 and .Ltmp24
	.uleb128 .Ltmp25-.Lfunc_begin0          #     jumps to .Ltmp25
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp26-.Lfunc_begin0          # >> Call Site 10 <<
	.uleb128 .Ltmp27-.Ltmp26                #   Call between .Ltmp26 and .Ltmp27
	.uleb128 .Ltmp28-.Lfunc_begin0          #     jumps to .Ltmp28
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp29-.Lfunc_begin0          # >> Call Site 11 <<
	.uleb128 .Ltmp30-.Ltmp29                #   Call between .Ltmp29 and .Ltmp30
	.uleb128 .Ltmp31-.Lfunc_begin0          #     jumps to .Ltmp31
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp32-.Lfunc_begin0          # >> Call Site 12 <<
	.uleb128 .Ltmp33-.Ltmp32                #   Call between .Ltmp32 and .Ltmp33
	.uleb128 .Ltmp34-.Lfunc_begin0          #     jumps to .Ltmp34
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp35-.Lfunc_begin0          # >> Call Site 13 <<
	.uleb128 .Ltmp36-.Ltmp35                #   Call between .Ltmp35 and .Ltmp36
	.uleb128 .Ltmp37-.Lfunc_begin0          #     jumps to .Ltmp37
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp38-.Lfunc_begin0          # >> Call Site 14 <<
	.uleb128 .Ltmp39-.Ltmp38                #   Call between .Ltmp38 and .Ltmp39
	.uleb128 .Ltmp40-.Lfunc_begin0          #     jumps to .Ltmp40
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp41-.Lfunc_begin0          # >> Call Site 15 <<
	.uleb128 .Ltmp42-.Ltmp41                #   Call between .Ltmp41 and .Ltmp42
	.uleb128 .Ltmp43-.Lfunc_begin0          #     jumps to .Ltmp43
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp44-.Lfunc_begin0          # >> Call Site 16 <<
	.uleb128 .Ltmp45-.Ltmp44                #   Call between .Ltmp44 and .Ltmp45
	.uleb128 .Ltmp46-.Lfunc_begin0          #     jumps to .Ltmp46
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp47-.Lfunc_begin0          # >> Call Site 17 <<
	.uleb128 .Ltmp48-.Ltmp47                #   Call between .Ltmp47 and .Ltmp48
	.uleb128 .Ltmp49-.Lfunc_begin0          #     jumps to .Ltmp49
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp50-.Lfunc_begin0          # >> Call Site 18 <<
	.uleb128 .Ltmp51-.Ltmp50                #   Call between .Ltmp50 and .Ltmp51
	.uleb128 .Ltmp52-.Lfunc_begin0          #     jumps to .Ltmp52
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp53-.Lfunc_begin0          # >> Call Site 19 <<
	.uleb128 .Ltmp54-.Ltmp53                #   Call between .Ltmp53 and .Ltmp54
	.uleb128 .Ltmp55-.Lfunc_begin0          #     jumps to .Ltmp55
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp56-.Lfunc_begin0          # >> Call Site 20 <<
	.uleb128 .Ltmp57-.Ltmp56                #   Call between .Ltmp56 and .Ltmp57
	.uleb128 .Ltmp58-.Lfunc_begin0          #     jumps to .Ltmp58
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp59-.Lfunc_begin0          # >> Call Site 21 <<
	.uleb128 .Ltmp60-.Ltmp59                #   Call between .Ltmp59 and .Ltmp60
	.uleb128 .Ltmp61-.Lfunc_begin0          #     jumps to .Ltmp61
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp62-.Lfunc_begin0          # >> Call Site 22 <<
	.uleb128 .Ltmp63-.Ltmp62                #   Call between .Ltmp62 and .Ltmp63
	.uleb128 .Ltmp64-.Lfunc_begin0          #     jumps to .Ltmp64
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp65-.Lfunc_begin0          # >> Call Site 23 <<
	.uleb128 .Ltmp66-.Ltmp65                #   Call between .Ltmp65 and .Ltmp66
	.uleb128 .Ltmp67-.Lfunc_begin0          #     jumps to .Ltmp67
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp68-.Lfunc_begin0          # >> Call Site 24 <<
	.uleb128 .Ltmp69-.Ltmp68                #   Call between .Ltmp68 and .Ltmp69
	.uleb128 .Ltmp70-.Lfunc_begin0          #     jumps to .Ltmp70
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp71-.Lfunc_begin0          # >> Call Site 25 <<
	.uleb128 .Ltmp72-.Ltmp71                #   Call between .Ltmp71 and .Ltmp72
	.uleb128 .Ltmp73-.Lfunc_begin0          #     jumps to .Ltmp73
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp74-.Lfunc_begin0          # >> Call Site 26 <<
	.uleb128 .Ltmp75-.Ltmp74                #   Call between .Ltmp74 and .Ltmp75
	.uleb128 .Ltmp76-.Lfunc_begin0          #     jumps to .Ltmp76
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp77-.Lfunc_begin0          # >> Call Site 27 <<
	.uleb128 .Ltmp78-.Ltmp77                #   Call between .Ltmp77 and .Ltmp78
	.uleb128 .Ltmp79-.Lfunc_begin0          #     jumps to .Ltmp79
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp80-.Lfunc_begin0          # >> Call Site 28 <<
	.uleb128 .Ltmp81-.Ltmp80                #   Call between .Ltmp80 and .Ltmp81
	.uleb128 .Ltmp82-.Lfunc_begin0          #     jumps to .Ltmp82
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp83-.Lfunc_begin0          # >> Call Site 29 <<
	.uleb128 .Ltmp84-.Ltmp83                #   Call between .Ltmp83 and .Ltmp84
	.uleb128 .Ltmp85-.Lfunc_begin0          #     jumps to .Ltmp85
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp86-.Lfunc_begin0          # >> Call Site 30 <<
	.uleb128 .Ltmp87-.Ltmp86                #   Call between .Ltmp86 and .Ltmp87
	.uleb128 .Ltmp88-.Lfunc_begin0          #     jumps to .Ltmp88
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp89-.Lfunc_begin0          # >> Call Site 31 <<
	.uleb128 .Ltmp102-.Ltmp89               #   Call between .Ltmp89 and .Ltmp102
	.uleb128 .Ltmp103-.Lfunc_begin0         #     jumps to .Ltmp103
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp102-.Lfunc_begin0         # >> Call Site 32 <<
	.uleb128 .Lfunc_end6-.Ltmp102           #   Call between .Ltmp102 and .Lfunc_end6
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end0:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIdSaIdEEC2EmRKS0_,"axG",@progbits,_ZNSt6vectorIdSaIdEEC2EmRKS0_,comdat
	.weak	_ZNSt6vectorIdSaIdEEC2EmRKS0_   # -- Begin function _ZNSt6vectorIdSaIdEEC2EmRKS0_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIdSaIdEEC2EmRKS0_,@function
_ZNSt6vectorIdSaIdEEC2EmRKS0_:          # @_ZNSt6vectorIdSaIdEEC2EmRKS0_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %rax
	shrq	$60, %rax
	jne	.LBB7_7
# %bb.1:                                # %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit
	movq	%rsi, %r14
	movq	%rdi, %rbx
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	testq	%rsi, %rsi
	je	.LBB7_2
# %bb.3:
	movq	%rbx, %rdi
	movq	%r14, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIdE8allocateEmPKv
	movq	%rax, (%rbx)
	leaq	(%rax,%r14,8), %r15
	movq	%r15, 16(%rbx)
	movq	$0, (%rax)
	addq	$8, %rax
	cmpq	$1, %r14
	jne	.LBB7_5
# %bb.4:
	movq	%rax, %r15
	jmp	.LBB7_6
.LBB7_2:                                # %_ZNSt12_Vector_baseIdSaIdEEC2EmRKS0_.exit.thread
	movups	%xmm0, (%rbx)
	movq	$0, 16(%rbx)
	xorl	%r15d, %r15d
	jmp	.LBB7_6
.LBB7_5:                                # %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i
	leaq	-8(,%r14,8), %rdx
	movq	%rax, %rdi
	xorl	%esi, %esi
	callq	memset@PLT
.LBB7_6:
	movq	%r15, 8(%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB7_7:
	.cfi_def_cfa_offset 32
	movl	$.L.str.12, %edi
	callq	_ZSt20__throw_length_errorPKc
.Lfunc_end7:
	.size	_ZNSt6vectorIdSaIdEEC2EmRKS0_, .Lfunc_end7-_ZNSt6vectorIdSaIdEEC2EmRKS0_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,comdat
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_ # -- Begin function _ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,@function
_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_: # @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Lfunc_begin1:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception1
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movabsq	$384307168202282326, %rax       # imm = 0x555555555555556
	cmpq	%rax, %rsi
	jae	.LBB8_9
# %bb.1:                                # %_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_S_check_init_lenEmRKS2_.exit
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	testq	%rsi, %rsi
	je	.LBB8_2
# %bb.3:
	movq	%rbx, %rdi
	movq	%r15, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv
	movq	%rax, %rdi
	jmp	.LBB8_4
.LBB8_2:
	xorl	%edi, %edi
.LBB8_4:                                # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EEC2EmRKS3_.exit
	movq	%rdi, (%rbx)
	movq	%rdi, 8(%rbx)
	leaq	(%r15,%r15,2), %rax
	leaq	(%rdi,%rax,8), %rax
	movq	%rax, 16(%rbx)
.Ltmp104:
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_
.Ltmp105:
# %bb.5:
	movq	%rax, 8(%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB8_9:
	.cfi_def_cfa_offset 32
	movl	$.L.str.12, %edi
	callq	_ZSt20__throw_length_errorPKc
.LBB8_6:
.Ltmp106:
	movq	%rax, %r14
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB8_8
# %bb.7:
	callq	_ZdlPv
.LBB8_8:                                # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev.exit
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end8:
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_, .Lfunc_end8-_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
	.cfi_endproc
	.section	.gcc_except_table._ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,"aG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_,comdat
	.p2align	2, 0x0
GCC_except_table8:
.Lexception1:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
	.uleb128 .Lfunc_begin1-.Lfunc_begin1    # >> Call Site 1 <<
	.uleb128 .Ltmp104-.Lfunc_begin1         #   Call between .Lfunc_begin1 and .Ltmp104
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp104-.Lfunc_begin1         # >> Call Site 2 <<
	.uleb128 .Ltmp105-.Ltmp104              #   Call between .Ltmp104 and .Ltmp105
	.uleb128 .Ltmp106-.Lfunc_begin1         #     jumps to .Ltmp106
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp105-.Lfunc_begin1         # >> Call Site 3 <<
	.uleb128 .Lfunc_end8-.Ltmp105           #   Call between .Ltmp105 and .Lfunc_end8
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end1:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_,comdat
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_ # -- Begin function _ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_,@function
_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_: # @_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdi, %rbx
	cmpq	%rdi, %rsi
	je	.LBB9_26
# %bb.1:
	movq	%rsi, %rbp
	movq	(%rsi), %r15
	movq	8(%rsi), %rcx
	movq	%rcx, %r14
	subq	%r15, %r14
	movq	(%rbx), %r12
	movq	16(%rbx), %rax
	subq	%r12, %rax
	cmpq	%rax, %r14
	jbe	.LBB9_10
# %bb.2:
	movq	%r14, %rax
	sarq	$3, %rax
	movabsq	$-6148914691236517205, %rsi     # imm = 0xAAAAAAAAAAAAAAAB
	imulq	%rax, %rsi
	movq	%rbx, %rdi
	movq	%r15, %rdx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_
	movq	%rax, %r15
	movq	(%rbx), %r12
	movq	8(%rbx), %r13
	cmpq	%r13, %r12
	je	.LBB9_7
.LBB9_3:                                # %.lr.ph.i.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%r12), %rdi
	testq	%rdi, %rdi
	je	.LBB9_5
# %bb.4:                                #   in Loop: Header=BB9_3 Depth=1
	callq	_ZdlPv
.LBB9_5:                                # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i.i
                                        #   in Loop: Header=BB9_3 Depth=1
	addq	$24, %r12
	cmpq	%r13, %r12
	jne	.LBB9_3
# %bb.6:                                # %_ZSt8_DestroyIPSt6vectorIdSaIdEES2_EvT_S4_RSaIT0_E.exitthread-pre-split
	movq	(%rbx), %r12
.LBB9_7:                                # %_ZSt8_DestroyIPSt6vectorIdSaIdEES2_EvT_S4_RSaIT0_E.exit
	testq	%r12, %r12
	je	.LBB9_9
# %bb.8:
	movq	%r12, %rdi
	callq	_ZdlPv
.LBB9_9:                                # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE13_M_deallocateEPS2_m.exit
	movq	%r15, (%rbx)
	addq	%r14, %r15
	movq	%r15, 16(%rbx)
	jmp	.LBB9_25
.LBB9_10:
	movq	8(%rbx), %r13
	movq	%r13, %rdi
	subq	%r12, %rdi
	cmpq	%r14, %rdi
	jae	.LBB9_11
# %bb.20:
	testq	%rdi, %rdi
	jle	.LBB9_24
# %bb.21:                               # %.lr.ph.preheader.i.i.i.i.i31
	movabsq	$-6148914691236517205, %rcx     # imm = 0xAAAAAAAAAAAAAAAB
	movq	%rdi, %rax
	mulq	%rcx
	movq	%rdx, %r13
	shrq	$4, %r13
	incq	%r13
.LBB9_22:                               # %.lr.ph.i.i.i.i.i32
                                        # =>This Inner Loop Header: Depth=1
	movq	%r12, %rdi
	movq	%r15, %rsi
	callq	_ZNSt6vectorIdSaIdEEaSERKS1_
	addq	$24, %r15
	addq	$24, %r12
	decq	%r13
	cmpq	$1, %r13
	ja	.LBB9_22
# %bb.23:                               # %_ZSt4copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_.exit.loopexit
	movq	(%rbp), %r15
	movq	8(%rbp), %rcx
	movq	8(%rbx), %r13
	movq	%r13, %rdi
	subq	(%rbx), %rdi
.LBB9_24:                               # %_ZSt4copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_.exit
	addq	%r15, %rdi
	movq	%rcx, %rsi
	movq	%r13, %rdx
	callq	_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_
	jmp	.LBB9_25
.LBB9_11:
	testq	%r14, %r14
	jle	.LBB9_12
# %bb.13:                               # %.lr.ph.preheader.i.i.i.i.i
	movabsq	$-6148914691236517205, %rcx     # imm = 0xAAAAAAAAAAAAAAAB
	movq	%r14, %rax
	mulq	%rcx
	movq	%rdx, %r13
	shrq	$4, %r13
	incq	%r13
	movq	%r12, %rbp
.LBB9_14:                               # %.lr.ph.i.i.i.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	%r12, %rdi
	movq	%r15, %rsi
	callq	_ZNSt6vectorIdSaIdEEaSERKS1_
	addq	$24, %r15
	addq	$24, %r12
	decq	%r13
	addq	$24, %rbp
	cmpq	$1, %r13
	ja	.LBB9_14
# %bb.15:                               # %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEENS1_IPS4_S8_EEET0_T_SD_SC_.exit.loopexit
	movq	8(%rbx), %r13
	jmp	.LBB9_16
.LBB9_12:
	movq	%r12, %rbp
.LBB9_16:                               # %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEENS1_IPS4_S8_EEET0_T_SD_SC_.exit
	cmpq	%r13, %r12
	je	.LBB9_25
.LBB9_17:                               # %.lr.ph.i.i.i26
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbp), %rdi
	testq	%rdi, %rdi
	je	.LBB9_19
# %bb.18:                               #   in Loop: Header=BB9_17 Depth=1
	callq	_ZdlPv
.LBB9_19:                               # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i.i28
                                        #   in Loop: Header=BB9_17 Depth=1
	addq	$24, %rbp
	cmpq	%r13, %rbp
	jne	.LBB9_17
.LBB9_25:                               # %_ZSt8_DestroyIN9__gnu_cxx17__normal_iteratorIPSt6vectorIdSaIdEES2_IS4_SaIS4_EEEES4_EvT_S9_RSaIT0_E.exit
	addq	(%rbx), %r14
	movq	%r14, 8(%rbx)
.LBB9_26:
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end9:
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_, .Lfunc_end9-_ZNSt6vectorIS_IdSaIdEESaIS1_EEaSERKS3_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev,comdat
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev # -- Begin function _ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.p2align	1, 0x90
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev,@function
_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev:    # @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	(%rdi), %rbx
	movq	8(%rdi), %r15
	cmpq	%r15, %rbx
	je	.LBB10_6
# %bb.1:                                # %.lr.ph.i.i.i.preheader
	movq	%rdi, %r14
.LBB10_2:                               # %.lr.ph.i.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB10_4
# %bb.3:                                #   in Loop: Header=BB10_2 Depth=1
	callq	_ZdlPv
.LBB10_4:                               # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i.i
                                        #   in Loop: Header=BB10_2 Depth=1
	addq	$24, %rbx
	cmpq	%r15, %rbx
	jne	.LBB10_2
# %bb.5:                                # %_ZSt8_DestroyIPSt6vectorIdSaIdEES2_EvT_S4_RSaIT0_E.exitthread-pre-split
	movq	(%r14), %rbx
.LBB10_6:                               # %_ZSt8_DestroyIPSt6vectorIdSaIdEES2_EvT_S4_RSaIT0_E.exit
	testq	%rbx, %rbx
	je	.LBB10_7
# %bb.8:
	movq	%rbx, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZdlPv                          # TAILCALL
.LBB10_7:                               # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EED2Ev.exit
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end10:
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev, .Lfunc_end10-_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_Z13calculateMeanSt6vectorIdSaIdEEi # -- Begin function _Z13calculateMeanSt6vectorIdSaIdEEi
	.type	_Z13calculateMeanSt6vectorIdSaIdEEi,@function
_Z13calculateMeanSt6vectorIdSaIdEEi:    # @_Z13calculateMeanSt6vectorIdSaIdEEi
	.cfi_startproc
# %bb.0:
	testl	%esi, %esi
	jle	.LBB11_1
# %bb.3:                                # %.lr.ph
	movq	(%rdi), %rax
	movl	%esi, %ecx
	xorpd	%xmm0, %xmm0
	xorl	%edx, %edx
.LBB11_4:                               # =>This Inner Loop Header: Depth=1
	addsd	(%rax,%rdx,8), %xmm0
	incq	%rdx
	cmpq	%rdx, %rcx
	jne	.LBB11_4
	jmp	.LBB11_2
.LBB11_1:
	xorpd	%xmm0, %xmm0
.LBB11_2:                               # %._crit_edge
	cvtsi2sd	%esi, %xmm1
	divsd	%xmm1, %xmm0
	retq
.Lfunc_end11:
	.size	_Z13calculateMeanSt6vectorIdSaIdEEi, .Lfunc_end11-_Z13calculateMeanSt6vectorIdSaIdEEi
	.cfi_endproc
                                        # -- End function
	.globl	main                            # -- Begin function main
	.type	main,@function
main:                                   # @main
.Lfunc_begin2:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception2
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$312, %rsp                      # imm = 0x138
	.cfi_def_cfa_offset 368
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movl	$.L.str, %edi
	movl	$.L.str.1, %esi
	callq	fopen
	movl	$.L.str.2, %edi
	movl	$50, %esi
	movl	$1, %edx
	movq	%rax, 56(%rsp)                  # 8-byte Spill
	movq	%rax, %rcx
	callq	fwrite@PLT
	leaq	208(%rsp), %rax
	movl	$12, %ecx
	movl	$.L__const.main.algoname, %esi
	movq	%rax, %rdi
	rep;movsq (%rsi), %es:(%rdi)
	movl	$0, 96(%rax)
	movl	$.L.str.3, %edi
	movl	$204, %esi
	xorl	%eax, %eax
	callq	printf
	leaq	160(%rsp), %r13
	leaq	112(%rsp), %r15
	leaq	136(%rsp), %r14
	xorl	%ebx, %ebx
.LBB12_1:                               # =>This Inner Loop Header: Depth=1
	movslq	.L__const.main.my_list(,%rbx,4), %r12
	cmpq	$77, %rbx
	ja	.LBB12_74
# %bb.2:                                #   in Loop: Header=BB12_1 Depth=1
.Ltmp107:
	movq	%r13, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp108:
# %bb.3:                                #   in Loop: Header=BB12_1 Depth=1
.Ltmp110:
	leaq	184(%rsp), %rdi
	movq	%r12, %rsi
	movq	%r13, %rdx
	leaq	32(%rsp), %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp111:
# %bb.4:                                #   in Loop: Header=BB12_1 Depth=1
	movq	160(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_6
# %bb.5:                                #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_6:                               # %_ZNSt6vectorIdSaIdEED2Ev.exit
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp113:
	movq	%r15, %rdi
	movq	%r12, %rsi
	leaq	32(%rsp), %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp114:
# %bb.7:                                #   in Loop: Header=BB12_1 Depth=1
.Ltmp116:
	movq	%r13, %rdi
	movq	%r12, %rsi
	movq	%r15, %rdx
	movq	%r14, %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp117:
# %bb.8:                                #   in Loop: Header=BB12_1 Depth=1
	movq	112(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_10
# %bb.9:                                #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_10:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit74
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp119:
	leaq	32(%rsp), %rbp
	movq	%rbp, %rdi
	movq	%r12, %rsi
	movq	%r14, %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp120:
# %bb.11:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp122:
	movq	%r15, %rdi
	movq	%r12, %rsi
	movq	%rbp, %rdx
	leaq	64(%rsp), %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp123:
# %bb.12:                               #   in Loop: Header=BB12_1 Depth=1
	movq	32(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_14
# %bb.13:                               #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_14:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit76
                                        #   in Loop: Header=BB12_1 Depth=1
	movl	%r12d, %r15d
	leaq	184(%rsp), %rdi
	movq	%r13, %rsi
	movl	%r12d, %edx
	callq	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
.Ltmp125:
	movq	%r14, %rdi
	movq	%r15, %rsi
	leaq	64(%rsp), %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp126:
# %bb.15:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp128:
	leaq	32(%rsp), %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	leaq	88(%rsp), %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp129:
# %bb.16:                               #   in Loop: Header=BB12_1 Depth=1
	movq	136(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_18
# %bb.17:                               #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_18:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit84
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp131:
	leaq	64(%rsp), %rbp
	movq	%rbp, %rdi
	movq	%r15, %rsi
	leaq	88(%rsp), %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp132:
# %bb.19:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp134:
	movq	%r14, %rdi
	movq	%r15, %rsi
	movq	%rbp, %rdx
	leaq	16(%rsp), %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp135:
# %bb.20:                               #   in Loop: Header=BB12_1 Depth=1
	movq	64(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_22
# %bb.21:                               #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_22:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit86
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp137:
	leaq	88(%rsp), %rbp
	movq	%rbp, %rdi
	movq	%r15, %rsi
	leaq	16(%rsp), %rdx
	callq	_ZNSt6vectorIdSaIdEEC2EmRKS0_
.Ltmp138:
# %bb.23:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp140:
	leaq	64(%rsp), %rdi
	movq	%r15, %rsi
	movq	%rbp, %rdx
	leaq	15(%rsp), %rcx
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_
.Ltmp141:
# %bb.24:                               #   in Loop: Header=BB12_1 Depth=1
	movq	88(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_26
# %bb.25:                               #   in Loop: Header=BB12_1 Depth=1
	callq	_ZdlPv
.LBB12_26:                              # %_ZNSt6vectorIdSaIdEED2Ev.exit88
                                        #   in Loop: Header=BB12_1 Depth=1
	leaq	32(%rsp), %rdi
	movq	%r14, %rsi
	movl	%r15d, %edx
	callq	_Z7initMatRSt6vectorIS_IdSaIdEESaIS1_EES4_i
.Ltmp143:
	leaq	88(%rsp), %rdi
	callq	hipEventCreate
.Ltmp144:
# %bb.27:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp145:
	leaq	16(%rsp), %rdi
	callq	hipEventCreate
.Ltmp146:
# %bb.28:                               #   in Loop: Header=BB12_1 Depth=1
	movq	88(%rsp), %rdi
.Ltmp147:
	xorl	%esi, %esi
	callq	hipEventRecord
.Ltmp148:
# %bb.29:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp149:
	leaq	32(%rsp), %rdi
	movq	%r14, %rsi
	leaq	64(%rsp), %rdx
	movl	%r12d, %ecx
	callq	_Z16multiplyStrassenRSt6vectorIS_IdSaIdEESaIS1_EES4_S4_i
.Ltmp150:
# %bb.30:                               #   in Loop: Header=BB12_1 Depth=1
	movq	16(%rsp), %rdi
.Ltmp151:
	xorl	%esi, %esi
	callq	hipEventRecord
.Ltmp152:
# %bb.31:                               #   in Loop: Header=BB12_1 Depth=1
	movq	16(%rsp), %rdi
.Ltmp153:
	callq	hipEventSynchronize
.Ltmp154:
# %bb.32:                               #   in Loop: Header=BB12_1 Depth=1
	movq	88(%rsp), %rsi
	movq	16(%rsp), %rdx
.Ltmp155:
	leaq	28(%rsp), %rdi
	callq	hipEventElapsedTime
.Ltmp156:
# %bb.33:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp157:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.9, %esi
	movl	$43, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp158:
# %bb.34:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
                                        #   in Loop: Header=BB12_1 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	movl	$_ZSt4cout, %eax
	addq	%rax, %rdi
.Ltmp159:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp160:
# %bb.35:                               # %.noexc
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp161:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp162:
# %bb.36:                               # %.noexc100
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp163:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp164:
# %bb.37:                               # %_ZNSolsEPFRSoS_E.exit
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp165:
	movl	$_ZSt4cout, %edi
	movl	$.L.str.5, %esi
	movl	$59, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp166:
# %bb.38:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit89
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp167:
	movl	$_ZSt4cout, %edi
	movl	%r15d, %esi
	callq	_ZNSolsEi
.Ltmp168:
# %bb.39:                               #   in Loop: Header=BB12_1 Depth=1
.Ltmp169:
	movq	%rax, %r12
	movl	$.L.str.6, %esi
	movl	$3, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp170:
# %bb.40:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit90
                                        #   in Loop: Header=BB12_1 Depth=1
	cvtss2sd	28(%rsp), %xmm0
.Ltmp171:
	movq	%r12, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp172:
# %bb.41:                               # %_ZNSolsEf.exit
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp173:
	movq	%rax, %r12
	movl	$.L.str.7, %esi
	movl	$3, %edx
	movq	%rax, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp174:
# %bb.42:                               # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit91
                                        #   in Loop: Header=BB12_1 Depth=1
	movq	(%r12), %rax
	movq	-24(%rax), %rdi
	addq	%r12, %rdi
.Ltmp175:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp176:
# %bb.43:                               # %.noexc102
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp177:
	movsbl	%al, %esi
	movq	%r12, %rdi
	callq	_ZNSo3putEc
.Ltmp178:
# %bb.44:                               # %.noexc103
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp179:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp180:
# %bb.45:                               # %_ZNSolsEPFRSoS_E.exit92
                                        #   in Loop: Header=BB12_1 Depth=1
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	movl	$_ZSt4cout, %eax
	addq	%rax, %rdi
.Ltmp181:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp182:
# %bb.46:                               # %.noexc106
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp183:
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
.Ltmp184:
# %bb.47:                               # %.noexc107
                                        #   in Loop: Header=BB12_1 Depth=1
.Ltmp185:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp186:
# %bb.48:                               # %_ZNSolsEPFRSoS_E.exit93
                                        #   in Loop: Header=BB12_1 Depth=1
	xorps	%xmm0, %xmm0
	cvtss2sd	28(%rsp), %xmm0
	movl	$.L.str.8, %esi
	movq	56(%rsp), %rdi                  # 8-byte Reload
	leaq	208(%rsp), %rdx
	movl	%r15d, %ecx
	movb	$1, %al
	callq	fprintf
	leaq	64(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	movq	%r14, %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	32(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	112(%rsp), %r15
	movq	%r15, %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	movq	%r13, %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	leaq	184(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
	jmp	.LBB12_75
.LBB12_74:                              #   in Loop: Header=BB12_1 Depth=1
	movl	$_ZSt4cout, %edi
	movl	$.L.str.10, %esi
	movl	$9, %edx
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
	movq	_ZSt4cout(%rip), %rax
	movq	-24(%rax), %rdi
	movl	$_ZSt4cout, %eax
	addq	%rax, %rdi
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
	movsbl	%al, %esi
	movl	$_ZSt4cout, %edi
	callq	_ZNSo3putEc
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
	movl	$.L.str.11, %esi
	movq	56(%rsp), %rdi                  # 8-byte Reload
	leaq	208(%rsp), %rdx
	movl	%r12d, %ecx
	movl	$800000, %r8d                   # imm = 0xC3500
	xorl	%eax, %eax
	callq	fprintf
.LBB12_75:                              #   in Loop: Header=BB12_1 Depth=1
	incq	%rbx
	cmpq	$204, %rbx
	jne	.LBB12_1
# %bb.76:
	xorl	%eax, %eax
	addq	$312, %rsp                      # imm = 0x138
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB12_50:
	.cfi_def_cfa_offset 368
.Ltmp112:
	movq	%rax, %rbx
	movq	160(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_73
# %bb.51:
	callq	_ZdlPv
	jmp	.LBB12_73
.LBB12_53:
.Ltmp118:
	movq	%rax, %rbx
	movq	112(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_72
# %bb.54:
	callq	_ZdlPv
	jmp	.LBB12_72
.LBB12_56:
.Ltmp124:
	movq	%rax, %rbx
	movq	32(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_71
# %bb.57:
	callq	_ZdlPv
	jmp	.LBB12_71
.LBB12_59:
.Ltmp130:
	movq	%rax, %rbx
	movq	136(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_70
# %bb.60:
	callq	_ZdlPv
	jmp	.LBB12_70
.LBB12_62:
.Ltmp136:
	movq	%rax, %rbx
	movq	64(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_69
# %bb.63:
	callq	_ZdlPv
	jmp	.LBB12_69
.LBB12_65:
.Ltmp142:
	movq	%rax, %rbx
	movq	88(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB12_68
# %bb.66:
	callq	_ZdlPv
	jmp	.LBB12_68
.LBB12_49:
.Ltmp109:
	movq	%rax, %rbx
	jmp	.LBB12_73
.LBB12_52:
.Ltmp115:
	movq	%rax, %rbx
	jmp	.LBB12_72
.LBB12_55:
.Ltmp121:
	movq	%rax, %rbx
	jmp	.LBB12_71
.LBB12_58:
.Ltmp127:
	movq	%rax, %rbx
	jmp	.LBB12_70
.LBB12_61:
.Ltmp133:
	movq	%rax, %rbx
	jmp	.LBB12_69
.LBB12_64:
.Ltmp139:
	movq	%rax, %rbx
	jmp	.LBB12_68
.LBB12_67:
.Ltmp187:
	movq	%rax, %rbx
	leaq	64(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_68:
	leaq	136(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_69:
	leaq	32(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_70:
	leaq	112(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_71:
	leaq	160(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_72:
	leaq	184(%rsp), %rdi
	callq	_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev
.LBB12_73:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end12:
	.size	main, .Lfunc_end12-main
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table12:
.Lexception2:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end2-.Lcst_begin2
.Lcst_begin2:
	.uleb128 .Ltmp107-.Lfunc_begin2         # >> Call Site 1 <<
	.uleb128 .Ltmp108-.Ltmp107              #   Call between .Ltmp107 and .Ltmp108
	.uleb128 .Ltmp109-.Lfunc_begin2         #     jumps to .Ltmp109
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp110-.Lfunc_begin2         # >> Call Site 2 <<
	.uleb128 .Ltmp111-.Ltmp110              #   Call between .Ltmp110 and .Ltmp111
	.uleb128 .Ltmp112-.Lfunc_begin2         #     jumps to .Ltmp112
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp113-.Lfunc_begin2         # >> Call Site 3 <<
	.uleb128 .Ltmp114-.Ltmp113              #   Call between .Ltmp113 and .Ltmp114
	.uleb128 .Ltmp115-.Lfunc_begin2         #     jumps to .Ltmp115
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp116-.Lfunc_begin2         # >> Call Site 4 <<
	.uleb128 .Ltmp117-.Ltmp116              #   Call between .Ltmp116 and .Ltmp117
	.uleb128 .Ltmp118-.Lfunc_begin2         #     jumps to .Ltmp118
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp119-.Lfunc_begin2         # >> Call Site 5 <<
	.uleb128 .Ltmp120-.Ltmp119              #   Call between .Ltmp119 and .Ltmp120
	.uleb128 .Ltmp121-.Lfunc_begin2         #     jumps to .Ltmp121
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp122-.Lfunc_begin2         # >> Call Site 6 <<
	.uleb128 .Ltmp123-.Ltmp122              #   Call between .Ltmp122 and .Ltmp123
	.uleb128 .Ltmp124-.Lfunc_begin2         #     jumps to .Ltmp124
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp125-.Lfunc_begin2         # >> Call Site 7 <<
	.uleb128 .Ltmp126-.Ltmp125              #   Call between .Ltmp125 and .Ltmp126
	.uleb128 .Ltmp127-.Lfunc_begin2         #     jumps to .Ltmp127
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp128-.Lfunc_begin2         # >> Call Site 8 <<
	.uleb128 .Ltmp129-.Ltmp128              #   Call between .Ltmp128 and .Ltmp129
	.uleb128 .Ltmp130-.Lfunc_begin2         #     jumps to .Ltmp130
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp131-.Lfunc_begin2         # >> Call Site 9 <<
	.uleb128 .Ltmp132-.Ltmp131              #   Call between .Ltmp131 and .Ltmp132
	.uleb128 .Ltmp133-.Lfunc_begin2         #     jumps to .Ltmp133
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp134-.Lfunc_begin2         # >> Call Site 10 <<
	.uleb128 .Ltmp135-.Ltmp134              #   Call between .Ltmp134 and .Ltmp135
	.uleb128 .Ltmp136-.Lfunc_begin2         #     jumps to .Ltmp136
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp137-.Lfunc_begin2         # >> Call Site 11 <<
	.uleb128 .Ltmp138-.Ltmp137              #   Call between .Ltmp137 and .Ltmp138
	.uleb128 .Ltmp139-.Lfunc_begin2         #     jumps to .Ltmp139
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp140-.Lfunc_begin2         # >> Call Site 12 <<
	.uleb128 .Ltmp141-.Ltmp140              #   Call between .Ltmp140 and .Ltmp141
	.uleb128 .Ltmp142-.Lfunc_begin2         #     jumps to .Ltmp142
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp143-.Lfunc_begin2         # >> Call Site 13 <<
	.uleb128 .Ltmp186-.Ltmp143              #   Call between .Ltmp143 and .Ltmp186
	.uleb128 .Ltmp187-.Lfunc_begin2         #     jumps to .Ltmp187
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp186-.Lfunc_begin2         # >> Call Site 14 <<
	.uleb128 .Lfunc_end12-.Ltmp186          #   Call between .Ltmp186 and .Lfunc_end12
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end2:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text.__clang_call_terminate,"axG",@progbits,__clang_call_terminate,comdat
	.hidden	__clang_call_terminate          # -- Begin function __clang_call_terminate
	.weak	__clang_call_terminate
	.type	__clang_call_terminate,@function
__clang_call_terminate:                 # @__clang_call_terminate
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	callq	__cxa_begin_catch
	callq	_ZSt9terminatev
.Lfunc_end13:
	.size	__clang_call_terminate, .Lfunc_end13-__clang_call_terminate
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt15__new_allocatorIdE8allocateEmPKv,"axG",@progbits,_ZNSt15__new_allocatorIdE8allocateEmPKv,comdat
	.weak	_ZNSt15__new_allocatorIdE8allocateEmPKv # -- Begin function _ZNSt15__new_allocatorIdE8allocateEmPKv
	.p2align	1, 0x90
	.type	_ZNSt15__new_allocatorIdE8allocateEmPKv,@function
_ZNSt15__new_allocatorIdE8allocateEmPKv: # @_ZNSt15__new_allocatorIdE8allocateEmPKv
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rsi, %rax
	shrq	$60, %rax
	jne	.LBB14_1
# %bb.3:
	shlq	$3, %rsi
	movq	%rsi, %rdi
	popq	%rax
	.cfi_def_cfa_offset 8
	jmp	_Znwm                           # TAILCALL
.LBB14_1:
	.cfi_def_cfa_offset 16
	shrq	$61, %rsi
	je	.LBB14_2
# %bb.4:
	callq	_ZSt28__throw_bad_array_new_lengthv
.LBB14_2:
	callq	_ZSt17__throw_bad_allocv
.Lfunc_end14:
	.size	_ZNSt15__new_allocatorIdE8allocateEmPKv, .Lfunc_end14-_ZNSt15__new_allocatorIdE8allocateEmPKv
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv,"axG",@progbits,_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv,comdat
	.weak	_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv # -- Begin function _ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv
	.p2align	1, 0x90
	.type	_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv,@function
_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv: # @_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movabsq	$384307168202282326, %rax       # imm = 0x555555555555556
	cmpq	%rax, %rsi
	jae	.LBB15_1
# %bb.3:
	shlq	$3, %rsi
	leaq	(%rsi,%rsi,2), %rdi
	popq	%rax
	.cfi_def_cfa_offset 8
	jmp	_Znwm                           # TAILCALL
.LBB15_1:
	.cfi_def_cfa_offset 16
	movabsq	$768614336404564651, %rax       # imm = 0xAAAAAAAAAAAAAAB
	cmpq	%rax, %rsi
	jb	.LBB15_2
# %bb.4:
	callq	_ZSt28__throw_bad_array_new_lengthv
.LBB15_2:
	callq	_ZSt17__throw_bad_allocv
.Lfunc_end15:
	.size	_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv, .Lfunc_end15-_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv
	.cfi_endproc
                                        # -- End function
	.section	.text._ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_,"axG",@progbits,_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_,comdat
	.weak	_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_ # -- Begin function _ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_
	.type	_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_,@function
_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_: # @_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_
.Lfunc_begin3:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception3
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdi, %rbx
	testq	%rsi, %rsi
	je	.LBB16_5
# %bb.1:                                # %.lr.ph.preheader
	movq	%rdx, %r14
	movq	%rsi, %r15
	xorl	%r12d, %r12d
.LBB16_2:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	leaq	(%rbx,%r12), %rdi
.Ltmp188:
	movq	%r14, %rsi
	callq	_ZNSt6vectorIdSaIdEEC2ERKS1_
.Ltmp189:
# %bb.3:                                # %_ZSt10_ConstructISt6vectorIdSaIdEEJRKS2_EEvPT_DpOT0_.exit
                                        #   in Loop: Header=BB16_2 Depth=1
	addq	$24, %r12
	decq	%r15
	jne	.LBB16_2
# %bb.4:                                # %._crit_edge.loopexit
	addq	%r12, %rbx
.LBB16_5:                               # %._crit_edge
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB16_6:
	.cfi_def_cfa_offset 48
.Ltmp190:
	movq	%rax, %rdi
	callq	__cxa_begin_catch
	testq	%r12, %r12
	je	.LBB16_10
.LBB16_7:                               # %.lr.ph.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB16_9
# %bb.8:                                #   in Loop: Header=BB16_7 Depth=1
	callq	_ZdlPv
.LBB16_9:                               # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i
                                        #   in Loop: Header=BB16_7 Depth=1
	addq	$24, %rbx
	addq	$-24, %r12
	jne	.LBB16_7
.LBB16_10:                              # %_ZSt8_DestroyIPSt6vectorIdSaIdEEEvT_S4_.exit
.Ltmp191:
	callq	__cxa_rethrow
.Ltmp192:
# %bb.14:
.LBB16_11:
.Ltmp193:
	movq	%rax, %rbx
.Ltmp194:
	callq	__cxa_end_catch
.Ltmp195:
# %bb.12:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.LBB16_13:
.Ltmp196:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end16:
	.size	_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_, .Lfunc_end16-_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_
	.cfi_endproc
	.section	.gcc_except_table._ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_,"aG",@progbits,_ZSt18__do_uninit_fill_nIPSt6vectorIdSaIdEEmS2_ET_S4_T0_RKT1_,comdat
	.p2align	2, 0x0
GCC_except_table16:
.Lexception3:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase0-.Lttbaseref0
.Lttbaseref0:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end3-.Lcst_begin3
.Lcst_begin3:
	.uleb128 .Ltmp188-.Lfunc_begin3         # >> Call Site 1 <<
	.uleb128 .Ltmp189-.Ltmp188              #   Call between .Ltmp188 and .Ltmp189
	.uleb128 .Ltmp190-.Lfunc_begin3         #     jumps to .Ltmp190
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp189-.Lfunc_begin3         # >> Call Site 2 <<
	.uleb128 .Ltmp191-.Ltmp189              #   Call between .Ltmp189 and .Ltmp191
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp191-.Lfunc_begin3         # >> Call Site 3 <<
	.uleb128 .Ltmp192-.Ltmp191              #   Call between .Ltmp191 and .Ltmp192
	.uleb128 .Ltmp193-.Lfunc_begin3         #     jumps to .Ltmp193
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp194-.Lfunc_begin3         # >> Call Site 4 <<
	.uleb128 .Ltmp195-.Ltmp194              #   Call between .Ltmp194 and .Ltmp195
	.uleb128 .Ltmp196-.Lfunc_begin3         #     jumps to .Ltmp196
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp195-.Lfunc_begin3         # >> Call Site 5 <<
	.uleb128 .Lfunc_end16-.Ltmp195          #   Call between .Ltmp195 and .Lfunc_end16
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end3:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase0:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIdSaIdEEC2ERKS1_,"axG",@progbits,_ZNSt6vectorIdSaIdEEC2ERKS1_,comdat
	.weak	_ZNSt6vectorIdSaIdEEC2ERKS1_    # -- Begin function _ZNSt6vectorIdSaIdEEC2ERKS1_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIdSaIdEEC2ERKS1_,@function
_ZNSt6vectorIdSaIdEEC2ERKS1_:           # @_ZNSt6vectorIdSaIdEEC2ERKS1_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	8(%rsi), %rax
	movq	(%rsi), %rcx
	movq	%rax, %r12
	subq	%rcx, %r12
	sarq	$3, %r12
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	cmpq	%rcx, %rax
	je	.LBB17_1
# %bb.2:
	movq	%rbx, %rdi
	movq	%r12, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIdE8allocateEmPKv
	movq	%rax, %r15
	jmp	.LBB17_3
.LBB17_1:
	xorl	%r15d, %r15d
.LBB17_3:
	movq	%r15, (%rbx)
	movq	%r15, 8(%rbx)
	leaq	(%r15,%r12,8), %rax
	movq	%rax, 16(%rbx)
	movq	(%r14), %rsi
	movq	8(%r14), %r14
	subq	%rsi, %r14
	cmpq	$9, %r14
	jl	.LBB17_5
# %bb.4:
	movq	%r15, %rdi
	movq	%r14, %rdx
	callq	memmove@PLT
.LBB17_7:
	addq	%r14, %r15
	movq	%r15, 8(%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB17_5:
	.cfi_def_cfa_offset 48
	cmpq	$8, %r14
	jne	.LBB17_7
# %bb.6:
	movsd	(%rsi), %xmm0                   # xmm0 = mem[0],zero
	movsd	%xmm0, (%r15)
	jmp	.LBB17_7
.Lfunc_end17:
	.size	_ZNSt6vectorIdSaIdEEC2ERKS1_, .Lfunc_end17-_ZNSt6vectorIdSaIdEEC2ERKS1_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_,"axG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_,comdat
	.weak	_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_ # -- Begin function _ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_,@function
_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_: # @_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_
.Lfunc_begin4:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception4
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rcx, %r14
	movq	%rdx, %r15
	testq	%rsi, %rsi
	je	.LBB18_1
# %bb.2:
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorISt6vectorIdSaIdEEE8allocateEmPKv
	movq	%rax, %rbx
	jmp	.LBB18_3
.LBB18_1:
	xorl	%ebx, %ebx
.LBB18_3:                               # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE11_M_allocateEm.exit
.Ltmp197:
	movq	%r15, %rdi
	movq	%r14, %rsi
	movq	%rbx, %rdx
	callq	_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_
.Ltmp198:
# %bb.4:                                # %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_S4_ET0_T_SC_SB_RSaIT1_E.exit
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB18_5:
	.cfi_def_cfa_offset 32
.Ltmp199:
	movq	%rax, %rdi
	callq	__cxa_begin_catch
	testq	%rbx, %rbx
	je	.LBB18_7
# %bb.6:
	movq	%rbx, %rdi
	callq	_ZdlPv
.LBB18_7:                               # %_ZNSt12_Vector_baseISt6vectorIdSaIdEESaIS2_EE13_M_deallocateEPS2_m.exit
.Ltmp200:
	callq	__cxa_rethrow
.Ltmp201:
# %bb.11:
.LBB18_8:
.Ltmp202:
	movq	%rax, %rbx
.Ltmp203:
	callq	__cxa_end_catch
.Ltmp204:
# %bb.9:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.LBB18_10:
.Ltmp205:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end18:
	.size	_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_, .Lfunc_end18-_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_
	.cfi_endproc
	.section	.gcc_except_table._ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_,"aG",@progbits,_ZNSt6vectorIS_IdSaIdEESaIS1_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEEEPS1_mT_SB_,comdat
	.p2align	2, 0x0
GCC_except_table18:
.Lexception4:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase1-.Lttbaseref1
.Lttbaseref1:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end4-.Lcst_begin4
.Lcst_begin4:
	.uleb128 .Lfunc_begin4-.Lfunc_begin4    # >> Call Site 1 <<
	.uleb128 .Ltmp197-.Lfunc_begin4         #   Call between .Lfunc_begin4 and .Ltmp197
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp197-.Lfunc_begin4         # >> Call Site 2 <<
	.uleb128 .Ltmp198-.Ltmp197              #   Call between .Ltmp197 and .Ltmp198
	.uleb128 .Ltmp199-.Lfunc_begin4         #     jumps to .Ltmp199
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp198-.Lfunc_begin4         # >> Call Site 3 <<
	.uleb128 .Ltmp200-.Ltmp198              #   Call between .Ltmp198 and .Ltmp200
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp200-.Lfunc_begin4         # >> Call Site 4 <<
	.uleb128 .Ltmp201-.Ltmp200              #   Call between .Ltmp200 and .Ltmp201
	.uleb128 .Ltmp202-.Lfunc_begin4         #     jumps to .Ltmp202
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp203-.Lfunc_begin4         # >> Call Site 5 <<
	.uleb128 .Ltmp204-.Ltmp203              #   Call between .Ltmp203 and .Ltmp204
	.uleb128 .Ltmp205-.Lfunc_begin4         #     jumps to .Ltmp205
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp204-.Lfunc_begin4         # >> Call Site 6 <<
	.uleb128 .Lfunc_end18-.Ltmp204          #   Call between .Ltmp204 and .Lfunc_end18
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end4:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase1:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_,"axG",@progbits,_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_,comdat
	.weak	_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_ # -- Begin function _ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_
	.type	_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_,@function
_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_: # @_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_
.Lfunc_begin5:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception5
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %rbx
	cmpq	%rsi, %rdi
	je	.LBB19_5
# %bb.1:                                # %.lr.ph.preheader
	movq	%rsi, %r14
	movq	%rdi, %r15
	xorl	%r12d, %r12d
.LBB19_2:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	leaq	(%rbx,%r12), %rdi
	leaq	(%r15,%r12), %rsi
.Ltmp206:
	callq	_ZNSt6vectorIdSaIdEEC2ERKS1_
.Ltmp207:
# %bb.3:                                # %_ZSt10_ConstructISt6vectorIdSaIdEEJRKS2_EEvPT_DpOT0_.exit
                                        #   in Loop: Header=BB19_2 Depth=1
	leaq	(%r15,%r12), %rax
	addq	$24, %rax
	addq	$24, %r12
	cmpq	%r14, %rax
	jne	.LBB19_2
# %bb.4:                                # %._crit_edge.loopexit
	addq	%r12, %rbx
.LBB19_5:                               # %._crit_edge
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB19_6:
	.cfi_def_cfa_offset 48
.Ltmp208:
	movq	%rax, %rdi
	callq	__cxa_begin_catch
	testq	%r12, %r12
	je	.LBB19_10
.LBB19_7:                               # %.lr.ph.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB19_9
# %bb.8:                                #   in Loop: Header=BB19_7 Depth=1
	callq	_ZdlPv
.LBB19_9:                               # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i
                                        #   in Loop: Header=BB19_7 Depth=1
	addq	$24, %rbx
	addq	$-24, %r12
	jne	.LBB19_7
.LBB19_10:                              # %_ZSt8_DestroyIPSt6vectorIdSaIdEEEvT_S4_.exit
.Ltmp209:
	callq	__cxa_rethrow
.Ltmp210:
# %bb.14:
.LBB19_11:
.Ltmp211:
	movq	%rax, %rbx
.Ltmp212:
	callq	__cxa_end_catch
.Ltmp213:
# %bb.12:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.LBB19_13:
.Ltmp214:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end19:
	.size	_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_, .Lfunc_end19-_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_
	.cfi_endproc
	.section	.gcc_except_table._ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_,"aG",@progbits,_ZSt16__do_uninit_copyIN9__gnu_cxx17__normal_iteratorIPKSt6vectorIdSaIdEES2_IS4_SaIS4_EEEEPS4_ET0_T_SC_SB_,comdat
	.p2align	2, 0x0
GCC_except_table19:
.Lexception5:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase2-.Lttbaseref2
.Lttbaseref2:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end5-.Lcst_begin5
.Lcst_begin5:
	.uleb128 .Ltmp206-.Lfunc_begin5         # >> Call Site 1 <<
	.uleb128 .Ltmp207-.Ltmp206              #   Call between .Ltmp206 and .Ltmp207
	.uleb128 .Ltmp208-.Lfunc_begin5         #     jumps to .Ltmp208
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp207-.Lfunc_begin5         # >> Call Site 2 <<
	.uleb128 .Ltmp209-.Ltmp207              #   Call between .Ltmp207 and .Ltmp209
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp209-.Lfunc_begin5         # >> Call Site 3 <<
	.uleb128 .Ltmp210-.Ltmp209              #   Call between .Ltmp209 and .Ltmp210
	.uleb128 .Ltmp211-.Lfunc_begin5         #     jumps to .Ltmp211
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp212-.Lfunc_begin5         # >> Call Site 4 <<
	.uleb128 .Ltmp213-.Ltmp212              #   Call between .Ltmp212 and .Ltmp213
	.uleb128 .Ltmp214-.Lfunc_begin5         #     jumps to .Ltmp214
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp213-.Lfunc_begin5         # >> Call Site 5 <<
	.uleb128 .Lfunc_end19-.Ltmp213          #   Call between .Ltmp213 and .Lfunc_end19
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end5:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase2:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIdSaIdEEaSERKS1_,"axG",@progbits,_ZNSt6vectorIdSaIdEEaSERKS1_,comdat
	.weak	_ZNSt6vectorIdSaIdEEaSERKS1_    # -- Begin function _ZNSt6vectorIdSaIdEEaSERKS1_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIdSaIdEEaSERKS1_,@function
_ZNSt6vectorIdSaIdEEaSERKS1_:           # @_ZNSt6vectorIdSaIdEEaSERKS1_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdi, %rbx
	cmpq	%rdi, %rsi
	je	.LBB20_23
# %bb.1:
	movq	%rsi, %r12
	movq	(%rsi), %r15
	movq	8(%rsi), %r14
	subq	%r15, %r14
	movq	(%rbx), %rax
	movq	16(%rbx), %rcx
	subq	%rax, %rcx
	cmpq	%rcx, %r14
	jbe	.LBB20_9
# %bb.2:                                # %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i
	movq	%r14, %rsi
	sarq	$3, %rsi
	movq	%rbx, %rdi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIdE8allocateEmPKv
	movq	%rax, %r12
	cmpq	$9, %r14
	jl	.LBB20_4
# %bb.3:
	movq	%r12, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	memmove@PLT
.LBB20_6:                               # %_ZNSt6vectorIdSaIdEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKdS1_EEEEPdmT_S9_.exit
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB20_8
# %bb.7:
	callq	_ZdlPv
.LBB20_8:                               # %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit
	movq	%r12, (%rbx)
	addq	%r14, %r12
	movq	%r12, 16(%rbx)
	jmp	.LBB20_22
.LBB20_9:
	movq	8(%rbx), %rdi
	movq	%rdi, %rdx
	subq	%rax, %rdx
	cmpq	%r14, %rdx
	jae	.LBB20_10
# %bb.14:
	cmpq	$9, %rdx
	jl	.LBB20_16
# %bb.15:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	memmove@PLT
	movq	8(%rbx), %rdi
.LBB20_18:                              # %_ZSt4copyIPdS0_ET0_T_S2_S1_.exit
	movq	%rdi, %rsi
	subq	(%rbx), %rsi
	addq	(%r12), %rsi
	movq	8(%r12), %rdx
	subq	%rsi, %rdx
	cmpq	$9, %rdx
	jge	.LBB20_19
# %bb.20:
	cmpq	$8, %rdx
	jne	.LBB20_22
# %bb.21:
	movsd	(%rsi), %xmm0                   # xmm0 = mem[0],zero
	movsd	%xmm0, (%rdi)
	jmp	.LBB20_22
.LBB20_10:
	cmpq	$9, %r14
	jl	.LBB20_12
# %bb.11:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
.LBB20_19:
	callq	memmove@PLT
.LBB20_22:                              # %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEENS1_IPdS6_EEET0_T_SB_SA_.exit
	addq	(%rbx), %r14
	movq	%r14, 8(%rbx)
.LBB20_23:
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB20_4:
	.cfi_def_cfa_offset 48
	cmpq	$8, %r14
	jne	.LBB20_6
# %bb.5:
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	movsd	%xmm0, (%r12)
	jmp	.LBB20_6
.LBB20_16:
	cmpq	$8, %rdx
	jne	.LBB20_18
# %bb.17:
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	movsd	%xmm0, (%rax)
	jmp	.LBB20_18
.LBB20_12:
	cmpq	$8, %r14
	jne	.LBB20_22
# %bb.13:
	movsd	(%r15), %xmm0                   # xmm0 = mem[0],zero
	movsd	%xmm0, (%rax)
	jmp	.LBB20_22
.Lfunc_end20:
	.size	_ZNSt6vectorIdSaIdEEaSERKS1_, .Lfunc_end20-_ZNSt6vectorIdSaIdEEaSERKS1_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_,"axG",@progbits,_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_,comdat
	.weak	_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_ # -- Begin function _ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_
	.type	_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_,@function
_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_: # @_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_
.Lfunc_begin6:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception6
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdx, %rbx
	cmpq	%rsi, %rdi
	je	.LBB21_5
# %bb.1:                                # %.lr.ph.preheader
	movq	%rsi, %r14
	movq	%rdi, %r15
	xorl	%r12d, %r12d
.LBB21_2:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	leaq	(%rbx,%r12), %rdi
	leaq	(%r15,%r12), %rsi
.Ltmp215:
	callq	_ZNSt6vectorIdSaIdEEC2ERKS1_
.Ltmp216:
# %bb.3:                                # %_ZSt10_ConstructISt6vectorIdSaIdEEJRS2_EEvPT_DpOT0_.exit
                                        #   in Loop: Header=BB21_2 Depth=1
	leaq	(%r15,%r12), %rax
	addq	$24, %rax
	addq	$24, %r12
	cmpq	%r14, %rax
	jne	.LBB21_2
# %bb.4:                                # %._crit_edge.loopexit
	addq	%r12, %rbx
.LBB21_5:                               # %._crit_edge
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB21_6:
	.cfi_def_cfa_offset 48
.Ltmp217:
	movq	%rax, %rdi
	callq	__cxa_begin_catch
	testq	%r12, %r12
	je	.LBB21_10
.LBB21_7:                               # %.lr.ph.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB21_9
# %bb.8:                                #   in Loop: Header=BB21_7 Depth=1
	callq	_ZdlPv
.LBB21_9:                               # %_ZSt8_DestroyISt6vectorIdSaIdEEEvPT_.exit.i.i
                                        #   in Loop: Header=BB21_7 Depth=1
	addq	$24, %rbx
	addq	$-24, %r12
	jne	.LBB21_7
.LBB21_10:                              # %_ZSt8_DestroyIPSt6vectorIdSaIdEEEvT_S4_.exit
.Ltmp218:
	callq	__cxa_rethrow
.Ltmp219:
# %bb.14:
.LBB21_11:
.Ltmp220:
	movq	%rax, %rbx
.Ltmp221:
	callq	__cxa_end_catch
.Ltmp222:
# %bb.12:
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.LBB21_13:
.Ltmp223:
	movq	%rax, %rdi
	callq	__clang_call_terminate
.Lfunc_end21:
	.size	_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_, .Lfunc_end21-_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_
	.cfi_endproc
	.section	.gcc_except_table._ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_,"aG",@progbits,_ZSt16__do_uninit_copyIPSt6vectorIdSaIdEES3_ET0_T_S5_S4_,comdat
	.p2align	2, 0x0
GCC_except_table21:
.Lexception6:
	.byte	255                             # @LPStart Encoding = omit
	.byte	3                               # @TType Encoding = udata4
	.uleb128 .Lttbase3-.Lttbaseref3
.Lttbaseref3:
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end6-.Lcst_begin6
.Lcst_begin6:
	.uleb128 .Ltmp215-.Lfunc_begin6         # >> Call Site 1 <<
	.uleb128 .Ltmp216-.Ltmp215              #   Call between .Ltmp215 and .Ltmp216
	.uleb128 .Ltmp217-.Lfunc_begin6         #     jumps to .Ltmp217
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp216-.Lfunc_begin6         # >> Call Site 2 <<
	.uleb128 .Ltmp218-.Ltmp216              #   Call between .Ltmp216 and .Ltmp218
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp218-.Lfunc_begin6         # >> Call Site 3 <<
	.uleb128 .Ltmp219-.Ltmp218              #   Call between .Ltmp218 and .Ltmp219
	.uleb128 .Ltmp220-.Lfunc_begin6         #     jumps to .Ltmp220
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp221-.Lfunc_begin6         # >> Call Site 4 <<
	.uleb128 .Ltmp222-.Ltmp221              #   Call between .Ltmp221 and .Ltmp222
	.uleb128 .Ltmp223-.Lfunc_begin6         #     jumps to .Ltmp223
	.byte	1                               #   On action: 1
	.uleb128 .Ltmp222-.Lfunc_begin6         # >> Call Site 5 <<
	.uleb128 .Lfunc_end21-.Ltmp222          #   Call between .Ltmp222 and .Lfunc_end21
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end6:
	.byte	1                               # >> Action Record 1 <<
                                        #   Catch TypeInfo 1
	.byte	0                               #   No further actions
	.p2align	2, 0x0
                                        # >> Catch TypeInfos <<
	.long	0                               # TypeInfo 1
.Lttbase3:
	.p2align	2, 0x0
                                        # -- End function
	.type	thresholdSize,@object           # @thresholdSize
	.data
	.globl	thresholdSize
	.p2align	2, 0x0
thresholdSize:
	.long	128                             # 0x80
	.size	thresholdSize, 4

	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	"Strassen_Multiplication_UPDATED_CPU.csv"
	.size	.L.str, 40

	.type	.L.str.1,@object                # @.str.1
.L.str.1:
	.asciz	"w+"
	.size	.L.str.1, 3

	.type	.L.str.2,@object                # @.str.2
.L.str.2:
	.asciz	"Algorithm_Name,Input_Dimensions,Execution_Time(ms)"
	.size	.L.str.2, 51

	.type	.L__const.main.algoname,@object # @__const.main.algoname
	.section	.rodata,"a",@progbits
	.p2align	4, 0x0
.L__const.main.algoname:
	.asciz	"Strassen_Matrix_Multiplication_CPU\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
	.size	.L__const.main.algoname, 100

	.type	.L__const.main.my_list,@object  # @__const.main.my_list
	.p2align	4, 0x0
.L__const.main.my_list:
	.long	1008                            # 0x3f0
	.long	1040                            # 0x410
	.long	1072                            # 0x430
	.long	1104                            # 0x450
	.long	1136                            # 0x470
	.long	1168                            # 0x490
	.long	1200                            # 0x4b0
	.long	1232                            # 0x4d0
	.long	1264                            # 0x4f0
	.long	1296                            # 0x510
	.long	1328                            # 0x530
	.long	1360                            # 0x550
	.long	1392                            # 0x570
	.long	1424                            # 0x590
	.long	1456                            # 0x5b0
	.long	1488                            # 0x5d0
	.long	1520                            # 0x5f0
	.long	1552                            # 0x610
	.long	1584                            # 0x630
	.long	1616                            # 0x650
	.long	1648                            # 0x670
	.long	1680                            # 0x690
	.long	1712                            # 0x6b0
	.long	1744                            # 0x6d0
	.long	1776                            # 0x6f0
	.long	1808                            # 0x710
	.long	1840                            # 0x730
	.long	1872                            # 0x750
	.long	1904                            # 0x770
	.long	1936                            # 0x790
	.long	1968                            # 0x7b0
	.long	2000                            # 0x7d0
	.long	2032                            # 0x7f0
	.long	2064                            # 0x810
	.long	2096                            # 0x830
	.long	2128                            # 0x850
	.long	2160                            # 0x870
	.long	2192                            # 0x890
	.long	2224                            # 0x8b0
	.long	2256                            # 0x8d0
	.long	2288                            # 0x8f0
	.long	2320                            # 0x910
	.long	2352                            # 0x930
	.long	2384                            # 0x950
	.long	2416                            # 0x970
	.long	2448                            # 0x990
	.long	2480                            # 0x9b0
	.long	2512                            # 0x9d0
	.long	2544                            # 0x9f0
	.long	2576                            # 0xa10
	.long	2608                            # 0xa30
	.long	2640                            # 0xa50
	.long	2672                            # 0xa70
	.long	2704                            # 0xa90
	.long	2736                            # 0xab0
	.long	2768                            # 0xad0
	.long	2800                            # 0xaf0
	.long	2832                            # 0xb10
	.long	2864                            # 0xb30
	.long	2896                            # 0xb50
	.long	2928                            # 0xb70
	.long	2960                            # 0xb90
	.long	2992                            # 0xbb0
	.long	3024                            # 0xbd0
	.long	3056                            # 0xbf0
	.long	3088                            # 0xc10
	.long	3120                            # 0xc30
	.long	3152                            # 0xc50
	.long	3184                            # 0xc70
	.long	3216                            # 0xc90
	.long	3248                            # 0xcb0
	.long	3280                            # 0xcd0
	.long	3312                            # 0xcf0
	.long	3344                            # 0xd10
	.long	3376                            # 0xd30
	.long	3408                            # 0xd50
	.long	3440                            # 0xd70
	.long	3472                            # 0xd90
	.long	3504                            # 0xdb0
	.long	3536                            # 0xdd0
	.long	3568                            # 0xdf0
	.long	3600                            # 0xe10
	.long	3632                            # 0xe30
	.long	3664                            # 0xe50
	.long	3696                            # 0xe70
	.long	3728                            # 0xe90
	.long	3760                            # 0xeb0
	.long	3792                            # 0xed0
	.long	3824                            # 0xef0
	.long	3856                            # 0xf10
	.long	3888                            # 0xf30
	.long	3920                            # 0xf50
	.long	3952                            # 0xf70
	.long	3984                            # 0xf90
	.long	4016                            # 0xfb0
	.long	4080                            # 0xff0
	.long	4144                            # 0x1030
	.long	4208                            # 0x1070
	.long	4272                            # 0x10b0
	.long	4336                            # 0x10f0
	.long	4400                            # 0x1130
	.long	4464                            # 0x1170
	.long	4528                            # 0x11b0
	.long	4592                            # 0x11f0
	.long	4656                            # 0x1230
	.long	4720                            # 0x1270
	.long	4784                            # 0x12b0
	.long	4848                            # 0x12f0
	.long	4912                            # 0x1330
	.long	4976                            # 0x1370
	.long	5040                            # 0x13b0
	.long	5104                            # 0x13f0
	.long	5168                            # 0x1430
	.long	5232                            # 0x1470
	.long	5296                            # 0x14b0
	.long	5360                            # 0x14f0
	.long	5424                            # 0x1530
	.long	5488                            # 0x1570
	.long	5552                            # 0x15b0
	.long	5616                            # 0x15f0
	.long	5680                            # 0x1630
	.long	5744                            # 0x1670
	.long	5808                            # 0x16b0
	.long	5872                            # 0x16f0
	.long	5936                            # 0x1730
	.long	6000                            # 0x1770
	.long	6064                            # 0x17b0
	.long	6128                            # 0x17f0
	.long	6192                            # 0x1830
	.long	6256                            # 0x1870
	.long	6320                            # 0x18b0
	.long	6384                            # 0x18f0
	.long	6448                            # 0x1930
	.long	6512                            # 0x1970
	.long	6576                            # 0x19b0
	.long	6640                            # 0x19f0
	.long	6704                            # 0x1a30
	.long	6768                            # 0x1a70
	.long	6832                            # 0x1ab0
	.long	6896                            # 0x1af0
	.long	6960                            # 0x1b30
	.long	7024                            # 0x1b70
	.long	7088                            # 0x1bb0
	.long	7152                            # 0x1bf0
	.long	7216                            # 0x1c30
	.long	7280                            # 0x1c70
	.long	7344                            # 0x1cb0
	.long	7408                            # 0x1cf0
	.long	7472                            # 0x1d30
	.long	7536                            # 0x1d70
	.long	7600                            # 0x1db0
	.long	7664                            # 0x1df0
	.long	7728                            # 0x1e30
	.long	7792                            # 0x1e70
	.long	7856                            # 0x1eb0
	.long	7920                            # 0x1ef0
	.long	7984                            # 0x1f30
	.long	8048                            # 0x1f70
	.long	8112                            # 0x1fb0
	.long	8176                            # 0x1ff0
	.long	8240                            # 0x2030
	.long	8304                            # 0x2070
	.long	8368                            # 0x20b0
	.long	8432                            # 0x20f0
	.long	8496                            # 0x2130
	.long	8560                            # 0x2170
	.long	8624                            # 0x21b0
	.long	8688                            # 0x21f0
	.long	8752                            # 0x2230
	.long	8816                            # 0x2270
	.long	8880                            # 0x22b0
	.long	8944                            # 0x22f0
	.long	9008                            # 0x2330
	.long	9072                            # 0x2370
	.long	9136                            # 0x23b0
	.long	9200                            # 0x23f0
	.long	9264                            # 0x2430
	.long	9328                            # 0x2470
	.long	9392                            # 0x24b0
	.long	9456                            # 0x24f0
	.long	9520                            # 0x2530
	.long	9584                            # 0x2570
	.long	9648                            # 0x25b0
	.long	9712                            # 0x25f0
	.long	9776                            # 0x2630
	.long	9840                            # 0x2670
	.long	9904                            # 0x26b0
	.long	9968                            # 0x26f0
	.long	10032                           # 0x2730
	.long	10096                           # 0x2770
	.long	10160                           # 0x27b0
	.long	10224                           # 0x27f0
	.long	10288                           # 0x2830
	.long	10352                           # 0x2870
	.long	10416                           # 0x28b0
	.long	10480                           # 0x28f0
	.long	10544                           # 0x2930
	.long	10608                           # 0x2970
	.long	10672                           # 0x29b0
	.long	10736                           # 0x29f0
	.long	10800                           # 0x2a30
	.long	10864                           # 0x2a70
	.long	10928                           # 0x2ab0
	.long	10992                           # 0x2af0
	.size	.L__const.main.my_list, 816

	.type	.L.str.3,@object                # @.str.3
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str.3:
	.asciz	"%d\n"
	.size	.L.str.3, 4

	.type	.L.str.5,@object                # @.str.5
.L.str.5:
	.asciz	" CPU time taken to execute for strassen matrices of size - "
	.size	.L.str.5, 60

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

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	" ms"
	.size	.L.str.7, 4

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"\n%s,%d,%lf"
	.size	.L.str.8, 11

	.type	.L.str.9,@object                # @.str.9
.L.str.9:
	.asciz	"Using Milliseconds Clock:(else above 1000) "
	.size	.L.str.9, 44

	.type	.L.str.10,@object               # @.str.10
.L.str.10:
	.asciz	"MAX LIMIT"
	.size	.L.str.10, 10

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"\n%s,%d,%d"
	.size	.L.str.11, 10

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"cannot create std::vector larger than max_size()"
	.size	.L.str.12, 49

	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __gxx_personality_v0
	.addrsig_sym _Unwind_Resume
	.addrsig_sym _ZSt4cout
	.addrsig_sym __hip_cuid_

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

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

	.end_amdgpu_metadata
