// File: BenLangmead[P]bowtie/./ebwt.h
// Function: void Ebwt::initFromVector<SString<char>>(EList<FileBuf*, 128>&, EList<RefRecord, 128>&, EList<unsigned int, 128>&, unsigned int, RefReadInParams const&, std::basic_ofstream<char, std::char_traits<char>>&, std::basic_ofstream<char, std::char_traits<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, bool, unsigned int, unsigned int, unsigned int, int, unsigned int)
void initFromVector(
		EList<FileBuf*>& is,
		EList<RefRecord>& szs,
		EList<uint32_t>& plens,
		TIndexOffU sztot,
		const RefReadInParams& refparams,
		ofstream& out1,
		ofstream& out2,
		const string& outfile,
		int nthreads,
		bool useBlockwise,
		TIndexOffU bmax,
		TIndexOffU bmaxSqrtMult,
		TIndexOffU bmaxDivN,
		int dcv,
		uint32_t seed)
	{
		// Compose text strings into single string
		VMSG_NL("Calculating joined length");
		TStr s; // holds the entire joined reference after call to joinToDisk
		TIndexOffU jlen;
		jlen = joinedLen(szs);
		assert_geq(jlen, sztot);
		VMSG_NL("Writing header");
		writeFromMemory(true, out1, out2);
		try {
			VMSG_NL("Reserving space for joined string");
			s.resize(jlen);
			VMSG_NL("Joining reference sequences");
			if(refparams.reverse == REF_READ_REVERSE) {
				{
					Timer timer(cout, "  Time to join reference sequences: ", _verbose);
					joinToDisk(is, szs, plens, sztot, refparams, s, out1, out2, seed);
				} {
					Timer timer(cout, "  Time to reverse reference sequence: ", _verbose);
					EList<RefRecord> tmp;
					s.reverse();
					reverseRefRecords(szs, tmp, false, false);
					szsToDisk(tmp, out1, refparams.reverse);
				}
			} else {
				Timer timer(cout, "  Time to join reference sequences: ", _verbose);
				joinToDisk(is, szs, plens, sztot, refparams, s, out1, out2, seed);
				szsToDisk(szs, out1, refparams.reverse);
			}
			// Joined reference sequence now in 's'
		} catch(bad_alloc& e) {
			// If we throw an allocation exception in the try block,
			// that means that the joined version of the reference
			// string itself is too larger to fit in memory.  The only
			// alternatives are to tell the user to give us more memory
			// or to try again with a packed representation of the
			// reference (if we haven't tried that already).
			cerr << "Could not allocate space for a joined string of " << jlen << " elements." << endl;
			if(!isPacked() && _passMemExc) {
				// Pass the exception up so that we can retry using a
				// packed string representation
				throw e;
			}
			// There's no point passing this exception on.  The fact
			// that we couldn't allocate the joined string means that
			// --bmax is irrelevant - the user should re-run with
			// ebwt-build-packed
			if(isPacked()) {
				cerr << "Please try running bowtie-build on a computer with more memory." << endl;
			} else {
				cerr << "Please try running bowtie-build in packed mode (-p/--packed) or in automatic" << endl
				     << "mode (-a/--auto), or try again on a computer with more memory." << endl;
			}
			if(sizeof(void*) == 4) {
				cerr << "If this computer has more than 4 GB of memory, try using a 64-bit executable;" << endl
				     << "this executable is 32-bit." << endl;
			}
			throw 1;
		}
		// Succesfully obtained joined reference string
		assert_geq(s.length(), jlen);
		if(bmax != OFF_MASK) {
			VMSG_NL("bmax according to bmax setting: " << bmax);
		}
		else if(bmaxSqrtMult != OFF_MASK) {
			bmax *= bmaxSqrtMult;
			VMSG_NL("bmax according to bmaxSqrtMult setting: " << bmax);
		}
		else if(bmaxDivN != OFF_MASK) {
			bmax = max<TIndexOffU>(jlen / bmaxDivN, 1);
			VMSG_NL("bmax according to bmaxDivN setting: " << bmax);
		}
		else {
			bmax = (TIndexOffU)sqrt(s.length());
			VMSG_NL("bmax defaulted to: " << bmax);
		}
		int iter = 0;
		bool first = true;
		// Look for bmax/dcv parameters that work.
		while(true) {
			if(!first && bmax < 40 && _passMemExc) {
				cerr << "Could not find approrpiate bmax/dcv settings for building this index." << endl;
				if(!isPacked()) {
					// Throw an exception exception so that we can
					// retry using a packed string representation
					throw bad_alloc();
				} else {
					cerr << "Already tried a packed string representation." << endl;
				}
				cerr << "Please try indexing this reference on a computer with more memory." << endl;
				if(sizeof(void*) == 4) {
					cerr << "If this computer has more than 4 GB of memory, try using a 64-bit executable;" << endl
						 << "this executable is 32-bit." << endl;
				}
				throw 1;
			}
			if(dcv > 4096) dcv = 4096;
			if((iter % 6) == 5 && dcv < 4096 && dcv != 0) {
				dcv <<= 1; // double difference-cover period
			} else {
				bmax -= (bmax >> 2); // reduce by 25%
			}
			VMSG("Using parameters --bmax " << bmax);
			if(dcv == 0) {
				VMSG_NL(" and *no difference cover*");
			} else {
				VMSG_NL(" --dcv " << dcv);
			}
			iter++;
			try {
				{
					VMSG_NL("  Doing ahead-of-time memory usage test");
					// Make a quick-and-dirty attempt to force a bad_alloc iff
					// we would have thrown one eventually as part of
					// constructing the DifferenceCoverSample
					dcv <<= 1;
					TIndexOffU sz = (TIndexOffU)DifferenceCoverSample<TStr>::simulateAllocs(s, dcv >> 1);
					if(nthreads > 1) sz *= (nthreads + 1);
					AutoArray<uint8_t> tmp(sz, EBWT_CAT);
					dcv >>= 1;
					// Likewise with the KarkkainenBlockwiseSA
					sz = (TIndexOffU)KarkkainenBlockwiseSA<TStr>::simulateAllocs(s, bmax);
					AutoArray<uint8_t> tmp2(sz, EBWT_CAT);
					// Now throw in the 'ftab' and 'isaSample' structures
					// that we'll eventually allocate in buildToDisk
					AutoArray<TIndexOffU> ftab(_eh._ftabLen * 2, EBWT_CAT);
					AutoArray<uint8_t> side(_eh._sideSz);
					// Grab another 20 MB out of caution
					AutoArray<uint32_t> extra(20*1024*1024, EBWT_CAT);
					// If we made it here without throwing bad_alloc, then we
					// passed the memory-usage stress test
					VMSG("  Passed!  Constructing with these parameters: --bmax " << bmax << " --dcv " << dcv);
					if(isPacked()) {
						VMSG(" --packed");
					}
					VMSG_NL("");
				}
				VMSG_NL("Constructing suffix-array element generator");
				KarkkainenBlockwiseSA<TStr> bsa(s, bmax, nthreads, dcv, seed, _sanity, _passMemExc, _verbose, outfile);
				assert(bsa.suffixItrIsReset());
				assert_eq(bsa.size(), s.length()+1);
				VMSG_NL("Converting suffix-array elements to index image");
				buildToDisk(bsa, s, out1, out2);
				out1.flush(); out2.flush();
				if(out1.fail() || out2.fail()) {
					cerr << "An error occurred writing the index to disk.  Please check if the disk is full." << endl;
					throw 1;
				}
				break;
			} catch(bad_alloc& e) {
				if(_passMemExc) {
					VMSG_NL("  Ran out of memory; automatically trying more memory-economical parameters.");
				} else {
					cerr << "Out of memory while constructing suffix array.  Please try using a smaller" << endl
						 << "number of blocks by specifying a smaller --bmax or a larger --bmaxdivn" << endl;
					throw 1;
				}
			}
			first = false;
		}
		assert(repOk());
		// Now write reference sequence names on the end
#ifdef ACCOUNT_FOR_ALL_GAP_REFS
		assert_geq(this->_refnames.size(), this->_nPat);
#else
		assert_eq(this->_refnames.size(), this->_nPat);
#endif
		for(TIndexOffU i = 0; i < this->_refnames.size(); i++) {
			out1 << this->_refnames[i] << endl;
		}
		out1 << '\0';
		out1.flush(); out2.flush();
		if(out1.fail() || out2.fail()) {
			cerr << "An error occurred writing the index to disk.  Please check if the disk is full." << endl;
			throw 1;
		}
		VMSG_NL("Returning from initFromVector");
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x2468, %rsp           # imm = 0x2468
movl 0x58(%rbp), %eax
movl 0x50(%rbp), %eax
movl 0x48(%rbp), %eax
movl 0x40(%rbp), %eax
movl 0x38(%rbp), %eax
movb 0x30(%rbp), %al
movl 0x28(%rbp), %r10d
movq 0x20(%rbp), %r10
movq 0x18(%rbp), %r10
movq 0x10(%rbp), %r10
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movq %r9, -0x38(%rbp)
andb $0x1, %al
movb %al, -0x39(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x2270(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1d524
jmp 0x1d5e8
leaq -0x1c8(%rbp), %rdi
callq 0x6280
leaq -0x1b8(%rbp), %rdi
leaq 0x289d5(%rip), %rsi     # 0x45f13
callq 0x6410
movq %rax, -0x2278(%rbp)
jmp 0x1d54c
movq -0x2278(%rbp), %rdi
movq 0x34a0e(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1d561
leaq -0x1f8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x6400
jmp 0x1d576
movq -0x2270(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x14810
jmp 0x1d58b
leaq -0x1f8(%rbp), %rdi
callq 0x69a8
leaq -0x1c8(%rbp), %rdi
callq 0x62c0
jmp 0x1d5e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1d5d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x69a8
leaq -0x1c8(%rbp), %rdi
callq 0x62c0
jmp 0x1f3f0
leaq -0x218(%rbp), %rdi
callq 0x14b80
movq -0x2270(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1d3a0
movq -0x2270(%rbp), %rdi
movl %eax, -0x21c(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1d61f
jmp 0x1d6fc
leaq -0x3a8(%rbp), %rdi
callq 0x6280
jmp 0x1d62d
leaq -0x398(%rbp), %rdi
leaq 0x288f2(%rip), %rsi     # 0x45f2d
callq 0x6410
movq %rax, -0x2280(%rbp)
jmp 0x1d649
movq -0x2280(%rbp), %rdi
movq 0x34911(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1d65e
leaq -0x3c8(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x6400
jmp 0x1d673
movq -0x2270(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x14810
jmp 0x1d688
leaq -0x3c8(%rbp), %rdi
callq 0x69a8
leaq -0x3a8(%rbp), %rdi
callq 0x62c0
jmp 0x1d6fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1f3e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1d6eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x69a8
leaq -0x3a8(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
movq -0x2270(%rbp), %rdi
movq 0x10(%rbp), %rdx
movq 0x18(%rbp), %rcx
movl $0x1, %esi
callq 0xb8e0
jmp 0x1d717
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1d72c
jmp 0x1d809
leaq -0x550(%rbp), %rdi
callq 0x6280
jmp 0x1d73a
leaq -0x540(%rbp), %rdi
leaq 0x287f4(%rip), %rsi     # 0x45f3c
callq 0x6410
movq %rax, -0x2288(%rbp)
jmp 0x1d756
movq -0x2288(%rbp), %rdi
movq 0x34804(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1d76b
leaq -0x570(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x6400
jmp 0x1d780
movq -0x2270(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x14810
jmp 0x1d795
leaq -0x570(%rbp), %rdi
callq 0x69a8
leaq -0x550(%rbp), %rdi
callq 0x62c0
jmp 0x1d809
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1db3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1d7f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x69a8
leaq -0x550(%rbp), %rdi
callq 0x62c0
jmp 0x1db3a
movl -0x21c(%rbp), %eax
movl %eax, %esi
leaq -0x218(%rbp), %rdi
callq 0x14860
jmp 0x1d81f
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1d834
jmp 0x1d8fa
leaq -0x6f8(%rbp), %rdi
callq 0x6280
jmp 0x1d842
leaq -0x6e8(%rbp), %rdi
leaq 0x2870e(%rip), %rsi     # 0x45f5e
callq 0x6410
movq %rax, -0x2290(%rbp)
jmp 0x1d85e
movq -0x2290(%rbp), %rdi
movq 0x346fc(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1d873
leaq -0x718(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x6400
jmp 0x1d888
movq -0x2270(%rbp), %rdi
leaq -0x718(%rbp), %rsi
callq 0x14810
jmp 0x1d89d
leaq -0x718(%rbp), %rdi
callq 0x69a8
leaq -0x6f8(%rbp), %rdi
callq 0x62c0
jmp 0x1d8fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1d8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x718(%rbp), %rdi
callq 0x69a8
leaq -0x6f8(%rbp), %rdi
callq 0x62c0
jmp 0x1db3a
movq -0x38(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x1da80
movq -0x2270(%rbp), %rax
movzbl 0xc(%rax), %ecx
andl $0x1, %ecx
movq 0x3468c(%rip), %rsi     # 0x51fa8
leaq 0x28657(%rip), %rdx     # 0x45f7a
leaq -0x738(%rbp), %rdi
callq 0x16ee0
jmp 0x1d931
movq -0x2270(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movq -0x38(%rbp), %r9
movq 0x10(%rbp), %r10
movq 0x18(%rbp), %r11
movl 0x58(%rbp), %ebx
movq %rsp, %rax
movl %ebx, 0x18(%rax)
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
leaq -0x218(%rbp), %r10
movq %r10, (%rax)
callq 0x1f430
jmp 0x1d976
leaq -0x738(%rbp), %rdi
callq 0x16f40
movq -0x2270(%rbp), %rax
movzbl 0xc(%rax), %ecx
andl $0x1, %ecx
movq 0x34611(%rip), %rsi     # 0x51fa8
leaq 0x28601(%rip), %rdx     # 0x45f9f
leaq -0x758(%rbp), %rdi
callq 0x16ee0
jmp 0x1d9ac
leaq -0x778(%rbp), %rdi
callq 0x1b420
jmp 0x1d9ba
leaq -0x218(%rbp), %rdi
callq 0x1ccf0
jmp 0x1d9c8
movq -0x20(%rbp), %rdi
leaq -0x778(%rbp), %rsi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x40cf0
jmp 0x1d9de
movq -0x2270(%rbp), %rdi
movq 0x10(%rbp), %rdx
movq -0x38(%rbp), %rax
movl (%rax), %ecx
leaq -0x778(%rbp), %rsi
callq 0x1fb60
jmp 0x1d9fd
leaq -0x778(%rbp), %rdi
callq 0x1d0e0
leaq -0x758(%rbp), %rdi
callq 0x16f40
jmp 0x1dc34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x16f40
jmp 0x1db3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1da6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x1d0e0
leaq -0x758(%rbp), %rdi
callq 0x16f40
jmp 0x1db3a
movq -0x2270(%rbp), %rax
movzbl 0xc(%rax), %ecx
andl $0x1, %ecx
movq 0x34513(%rip), %rsi     # 0x51fa8
leaq 0x284de(%rip), %rdx     # 0x45f7a
leaq -0x798(%rbp), %rdi
callq 0x16ee0
jmp 0x1daaa
movq -0x2270(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movl -0x2c(%rbp), %r8d
movq -0x38(%rbp), %r9
movq 0x10(%rbp), %r10
movq 0x18(%rbp), %r11
movl 0x58(%rbp), %ebx
movq %rsp, %rax
movl %ebx, 0x18(%rax)
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
leaq -0x218(%rbp), %r10
movq %r10, (%rax)
callq 0x1f430
jmp 0x1daef
movq -0x2270(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq 0x10(%rbp), %rdx
movq -0x38(%rbp), %rax
movl (%rax), %ecx
callq 0x1fb60
jmp 0x1db0b
leaq -0x798(%rbp), %rdi
callq 0x16f40
jmp 0x1dc34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x798(%rbp), %rdi
callq 0x16f40
movl -0x1d4(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1f3e4
movq -0x1d0(%rbp), %rdi
callq 0x61a0
movq %rax, -0x7a0(%rbp)
movq 0x34489(%rip), %rdi     # 0x51ff0
leaq 0x28458(%rip), %rsi     # 0x45fc6
callq 0x6410
movq %rax, -0x2298(%rbp)
jmp 0x1db7c
movq -0x2298(%rbp), %rdi
movl -0x21c(%rbp), %esi
callq 0x65f0
movq %rax, -0x22a0(%rbp)
jmp 0x1db97
movq -0x22a0(%rbp), %rdi
leaq 0x28452(%rip), %rsi     # 0x45ff7
callq 0x6410
movq %rax, -0x22a8(%rbp)
jmp 0x1dbb3
movq -0x22a8(%rbp), %rdi
movq 0x343a7(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1dbc8
movq -0x2270(%rbp), %rdi
callq 0x1fd40
movb %al, -0x22a9(%rbp)
jmp 0x1dbdc
movb -0x22a9(%rbp), %al
testb $0x1, %al
jne 0x1dc55
jmp 0x1dbe8
movq -0x2270(%rbp), %rax
testb $0x1, 0xd(%rax)
je 0x1dc55
movl $0x8, %edi
callq 0x61f0
movq %rax, %rdi
movq %rdi, -0x22b8(%rbp)
movq -0x7a0(%rbp), %rsi
callq 0x147a0
movq -0x22b8(%rbp), %rdi
movq 0x3438d(%rip), %rsi     # 0x51fb0
movq 0x3435e(%rip), %rdx     # 0x51f88
callq 0x67f0
jmp 0x1f404
jmp 0x1dd40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
callq 0x6770
jmp 0x1dd3b
movq -0x2270(%rbp), %rdi
callq 0x1fd40
movb %al, -0x22b9(%rbp)
jmp 0x1dc69
movb -0x22b9(%rbp), %al
testb $0x1, %al
jne 0x1dc75
jmp 0x1dca8
movq 0x34374(%rip), %rdi     # 0x51ff0
leaq 0x2837f(%rip), %rsi     # 0x46002
callq 0x6410
movq %rax, -0x22c8(%rbp)
jmp 0x1dc91
movq -0x22c8(%rbp), %rdi
movq 0x342c9(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1dca6
jmp 0x1dd13
movq 0x34341(%rip), %rdi     # 0x51ff0
leaq 0x2838c(%rip), %rsi     # 0x46042
callq 0x6410
movq %rax, -0x22d0(%rbp)
jmp 0x1dcc4
movq -0x22d0(%rbp), %rdi
movq 0x34296(%rip), %rsi     # 0x51f68
callq 0x6470
movq %rax, -0x22d8(%rbp)
jmp 0x1dce0
movq -0x22d8(%rbp), %rdi
leaq 0x283a1(%rip), %rsi     # 0x4608f
callq 0x6410
movq %rax, -0x22e0(%rbp)
jmp 0x1dcfc
movq -0x22e0(%rbp), %rdi
movq 0x3425e(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1dd11
jmp 0x1dd13
movl $0x4, %edi
callq 0x61f0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x34223(%rip), %rsi     # 0x51f50
xorl %eax, %eax
movl %eax, %edx
callq 0x67f0
jmp 0x1f404
jmp 0x1f3e4
cmpl $-0x1, 0x38(%rbp)
je 0x1de42
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1dd5f
jmp 0x1de3d
leaq -0x928(%rbp), %rdi
callq 0x6280
jmp 0x1dd6d
leaq -0x918(%rbp), %rdi
leaq 0x28353(%rip), %rsi     # 0x460ce
callq 0x6410
movq %rax, -0x22e8(%rbp)
jmp 0x1dd89
movq -0x22e8(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
movq %rax, -0x22f0(%rbp)
jmp 0x1dda1
movq -0x22f0(%rbp), %rdi
movq 0x341b9(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1ddb6
leaq -0x948(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x6400
jmp 0x1ddcb
movq -0x2270(%rbp), %rdi
leaq -0x948(%rbp), %rsi
callq 0x14810
jmp 0x1dde0
leaq -0x948(%rbp), %rdi
callq 0x69a8
leaq -0x928(%rbp), %rdi
callq 0x62c0
jmp 0x1de3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1de2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x69a8
leaq -0x928(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e1bc
cmpl $-0x1, 0x40(%rbp)
je 0x1df4e
movq -0x2270(%rbp), %rdi
movl 0x40(%rbp), %eax
imull 0x38(%rbp), %eax
movl %eax, 0x38(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1de6b
jmp 0x1df49
leaq -0xad0(%rbp), %rdi
callq 0x6280
jmp 0x1de79
leaq -0xac0(%rbp), %rdi
leaq 0x28268(%rip), %rsi     # 0x460ef
callq 0x6410
movq %rax, -0x22f8(%rbp)
jmp 0x1de95
movq -0x22f8(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
movq %rax, -0x2300(%rbp)
jmp 0x1dead
movq -0x2300(%rbp), %rdi
movq 0x340ad(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1dec2
leaq -0xaf0(%rbp), %rdi
leaq -0xad0(%rbp), %rsi
callq 0x6400
jmp 0x1ded7
movq -0x2270(%rbp), %rdi
leaq -0xaf0(%rbp), %rsi
callq 0x14810
jmp 0x1deec
leaq -0xaf0(%rbp), %rdi
callq 0x69a8
leaq -0xad0(%rbp), %rdi
callq 0x62c0
jmp 0x1df49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1df38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xaf0(%rbp), %rdi
callq 0x69a8
leaq -0xad0(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e1ba
cmpl $-0x1, 0x48(%rbp)
je 0x1e095
movl -0x21c(%rbp), %eax
movl 0x48(%rbp), %ecx
xorl %edx, %edx
divl %ecx
movl %eax, -0xaf4(%rbp)
movl $0x1, -0xaf8(%rbp)
leaq -0xaf4(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
callq 0x1fd60
movq %rax, -0x2308(%rbp)
jmp 0x1df91
movq -0x2270(%rbp), %rdi
movq -0x2308(%rbp), %rax
movl (%rax), %eax
movl %eax, 0x38(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1dfb2
jmp 0x1e090
leaq -0xc80(%rbp), %rdi
callq 0x6280
jmp 0x1dfc0
leaq -0xc70(%rbp), %rdi
leaq 0x2814a(%rip), %rsi     # 0x46118
callq 0x6410
movq %rax, -0x2310(%rbp)
jmp 0x1dfdc
movq -0x2310(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
movq %rax, -0x2318(%rbp)
jmp 0x1dff4
movq -0x2318(%rbp), %rdi
movq 0x33f66(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e009
leaq -0xca0(%rbp), %rdi
leaq -0xc80(%rbp), %rsi
callq 0x6400
jmp 0x1e01e
movq -0x2270(%rbp), %rdi
leaq -0xca0(%rbp), %rsi
callq 0x14810
jmp 0x1e033
leaq -0xca0(%rbp), %rdi
callq 0x69a8
leaq -0xc80(%rbp), %rdi
callq 0x62c0
jmp 0x1e090
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e07f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xca0(%rbp), %rdi
callq 0x69a8
leaq -0xc80(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e1b8
leaq -0x218(%rbp), %rdi
callq 0x14c10
movq %rax, %rdi
callq 0x1fda0
movsd %xmm0, -0x2320(%rbp)
jmp 0x1e0b3
movq -0x2270(%rbp), %rdi
movsd -0x2320(%rbp), %xmm0
cvttsd2si %xmm0, %rax
movl %eax, 0x38(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1e0d8
jmp 0x1e1b6
leaq -0xe28(%rbp), %rdi
callq 0x6280
jmp 0x1e0e6
leaq -0xe18(%rbp), %rdi
leaq 0x28049(%rip), %rsi     # 0x4613d
callq 0x6410
movq %rax, -0x2328(%rbp)
jmp 0x1e102
movq -0x2328(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
movq %rax, -0x2330(%rbp)
jmp 0x1e11a
movq -0x2330(%rbp), %rdi
movq 0x33e40(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e12f
leaq -0xe48(%rbp), %rdi
leaq -0xe28(%rbp), %rsi
callq 0x6400
jmp 0x1e144
movq -0x2270(%rbp), %rdi
leaq -0xe48(%rbp), %rsi
callq 0x14810
jmp 0x1e159
leaq -0xe48(%rbp), %rdi
callq 0x69a8
leaq -0xe28(%rbp), %rdi
callq 0x62c0
jmp 0x1e1b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e1a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xe48(%rbp), %rdi
callq 0x69a8
leaq -0xe28(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e1b8
jmp 0x1e1ba
jmp 0x1e1bc
movl $0x0, -0xe4c(%rbp)
movb $0x1, -0xe4d(%rbp)
jmp 0x1e1cf
testb $0x1, -0xe4d(%rbp)
jne 0x1e30c
cmpl $0x28, 0x38(%rbp)
jae 0x1e30c
movq -0x2270(%rbp), %rax
testb $0x1, 0xd(%rax)
je 0x1e30c
movq 0x33df2(%rip), %rdi     # 0x51ff0
leaq 0x27f4c(%rip), %rsi     # 0x46151
callq 0x6410
movq %rax, -0x2338(%rbp)
jmp 0x1e213
movq -0x2338(%rbp), %rdi
movq 0x33d47(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e228
movq -0x2270(%rbp), %rdi
callq 0x1fd40
movb %al, -0x2339(%rbp)
jmp 0x1e23c
movb -0x2339(%rbp), %al
testb $0x1, %al
jne 0x1e280
jmp 0x1e248
movl $0x8, %edi
callq 0x61f0
movq %rax, %rdi
movq %rdi, -0x2348(%rbp)
callq 0x1fde0
movq -0x2348(%rbp), %rdi
movq 0x33d41(%rip), %rsi     # 0x51fb0
movq 0x33d12(%rip), %rdx     # 0x51f88
callq 0x67f0
jmp 0x1f404
movq 0x33d69(%rip), %rdi     # 0x51ff0
leaq 0x27f09(%rip), %rsi     # 0x46197
callq 0x6410
movq %rax, -0x2350(%rbp)
jmp 0x1e29c
movq -0x2350(%rbp), %rdi
movq 0x33cbe(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e2b1
jmp 0x1e2b3
movq 0x33d36(%rip), %rdi     # 0x51ff0
leaq 0x27f04(%rip), %rsi     # 0x461c5
callq 0x6410
movq %rax, -0x2358(%rbp)
jmp 0x1e2cf
movq -0x2358(%rbp), %rdi
movq 0x33c8b(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e2e4
movl $0x4, %edi
callq 0x61f0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x33c52(%rip), %rsi     # 0x51f50
xorl %eax, %eax
movl %eax, %edx
callq 0x67f0
jmp 0x1f404
cmpl $0x1000, 0x50(%rbp)     # imm = 0x1000
jle 0x1e31c
movl $0x1000, 0x50(%rbp)     # imm = 0x1000
movl -0xe4c(%rbp), %eax
movl $0x6, %ecx
cltd
idivl %ecx
cmpl $0x5, %edx
jne 0x1e348
cmpl $0x1000, 0x50(%rbp)     # imm = 0x1000
jge 0x1e348
cmpl $0x0, 0x50(%rbp)
je 0x1e348
movl 0x50(%rbp), %eax
shll %eax
movl %eax, 0x50(%rbp)
jmp 0x1e356
movl 0x38(%rbp), %ecx
shrl $0x2, %ecx
movl 0x38(%rbp), %eax
subl %ecx, %eax
movl %eax, 0x38(%rbp)
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1e36b
jmp 0x1e42d
leaq -0xfd8(%rbp), %rdi
callq 0x6280
jmp 0x1e379
leaq -0xfc8(%rbp), %rdi
leaq 0x27e81(%rip), %rsi     # 0x46208
callq 0x6410
movq %rax, -0x2360(%rbp)
jmp 0x1e395
movq -0x2360(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
jmp 0x1e3a6
leaq -0xff8(%rbp), %rdi
leaq -0xfd8(%rbp), %rsi
callq 0x6400
jmp 0x1e3bb
movq -0x2270(%rbp), %rdi
leaq -0xff8(%rbp), %rsi
callq 0x14810
jmp 0x1e3d0
leaq -0xff8(%rbp), %rdi
callq 0x69a8
leaq -0xfd8(%rbp), %rdi
callq 0x62c0
jmp 0x1e42d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e41c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0xff8(%rbp), %rdi
callq 0x69a8
leaq -0xfd8(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
cmpl $0x0, 0x50(%rbp)
jne 0x1e517
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1e44c
jmp 0x1e512
leaq -0x1180(%rbp), %rdi
callq 0x6280
jmp 0x1e45a
leaq -0x1170(%rbp), %rdi
leaq 0x27db9(%rip), %rsi     # 0x46221
callq 0x6410
movq %rax, -0x2368(%rbp)
jmp 0x1e476
movq -0x2368(%rbp), %rdi
movq 0x33ae4(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e48b
leaq -0x11a0(%rbp), %rdi
leaq -0x1180(%rbp), %rsi
callq 0x6400
jmp 0x1e4a0
movq -0x2270(%rbp), %rdi
leaq -0x11a0(%rbp), %rsi
callq 0x14810
jmp 0x1e4b5
leaq -0x11a0(%rbp), %rdi
callq 0x69a8
leaq -0x1180(%rbp), %rdi
callq 0x62c0
jmp 0x1e512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x11a0(%rbp), %rdi
callq 0x69a8
leaq -0x1180(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e60c
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1e52c
jmp 0x1e60a
leaq -0x1328(%rbp), %rdi
callq 0x6280
jmp 0x1e53a
leaq -0x1318(%rbp), %rdi
leaq 0x27cf4(%rip), %rsi     # 0x4623c
callq 0x6410
movq %rax, -0x2370(%rbp)
jmp 0x1e556
movq -0x2370(%rbp), %rdi
movl 0x50(%rbp), %esi
callq 0x6830
movq %rax, -0x2378(%rbp)
jmp 0x1e56e
movq -0x2378(%rbp), %rdi
movq 0x339ec(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e583
leaq -0x1348(%rbp), %rdi
leaq -0x1328(%rbp), %rsi
callq 0x6400
jmp 0x1e598
movq -0x2270(%rbp), %rdi
leaq -0x1348(%rbp), %rsi
callq 0x14810
jmp 0x1e5ad
leaq -0x1348(%rbp), %rdi
callq 0x69a8
leaq -0x1328(%rbp), %rdi
callq 0x62c0
jmp 0x1e60a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e5f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1348(%rbp), %rdi
callq 0x69a8
leaq -0x1328(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
jmp 0x1e60c
movq -0x2270(%rbp), %rdi
movl -0xe4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4c(%rbp)
callq 0x147f0
testb $0x1, %al
jne 0x1e630
jmp 0x1e70d
leaq -0x14d0(%rbp), %rdi
callq 0x6280
jmp 0x1e63e
leaq -0x14c0(%rbp), %rdi
leaq 0x27bf8(%rip), %rsi     # 0x46244
callq 0x6410
movq %rax, -0x2380(%rbp)
jmp 0x1e65a
movq -0x2380(%rbp), %rdi
movq 0x33900(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1e66f
leaq -0x14f0(%rbp), %rdi
leaq -0x14d0(%rbp), %rsi
callq 0x6400
jmp 0x1e684
movq -0x2270(%rbp), %rdi
leaq -0x14f0(%rbp), %rsi
callq 0x14810
jmp 0x1e699
leaq -0x14f0(%rbp), %rdi
callq 0x69a8
leaq -0x14d0(%rbp), %rdi
callq 0x62c0
jmp 0x1e70d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1efa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e6fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x14f0(%rbp), %rdi
callq 0x69a8
leaq -0x14d0(%rbp), %rdi
callq 0x62c0
jmp 0x1efa7
movl 0x50(%rbp), %eax
addl %eax, %eax
movl %eax, 0x50(%rbp)
movl 0x50(%rbp), %esi
sarl %esi
leaq -0x218(%rbp), %rdi
callq 0x1fe20
movq %rax, -0x2388(%rbp)
jmp 0x1e72f
movq -0x2388(%rbp), %rax
movl %eax, -0x14f4(%rbp)
cmpl $0x1, 0x28(%rbp)
jle 0x1e755
movl 0x28(%rbp), %eax
addl $0x1, %eax
imull -0x14f4(%rbp), %eax
movl %eax, -0x14f4(%rbp)
movl -0x14f4(%rbp), %eax
movl %eax, %esi
leaq -0x1510(%rbp), %rdi
movl $0x1, %edx
callq 0x1fef0
jmp 0x1e770
movl 0x50(%rbp), %eax
sarl %eax
movl %eax, 0x50(%rbp)
movl 0x38(%rbp), %esi
leaq -0x218(%rbp), %rdi
callq 0x1ff60
movq %rax, -0x2390(%rbp)
jmp 0x1e790
movq -0x2390(%rbp), %rax
movl %eax, -0x14f4(%rbp)
movl -0x14f4(%rbp), %eax
movl %eax, %esi
leaq -0x1528(%rbp), %rdi
movl $0x1, %edx
callq 0x1fef0
jmp 0x1e7b8
movq -0x2270(%rbp), %rax
movl 0x130(%rax), %eax
addl %eax, %eax
movl %eax, %esi
leaq -0x1540(%rbp), %rdi
movl $0x1, %edx
callq 0x1fff0
jmp 0x1e7dc
movq -0x2270(%rbp), %rax
movl 0x15c(%rax), %eax
movl %eax, %esi
leaq -0x1558(%rbp), %rdi
xorl %edx, %edx
callq 0x1fef0
jmp 0x1e7fb
leaq -0x1570(%rbp), %rdi
movl $0x1400000, %esi        # imm = 0x1400000
movl $0x1, %edx
callq 0x1fff0
jmp 0x1e813
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1e828
jmp 0x1e994
leaq -0x16f8(%rbp), %rdi
callq 0x6280
jmp 0x1e836
leaq -0x16e8(%rbp), %rdi
leaq 0x27a28(%rip), %rsi     # 0x4626c
callq 0x6410
movq %rax, -0x2398(%rbp)
jmp 0x1e852
movq -0x2398(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x65f0
movq %rax, -0x23a0(%rbp)
jmp 0x1e86a
movq -0x23a0(%rbp), %rdi
leaq 0x279c4(%rip), %rsi     # 0x4623c
callq 0x6410
movq %rax, -0x23a8(%rbp)
jmp 0x1e886
movq -0x23a8(%rbp), %rdi
movl 0x50(%rbp), %esi
callq 0x6830
jmp 0x1e897
leaq -0x1718(%rbp), %rdi
leaq -0x16f8(%rbp), %rsi
callq 0x6400
jmp 0x1e8ac
movq -0x2270(%rbp), %rdi
leaq -0x1718(%rbp), %rsi
callq 0x14810
jmp 0x1e8c1
leaq -0x1718(%rbp), %rdi
callq 0x69a8
leaq -0x16f8(%rbp), %rdi
callq 0x62c0
jmp 0x1e994
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1e983
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1718(%rbp), %rdi
callq 0x69a8
leaq -0x16f8(%rbp), %rdi
callq 0x62c0
jmp 0x1ec2a
movq -0x2270(%rbp), %rdi
callq 0x1fd40
movb %al, -0x23a9(%rbp)
jmp 0x1e9a8
movb -0x23a9(%rbp), %al
testb $0x1, %al
jne 0x1e9b7
jmp 0x1ea78
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1e9cc
jmp 0x1ea76
leaq -0x18a0(%rbp), %rdi
callq 0x6280
jmp 0x1e9da
leaq -0x1890(%rbp), %rdi
leaq 0x278bb(%rip), %rsi     # 0x462a3
callq 0x6410
jmp 0x1e9ef
leaq -0x18c0(%rbp), %rdi
leaq -0x18a0(%rbp), %rsi
callq 0x6400
jmp 0x1ea04
movq -0x2270(%rbp), %rdi
leaq -0x18c0(%rbp), %rsi
callq 0x14810
jmp 0x1ea19
leaq -0x18c0(%rbp), %rdi
callq 0x69a8
leaq -0x18a0(%rbp), %rdi
callq 0x62c0
jmp 0x1ea76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ea65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x18c0(%rbp), %rdi
callq 0x69a8
leaq -0x18a0(%rbp), %rdi
callq 0x62c0
jmp 0x1ec2a
jmp 0x1ea78
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1ea8d
jmp 0x1eb53
leaq -0x1a48(%rbp), %rdi
callq 0x6280
jmp 0x1ea9b
leaq -0x1a38(%rbp), %rdi
leaq 0x285cc(%rip), %rsi     # 0x47075
callq 0x6410
movq %rax, -0x23b8(%rbp)
jmp 0x1eab7
movq -0x23b8(%rbp), %rdi
movq 0x334a3(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1eacc
leaq -0x1a68(%rbp), %rdi
leaq -0x1a48(%rbp), %rsi
callq 0x6400
jmp 0x1eae1
movq -0x2270(%rbp), %rdi
leaq -0x1a68(%rbp), %rsi
callq 0x14810
jmp 0x1eaf6
leaq -0x1a68(%rbp), %rdi
callq 0x69a8
leaq -0x1a48(%rbp), %rdi
callq 0x62c0
jmp 0x1eb53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1eb42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1a68(%rbp), %rdi
callq 0x69a8
leaq -0x1a48(%rbp), %rdi
callq 0x62c0
jmp 0x1ec2a
leaq -0x1570(%rbp), %rdi
callq 0x20070
leaq -0x1558(%rbp), %rdi
callq 0x200b0
leaq -0x1540(%rbp), %rdi
callq 0x20070
leaq -0x1528(%rbp), %rdi
callq 0x200b0
leaq -0x1510(%rbp), %rdi
callq 0x200b0
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1eba4
jmp 0x1ecae
leaq -0x1bf0(%rbp), %rdi
callq 0x6280
jmp 0x1ebb2
leaq -0x1be0(%rbp), %rdi
leaq 0x276ed(%rip), %rsi     # 0x462ad
callq 0x6410
movq %rax, -0x23c0(%rbp)
jmp 0x1ebce
movq -0x23c0(%rbp), %rdi
movq 0x3338c(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1ebe3
leaq -0x1c10(%rbp), %rdi
leaq -0x1bf0(%rbp), %rsi
callq 0x6400
jmp 0x1ebf8
movq -0x2270(%rbp), %rdi
leaq -0x1c10(%rbp), %rsi
callq 0x14810
jmp 0x1ec0d
leaq -0x1c10(%rbp), %rdi
callq 0x69a8
leaq -0x1bf0(%rbp), %rdi
callq 0x62c0
jmp 0x1ecae
leaq -0x1570(%rbp), %rdi
callq 0x20070
leaq -0x1558(%rbp), %rdi
callq 0x200b0
leaq -0x1540(%rbp), %rdi
callq 0x20070
leaq -0x1528(%rbp), %rdi
callq 0x200b0
leaq -0x1510(%rbp), %rdi
callq 0x200b0
jmp 0x1efa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ec9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1c10(%rbp), %rdi
callq 0x69a8
leaq -0x1bf0(%rbp), %rdi
callq 0x62c0
jmp 0x1efa7
movq -0x2270(%rbp), %rax
movl 0x38(%rbp), %ecx
movl %ecx, -0x23d4(%rbp)
movl 0x28(%rbp), %ecx
movl %ecx, -0x23d0(%rbp)
movl 0x50(%rbp), %ecx
movl %ecx, -0x23cc(%rbp)
movl 0x58(%rbp), %ecx
movl %ecx, -0x23c8(%rbp)
movb 0xe(%rax), %cl
movb %cl, -0x23c3(%rbp)
movb 0xc(%rax), %cl
movb %cl, -0x23c2(%rbp)
movb 0xd(%rax), %al
movb %al, -0x23c1(%rbp)
movq 0x20(%rbp), %rsi
leaq -0x1d60(%rbp), %rdi
callq 0x61c0
jmp 0x1ed06
movl -0x23c8(%rbp), %r9d
movl -0x23cc(%rbp), %r8d
movl -0x23d0(%rbp), %ecx
movl -0x23d4(%rbp), %edx
movb -0x23c3(%rbp), %sil
movb -0x23c1(%rbp), %dil
movb -0x23c2(%rbp), %r10b
movq 0x3326c(%rip), %r11     # 0x51fa8
movq %rsp, %rax
movq %r11, 0x20(%rax)
leaq -0x1d60(%rbp), %r11
movq %r11, 0x18(%rax)
movzbl %r10b, %r10d
andl $0x1, %r10d
movl %r10d, 0x10(%rax)
movzbl %dil, %edi
andl $0x1, %edi
movl %edi, 0x8(%rax)
movzbl %sil, %esi
andl $0x1, %esi
movl %esi, (%rax)
leaq -0x1d40(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x200f0
jmp 0x1ed82
leaq -0x1d60(%rbp), %rdi
callq 0x69a8
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1eda3
jmp 0x1eea3
leaq -0x1ee8(%rbp), %rdi
callq 0x6280
jmp 0x1edb1
leaq -0x1ed8(%rbp), %rdi
leaq 0x2751a(%rip), %rsi     # 0x462d9
callq 0x6410
movq %rax, -0x23e0(%rbp)
jmp 0x1edcd
movq -0x23e0(%rbp), %rdi
movq 0x3318d(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1ede2
leaq -0x1f08(%rbp), %rdi
leaq -0x1ee8(%rbp), %rsi
callq 0x6400
jmp 0x1edf7
movq -0x2270(%rbp), %rdi
leaq -0x1f08(%rbp), %rsi
callq 0x14810
jmp 0x1ee0c
leaq -0x1f08(%rbp), %rdi
callq 0x69a8
leaq -0x1ee8(%rbp), %rdi
callq 0x62c0
jmp 0x1eea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1d60(%rbp), %rdi
callq 0x69a8
jmp 0x1efa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ef97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1ee92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1f08(%rbp), %rdi
callq 0x69a8
leaq -0x1ee8(%rbp), %rdi
callq 0x62c0
jmp 0x1ef97
movq -0x2270(%rbp), %rdi
movq 0x10(%rbp), %rcx
movq 0x18(%rbp), %r8
leaq -0x1d40(%rbp), %rsi
leaq -0x218(%rbp), %rdx
callq 0x20330
jmp 0x1eec7
movq 0x10(%rbp), %rdi
callq 0x6250
jmp 0x1eed2
movq 0x18(%rbp), %rdi
callq 0x6250
jmp 0x1eedd
movq 0x10(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6030
movb %al, -0x23e1(%rbp)
jmp 0x1eef8
movb -0x23e1(%rbp), %al
testb $0x1, %al
jne 0x1ef2b
jmp 0x1ef04
movq 0x18(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6030
movb %al, -0x23e2(%rbp)
jmp 0x1ef1f
movb -0x23e2(%rbp), %al
testb $0x1, %al
jne 0x1ef2b
jmp 0x1ef84
movq 0x330be(%rip), %rdi     # 0x51ff0
leaq 0x273d0(%rip), %rsi     # 0x46309
callq 0x6410
movq %rax, -0x23f0(%rbp)
jmp 0x1ef47
movq -0x23f0(%rbp), %rdi
movq 0x33013(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1ef5c
movl $0x4, %edi
callq 0x61f0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x32fda(%rip), %rsi     # 0x51f50
xorl %eax, %eax
movl %eax, %edx
callq 0x67f0
jmp 0x1f404
leaq -0x1d40(%rbp), %rdi
callq 0x219f0
jmp 0x1ef92
jmp 0x1f18a
leaq -0x1d40(%rbp), %rdi
callq 0x219f0
jmp 0x1efa5
jmp 0x1efa7
movl -0x1d4(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1f3e4
movq -0x1d0(%rbp), %rdi
callq 0x61a0
movq %rax, %rcx
movq -0x2270(%rbp), %rax
movq %rcx, -0x1f10(%rbp)
testb $0x1, 0xd(%rax)
je 0x1f0d8
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1eff6
jmp 0x1f0d3
leaq -0x2098(%rbp), %rdi
callq 0x6280
jmp 0x1f004
leaq -0x2088(%rbp), %rdi
leaq 0x27347(%rip), %rsi     # 0x46359
callq 0x6410
movq %rax, -0x23f8(%rbp)
jmp 0x1f020
movq -0x23f8(%rbp), %rdi
movq 0x32f3a(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1f035
leaq -0x20b8(%rbp), %rdi
leaq -0x2098(%rbp), %rsi
callq 0x6400
jmp 0x1f04a
movq -0x2270(%rbp), %rdi
leaq -0x20b8(%rbp), %rsi
callq 0x14810
jmp 0x1f05f
leaq -0x20b8(%rbp), %rdi
callq 0x69a8
leaq -0x2098(%rbp), %rdi
callq 0x62c0
jmp 0x1f0d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1f17e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1f0c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x20b8(%rbp), %rdi
callq 0x69a8
leaq -0x2098(%rbp), %rdi
callq 0x62c0
jmp 0x1f17e
jmp 0x1f169
movq 0x32f11(%rip), %rdi     # 0x51ff0
leaq 0x272c0(%rip), %rsi     # 0x463a6
callq 0x6410
movq %rax, -0x2400(%rbp)
jmp 0x1f0f4
movq -0x2400(%rbp), %rdi
movq 0x32e66(%rip), %rsi     # 0x51f68
callq 0x6470
movq %rax, -0x2408(%rbp)
jmp 0x1f110
movq -0x2408(%rbp), %rdi
leaq 0x272d3(%rip), %rsi     # 0x463f1
callq 0x6410
movq %rax, -0x2410(%rbp)
jmp 0x1f12c
movq -0x2410(%rbp), %rdi
movq 0x32e2e(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1f141
movl $0x4, %edi
callq 0x61f0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x32df5(%rip), %rsi     # 0x51f50
xorl %eax, %eax
movl %eax, %edx
callq 0x67f0
jmp 0x1f404
callq 0x6770
jmp 0x1f170
jmp 0x1f172
movb $0x0, -0xe4d(%rbp)
jmp 0x1e1cd
callq 0x6770
jmp 0x1f185
jmp 0x1f3e4
movl $0x0, -0x20bc(%rbp)
movq -0x2270(%rbp), %rdi
movl -0x20bc(%rbp), %eax
movq %rax, -0x2418(%rbp)
addq $0xc8, %rdi
callq 0x15ee0
movq %rax, %rcx
movq -0x2418(%rbp), %rax
cmpq %rcx, %rax
jae 0x1f22c
movq -0x2270(%rbp), %rdi
movq 0x10(%rbp), %rax
movq %rax, -0x2428(%rbp)
addq $0xc8, %rdi
movl -0x20bc(%rbp), %eax
movl %eax, %esi
callq 0x16eb0
movq -0x2428(%rbp), %rdi
movq %rax, %rsi
callq 0x6380
movq %rax, -0x2420(%rbp)
jmp 0x1f201
movq -0x2420(%rbp), %rdi
movq 0x32d59(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1f216
jmp 0x1f218
movl -0x20bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20bc(%rbp)
jmp 0x1f194
movq 0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x6530
jmp 0x1f239
movq 0x10(%rbp), %rdi
callq 0x6250
jmp 0x1f244
movq 0x18(%rbp), %rdi
callq 0x6250
jmp 0x1f24f
movq 0x10(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6030
movb %al, -0x2429(%rbp)
jmp 0x1f26a
movb -0x2429(%rbp), %al
testb $0x1, %al
jne 0x1f29d
jmp 0x1f276
movq 0x18(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6030
movb %al, -0x242a(%rbp)
jmp 0x1f291
movb -0x242a(%rbp), %al
testb $0x1, %al
jne 0x1f29d
jmp 0x1f2f6
movq 0x32d4c(%rip), %rdi     # 0x51ff0
leaq 0x2705e(%rip), %rsi     # 0x46309
callq 0x6410
movq %rax, -0x2438(%rbp)
jmp 0x1f2b9
movq -0x2438(%rbp), %rdi
movq 0x32ca1(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1f2ce
movl $0x4, %edi
callq 0x61f0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x32c68(%rip), %rsi     # 0x51f50
xorl %eax, %eax
movl %eax, %edx
callq 0x67f0
jmp 0x1f404
movq -0x2270(%rbp), %rdi
callq 0x147f0
testb $0x1, %al
jne 0x1f30b
jmp 0x1f3ce
leaq -0x2248(%rbp), %rdi
callq 0x6280
jmp 0x1f319
leaq -0x2238(%rbp), %rdi
leaq 0x27111(%rip), %rsi     # 0x46438
callq 0x6410
movq %rax, -0x2440(%rbp)
jmp 0x1f335
movq -0x2440(%rbp), %rdi
movq 0x32c25(%rip), %rsi     # 0x51f68
callq 0x6470
jmp 0x1f34a
leaq -0x2268(%rbp), %rdi
leaq -0x2248(%rbp), %rsi
callq 0x6400
jmp 0x1f35f
movq -0x2270(%rbp), %rdi
leaq -0x2268(%rbp), %rsi
callq 0x14810
jmp 0x1f374
leaq -0x2268(%rbp), %rdi
callq 0x69a8
leaq -0x2248(%rbp), %rdi
callq 0x62c0
jmp 0x1f3ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x1f3c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x2268(%rbp), %rdi
callq 0x69a8
leaq -0x2248(%rbp), %rdi
callq 0x62c0
jmp 0x1f3e4
leaq -0x218(%rbp), %rdi
callq 0x14c50
addq $0x2468, %rsp           # imm = 0x2468
popq %rbx
popq %rbp
retq
leaq -0x218(%rbp), %rdi
callq 0x14c50
movq -0x1d0(%rbp), %rdi
callq 0x6850
movq %rax, %rdi
callq 0x147e0
nopw %cs:(%rax,%rax)
nop