// File: kebwi[P]Trifid/src/main.cpp
// Function: programBehaviorRGBImagePairStats()
void programBehaviorRGBImagePairStats()
{
	//Keep track of the first image, it is the baseline for stat calculations
	Image3ChnlReal rgbImg1;
	rgbImg1.readFile(sInputFilenames[0]);
	int width = rgbImg1.width(), height = rgbImg1.height();
	int totalPixels = width * height;
	
	//RGB to Lab the first image
	Image3ChnlReal labImg1(width, height);
	rgbImgToLabImg(1, rgbImg1, labImg1);
	
	//Normalize Lab, this is for Lab PSNR.
	//Instead of normalizing and getting Lab PSNR,
	//it would be better to get Lab MSE instead.
	Image3ChnlReal labImg1Norm = labImg1;
	Float_t minVal = (*labImg1Norm[0])[0];
	for (int c = 0; c < 3; c++)
		for (int i = 0; i < totalPixels; i++)
			if ((*labImg1Norm[c])[i] < minVal)
				minVal = (*labImg1Norm[c])[i];
	if (minVal < 0)
		for (int c = 0; c < 3; c++)
			for (int i = 0; i < totalPixels; i++)
				(*labImg1Norm[c])[i] -= minVal;
	labImg1Norm.normalize(1.0, true, false);
	
	//Calculate the stats for each image
	Image3ChnlReal labImg2Norm(width, height);
	vector<ImageStats> imageStats(sInputFilenames.size() - 1);
	Float_t mse;
	for (int imageIdx = 1; imageIdx < sInputFilenames.size(); imageIdx++)
	{
		imageStats[imageIdx - 1].rgbImg.readFile(sInputFilenames[imageIdx]);
		
		calcRGB_MSE_PSNR(rgbImg1, imageStats[imageIdx - 1].rgbImg, mse, imageStats[imageIdx - 1].rgbPsnr);
		cout << "Image Index " << imageIdx
			<< "    mse: " << mse
			<< "    psnr: " << imageStats[imageIdx - 1].rgbPsnr;
		
		calc1ChnlMSE_PSNR(*rgbImg1[0], *imageStats[imageIdx - 1].rgbImg[0], mse, imageStats[imageIdx - 1].rPsnr);
		
		calc1ChnlMSE_PSNR(*rgbImg1[1], *imageStats[imageIdx - 1].rgbImg[1], mse, imageStats[imageIdx - 1].gPsnr);
		
		calc1ChnlMSE_PSNR(*rgbImg1[2], *imageStats[imageIdx - 1].rgbImg[2], mse, imageStats[imageIdx - 1].bPsnr);
		
		rgbImgToLabImg(1, imageStats[imageIdx - 1].rgbImg, imageStats[imageIdx - 1].labImg);
		labImg2Norm = imageStats[imageIdx - 1].labImg;
		minVal = (*labImg2Norm[0])[0];
		for (int c = 0; c < 3; c++)
			for (int i = 0; i < totalPixels; i++)
				if ((*labImg2Norm[c])[i] < minVal)
					minVal = (*labImg2Norm[c])[i];
		if (minVal < 0)
			for (int c = 0; c < 3; c++)
				for (int i = 0; i < totalPixels; i++)
					(*labImg2Norm[c])[i] -= minVal;
		labImg2Norm.normalize(1.0, true, false);
		
		//LAB PSNR isn't a justified stat in the literature.  I just made it up for my own curiosity.
		//calcRGB_MSE_PSNR(labImg1Norm, labImg2Norm, mse, imageStats[imageIdx - 1].labPsnr);
		//cout << "    labPsnr: " << imageStats[imageIdx - 1].labPsnr;
		
		imageStats[imageIdx - 1].labDeltaE = calcImgLabDeltaE(labImg1, imageStats[imageIdx - 1].labImg);
		cout << "    labDeltaE: " << imageStats[imageIdx - 1].labDeltaE;
		cout << endl;
	}
	
	//Mark the min and max stats
	Float_t minV, maxV;
	int minIdx, maxIdx;
	
	minV = maxV = imageStats[0].rPsnr;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].rPsnr < minV)
			minV = imageStats[i].rPsnr;
		if (imageStats[i].rPsnr > maxV)
			maxV = imageStats[i].rPsnr;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].rPsnr == minV)
			imageStats[i].minRPsnr = true;
		if (imageStats[i].rPsnr == maxV)
			imageStats[i].maxRPsnr = true;
	}
	
	minV = maxV = imageStats[0].gPsnr;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].gPsnr < minV)
			minV = imageStats[i].gPsnr;
		if (imageStats[i].gPsnr > maxV)
			maxV = imageStats[i].gPsnr;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].gPsnr == minV)
			imageStats[i].minGPsnr = true;
		if (imageStats[i].gPsnr == maxV)
			imageStats[i].maxGPsnr = true;
	}
	
	minV = maxV = imageStats[0].bPsnr;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].bPsnr < minV)
			minV = imageStats[i].bPsnr;
		if (imageStats[i].bPsnr > maxV)
			maxV = imageStats[i].bPsnr;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].bPsnr == minV)
			imageStats[i].minBPsnr = true;
		if (imageStats[i].bPsnr == maxV)
			imageStats[i].maxBPsnr = true;
	}
	
	minV = maxV = imageStats[0].rgbPsnr;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].rgbPsnr < minV)
			minV = imageStats[i].rgbPsnr;
		if (imageStats[i].rgbPsnr > maxV)
			maxV = imageStats[i].rgbPsnr;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].rgbPsnr == minV)
			imageStats[i].minRGBPsnr = true;
		if (imageStats[i].rgbPsnr == maxV)
			imageStats[i].maxRGBPsnr = true;
	}
	
	minV = maxV = imageStats[0].labPsnr;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].labPsnr < minV)
			minV = imageStats[i].labPsnr;
		if (imageStats[i].labPsnr > maxV)
			maxV = imageStats[i].labPsnr;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].labPsnr == minV)
			imageStats[i].minLabPsnr = true;
		if (imageStats[i].labPsnr == maxV)
			imageStats[i].maxLabPsnr = true;
	}
	
	minV = maxV = imageStats[0].labDeltaE;
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].labDeltaE < minV)
			minV = imageStats[i].labDeltaE;
		if (imageStats[i].labDeltaE > maxV)
			maxV = imageStats[i].labDeltaE;
	}
	for (int i = 0; i < imageStats.size(); i++)
	{
		if (imageStats[i].labDeltaE == minV)
			imageStats[i].minLabDeltaE = true;
		if (imageStats[i].labDeltaE == maxV)
			imageStats[i].maxLabDeltaE = true;
	}
	
	//Write the file names
	cout << endl << "Filename order:" << endl;
	for (int imageIdx = 1; imageIdx < sInputFilenames.size(); imageIdx++)
		cout << (char)('A' + (imageIdx - 1)) << ": " << sInputFilenames[imageIdx] << endl;
	
	//Write the results
	cout << endl << "Results:" << endl;
	cout << "                      ";
	for (int imageIdx = 1; imageIdx < sInputFilenames.size(); imageIdx++)
		cout << setw(12) << (char)('A' + (imageIdx - 1));
	cout << endl;
	
	for (int i = 0; i < 6; i++)
	{
		//LAB PSNR isn't a justified stat in the literature.  I just made it up for my own curiosity.
		if (i == 4)
			continue;
		
		switch (i)
		{
			case 0: cout << "Red PSNR (dB):        "; break;
			case 1: cout << "Green PSNR (dB):      "; break;
			case 2: cout << "Blue PSNR (dB):       "; break;
			case 3: cout << "RGB PSNR (dB):        "; break;
			case 4: cout << "Lab PSNR (dB):        "; break;
			case 5: cout << "Lab Delta E:          "; break;
		}
		
		//Write the stats
		for (int j = 0; j < imageStats.size(); j++)
		{
			switch (i)
			{
				case 0:
					cout << setw(12) << imageStats[j].rPsnr;
					break;
				case 1:
					cout << setw(12) << imageStats[j].gPsnr;
					break;
				case 2:
					cout << setw(12) << imageStats[j].bPsnr;
					break;
				case 3:
					cout << setw(12) << imageStats[j].rgbPsnr;
					break;
				case 4:
					cout << setw(12) << imageStats[j].labPsnr;
					break;
				case 5:
					cout << setw(12) << imageStats[j].labDeltaE;
					break;
			}
		}
		cout << endl;
		
		//Mark the best and worst
		cout << "                      ";
		for (int j = 0; j < imageStats.size(); j++)
		{
			bool markWorst = false, markBest = false;
			switch (i)
			{
				case 0:
					if (imageStats[j].minRPsnr)
						markWorst = true;
					if (imageStats[j].maxRPsnr)
						markBest = true;
					break;
				case 1:
					if (imageStats[j].minGPsnr)
						markWorst = true;
					if (imageStats[j].maxGPsnr)
						markBest = true;
					break;
				case 2:
					if (imageStats[j].minBPsnr)
						markWorst = true;
					if (imageStats[j].maxBPsnr)
						markBest = true;
					break;
				case 3:
					if (imageStats[j].minRGBPsnr)
						markWorst = true;
					if (imageStats[j].maxRGBPsnr)
						markBest = true;
					break;
				case 4:
					if (imageStats[j].minLabPsnr)
						markWorst = true;
					if (imageStats[j].maxLabPsnr)
						markBest = true;
					break;
				case 5:
					if (imageStats[j].maxLabDeltaE)
						markWorst = true;
					if (imageStats[j].minLabDeltaE)
						markBest = true;
					break;
			}
			if (markWorst && markBest)
				markWorst = false;
			
			if (markWorst)
				cout << setw(12) << "-- WORST --";
			else if (markBest)
				cout << setw(12) << "=== BEST ===";
			else cout << setw(12) << "";
		}
		cout << endl;
	}
	
	//Write the results sorted
	cout << endl << "Name sorted:" << endl;
	cout << setw(15) << "RGB PSNR" << setw(15) << "Lab Delta E" << endl;
	for (int i = 0; i < imageStats.size(); i++)
		cout << setw(15) << imageStats[i].rgbPsnr << setw(15) << imageStats[i].labDeltaE << "    " << imageStats[i].rgbImg.filename() << endl;
	
	cout << endl << "Name sorted, tab delimited (for easy copy/paste to spread sheet):" << endl;
	cout << "RGB PSNR" << '\t' << "Lab Delta E" << endl;
	for (int i = 0; i < imageStats.size(); i++)
		cout << imageStats[i].rgbPsnr << '\t' << imageStats[i].labDeltaE << endl;
	
	cout << endl << "RGB Psnr sorted:" << endl;
	cout << setw(15) << "RGB PSNR" << setw(15) << "Lab Delta E" << endl;
	sort(imageStats.begin(), imageStats.end(), ImageStats::RGBPsnrSorter());
	for (int i = 0; i < imageStats.size(); i++)
		cout << setw(15) << imageStats[i].rgbPsnr << setw(15) << imageStats[i].labDeltaE << "    " << imageStats[i].rgbImg.filename() << endl;
	
	cout << endl << "RGB Psnr sorted, tab delimited (for easy copy/paste to spread sheet):" << endl;
	cout << "RGB PSNR" << '\t' << "Lab Delta E" << endl;
	for (int i = 0; i < imageStats.size(); i++)
		cout << imageStats[i].rgbPsnr << '\t' << imageStats[i].labDeltaE << endl;
	
	cout << endl << "Lab Delta E sorted:" << endl;
	cout << setw(15) << "RGB PSNR" << setw(15) << "Lab Delta E" << endl;
	sort(imageStats.begin(), imageStats.end(), ImageStats::LabDeltaESorter());
	for (int i = 0; i < imageStats.size(); i++)
		cout << setw(15) << imageStats[i].rgbPsnr << setw(15) << imageStats[i].labDeltaE << "    " << imageStats[i].rgbImg.filename() << endl;
	
	cout << endl << "Lab Delta E sorted, tab delimited (for easy copy/paste to spread sheet):" << endl;
	cout << "RGB PSNR" << '\t' << "Lab Delta E" << endl;
	for (int i = 0; i < imageStats.size(); i++)
		cout << imageStats[i].rgbPsnr << '\t' << imageStats[i].labDeltaE << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x890, %rsp            # imm = 0x890
