// File: /workspace/github_cpp_makefile_star2_O3/tonymugen[P]sampleSNPs/sampleSNPs.cpp
// Function: main
int main(int argc, char *argv[]){
	string fileType;   // type variant file; Supporting what varfiles supports
	string inFileName; // input file name; will strip off the extension if necessary
	string nSampTxt;   // string version of the number of samples
	uint64_t n;        // number of samples

	// set usage message
	string cliHelp = "Command line flags required (in any order):\n  -s NNN (number of samples)\n  -i fileName (input file name, with or without extension)\n  -t fileType (type of SNP file; required if no extension in the input file name)";
	unordered_map <char, string> clInfo;
	parseCL(argc, argv, clInfo);
	auto clIter = clInfo.begin(); // iterator of the command line flags

	// Process CLI flags
	clIter = clInfo.find('s');
	if (clIter == clInfo.end()) { // if not there, complain
		cerr << "ERROR: specification of the number of samples is required" << endl;
		cerr << cliHelp << endl;
		exit(1);
	} else {
		n        = stoi(clIter->second);
		nSampTxt = clIter->second;
	}

	clIter = clInfo.find('i');
	if (clIter == clInfo.end()) { // if not there, complain
		cerr << "ERROR: specification of the input file name is required" << endl;
		cerr << cliHelp << endl;
		exit(2);
	} else {
		inFileName = clIter->second;
	}

	clIter = clInfo.find('t');
	if (clIter == clInfo.end()) { // if not there, set to nothing
		fileType = "";
	} else {
		fileType = clIter->second;
	}

	// Processing file types first
	if (fileType == "BED") {
		// Doing BED. First figure out if there is an extension on the file name
		string ext;
		bool haveExt = false;
		auto flNit   = inFileName.end() - 1;
		for (; flNit != inFileName.begin(); --flNit) {
			if ((*flNit) == '.') {
				haveExt = true;
				break;
			}
			ext = (*flNit) + ext;
		}
		// get rid of the extension
		if (haveExt && (ext != "bed")) {
			cerr << "WARNING: extension " << ext << " non-standard for BED files; will assume that it is not an extension" << endl;
		} else if (haveExt){
			inFileName.erase(flNit, inFileName.end());
		}
		string outFileStub = inFileName + "_s" + nSampTxt;
		BedFileI bedIn(inFileName);
		BedFileO bedOut(outFileStub);
		bedIn.sample(bedOut, n);

	} else if (fileType == "TPED"){
		// Doing TPED. First figure out if there is an extension on the file name
		string ext;
		bool haveExt = false;
		auto flNit   = inFileName.end();
		for (; flNit != inFileName.begin(); --flNit) {
			if ((*flNit) == '.') {
				haveExt = true;
				break;
			}
			ext = (*flNit) + ext;
		}
		// get rid of the extension
		if (haveExt && (ext != "tped")) {
			cerr << "WARNING: extension " << ext << " non-standard for TPED files; will assume that it is not an extension" << endl;
		} else if (haveExt){
			inFileName.erase(flNit, inFileName.end());
		}
		string outFileStub = inFileName + "_s" + nSampTxt;
		TpedFileI tpedIn(inFileName);
		TpedFileO tpedOut(outFileStub);
		tpedIn.sample(tpedOut, n);

	} else if (fileType == "VCF"){
		// Doing VCF. First figure out if there is an extension on the file name
		string ext;
		bool haveExt = false;
		auto flNit   = inFileName.end() - 1;
		for (; flNit != inFileName.begin(); --flNit) {
			if ((*flNit) == '.') {
				haveExt = true;
				break;
			}
			ext = (*flNit) + ext;
		}
		// get rid of the extension
		if (haveExt) {
			if (ext != "vcf") {
				// Did they specify a file name stub that has periods in it? If yes, the file with the .vcf added should exist
				string testNam = inFileName + ".vcf";
				if (FILE *file = fopen(testNam.c_str(), "r")) {
					ext = "vcf";
					fclose(file);
				} else {
					cerr << "WARNING: extension " << ext << " non-standard for VCF files" << endl;
					inFileName.erase(flNit, inFileName.end());
				}
			} else {
				inFileName.erase(flNit, inFileName.end());
			}

		}
		string outFileName = inFileName + "_s" + nSampTxt + "." + ext; // not messing with the provided extension
		inFileName         = inFileName + "." + ext;

		VcfFileI vcfIn(inFileName);
		VcfFileO vcfOut(outFileName);
		vcfIn.sample(vcfOut, n);

	} else if (fileType == "HMP"){
		// Doing hapmap. First figure out if there is an extension on the file name
		string ext;
		bool haveExt = false;
		auto flNit   = inFileName.end() - 1;
		for (; flNit != inFileName.begin(); --flNit) {
			if ((*flNit) == '.') {
				if (ext == "txt") { // because typically it is .hmp.txt
					ext = (*flNit) + ext;
					continue;
				}
				haveExt = true;
				break;
			}
			ext = (*flNit) + ext;
		}
		// get rid of the extension
		if (haveExt) {
			if ( (ext != "hmp.txt") && (ext != "hmp") ) {
				// Did they specify a file name stub that has periods in it? If yes, the file with the .hmp.txt added should exist
				string testNam1 = inFileName + ".hmp.txt";
				string testNam2 = inFileName + ".hmp";
				if (FILE *file = fopen(testNam1.c_str(), "r")) {
					ext = "hmp.txt";
					fclose(file);
				} else if (FILE *file = fopen(testNam2.c_str(), "r")){
					ext = "hmp";
					fclose(file);
				}
				else {
					cerr << "WARNING: extension " << ext << " non-standard for HapMap files" << endl;
					inFileName.erase(flNit, inFileName.end());
				}
			} else {
				inFileName.erase(flNit, inFileName.end());
			}
		}
		string outFileName = inFileName + "_s" + nSampTxt + "." + ext;
		inFileName         = inFileName + "." + ext;
		HmpFileI hmpIn(inFileName);
		HmpFileO hmpOut(outFileName);
		hmpIn.sample(hmpOut, n);

	} else { // no (or an unrecognized) file type specified on CL
		// First figure out if there is an extension on the file name
		string ext;
		bool haveExt = false;
		auto flNit   = inFileName.end() - 1;
		for (; flNit != inFileName.begin(); --flNit) {
			if ((*flNit) == '.') {
				if (ext == "txt") { // because typically it is .hmp.txt
					ext = (*flNit) + ext;
					continue;
				}
				haveExt = true;
				break;
			}
			ext = (*flNit) + ext;
		}
		if (haveExt) {
			if (ext == "bed") {
				if (!fileType.empty()) {
					cerr << "WARNING: unrecognized file type " << fileType << " specified. Assuming BED file based on extension" << endl;
				}
				inFileName.erase(flNit, inFileName.end());
				string outFileStub = inFileName + "_s" + nSampTxt;
				BedFileI bedIn(inFileName);
				BedFileO bedOut(outFileStub);
				bedIn.sample(bedOut, n);

			} else if (ext == "tped") {
				if (!fileType.empty()) {
					cerr << "WARNING: unrecognized file type " << fileType << " specified. Assuming TPED file based on extension" << endl;
				}
				inFileName.erase(flNit, inFileName.end());
				string outFileStub = inFileName + "_s" + nSampTxt;
				TpedFileI tpedIn(inFileName);
				TpedFileO tpedOut(outFileStub);
				tpedIn.sample(tpedOut, n);

			} else if (ext == "vcf") {
				if (!fileType.empty()) {
					cerr << "WARNING: unrecognized file type " << fileType << " specified. Assuming VCF file based on extension" << endl;
				}
				inFileName.erase(flNit, inFileName.end());
				string outFileName = inFileName + "_s" + nSampTxt + ".vcf";
				inFileName         = inFileName + "." + ext;
				VcfFileI vcfIn(inFileName);
				VcfFileO vcfOut(outFileName);
				vcfIn.sample(vcfOut, n);

			} else if ( (ext == "hmp.txt") || (ext == "hmp") ) {
				if (!fileType.empty()) {
					cerr << "WARNING: unrecognized file type " << fileType << " specified. Assuming HapMap file based on extension" << endl;
				}
				inFileName.erase(flNit, inFileName.end());
				string outFileName = inFileName + "_s" + nSampTxt + ext;
				inFileName         = inFileName + "." + ext;
				HmpFileI hmpIn(inFileName);
				HmpFileO hmpOut(outFileName);
				hmpIn.sample(hmpOut, n);

			} else {
				if (fileType.empty()) {
					cerr << "ERROR: unrecognized extension (" << ext << ") in input file name " << inFileName << " and no file type specified" << endl;
					exit(3);
				} else {
					cerr << "ERROR: unrecognized extension (" << ext << ") in input file name " << inFileName << " and unrecognized file type (" << fileType  << ") specified" << endl;
					exit(4);
				}

			}
		} else {
			if (fileType.empty()) {
				cerr << "ERROR: no extension in input file name " << inFileName << " and no file type specified" << endl;
				exit(3);
			} else {
				cerr << "ERROR: no extension in input file name " << inFileName << " and unrecognized file type (" << fileType  << ") specified" << endl;
				exit(4);
			}
		}
	}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe38, %rsp            # imm = 0xE38
movq %rsi, %rbx
movl %edi, 0xcc(%rsp)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x10(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x98(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12f9b(%rip), %rsi     # 0x1807f
leaq 0x13069(%rip), %rdx     # 0x18154
leaq 0xd0(%rsp), %rdi
callq 0x7b0a
leaq 0x120(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq 0xcc(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
movq %rbx, %rsi
callq 0x4f1c
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdi
movl $0x73, %eax
xorl %edx, %edx
divq %rdi
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x6b8f
movq (%rax), %rbx
cmpb $0x73, 0x8(%rbx)
je 0x5193
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x6b8f
movsbq 0x8(%rbx), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
cmpq %rcx, %rdx
jne 0x6b8f
cmpb $0x73, %sil
jne 0x516b
movq 0x10(%rbx), %r15
callq 0x4050
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x128(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x43c0
cmpq %r15, (%r12)
je 0x6cb2
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x6cbe
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x6cbe
addq $0x10, %rbx
testl %ecx, %ecx
jne 0x51ec
movl %ebp, (%r14)
movq %rax, 0x60(%rsp)
leaq 0x88(%rsp), %rdi
movq %rbx, %rsi
callq 0x4160
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %r8
movl $0x69, %eax
xorl %edx, %edx
divq %r8
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x6be1
movq (%rax), %rsi
cmpb $0x69, 0x8(%rsi)
je 0x525e
movq (%rsi), %rsi
testq %rsi, %rsi
je 0x6be1
movsbq 0x8(%rsi), %rdi
movq %rdi, %rax
xorl %edx, %edx
divq %r8
cmpq %rcx, %rdx
jne 0x6be1
cmpb $0x69, %dil
jne 0x5236
addq $0x10, %rsi
movq %rsp, %rdi
callq 0x4160
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %r8
movl $0x74, %eax
xorl %edx, %edx
divq %r8
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x52cb
movq (%rax), %rsi
cmpb $0x74, 0x8(%rsi)
je 0x52bb
movq (%rsi), %rsi
testq %rsi, %rsi
je 0x52cb
movsbq 0x8(%rsi), %rdi
movq %rdi, %rax
xorl %edx, %edx
divq %r8
cmpq %rcx, %rdx
jne 0x52cb
cmpb $0x74, %dil
jne 0x529b
addq $0x10, %rsi
leaq 0x68(%rsp), %rdi
callq 0x4160
jmp 0x52e5
leaq 0x68(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x13852(%rip), %rcx     # 0x18b2d
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x4430
leaq 0x13591(%rip), %rsi     # 0x1887d
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x546a
leaq 0x12f1e(%rip), %rsi     # 0x18223
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5507
leaq 0x12f50(%rip), %rsi     # 0x1826e
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x57df
leaq 0x12f5c(%rip), %rsi     # 0x18293
leaq 0x68(%rsp), %rdi
callq 0x40d0
leaq 0x30(%rsp), %rcx
testl %eax, %eax
je 0x58fb
movq %rcx, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movb $0x0, 0x30(%rsp)
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx), %rbx
decq %rbx
cmpq %rax, %rbx
je 0x5408
leaq 0x138(%rsp), %rbp
leaq (%rcx,%rax), %r13
decq %r13
leaq 0x12f0c(%rip), %r14     # 0x1829c
leaq 0x20(%rsp), %r15
leaq 0x128(%rsp), %r12
movb (%rbx), %al
cmpb $0x2e, %al
jne 0x53c6
movq %r15, %rdi
movq %r14, %rsi
callq 0x40d0
testl %eax, %eax
jne 0x5594
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x7350
jmp 0x53d4
movsbl %al, %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x7350
movq %r15, %rdi
movq %r12, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x53fc
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
decq %r13
cmpq (%rsp), %rbx
jne 0x539d
cmpq $0x0, 0x70(%rsp)
jne 0x6c33
movq 0x1abd5(%rip), %rdi     # 0x1fff0
leaq 0x13007(%rip), %rsi     # 0x18429
movl $0x27, %edx
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x1abb4(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x12f98(%rip), %rsi     # 0x183e3
movl $0x1b, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
movl $0x3, %edi
callq 0x4320
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx), %r13
decq %r13
cmpq %rax, %r13
je 0x5b9d
leaq 0x138(%rsp), %rbp
leaq (%rcx,%rax), %r12
decq %r12
leaq 0x128(%rsp), %rbx
leaq 0x20(%rsp), %r14
movb (%r13), %al
cmpb $0x2e, %al
je 0x5871
movsbl %al, %esi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x7350
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x54f6
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %r13
decq %r12
cmpq (%rsp), %r13
jne 0x54b4
jmp 0x5b9d
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x5ef3
addq (%rsp), %rbx
leaq 0x138(%rsp), %r13
leaq 0x128(%rsp), %r14
leaq 0x20(%rsp), %r15
movb (%rbx), %al
cmpb $0x2e, %al
je 0x59b3
movsbl %al, %esi
movq %r14, %rdi
movq %r15, %rdx
callq 0x7350
movq %r15, %rdi
movq %r14, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x5586
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5546
jmp 0x5ef3
leaq 0x13193(%rip), %rsi     # 0x1872e
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5a3d
leaq 0x12ea3(%rip), %rsi     # 0x18457
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5d9e
leaq 0x12ca6(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x604d
leaq 0x12cb2(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x560d
leaq 0x12ca6(%rip), %rsi     # 0x182a1
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
jne 0x6cca
cmpq $0x0, 0x70(%rsp)
je 0x5662
movq 0x1a9d4(%rip), %rdi     # 0x1fff0
leaq 0x12ca1(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a9b2(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x12d2c(%rip), %rsi     # 0x18379
movl $0x33, %edx
movq %rax, %rdi
callq 0x42f0
movq %r14, %rdi
callq 0x4130
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
leaq 0x12ba5(%rip), %rdx     # 0x18220
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x73d0
leaq 0x40(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x73d0
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x56dc
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7c0(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x56fd
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x12fbb(%rip), %rdx     # 0x186bf
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x73d0
movq %rsp, %rdi
leaq 0x128(%rsp), %rbx
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x5759
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5776
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x156fc
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x75e4
leaq 0x1a539(%rip), %rax     # 0x1fcd8
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x15d28
leaq 0x7b0(%rsp), %rdi
callq 0x7480
leaq 0x128(%rsp), %rdi
callq 0x7480
jmp 0x5eca
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx), %rbx
decq %rbx
cmpq %rax, %rbx
je 0x631e
leaq 0x138(%rsp), %rbp
leaq 0x128(%rsp), %r14
leaq 0x20(%rsp), %r15
movb (%rbx), %al
cmpb $0x2e, %al
je 0x5b1e
movsbl %al, %esi
movq %r14, %rdi
movq %r15, %rdx
callq 0x7350
movq %r15, %rdi
movq %r14, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5863
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5823
jmp 0x631e
leaq 0x12eb6(%rip), %rsi     # 0x1872e
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5b8c
movq 0x1a75f(%rip), %rdi     # 0x1fff0
leaq 0x1292f(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1a73d(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x12919(%rip), %rsi     # 0x181db
movl $0x44, %edx
movq %rax, %rdi
callq 0x42f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41b0
jmp 0x5b9d
movq %rcx, %r13
movq %rcx, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movb $0x0, 0x30(%rsp)
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
leaq (%rax,%rcx), %rbx
decq %rbx
cmpq %rax, %rbx
je 0x6809
leaq 0x138(%rsp), %rbp
leaq 0x12963(%rip), %r14     # 0x1829c
leaq 0x20(%rsp), %r15
leaq 0x128(%rsp), %r12
movb (%rbx), %al
cmpb $0x2e, %al
jne 0x596f
movq %r15, %rdi
movq %r14, %rsi
callq 0x40d0
testl %eax, %eax
jne 0x61e2
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x7350
jmp 0x597d
movsbl %al, %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x7350
movq %r15, %rdi
movq %r12, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x59a5
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5946
jmp 0x6809
leaq 0x12a9d(%rip), %rsi     # 0x18457
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5ee1
movq 0x1a61d(%rip), %rdi     # 0x1fff0
leaq 0x127ed(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1a5fb(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x12824(%rip), %rsi     # 0x18228
movl $0x45, %edx
movq %rax, %rdi
callq 0x42f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41b0
jmp 0x5ef3
cmpq $0x0, 0x70(%rsp)
je 0x5a92
movq 0x1a5a4(%rip), %rdi     # 0x1fff0
leaq 0x12871(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a582(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x12868(%rip), %rsi     # 0x182e5
movl $0x30, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
movq %r13, %rax
subq (%rsp), %rax
movq %rax, 0x8(%rsp)
movb $0x0, (%r13)
movq (%rsp), %rsi
leaq 0x128(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
callq 0x76e4
leaq 0x1275a(%rip), %rsi     # 0x18220
leaq 0x128(%rsp), %rdi
callq 0x4530
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0x128(%rsp), %rdi
callq 0x40e0
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x612a
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x6131
leaq 0x1274e(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x6274
leaq 0x12734(%rip), %rdx     # 0x18272
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
movq 0x128(%rsp), %rdi
leaq 0x12e83(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x62a2
movq %rax, %r14
leaq 0x126fe(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x43b0
movq %r14, %rdi
callq 0x42b0
jmp 0x6301
movq %r12, %rax
subq (%rsp), %rax
movq %rax, 0x8(%rsp)
movb $0x0, (%r12)
leaq 0x138(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0x76e4
leaq 0x12656(%rip), %rsi     # 0x18220
leaq 0x128(%rsp), %rdi
callq 0x4530
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0x128(%rsp), %rdi
callq 0x40e0
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5c1b
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x5c22
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c57
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x8c2e
leaq 0x19d82(%rip), %rax     # 0x1f9f0
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8c2e
leaq 0x19dad(%rip), %rax     # 0x1fa40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb806
leaq 0x7b0(%rsp), %rdi
callq 0x8dde
leaq 0x128(%rsp), %rdi
callq 0x8dde
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x5ce5
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x5cfc
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xf0(%rsp), %rdi
callq 0x777a
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x5d2e
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x5d53
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x5d6e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x5d8a
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42d0
xorl %eax, %eax
addq $0xe38, %rsp            # imm = 0xE38
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x70(%rsp)
je 0x5df3
movq 0x1a243(%rip), %rdi     # 0x1fff0
leaq 0x12510(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a221(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x12538(%rip), %rsi     # 0x18316
movl $0x31, %edx
movq %rax, %rdi
callq 0x42f0
movq %r14, %rdi
callq 0x4130
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
leaq 0x12414(%rip), %rdx     # 0x18220
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x40(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x73d0
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5e53
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x74ba
leaq 0x19ce6(%rip), %rax     # 0x1fb50
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x74ba
leaq 0x19cf9(%rip), %rax     # 0x1fb88
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x1345e
leaq 0x7b0(%rsp), %rdi
callq 0x124e4
leaq 0x128(%rsp), %rdi
callq 0x124e4
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x676d
jmp 0x677a
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0x76e4
leaq 0x12301(%rip), %rsi     # 0x18220
leaq 0x128(%rsp), %rdi
callq 0x4530
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0x128(%rsp), %rdi
callq 0x40e0
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5f70
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x5f77
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x5fac
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x74ba
leaq 0x19b8d(%rip), %rax     # 0x1fb50
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x74ba
leaq 0x19ba0(%rip), %rax     # 0x1fb88
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x1345e
leaq 0x7b0(%rsp), %rdi
callq 0x124e4
leaq 0x128(%rsp), %rdi
callq 0x124e4
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x603a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
jne 0x5cef
jmp 0x5cfc
cmpq $0x0, 0x70(%rsp)
je 0x60a2
movq 0x19f94(%rip), %rdi     # 0x1fff0
leaq 0x12261(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x19f72(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x122bb(%rip), %rsi     # 0x18348
movl $0x30, %edx
movq %rax, %rdi
callq 0x42f0
movq %r14, %rdi
callq 0x4130
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
leaq 0x12165(%rip), %rdx     # 0x18220
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x73d0
leaq 0x12183(%rip), %rsi     # 0x18272
leaq 0x128(%rsp), %rdi
callq 0x4530
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6616
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x661d
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6166
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x8c2e
leaq 0x19873(%rip), %rax     # 0x1f9f0
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8c2e
leaq 0x1989e(%rip), %rax     # 0x1fa40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb806
leaq 0x7b0(%rsp), %rdi
callq 0x8dde
leaq 0x128(%rsp), %rdi
callq 0x8dde
jmp 0x6763
leaq 0x120af(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x628b
leaq 0x1209f(%rip), %rsi     # 0x182a1
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x628b
leaq 0x12080(%rip), %rdx     # 0x18297
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x12072(%rip), %rdx     # 0x182a0
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
movq 0x128(%rsp), %rdi
leaq 0x12793(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x6792
movq %rax, %r14
leaq 0x12033(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x43b0
jmp 0x67c3
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
jmp 0x631e
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
jmp 0x6809
movq 0x19d47(%rip), %rdi     # 0x1fff0
leaq 0x11f17(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x19d25(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x11f9d(%rip), %rsi     # 0x18277
movl $0x1b, %edx
movq %rax, %rdi
callq 0x42f0
movq %r14, %rdi
callq 0x4130
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x631e
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xb8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x76e4
leaq 0x11ed6(%rip), %rsi     # 0x18220
leaq 0xa8(%rsp), %rdi
callq 0x4530
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xa8(%rsp), %rdi
callq 0x40e0
leaq 0x7c0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x63a4
movq %rdx, 0x7b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x7c0(%rsp)
jmp 0x63ab
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x7b0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x122ee(%rip), %rsi     # 0x186bf
callq 0x4530
leaq 0x138(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6407
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x640f
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x128(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x40e0
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6464
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x646b
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x64a0
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x64bd
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x64da
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7b0(%rsp), %rdi
movq %r15, (%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
callq 0x76e4
leaq 0x121c2(%rip), %rsi     # 0x186bf
leaq 0x7b0(%rsp), %rdi
callq 0x4530
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x7b0(%rsp), %rdi
callq 0x40e0
movq %r12, 0x128(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x654d
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x6555
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x128(%rsp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x6597
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x65b4
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x75e4
leaq 0x1963d(%rip), %rax     # 0x1fc08
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x75e4
leaq 0x19650(%rip), %rax     # 0x1fc40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x14b9a
jmp 0x6ae7
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6652
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7c0(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x6673
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x12045(%rip), %rdx     # 0x186bf
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x742a
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x73d0
movq %rsp, %rdi
leaq 0x128(%rsp), %rbx
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x66cf
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x66ec
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x75e4
leaq 0x19505(%rip), %rax     # 0x1fc08
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x75e4
leaq 0x19518(%rip), %rax     # 0x1fc40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x14b9a
leaq 0x7b0(%rsp), %rdi
callq 0x7480
leaq 0x128(%rsp), %rdi
callq 0x7480
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x677a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
jne 0x5cef
jmp 0x5cfc
movq 0x7b0(%rsp), %rdi
leaq 0x1223f(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x6b2b
movq %rax, %r14
leaq 0x11ae8(%rip), %rsi     # 0x182a1
leaq 0x20(%rsp), %rdi
callq 0x43b0
movq %r14, %rdi
callq 0x42b0
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x67ec
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6809
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x76e4
leaq 0x119ea(%rip), %rsi     # 0x18220
leaq 0xa8(%rsp), %rdi
callq 0x4530
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xa8(%rsp), %rdi
callq 0x40e0
leaq 0x7c0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6890
movq %rdx, 0x7b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x7c0(%rsp)
jmp 0x6897
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x7b0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x11e02(%rip), %rsi     # 0x186bf
callq 0x4530
leaq 0x138(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x68f2
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x68f9
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
leaq 0x128(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x40e0
leaq 0x50(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x694e
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x6955
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x698a
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x69a7
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x69c4
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7b0(%rsp), %rdi
movq %r15, (%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
callq 0x76e4
leaq 0x11cd8(%rip), %rsi     # 0x186bf
leaq 0x7b0(%rsp), %rdi
callq 0x4530
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x7b0(%rsp), %rdi
callq 0x40e0
movq %rbp, 0x128(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6a37
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x6a3e
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
leaq 0x128(%rsp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x6a80
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x6a9d
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x156fc
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x75e4
leaq 0x19212(%rip), %rax     # 0x1fcd8
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x15d28
leaq 0x7b0(%rsp), %rdi
callq 0x7480
leaq 0x128(%rsp), %rdi
callq 0x7480
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x6b18
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x5cef
jmp 0x5cfc
movq 0x194be(%rip), %rdi     # 0x1fff0
leaq 0x1168e(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1949c(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x11742(%rip), %rsi     # 0x182a5
movl $0x1e, %edx
movq %rax, %rdi
callq 0x42f0
movq %r14, %rdi
callq 0x4130
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
jmp 0x67cb
movq 0x1945a(%rip), %rdi     # 0x1fff0
leaq 0x115b8(%rip), %rsi     # 0x18155
movl $0x39, %edx
callq 0x42f0
movq 0x19442(%rip), %rdi     # 0x1fff0
callq 0x4130
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
movq 0x19426(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rdi
callq 0x4130
movl $0x1, %edi
callq 0x4320
movq 0x19408(%rip), %rdi     # 0x1fff0
leaq 0x115a0(%rip), %rsi     # 0x1818f
movl $0x37, %edx
callq 0x42f0
movq 0x193f0(%rip), %rdi     # 0x1fff0
callq 0x4130
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
movq 0x193d4(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rdi
callq 0x4130
movl $0x2, %edi
callq 0x4320
movq 0x193b6(%rip), %rdi     # 0x1fff0
leaq 0x117e8(%rip), %rsi     # 0x18429
movl $0x27, %edx
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x19395(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x11795(%rip), %rsi     # 0x183ff
movl $0x1d, %edx
movq %rax, %rdi
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rbx, %rdi
callq 0x42f0
movq %rax, %rbx
leaq 0x1178a(%rip), %rsi     # 0x1841d
movl $0xb, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
movl $0x4, %edi
callq 0x4320
leaq 0x11798(%rip), %rdi     # 0x18451
callq 0x4180
leaq 0x1178c(%rip), %rdi     # 0x18451
callq 0x43e0
cmpq $0x0, 0x70(%rsp)
jne 0x6d4c
movq 0x19317(%rip), %rdi     # 0x1fff0
leaq 0x116cd(%rip), %rsi     # 0x183ad
movl $0x1f, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x192f5(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x116c3(%rip), %rsi     # 0x183cd
movl $0x15, %edx
movq %rax, %rdi
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x42f0
movq %rax, %rbx
leaq 0x116b1(%rip), %rsi     # 0x183e3
movl $0x1b, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
jmp 0x5460
movq 0x1929d(%rip), %rdi     # 0x1fff0
leaq 0x11653(%rip), %rsi     # 0x183ad
movl $0x1f, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1927b(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x11649(%rip), %rsi     # 0x183cd
movl $0x15, %edx
movq %rax, %rdi
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x42f0
movq %rax, %rbx
leaq 0x11653(%rip), %rsi     # 0x183ff
movl $0x1d, %edx
movq %rax, %rdi
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rbx, %rdi
callq 0x42f0
movq %rax, %rbx
leaq 0x11648(%rip), %rsi     # 0x1841d
movl $0xb, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
jmp 0x6ca8
jmp 0x6df3
jmp 0x6df3
movq %rax, %rbx
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7005
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7005
jmp 0x7002
jmp 0x7257
jmp 0x7002
jmp 0x7257
jmp 0x7257
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x7480
jmp 0x6e4e
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x7480
jmp 0x6fbd
jmp 0x6fba
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x6fbd
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6fbd
jmp 0x6fba
jmp 0x6f48
jmp 0x6f6a
jmp 0x7296
jmp 0x7296
jmp 0x7274
jmp 0x7257
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x124e4
jmp 0x6ec6
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x124e4
jmp 0x6f31
jmp 0x6f2e
jmp 0x6fd4
jmp 0x7296
jmp 0x7296
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x7480
jmp 0x6efb
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x7480
jmp 0x6f31
jmp 0x6f2e
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6f31
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6f31
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x6fcb
jmp 0x7299
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6f6d
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6f6d
movq %rax, %rbx
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7299
movq 0x7c0(%rsp), %rsi
jmp 0x6ff0
jmp 0x7296
jmp 0x7296
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x8dde
jmp 0x6fab
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x8dde
jmp 0x6fbd
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x7299
movq 0x50(%rsp), %rsi
jmp 0x6ff0
jmp 0x6fd4
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7299
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7299
jmp 0x7296
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x725a
movq 0x138(%rsp), %rsi
jmp 0x7166
jmp 0x70a2
jmp 0x70b4
jmp 0x70ec
jmp 0x70ca
jmp 0x70ca
jmp 0x70ec
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7063
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7063
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x7087
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7087
jmp 0x7084
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x715e
jmp 0x725a
jmp 0x7257
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x7480
jmp 0x70b7
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x7480
jmp 0x70ef
jmp 0x70ec
jmp 0x70ca
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x70ef
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x70ef
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x725a
movq 0x50(%rsp), %rsi
jmp 0x7166
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x7129
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7129
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x714d
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x714d
jmp 0x714a
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x725a
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x725a
jmp 0x7257
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x124e4
jmp 0x718d
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x124e4
jmp 0x719f
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x7277
movq 0x50(%rsp), %rsi
jmp 0x71d2
jmp 0x71b6
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x7277
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7277
jmp 0x7274
jmp 0x7274
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x8dde
jmp 0x71fe
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x8dde
jmp 0x7210
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x7286
movq 0x50(%rsp), %rsi
jmp 0x723b
jmp 0x7223
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x7286
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7286
jmp 0x7283
jmp 0x7283
jmp 0x7257
jmp 0x7257
jmp 0x72b7
movq %rax, %rbx
jmp 0x72ec
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x72a8
jmp 0x72ba
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x72ba
movl %ebp, (%r14)
jmp 0x72ba
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
jne 0x72a8
jmp 0x72ba
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
jne 0x72a8
jmp 0x72ba
jmp 0x7296
jmp 0x7296
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x72ba
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x72ba
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x777a
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x72ec
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x7311
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x732c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x7348
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x44e0