// File: /workspace/github_cpp_makefile_star2_O1/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 0x12fc9(%rip), %rsi     # 0x1807f
leaq 0x13097(%rip), %rdx     # 0x18154
leaq 0xd0(%rsp), %rdi
callq 0x7b72
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
xorl %r9d, %r9d
movl $0x73, %eax
xorl %edx, %edx
divq %rdi
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x5171
movq (%rax), %r8
cmpb $0x73, 0x8(%r8)
movq %rax, %r9
je 0x5171
movq %r8, %r10
movq (%r8), %r8
testq %r8, %r8
je 0x516e
movsbq 0x8(%r8), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
movl $0x0, %r9d
cmpq %rcx, %rdx
jne 0x5171
movq %r10, %r9
cmpb $0x73, %sil
jne 0x5140
jmp 0x5171
xorl %r9d, %r9d
testq %r9, %r9
je 0x517b
movq (%r9), %rbx
jmp 0x517d
xorl %ebx, %ebx
testq %rbx, %rbx
je 0x6c4a
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 0x6c9c
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x6ca8
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x6ca8
addq $0x10, %rbx
testl %ecx, %ecx
jne 0x51df
movl %ebp, (%r14)
cltq
movq %rax, 0x60(%rsp)
leaq 0x88(%rsp), %rdi
movq %rbx, %rsi
callq 0x4160
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdi
xorl %r9d, %r9d
movl $0x69, %eax
xorl %edx, %edx
divq %rdi
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x525f
movq (%rax), %r8
cmpb $0x69, 0x8(%r8)
movq %rax, %r9
je 0x525f
movq %r8, %r10
movq (%r8), %r8
testq %r8, %r8
je 0x525c
movsbq 0x8(%r8), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
movl $0x0, %r9d
cmpq %rcx, %rdx
jne 0x525f
movq %r10, %r9
cmpb $0x69, %sil
jne 0x522e
jmp 0x525f
xorl %r9d, %r9d
testq %r9, %r9
je 0x5269
movq (%r9), %rsi
jmp 0x526b
xorl %esi, %esi
testq %rsi, %rsi
je 0x6cb4
addq $0x10, %rsi
movq %rsp, %rdi
callq 0x4160
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdi
xorl %r9d, %r9d
movl $0x74, %eax
xorl %edx, %edx
divq %rdi
movq %rdx, %rcx
movl %ecx, %eax
movq (%rsi,%rax,8), %rax
testq %rax, %rax
je 0x52e9
movq (%rax), %r8
cmpb $0x74, 0x8(%r8)
movq %rax, %r9
je 0x52e9
movq %r8, %r10
movq (%r8), %r8
testq %r8, %r8
je 0x52e6
movsbq 0x8(%r8), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
movl $0x0, %r9d
cmpq %rcx, %rdx
jne 0x52e9
movq %r10, %r9
cmpb $0x74, %sil
jne 0x52b8
jmp 0x52e9
xorl %r9d, %r9d
testq %r9, %r9
je 0x52f3
movq (%r9), %rsi
jmp 0x52f5
xorl %esi, %esi
testq %rsi, %rsi
je 0x530a
addq $0x10, %rsi
leaq 0x68(%rsp), %rdi
callq 0x4160
jmp 0x5324
leaq 0x68(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x13813(%rip), %rcx     # 0x18b2d
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x4430
leaq 0x13552(%rip), %rsi     # 0x1887d
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x54a8
leaq 0x12edf(%rip), %rsi     # 0x18223
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5546
leaq 0x12f11(%rip), %rsi     # 0x1826e
leaq 0x68(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x581d
leaq 0x12f1d(%rip), %rsi     # 0x18293
leaq 0x68(%rsp), %rdi
callq 0x40d0
leaq 0x30(%rsp), %rcx
testl %eax, %eax
je 0x5938
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 0x5446
leaq 0x138(%rsp), %rbp
leaq (%rcx,%rax), %r13
decq %r13
leaq 0x12ecd(%rip), %r14     # 0x1829c
leaq 0x20(%rsp), %r15
leaq 0x128(%rsp), %r12
cmpb $0x2e, (%rbx)
jne 0x5404
movq %r15, %rdi
movq %r14, %rsi
callq 0x40d0
testl %eax, %eax
jne 0x55d2
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x738c
jmp 0x5412
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x738c
movq %r15, %rdi
movq %r12, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x543a
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
decq %r13
cmpq (%rsp), %rbx
jne 0x53dc
cmpq $0x0, 0x70(%rsp)
jne 0x6bcb
movq 0x1ab97(%rip), %rdi     # 0x1fff0
leaq 0x12fc9(%rip), %rsi     # 0x18429
movl $0x27, %edx
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x1ab76(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x12f5a(%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 0x5bd9
leaq 0x138(%rsp), %rbp
leaq (%rcx,%rax), %r12
decq %r12
leaq 0x128(%rsp), %rbx
leaq 0x20(%rsp), %r14
cmpb $0x2e, (%r13)
je 0x58ae
movsbl (%r13), %esi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x738c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5535
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %r13
decq %r12
cmpq (%rsp), %r13
jne 0x54f2
jmp 0x5bd9
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x5f2f
addq (%rsp), %rbx
leaq 0x138(%rsp), %r13
leaq 0x128(%rsp), %r14
leaq 0x20(%rsp), %r15
cmpb $0x2e, (%rbx)
je 0x59ef
movsbl (%rbx), %esi
movq %r14, %rdi
movq %r15, %rdx
callq 0x738c
movq %r15, %rdi
movq %r14, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x55c4
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5585
jmp 0x5f2f
leaq 0x13155(%rip), %rsi     # 0x1872e
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5a79
leaq 0x12e65(%rip), %rsi     # 0x18457
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5dda
leaq 0x12c68(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x6089
leaq 0x12c74(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x564b
leaq 0x12c68(%rip), %rsi     # 0x182a1
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
jne 0x6d06
cmpq $0x0, 0x70(%rsp)
je 0x56a0
movq 0x1a996(%rip), %rdi     # 0x1fff0
leaq 0x12c63(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a974(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x12cee(%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 0x12b67(%rip), %rdx     # 0x18220
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x740c
leaq 0x40(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x740c
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x571a
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7c0(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x573b
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x12f7d(%rip), %rdx     # 0x186bf
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x740c
movq %rsp, %rdi
leaq 0x128(%rsp), %rbx
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x5797
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x57b4
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x158a6
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7620
leaq 0x1a4fb(%rip), %rax     # 0x1fcd8
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x15ed2
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
leaq 0x128(%rsp), %rdi
callq 0x74bc
jmp 0x5f06
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 0x635a
leaq 0x138(%rsp), %rbp
leaq 0x128(%rsp), %r14
leaq 0x20(%rsp), %r15
cmpb $0x2e, (%rbx)
je 0x5b5a
movsbl (%rbx), %esi
movq %r14, %rdi
movq %r15, %rdx
callq 0x738c
movq %r15, %rdi
movq %r14, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x58a0
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5861
jmp 0x635a
leaq 0x12e79(%rip), %rsi     # 0x1872e
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5bc8
movq 0x1a722(%rip), %rdi     # 0x1fff0
leaq 0x128f2(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1a700(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x128dc(%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 0x5bd9
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 0x6845
leaq 0x138(%rsp), %rbp
leaq 0x12926(%rip), %r14     # 0x1829c
leaq 0x20(%rsp), %r15
leaq 0x128(%rsp), %r12
cmpb $0x2e, (%rbx)
jne 0x59ab
movq %r15, %rdi
movq %r14, %rsi
callq 0x40d0
testl %eax, %eax
jne 0x621e
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x738c
jmp 0x59b9
movsbl (%rbx), %esi
movq %r12, %rdi
movq %r15, %rdx
callq 0x738c
movq %r15, %rdi
movq %r12, %rsi
callq 0x4330
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x59e1
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
decq %rbx
cmpq (%rsp), %rbx
jne 0x5983
jmp 0x6845
leaq 0x12a61(%rip), %rsi     # 0x18457
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x5f1d
movq 0x1a5e1(%rip), %rdi     # 0x1fff0
leaq 0x127b1(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1a5bf(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x127e8(%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 0x5f2f
cmpq $0x0, 0x70(%rsp)
je 0x5ace
movq 0x1a568(%rip), %rdi     # 0x1fff0
leaq 0x12835(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a546(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x1282c(%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 0x7720
leaq 0x1271e(%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 0x6166
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x616d
leaq 0x12712(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x62b0
leaq 0x126f8(%rip), %rdx     # 0x18272
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
movq 0x128(%rsp), %rdi
leaq 0x12e47(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x62de
movq %rax, %r14
leaq 0x126c2(%rip), %rsi     # 0x18273
leaq 0x20(%rsp), %rdi
callq 0x43b0
movq %r14, %rdi
callq 0x42b0
jmp 0x633d
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 0x7720
leaq 0x1261a(%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 0x5c57
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x5c5e
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 0x5c93
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x8ca6
leaq 0x19d46(%rip), %rax     # 0x1f9f0
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8ca6
leaq 0x19d71(%rip), %rax     # 0x1fa40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb854
leaq 0x7b0(%rsp), %rdi
callq 0x8e56
leaq 0x128(%rsp), %rdi
callq 0x8e56
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x5d21
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x5d38
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xf0(%rsp), %rdi
callq 0x77b0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x5d6a
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x5d8f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x5daa
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x5dc6
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 0x5e2f
movq 0x1a207(%rip), %rdi     # 0x1fff0
leaq 0x124d4(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x1a1e5(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x124fc(%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 0x123d8(%rip), %rdx     # 0x18220
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x40(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x740c
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5e8f
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x74f6
leaq 0x19caa(%rip), %rax     # 0x1fb50
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x74f6
leaq 0x19cbd(%rip), %rax     # 0x1fb88
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x13608
leaq 0x7b0(%rsp), %rdi
callq 0x1267c
leaq 0x128(%rsp), %rdi
callq 0x1267c
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x67a9
jmp 0x67b6
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 0x7720
leaq 0x122c5(%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 0x5fac
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x5fb3
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 0x5fe8
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x74f6
leaq 0x19b51(%rip), %rax     # 0x1fb50
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x74f6
leaq 0x19b64(%rip), %rax     # 0x1fb88
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x13608
leaq 0x7b0(%rsp), %rdi
callq 0x1267c
leaq 0x128(%rsp), %rdi
callq 0x1267c
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x6076
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
jne 0x5d2b
jmp 0x5d38
cmpq $0x0, 0x70(%rsp)
je 0x60de
movq 0x19f58(%rip), %rdi     # 0x1fff0
leaq 0x12225(%rip), %rsi     # 0x182c4
movl $0x20, %edx
callq 0x42f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x19f36(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x1227f(%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 0x12129(%rip), %rdx     # 0x18220
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x740c
leaq 0x12147(%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 0x6652
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x6659
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 0x61a2
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x8ca6
leaq 0x19837(%rip), %rax     # 0x1f9f0
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8ca6
leaq 0x19862(%rip), %rax     # 0x1fa40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb854
leaq 0x7b0(%rsp), %rdi
callq 0x8e56
leaq 0x128(%rsp), %rdi
callq 0x8e56
jmp 0x679f
leaq 0x12073(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x62c7
leaq 0x12063(%rip), %rsi     # 0x182a1
leaq 0x20(%rsp), %rdi
callq 0x40d0
testl %eax, %eax
je 0x62c7
leaq 0x12044(%rip), %rdx     # 0x18297
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x12036(%rip), %rdx     # 0x182a0
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
movq 0x128(%rsp), %rdi
leaq 0x12757(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x67ce
movq %rax, %r14
leaq 0x11ff7(%rip), %rsi     # 0x18298
leaq 0x20(%rsp), %rdi
callq 0x43b0
jmp 0x67ff
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
jmp 0x635a
movq %rsp, %rdi
movq (%rdi), %rdx
addq 0x8(%rdi), %rdx
movq %rbx, %rsi
callq 0x4080
jmp 0x6845
movq 0x19d0b(%rip), %rdi     # 0x1fff0
leaq 0x11edb(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x19ce9(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x11f61(%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 0x635a
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 0x7720
leaq 0x11e9a(%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 0x63e0
movq %rdx, 0x7b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x7c0(%rsp)
jmp 0x63e7
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 0x122b2(%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 0x6443
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x644b
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 0x64a0
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x64a7
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 0x64dc
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x64f9
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6516
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 0x7720
leaq 0x12186(%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 0x6589
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x6591
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 0x65d3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x65f0
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x7620
leaq 0x19601(%rip), %rax     # 0x1fc08
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7620
leaq 0x19614(%rip), %rax     # 0x1fc40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x14d44
jmp 0x6b23
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 0x668e
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x7c0(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x66af
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x12009(%rip), %rdx     # 0x186bf
leaq 0x7b0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7466
leaq 0x128(%rsp), %rdi
leaq 0x7b0(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x740c
movq %rsp, %rdi
leaq 0x128(%rsp), %rbx
movq %rbx, %rsi
callq 0x4330
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x670b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x6728
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x7620
leaq 0x194c9(%rip), %rax     # 0x1fc08
addq $0x10, %rax
movq %rax, 0x128(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7620
leaq 0x194dc(%rip), %rax     # 0x1fc40
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x14d44
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
leaq 0x128(%rsp), %rdi
callq 0x74bc
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x67b6
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
jne 0x5d2b
jmp 0x5d38
movq 0x7b0(%rsp), %rdi
leaq 0x12203(%rip), %rsi     # 0x189e0
callq 0x4300
testq %rax, %rax
je 0x6b67
movq %rax, %r14
leaq 0x11aac(%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 0x6828
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6845
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 0x7720
leaq 0x119ae(%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 0x68cc
movq %rdx, 0x7b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x7c0(%rsp)
jmp 0x68d3
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 0x11dc6(%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 0x692e
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x6935
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 0x698a
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x6991
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 0x69c6
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x69e3
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x6a00
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 0x7720
leaq 0x11c9c(%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 0x6a73
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x6a7a
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 0x6abc
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x6ad9
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x128(%rsp), %rdi
movq %rsp, %rsi
callq 0x158a6
leaq 0x7b0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7620
leaq 0x191d6(%rip), %rax     # 0x1fcd8
addq $0x10, %rax
leaq 0x7b0(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x128(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x15ed2
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
leaq 0x128(%rsp), %rdi
callq 0x74bc
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x6b54
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x5d2b
jmp 0x5d38
movq 0x19482(%rip), %rdi     # 0x1fff0
leaq 0x11652(%rip), %rsi     # 0x181c7
movl $0x13, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x19460(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %r14
leaq 0x11706(%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 0x6807
movq 0x1941e(%rip), %rdi     # 0x1fff0
leaq 0x11850(%rip), %rsi     # 0x18429
movl $0x27, %edx
callq 0x42f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x193fd(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x117fd(%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 0x117f2(%rip), %rsi     # 0x1841d
movl $0xb, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
movl $0x4, %edi
callq 0x4320
movq 0x1939f(%rip), %rdi     # 0x1fff0
leaq 0x114fd(%rip), %rsi     # 0x18155
movl $0x39, %edx
callq 0x42f0
movq 0x19387(%rip), %rdi     # 0x1fff0
callq 0x4130
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
movq 0x1936b(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rdi
callq 0x4130
movl $0x1, %edi
callq 0x4320
leaq 0x117ae(%rip), %rdi     # 0x18451
callq 0x4180
leaq 0x117a2(%rip), %rdi     # 0x18451
callq 0x43e0
movq 0x19335(%rip), %rdi     # 0x1fff0
leaq 0x114cd(%rip), %rsi     # 0x1818f
movl $0x37, %edx
callq 0x42f0
movq 0x1931d(%rip), %rdi     # 0x1fff0
callq 0x4130
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
movq 0x19301(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rdi
callq 0x4130
movl $0x2, %edi
callq 0x4320
cmpq $0x0, 0x70(%rsp)
jne 0x6d88
movq 0x192db(%rip), %rdi     # 0x1fff0
leaq 0x11691(%rip), %rsi     # 0x183ad
movl $0x1f, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x192b9(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x11687(%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 0x11675(%rip), %rsi     # 0x183e3
movl $0x1b, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
jmp 0x549e
movq 0x19261(%rip), %rdi     # 0x1fff0
leaq 0x11617(%rip), %rsi     # 0x183ad
movl $0x1f, %edx
callq 0x42f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1923f(%rip), %rdi     # 0x1fff0
callq 0x42f0
movq %rax, %rbx
leaq 0x1160d(%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 0x11617(%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 0x1160c(%rip), %rsi     # 0x1841d
movl $0xb, %edx
movq %rax, %rdi
callq 0x42f0
movq %rbx, %rdi
callq 0x4130
jmp 0x6c40
jmp 0x6e2f
jmp 0x6e2f
movq %rax, %rbx
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7041
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7041
jmp 0x703e
jmp 0x7293
jmp 0x703e
jmp 0x7293
jmp 0x7293
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
jmp 0x6e8a
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x74bc
jmp 0x6ff9
jmp 0x6ff6
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x6ff9
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6ff9
jmp 0x6ff6
jmp 0x6f84
jmp 0x6fa6
jmp 0x72d7
jmp 0x72d7
jmp 0x72b0
jmp 0x7293
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x1267c
jmp 0x6f02
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x1267c
jmp 0x6f6d
jmp 0x6f6a
jmp 0x7010
jmp 0x72d7
jmp 0x72d7
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
jmp 0x6f37
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x74bc
jmp 0x6f6d
jmp 0x6f6a
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x6f6d
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6f6d
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x7007
jmp 0x72da
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6fa9
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x6fa9
movq %rax, %rbx
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x72da
movq 0x7c0(%rsp), %rsi
jmp 0x702c
jmp 0x72d7
jmp 0x72d7
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x8e56
jmp 0x6fe7
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x8e56
jmp 0x6ff9
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x72da
movq 0x50(%rsp), %rsi
jmp 0x702c
jmp 0x7010
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x72da
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x72da
jmp 0x72d7
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7296
movq 0x138(%rsp), %rsi
jmp 0x71a2
jmp 0x70de
jmp 0x70f0
jmp 0x7128
jmp 0x7106
jmp 0x7106
jmp 0x7128
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %rbp, %rdi
je 0x709f
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x709f
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x70c3
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x70c3
jmp 0x70c0
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x719a
jmp 0x7296
jmp 0x7293
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x74bc
jmp 0x70f3
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x74bc
jmp 0x712b
jmp 0x7128
jmp 0x7106
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x712b
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x712b
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x7296
movq 0x50(%rsp), %rsi
jmp 0x71a2
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x7165
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7165
movq %rax, %rbx
movq 0x7b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x7189
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7189
jmp 0x7186
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7296
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x7296
jmp 0x7293
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x1267c
jmp 0x71c9
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x1267c
jmp 0x71db
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x72b3
movq 0x50(%rsp), %rsi
jmp 0x720e
jmp 0x71f2
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x72b3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x72b3
jmp 0x72b0
jmp 0x72b0
movq %rax, %rbx
leaq 0x7b0(%rsp), %rdi
callq 0x8e56
jmp 0x723a
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x8e56
jmp 0x724c
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r14, %rdi
je 0x72c2
movq 0x50(%rsp), %rsi
jmp 0x7277
jmp 0x725f
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x72c2
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x72c2
jmp 0x72bf
jmp 0x72bf
jmp 0x7293
jmp 0x7293
jmp 0x72d0
movq %rax, %rbx
jmp 0x7328
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x72e9
jmp 0x72f6
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x72f6
movl %ebp, (%r14)
jmp 0x72f6
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
jne 0x72e9
jmp 0x72f6
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
jne 0x72e9
jmp 0x72f6
jmp 0x72d7
movq %rax, %rbx
jmp 0x72f6
jmp 0x72d7
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x72f6
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xf0(%rsp), %rdi
callq 0x77b0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x7328
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x734d
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x7368
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x7384
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x44e0