leaq -0x50(%rbp), %rdi
callq 0x17000
leaq 0x50b8d(%rip), %rdi     # 0x5a5f8
xorl %eax, %eax
movl %eax, %esi
callq 0xe750
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
callq 0x4180
jmp 0x9a82
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x17cc0
jmp 0x9a91
leaq -0x70(%rbp), %rdi
callq 0x46c8
leaq -0x50(%rbp), %rdi
callq 0xedd0
movl %eax, -0x358(%rbp)
jmp 0x9aab
movl -0x358(%rbp), %eax
movl %eax, -0x80(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xedf0
movl %eax, -0x35c(%rbp)
jmp 0x9ac5
movl -0x35c(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
movl -0x84(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x88(%rbp)
movl -0x80(%rbp), %esi
movl -0x84(%rbp), %edx
leaq -0xd8(%rbp), %rdi
callq 0x17410
jmp 0x9afa
movsd 0x3f51e(%rip), %xmm0    # 0x49020
leaq -0x50(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x1f650
jmp 0x9b14
leaq -0x128(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x17170
jmp 0x9b29
leaq -0x128(%rbp), %rdi
xorl %esi, %esi
callq 0xef40
movq %rax, -0x368(%rbp)
jmp 0x9b40
movq -0x368(%rbp), %rdi
xorl %esi, %esi
callq 0xef70
movq %rax, -0x370(%rbp)
jmp 0x9b57
movq -0x370(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x130(%rbp)
movl $0x0, -0x134(%rbp)
cmpl $0x3, -0x134(%rbp)
jge 0x9cb4
movl $0x0, -0x138(%rbp)
movl -0x138(%rbp), %eax
cmpl -0x88(%rbp), %eax
jge 0x9c9e
movl -0x134(%rbp), %esi
leaq -0x128(%rbp), %rdi
callq 0xef40
movq %rax, -0x378(%rbp)
jmp 0x9bb8
movq -0x378(%rbp), %rdi
movl -0x138(%rbp), %esi
callq 0xef70
movq %rax, -0x380(%rbp)
jmp 0x9bd3
movq -0x380(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x130(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9c88
movl -0x134(%rbp), %esi
leaq -0x128(%rbp), %rdi
callq 0xef40
movq %rax, -0x388(%rbp)
jmp 0x9c0b
movq -0x388(%rbp), %rdi
movl -0x138(%rbp), %esi
callq 0xef70
movq %rax, -0x390(%rbp)
jmp 0x9c26
movq -0x390(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x130(%rbp)
jmp 0x9c88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc795
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x46c8
jmp 0xc795
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc789
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc77d
jmp 0x9c8a
movl -0x138(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x138(%rbp)
jmp 0x9b8b
jmp 0x9ca0
movl -0x134(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x134(%rbp)
jmp 0x9b74
xorps %xmm0, %xmm0
ucomisd -0x130(%rbp), %xmm0
jbe 0x9d7e
movl $0x0, -0x13c(%rbp)
cmpl $0x3, -0x13c(%rbp)
jge 0x9d7c
movl $0x0, -0x140(%rbp)
movl -0x140(%rbp), %eax
cmpl -0x88(%rbp), %eax
jge 0x9d66
movsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x3a0(%rbp)
movl -0x13c(%rbp), %esi
leaq -0x128(%rbp), %rdi
callq 0xef40
movq %rax, -0x398(%rbp)
jmp 0x9d1f
movq -0x398(%rbp), %rdi
movl -0x140(%rbp), %esi
callq 0xef70
movq %rax, -0x3a8(%rbp)
jmp 0x9d3a
movq -0x3a8(%rbp), %rax
movsd -0x3a0(%rbp), %xmm1
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl -0x140(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x140(%rbp)
jmp 0x9ce6
jmp 0x9d68
movl -0x13c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13c(%rbp)
jmp 0x9ccf
jmp 0x9d7e
leaq -0x128(%rbp), %rdi
movsd 0x3f293(%rip), %xmm0    # 0x49020
movl $0x1, %esi
xorl %edx, %edx
callq 0x17ab0
jmp 0x9d9b
movl -0x80(%rbp), %esi
movl -0x84(%rbp), %edx
leaq -0x190(%rbp), %rdi
callq 0x17410
jmp 0x9db2
leaq 0x5083f(%rip), %rdi     # 0x5a5f8
callq 0xe730
decq %rax
movq %rax, -0x3b8(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0xef90
movq -0x3b8(%rbp), %rsi
movq -0x3b0(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0xefb0
jmp 0x9df7
leaq -0x1a9(%rbp), %rdi
callq 0xf020
movl $0x1, -0x1bc(%rbp)
movslq -0x1bc(%rbp), %rax
movq %rax, -0x3c0(%rbp)
leaq 0x507d6(%rip), %rdi     # 0x5a5f8
callq 0xe730
movq %rax, %rcx
movq -0x3c0(%rbp), %rax
cmpq %rcx, %rax
jae 0xa4f6
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, -0x3c8(%rbp)
movslq -0x1bc(%rbp), %rsi
leaq 0x50792(%rip), %rdi     # 0x5a5f8
callq 0xe750
movq %rax, %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x4180
jmp 0x9e7c
movq -0x3c8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x17cc0
jmp 0x9e91
leaq -0x1e0(%rbp), %rdi
callq 0x46c8
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0xf040
movq -0x3d8(%rbp), %rdi
movq %rax, -0x3d0(%rbp)
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0xf040
movq -0x3d0(%rbp), %rsi
movq %rax, %rcx
addq $0xb8, %rcx
leaq -0x50(%rbp), %rdi
leaq -0x1b8(%rbp), %rdx
callq 0x37ac0
jmp 0x9efc
movq 0x500cd(%rip), %rdi     # 0x59fd0
leaq 0x3fa44(%rip), %rsi     # 0x4994e
callq 0x4390
movq %rax, -0x3e0(%rbp)
jmp 0x9f18
movq -0x3e0(%rbp), %rdi
movl -0x1bc(%rbp), %esi
callq 0x4600
movq %rax, -0x3e8(%rbp)
jmp 0x9f33
movq -0x3e8(%rbp), %rdi
leaq 0x3fa1a(%rip), %rsi     # 0x4995b
callq 0x4390
movq %rax, -0x3f0(%rbp)
jmp 0x9f4f
movq -0x3f0(%rbp), %rdi
movsd -0x1b8(%rbp), %xmm0
callq 0x4670
movq %rax, -0x3f8(%rbp)
jmp 0x9f6c
movq -0x3f8(%rbp), %rdi
leaq 0x3f9eb(%rip), %rsi     # 0x49965
callq 0x4390
movq %rax, -0x400(%rbp)
jmp 0x9f88
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x400(%rbp), %rdi
movsd 0xb8(%rax), %xmm0
callq 0x4670
jmp 0x9fb5
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
callq 0xef40
movq %rax, -0x408(%rbp)
jmp 0x9fc9
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rdi
xorl %esi, %esi
callq 0xef40
movq %rax, -0x410(%rbp)
jmp 0x9ff3
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x408(%rbp), %rdi
movq -0x410(%rbp), %rsi
movq %rax, %rcx
addq $0xa0, %rcx
leaq -0x1b8(%rbp), %rdx
callq 0x37940
jmp 0xa030
leaq -0x50(%rbp), %rdi
movl $0x1, %esi
callq 0xef40
movq %rax, -0x418(%rbp)
jmp 0xa047
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rdi
movl $0x1, %esi
callq 0xef40
movq %rax, -0x420(%rbp)
jmp 0xa074
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x418(%rbp), %rdi
movq -0x420(%rbp), %rsi
movq %rax, %rcx
addq $0xa8, %rcx
leaq -0x1b8(%rbp), %rdx
callq 0x37940
jmp 0xa0b1
leaq -0x50(%rbp), %rdi
movl $0x2, %esi
callq 0xef40
movq %rax, -0x428(%rbp)
jmp 0xa0c8
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rdi
movl $0x2, %esi
callq 0xef40
movq %rax, -0x430(%rbp)
jmp 0xa0f5
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x428(%rbp), %rdi
movq -0x430(%rbp), %rsi
movq %rax, %rcx
addq $0xb0, %rcx
leaq -0x1b8(%rbp), %rdx
callq 0x37940
jmp 0xa132
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0xf040
movq -0x440(%rbp), %rdi
movq %rax, -0x438(%rbp)
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0xf040
movq -0x438(%rbp), %rdi
movq %rax, %rsi
addq $0x50, %rsi
movsd 0x3ee9c(%rip), %xmm0    # 0x49020
callq 0x1f650
jmp 0xa18b
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rsi
addq $0x50, %rsi
leaq -0x190(%rbp), %rdi
callq 0x17300
jmp 0xa1b7
leaq -0x190(%rbp), %rdi
xorl %esi, %esi
callq 0xef40
movq %rax, -0x448(%rbp)
jmp 0xa1ce
movq -0x448(%rbp), %rdi
xorl %esi, %esi
callq 0xef70
movq %rax, -0x450(%rbp)
jmp 0xa1e5
movq -0x450(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x130(%rbp)
movl $0x0, -0x1e4(%rbp)
cmpl $0x3, -0x1e4(%rbp)
jge 0xa340
movl $0x0, -0x1e8(%rbp)
movl -0x1e8(%rbp), %eax
cmpl -0x88(%rbp), %eax
jge 0xa32a
movl -0x1e4(%rbp), %esi
leaq -0x190(%rbp), %rdi
callq 0xef40
movq %rax, -0x458(%rbp)
jmp 0xa246
movq -0x458(%rbp), %rdi
movl -0x1e8(%rbp), %esi
callq 0xef70
movq %rax, -0x460(%rbp)
jmp 0xa261
movq -0x460(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x130(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xa314
movl -0x1e4(%rbp), %esi
leaq -0x190(%rbp), %rdi
callq 0xef40
movq %rax, -0x468(%rbp)
jmp 0xa299
movq -0x468(%rbp), %rdi
movl -0x1e8(%rbp), %esi
callq 0xef70
movq %rax, -0x470(%rbp)
jmp 0xa2b4
movq -0x470(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x130(%rbp)
jmp 0xa314
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1a9(%rbp), %rdi
callq 0xf020
jmp 0xc771
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc765
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x46c8
jmp 0xc765
jmp 0xa316
movl -0x1e8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e8(%rbp)
jmp 0xa219
jmp 0xa32c
movl -0x1e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e4(%rbp)
jmp 0xa202
xorps %xmm0, %xmm0
ucomisd -0x130(%rbp), %xmm0
jbe 0xa40a
movl $0x0, -0x1ec(%rbp)
cmpl $0x3, -0x1ec(%rbp)
jge 0xa408
movl $0x0, -0x1f0(%rbp)
movl -0x1f0(%rbp), %eax
cmpl -0x88(%rbp), %eax
jge 0xa3f2
movsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x480(%rbp)
movl -0x1ec(%rbp), %esi
leaq -0x190(%rbp), %rdi
callq 0xef40
movq %rax, -0x478(%rbp)
jmp 0xa3ab
movq -0x478(%rbp), %rdi
movl -0x1f0(%rbp), %esi
callq 0xef70
movq %rax, -0x488(%rbp)
jmp 0xa3c6
movq -0x488(%rbp), %rax
movsd -0x480(%rbp), %xmm1
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl -0x1f0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1f0(%rbp)
jmp 0xa372
jmp 0xa3f4
movl -0x1ec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ec(%rbp)
jmp 0xa35b
jmp 0xa40a
leaq -0x190(%rbp), %rdi
movsd 0x3ec07(%rip), %xmm0    # 0x49020
movl $0x1, %esi
xorl %edx, %edx
callq 0x17ab0
jmp 0xa427
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rsi
addq $0x50, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x36e50
movsd %xmm0, -0x490(%rbp)
jmp 0xa45b
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd -0x490(%rbp), %xmm0
movsd %xmm0, 0xc8(%rax)
movq 0x4fb47(%rip), %rdi     # 0x59fd0
leaq 0x3f4e0(%rip), %rsi     # 0x49970
callq 0x4390
movq %rax, -0x498(%rbp)
jmp 0xa49e
movl -0x1bc(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x498(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
jmp 0xa4cb
movq 0x4fafe(%rip), %rdi     # 0x59fd0
movq 0x4fadf(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xa4e0
jmp 0xa4e2
movl -0x1bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
jmp 0x9e0d
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xa0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x20c(%rbp)
movslq -0x20c(%rbp), %rax
movq %rax, -0x4a0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4a0(%rbp), %rax
cmpq %rcx, %rax
jae 0xa5ff
movslq -0x20c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xa5a1
movslq -0x20c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x20c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xa5e9
movslq -0x20c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xa5eb
movl -0x20c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20c(%rbp)
jmp 0xa528
movl $0x0, -0x210(%rbp)
movslq -0x210(%rbp), %rax
movq %rax, -0x4a8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4a8(%rbp), %rax
cmpq %rcx, %rax
jae 0xa6ce
movslq -0x210(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xa677
jp 0xa677
movslq -0x210(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd0(%rax)
movslq -0x210(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xa6b8
jp 0xa6b8
movslq -0x210(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd6(%rax)
jmp 0xa6ba
movl -0x210(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x210(%rbp)
jmp 0xa609
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xa8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x214(%rbp)
movslq -0x214(%rbp), %rax
movq %rax, -0x4b0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4b0(%rbp), %rax
cmpq %rcx, %rax
jae 0xa7d7
movslq -0x214(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xa779
movslq -0x214(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x214(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xa7c1
movslq -0x214(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xa7c3
movl -0x214(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x214(%rbp)
jmp 0xa700
movl $0x0, -0x218(%rbp)
movslq -0x218(%rbp), %rax
movq %rax, -0x4b8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4b8(%rbp), %rax
cmpq %rcx, %rax
jae 0xa8a6
movslq -0x218(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xa84f
jp 0xa84f
movslq -0x218(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd1(%rax)
movslq -0x218(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xa8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xa890
jp 0xa890
movslq -0x218(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd7(%rax)
jmp 0xa892
movl -0x218(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x218(%rbp)
jmp 0xa7e1
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xb0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x21c(%rbp)
movslq -0x21c(%rbp), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4c0(%rbp), %rax
cmpq %rcx, %rax
jae 0xa9af
movslq -0x21c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xa951
movslq -0x21c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x21c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xa999
movslq -0x21c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xa99b
movl -0x21c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x21c(%rbp)
jmp 0xa8d8
movl $0x0, -0x220(%rbp)
movslq -0x220(%rbp), %rax
movq %rax, -0x4c8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4c8(%rbp), %rax
cmpq %rcx, %rax
jae 0xaa7e
movslq -0x220(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xaa27
jp 0xaa27
movslq -0x220(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd2(%rax)
movslq -0x220(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xaa68
jp 0xaa68
movslq -0x220(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd8(%rax)
jmp 0xaa6a
movl -0x220(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x220(%rbp)
jmp 0xa9b9
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x224(%rbp)
movslq -0x224(%rbp), %rax
movq %rax, -0x4d0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4d0(%rbp), %rax
cmpq %rcx, %rax
jae 0xab87
movslq -0x224(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xab29
movslq -0x224(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x224(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xab71
movslq -0x224(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xab73
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0xaab0
movl $0x0, -0x228(%rbp)
movslq -0x228(%rbp), %rax
movq %rax, -0x4d8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4d8(%rbp), %rax
cmpq %rcx, %rax
jae 0xac56
movslq -0x228(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xabff
jp 0xabff
movslq -0x228(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd3(%rax)
movslq -0x228(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xac40
jp 0xac40
movslq -0x228(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd9(%rax)
jmp 0xac42
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0xab91
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xc0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x22c(%rbp)
movslq -0x22c(%rbp), %rax
movq %rax, -0x4e0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4e0(%rbp), %rax
cmpq %rcx, %rax
jae 0xad5f
movslq -0x22c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xad01
movslq -0x22c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x22c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xad49
movslq -0x22c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xad4b
movl -0x22c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x22c(%rbp)
jmp 0xac88
movl $0x0, -0x230(%rbp)
movslq -0x230(%rbp), %rax
movq %rax, -0x4e8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4e8(%rbp), %rax
cmpq %rcx, %rax
jae 0xae2e
movslq -0x230(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xadd7
jp 0xadd7
movslq -0x230(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd4(%rax)
movslq -0x230(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc0(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xae18
jp 0xae18
movslq -0x230(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xda(%rax)
jmp 0xae1a
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
jmp 0xad69
leaq -0x1a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xf040
movsd 0xc8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
movsd %xmm0, -0x1f8(%rbp)
movl $0x0, -0x234(%rbp)
movslq -0x234(%rbp), %rax
movq %rax, -0x4f0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4f0(%rbp), %rax
cmpq %rcx, %rax
jae 0xaf37
movslq -0x234(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm1
movsd -0x1f8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xaed9
movslq -0x234(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movslq -0x234(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jbe 0xaf21
movslq -0x234(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm0
movsd %xmm0, -0x200(%rbp)
jmp 0xaf23
movl -0x234(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x234(%rbp)
jmp 0xae60
movl $0x0, -0x238(%rbp)
movslq -0x238(%rbp), %rax
movq %rax, -0x4f8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x4f8(%rbp), %rax
cmpq %rcx, %rax
jae 0xb006
movslq -0x238(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm0
ucomisd -0x1f8(%rbp), %xmm0
jne 0xafaf
jp 0xafaf
movslq -0x238(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xd5(%rax)
movslq -0x238(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xc8(%rax), %xmm0
ucomisd -0x200(%rbp), %xmm0
jne 0xaff0
jp 0xaff0
movslq -0x238(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movb $0x1, 0xdb(%rax)
jmp 0xaff2
movl -0x238(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x238(%rbp)
jmp 0xaf41
movq 0x4efc3(%rip), %rdi     # 0x59fd0
movq 0x4efa4(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x500(%rbp)
jmp 0xb022
movq -0x500(%rbp), %rdi
leaq 0x3e950(%rip), %rsi     # 0x49980
callq 0x4390
movq %rax, -0x508(%rbp)
jmp 0xb03e
movq -0x508(%rbp), %rdi
movq 0x4ef6c(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb053
movl $0x1, -0x23c(%rbp)
movslq -0x23c(%rbp), %rax
movq %rax, -0x510(%rbp)
leaq 0x4f586(%rip), %rdi     # 0x5a5f8
callq 0xe730
movq %rax, %rcx
movq -0x510(%rbp), %rax
cmpq %rcx, %rax
jae 0xb11d
movl -0x23c(%rbp), %eax
addl $0x40, %eax
movsbl %al, %esi
movq 0x4ef33(%rip), %rdi     # 0x59fd0
callq 0x4440
movq %rax, -0x518(%rbp)
jmp 0xb0ab
movq -0x518(%rbp), %rdi
leaq 0x3f0cc(%rip), %rsi     # 0x4a185
callq 0x4390
movq %rax, -0x520(%rbp)
jmp 0xb0c7
movslq -0x23c(%rbp), %rsi
leaq 0x4f523(%rip), %rdi     # 0x5a5f8
callq 0xe750
movq -0x520(%rbp), %rdi
movq %rax, %rsi
callq 0x4330
movq %rax, -0x528(%rbp)
jmp 0xb0f2
movq -0x528(%rbp), %rdi
movq 0x4eeb8(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb107
jmp 0xb109
movl -0x23c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x23c(%rbp)
jmp 0xb05d
movq 0x4eeac(%rip), %rdi     # 0x59fd0
movq 0x4ee8d(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x530(%rbp)
jmp 0xb139
movq -0x530(%rbp), %rdi
leaq 0x3e849(%rip), %rsi     # 0x49990
callq 0x4390
movq %rax, -0x538(%rbp)
jmp 0xb155
movq -0x538(%rbp), %rdi
movq 0x4ee55(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb16a
movq 0x4ee5f(%rip), %rdi     # 0x59fd0
leaq 0x3e821(%rip), %rsi     # 0x49999
callq 0x4390
jmp 0xb17f
movl $0x1, -0x240(%rbp)
movslq -0x240(%rbp), %rax
movq %rax, -0x540(%rbp)
leaq 0x4f45a(%rip), %rdi     # 0x5a5f8
callq 0xe730
movq %rax, %rcx
movq -0x540(%rbp), %rax
cmpq %rcx, %rax
jae 0xb21b
movl $0xc, %edi
callq 0xe410
movl %eax, -0x544(%rbp)
jmp 0xb1c4
movl -0x544(%rbp), %eax
movl %eax, -0x244(%rbp)
movl -0x244(%rbp), %esi
movq 0x4edf3(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x550(%rbp)
jmp 0xb1eb
movq -0x550(%rbp), %rdi
movl -0x240(%rbp), %eax
addl $0x40, %eax
movsbl %al, %esi
callq 0x4440
jmp 0xb205
jmp 0xb207
movl -0x240(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x240(%rbp)
jmp 0xb189
movq 0x4edae(%rip), %rdi     # 0x59fd0
movq 0x4ed8f(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb230
movl $0x0, -0x248(%rbp)
cmpl $0x6, -0x248(%rbp)
jge 0xb9a6
cmpl $0x4, -0x248(%rbp)
jne 0xb255
jmp 0xb992
movl -0x248(%rbp), %eax
movq %rax, -0x558(%rbp)
subq $0x5, %rax
ja 0xb30d
movq -0x558(%rbp), %rax
leaq 0x3dee6(%rip), %rcx     # 0x49160
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x4ed46(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x499b0
callq 0x4390
jmp 0xb298
jmp 0xb30d
movq 0x4ed2f(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x499c7
callq 0x4390
jmp 0xb2af
jmp 0xb30d
movq 0x4ed18(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x499de
callq 0x4390
jmp 0xb2c6
jmp 0xb30d
movq 0x4ed01(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x499f5
callq 0x4390
jmp 0xb2dd
jmp 0xb30d
movq 0x4ecea(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x49a0c
callq 0x4390
jmp 0xb2f4
jmp 0xb30d
movq 0x4ecd3(%rip), %rdi     # 0x59fd0
leaq 0x3e71f(%rip), %rsi     # 0x49a23
callq 0x4390
jmp 0xb30b
jmp 0xb30d
movl $0x0, -0x24c(%rbp)
movslq -0x24c(%rbp), %rax
movq %rax, -0x560(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x560(%rbp), %rax
cmpq %rcx, %rax
jae 0xb5ec
movl -0x248(%rbp), %eax
movq %rax, -0x568(%rbp)
subq $0x5, %rax
ja 0xb5d6
movq -0x568(%rbp), %rax
leaq 0x3de27(%rip), %rcx     # 0x49190
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0xc, %edi
callq 0xe410
movl %eax, -0x56c(%rbp)
jmp 0xb384
movl -0x56c(%rbp), %eax
movl %eax, -0x250(%rbp)
movl -0x250(%rbp), %esi
movq 0x4ec33(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x578(%rbp)
jmp 0xb3ab
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x578(%rbp), %rdi
movsd 0xa0(%rax), %xmm0
callq 0x4670
jmp 0xb3d4
jmp 0xb5d6
movl $0xc, %edi
callq 0xe410
movl %eax, -0x57c(%rbp)
jmp 0xb3eb
movl -0x57c(%rbp), %eax
movl %eax, -0x254(%rbp)
movl -0x254(%rbp), %esi
movq 0x4ebcc(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x588(%rbp)
jmp 0xb412
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x588(%rbp), %rdi
movsd 0xa8(%rax), %xmm0
callq 0x4670
jmp 0xb43b
jmp 0xb5d6
movl $0xc, %edi
callq 0xe410
movl %eax, -0x58c(%rbp)
jmp 0xb452
movl -0x58c(%rbp), %eax
movl %eax, -0x258(%rbp)
movl -0x258(%rbp), %esi
movq 0x4eb65(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x598(%rbp)
jmp 0xb479
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x598(%rbp), %rdi
movsd 0xb0(%rax), %xmm0
callq 0x4670
jmp 0xb4a2
jmp 0xb5d6
movl $0xc, %edi
callq 0xe410
movl %eax, -0x59c(%rbp)
jmp 0xb4b9
movl -0x59c(%rbp), %eax
movl %eax, -0x25c(%rbp)
movl -0x25c(%rbp), %esi
movq 0x4eafe(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x5a8(%rbp)
jmp 0xb4e0
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x5a8(%rbp), %rdi
movsd 0xb8(%rax), %xmm0
callq 0x4670
jmp 0xb509
jmp 0xb5d6
movl $0xc, %edi
callq 0xe410
movl %eax, -0x5ac(%rbp)
jmp 0xb520
movl -0x5ac(%rbp), %eax
movl %eax, -0x260(%rbp)
movl -0x260(%rbp), %esi
movq 0x4ea97(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x5b8(%rbp)
jmp 0xb547
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x5b8(%rbp), %rdi
movsd 0xc0(%rax), %xmm0
callq 0x4670
jmp 0xb570
jmp 0xb5d6
movl $0xc, %edi
callq 0xe410
movl %eax, -0x5bc(%rbp)
jmp 0xb584
movl -0x5bc(%rbp), %eax
movl %eax, -0x264(%rbp)
movl -0x264(%rbp), %esi
movq 0x4ea33(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x5c8(%rbp)
jmp 0xb5ab
movslq -0x24c(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x5c8(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
jmp 0xb5d4
jmp 0xb5d6
jmp 0xb5d8
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
jmp 0xb317
movq 0x4e9dd(%rip), %rdi     # 0x59fd0
movq 0x4e9be(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb601
movq 0x4e9c8(%rip), %rdi     # 0x59fd0
leaq 0x3e38a(%rip), %rsi     # 0x49999
callq 0x4390
jmp 0xb616
movl $0x0, -0x268(%rbp)
movslq -0x268(%rbp), %rax
movq %rax, -0x5d0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x5d0(%rbp), %rax
cmpq %rcx, %rax
jae 0xb97b
movb $0x0, -0x269(%rbp)
movb $0x0, -0x26a(%rbp)
movl -0x248(%rbp), %eax
movq %rax, -0x5d8(%rbp)
subq $0x5, %rax
ja 0xb845
movq -0x5d8(%rbp), %rax
leaq 0x3daf8(%rip), %rcx     # 0x49178
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd0(%rax)
je 0xb6ac
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd6(%rax)
je 0xb6cf
movb $0x1, -0x26a(%rbp)
jmp 0xb845
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd1(%rax)
je 0xb6f7
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd7(%rax)
je 0xb71a
movb $0x1, -0x26a(%rbp)
jmp 0xb845
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd2(%rax)
je 0xb742
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd8(%rax)
je 0xb765
movb $0x1, -0x26a(%rbp)
jmp 0xb845
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd3(%rax)
je 0xb78d
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd9(%rax)
je 0xb7b0
movb $0x1, -0x26a(%rbp)
jmp 0xb845
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd4(%rax)
je 0xb7d8
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xda(%rax)
je 0xb7fb
movb $0x1, -0x26a(%rbp)
jmp 0xb845
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xdb(%rax)
je 0xb820
movb $0x1, -0x269(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
testb $0x1, 0xd5(%rax)
je 0xb843
movb $0x1, -0x26a(%rbp)
jmp 0xb845
testb $0x1, -0x269(%rbp)
je 0xb85e
testb $0x1, -0x26a(%rbp)
je 0xb85e
movb $0x0, -0x269(%rbp)
testb $0x1, -0x269(%rbp)
je 0xb8ba
movl $0xc, %edi
callq 0xe410
movl %eax, -0x5dc(%rbp)
jmp 0xb879
movl -0x5dc(%rbp), %eax
movl %eax, -0x270(%rbp)
movl -0x270(%rbp), %esi
movq 0x4e73e(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x5e8(%rbp)
jmp 0xb8a0
movq -0x5e8(%rbp), %rdi
leaq 0x3e18c(%rip), %rsi     # 0x49a3a
callq 0x4390
jmp 0xb8b5
jmp 0xb965
testb $0x1, -0x26a(%rbp)
je 0xb913
movl $0xc, %edi
callq 0xe410
movl %eax, -0x5ec(%rbp)
jmp 0xb8d5
movl -0x5ec(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x274(%rbp), %esi
movq 0x4e6e2(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x5f8(%rbp)
jmp 0xb8fc
movq -0x5f8(%rbp), %rdi
leaq 0x3e13c(%rip), %rsi     # 0x49a46
callq 0x4390
jmp 0xb911
jmp 0xb963
movl $0xc, %edi
callq 0xe410
movl %eax, -0x5fc(%rbp)
jmp 0xb925
movl -0x5fc(%rbp), %eax
movl %eax, -0x278(%rbp)
movl -0x278(%rbp), %esi
movq 0x4e692(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x608(%rbp)
jmp 0xb94c
movq -0x608(%rbp), %rdi
leaq 0x3dfbd(%rip), %rsi     # 0x49917
callq 0x4390
jmp 0xb961
jmp 0xb963
jmp 0xb965
jmp 0xb967
movl -0x268(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x268(%rbp)
jmp 0xb620
movq 0x4e64e(%rip), %rdi     # 0x59fd0
movq 0x4e62f(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb990
jmp 0xb992
movl -0x248(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x248(%rbp)
jmp 0xb23a
movq 0x4e623(%rip), %rdi     # 0x59fd0
movq 0x4e604(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x610(%rbp)
jmp 0xb9c2
movq -0x610(%rbp), %rdi
leaq 0x3e083(%rip), %rsi     # 0x49a53
callq 0x4390
movq %rax, -0x618(%rbp)
jmp 0xb9de
movq -0x618(%rbp), %rdi
movq 0x4e5cc(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xb9f3
movl $0xf, %edi
callq 0xe410
movl %eax, -0x61c(%rbp)
jmp 0xba05
movl -0x61c(%rbp), %eax
movl %eax, -0x27c(%rbp)
movl -0x27c(%rbp), %esi
movq 0x4e5b2(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x628(%rbp)
jmp 0xba2c
movq -0x628(%rbp), %rdi
leaq 0x3e026(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x630(%rbp)
jmp 0xba48
movl $0xf, %edi
callq 0xe410
movl %eax, -0x634(%rbp)
jmp 0xba5a
movq -0x630(%rbp), %rdi
movl -0x634(%rbp), %eax
movl %eax, -0x280(%rbp)
movl -0x280(%rbp), %esi
callq 0x4430
movq %rax, -0x640(%rbp)
jmp 0xba81
movq -0x640(%rbp), %rdi
leaq 0x3dfda(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x648(%rbp)
jmp 0xba9d
movq -0x648(%rbp), %rdi
movq 0x4e50d(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbab2
movl $0x0, -0x284(%rbp)
movslq -0x284(%rbp), %rax
movq %rax, -0x650(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x650(%rbp), %rax
cmpq %rcx, %rax
jae 0xbc69
movl $0xf, %edi
callq 0xe410
movl %eax, -0x654(%rbp)
jmp 0xbafb
movl -0x654(%rbp), %eax
movl %eax, -0x288(%rbp)
movl -0x288(%rbp), %esi
movq 0x4e4bc(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x660(%rbp)
jmp 0xbb22
movslq -0x284(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x660(%rbp), %rdi
movsd 0xb8(%rax), %xmm0
callq 0x4670
movq %rax, -0x668(%rbp)
jmp 0xbb52
movl $0xf, %edi
callq 0xe410
movl %eax, -0x66c(%rbp)
jmp 0xbb64
movq -0x668(%rbp), %rdi
movl -0x66c(%rbp), %eax
movl %eax, -0x28c(%rbp)
movl -0x28c(%rbp), %esi
callq 0x4430
movq %rax, -0x678(%rbp)
jmp 0xbb8b
movslq -0x284(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x678(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x680(%rbp)
jmp 0xbbbb
movq -0x680(%rbp), %rdi
leaq 0x3dde2(%rip), %rsi     # 0x499ab
callq 0x4390
movq %rax, -0x688(%rbp)
jmp 0xbbd7
movslq -0x284(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rsi
leaq -0x2b0(%rbp), %rdi
callq 0xf090
jmp 0xbbfb
movq -0x688(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x4330
movq %rax, -0x690(%rbp)
jmp 0xbc17
movq -0x690(%rbp), %rdi
movq 0x4e393(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbc2c
leaq -0x2b0(%rbp), %rdi
callq 0x46c8
movl -0x284(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x284(%rbp)
jmp 0xbabc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x46c8
jmp 0xc765
movq 0x4e360(%rip), %rdi     # 0x59fd0
movq 0x4e341(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x698(%rbp)
jmp 0xbc85
movq -0x698(%rbp), %rdi
leaq 0x3dde2(%rip), %rsi     # 0x49a75
callq 0x4390
movq %rax, -0x6a0(%rbp)
jmp 0xbca1
movq -0x6a0(%rbp), %rdi
movq 0x4e309(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbcb6
movq 0x4e313(%rip), %rdi     # 0x59fd0
leaq 0x3dd9c(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x6a8(%rbp)
jmp 0xbcd2
movq -0x6a8(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x6b0(%rbp)
jmp 0xbcec
movq -0x6b0(%rbp), %rdi
leaq 0x3dd6f(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x6b8(%rbp)
jmp 0xbd08
movq -0x6b8(%rbp), %rdi
movq 0x4e2a2(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbd1d
movl $0x0, -0x2b4(%rbp)
movslq -0x2b4(%rbp), %rax
movq %rax, -0x6c0(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x6c0(%rbp), %rax
cmpq %rcx, %rax
jae 0xbdf9
movslq -0x2b4(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movq 0x4e25a(%rip), %rdi     # 0x59fd0
callq 0x4670
movq %rax, -0x6c8(%rbp)
jmp 0xbd84
movq -0x6c8(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x6d0(%rbp)
jmp 0xbd9e
movslq -0x2b4(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x6d0(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x6d8(%rbp)
jmp 0xbdce
movq -0x6d8(%rbp), %rdi
movq 0x4e1dc(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbde3
jmp 0xbde5
movl -0x2b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2b4(%rbp)
jmp 0xbd27
movq 0x4e1d0(%rip), %rdi     # 0x59fd0
movq 0x4e1b1(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x6e0(%rbp)
jmp 0xbe15
movq -0x6e0(%rbp), %rdi
leaq 0x3dc94(%rip), %rsi     # 0x49ab7
callq 0x4390
movq %rax, -0x6e8(%rbp)
jmp 0xbe31
movq -0x6e8(%rbp), %rdi
movq 0x4e179(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbe46
movl $0xf, %edi
callq 0xe410
movl %eax, -0x6ec(%rbp)
jmp 0xbe58
movl -0x6ec(%rbp), %eax
movl %eax, -0x2b8(%rbp)
movl -0x2b8(%rbp), %esi
movq 0x4e15f(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x6f8(%rbp)
jmp 0xbe7f
movq -0x6f8(%rbp), %rdi
leaq 0x3dbd3(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x700(%rbp)
jmp 0xbe9b
movl $0xf, %edi
callq 0xe410
movl %eax, -0x704(%rbp)
jmp 0xbead
movq -0x700(%rbp), %rdi
movl -0x704(%rbp), %eax
movl %eax, -0x2bc(%rbp)
movl -0x2bc(%rbp), %esi
callq 0x4430
movq %rax, -0x710(%rbp)
jmp 0xbed4
movq -0x710(%rbp), %rdi
leaq 0x3db87(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x718(%rbp)
jmp 0xbef0
movq -0x718(%rbp), %rdi
movq 0x4e0ba(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xbf05
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x720(%rbp)
callq 0xf100
movq -0x720(%rbp), %rdi
movq %rax, -0x2c8(%rbp)
callq 0xf130
movq %rax, -0x2d0(%rbp)
movq -0x2c8(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
callq 0xf0c0
jmp 0xbf47
movl $0x0, -0x2d8(%rbp)
movslq -0x2d8(%rbp), %rax
movq %rax, -0x728(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x728(%rbp), %rax
cmpq %rcx, %rax
jae 0xc0fe
movl $0xf, %edi
callq 0xe410
movl %eax, -0x72c(%rbp)
jmp 0xbf90
movl -0x72c(%rbp), %eax
movl %eax, -0x2dc(%rbp)
movl -0x2dc(%rbp), %esi
movq 0x4e027(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x738(%rbp)
jmp 0xbfb7
movslq -0x2d8(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x738(%rbp), %rdi
movsd 0xb8(%rax), %xmm0
callq 0x4670
movq %rax, -0x740(%rbp)
jmp 0xbfe7
movl $0xf, %edi
callq 0xe410
movl %eax, -0x744(%rbp)
jmp 0xbff9
movq -0x740(%rbp), %rdi
movl -0x744(%rbp), %eax
movl %eax, -0x2e0(%rbp)
movl -0x2e0(%rbp), %esi
callq 0x4430
movq %rax, -0x750(%rbp)
jmp 0xc020
movslq -0x2d8(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x750(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x758(%rbp)
jmp 0xc050
movq -0x758(%rbp), %rdi
leaq 0x3d94d(%rip), %rsi     # 0x499ab
callq 0x4390
movq %rax, -0x760(%rbp)
jmp 0xc06c
movslq -0x2d8(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rsi
leaq -0x300(%rbp), %rdi
callq 0xf090
jmp 0xc090
movq -0x760(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x4330
movq %rax, -0x768(%rbp)
jmp 0xc0ac
movq -0x768(%rbp), %rdi
movq 0x4defe(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc0c1
leaq -0x300(%rbp), %rdi
callq 0x46c8
movl -0x2d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d8(%rbp)
jmp 0xbf51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x46c8
jmp 0xc765
movq 0x4decb(%rip), %rdi     # 0x59fd0
movq 0x4deac(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x770(%rbp)
jmp 0xc11a
movq -0x770(%rbp), %rdi
leaq 0x3d9a0(%rip), %rsi     # 0x49ac8
callq 0x4390
movq %rax, -0x778(%rbp)
jmp 0xc136
movq -0x778(%rbp), %rdi
movq 0x4de74(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc14b
movq 0x4de7e(%rip), %rdi     # 0x59fd0
leaq 0x3d907(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x780(%rbp)
jmp 0xc167
movq -0x780(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x788(%rbp)
jmp 0xc181
movq -0x788(%rbp), %rdi
leaq 0x3d8da(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x790(%rbp)
jmp 0xc19d
movq -0x790(%rbp), %rdi
movq 0x4de0d(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc1b2
movl $0x0, -0x304(%rbp)
movslq -0x304(%rbp), %rax
movq %rax, -0x798(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x798(%rbp), %rax
cmpq %rcx, %rax
jae 0xc28e
movslq -0x304(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movq 0x4ddc5(%rip), %rdi     # 0x59fd0
callq 0x4670
movq %rax, -0x7a0(%rbp)
jmp 0xc219
movq -0x7a0(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x7a8(%rbp)
jmp 0xc233
movslq -0x304(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x7a8(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x7b0(%rbp)
jmp 0xc263
movq -0x7b0(%rbp), %rdi
movq 0x4dd47(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc278
jmp 0xc27a
movl -0x304(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x304(%rbp)
jmp 0xc1bc
movq 0x4dd3b(%rip), %rdi     # 0x59fd0
movq 0x4dd1c(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x7b8(%rbp)
jmp 0xc2aa
movq -0x7b8(%rbp), %rdi
leaq 0x3d856(%rip), %rsi     # 0x49b0e
callq 0x4390
movq %rax, -0x7c0(%rbp)
jmp 0xc2c6
movq -0x7c0(%rbp), %rdi
movq 0x4dce4(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc2db
movl $0xf, %edi
callq 0xe410
movl %eax, -0x7c4(%rbp)
jmp 0xc2ed
movl -0x7c4(%rbp), %eax
movl %eax, -0x308(%rbp)
movl -0x308(%rbp), %esi
movq 0x4dcca(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x7d0(%rbp)
jmp 0xc314
movq -0x7d0(%rbp), %rdi
leaq 0x3d73e(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x7d8(%rbp)
jmp 0xc330
movl $0xf, %edi
callq 0xe410
movl %eax, -0x7dc(%rbp)
jmp 0xc342
movq -0x7d8(%rbp), %rdi
movl -0x7dc(%rbp), %eax
movl %eax, -0x30c(%rbp)
movl -0x30c(%rbp), %esi
callq 0x4430
movq %rax, -0x7e8(%rbp)
jmp 0xc369
movq -0x7e8(%rbp), %rdi
leaq 0x3d6f2(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x7f0(%rbp)
jmp 0xc385
movq -0x7f0(%rbp), %rdi
movq 0x4dc25(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc39a
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x7f8(%rbp)
callq 0xf100
movq -0x7f8(%rbp), %rdi
movq %rax, -0x318(%rbp)
callq 0xf130
movq %rax, -0x320(%rbp)
movq -0x318(%rbp), %rdi
movq -0x320(%rbp), %rsi
callq 0xf160
jmp 0xc3dc
movl $0x0, -0x328(%rbp)
movslq -0x328(%rbp), %rax
movq %rax, -0x800(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x800(%rbp), %rax
cmpq %rcx, %rax
jae 0xc593
movl $0xf, %edi
callq 0xe410
movl %eax, -0x804(%rbp)
jmp 0xc425
movl -0x804(%rbp), %eax
movl %eax, -0x32c(%rbp)
movl -0x32c(%rbp), %esi
movq 0x4db92(%rip), %rdi     # 0x59fd0
callq 0x4430
movq %rax, -0x810(%rbp)
jmp 0xc44c
movslq -0x328(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x810(%rbp), %rdi
movsd 0xb8(%rax), %xmm0
callq 0x4670
movq %rax, -0x818(%rbp)
jmp 0xc47c
movl $0xf, %edi
callq 0xe410
movl %eax, -0x81c(%rbp)
jmp 0xc48e
movq -0x818(%rbp), %rdi
movl -0x81c(%rbp), %eax
movl %eax, -0x330(%rbp)
movl -0x330(%rbp), %esi
callq 0x4430
movq %rax, -0x828(%rbp)
jmp 0xc4b5
movslq -0x328(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x828(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x830(%rbp)
jmp 0xc4e5
movq -0x830(%rbp), %rdi
leaq 0x3d4b8(%rip), %rsi     # 0x499ab
callq 0x4390
movq %rax, -0x838(%rbp)
jmp 0xc501
movslq -0x328(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq %rax, %rsi
leaq -0x350(%rbp), %rdi
callq 0xf090
jmp 0xc525
movq -0x838(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x4330
movq %rax, -0x840(%rbp)
jmp 0xc541
movq -0x840(%rbp), %rdi
movq 0x4da69(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc556
leaq -0x350(%rbp), %rdi
callq 0x46c8
movl -0x328(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x328(%rbp)
jmp 0xc3e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x46c8
jmp 0xc765
movq 0x4da36(%rip), %rdi     # 0x59fd0
movq 0x4da17(%rip), %rsi     # 0x59fb8
callq 0x43d0
movq %rax, -0x848(%rbp)
jmp 0xc5af
movq -0x848(%rbp), %rdi
leaq 0x3d565(%rip), %rsi     # 0x49b22
callq 0x4390
movq %rax, -0x850(%rbp)
jmp 0xc5cb
movq -0x850(%rbp), %rdi
movq 0x4d9df(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc5e0
movq 0x4d9e9(%rip), %rdi     # 0x59fd0
leaq 0x3d472(%rip), %rsi     # 0x49a60
callq 0x4390
movq %rax, -0x858(%rbp)
jmp 0xc5fc
movq -0x858(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x860(%rbp)
jmp 0xc616
movq -0x860(%rbp), %rdi
leaq 0x3d445(%rip), %rsi     # 0x49a69
callq 0x4390
movq %rax, -0x868(%rbp)
jmp 0xc632
movq -0x868(%rbp), %rdi
movq 0x4d978(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc647
movl $0x0, -0x354(%rbp)
movslq -0x354(%rbp), %rax
movq %rax, -0x870(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xf060
movq %rax, %rcx
movq -0x870(%rbp), %rax
cmpq %rcx, %rax
jae 0xc723
movslq -0x354(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movsd 0xb8(%rax), %xmm0
movq 0x4d930(%rip), %rdi     # 0x59fd0
callq 0x4670
movq %rax, -0x878(%rbp)
jmp 0xc6ae
movq -0x878(%rbp), %rdi
movl $0x9, %esi
callq 0x4440
movq %rax, -0x880(%rbp)
jmp 0xc6c8
movslq -0x354(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xf040
movq -0x880(%rbp), %rdi
movsd 0xc8(%rax), %xmm0
callq 0x4670
movq %rax, -0x888(%rbp)
jmp 0xc6f8
movq -0x888(%rbp), %rdi
movq 0x4d8b2(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0xc70d
jmp 0xc70f
movl -0x354(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x354(%rbp)
jmp 0xc651
leaq -0x1a8(%rbp), %rdi
callq 0xf1a0
leaq -0x190(%rbp), %rdi
callq 0x175b0
leaq -0x128(%rbp), %rdi
callq 0x175b0
leaq -0xd8(%rbp), %rdi
callq 0x175b0
leaq -0x50(%rbp), %rdi
callq 0x175b0
addq $0x890, %rsp            # imm = 0x890
popq %rbp
retq
leaq -0x1a8(%rbp), %rdi
callq 0xf1a0
leaq -0x190(%rbp), %rdi
callq 0x175b0
leaq -0x128(%rbp), %rdi
callq 0x175b0
leaq -0xd8(%rbp), %rdi
callq 0x175b0
leaq -0x50(%rbp), %rdi
callq 0x175b0
movq -0x78(%rbp), %rdi
callq 0x4620
nopw (%rax,%rax)