// File: kebwi[P]Trifid/src/main.cpp
// Function: processArgs(int, char**)
void processArgs(int argc, char **argv)
{
	if (argc < 2)
		die("Enter -h flag to display help.");
	
	for (int argIdx = 1; argIdx < argc; argIdx++)
	{
		string prevArg(argv[argIdx - 1]);
		string argStr(argv[argIdx]);
		
		if (argStr[0] == '-')// && isalpha(argStr[1]))	//Flag
		{
			if (argStr.length() < 2)
				die("Flag is too short");
			if (argStr[1] != '-')	//A short flag
			{
				for (int charIdx = 1; charIdx < argStr.length(); charIdx++)
				{
					switch (argStr[charIdx])
					{
						case 'h':
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							displayHelp();
							exit(0);	//displayHelp() should exit the program
							break;
						case 'v':
							gVerbose = true;
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							break;
						case 'i':
							gGenerateIntermediateImages = true;
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							break;
						case 'N':	//Add noise to a pgm image
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							if (sProgramBehavior != PB_NONE)
								die("Please specify only one program behavior flag");
							sProgramBehavior = PB_NOISIFY;
							break;
						case 'n':	//Denoise a set of images
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							if (sProgramBehavior != PB_NONE && sProgramBehavior != PB_DENOISE)
								die("Please specify only one program behavior flag");
							sProgramBehavior = PB_DENOISE;
							break;
						case 'b':
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							if (sProgramBehavior != PB_NOISIFY)
								die("-b only works with -N");
							sBayerize = true;
							break;
						case 's':
							cout << "-" << argStr[charIdx] << " flag detected" << endl;
							if (sProgramBehavior != PB_DENOISE)
								die("-s only works with -n");
							break;
						default:
							die(string("Unknown flag: " + argStr).c_str());
					}	//switch argStr[charIdx]
				}	//Loop over flag chars
			}
			else	//argStr[1] == '-'
			{
				assert(argStr.length() >= 2);
				assert(argStr[0] == '-' && argStr[1] == '-');
				if (argStr.length() < 3)
					die("Flag is too short");
				
				if (argStr == "--testFT")
				{
					cout << argStr << " flag detected" << endl;
					if (sProgramBehavior != PB_NONE)
						die("Please specify only one program behavior flag");
					sProgramBehavior = PB_TEST_FOURIER;
				}
				else if (argStr == "--testFTconv")
				{
					cout << argStr << " flag detected" << endl;
					if (sProgramBehavior != PB_NONE)
						die("Please specify only one program behavior flag");
					sProgramBehavior = PB_TEST_FOURIER_CONVOLUTION;
				}
				else if (argStr == "--testColor")
				{
					cout << argStr << " flag detected" << endl;
					if (sProgramBehavior != PB_NONE)
						die("Please specify only one program behavior flag");
					sProgramBehavior = PB_TEST_RGB_XYZ_LAB;
				}
				else if (argStr == "--grayStat")
				{
					cout << argStr << " flag detected" << endl;
					if (sProgramBehavior != PB_NONE)
						die("Please specify only one program behavior flag");
					sProgramBehavior = PB_GRAY_IMG_PAIR_STATS;
				}
				else if (argStr == "--rgbStat")
				{
					cout << argStr << " flag detected" << endl;
					if (sProgramBehavior != PB_NONE)
						die("Please specify only one program behavior flag");
					sProgramBehavior = PB_RGB_IMG_PAIR_STATS;
				}
				else die(string("Unknown flag: " + argStr).c_str());
			}
		}
		else	//Nonflag
		{
			if (prevArg == "-N")
			{
				//Noise params file
				sNoiseParamsFilename = argStr;
				cout << "Noise params filename arg read: " << sNoiseParamsFilename << endl;
			}
			else if (prevArg == "-s")
			{
				//Denoise threshold
				
				string color = argStr.substr(0, 1);
				if (color[0] < '0' || color[0] > '3')
					die("Invalid shrinkage color argument");
				int colorIdx = color[0] - '1';
				
				string levelStr = argStr.substr(1, 2);
				
				char levelType = levelStr[0];
				if (levelType != 'A' && levelType != 'H' && levelType != 'B')
					die("Invalid shrinkage level type ('A' or 'H' or 'B')");
				
				int level = 0;
				if (levelType == 'B')
					level = levelStr[1] - '0';
				if (levelType == 'B' && (level < 0 || level > 9))
					die("Invalid shrinkage level (only levels 0-9 can be used with level type 'B')");
				
				sManualShrinkageThresholdStr += "-";
				sManualShrinkageThresholdStr += argStr;
				
				int thresholdStartPos = 2;
				if (levelType == 'B')
					thresholdStartPos = 3;
				stringstream ss(argStr.substr(thresholdStartPos, argStr.length() - thresholdStartPos));
				Float_t threshold;
				ss >> threshold;
				
				if (levelType == 'A')	//All levels
				{
					if (colorIdx > -1)
					{
						if (gManualShrinkageThresholds[colorIdx].size() < 11)
							gManualShrinkageThresholds[colorIdx].resize(11);
						for (int i = 0; i <= 9; i++)
							gManualShrinkageThresholds[colorIdx][i] = threshold;
					}
					else
					{
						for (int i = 0; i < 3; i++)
						{
							if (gManualShrinkageThresholds[i].size() < 11)
								gManualShrinkageThresholds[i].resize(11);
							for (int j = 0; j <= 9; j++)
								gManualShrinkageThresholds[i][j] = threshold;
						}
					}
					string colorName = "RGB";
					if (colorIdx == 0)
						colorName = "red";
					else if (colorIdx == 1)
						colorName = "green";
					else if (colorIdx == 2)
						colorName = "blue";
					cout << "All levels threshold argument read for color " << colorName
						<< ": " << threshold << endl;
				}
				else if (levelType == 'H')
				{
					if (colorIdx > -1)
					{
						if (gManualShrinkageThresholds[colorIdx].size() < 1)
							gManualShrinkageThresholds[colorIdx].resize(1);
						gManualShrinkageThresholds[colorIdx][0] = threshold;
					}
					else
					{
						for (int i = 0; i < 3; i++)
						{
							if (gManualShrinkageThresholds[i].size() < 1)
								gManualShrinkageThresholds[i].resize(1);
							gManualShrinkageThresholds[i][0] = threshold;
						}
					}
					string colorName = "RGB";
					if (colorIdx == 0)
						colorName = "red";
					else if (colorIdx == 1)
						colorName = "green";
					else if (colorIdx == 2)
						colorName = "blue";
					cout << "H threshold argument read for color " << colorName
						<< ": " << threshold << endl;
				}
				else
				{
					assert(levelType == 'B');
					
					if (colorIdx > -1)
					{
						if (gManualShrinkageThresholds[colorIdx].size() < level + 2)
							gManualShrinkageThresholds[colorIdx].resize(level + 2);
						gManualShrinkageThresholds[colorIdx][level + 1] = threshold;
					}
					else
					{
						for (int i = 0; i < 3; i++)
						{
							if (gManualShrinkageThresholds[i].size() < level + 2)
								gManualShrinkageThresholds[i].resize(level + 2);
							gManualShrinkageThresholds[i][level + 1] = threshold;
						}
					}
					string colorName = "RGB";
					if (colorIdx == 0)
						colorName = "red";
					else if (colorIdx == 1)
						colorName = "green";
					else if (colorIdx == 2)
						colorName = "blue";
					cout << "B threshold argument read for color " << colorName
						<< ", level " << level << ": " << threshold << endl;
				}
			}
			else
			{
				string filename(argv[argIdx]);
				sInputFilenames.push_back(filename);
				cout << "Input filename arg read: " << filename << endl;
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x660, %rsp            # imm = 0x660
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x4(%rbp)
jge 0x6484
leaq 0x4313a(%rip), %rdi     # 0x495b9
callq 0x5360
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x7d2c
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x380(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x4630
movq -0x380(%rbp), %rsi
movq -0x378(%rbp), %rdx
leaq -0x38(%rbp), %rdi
callq 0xe110
jmp 0x64d7
leaq -0x39(%rbp), %rdi
callq 0x43f0
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x390(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x4630
movq -0x390(%rbp), %rsi
movq -0x388(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0xe110
jmp 0x651c
leaq -0x71(%rbp), %rdi
callq 0x43f0
xorl %eax, %eax
movl %eax, %esi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x398(%rbp)
jmp 0x653b
movq -0x398(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x6f3a
leaq -0x70(%rbp), %rdi
callq 0x4550
cmpq $0x2, %rax
jae 0x65b2
leaq 0x43074(%rip), %rdi     # 0x495d8
callq 0x5360
jmp 0x656b
jmp 0x65b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x43f0
jmp 0x7d35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x43f0
jmp 0x7d21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7d18
leaq -0x70(%rbp), %rdi
movl $0x1, %esi
callq 0x46b0
movq %rax, -0x3a0(%rbp)
jmp 0x65c9
movq -0x3a0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x6b10
movl $0x1, -0x78(%rbp)
movslq -0x78(%rbp), %rax
movq %rax, -0x3a8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x4550
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
cmpq %rcx, %rax
jae 0x6b0b
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x3b0(%rbp)
jmp 0x6620
movq -0x3b0(%rbp), %rax
movsbl (%rax), %eax
addl $-0x4e, %eax
movl %eax, %ecx
movq %rcx, -0x3b8(%rbp)
subl $0x28, %eax
ja 0x6aa3
movq -0x3b8(%rbp), %rax
leaq 0x42a23(%rip), %rcx     # 0x49070
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x53973(%rip), %rdi     # 0x59fd0
leaq 0x433e0(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x3c0(%rbp)
jmp 0x6672
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x3c8(%rbp)
jmp 0x6688
movq -0x3c0(%rbp), %rdi
movq -0x3c8(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x3d0(%rbp)
jmp 0x66a7
movq -0x3d0(%rbp), %rdi
leaq 0x42f35(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x3d8(%rbp)
jmp 0x66c3
movq -0x3d8(%rbp), %rdi
movq 0x538e7(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x66d8
callq 0x5610
jmp 0x66df
xorl %edi, %edi
callq 0x4470
movb $0x1, 0x53ec3(%rip)     # 0x5a5b0
movq 0x538dc(%rip), %rdi     # 0x59fd0
leaq 0x43349(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x3e0(%rbp)
jmp 0x6709
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x3e8(%rbp)
jmp 0x671f
movq -0x3e0(%rbp), %rdi
movq -0x3e8(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x3f0(%rbp)
jmp 0x673e
movq -0x3f0(%rbp), %rdi
leaq 0x42e9e(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x3f8(%rbp)
jmp 0x675a
movq -0x3f8(%rbp), %rdi
movq 0x53850(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x676f
jmp 0x6ade
movb $0x1, 0x53e36(%rip)     # 0x5a5b1
movq 0x5384e(%rip), %rdi     # 0x59fd0
leaq 0x432bb(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x400(%rbp)
jmp 0x6797
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x408(%rbp)
jmp 0x67ad
movq -0x400(%rbp), %rdi
movq -0x408(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x410(%rbp)
jmp 0x67cc
movq -0x410(%rbp), %rdi
leaq 0x42e10(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x418(%rbp)
jmp 0x67e8
movq -0x418(%rbp), %rdi
movq 0x537c2(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x67fd
jmp 0x6ade
movq 0x537c7(%rip), %rdi     # 0x59fd0
leaq 0x43234(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x420(%rbp)
jmp 0x681e
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x428(%rbp)
jmp 0x6834
movq -0x420(%rbp), %rdi
movq -0x428(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x430(%rbp)
jmp 0x6853
movq -0x430(%rbp), %rdi
leaq 0x42d89(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x438(%rbp)
jmp 0x686f
movq -0x438(%rbp), %rdi
movq 0x5373b(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6884
cmpl $0x0, 0x53eb5(%rip)     # 0x5a740
je 0x689d
leaq 0x42d65(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x689b
jmp 0x689d
movl $0x4, 0x53e99(%rip)     # 0x5a740
jmp 0x6ade
movq 0x5371d(%rip), %rdi     # 0x59fd0
leaq 0x4318a(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x440(%rbp)
jmp 0x68c8
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x448(%rbp)
jmp 0x68de
movq -0x440(%rbp), %rdi
movq -0x448(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x450(%rbp)
jmp 0x68fd
movq -0x450(%rbp), %rdi
leaq 0x42cdf(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x458(%rbp)
jmp 0x6919
movq -0x458(%rbp), %rdi
movq 0x53691(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x692e
cmpl $0x0, 0x53e0b(%rip)     # 0x5a740
je 0x6950
cmpl $0x5, 0x53e02(%rip)     # 0x5a740
je 0x6950
leaq 0x42cb2(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x694e
jmp 0x6950
movl $0x5, 0x53de6(%rip)     # 0x5a740
jmp 0x6ade
movq 0x5366a(%rip), %rdi     # 0x59fd0
leaq 0x430d7(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x460(%rbp)
jmp 0x697b
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x468(%rbp)
jmp 0x6991
movq -0x460(%rbp), %rdi
movq -0x468(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x470(%rbp)
jmp 0x69b0
movq -0x470(%rbp), %rdi
leaq 0x42c2c(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x478(%rbp)
jmp 0x69cc
movq -0x478(%rbp), %rdi
movq 0x535de(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x69e1
cmpl $0x4, 0x53d58(%rip)     # 0x5a740
je 0x69fa
leaq 0x42c36(%rip), %rdi     # 0x49627
callq 0x5360
jmp 0x69f8
jmp 0x69fa
movb $0x1, 0x53d43(%rip)     # 0x5a744
jmp 0x6ade
movq 0x535c3(%rip), %rdi     # 0x59fd0
leaq 0x43030(%rip), %rsi     # 0x49a44
callq 0x4390
movq %rax, -0x480(%rbp)
jmp 0x6a22
movslq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x488(%rbp)
jmp 0x6a38
movq -0x480(%rbp), %rdi
movq -0x488(%rbp), %rax
movsbl (%rax), %esi
callq 0x4440
movq %rax, -0x490(%rbp)
jmp 0x6a57
movq -0x490(%rbp), %rdi
leaq 0x42b85(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x498(%rbp)
jmp 0x6a73
movq -0x498(%rbp), %rdi
movq 0x53537(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6a88
cmpl $0x5, 0x53cb1(%rip)     # 0x5a740
je 0x6aa1
leaq 0x42ba5(%rip), %rdi     # 0x4963d
callq 0x5360
jmp 0x6a9f
jmp 0x6aa1
jmp 0x6ade
leaq 0x42ba9(%rip), %rsi     # 0x49653
leaq -0x98(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xe460
jmp 0x6abc
leaq -0x98(%rbp), %rdi
callq 0x4160
movq %rax, %rdi
callq 0x5360
jmp 0x6ad2
leaq -0x98(%rbp), %rdi
callq 0x46c8
jmp 0x6ae0
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x65e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x46c8
jmp 0x7d18
jmp 0x6f35
leaq -0x70(%rbp), %rdi
callq 0x4550
cmpq $0x2, %rax
jb 0x6b21
jmp 0x6b40
leaq 0x42b3a(%rip), %rdi     # 0x49662
leaq 0x427ba(%rip), %rsi     # 0x492e9
movl $0x13d, %edx            # imm = 0x13D
leaq 0x42b3c(%rip), %rcx     # 0x49677
callq 0x4240
xorl %eax, %eax
movl %eax, %esi
leaq -0x70(%rbp), %rdi
callq 0x46b0
movq %rax, -0x4a0(%rbp)
jmp 0x6b56
movq -0x4a0(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x2d, %ecx
movb %al, -0x4a1(%rbp)
jne 0x6b9a
leaq -0x70(%rbp), %rdi
movl $0x1, %esi
callq 0x46b0
movq %rax, -0x4b0(%rbp)
jmp 0x6b84
movq -0x4b0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
sete %al
movb %al, -0x4a1(%rbp)
movb -0x4a1(%rbp), %al
testb $0x1, %al
jne 0x6ba6
jmp 0x6ba8
jmp 0x6bc7
leaq 0x42ae7(%rip), %rdi     # 0x49696
leaq 0x42733(%rip), %rsi     # 0x492e9
movl $0x13e, %edx            # imm = 0x13E
leaq 0x42ab5(%rip), %rcx     # 0x49677
callq 0x4240
leaq -0x70(%rbp), %rdi
callq 0x4550
cmpq $0x3, %rax
jae 0x6be6
leaq 0x429fb(%rip), %rdi     # 0x495d8
callq 0x5360
jmp 0x6be4
jmp 0x6be6
leaq 0x4277e(%rip), %rsi     # 0x4936b
leaq -0x70(%rbp), %rdi
callq 0xe570
movb %al, -0x4b1(%rbp)
jmp 0x6bfe
movb -0x4b1(%rbp), %al
testb $0x1, %al
jne 0x6c0a
jmp 0x6c7c
movq 0x533bf(%rip), %rdi     # 0x59fd0
leaq -0x70(%rbp), %rsi
callq 0x4330
movq %rax, -0x4c0(%rbp)
jmp 0x6c23
movq -0x4c0(%rbp), %rdi
leaq 0x429b9(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x4c8(%rbp)
jmp 0x6c3f
movq -0x4c8(%rbp), %rdi
movq 0x5336b(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6c54
cmpl $0x0, 0x53ae5(%rip)     # 0x5a740
je 0x6c6d
leaq 0x42995(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x6c6b
jmp 0x6c6d
movl $0x1, 0x53ac9(%rip)     # 0x5a740
jmp 0x6f33
leaq 0x42719(%rip), %rsi     # 0x4939c
leaq -0x70(%rbp), %rdi
callq 0xe570
movb %al, -0x4c9(%rbp)
jmp 0x6c94
movb -0x4c9(%rbp), %al
testb $0x1, %al
jne 0x6ca0
jmp 0x6d12
movq 0x53329(%rip), %rdi     # 0x59fd0
leaq -0x70(%rbp), %rsi
callq 0x4330
movq %rax, -0x4d8(%rbp)
jmp 0x6cb9
movq -0x4d8(%rbp), %rdi
leaq 0x42923(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x4e0(%rbp)
jmp 0x6cd5
movq -0x4e0(%rbp), %rdi
movq 0x532d5(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6cea
cmpl $0x0, 0x53a4f(%rip)     # 0x5a740
je 0x6d03
leaq 0x428ff(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x6d01
jmp 0x6d03
movl $0x2, 0x53a33(%rip)     # 0x5a740
jmp 0x6f31
leaq 0x426a9(%rip), %rsi     # 0x493c2
leaq -0x70(%rbp), %rdi
callq 0xe570
movb %al, -0x4e1(%rbp)
jmp 0x6d2a
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0x6d36
jmp 0x6da8
movq 0x53293(%rip), %rdi     # 0x59fd0
leaq -0x70(%rbp), %rsi
callq 0x4330
movq %rax, -0x4f0(%rbp)
jmp 0x6d4f
movq -0x4f0(%rbp), %rdi
leaq 0x4288d(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x4f8(%rbp)
jmp 0x6d6b
movq -0x4f8(%rbp), %rdi
movq 0x5323f(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6d80
cmpl $0x0, 0x539b9(%rip)     # 0x5a740
je 0x6d99
leaq 0x42869(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x6d97
jmp 0x6d99
movl $0x3, 0x5399d(%rip)     # 0x5a740
jmp 0x6f2f
leaq 0x4275d(%rip), %rsi     # 0x4950c
leaq -0x70(%rbp), %rdi
callq 0xe570
movb %al, -0x4f9(%rbp)
jmp 0x6dc0
movb -0x4f9(%rbp), %al
testb $0x1, %al
jne 0x6dcc
jmp 0x6e3e
movq 0x531fd(%rip), %rdi     # 0x59fd0
leaq -0x70(%rbp), %rsi
callq 0x4330
movq %rax, -0x508(%rbp)
jmp 0x6de5
movq -0x508(%rbp), %rdi
leaq 0x427f7(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x510(%rbp)
jmp 0x6e01
movq -0x510(%rbp), %rdi
movq 0x531a9(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6e16
cmpl $0x0, 0x53923(%rip)     # 0x5a740
je 0x6e2f
leaq 0x427d3(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x6e2d
jmp 0x6e2f
movl $0x6, 0x53907(%rip)     # 0x5a740
jmp 0x6f2d
leaq 0x42721(%rip), %rsi     # 0x49566
leaq -0x70(%rbp), %rdi
callq 0xe570
movb %al, -0x511(%rbp)
jmp 0x6e56
movb -0x511(%rbp), %al
testb $0x1, %al
jne 0x6e62
jmp 0x6ed1
movq 0x53167(%rip), %rdi     # 0x59fd0
leaq -0x70(%rbp), %rsi
callq 0x4330
movq %rax, -0x520(%rbp)
jmp 0x6e7b
movq -0x520(%rbp), %rdi
leaq 0x42761(%rip), %rsi     # 0x495ea
callq 0x4390
movq %rax, -0x528(%rbp)
jmp 0x6e97
movq -0x528(%rbp), %rdi
movq 0x53113(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6eac
cmpl $0x0, 0x5388d(%rip)     # 0x5a740
je 0x6ec5
leaq 0x4273d(%rip), %rdi     # 0x495f9
callq 0x5360
jmp 0x6ec3
jmp 0x6ec5
movl $0x7, 0x53871(%rip)     # 0x5a740
jmp 0x6f2b
leaq 0x4277b(%rip), %rsi     # 0x49653
leaq -0xb8(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xe460
jmp 0x6eea
leaq -0xb8(%rbp), %rdi
callq 0x4160
movq %rax, %rdi
callq 0x5360
jmp 0x6f00
leaq -0xb8(%rbp), %rdi
callq 0x46c8
jmp 0x6f2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x46c8
jmp 0x7d18
jmp 0x6f2d
jmp 0x6f2f
jmp 0x6f31
jmp 0x6f33
jmp 0x6f35
jmp 0x7cf8
leaq 0x426f9(%rip), %rsi     # 0x4963a
leaq -0x38(%rbp), %rdi
callq 0xe570
movb %al, -0x529(%rbp)
jmp 0x6f52
movb -0x529(%rbp), %al
testb $0x1, %al
jne 0x6f5e
jmp 0x6fc2
leaq 0x53673(%rip), %rdi     # 0x5a5d8
leaq -0x70(%rbp), %rsi
callq 0x4060
jmp 0x6f70
movq 0x53059(%rip), %rdi     # 0x59fd0
leaq 0x4273d(%rip), %rsi     # 0x496bb
callq 0x4390
movq %rax, -0x538(%rbp)
jmp 0x6f8c
movq -0x538(%rbp), %rdi
leaq 0x5363e(%rip), %rsi     # 0x5a5d8
callq 0x4330
movq %rax, -0x540(%rbp)
jmp 0x6fa8
movq -0x540(%rbp), %rdi
movq 0x53002(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x6fbd
jmp 0x7cf6
leaq 0x42713(%rip), %rsi     # 0x496dc
leaq -0x38(%rbp), %rdi
callq 0xe570
movb %al, -0x541(%rbp)
jmp 0x6fda
movb -0x541(%rbp), %al
testb $0x1, %al
jne 0x6fe9
jmp 0x7c02
xorl %eax, %eax
movl %eax, %edx
leaq -0xd8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x1, %ecx
callq 0x43c0
jmp 0x7004
xorl %eax, %eax
movl %eax, %esi
leaq -0xd8(%rbp), %rdi
callq 0x46b0
movq %rax, -0x550(%rbp)
jmp 0x701d
movq -0x550(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x7054
xorl %eax, %eax
movl %eax, %esi
leaq -0xd8(%rbp), %rdi
callq 0x46b0
movq %rax, -0x558(%rbp)
jmp 0x7045
movq -0x558(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x33, %eax
jle 0x7075
leaq 0x42684(%rip), %rdi     # 0x496df
callq 0x5360
jmp 0x7062
jmp 0x7075
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7bf1
xorl %eax, %eax
movl %eax, %esi
leaq -0xd8(%rbp), %rdi
callq 0x46b0
movq %rax, -0x560(%rbp)
jmp 0x708e
movq -0x560(%rbp), %rax
movsbl (%rax), %eax
addl $-0x31, %eax
movl %eax, -0xdc(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x1, %edx
movl $0x2, %ecx
callq 0x43c0
jmp 0x70bd
xorl %eax, %eax
movl %eax, %esi
leaq -0x100(%rbp), %rdi
callq 0x46b0
movq %rax, -0x568(%rbp)
jmp 0x70d6
movq -0x568(%rbp), %rax
movb (%rax), %al
movb %al, -0x101(%rbp)
movsbl -0x101(%rbp), %eax
cmpl $0x41, %eax
je 0x712a
movsbl -0x101(%rbp), %eax
cmpl $0x48, %eax
je 0x712a
movsbl -0x101(%rbp), %eax
cmpl $0x42, %eax
je 0x712a
leaq 0x425f0(%rip), %rdi     # 0x49700
callq 0x5360
jmp 0x7117
jmp 0x712a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7be5
movl $0x0, -0x108(%rbp)
movsbl -0x101(%rbp), %eax
cmpl $0x42, %eax
jne 0x716d
leaq -0x100(%rbp), %rdi
movl $0x1, %esi
callq 0x46b0
movq %rax, -0x570(%rbp)
jmp 0x715a
movq -0x570(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, -0x108(%rbp)
movsbl -0x101(%rbp), %eax
cmpl $0x42, %eax
jne 0x719b
cmpl $0x0, -0x108(%rbp)
jl 0x718b
cmpl $0x9, -0x108(%rbp)
jle 0x719b
leaq 0x4259f(%rip), %rdi     # 0x49731
callq 0x5360
jmp 0x7199
jmp 0x719b
leaq 0x534b6(%rip), %rdi     # 0x5a658
leaq 0x4289b(%rip), %rsi     # 0x49a44
callq 0x4360
jmp 0x71b0
leaq 0x534a1(%rip), %rdi     # 0x5a658
leaq -0x70(%rbp), %rsi
callq 0x44c0
jmp 0x71c2
movl $0x2, -0x10c(%rbp)
movsbl -0x101(%rbp), %eax
cmpl $0x42, %eax
jne 0x71e2
movl $0x3, -0x10c(%rbp)
movslq -0x10c(%rbp), %rax
movq %rax, -0x578(%rbp)
leaq -0x70(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x4550
movq -0x580(%rbp), %rsi
movq -0x578(%rbp), %rdx
movq %rax, %rcx
movslq -0x10c(%rbp), %rax
subq %rax, %rcx
leaq -0x2b8(%rbp), %rdi
callq 0x43c0
jmp 0x7229
movl $0x10, %edi
movl $0x8, %esi
callq 0xe5a0
movl %eax, -0x584(%rbp)
jmp 0x7240
movl -0x584(%rbp), %edx
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x4580
jmp 0x725b
leaq -0x2b8(%rbp), %rdi
callq 0x46c8
leaq -0x298(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x42f0
jmp 0x727c
movsbl -0x101(%rbp), %eax
cmpl $0x41, %eax
jne 0x75b5
cmpl $-0x1, -0xdc(%rbp)
jle 0x7371
movslq -0xdc(%rbp), %rax
leaq 0x53369(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
cmpq $0xb, %rax
jae 0x730b
movslq -0xdc(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x53345(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl $0xb, %esi
callq 0xe5e0
jmp 0x72db
jmp 0x730b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x46c8
jmp 0x7be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7bd9
movl $0x0, -0x2c4(%rbp)
cmpl $0x9, -0x2c4(%rbp)
jg 0x736c
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x590(%rbp)
movslq -0xdc(%rbp), %rax
leaq 0x532d4(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
movslq -0x2c4(%rbp), %rsi
callq 0xe670
movsd -0x590(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x2c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c4(%rbp)
jmp 0x7315
jmp 0x7445
movl $0x0, -0x2c8(%rbp)
cmpl $0x3, -0x2c8(%rbp)
jge 0x7443
movslq -0x2c8(%rbp), %rax
leaq 0x5327a(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
cmpq $0xb, %rax
jae 0x73cc
movslq -0x2c8(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x53256(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl $0xb, %esi
callq 0xe5e0
jmp 0x73ca
jmp 0x73cc
movl $0x0, -0x2cc(%rbp)
cmpl $0x9, -0x2cc(%rbp)
jg 0x742d
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x598(%rbp)
movslq -0x2c8(%rbp), %rax
leaq 0x53213(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
movslq -0x2cc(%rbp), %rsi
callq 0xe670
movsd -0x598(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x2cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2cc(%rbp)
jmp 0x73d6
jmp 0x742f
movl -0x2c8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c8(%rbp)
jmp 0x737b
jmp 0x7445
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x4630
movq -0x5a0(%rbp), %rdx
leaq 0x42315(%rip), %rsi     # 0x4977b
leaq -0x2f0(%rbp), %rdi
callq 0xe110
jmp 0x7474
leaq -0x2f1(%rbp), %rdi
callq 0x43f0
cmpl $0x0, -0xdc(%rbp)
jne 0x74da
leaq 0x42d70(%rip), %rsi     # 0x4a200
leaq -0x2f0(%rbp), %rdi
callq 0x44f0
jmp 0x749e
jmp 0x751e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2f1(%rbp), %rdi
callq 0x43f0
jmp 0x7bd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x46c8
jmp 0x7bd9
cmpl $0x1, -0xdc(%rbp)
jne 0x74fa
leaq 0x42295(%rip), %rsi     # 0x4977f
leaq -0x2f0(%rbp), %rdi
callq 0x44f0
jmp 0x74f8
jmp 0x751c
cmpl $0x2, -0xdc(%rbp)
jne 0x751a
leaq 0x4227b(%rip), %rsi     # 0x49785
leaq -0x2f0(%rbp), %rdi
callq 0x44f0
jmp 0x7518
jmp 0x751a
jmp 0x751c
jmp 0x751e
movq 0x52aab(%rip), %rdi     # 0x59fd0
leaq 0x4225e(%rip), %rsi     # 0x4978a
callq 0x4390
movq %rax, -0x5a8(%rbp)
jmp 0x753a
movq -0x5a8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x4330
movq %rax, -0x5b0(%rbp)
jmp 0x7556
movq -0x5b0(%rbp), %rdi
leaq 0x42c21(%rip), %rsi     # 0x4a185
callq 0x4390
movq %rax, -0x5b8(%rbp)
jmp 0x7572
movq -0x5b8(%rbp), %rdi
movsd -0x2c0(%rbp), %xmm0
callq 0x4670
movq %rax, -0x5c0(%rbp)
jmp 0x758f
movq -0x5c0(%rbp), %rdi
movq 0x52a1b(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x75a4
leaq -0x2f0(%rbp), %rdi
callq 0x46c8
jmp 0x7bb0
movsbl -0x101(%rbp), %eax
cmpl $0x48, %eax
jne 0x7870
cmpl $-0x1, -0xdc(%rbp)
jle 0x7655
movslq -0xdc(%rbp), %rax
leaq 0x53030(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
cmpq $0x1, %rax
jae 0x7616
movslq -0xdc(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x5300c(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl $0x1, %esi
callq 0xe5e0
jmp 0x7614
jmp 0x7616
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x5c8(%rbp)
movslq -0xdc(%rbp), %rax
leaq 0x52fdc(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe670
movsd -0x5c8(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x7700
movl $0x0, -0x2f8(%rbp)
cmpl $0x3, -0x2f8(%rbp)
jge 0x76fe
movslq -0x2f8(%rbp), %rax
leaq 0x52f96(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
cmpq $0x1, %rax
jae 0x76b0
movslq -0x2f8(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x52f72(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl $0x1, %esi
callq 0xe5e0
jmp 0x76ae
jmp 0x76b0
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x5d0(%rbp)
movslq -0x2f8(%rbp), %rax
leaq 0x52f42(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe670
movsd -0x5d0(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x2f8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2f8(%rbp)
jmp 0x765f
jmp 0x7700
leaq -0x319(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x4630
movq -0x5d8(%rbp), %rdx
leaq 0x4205a(%rip), %rsi     # 0x4977b
leaq -0x318(%rbp), %rdi
callq 0xe110
jmp 0x772f
leaq -0x319(%rbp), %rdi
callq 0x43f0
cmpl $0x0, -0xdc(%rbp)
jne 0x7795
leaq 0x42ab5(%rip), %rsi     # 0x4a200
leaq -0x318(%rbp), %rdi
callq 0x44f0
jmp 0x7759
jmp 0x77d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x319(%rbp), %rdi
callq 0x43f0
jmp 0x7bd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x46c8
jmp 0x7bd9
cmpl $0x1, -0xdc(%rbp)
jne 0x77b5
leaq 0x41fda(%rip), %rsi     # 0x4977f
leaq -0x318(%rbp), %rdi
callq 0x44f0
jmp 0x77b3
jmp 0x77d7
cmpl $0x2, -0xdc(%rbp)
jne 0x77d5
leaq 0x41fc0(%rip), %rsi     # 0x49785
leaq -0x318(%rbp), %rdi
callq 0x44f0
jmp 0x77d3
jmp 0x77d5
jmp 0x77d7
jmp 0x77d9
movq 0x527f0(%rip), %rdi     # 0x59fd0
leaq 0x41fd1(%rip), %rsi     # 0x497b8
callq 0x4390
movq %rax, -0x5e0(%rbp)
jmp 0x77f5
movq -0x5e0(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x4330
movq %rax, -0x5e8(%rbp)
jmp 0x7811
movq -0x5e8(%rbp), %rdi
leaq 0x42966(%rip), %rsi     # 0x4a185
callq 0x4390
movq %rax, -0x5f0(%rbp)
jmp 0x782d
movq -0x5f0(%rbp), %rdi
movsd -0x2c0(%rbp), %xmm0
callq 0x4670
movq %rax, -0x5f8(%rbp)
jmp 0x784a
movq -0x5f8(%rbp), %rdi
movq 0x52760(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x785f
leaq -0x318(%rbp), %rdi
callq 0x46c8
jmp 0x7bae
movsbl -0x101(%rbp), %eax
cmpl $0x42, %eax
jne 0x787e
jmp 0x789d
leaq 0x41f58(%rip), %rdi     # 0x497dd
leaq 0x41a5d(%rip), %rsi     # 0x492e9
movl $0x1c9, %edx            # imm = 0x1C9
leaq 0x41ddf(%rip), %rcx     # 0x49677
callq 0x4240
cmpl $-0x1, -0xdc(%rbp)
jle 0x7947
movslq -0xdc(%rbp), %rax
leaq 0x52d58(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
movl -0x108(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jae 0x7900
movslq -0xdc(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x52d29(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl -0x108(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0xe5e0
jmp 0x78fe
jmp 0x7900
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x600(%rbp)
movslq -0xdc(%rbp), %rax
leaq 0x52cf2(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
movl -0x108(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0xe670
movsd -0x600(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x7a0c
movl $0x0, -0x320(%rbp)
cmpl $0x3, -0x320(%rbp)
jge 0x7a0a
movslq -0x320(%rbp), %rax
leaq 0x52ca4(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
callq 0xe5c0
movl -0x108(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jae 0x79b4
movslq -0x320(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x52c75(%rip), %rax     # 0x5a610
leaq (%rax,%rcx,8), %rdi
movl -0x108(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0xe5e0
jmp 0x79b2
jmp 0x79b4
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x608(%rbp)
movslq -0x320(%rbp), %rax
leaq 0x52c3e(%rip), %rdi     # 0x5a610
imulq $0x18, %rax, %rax
addq %rax, %rdi
movl -0x108(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0xe670
movsd -0x608(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x320(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x320(%rbp)
jmp 0x7951
jmp 0x7a0c
leaq -0x341(%rbp), %rdi
movq %rdi, -0x610(%rbp)
callq 0x4630
movq -0x610(%rbp), %rdx
leaq 0x41d4e(%rip), %rsi     # 0x4977b
leaq -0x340(%rbp), %rdi
callq 0xe110
jmp 0x7a3b
leaq -0x341(%rbp), %rdi
callq 0x43f0
cmpl $0x0, -0xdc(%rbp)
jne 0x7aa1
leaq 0x427a9(%rip), %rsi     # 0x4a200
leaq -0x340(%rbp), %rdi
callq 0x44f0
jmp 0x7a65
jmp 0x7ae5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x341(%rbp), %rdi
callq 0x43f0
jmp 0x7bd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x46c8
jmp 0x7bd9
cmpl $0x1, -0xdc(%rbp)
jne 0x7ac1
leaq 0x41cce(%rip), %rsi     # 0x4977f
leaq -0x340(%rbp), %rdi
callq 0x44f0
jmp 0x7abf
jmp 0x7ae3
cmpl $0x2, -0xdc(%rbp)
jne 0x7ae1
leaq 0x41cb4(%rip), %rsi     # 0x49785
leaq -0x340(%rbp), %rdi
callq 0x44f0
jmp 0x7adf
jmp 0x7ae1
jmp 0x7ae3
jmp 0x7ae5
movq 0x524e4(%rip), %rdi     # 0x59fd0
leaq 0x41cfb(%rip), %rsi     # 0x497ee
callq 0x4390
movq %rax, -0x618(%rbp)
jmp 0x7b01
movq -0x618(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x4330
movq %rax, -0x620(%rbp)
jmp 0x7b1d
movq -0x620(%rbp), %rdi
leaq 0x41ce8(%rip), %rsi     # 0x49813
callq 0x4390
movq %rax, -0x628(%rbp)
jmp 0x7b39
movq -0x628(%rbp), %rdi
movl -0x108(%rbp), %esi
callq 0x4600
movq %rax, -0x630(%rbp)
jmp 0x7b54
movq -0x630(%rbp), %rdi
leaq 0x42623(%rip), %rsi     # 0x4a185
callq 0x4390
movq %rax, -0x638(%rbp)
jmp 0x7b70
movq -0x638(%rbp), %rdi
movsd -0x2c0(%rbp), %xmm0
callq 0x4670
movq %rax, -0x640(%rbp)
jmp 0x7b8d
movq -0x640(%rbp), %rdi
movq 0x5241d(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x7ba2
leaq -0x340(%rbp), %rdi
callq 0x46c8
jmp 0x7bb0
leaq -0x298(%rbp), %rdi
callq 0x42a0
leaq -0x100(%rbp), %rdi
callq 0x46c8
leaq -0xd8(%rbp), %rdi
callq 0x46c8
jmp 0x7cf4
leaq -0x298(%rbp), %rdi
callq 0x42a0
leaq -0x100(%rbp), %rdi
callq 0x46c8
leaq -0xd8(%rbp), %rdi
callq 0x46c8
jmp 0x7d18
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x650(%rbp)
leaq -0x369(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x4630
movq -0x650(%rbp), %rsi
movq -0x648(%rbp), %rdx
leaq -0x368(%rbp), %rdi
callq 0xe110
jmp 0x7c44
leaq -0x369(%rbp), %rdi
callq 0x43f0
leaq 0x529a1(%rip), %rdi     # 0x5a5f8
leaq -0x368(%rbp), %rsi
callq 0xe690
jmp 0x7c65
movq 0x52364(%rip), %rdi     # 0x59fd0
leaq 0x41ba9(%rip), %rsi     # 0x4981c
callq 0x4390
movq %rax, -0x658(%rbp)
jmp 0x7c81
movq -0x658(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x4330
movq %rax, -0x660(%rbp)
jmp 0x7c9d
movq -0x660(%rbp), %rdi
movq 0x5230d(%rip), %rsi     # 0x59fb8
callq 0x43d0
jmp 0x7cb2
leaq -0x368(%rbp), %rdi
callq 0x46c8
jmp 0x7cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x369(%rbp), %rdi
callq 0x43f0
jmp 0x7d18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x46c8
jmp 0x7d18
jmp 0x7cf6
jmp 0x7cf8
leaq -0x70(%rbp), %rdi
callq 0x46c8
leaq -0x38(%rbp), %rdi
callq 0x46c8
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x648b
leaq -0x70(%rbp), %rdi
callq 0x46c8
leaq -0x38(%rbp), %rdi
callq 0x46c8
jmp 0x7d35
addq $0x660, %rsp            # imm = 0x660
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x4620
nop