// File: tonymugen[P]sampleSNPs/varfiles.cpp
// Function: sampFiles::BedFileI::sampleLD(sampFiles::PopIndex const&, unsigned long const&)
void BedFileI::sampleLD(const PopIndex &popID, const uint64_t &n){
	if (n == 0) {
		cerr << "WARNING: zero SNPs requested. Nothing to be done." << endl;
		return;
	}
    if (_varFile.is_open()) {
        _varFile.close();
    }
	if (!_bimFile.is_open()) {
		try {
			string bimName = _fileStub + ".bim";
			_bimFile.open(bimName.c_str(), ios::in);
			if (!_bimFile.is_open()) {
				cerr << "ERROR: failed to open .bim file " << bimName << " for input" << endl;
				exit(2);
			}

		} catch (system_error &error) {
			cerr << "ERROR: cannot open BIM file for input: " << error.code().message() << flush;
			perror(" ");
			exit(1);
		}
	}

	uint64_t N = _numLines(); // have to do this first to set _nCols properly
	if (_nCols != popID.size()) {
		cerr << "Sample size the population index (" << popID.size() << ") not equal to sample size (" << _nCols << ") in the .fam file" << endl;
		exit(5);
	}
	const uint64_t Nbed = (_nCols/4UL) + static_cast<uint64_t>( (_nCols%4UL) > 0UL ); // 4 SNPs/byte plus padding in BED
    uint64_t nSamp      = 2 * n; // n is the number of pairs

    try { // has to be here, because _numLines() closes the file
        _varFile.open(_fileName.c_str(), ios::in | ios::binary);
		if (!_varFile.is_open()) {
			cerr << "ERROR: failed to open .bed file " << _fileName << " for input" << endl;
			exit(2);
		}

        // check the magic bytes and SNP-major status
        char magic[3];
        _varFile.read(magic, 3);
        if ( (magic[0] != static_cast<char>(0x6C)) || (magic[1] != static_cast<char>(0x1B)) ) {
            cerr << "ERROR: binary file " << _fileName << " not recognized as BED" << endl;
            exit(2);
        } else if (magic[2] != static_cast<char>(0x01)){
            cerr << "ERROR: binary file " << _fileName << " not SNP-major. Run a newer version of plink to fix it." << endl;
            exit(3);
        }
    } catch (system_error &error) {
        cerr << "ERROR: cannot open BED file " << _fileName << ": " << error.code().message() << flush;
        perror(" ");
        exit(1);
    }

	const string outName = _fileStub + "_LD.tsv";
	if (nSamp > N) {
		cerr << "ERROR: requested a sample of " << nSamp << " SNPs that is greater than the number of SNPs (" << N << ") in the input file." << endl;
		return;
	} else if (nSamp == N) {
		cerr << "WARNING: the number of sampled SNPs the same as the total number of SNPs in the file. LD will be between neighboring loci." << endl;
		// use neighboring loci
		char *locus1  = new char[Nbed];
		char *locus2  = new char[Nbed];
		uint64_t cumS = 0; // cumulative position in the file
		vector<double> rSq(popID.popNumber());
		vector<double> Dprime(popID.popNumber());
		vector<double> cnt1(popID.popNumber());
		vector<double> cnt2(popID.popNumber());
		string chrID;   // chromosome ID
		uint64_t pos1;  // position of locus1
		uint64_t pos2;  // position of locus2
		string bimLine; // line in the .bim file
		string field;   // single field in the .bim file
		stringstream lineStream;

		ofstream outFile(outName);
		outFile << "ChrID\tpos1\tpos2\tDistance"  << flush;
		for (unsigned short iPop = 1; iPop <= popID.popNumber(); iPop++) {
			outFile << "\trSq_" << iPop << "\tDprime_" << iPop << "\tn1_" << iPop << "\tn2_" << iPop << flush;
		}
		outFile << endl;

		while (nSamp) {
			// first locus in the pair
			_varFile.seekg(cumS*Nbed + 3); // seekg() index is base-0
			_varFile.read(locus1, Nbed);
			getline(_bimFile, bimLine);
			cumS++;
			nSamp--;

			lineStream.str(bimLine); // replaces whatever was there from before
			lineStream >> field;
			chrID = field;
			lineStream >> field >> field >> field;
			pos1 = atoi(field.c_str());

			// second locus
			_varFile.seekg(cumS*Nbed + 3);
			_varFile.read(locus2, Nbed);
			getline(_bimFile, bimLine);
			cumS++;
			nSamp--;

			lineStream.str(bimLine);
			lineStream >> field;
			if (chrID != field) { // if the chromosome number changes, we discard this pair and continue
				continue;
			}
			lineStream >> field >> field >> field;
			pos2 = atoi(field.c_str());
			if (pos2 <= pos1) {
				cerr << "WARNING: second SNP position (" << pos2 << ") no larger than the first (" << pos1 << ") on chromosome " << chrID << ". Skipping this pair without re-trying." << endl;
				continue;
			}
			_ld(locus1, locus2, popID, rSq, Dprime, cnt1, cnt2);
			outFile << chrID << "\t" << pos1 << "\t" << pos2 << "\t" << pos2 - pos1 << flush;
			for (size_t iPop = 0; iPop < popID.popNumber(); iPop++) {
				outFile <<  "\t" << rSq[iPop] << "\t" << Dprime[iPop] << "\t" << cnt1[iPop] << "\t" << cnt2[iPop] << flush;
			}
			outFile << endl;
		}

		delete [] locus1;
		delete [] locus2;
		_varFile.close();
		_bimFile.close();
		outFile.close();
        return;
	}
	// sample loci and calculate LD
	char *locus1  = new char[Nbed];
	char *locus2  = new char[Nbed];
	uint64_t cumS = 0; // cumulative position in the file
	uint64_t S;
	vector<double> rSq(popID.popNumber());
	vector<double> Dprime(popID.popNumber());
	vector<double> cnt1(popID.popNumber());
	vector<double> cnt2(popID.popNumber());
	string chrID;   // chromosome ID
	uint64_t pos1;  // position of locus1
	uint64_t pos2;  // position of locus2
	string bimLine; // line in the .bim file
	string field;   // single field in the .bim file
	stringstream lineStream;

	ofstream outFile(outName);
	outFile << "ChrID\tpos1\tpos2\tDistance"  << flush;
	for (unsigned short iPop = 1; iPop <= popID.popNumber(); iPop++) {
		outFile << "\trSq_" << iPop << "\tDprime_" << iPop << "\tn1_" << iPop << "\tn2_" << iPop << flush;
	}
	outFile << endl;

	RanDraw *snpSamp;  // so that I can catch RanDraw constructor exceptions
	try {
		snpSamp = new RanDraw();
	} catch (string error) {
		cerr << "ERROR: " << error << endl;
		exit(5);
	}

	while (nSamp) {
		// first locus in the pair
		try {
			S = snpSamp->vitter(nSamp, N); // sample the number of SNPs to skip; keep track of the running total
		} catch (string error) {
			cerr << "ERROR: " << error << endl;
			exit(5);
		}
		cumS += S;
		N    -= S + 1;
		_varFile.seekg(cumS*Nbed + 3); // seekg() index is base-0
		_varFile.read(locus1, Nbed);
		cumS++;                        // step up cumS because seekg() will not change it (unlike the getline() that automatially advances)
		while (S) { // skipping S lines in the bim file
			_bimFile.ignore(numeric_limits<streamsize>::max(), '\n');
 			S--;
		}
		getline(_bimFile, bimLine);
		lineStream.str(bimLine); // replaces whatever was there from before
		lineStream >> field;
		chrID = field;
		lineStream >> field >> field >> field;
		pos1 = atoi(field.c_str());
		nSamp--;

		// second locus
		try {
			S = snpSamp->vitter(nSamp, N);
		} catch (string error) {
			cerr << "ERROR: " << error << endl;
			exit(5);
		}
		cumS += S;
		N    -= S + 1;
		_varFile.seekg(cumS*Nbed + 3);
		_varFile.read(locus2, Nbed);
		cumS++;
		while (S) {
			_bimFile.ignore(numeric_limits<streamsize>::max(), '\n');
			S--;
		}
		getline(_bimFile, bimLine);

		lineStream.str(bimLine);
		lineStream >> field;
		if (chrID != field) { // if the chromosome number changes, we discard this pair and start over
			nSamp++;          // back up so that we end up with the correct number of pairs regardless of how many chromosome boundaries we cross
			continue;
		}
		lineStream >> field >> field >> field;
		pos2 = atoi(field.c_str());
		if (pos2 <= pos1) {
			cerr << "WARNING: second SNP position (" << pos2 << ") no larger than the first (" << pos1 << ") on chromosome " << chrID << ". Skipping this pair without re-trying." << endl;
			nSamp--; // will not re-try in this case
			continue;
		}
		_ld(locus1, locus2, popID, rSq, Dprime, cnt1, cnt2);
		outFile << chrID << "\t" << pos1 << "\t" << pos2 << "\t" << pos2 - pos1 << flush;
		for (size_t iPop = 0; iPop < popID.popNumber(); iPop++) {
			outFile <<  "\t" << rSq[iPop] << "\t" << Dprime[iPop] << "\t" << cnt1[iPop] << "\t" << cnt2[iPop] << flush;
		}
		outFile << endl;
		nSamp--;
	}

	delete [] locus1;
	delete [] locus2;
	_varFile.close();
	_bimFile.close();
	outFile.close();

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xfd0, %rsp            # imm = 0xFD0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xaf8(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x14103
movq 0x17f0d(%rip), %rdi     # 0x2bff0
leaq 0xf4c2(%rip), %rsi      # 0x235ac
callq 0x4310
movq %rax, %rdi
movq 0x17eb7(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x16551
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
callq 0x45e0
testb $0x1, %al
jne 0x14119
jmp 0x14129
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
callq 0x4060
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x45e0
testb $0x1, %al
jne 0x14330
movq -0xaf8(%rbp), %rsi
addq $0x668, %rsi            # imm = 0x668
leaq 0xf6c3(%rip), %rdx      # 0x2381c
leaq -0x38(%rbp), %rdi
callq 0x7920
jmp 0x14164
movq -0xaf8(%rbp), %rax
addq $0x458, %rax            # imm = 0x458
movq %rax, -0xb00(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4140
movq -0xb00(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0x42f0
jmp 0x14197
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x45e0
movb %al, -0xb01(%rbp)
jmp 0x141b2
movb -0xb01(%rbp), %al
testb $0x1, %al
jne 0x142f4
jmp 0x141c2
movq 0x17e27(%rip), %rdi     # 0x2bff0
leaq 0xf6d1(%rip), %rsi      # 0x238a1
callq 0x4310
movq %rax, -0xb10(%rbp)
jmp 0x141de
movq -0xb10(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x42e0
movq %rax, -0xb18(%rbp)
jmp 0x141f7
movq -0xb18(%rbp), %rdi
leaq 0xf34f(%rip), %rsi      # 0x23554
callq 0x4310
movq %rax, -0xb20(%rbp)
jmp 0x14213
movq -0xb20(%rbp), %rdi
movq 0x17d8f(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x14228
movl $0x2, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x14255
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x46d8
movl -0x44(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x165d2
movq -0x40(%rbp), %rdi
callq 0x4130
movq %rax, -0x50(%rbp)
movq 0x17d77(%rip), %rdi     # 0x2bff0
leaq 0xf74a(%rip), %rsi      # 0x239ca
callq 0x4310
movq %rax, -0xb28(%rbp)
jmp 0x1428e
movq -0x50(%rbp), %rdi
callq 0x1ee90
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
callq 0x1eeb0
jmp 0x142a5
movq -0xb28(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x42e0
movq %rax, -0xb30(%rbp)
jmp 0x142be
movq -0xb30(%rbp), %rdi
movq 0x17cfc(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x142d3
leaq -0x70(%rbp), %rdi
callq 0x46d8
leaq 0xf517(%rip), %rdi      # 0x237fa
callq 0x42a0
jmp 0x142ea
movl $0x1, %edi
callq 0x4400
leaq -0x38(%rbp), %rdi
callq 0x46d8
jmp 0x1432e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x14322
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x14329
jmp 0x165d2
jmp 0x14330
movq -0xaf8(%rbp), %rdi
callq 0xb9e0
movq %rax, %rcx
movq -0xaf8(%rbp), %rax
movq %rcx, -0x78(%rbp)
movq 0x238(%rax), %rax
movq %rax, -0xb38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f3d0
movq %rax, %rcx
movq -0xb38(%rbp), %rax
cmpq %rcx, %rax
je 0x143ef
movq 0x17c79(%rip), %rdi     # 0x2bff0
leaq 0xf798(%rip), %rsi      # 0x23b16
callq 0x4310
movq %rax, -0xb40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f3d0
movq -0xb40(%rbp), %rdi
movq %rax, %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xf78d(%rip), %rsi      # 0x23b39
callq 0x4310
movq %rax, %rdi
movq -0xaf8(%rbp), %rax
movq 0x238(%rax), %rsi
callq 0x40d0
movq %rax, %rdi
leaq 0xf785(%rip), %rsi      # 0x23b56
callq 0x4310
movq %rax, %rdi
movq 0x17bd0(%rip), %rsi     # 0x2bfb0
callq 0x4350
movl $0x5, %edi
callq 0x4400
movq -0xaf8(%rbp), %rdi
movq 0x238(%rdi), %rcx
movq %rcx, %rax
shrq $0x2, %rax
andl $0x3, %ecx
subq $0x1, %rcx
sbbq $-0x1, %rax
movq %rax, -0x80(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
addq %rax, %rax
movq %rax, -0x88(%rbp)
movq %rdi, %rax
addq $0x8, %rax
movq %rax, -0xb58(%rbp)
addq $0x218, %rdi            # imm = 0x218
callq 0x4140
movq %rax, -0xb50(%rbp)
movl $0x8, %edi
movl $0x4, %esi
callq 0x1ee70
movl %eax, -0xb44(%rbp)
jmp 0x1445c
movl -0xb44(%rbp), %edx
movq -0xb50(%rbp), %rsi
movq -0xb58(%rbp), %rdi
callq 0x42f0
jmp 0x14477
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
callq 0x45e0
movb %al, -0xb59(%rbp)
jmp 0x1448f
movb -0xb59(%rbp), %al
testb $0x1, %al
jne 0x14612
jmp 0x1449f
movq 0x17b4a(%rip), %rdi     # 0x2bff0
leaq 0xf4b5(%rip), %rsi      # 0x23962
callq 0x4310
movq %rax, -0xb68(%rbp)
jmp 0x144bb
movq -0xb68(%rbp), %rdi
movq -0xaf8(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0xb70(%rbp)
jmp 0x144de
movq -0xb70(%rbp), %rdi
leaq 0xf068(%rip), %rsi      # 0x23554
callq 0x4310
movq %rax, -0xb78(%rbp)
jmp 0x144fa
movq -0xb78(%rbp), %rdi
movq 0x17aa8(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x1450f
movl $0x2, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x165d2
movq -0x40(%rbp), %rdi
callq 0x4130
movq %rax, -0x98(%rbp)
movq 0x17aa4(%rip), %rdi     # 0x2bff0
leaq 0xf2ce(%rip), %rsi      # 0x23821
callq 0x4310
movq %rax, -0xb80(%rbp)
jmp 0x14561
movq -0xb80(%rbp), %rdi
movq -0xaf8(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0xb88(%rbp)
jmp 0x14584
movq -0xb88(%rbp), %rdi
leaq 0xf267(%rip), %rsi      # 0x237f9
callq 0x4310
movq %rax, -0xb90(%rbp)
jmp 0x145a0
movq -0x98(%rbp), %rdi
callq 0x1ee90
movq %rax, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x1eeb0
jmp 0x145bd
movq -0xb90(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x42e0
movq %rax, -0xb98(%rbp)
jmp 0x145d9
movq -0xb98(%rbp), %rdi
movq 0x179e1(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x145ee
leaq -0xb8(%rbp), %rdi
callq 0x46d8
leaq 0xf1f9(%rip), %rdi      # 0x237fa
callq 0x42a0
jmp 0x14608
movl $0x1, %edi
callq 0x4400
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
leaq -0x8b(%rbp), %rsi
movl $0x3, %edx
callq 0x4450
jmp 0x14630
movsbl -0x8b(%rbp), %eax
cmpl $0x6c, %eax
jne 0x14648
movsbl -0x8a(%rbp), %eax
cmpl $0x1b, %eax
je 0x146c2
movq 0x179a1(%rip), %rdi     # 0x2bff0
leaq 0xf1e8(%rip), %rsi      # 0x2383e
callq 0x4310
movq %rax, -0xba0(%rbp)
jmp 0x14664
movq -0xba0(%rbp), %rdi
movq -0xaf8(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0xba8(%rbp)
jmp 0x14687
movq -0xba8(%rbp), %rdi
leaq 0xf1bd(%rip), %rsi      # 0x23852
callq 0x4310
movq %rax, -0xbb0(%rbp)
jmp 0x146a3
movq -0xbb0(%rbp), %rdi
movq 0x178ff(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x146b8
movl $0x2, %edi
callq 0x4400
movsbl -0x89(%rbp), %eax
cmpl $0x1, %eax
je 0x14748
movq 0x1791b(%rip), %rdi     # 0x2bff0
leaq 0xf162(%rip), %rsi      # 0x2383e
callq 0x4310
movq %rax, -0xbb8(%rbp)
jmp 0x146ea
movq -0xbb8(%rbp), %rdi
movq -0xaf8(%rbp), %rsi
addq $0x218, %rsi            # imm = 0x218
callq 0x42e0
movq %rax, -0xbc0(%rbp)
jmp 0x1470d
movq -0xbc0(%rbp), %rdi
leaq 0xf14e(%rip), %rsi      # 0x23869
callq 0x4310
movq %rax, -0xbc8(%rbp)
jmp 0x14729
movq -0xbc8(%rbp), %rdi
movq 0x17879(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x1473e
movl $0x3, %edi
callq 0x4400
jmp 0x1474a
jmp 0x1477e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x14772
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x14779
jmp 0x165d2
movq -0xaf8(%rbp), %rsi
addq $0x668, %rsi            # imm = 0x668
leaq -0xd8(%rbp), %rdi
leaq 0xf258(%rip), %rdx      # 0x239f2
callq 0x7920
movq -0x88(%rbp), %rax
cmpq -0x78(%rbp), %rax
jbe 0x1486e
movq 0x17839(%rip), %rdi     # 0x2bff0
leaq 0xee20(%rip), %rsi      # 0x235de
callq 0x4310
movq %rax, -0xbd0(%rbp)
jmp 0x147cc
movq -0xbd0(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x40d0
movq %rax, -0xbd8(%rbp)
jmp 0x147e8
movq -0xbd8(%rbp), %rdi
leaq 0xf0ea(%rip), %rsi      # 0x238e0
callq 0x4310
movq %rax, -0xbe0(%rbp)
jmp 0x14804
movq -0xbe0(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x40d0
movq %rax, -0xbe8(%rbp)
jmp 0x1481d
movq -0xbe8(%rbp), %rdi
leaq 0xee01(%rip), %rsi      # 0x2362c
callq 0x4310
movq %rax, -0xbf0(%rbp)
jmp 0x14839
movq -0xbf0(%rbp), %rdi
movq 0x17769(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x1484e
movl $0x1, -0xdc(%rbp)
jmp 0x16545
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x165c6
movq -0x88(%rbp), %rax
cmpq -0x78(%rbp), %rax
jne 0x154d1
movq 0x1776a(%rip), %rdi     # 0x2bff0
leaq 0xf16d(%rip), %rsi      # 0x239fa
callq 0x4310
movq %rax, -0xbf8(%rbp)
jmp 0x1489b
movq -0xbf8(%rbp), %rdi
movq 0x17707(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x148b0
movq -0x80(%rbp), %rdi
callq 0x4030
movq %rax, -0xc00(%rbp)
jmp 0x148c2
movq -0xc00(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x80(%rbp), %rdi
callq 0x4030
movq %rax, -0xc08(%rbp)
jmp 0x148e2
movq -0xc08(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq $0x0, -0xf8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xc10(%rbp)
jmp 0x1490d
leaq -0x111(%rbp), %rdi
movq %rdi, -0xc18(%rbp)
callq 0x1f3f0
movq -0xc10(%rbp), %rsi
movq -0xc18(%rbp), %rdx
leaq -0x110(%rbp), %rdi
callq 0x1f410
jmp 0x1493c
leaq -0x111(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xc20(%rbp)
jmp 0x1495a
leaq -0x131(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
callq 0x1f3f0
movq -0xc20(%rbp), %rsi
movq -0xc28(%rbp), %rdx
leaq -0x130(%rbp), %rdi
callq 0x1f410
jmp 0x14989
leaq -0x131(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xc30(%rbp)
jmp 0x149a7
leaq -0x151(%rbp), %rdi
movq %rdi, -0xc38(%rbp)
callq 0x1f3f0
movq -0xc30(%rbp), %rsi
movq -0xc38(%rbp), %rdx
leaq -0x150(%rbp), %rdi
callq 0x1f410
jmp 0x149d6
leaq -0x151(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xc40(%rbp)
jmp 0x149f4
leaq -0x171(%rbp), %rdi
movq %rdi, -0xc48(%rbp)
callq 0x1f3f0
movq -0xc40(%rbp), %rsi
movq -0xc48(%rbp), %rdx
leaq -0x170(%rbp), %rdi
callq 0x1f410
jmp 0x14a23
leaq -0x171(%rbp), %rdi
callq 0x1f480
leaq -0x198(%rbp), %rdi
callq 0x44d0
leaq -0x1c8(%rbp), %rdi
callq 0x44d0
leaq -0x1e8(%rbp), %rdi
callq 0x44d0
leaq -0x370(%rbp), %rdi
callq 0x4220
jmp 0x14a61
leaq -0x570(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movl $0x10, %edx
callq 0x4680
jmp 0x14a7b
leaq 0xf0e7(%rip), %rsi      # 0x23b69
leaq -0x570(%rbp), %rdi
callq 0x4310
movq %rax, -0xc50(%rbp)
jmp 0x14a97
movq -0xc50(%rbp), %rdi
movq 0x17523(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x14aac
movw $0x1, -0x572(%rbp)
movzwl -0x572(%rbp), %eax
movq %rax, -0xc60(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xc58(%rbp)
jmp 0x14ad5
movq -0xc60(%rbp), %rax
movq -0xc58(%rbp), %rcx
cmpq %rcx, %rax
ja 0x14ce0
leaq 0xf08f(%rip), %rsi      # 0x23b82
leaq -0x570(%rbp), %rdi
callq 0x4310
movq %rax, -0xc68(%rbp)
jmp 0x14b08
movq -0xc68(%rbp), %rdi
movzwl -0x572(%rbp), %esi
callq 0x45a0
movq %rax, -0xc70(%rbp)
jmp 0x14b24
movq -0xc70(%rbp), %rdi
leaq 0xf056(%rip), %rsi      # 0x23b88
callq 0x4310
movq %rax, -0xc78(%rbp)
jmp 0x14b40
movq -0xc78(%rbp), %rdi
movzwl -0x572(%rbp), %esi
callq 0x45a0
movq %rax, -0xc80(%rbp)
jmp 0x14b5c
movq -0xc80(%rbp), %rdi
leaq 0xf027(%rip), %rsi      # 0x23b91
callq 0x4310
movq %rax, -0xc88(%rbp)
jmp 0x14b78
movq -0xc88(%rbp), %rdi
movzwl -0x572(%rbp), %esi
callq 0x45a0
movq %rax, -0xc90(%rbp)
jmp 0x14b94
movq -0xc90(%rbp), %rdi
leaq 0xeff4(%rip), %rsi      # 0x23b96
callq 0x4310
movq %rax, -0xc98(%rbp)
jmp 0x14bb0
movq -0xc98(%rbp), %rdi
movzwl -0x572(%rbp), %esi
callq 0x45a0
movq %rax, -0xca0(%rbp)
jmp 0x14bcc
movq -0xca0(%rbp), %rdi
movq 0x173ee(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x14be1
jmp 0x14be3
movw -0x572(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x572(%rbp)
jmp 0x14ab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x111(%rbp), %rdi
callq 0x1f480
jmp 0x165c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x154c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x131(%rbp), %rdi
callq 0x1f480
jmp 0x154c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x154b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x151(%rbp), %rdi
callq 0x1f480
jmp 0x154b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x154a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x171(%rbp), %rdi
callq 0x1f480
jmp 0x154a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15478
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1546c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x4520
jmp 0x1546c
movq 0x172c9(%rip), %rsi     # 0x2bfb0
leaq -0x570(%rbp), %rdi
callq 0x4350
jmp 0x14cf5
jmp 0x14cf7
cmpq $0x0, -0x88(%rbp)
je 0x1537c
movq -0xaf8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xca8(%rbp)
movq -0xf8(%rbp), %rsi
movq -0x80(%rbp), %rax
imulq %rax, %rsi
addq $0x3, %rsi
leaq -0x588(%rbp), %rdi
callq 0x1ef20
jmp 0x14d38
movq -0xca8(%rbp), %rdi
movq -0x588(%rbp), %rsi
movq -0x580(%rbp), %rdx
callq 0x4460
jmp 0x14d54
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
movq -0xe8(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x4450
jmp 0x14d71
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
leaq -0x1c8(%rbp), %rsi
callq 0x4080
jmp 0x14d8d
movq -0xf8(%rbp), %rax
incq %rax
movq %rax, -0xf8(%rbp)
movq -0x88(%rbp), %rax
decq %rax
movq %rax, -0x88(%rbp)
leaq -0x370(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x43d0
jmp 0x14dc4
leaq -0x370(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
jmp 0x14dd9
leaq -0x198(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4040
jmp 0x14dee
leaq -0x370(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
movq %rax, -0xcb0(%rbp)
jmp 0x14e0a
movq -0xcb0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
movq %rax, -0xcb8(%rbp)
jmp 0x14e26
movq -0xcb8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
jmp 0x14e3b
leaq -0x1e8(%rbp), %rdi
callq 0x4140
movq %rax, %rdi
callq 0x4540
movl %eax, %ecx
movq -0xaf8(%rbp), %rax
movslq %ecx, %rcx
movq %rcx, -0x1a0(%rbp)
addq $0x8, %rax
movq %rax, -0xcc0(%rbp)
movq -0xf8(%rbp), %rsi
movq -0x80(%rbp), %rax
imulq %rax, %rsi
addq $0x3, %rsi
leaq -0x598(%rbp), %rdi
callq 0x1ef20
jmp 0x14e8e
movq -0xcc0(%rbp), %rdi
movq -0x598(%rbp), %rsi
movq -0x590(%rbp), %rdx
callq 0x4460
jmp 0x14eaa
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
movq -0xf0(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x4450
jmp 0x14ec7
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
leaq -0x1c8(%rbp), %rsi
callq 0x4080
jmp 0x14ee3
movq -0xf8(%rbp), %rax
incq %rax
movq %rax, -0xf8(%rbp)
movq -0x88(%rbp), %rax
decq %rax
movq %rax, -0x88(%rbp)
leaq -0x370(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x43d0
jmp 0x14f1a
leaq -0x370(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
jmp 0x14f2f
leaq -0x198(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1f3a0
testb $0x1, %al
jne 0x14f48
jmp 0x14f4d
jmp 0x14cf7
leaq -0x370(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
movq %rax, -0xcc8(%rbp)
jmp 0x14f69
movq -0xcc8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
movq %rax, -0xcd0(%rbp)
jmp 0x14f85
movq -0xcd0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4470
jmp 0x14f9a
leaq -0x1e8(%rbp), %rdi
callq 0x4140
movq %rax, %rdi
callq 0x4540
cltq
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
cmpq -0x1a0(%rbp), %rax
ja 0x150a9
movq 0x1701e(%rip), %rdi     # 0x2bff0
leaq 0xeac6(%rip), %rsi      # 0x23a9f
callq 0x4310
movq %rax, -0xcd8(%rbp)
jmp 0x14fe7
movq -0xcd8(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x40d0
movq %rax, -0xce0(%rbp)
jmp 0x15003
movq -0xce0(%rbp), %rdi
leaq 0xeaad(%rip), %rsi      # 0x23abe
callq 0x4310
movq %rax, -0xce8(%rbp)
jmp 0x1501f
movq -0xce8(%rbp), %rdi
movq -0x1a0(%rbp), %rsi
callq 0x40d0
movq %rax, -0xcf0(%rbp)
jmp 0x1503b
movq -0xcf0(%rbp), %rdi
leaq 0xea92(%rip), %rsi      # 0x23adb
callq 0x4310
movq %rax, -0xcf8(%rbp)
jmp 0x15057
movq -0xcf8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x42e0
movq %rax, -0xd00(%rbp)
jmp 0x15073
movq -0xd00(%rbp), %rdi
leaq 0xea6b(%rip), %rsi      # 0x23aec
callq 0x4310
movq %rax, -0xd08(%rbp)
jmp 0x1508f
movq -0xd08(%rbp), %rdi
movq 0x16f13(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x150a4
jmp 0x14cf7
movq -0xaf8(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
movq -0x10(%rbp), %rcx
movq %rsp, %rax
leaq -0x170(%rbp), %r8
movq %r8, 0x8(%rax)
leaq -0x150(%rbp), %r8
movq %r8, (%rax)
leaq -0x110(%rbp), %r8
leaq -0x130(%rbp), %r9
callq 0xe020
jmp 0x150ef
leaq -0x570(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x42e0
movq %rax, -0xd10(%rbp)
jmp 0x1510b
movq -0xd10(%rbp), %rdi
leaq 0xe9fb(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd18(%rbp)
jmp 0x15127
movq -0xd18(%rbp), %rdi
movq -0x1a0(%rbp), %rsi
callq 0x40d0
movq %rax, -0xd20(%rbp)
jmp 0x15143
movq -0xd20(%rbp), %rdi
leaq 0xe9c3(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd28(%rbp)
jmp 0x1515f
movq -0xd28(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x40d0
movq %rax, -0xd30(%rbp)
jmp 0x1517b
movq -0xd30(%rbp), %rdi
leaq 0xe98b(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd38(%rbp)
jmp 0x15197
movq -0xd38(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
movq -0x1a0(%rbp), %rax
subq %rax, %rsi
callq 0x40d0
movq %rax, -0xd40(%rbp)
jmp 0x151bd
movq -0xd40(%rbp), %rdi
movq 0x16dfd(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x151d2
movq $0x0, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rax
movq %rax, -0xd50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xd48(%rbp)
jmp 0x151fd
movq -0xd50(%rbp), %rax
movq -0xd48(%rbp), %rcx
cmpq %rcx, %rax
jae 0x15362
leaq 0xe8f9(%rip), %rsi      # 0x23b14
leaq -0x570(%rbp), %rdi
callq 0x4310
movq %rax, -0xd58(%rbp)
jmp 0x15230
movq -0x5a0(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0x1f370
movq -0xd58(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xd60(%rbp)
jmp 0x1525c
movq -0xd60(%rbp), %rdi
leaq 0xe8aa(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd68(%rbp)
jmp 0x15278
movq -0x5a0(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x1f370
movq -0xd68(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xd70(%rbp)
jmp 0x152a4
movq -0xd70(%rbp), %rdi
leaq 0xe862(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd78(%rbp)
jmp 0x152c0
movq -0x5a0(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x1f370
movq -0xd78(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xd80(%rbp)
jmp 0x152ec
movq -0xd80(%rbp), %rdi
leaq 0xe81a(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xd88(%rbp)
jmp 0x15308
movq -0x5a0(%rbp), %rsi
leaq -0x170(%rbp), %rdi
callq 0x1f370
movq -0xd88(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xd90(%rbp)
jmp 0x15334
movq -0xd90(%rbp), %rdi
movq 0x16c86(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x15349
jmp 0x1534b
movq -0x5a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5a0(%rbp)
jmp 0x151dd
movq 0x16c47(%rip), %rsi     # 0x2bfb0
leaq -0x570(%rbp), %rdi
callq 0x4350
jmp 0x15377
jmp 0x14cf7
movq -0xe8(%rbp), %rax
movq %rax, -0xd98(%rbp)
cmpq $0x0, %rax
je 0x1539c
movq -0xd98(%rbp), %rdi
callq 0x4480
movq -0xf0(%rbp), %rax
movq %rax, -0xda0(%rbp)
cmpq $0x0, %rax
je 0x153bc
movq -0xda0(%rbp), %rdi
callq 0x4480
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
callq 0x4060
jmp 0x153ce
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x4060
jmp 0x153e3
leaq -0x570(%rbp), %rdi
callq 0x44e0
jmp 0x153f1
movl $0x1, -0xdc(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x4520
leaq -0x370(%rbp), %rdi
callq 0x4260
leaq -0x1e8(%rbp), %rdi
callq 0x46d8
leaq -0x1c8(%rbp), %rdi
callq 0x46d8
leaq -0x198(%rbp), %rdi
callq 0x46d8
leaq -0x170(%rbp), %rdi
callq 0x1f4a0
leaq -0x150(%rbp), %rdi
callq 0x1f4a0
leaq -0x130(%rbp), %rdi
callq 0x1f4a0
leaq -0x110(%rbp), %rdi
callq 0x1f4a0
jmp 0x16545
leaq -0x370(%rbp), %rdi
callq 0x4260
leaq -0x1e8(%rbp), %rdi
callq 0x46d8
leaq -0x1c8(%rbp), %rdi
callq 0x46d8
leaq -0x198(%rbp), %rdi
callq 0x46d8
leaq -0x170(%rbp), %rdi
callq 0x1f4a0
leaq -0x150(%rbp), %rdi
callq 0x1f4a0
leaq -0x130(%rbp), %rdi
callq 0x1f4a0
leaq -0x110(%rbp), %rdi
callq 0x1f4a0
jmp 0x165c6
jmp 0x154d3
movq -0x80(%rbp), %rdi
callq 0x4030
movq %rax, -0xda8(%rbp)
jmp 0x154e5
movq -0xda8(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x80(%rbp), %rdi
callq 0x4030
movq %rax, -0xdb0(%rbp)
jmp 0x15505
movq -0xdb0(%rbp), %rax
movq %rax, -0x5b0(%rbp)
movq $0x0, -0x5b8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xdb8(%rbp)
jmp 0x15530
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0xdc0(%rbp)
callq 0x1f3f0
movq -0xdb8(%rbp), %rsi
movq -0xdc0(%rbp), %rdx
leaq -0x5d8(%rbp), %rdi
callq 0x1f410
jmp 0x1555f
leaq -0x5d9(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xdc8(%rbp)
jmp 0x1557d
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xdd0(%rbp)
callq 0x1f3f0
movq -0xdc8(%rbp), %rsi
movq -0xdd0(%rbp), %rdx
leaq -0x5f8(%rbp), %rdi
callq 0x1f410
jmp 0x155ac
leaq -0x5f9(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xdd8(%rbp)
jmp 0x155ca
leaq -0x619(%rbp), %rdi
movq %rdi, -0xde0(%rbp)
callq 0x1f3f0
movq -0xdd8(%rbp), %rsi
movq -0xde0(%rbp), %rdx
leaq -0x618(%rbp), %rdi
callq 0x1f410
jmp 0x155f9
leaq -0x619(%rbp), %rdi
callq 0x1f480
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xde8(%rbp)
jmp 0x15617
leaq -0x639(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0x1f3f0
movq -0xde8(%rbp), %rsi
movq -0xdf0(%rbp), %rdx
leaq -0x638(%rbp), %rdi
callq 0x1f410
jmp 0x15646
leaq -0x639(%rbp), %rdi
callq 0x1f480
leaq -0x660(%rbp), %rdi
callq 0x44d0
leaq -0x690(%rbp), %rdi
callq 0x44d0
leaq -0x6b0(%rbp), %rdi
callq 0x44d0
leaq -0x838(%rbp), %rdi
callq 0x4220
jmp 0x15684
leaq -0xa38(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movl $0x10, %edx
callq 0x4680
jmp 0x1569e
leaq 0xe4c4(%rip), %rsi      # 0x23b69
leaq -0xa38(%rbp), %rdi
callq 0x4310
movq %rax, -0xdf8(%rbp)
jmp 0x156ba
movq -0xdf8(%rbp), %rdi
movq 0x16900(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x156cf
movw $0x1, -0xa3a(%rbp)
movzwl -0xa3a(%rbp), %eax
movq %rax, -0xe08(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xe00(%rbp)
jmp 0x156f8
movq -0xe08(%rbp), %rax
movq -0xe00(%rbp), %rcx
cmpq %rcx, %rax
ja 0x158f7
leaq 0xe46c(%rip), %rsi      # 0x23b82
leaq -0xa38(%rbp), %rdi
callq 0x4310
movq %rax, -0xe10(%rbp)
jmp 0x1572b
movq -0xe10(%rbp), %rdi
movzwl -0xa3a(%rbp), %esi
callq 0x45a0
movq %rax, -0xe18(%rbp)
jmp 0x15747
movq -0xe18(%rbp), %rdi
leaq 0xe433(%rip), %rsi      # 0x23b88
callq 0x4310
movq %rax, -0xe20(%rbp)
jmp 0x15763
movq -0xe20(%rbp), %rdi
movzwl -0xa3a(%rbp), %esi
callq 0x45a0
movq %rax, -0xe28(%rbp)
jmp 0x1577f
movq -0xe28(%rbp), %rdi
leaq 0xe404(%rip), %rsi      # 0x23b91
callq 0x4310
movq %rax, -0xe30(%rbp)
jmp 0x1579b
movq -0xe30(%rbp), %rdi
movzwl -0xa3a(%rbp), %esi
callq 0x45a0
movq %rax, -0xe38(%rbp)
jmp 0x157b7
movq -0xe38(%rbp), %rdi
leaq 0xe3d1(%rip), %rsi      # 0x23b96
callq 0x4310
movq %rax, -0xe40(%rbp)
jmp 0x157d3
movq -0xe40(%rbp), %rdi
movzwl -0xa3a(%rbp), %esi
callq 0x45a0
movq %rax, -0xe48(%rbp)
jmp 0x157ef
movq -0xe48(%rbp), %rdi
movq 0x167cb(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x15804
jmp 0x15806
movw -0xa3a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0xa3a(%rbp)
jmp 0x156d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5d9(%rbp), %rdi
callq 0x1f480
jmp 0x165c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x165ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5f9(%rbp), %rdi
callq 0x1f480
jmp 0x165ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x165ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x619(%rbp), %rdi
callq 0x1f480
jmp 0x165ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x165a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x639(%rbp), %rdi
callq 0x1f480
jmp 0x165a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16572
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16566
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1655a
movq 0x166b2(%rip), %rsi     # 0x2bfb0
leaq -0xa38(%rbp), %rdi
callq 0x4350
jmp 0x1590c
movl $0x8, %edi
callq 0x4330
movq %rax, -0xe50(%rbp)
jmp 0x1591f
movq -0xe50(%rbp), %rdi
callq 0x22380
jmp 0x1592d
movq -0xe50(%rbp), %rax
movq %rax, -0xa48(%rbp)
jmp 0x15a23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1596b
movq -0xe50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x8, %esi
callq 0x4340
movl -0x44(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x1655a
movq -0x40(%rbp), %rdi
movq %rdi, -0xe58(%rbp)
callq 0x4430
movq %rax, %rsi
leaq -0xa68(%rbp), %rdi
callq 0x4150
jmp 0x1599c
movq -0xe58(%rbp), %rdi
callq 0x4130
movq 0x16641(%rip), %rdi     # 0x2bff0
leaq 0xdd57(%rip), %rsi      # 0x2370d
callq 0x4310
movq %rax, -0xe60(%rbp)
jmp 0x159c4
movq -0xe60(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x42e0
movq %rax, -0xe68(%rbp)
jmp 0x159e0
movq -0xe68(%rbp), %rdi
movq 0x165c2(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x159f5
movl $0x5, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa68(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x15a1e
jmp 0x1655a
jmp 0x15a25
cmpq $0x0, -0x88(%rbp)
je 0x1645a
movq -0xa48(%rbp), %rdi
movq -0x88(%rbp), %xmm0
movaps 0xda57(%rip), %xmm2     # 0x234a0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0xda5b(%rip), %xmm1     # 0x234b0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm3
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm3, %xmm0
movsd %xmm0, -0xa70(%rbp)
movq -0x78(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0xa78(%rbp)
leaq -0xa70(%rbp), %rsi
leaq -0xa78(%rbp), %rdx
callq 0x227a0
movq %rax, -0xe70(%rbp)
jmp 0x15aa8
movq -0xe70(%rbp), %rax
movq %rax, -0x5c0(%rbp)
jmp 0x15b7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x1655a
movq -0x40(%rbp), %rdi
movq %rdi, -0xe78(%rbp)
callq 0x4430
movq %rax, %rsi
leaq -0xa98(%rbp), %rdi
callq 0x4150
jmp 0x15af8
movq -0xe78(%rbp), %rdi
callq 0x4130
movq 0x164e5(%rip), %rdi     # 0x2bff0
leaq 0xdbfb(%rip), %rsi      # 0x2370d
callq 0x4310
movq %rax, -0xe80(%rbp)
jmp 0x15b20
movq -0xe80(%rbp), %rdi
leaq -0xa98(%rbp), %rsi
callq 0x42e0
movq %rax, -0xe88(%rbp)
jmp 0x15b3c
movq -0xe88(%rbp), %rdi
movq 0x16466(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x15b51
movl $0x5, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa98(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x15b7a
jmp 0x1655a
movq -0xaf8(%rbp), %rax
movq -0x5c0(%rbp), %rdx
movq -0x5b8(%rbp), %rcx
addq %rdx, %rcx
movq %rcx, -0x5b8(%rbp)
movq -0x5c0(%rbp), %rcx
movq -0x78(%rbp), %rdx
notq %rcx
addq %rdx, %rcx
movq %rcx, -0x78(%rbp)
addq $0x8, %rax
movq %rax, -0xe90(%rbp)
movq -0x5b8(%rbp), %rsi
movq -0x80(%rbp), %rax
imulq %rax, %rsi
addq $0x3, %rsi
leaq -0xaa8(%rbp), %rdi
callq 0x1ef20
jmp 0x15bdf
movq -0xe90(%rbp), %rdi
movq -0xaa8(%rbp), %rsi
movq -0xaa0(%rbp), %rdx
callq 0x4460
jmp 0x15bfb
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
movq -0x5a8(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x4450
jmp 0x15c18
movq -0x5b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5b8(%rbp)
cmpq $0x0, -0x5c0(%rbp)
je 0x15c77
movq -0xaf8(%rbp), %rax
addq $0x458, %rax            # imm = 0x458
movq %rax, -0xe98(%rbp)
callq 0x1f390
movq -0xe98(%rbp), %rdi
movq %rax, %rsi
movl $0xa, %edx
callq 0x41f0
jmp 0x15c63
movq -0x5c0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x5c0(%rbp)
jmp 0x15c2a
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
leaq -0x690(%rbp), %rsi
callq 0x4080
jmp 0x15c93
leaq -0x838(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0x43d0
jmp 0x15ca8
leaq -0x838(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
jmp 0x15cbd
leaq -0x660(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4040
jmp 0x15cd2
leaq -0x838(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
movq %rax, -0xea0(%rbp)
jmp 0x15cee
movq -0xea0(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
movq %rax, -0xea8(%rbp)
jmp 0x15d0a
movq -0xea8(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
jmp 0x15d1f
leaq -0x6b0(%rbp), %rdi
callq 0x4140
movq %rax, %rdi
callq 0x4540
cltq
movq %rax, -0x668(%rbp)
movq -0x88(%rbp), %rax
decq %rax
movq %rax, -0x88(%rbp)
movq -0xa48(%rbp), %rdi
movq -0x88(%rbp), %xmm0
movaps 0xd73d(%rip), %xmm2     # 0x234a0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0xd741(%rip), %xmm1     # 0x234b0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm3
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm3, %xmm0
movsd %xmm0, -0xab0(%rbp)
movq -0x78(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0xab8(%rbp)
leaq -0xab0(%rbp), %rsi
leaq -0xab8(%rbp), %rdx
callq 0x227a0
movq %rax, -0xeb0(%rbp)
jmp 0x15dc2
movq -0xeb0(%rbp), %rax
movq %rax, -0x5c0(%rbp)
jmp 0x15e99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x1655a
movq -0x40(%rbp), %rdi
movq %rdi, -0xeb8(%rbp)
callq 0x4430
movq %rax, %rsi
leaq -0xad8(%rbp), %rdi
callq 0x4150
jmp 0x15e12
movq -0xeb8(%rbp), %rdi
callq 0x4130
movq 0x161cb(%rip), %rdi     # 0x2bff0
leaq 0xd8e1(%rip), %rsi      # 0x2370d
callq 0x4310
movq %rax, -0xec0(%rbp)
jmp 0x15e3a
movq -0xec0(%rbp), %rdi
leaq -0xad8(%rbp), %rsi
callq 0x42e0
movq %rax, -0xec8(%rbp)
jmp 0x15e56
movq -0xec8(%rbp), %rdi
movq 0x1614c(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x15e6b
movl $0x5, %edi
callq 0x4400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xad8(%rbp), %rdi
callq 0x46d8
callq 0x4580
jmp 0x15e94
jmp 0x1655a
movq -0xaf8(%rbp), %rax
movq -0x5c0(%rbp), %rdx
movq -0x5b8(%rbp), %rcx
addq %rdx, %rcx
movq %rcx, -0x5b8(%rbp)
movq -0x5c0(%rbp), %rcx
movq -0x78(%rbp), %rdx
notq %rcx
addq %rdx, %rcx
movq %rcx, -0x78(%rbp)
addq $0x8, %rax
movq %rax, -0xed0(%rbp)
movq -0x5b8(%rbp), %rsi
movq -0x80(%rbp), %rax
imulq %rax, %rsi
addq $0x3, %rsi
leaq -0xae8(%rbp), %rdi
callq 0x1ef20
jmp 0x15ef9
movq -0xed0(%rbp), %rdi
movq -0xae8(%rbp), %rsi
movq -0xae0(%rbp), %rdx
callq 0x4460
jmp 0x15f15
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
movq -0x5b0(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x4450
jmp 0x15f32
movq -0x5b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5b8(%rbp)
cmpq $0x0, -0x5c0(%rbp)
je 0x15f91
movq -0xaf8(%rbp), %rax
addq $0x458, %rax            # imm = 0x458
movq %rax, -0xed8(%rbp)
callq 0x1f390
movq -0xed8(%rbp), %rdi
movq %rax, %rsi
movl $0xa, %edx
callq 0x41f0
jmp 0x15f7d
movq -0x5c0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x5c0(%rbp)
jmp 0x15f44
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
leaq -0x690(%rbp), %rsi
callq 0x4080
jmp 0x15fad
leaq -0x838(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0x43d0
jmp 0x15fc2
leaq -0x838(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
jmp 0x15fd7
leaq -0x660(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x1f3a0
testb $0x1, %al
jne 0x15ff0
jmp 0x16007
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x15a25
leaq -0x838(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
movq %rax, -0xee0(%rbp)
jmp 0x16023
movq -0xee0(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
movq %rax, -0xee8(%rbp)
jmp 0x1603f
movq -0xee8(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4470
jmp 0x16054
leaq -0x6b0(%rbp), %rdi
callq 0x4140
movq %rax, %rdi
callq 0x4540
cltq
movq %rax, -0x670(%rbp)
movq -0x670(%rbp), %rax
cmpq -0x668(%rbp), %rax
ja 0x16175
movq 0x15f64(%rip), %rdi     # 0x2bff0
leaq 0xda0c(%rip), %rsi      # 0x23a9f
callq 0x4310
movq %rax, -0xef0(%rbp)
jmp 0x160a1
movq -0xef0(%rbp), %rdi
movq -0x670(%rbp), %rsi
callq 0x40d0
movq %rax, -0xef8(%rbp)
jmp 0x160bd
movq -0xef8(%rbp), %rdi
leaq 0xd9f3(%rip), %rsi      # 0x23abe
callq 0x4310
movq %rax, -0xf00(%rbp)
jmp 0x160d9
movq -0xf00(%rbp), %rdi
movq -0x668(%rbp), %rsi
callq 0x40d0
movq %rax, -0xf08(%rbp)
jmp 0x160f5
movq -0xf08(%rbp), %rdi
leaq 0xd9d8(%rip), %rsi      # 0x23adb
callq 0x4310
movq %rax, -0xf10(%rbp)
jmp 0x16111
movq -0xf10(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x42e0
movq %rax, -0xf18(%rbp)
jmp 0x1612d
movq -0xf18(%rbp), %rdi
leaq 0xd9b1(%rip), %rsi      # 0x23aec
callq 0x4310
movq %rax, -0xf20(%rbp)
jmp 0x16149
movq -0xf20(%rbp), %rdi
movq 0x15e59(%rip), %rsi     # 0x2bfb0
callq 0x4350
jmp 0x1615e
movq -0x88(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x15a25
movq -0xaf8(%rbp), %rdi
movq -0x5a8(%rbp), %rsi
movq -0x5b0(%rbp), %rdx
movq -0x10(%rbp), %rcx
movq %rsp, %rax
leaq -0x638(%rbp), %r8
movq %r8, 0x8(%rax)
leaq -0x618(%rbp), %r8
movq %r8, (%rax)
leaq -0x5d8(%rbp), %r8
leaq -0x5f8(%rbp), %r9
callq 0xe020
jmp 0x161bb
leaq -0xa38(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x42e0
movq %rax, -0xf28(%rbp)
jmp 0x161d7
movq -0xf28(%rbp), %rdi
leaq 0xd92f(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xf30(%rbp)
jmp 0x161f3
movq -0xf30(%rbp), %rdi
movq -0x668(%rbp), %rsi
callq 0x40d0
movq %rax, -0xf38(%rbp)
jmp 0x1620f
movq -0xf38(%rbp), %rdi
leaq 0xd8f7(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xf40(%rbp)
jmp 0x1622b
movq -0xf40(%rbp), %rdi
movq -0x670(%rbp), %rsi
callq 0x40d0
movq %rax, -0xf48(%rbp)
jmp 0x16247
movq -0xf48(%rbp), %rdi
leaq 0xd8bf(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xf50(%rbp)
jmp 0x16263
movq -0xf50(%rbp), %rdi
movq -0x670(%rbp), %rsi
movq -0x668(%rbp), %rax
subq %rax, %rsi
callq 0x40d0
movq %rax, -0xf58(%rbp)
jmp 0x16289
movq -0xf58(%rbp), %rdi
movq 0x15d31(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x1629e
movq $0x0, -0xaf0(%rbp)
movq -0xaf0(%rbp), %rax
movq %rax, -0xf68(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1f240
movq %rax, -0xf60(%rbp)
jmp 0x162c9
movq -0xf68(%rbp), %rax
movq -0xf60(%rbp), %rcx
cmpq %rcx, %rax
jae 0x1642e
leaq 0xd82d(%rip), %rsi      # 0x23b14
leaq -0xa38(%rbp), %rdi
callq 0x4310
movq %rax, -0xf70(%rbp)
jmp 0x162fc
movq -0xaf0(%rbp), %rsi
leaq -0x5d8(%rbp), %rdi
callq 0x1f370
movq -0xf70(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xf78(%rbp)
jmp 0x16328
movq -0xf78(%rbp), %rdi
leaq 0xd7de(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xf80(%rbp)
jmp 0x16344
movq -0xaf0(%rbp), %rsi
leaq -0x5f8(%rbp), %rdi
callq 0x1f370
movq -0xf80(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xf88(%rbp)
jmp 0x16370
movq -0xf88(%rbp), %rdi
leaq 0xd796(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xf90(%rbp)
jmp 0x1638c
movq -0xaf0(%rbp), %rsi
leaq -0x618(%rbp), %rdi
callq 0x1f370
movq -0xf90(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xf98(%rbp)
jmp 0x163b8
movq -0xf98(%rbp), %rdi
leaq 0xd74e(%rip), %rsi      # 0x23b14
callq 0x4310
movq %rax, -0xfa0(%rbp)
jmp 0x163d4
movq -0xaf0(%rbp), %rsi
leaq -0x638(%rbp), %rdi
callq 0x1f370
movq -0xfa0(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4660
movq %rax, -0xfa8(%rbp)
jmp 0x16400
movq -0xfa8(%rbp), %rdi
movq 0x15bba(%rip), %rsi     # 0x2bfc8
callq 0x4350
jmp 0x16415
jmp 0x16417
movq -0xaf0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xaf0(%rbp)
jmp 0x162a9
movq 0x15b7b(%rip), %rsi     # 0x2bfb0
leaq -0xa38(%rbp), %rdi
callq 0x4350
jmp 0x16443
movq -0x88(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x15a25
movq -0x5a8(%rbp), %rax
movq %rax, -0xfb0(%rbp)
cmpq $0x0, %rax
je 0x1647a
movq -0xfb0(%rbp), %rdi
callq 0x4480
movq -0x5b0(%rbp), %rax
movq %rax, -0xfb8(%rbp)
cmpq $0x0, %rax
je 0x1649a
movq -0xfb8(%rbp), %rdi
callq 0x4480
movq -0xaf8(%rbp), %rdi
addq $0x8, %rdi
callq 0x4060
jmp 0x164ac
movq -0xaf8(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x4060
jmp 0x164c1
leaq -0xa38(%rbp), %rdi
callq 0x44e0
jmp 0x164cf
leaq -0xa38(%rbp), %rdi
callq 0x4520
leaq -0x838(%rbp), %rdi
callq 0x4260
leaq -0x6b0(%rbp), %rdi
callq 0x46d8
leaq -0x690(%rbp), %rdi
callq 0x46d8
leaq -0x660(%rbp), %rdi
callq 0x46d8
leaq -0x638(%rbp), %rdi
callq 0x1f4a0
leaq -0x618(%rbp), %rdi
callq 0x1f4a0
leaq -0x5f8(%rbp), %rdi
callq 0x1f4a0
leaq -0x5d8(%rbp), %rdi
callq 0x1f4a0
movl $0x0, -0xdc(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x46d8
addq $0xfd0, %rsp            # imm = 0xFD0
popq %rbp
retq
leaq -0xa38(%rbp), %rdi
callq 0x4520
leaq -0x838(%rbp), %rdi
callq 0x4260
leaq -0x6b0(%rbp), %rdi
callq 0x46d8
leaq -0x690(%rbp), %rdi
callq 0x46d8
leaq -0x660(%rbp), %rdi
callq 0x46d8
leaq -0x638(%rbp), %rdi
callq 0x1f4a0
leaq -0x618(%rbp), %rdi
callq 0x1f4a0
leaq -0x5f8(%rbp), %rdi
callq 0x1f4a0
leaq -0x5d8(%rbp), %rdi
callq 0x1f4a0
leaq -0xd8(%rbp), %rdi
callq 0x46d8
movq -0x40(%rbp), %rdi
callq 0x4610
movq %rax, %rdi
callq 0x82c0
nopw %cs:(%rax,%rax)