// File: /workspace/github_cpp_makefile_star2_O1/BenLangmead[P]bowtie/./reference.h
// Function: BitPairReference::BitPairReference(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, EList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 128>*, EList<SString<char>, 128>*, bool, bool, bool, bool, bool, bool, bool)
BitPairReference(const string& in,
	                 bool sanity,
	                 EList<string>* infiles,
	                 EList<BTRefString >* origs,
	                 bool infilesSeq,
	                 bool loadSequence, // as opposed to just records
	                 bool useMm,
	                 bool useShmem,
	                 bool mmSweep,
	                 bool verbose,
	                 bool startVerbose) :
	buf_(NULL),
	sanityBuf_(NULL),
	loaded_(true),
	sanity_(sanity),
	useMm_(useMm),
	useShmem_(useShmem),
	verbose_(verbose)
	{
		string s3 = in + ".3." + gEbwt_ext;
		string s4 = in + ".4." + gEbwt_ext;

		FILE *f3, *f4;
		if((f3 = fopen(s3.c_str(), "rb")) == NULL) {
			cerr << "Could not open reference-string index file " << s3 << " for reading." << endl;
			cerr << "This is most likely because your index was built with an older version" << endl
			     << "(<= 0.9.8.1) of bowtie-build.  Please re-run bowtie-build to generate a new" << endl
			     << "index (or download one from the Bowtie website) and try again." << endl;
			loaded_ = false;
			return;
		}
		if((f4 = fopen(s4.c_str(), "rb")) ==NULL) {
			cerr << "Could not open reference-string index file " << s4 << " for reading." << endl;
			loaded_ = false;
			return;
		}
#ifdef BOWTIE_MM
		char *mmFile = NULL;
		if(useMm_) {
			if(verbose_ || startVerbose) {
				cerr << "  Memory-mapping reference index file " << s4 << ": ";
				logTime(cerr);
			}
			struct stat sbuf;
			if (stat(s4.c_str(), &sbuf) == -1) {
				perror("stat");
				cerr << "Error: Could not stat index file " << s4.c_str() << " prior to memory-mapping" << endl;
				throw 1;
			}
			mmFile = (char*)mmap((void *)0, sbuf.st_size,
			                     PROT_READ, MAP_SHARED, fileno(f4), 0);
			if(mmFile == (void *)(-1) || mmFile == NULL) {
				perror("mmap");
				cerr << "Error: Could not memory-map the index file " << s4.c_str() << endl;
				throw 1;
			}
			if(mmSweep) {
				TIndexOff sum = 0;
				for(off_t i = 0; i < sbuf.st_size; i += 1024) {
					sum += (TIndexOff) mmFile[i];
				}
				if(startVerbose) {
					cerr << "  Swept the memory-mapped ref index file; checksum: " << sum << ": ";
					logTime(cerr);
				}
			}
		}
#endif

		// Read endianness sentinel, set 'swap'
		uint32_t one;
		bool swap = false;
		one = readU<int32_t>(f3, swap);
		if(one != 1) {
			if(useMm_) {
				cerr << "Error: Can't use memory-mapped files when the index is the opposite endianness" << endl;
				throw 1;
			}
			assert_eq(0x1000000, one);
			swap = true; // have to endian swap U32s
		}

		// Read # records
		TIndexOffU sz;
		sz = readU<TIndexOffU>(f3, swap);
		if(sz == 0) {
			cerr << "Error: number of reference records is 0 in " << s3 << endl;
			throw 1;
		}

		// Read records
		nrefs_ = 0;
		nNoGapRefs_ = 0;

		// Cumulative count of all unambiguous characters on a per-
		// stretch 8-bit alignment (i.e. count of bytes we need to
		// allocate in buf_)
		TIndexOffU cumsz = 0;
		TIndexOffU cumlen = 0;
		TIndexOffU unambiglen = 0;
		TIndexOffU maxlen = 0;
		// For each unambiguous stretch...
		for(TIndexOffU i = 0; i < sz; i++) {
			recs_.push_back(RefRecord(f3, swap));
		}
		for(TIndexOffU i = 0; i < sz; i++) {
			if(recs_[i].first) {
				if(nrefs_ > 0) {
					refLens_.push_back(cumlen);
				}
				// Stupid hack to get around the fact that, for
				// colorspace Ebwts, not only do we omit reference
				// sequences that are *all* gaps from
				// nPat/plen/refnames, but we also omit reference
				// sequences that never have a stretch of more than 1
				// unambiguous character.
				if(unambiglen > 0 && maxlen > 1) {
					refApproxLens_.push_back(cumlen);
				}
				// More hackery to detect references that won't be
				// in the Ebwt even though they have non-zero length
				bool willBeInEbwt = true;
				if(recs_[i].len > 0 && willBeInEbwt) {
					// Remember that this is the first record for this
					// reference sequence (and the last record for the one
					// before)
					refRecOffs_.push_back(i);
					refOffs_.push_back(cumsz);
					expandIdx_.push_back(nrefs_);
					shrinkIdx_.push_back(nNoGapRefs_);
					nNoGapRefs_++;
					isGaps_.push_back(false);
				} else {
					shrinkIdx_.push_back(nNoGapRefs_);
					isGaps_.push_back(true);
				}
				cumlen = 0;
				unambiglen = 0;
				maxlen = 0;
				nrefs_++;
				assert_eq(nNoGapRefs_, expandIdx_.size());
				assert_eq(nrefs_, shrinkIdx_.size());
			} else if(i == 0) {
				//cerr << "First record in reference index file was not marked as 'first'" << endl;
				//throw 1;
			}
			cumUnambig_.push_back(cumsz);
			cumRefOff_.push_back(cumlen);
			cumsz += recs_[i].len;
#ifdef ACCOUNT_FOR_ALL_GAP_REFS
			cumlen += recs_[i].off;
			cumlen += recs_[i].len;
#else
			if(recs_[i].len > 0) {
				cumlen += recs_[i].off;
				cumlen += recs_[i].len;
			}
#endif
			unambiglen += recs_[i].len;
			if(recs_[i].len > maxlen) maxlen = recs_[i].len;
		}
		if(verbose_ || startVerbose) {
			cerr << "Read " << nrefs_ << " reference strings (" << nNoGapRefs_ << " non-empty) from " << sz << " records: ";
			logTime(cerr);
		}
		// Store a cap entry for the end of the last reference seq
		refRecOffs_.push_back((TIndexOffU)recs_.size());
		refOffs_.push_back(cumsz);
		if(unambiglen > 0 && maxlen > 1) {
			refApproxLens_.push_back(cumlen);
		}
		refLens_.push_back(cumlen);
		cumUnambig_.push_back(cumsz);
		cumRefOff_.push_back(cumlen);
		bufSz_ = cumsz;
		assert_eq(nNoGapRefs_, refApproxLens_.size());
		assert_eq(sz, recs_.size());
		if (f3 != NULL) fclose(f3); // done with .3.ebwt file
		// Round cumsz up to nearest byte boundary
		if((cumsz & 3) != 0) {
			cumsz += (4 - (cumsz & 3));
		}
		bufAllocSz_ = cumsz >> 2;
		assert_eq(0, cumsz & 3); // should be rounded up to nearest 4
		if(!loadSequence) return;
		if(useMm_) {
#ifdef BOWTIE_MM
			buf_ = (uint8_t*)mmFile;
			if(sanity_) {
				FILE *ftmp = fopen(s4.c_str(), "rb");
				sanityBuf_ = new uint8_t[cumsz >> 2];
				size_t ret = fread(sanityBuf_, 1, cumsz >> 2, ftmp);
				if(ret != (cumsz >> 2)) {
					cerr << "Only read " << ret << " bytes (out of " << (cumsz >> 2) << ") from reference index file " << s4 << endl;
					throw 1;
				}
				fclose(ftmp);
				for(size_t i = 0; i < (cumsz >> 2); i++) {
					assert_eq(sanityBuf_[i], buf_[i]);
				}
			}
#else
			cerr << "Shouldn't be at " << __FILE__ << ":" << __LINE__ << " without BOWTIE_MM defined" << endl;
			throw 1;
#endif
		} else {
			bool shmemLeader = true;
			if(!useShmem_) {
				// Allocate a buffer to hold the reference string
				try {
					buf_ = new uint8_t[cumsz >> 2];
					if(buf_ == NULL) throw std::bad_alloc();
				} catch(std::bad_alloc& e) {
					cerr << "Error: Ran out of memory allocating space for the bitpacked reference.  Please" << endl
						 << "re-run on a computer with more memory." << endl;
					throw 1;
				}
			} else {
				shmemLeader = ALLOC_SHARED_U8(
					(s4 + "[ref]"), (cumsz >> 2), &buf_,
					"ref", (verbose_ || startVerbose));
			}
			if(shmemLeader) {
				// Open the bitpair-encoded reference file
				FILE *f4 = fopen(s4.c_str(), "rb");
				if(f4 == NULL) {
					cerr << "Could not open reference-string index file " << s4 << " for reading." << endl;
					cerr << "This is most likely because your index was built with an older version" << endl
						 << "(<= 0.9.8.1) of bowtie-build.  Please re-run bowtie-build to generate a new" << endl
						 << "index (or download one from the Bowtie website) and try again." << endl;
					loaded_ = false;
					return;
				}
				// Read the whole thing in
				size_t ret = fread(buf_, 1, cumsz >> 2, f4);
				// Didn't read all of it?
				if(ret != (cumsz >> 2)) {
					cerr << "Only read " << ret << " bytes (out of " << (cumsz >> 2) << ") from reference index file " << s4 << endl;
					throw 1;
				}
				// Make sure there's no more
				char c;
				ret = fread(&c, 1, 1, f4);
				assert_eq(0, ret); // should have failed
				fclose(f4);
				if(useShmem_) NOTIFY_SHARED(buf_, (cumsz >> 2));
			} else {
				if(useShmem_) WAIT_SHARED(buf_, (cumsz >> 2));
			}
		}

		// Populate byteToU32_
		bool big = currentlyBigEndian();
		for(int i = 0; i < 256; i++) {
			uint32_t word = 0;
			if(big) {
				word |= ((i >> 0) & 3) << 24;
				word |= ((i >> 2) & 3) << 16;
				word |= ((i >> 4) & 3) << 8;
				word |= ((i >> 6) & 3) << 0;
			} else {
				word |= ((i >> 0) & 3) << 0;
				word |= ((i >> 2) & 3) << 8;
				word |= ((i >> 4) & 3) << 16;
				word |= ((i >> 6) & 3) << 24;
			}
			byteToU32_[i] = word;
		}

#ifndef NDEBUG
		if(sanity_) {
			// Compare the sequence we just read from the compact index
			// file to the true reference sequence.
			EList<BTRefString > *os; // for holding references
			EList<BTRefString > osv; // for holding references
			if(infiles != NULL) {
				if(infilesSeq) {
					for(size_t i = 0; i < infiles->size(); i++) {
						// Remove initial backslash; that's almost
						// certainly being used to protect the first
						// character of the sequence from getopts (e.g.,
						// when the first char is -)
						if((*infiles)[i].at(0) == '\\') {
							(*infiles)[i].erase(0, 1);
						}
						osv.push_back(BTRefString((*infiles)[i].c_str(), true));
					}
				} else {
					readSequenceFiles(*infiles, osv);
				}
				os = &osv;
			} else {
				assert(origs != NULL);
				os = origs;
			}

			// Go through the loaded reference files base-by-base and
			// sanity check against what we get by calling getBase and
			// getStretch
			size_t refi = 0;
			int longestStretch = 0;
			int curStretch = 0;
			for(size_t i = 0; i < os->size(); i++) {
				size_t olen = (*os)[i].length();
				for(size_t j = 0; j < olen; j++) {
					if((int)(*os)[i][j] < 4) {
						curStretch++;
						if(curStretch > longestStretch) longestStretch = curStretch;
					} else {
						curStretch = 0;
					}
				}
				if(longestStretch == 0) {
					continue;
				}
				longestStretch = 0;
				size_t olenU32 = (olen + 12) / 4;
				uint32_t *buf = new uint32_t[olenU32];
				uint8_t *bufadj = (uint8_t*)buf;
				bufadj += getStretch(buf, refi, 0, olen);
				for(size_t j = 0; j < olen; j++) {
					assert_eq((int)(*os)[i][j], (int)bufadj[j]);
					assert_eq((int)(*os)[i][j], (int)getBase(refi, j));
				}
				refi++;
				delete[] buf;
			}
		}
#endif
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x421e8, %rsp          # imm = 0x421E8
movl %r9d, 0xa4(%rsp)
movq %r8, %r15
movq %rcx, 0x28(%rsp)
movq %rsi, %rbx
movq %rdi, %r14
movb 0x42240(%rsp), %al
movb 0x42230(%rsp), %cl
movb 0x42228(%rsp), %sil
addq $0x400, %rdi            # imm = 0x400
movq %rdi, 0x20(%rsp)
movabsq $-0x100000000, %r10     # imm = 0xFFFFFFFF00000000
movq %r10, 0x400(%r14)
xorl %edi, %edi
movq %rdi, 0x408(%r14)
movl $0x80, %r8d
movq %r8, 0x410(%r14)
movq %rdi, 0x418(%r14)
leaq 0x420(%r14), %r9
movq %r9, 0x60(%rsp)
movq %r10, 0x420(%r14)
movq %rdi, 0x428(%r14)
movq %r8, 0x430(%r14)
movq %rdi, 0x438(%r14)
leaq 0x440(%r14), %r9
movq %r9, 0x68(%rsp)
movq %r10, 0x440(%r14)
movq %rdi, 0x448(%r14)
movq %r8, 0x450(%r14)
movq %rdi, 0x458(%r14)
leaq 0x460(%r14), %r9
movq %r9, 0x70(%rsp)
movq %r10, 0x460(%r14)
movq %rdi, 0x468(%r14)
movq %r8, 0x470(%r14)
movq %rdi, 0x478(%r14)
movq %r10, 0x480(%r14)
movq %rdi, 0x488(%r14)
movq %r8, 0x490(%r14)
movq %rdi, 0x498(%r14)
movq %r10, 0x4a0(%r14)
movq %rdi, 0x4a8(%r14)
movq %r8, 0x4b0(%r14)
movq %rdi, 0x4b8(%r14)
movq %r10, 0x4c0(%r14)
movq %rdi, 0x4c8(%r14)
movq %r8, 0x4d0(%r14)
movq %rdi, 0x4d8(%r14)
movq %r10, 0x4e0(%r14)
movq %rdi, 0x4e8(%r14)
movq %r8, 0x4f0(%r14)
movq %rdi, 0x4f8(%r14)
movq %r10, 0x500(%r14)
movq %rdi, 0x508(%r14)
movq %r8, 0x510(%r14)
movq %rdi, 0x518(%r14)
movq %r10, 0x520(%r14)
movq %rdi, 0x528(%r14)
movq %r8, 0x530(%r14)
leaq 0x480(%r14), %r8
movq %r8, 0x90(%rsp)
movq %rdi, 0x548(%r14)
leaq 0x4a0(%r14), %rdi
movq %rdi, 0x98(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x538(%r14)
movb $0x1, 0x56c(%r14)
movb %dl, 0x56d(%r14)
movb %sil, 0x56e(%r14)
movb %cl, 0x56f(%r14)
movb %al, 0x570(%r14)
leaq 0x1b0(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x4c0(%r14), %rax
movq %rax, 0x78(%rsp)
leaq 0x4e0(%r14), %rax
movq %rax, 0x110(%rsp)
leaq 0x500(%r14), %rax
movq %rax, 0x80(%rsp)
leaq 0x520(%r14), %rax
movq %rax, 0x88(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x21b84
movq %r14, 0x8(%rsp)
leaq 0x19ae1(%rip), %rsi     # 0x2e956
leaq 0x1a0(%rsp), %rdi
callq 0x46a0
leaq 0x24267(%rip), %r14     # 0x390f0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
leaq 0x1a0(%rsp), %rdi
callq 0x4110
leaq 0xb8(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14ecd
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
jmp 0x14ed3
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xb0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x14f0b
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4340
leaq 0x1a0(%rsp), %rdi
movq %r12, (%rdi)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
callq 0x21b84
leaq 0x19a2e(%rip), %rsi     # 0x2e95a
leaq 0x1a0(%rsp), %rdi
callq 0x46a0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
leaq 0x1a0(%rsp), %rdi
callq 0x4110
leaq 0x50(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x8(%rsp), %r14
je 0x14f79
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x14f7f
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x14fb4
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xa8(%rsp), %rdi
leaq 0x18450(%rip), %rsi     # 0x2d413
callq 0x4390
testq %rax, %rax
je 0x1512f
movq %rax, %r12
movq 0x40(%rsp), %rdi
leaq 0x18433(%rip), %rsi     # 0x2d413
callq 0x4390
testq %rax, %rax
je 0x15265
movq %r12, 0x108(%rsp)
movb 0x42248(%rsp), %bpl
cmpb $0x1, 0x56e(%r14)
jne 0x152de
movq %rax, %rbx
movb 0x570(%r14), %al
orb %bpl, %al
cmpb $0x1, %al
jne 0x15064
movq 0x21fcc(%rip), %rdi     # 0x36ff0
leaq 0x19a3f(%rip), %rsi     # 0x2ea6a
movl $0x26, %edx
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x21faa(%rip), %rdi     # 0x36ff0
callq 0x43b0
leaq 0x189ec(%rip), %rsi     # 0x2da3e
movl $0x2, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa971
movq 0x40(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x4600
cmpl $-0x1, %eax
je 0x16309
movq 0x1d0(%rsp), %r12
movq %rbx, %rdi
callq 0x4360
xorl %edi, %edi
movq %r12, %rsi
movl $0x1, %edx
movl $0x1, %ecx
movl %eax, %r8d
xorl %r9d, %r9d
callq 0x42f0
movq %rax, %r13
incq %rax
cmpq $0x1, %rax
jbe 0x162cf
cmpb $0x0, 0x42238(%rsp)
je 0x15127
xorl %ebx, %ebx
testq %r12, %r12
jle 0x150e2
xorl %eax, %eax
movq %r13, %rdx
movsbq (%rdx,%rax), %rcx
addq %rcx, %rbx
addq $0x400, %rax            # imm = 0x400
cmpq %r12, %rax
jl 0x150cf
testb %bpl, %bpl
je 0x15127
movq 0x21f02(%rip), %rdi     # 0x36ff0
leaq 0x1999c(%rip), %rsi     # 0x2ea91
movl $0x34, %edx
callq 0x43b0
movq 0x21eea(%rip), %rdi     # 0x36ff0
movq %rbx, %rsi
callq 0x42e0
leaq 0x18929(%rip), %rsi     # 0x2da3e
movl $0x2, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa971
movq %r13, %rbp
jmp 0x152e0
movq 0x21eba(%rip), %rdi     # 0x36ff0
leaq 0x19821(%rip), %rsi     # 0x2e95e
movl $0x2b, %edx
callq 0x43b0
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x21e92(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rbx
leaq 0x1981d(%rip), %rsi     # 0x2e98a
movl $0xd, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq 0x21e48(%rip), %rbx     # 0x36ff0
leaq 0x197e9(%rip), %rsi     # 0x2e998
movl $0x46, %edx
movq %rbx, %rdi
callq 0x43b0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq 0x21e16(%rip), %rdi     # 0x36ff0
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %rbx
leaq 0x197ee(%rip), %rsi     # 0x2e9df
movl $0x4b, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %rbx
leaq 0x197fc(%rip), %rsi     # 0x2ea2b
movl $0x3e, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
jmp 0x152d1
movq 0x21d84(%rip), %rdi     # 0x36ff0
leaq 0x196eb(%rip), %rsi     # 0x2e95e
movl $0x2b, %edx
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x21d62(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rbx
leaq 0x196ed(%rip), %rsi     # 0x2e98a
movl $0xd, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movb $0x0, 0x56c(%r14)
jmp 0x1627c
xorl %ebp, %ebp
leaq 0x1a0(%rsp), %rdi
movl $0x1, %esi
movl $0x4, %edx
movq 0x108(%rsp), %r13
movq %r13, %rcx
callq 0x44e0
cmpq $0x4, %rax
jne 0x16cc3
movl 0x1a0(%rsp), %ebx
cmpq $0x1, %rbx
je 0x15333
cmpb $0x1, 0x56e(%r14)
je 0x1723f
cmpl $0x1000000, %ebx        # imm = 0x1000000
jne 0x17289
leaq 0x1a0(%rsp), %rdi
movl $0x1, %esi
movl $0x8, %edx
movq %r13, %rcx
callq 0x44e0
cmpq $0x8, %rax
jne 0x16cda
movq 0x1a0(%rsp), %rax
movq %rax, %rdx
bswapq %rdx
cmpl $0x1, %ebx
cmoveq %rax, %rdx
testq %rdx, %rdx
je 0x16cf9
leaq 0x540(%r14), %rax
movq %rax, 0x38(%rsp)
xorl %eax, %eax
movq %rax, 0x560(%r14)
leaq 0x568(%r14), %rcx
movq %rcx, 0x18(%rsp)
movl $0x0, 0x568(%r14)
movq %rax, (%rsp)
movq %rax, 0x30(%rsp)
leaq 0x1a0(%rsp), %r12
movq %rdx, 0x10(%rsp)
movq %rdx, %r14
xorl %edx, %edx
cmpl $0x1, %ebx
setne %dl
movq %r12, %rdi
movq %r13, %rsi
callq 0x1f310
movq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0x1f2a0
decq %r14
jne 0x153ba
movq %rbp, 0x158(%rsp)
leaq 0x1a0(%rsp), %rax
movq $0x0, (%rax)
xorl %ebx, %ebx
movq %rsp, %rbp
leaq 0x30(%rsp), %r12
xorl %r13d, %r13d
xorl %esi, %esi
movq 0x8(%rsp), %r14
movq 0x20(%rsp), %rdi
callq 0x1f3ee
cmpb $0x1, 0x10(%rax)
jne 0x15556
cmpq $0x0, 0x560(%r14)
je 0x15435
movq 0x68(%rsp), %rdi
movq %r12, %rsi
callq 0x1f4b6
testq %rbx, %rbx
leaq 0xc8(%rsp), %rbx
je 0x15460
cmpq $0x2, %r13
jb 0x15460
movl 0x30(%rsp), %eax
movl %eax, 0xc8(%rsp)
movq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f51c
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
cmpq $0x0, 0x8(%rax)
je 0x154e9
movq 0x78(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x1f4b6
movq 0x70(%rsp), %rdi
movq %rbp, %rsi
callq 0x1f4b6
movl 0x560(%r14), %eax
movl %eax, 0xc8(%rsp)
movq 0x110(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f51c
movq 0x80(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x1f51c
movq 0x18(%rsp), %rax
incl (%rax)
movb $0x0, 0xc8(%rsp)
movq 0x88(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f580
jmp 0x15513
movq 0x80(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x1f51c
movb $0x1, 0xc8(%rsp)
movq 0x88(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f580
movq $0x0, 0x30(%rsp)
movq 0x4f8(%r14), %rcx
movq 0x560(%r14), %rax
incq %rax
movq %rax, 0x560(%r14)
movl 0x568(%r14), %edx
cmpq %rdx, %rcx
jne 0x16961
cmpq 0x518(%r14), %rax
jne 0x167d5
xorl %r13d, %r13d
xorl %ebx, %ebx
movq 0x90(%rsp), %rdi
movq %rbp, %rsi
callq 0x1f4b6
movq 0x98(%rsp), %rdi
movq %r12, %rsi
callq 0x1f4b6
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
movq 0x8(%rax), %rax
addq %rax, (%rsp)
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
cmpq $0x0, 0x8(%rax)
je 0x155de
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
movq (%rax), %rax
addq %rax, 0x30(%rsp)
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
movq 0x8(%rax), %rax
addq %rax, 0x30(%rsp)
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
addq 0x8(%rax), %rbx
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
cmpq %r13, 0x8(%rax)
jbe 0x15622
movq 0x1a0(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x1f3ee
movq 0x8(%rax), %r13
movq 0x1a0(%rsp), %rsi
incq %rsi
movq %rsi, 0x1a0(%rsp)
cmpq 0x10(%rsp), %rsi
jb 0x1540a
movb 0x570(%r14), %al
orb 0x42248(%rsp), %al
movq 0x108(%rsp), %rbp
je 0x156ea
movq 0x2198d(%rip), %rdi     # 0x36ff0
leaq 0x19512(%rip), %rsi     # 0x2eb7c
movl $0x5, %edx
callq 0x43b0
movq 0x560(%r14), %rsi
movq 0x2196e(%rip), %rdi     # 0x36ff0
callq 0x41d0
movq %rax, %r12
leaq 0x194f1(%rip), %rsi     # 0x2eb82
movl $0x14, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq %r12, %rdi
callq 0x41d0
movq %rax, %r12
leaq 0x194e0(%rip), %rsi     # 0x2eb97
movl $0x11, %edx
movq %rax, %rdi
callq 0x43b0
movq %r12, %rdi
movq 0x10(%rsp), %rsi
callq 0x41d0
leaq 0x194d1(%rip), %rsi     # 0x2eba9
movl $0xa, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa971
movq 0x418(%r14), %rax
leaq 0x1a0(%rsp), %rsi
movq %rax, (%rsi)
movq 0x78(%rsp), %rdi
callq 0x1f4b6
movq %rsp, %rsi
movq 0x70(%rsp), %rdi
callq 0x1f4b6
testq %rbx, %rbx
je 0x15736
cmpq $0x2, %r13
jb 0x15736
movl 0x30(%rsp), %eax
leaq 0x1a0(%rsp), %rsi
movl %eax, (%rsi)
movq 0x60(%rsp), %rdi
callq 0x1f51c
leaq 0x30(%rsp), %rsi
movq 0x68(%rsp), %rdi
callq 0x1f4b6
movq %rsp, %rsi
movq 0x90(%rsp), %rdi
callq 0x1f4b6
leaq 0x30(%rsp), %rsi
movq 0x98(%rsp), %rdi
callq 0x1f4b6
movq (%rsp), %rax
movq %rax, 0x550(%r14)
movl 0x568(%r14), %eax
cmpq %rax, 0x438(%r14)
jne 0x16d5b
movq 0x10(%rsp), %rax
cmpq 0x418(%r14), %rax
movb 0x42248(%rsp), %bl
jne 0x16ed3
movq %rbp, %rdi
callq 0x4320
movq (%rsp), %rax
testb $0x3, %al
je 0x157bb
andq $-0x4, %rax
addq $0x4, %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movq %rax, %rdi
shrq $0x2, %rdi
movq %rdi, 0x558(%r14)
testb $0x3, %al
movq 0x158(%rsp), %rax
jne 0x17047
cmpb $0x0, 0x42220(%rsp)
je 0x1627c
movq 0x8(%rsp), %r14
cmpb $0x1, 0x56e(%r14)
jne 0x158b5
movq %rax, 0x540(%r14)
cmpb $0x0, 0x56d(%r14)
je 0x15b6b
movq 0x40(%rsp), %rdi
leaq 0x17bf4(%rip), %rsi     # 0x2d413
callq 0x4390
movq %rax, %rbx
movq (%rsp), %r12
shrq $0x2, %r12
movq %r12, %rdi
callq 0x4030
movq 0x8(%rsp), %rcx
movq %rax, 0x548(%rcx)
movl $0x1, %esi
movq %rax, %rdi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x44e0
movq %rax, %r12
movq (%rsp), %rax
shrq $0x2, %rax
cmpq %rax, %r12
jne 0x173fb
movq %rbx, %rdi
callq 0x4320
movq (%rsp), %rax
cmpq $0x4, %rax
jb 0x15b6b
shrq $0x2, %rax
movq 0x8(%rsp), %rdx
movq 0x540(%rdx), %rcx
movq 0x548(%rdx), %rdx
xorl %r14d, %r14d
movb (%rdx,%r14), %sil
cmpb (%rcx,%r14), %sil
jne 0x16ae3
incq %r14
cmpq %r14, %rax
jne 0x1589a
jmp 0x15b6b
cmpb $0x0, 0x56f(%r14)
je 0x1597a
leaq 0x148(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x138(%rsp), %rdi
callq 0x21b84
leaq 0x19371(%rip), %rsi     # 0x2ec62
leaq 0x138(%rsp), %rdi
callq 0x46a0
movq (%rsp), %rsi
shrq $0x2, %rsi
movq 0x8(%rsp), %r14
orb 0x570(%r14), %bl
movzbl %bl, %r8d
leaq 0x19cbf(%rip), %rcx     # 0x2f5dc
leaq 0x138(%rsp), %rdi
movq 0x38(%rsp), %rdx
callq 0x11760
movl %eax, %ebx
movq 0x138(%rsp), %rdi
cmpq %r12, %rdi
je 0x1594e
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x4340
testb %bl, %bl
jne 0x15987
cmpb $0x1, 0x56f(%r14)
jne 0x15b6b
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq (%rsp), %rsi
shrq $0x2, %rsi
callq 0x2b904
jmp 0x15b6b
callq 0x4030
movq 0x38(%rsp), %rcx
movq %rax, (%rcx)
movq 0x40(%rsp), %rdi
leaq 0x17a80(%rip), %rsi     # 0x2d413
callq 0x4390
movq %rax, %rbx
testq %rax, %rax
je 0x15a28
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq (%rsp), %rdx
shrq $0x2, %rdx
movl $0x1, %esi
movq %rbx, %rcx
callq 0x44e0
movq %rax, %r12
movq (%rsp), %rax
shrq $0x2, %rax
cmpq %rax, %r12
jne 0x174a0
leaq 0x1a0(%rsp), %rdi
movl $0x1, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x44e0
testq %rax, %rax
jne 0x17545
movq %rbx, %rdi
callq 0x4320
cmpb $0x1, 0x56f(%r14)
jne 0x15b62
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq (%rsp), %rsi
shrq $0x2, %rsi
callq 0x2b8fc
jmp 0x15b62
movq 0x215c1(%rip), %rdi     # 0x36ff0
leaq 0x18f28(%rip), %rsi     # 0x2e95e
movl $0x2b, %edx
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x2159f(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %r12
leaq 0x18f2a(%rip), %rsi     # 0x2e98a
movl $0xd, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %r12, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq 0x21554(%rip), %r12     # 0x36ff0
leaq 0x18ef5(%rip), %rsi     # 0x2e998
movl $0x46, %edx
movq %r12, %rdi
callq 0x43b0
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq 0x21521(%rip), %rdi     # 0x36ff0
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %r12
leaq 0x18ef9(%rip), %rsi     # 0x2e9df
movl $0x4b, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %r12, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %r12
leaq 0x18f06(%rip), %rsi     # 0x2ea2b
movl $0x3e, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x4300
movsbl %al, %esi
movq %r12, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movb $0x0, 0x56c(%r14)
testq %rbx, %rbx
je 0x1627c
xorl %eax, %eax
xorl %ecx, %ecx
xorl %edx, %edx
xorl %esi, %esi
movq 0x8(%rsp), %r9
movl %esi, %edi
andl $0x3, %edi
movl %eax, %r8d
andl $0x300, %r8d            # imm = 0x300
orl %edi, %r8d
movl %ecx, %edi
andl $0x30000, %edi          # imm = 0x30000
orl %r8d, %edi
movl %edx, %r8d
andl $0x3000000, %r8d        # imm = 0x3000000
orl %edi, %r8d
movl %r8d, (%r9,%rsi,4)
incq %rsi
addl $0x40000, %edx          # imm = 0x40000
addl $0x1000, %ecx           # imm = 0x1000
addl $0x40, %eax
cmpq $0x100, %rsi            # imm = 0x100
jne 0x15b78
cmpb $0x0, 0x56d(%r9)
je 0x1627c
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x118(%rsp)
xorl %eax, %eax
movq %rax, 0x120(%rsp)
movq $0x80, 0x128(%rsp)
movq %rax, 0x130(%rsp)
movq 0x28(%rsp), %rax
testq %rax, %rax
je 0x15cf2
movq 0x18(%rax), %rax
leaq 0x118(%rsp), %r15
cmpb $0x0, 0xa4(%rsp)
je 0x15d1a
testq %rax, %rax
je 0x16125
leaq 0x1a8(%rsp), %r14
xorl %ebx, %ebx
leaq 0x2106f(%rip), %r13     # 0x36cb0
leaq 0x1a0(%rsp), %r12
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x17b9e
movq 0x8(%rax), %rdx
testq %rdx, %rdx
je 0x16cb3
movq (%rax), %rax
cmpb $0x5c, (%rax)
jne 0x15c87
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x17b9e
movl $0x1, %edx
movq %rax, %rdi
xorl %esi, %esi
callq 0x40a0
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x17b9e
movq (%rax), %rbp
movq %r13, 0x1a0(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
movq $0x0, 0x10(%r14)
movl $0x1, %esi
movq %r12, %rdi
callq 0x1032c
movq 0x1a8(%rsp), %rax
movb (%rbp), %cl
movb %cl, (%rax)
movq %r15, %rdi
movq %r12, %rsi
callq 0x1f5e4
movq %r12, %rdi
callq 0x10b48
incq %rbx
movq 0x28(%rsp), %rdi
cmpq 0x18(%rdi), %rbx
jb 0x15c4e
jmp 0x16125
testq %r15, %r15
jne 0x16125
leaq 0x18f66(%rip), %rdi     # 0x2ec68
leaq 0x18acc(%rip), %rsi     # 0x2e7d5
leaq 0x18db6(%rip), %rcx     # 0x2eac6
movl $0x14d, %edx            # imm = 0x14D
callq 0x41c0
testq %rax, %rax
je 0x16125
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x10(%rsp)
leaq 0xe8(%rsp), %r14
leaq 0x180(%rsp), %rbx
xorl %r12d, %r12d
movq 0x28(%rsp), %rdi
movq %r12, 0x18(%rsp)
movq %r12, %rsi
callq 0x17a08
movq %rax, %rbp
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0xc8(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xd0(%rsp)
movl $0x80, %edx
movq %rdx, 0xd8(%rsp)
movq %rcx, 0xe0(%rsp)
movq %rax, 0x180(%rsp)
movq %rcx, 0x188(%rsp)
movq %rdx, 0x190(%rsp)
movq %rcx, 0x198(%rsp)
movq (%rbp), %rdi
leaq 0x179bc(%rip), %rsi     # 0x2d76d
callq 0x4390
testq %rax, %rax
je 0x171b5
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
movaps %xmm0, 0x1b0(%rsp)
movl $0x40000, %ecx          # imm = 0x40000
movq %rcx, 0x1c8(%rsp)
movq %rcx, 0x1c0(%rsp)
movb $0x0, 0x1d0(%rsp)
movq $0x0, 0x401d8(%rsp)
movq %rax, 0x1a0(%rsp)
movq $0x0, 0xe8(%rsp)
leaq 0xc8(%rsp), %rdi
movq %r14, %r12
movq %r14, %rsi
callq 0x1f4b6
movq $0x0, 0xe8(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1f4b6
leaq 0xc8(%rsp), %rdi
callq 0x210a8
movq %rax, %r12
movq %rbx, %rdi
callq 0x210a8
leaq 0x1a0(%rsp), %rdi
movq %r12, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x20f98
movq %rbx, %rdi
callq 0x210a8
cmpq $0x0, (%rax)
jne 0x15e89
leaq 0xc8(%rsp), %rdi
callq 0x21170
movq %rbx, %rdi
callq 0x21170
movq 0x1c0(%rsp), %rax
cmpq 0x1c8(%rsp), %rax
jne 0x15e03
testb $0x1, 0x1d0(%rsp)
je 0x15e03
leaq 0x1a0(%rsp), %rdi
callq 0x2146e
movq (%rbp), %rdi
leaq 0x178a8(%rip), %rsi     # 0x2d76d
callq 0x4390
testq %rax, %rax
je 0x171fa
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
movaps %xmm0, 0x1b0(%rsp)
movl $0x40000, %ecx          # imm = 0x40000
movq %rcx, 0x1c8(%rsp)
movq %rcx, 0x1c0(%rsp)
movb $0x0, 0x1d0(%rsp)
movq $0x0, 0x401d8(%rsp)
movq %rax, 0x1a0(%rsp)
xorl %ebp, %ebp
leaq 0xf8(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xf8(%rsp)
leaq 0xc8(%rsp), %rdi
movq %rbp, %rsi
callq 0xf7fa
movq (%rax), %rsi
incq %rsi
movq %r14, %rdi
callq 0x4550
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf7fa
movq (%rax), %rdi
callq 0x4030
movq %rax, %r13
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf7fa
movq (%rax), %r12
leaq 0x20d2a(%rip), %rax     # 0x36cb0
movq %rax, 0x160(%rsp)
xorps %xmm0, %xmm0
leaq 0x168(%rsp), %rax
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
testq %r12, %r12
je 0x15fcc
leaq 0x160(%rsp), %rdi
movq %r12, %rsi
callq 0x1032c
movq 0x168(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x4250
movq %r15, %rdi
leaq 0x160(%rsp), %r12
movq %r12, %rsi
callq 0x1f5e4
movq %r12, %rdi
callq 0x10b48
movq %r15, %rdi
callq 0x20e0c
leaq 0x1a0(%rsp), %rdi
movq %r14, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x20cca
movq %r15, %rdi
callq 0x20e0c
cmpq $0x0, 0x18(%rax)
je 0x16046
movq %r15, %rdi
callq 0x20e0c
movq 0x10(%rsp), %rcx
cmpq %rcx, 0x18(%rax)
jle 0x1609c
movq %r15, %rdi
callq 0x20e0c
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1032c
movq $0x0, 0x10(%rsp)
jmp 0x160b2
movq %r15, %rdi
callq 0x20ed6
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x16073
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x4340
incq %rbp
movq 0x1c0(%rsp), %rax
cmpq 0x1c8(%rsp), %rax
jne 0x15f19
testb $0x1, 0x1d0(%rsp)
je 0x15f19
jmp 0x160e4
movq %r15, %rdi
callq 0x20e0c
movq 0x10(%rsp), %rcx
subq 0x18(%rax), %rcx
movq %rcx, 0x10(%rsp)
xorl %r13d, %r13d
movq %r15, %rdi
callq 0x20e0c
cmpq 0x18(%rax), %r13
jae 0x1604e
movq %r15, %rdi
callq 0x20e0c
movq %rax, %rdi
movq %r13, %rsi
callq 0x10648
cmpb $0x0, (%rax)
js 0x1637e
incq %r13
jmp 0x160b5
leaq 0x1a0(%rsp), %rdi
callq 0x2146e
movq %rbx, %rdi
callq 0x1fee8
movq 0x18(%rsp), %r12
leaq 0xc8(%rsp), %rdi
callq 0x1fee8
cmpq $0x0, 0x10(%rsp)
jle 0x16125
incq %r12
movq 0x28(%rsp), %rdi
cmpq 0x18(%rdi), %r12
jb 0x15d45
cmpq $0x0, 0x18(%r15)
je 0x1626f
xorl %r13d, %r13d
xorl %r12d, %r12d
movq $0x0, 0x10(%rsp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq 0x18(%rax), %rbp
testq %rbp, %rbp
je 0x1619d
xorl %ebx, %ebx
xorl %r14d, %r14d
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
leal 0x1(%r12), %ecx
cmpl %r14d, %r12d
movl %ecx, %r12d
cmovll %r14d, %ecx
cmpb $0x4, (%rax)
cmovll %ecx, %r14d
movl $0x0, %eax
cmovgel %eax, %r12d
incq %rbx
cmpq %rbx, %rbp
jne 0x16158
testl %r14d, %r14d
sete %al
jmp 0x1619f
movb $0x1, %al
testb %al, %al
movq 0x8(%rsp), %rbx
jne 0x16262
movq %rbp, %rdi
andq $-0x4, %rdi
addq $0xc, %rdi
callq 0x4030
movq %rbx, %rdi
movq %rax, 0x28(%rsp)
movq %rax, %rsi
movq 0x10(%rsp), %rdx
xorl %ecx, %ecx
movq %rbp, %r8
callq 0x136de
testq %rbp, %rbp
je 0x16253
cltq
movq 0x28(%rsp), %rcx
addq %rax, %rcx
movq %rcx, 0x18(%rsp)
xorl %ebx, %ebx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %eax
movq 0x18(%rsp), %rcx
movzbl (%rcx,%rbx), %ecx
cmpl %ecx, %eax
jne 0x1662e
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %r14d
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f722
cmpl %r14d, %eax
jne 0x16473
incq %rbx
cmpq %rbx, %rbp
jne 0x161ec
incq 0x10(%rsp)
movq 0x28(%rsp), %rdi
callq 0x4420
incq %r13
cmpq 0x18(%r15), %r13
jb 0x1613f
leaq 0x118(%rsp), %rdi
callq 0x20966
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x16298
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x162bd
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4340
addq $0x421e8, %rsp          # imm = 0x421E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x171d9(%rip), %rdi     # 0x2d4af
callq 0x4270
movq 0x20d0e(%rip), %rdi     # 0x36ff0
leaq 0x171cb(%rip), %rsi     # 0x2d4b4
movl $0x2b, %edx
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x20cf1(%rip), %rdi     # 0x36ff0
callq 0x4310
movq %rax, %rbx
jmp 0x16355
leaq 0x1715f(%rip), %rdi     # 0x2d46f
callq 0x4270
movq 0x20cd4(%rip), %rdi     # 0x36ff0
leaq 0x17151(%rip), %rsi     # 0x2d474
movl $0x21, %edx
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x20cb7(%rip), %rdi     # 0x36ff0
callq 0x4310
movq %rax, %rbx
leaq 0x1714e(%rip), %rsi     # 0x2d496
movl $0x18, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x20be4(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x20c33(%rip), %rdi     # 0x36fb8
leaq 0x16e96(%rip), %rsi     # 0x2d222
movl $0x16, %edx
callq 0x43b0
leaq 0x118(%rsp), %rdi
callq 0x20e0c
movq %rax, %rdi
movq %r13, %rsi
callq 0x10648
movb (%rax), %al
leaq 0x160(%rsp), %rsi
movb %al, (%rsi)
movq 0x20bf7(%rip), %rdi     # 0x36fb8
movl $0x1, %edx
callq 0x43b0
movq %rax, %rbx
leaq 0x16e64(%rip), %rsi     # 0x2d239
movl $0x6, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
leaq 0x18f1f(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20ba6(%rip), %rdi     # 0x36fb8
leaq 0x18c46(%rip), %rsi     # 0x2f05f
movl $0xf, %edx
callq 0x43b0
movq 0x20b8e(%rip), %rdi     # 0x36fb8
leaq 0x182e7(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20b76(%rip), %rdi     # 0x36fb8
movl $0x69, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1819d(%rip), %rdi     # 0x2e5f8
leaq 0x18bfd(%rip), %rsi     # 0x2f05f
leaq 0x18c06(%rip), %rcx     # 0x2f06f
movl $0x69, %edx
callq 0x41c0
movq 0x20b3e(%rip), %rdi     # 0x36fb8
leaq 0x16cb5(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %esi
movq 0x20b0d(%rip), %rdi     # 0x36fb8
callq 0x4610
movq %rax, %rbp
leaq 0x16c92(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbp), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbp,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbp,%rax)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %esi
movq %rbp, %rdi
callq 0x4610
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x16c32(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %r15, %rdi
callq 0x43b0
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f722
movq %r15, %rdi
movl %eax, %esi
callq 0x4610
movq %rax, %r15
leaq 0x16bfa(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r15), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r15,%rax)
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f722
movq %r15, %rdi
movl %eax, %esi
callq 0x4610
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x18d64(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x209eb(%rip), %rdi     # 0x36fb8
leaq 0x18201(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x209d3(%rip), %rdi     # 0x36fb8
leaq 0x1812c(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x209bb(%rip), %rdi     # 0x36fb8
movl $0x16b, %esi            # imm = 0x16B
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17fe2(%rip), %rdi     # 0x2e5f8
leaq 0x181b8(%rip), %rsi     # 0x2e7d5
leaq 0x184a2(%rip), %rcx     # 0x2eac6
movl $0x16b, %edx            # imm = 0x16B
callq 0x41c0
movq 0x20983(%rip), %rdi     # 0x36fb8
leaq 0x16afa(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %esi
movq 0x20952(%rip), %rdi     # 0x36fb8
callq 0x4610
movq %rax, %r12
leaq 0x16ad7(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r12), %rax
movq -0x18(%rax), %rax
movl 0x18(%r12,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r12,%rax)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f65c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10648
movsbl (%rax), %esi
movq %r12, %rdi
callq 0x4610
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x16a75(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %r15, %rdi
callq 0x43b0
movq 0x18(%rsp), %rax
movzbl (%rax,%rbx), %esi
movq %r15, %rdi
callq 0x4610
movq %rax, %r15
leaq 0x16a48(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r15), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r15,%rax)
movq 0x18(%rsp), %rax
movzbl (%rax,%rbx), %esi
movq %r15, %rdi
callq 0x4610
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x18bbd(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20844(%rip), %rdi     # 0x36fb8
leaq 0x1805a(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x2082c(%rip), %rdi     # 0x36fb8
leaq 0x17f85(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20814(%rip), %rdi     # 0x36fb8
movl $0x16a, %esi            # imm = 0x16A
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17e3b(%rip), %rdi     # 0x2e5f8
leaq 0x18011(%rip), %rsi     # 0x2e7d5
leaq 0x182fb(%rip), %rcx     # 0x2eac6
movl $0x16a, %edx            # imm = 0x16A
callq 0x41c0
movq 0x207dc(%rip), %rdi     # 0x36fb8
leaq 0x16953(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x8(%rsp), %rax
movq 0x560(%rax), %rsi
movq 0x207b8(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x1693d(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x8(%rsp), %rax
movq 0x560(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x168ed(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x8(%rsp), %rax
movq 0x518(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x168bd(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x8(%rsp), %rax
movq 0x518(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x18a31(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x206b8(%rip), %rdi     # 0x36fb8
leaq 0x17ece(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x206a0(%rip), %rdi     # 0x36fb8
leaq 0x17df9(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20688(%rip), %rdi     # 0x36fb8
movl $0xb6, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17caf(%rip), %rdi     # 0x2e5f8
leaq 0x17e85(%rip), %rsi     # 0x2e7d5
leaq 0x1816f(%rip), %rcx     # 0x2eac6
movl $0xb6, %edx
callq 0x41c0
movq 0x20650(%rip), %rdi     # 0x36fb8
leaq 0x167c7(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq 0x20631(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x167b6(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x1676b(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x8(%rsp), %rax
movq 0x4f8(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x1673b(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x8(%rsp), %rax
movq 0x4f8(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x188af(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20536(%rip), %rdi     # 0x36fb8
leaq 0x17d4c(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x2051e(%rip), %rdi     # 0x36fb8
leaq 0x17c77(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20506(%rip), %rdi     # 0x36fb8
movl $0xb5, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17b2d(%rip), %rdi     # 0x2e5f8
leaq 0x17d03(%rip), %rsi     # 0x2e7d5
leaq 0x17fed(%rip), %rcx     # 0x2eac6
movl $0xb5, %edx
callq 0x41c0
movq 0x204ce(%rip), %rdi     # 0x36fb8
leaq 0x16645(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x8(%rsp), %rax
movq 0x548(%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a0(%rsp), %rsi
movb %al, (%rsi)
movq 0x2049c(%rip), %rdi     # 0x36fb8
movl $0x1, %edx
callq 0x43b0
movq %rax, %rbx
leaq 0x1661c(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x8(%rsp), %rax
movq 0x548(%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a0(%rsp), %rsi
movb %al, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x165b9(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x38(%rsp), %rax
movq (%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a0(%rsp), %rsi
movb %al, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rbx
leaq 0x1657a(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x38(%rsp), %rax
movq (%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a0(%rsp), %rsi
movb %al, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x186df(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20366(%rip), %rdi     # 0x36fb8
leaq 0x17b7c(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x2034e(%rip), %rdi     # 0x36fb8
leaq 0x17aa7(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20336(%rip), %rdi     # 0x36fb8
movl $0xef, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1795d(%rip), %rdi     # 0x2e5f8
leaq 0x17b33(%rip), %rsi     # 0x2e7d5
leaq 0x17e1d(%rip), %rcx     # 0x2eac6
movl $0xef, %edx
callq 0x41c0
leaq 0x18272(%rip), %rdi     # 0x2ef2c
xorl %esi, %esi
xorl %eax, %eax
callq 0x44f0
leaq 0x17fac(%rip), %rdi     # 0x2ec76
leaq 0x17fab(%rip), %rsi     # 0x2ec7c
leaq 0x17fb0(%rip), %rcx     # 0x2ec88
jmp 0x16cef
leaq 0x17f95(%rip), %rdi     # 0x2ec76
leaq 0x17f94(%rip), %rsi     # 0x2ec7c
leaq 0x19da8(%rip), %rcx     # 0x30a97
movl $0x4a, %edx
callq 0x41c0
movq 0x202f0(%rip), %rdi     # 0x36ff0
leaq 0x17e49(%rip), %rsi     # 0x2eb50
movl $0x2b, %edx
callq 0x43b0
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x202c8(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x2020c(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1775b
movq 0x20256(%rip), %rdi     # 0x36fb8
leaq 0x163cd(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq 0x20237(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x163bc(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x16371(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x438(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x16346(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x438(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x184bf(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20146(%rip), %rdi     # 0x36fb8
leaq 0x1795c(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x2012e(%rip), %rdi     # 0x36fb8
leaq 0x17887(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x20116(%rip), %rdi     # 0x36fb8
movl $0xd8, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1773d(%rip), %rdi     # 0x2e5f8
leaq 0x17913(%rip), %rsi     # 0x2e7d5
leaq 0x17bfd(%rip), %rcx     # 0x2eac6
movl $0xd8, %edx
callq 0x41c0
movq 0x200de(%rip), %rdi     # 0x36fb8
leaq 0x16255(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x200c6(%rip), %rdi     # 0x36fb8
movq 0x10(%rsp), %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x16246(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x161fd(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x418(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x161d2(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x418(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x1834b(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1ffd2(%rip), %rdi     # 0x36fb8
leaq 0x177e8(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x1ffba(%rip), %rdi     # 0x36fb8
leaq 0x17713(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x1ffa2(%rip), %rdi     # 0x36fb8
movl $0xd9, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x175c9(%rip), %rdi     # 0x2e5f8
leaq 0x1779f(%rip), %rsi     # 0x2e7d5
leaq 0x17a89(%rip), %rcx     # 0x2eac6
movl $0xd9, %edx
callq 0x41c0
movq 0x1ff6a(%rip), %rdi     # 0x36fb8
leaq 0x160e1(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x1ff52(%rip), %rdi     # 0x36fb8
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
leaq 0x160d5(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x1608f(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq (%rsp), %rsi
andl $0x3, %esi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x16064(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq (%rsp), %rsi
andl $0x3, %esi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x181dd(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1fe64(%rip), %rdi     # 0x36fb8
leaq 0x1767a(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x1fe4c(%rip), %rdi     # 0x36fb8
leaq 0x175a5(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x1fe34(%rip), %rdi     # 0x36fb8
movl $0xe0, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1745b(%rip), %rdi     # 0x2e5f8
leaq 0x17631(%rip), %rsi     # 0x2e7d5
leaq 0x1791b(%rip), %rcx     # 0x2eac6
movl $0xe0, %edx
callq 0x41c0
movq 0x1fe34(%rip), %rdi     # 0x36ff0
leaq 0x17e7f(%rip), %rsi     # 0x2f042
movl $0x1c, %edx
callq 0x43b0
movq 0x1fe1c(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fd68(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x1fdef(%rip), %rdi     # 0x36ff0
leaq 0x17e3a(%rip), %rsi     # 0x2f042
movl $0x1c, %edx
callq 0x43b0
movq 0x1fdd7(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fd23(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x1fdaa(%rip), %rdi     # 0x36ff0
leaq 0x1634f(%rip), %rsi     # 0x2d59c
movl $0x4e, %edx
callq 0x43b0
movq 0x1fd92(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fcde(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1775b
movq 0x1fd28(%rip), %rdi     # 0x36fb8
leaq 0x15e9f(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x1fd10(%rip), %rdi     # 0x36fb8
movl $0x1000000, %esi        # imm = 0x1000000
callq 0x4610
movq %rax, %r14
leaq 0x15e90(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r14), %rax
movq -0x18(%rax), %rax
movl 0x18(%r14,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r14,%rax)
movq %r14, %rdi
movl $0x1000000, %esi        # imm = 0x1000000
callq 0x4610
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r14,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r14,%rax)
leaq 0x15e43(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %r14, %rdi
callq 0x43b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x41d0
movq %rax, %r14
leaq 0x15e1c(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%r14), %rax
movq -0x18(%rax), %rax
movl 0x18(%r14,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r14,%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x17f97(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1fc1e(%rip), %rdi     # 0x36fb8
leaq 0x17434(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x1fc06(%rip), %rdi     # 0x36fb8
leaq 0x1735f(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x1fbee(%rip), %rdi     # 0x36fb8
movl $0x77, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17215(%rip), %rdi     # 0x2e5f8
leaq 0x173eb(%rip), %rsi     # 0x2e7d5
leaq 0x176d5(%rip), %rcx     # 0x2eac6
movl $0x77, %edx
callq 0x41c0
movq 0x1fbee(%rip), %rdi     # 0x36ff0
leaq 0x177ab(%rip), %rsi     # 0x2ebb4
movl $0xa, %edx
callq 0x43b0
movq 0x1fbd6(%rip), %rdi     # 0x36ff0
movq %r12, %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x17793(%rip), %rsi     # 0x2ebbf
movl $0xf, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rsp), %rsi
shrq $0x2, %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x1777c(%rip), %rsi     # 0x2ebcf
movl $0x1c, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fac7(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1775b
movq 0x1fb49(%rip), %rdi     # 0x36ff0
leaq 0x17706(%rip), %rsi     # 0x2ebb4
movl $0xa, %edx
callq 0x43b0
movq 0x1fb31(%rip), %rdi     # 0x36ff0
movq %r12, %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x176ee(%rip), %rsi     # 0x2ebbf
movl $0xf, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rsp), %rsi
shrq $0x2, %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x176d7(%rip), %rsi     # 0x2ebcf
movl $0x1c, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fa22(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1775b
movq %rax, %r12
movq 0x1fa69(%rip), %rdi     # 0x36fb8
leaq 0x15be0(%rip), %rsi     # 0x2d136
movl $0x15, %edx
callq 0x43b0
movq 0x1fa51(%rip), %rdi     # 0x36fb8
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
leaq 0x15bd4(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x15b8e(%rip), %rsi     # 0x2d151
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x15b67(%rip), %rsi     # 0x2d14c
movl $0x4, %edx
movq %rax, %rdi
callq 0x43b0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x41d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
leaq 0x17ce4(%rip), %rsi     # 0x2f315
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1f96b(%rip), %rdi     # 0x36fb8
leaq 0x17181(%rip), %rsi     # 0x2e7d5
movl $0xd, %edx
callq 0x43b0
movq 0x1f953(%rip), %rdi     # 0x36fb8
leaq 0x170ac(%rip), %rsi     # 0x2e718
movl $0x1, %edx
callq 0x43b0
movq 0x1f93b(%rip), %rdi     # 0x36fb8
movl $0x11c, %esi            # imm = 0x11C
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x16f62(%rip), %rdi     # 0x2e5f8
leaq 0x17138(%rip), %rsi     # 0x2e7d5
leaq 0x17422(%rip), %rcx     # 0x2eac6
movl $0x11c, %edx            # imm = 0x11C
callq 0x41c0
jmp 0x1792f
jmp 0x176ba
jmp 0x1792f
movq %rax, %r14
movq 0x138(%rsp), %rdi
cmpq %r12, %rdi
je 0x17932
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x4340
jmp 0x17932
movq %rax, %r14
cmpl $0x1, %edx
jne 0x17932
movq %r14, %rdi
callq 0x4130
movq 0x1f8f2(%rip), %rdi     # 0x36ff0
leaq 0x174e7(%rip), %rsi     # 0x2ebec
movl $0x4e, %edx
callq 0x43b0
movq 0x1f8da(%rip), %rdi     # 0x36ff0
callq 0x4150
movq %rax, %rbx
leaq 0x17516(%rip), %rsi     # 0x2ec3b
movl $0x26, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1f807(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq %rax, %r14
callq 0x4580
jmp 0x17932
jmp 0x17a00
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x17a00
jmp 0x1792f
jmp 0x1792f
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x177a1
jmp 0x17a00
movq %rax, %r14
jmp 0x178f2
jmp 0x178b4
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x178b4
movq %rax, %r14
leaq 0x1a0(%rsp), %rdi
callq 0x10b48
jmp 0x1790c
jmp 0x1792f
jmp 0x178b4
jmp 0x178b4
jmp 0x178b4
jmp 0x178b4
jmp 0x177fc
movq %rax, %r14
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1794e
movq 0x1b0(%rsp), %rsi
jmp 0x17946
movq %rax, %r14
jmp 0x1794e
jmp 0x17827
movq %rax, %r14
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x17973
movq 0x1b0(%rsp), %rsi
jmp 0x1796b
movq %rax, %r14
jmp 0x17973
jmp 0x178b4
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
movq %rax, %r14
leaq 0x160(%rsp), %rdi
callq 0x10b48
jmp 0x178c0
jmp 0x17899
jmp 0x17899
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x1792f
jmp 0x178bd
jmp 0x178b4
movq %rax, %r14
leaq 0x1a0(%rsp), %rdi
callq 0x2146e
jmp 0x178f2
jmp 0x17a00
jmp 0x178bd
jmp 0x178b4
movq %rax, %r14
jmp 0x1790c
jmp 0x1792f
jmp 0x178bd
movq %rax, %r14
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x178e5
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x4340
leaq 0x1a0(%rsp), %rdi
callq 0x2146e
leaq 0x180(%rsp), %rdi
callq 0x1fee8
leaq 0xc8(%rsp), %rdi
callq 0x1fee8
leaq 0x118(%rsp), %rdi
callq 0x20966
jmp 0x17932
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1794e
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x17973
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0x88(%rsp), %rdi
callq 0x20588
movq 0x80(%rsp), %rdi
callq 0x2024e
movq 0x110(%rsp), %rdi
callq 0x2024e
movq 0x78(%rsp), %rdi
callq 0x1fee8
movq 0x98(%rsp), %rdi
callq 0x1fee8
movq 0x90(%rsp), %rdi
callq 0x1fee8
movq 0x70(%rsp), %rdi
callq 0x1fee8
movq 0x68(%rsp), %rdi
callq 0x1fee8
movq 0x60(%rsp), %rdi
callq 0x2024e
movq 0x20(%rsp), %rdi
callq 0x1fb80
movq %r14, %rdi
callq 0x4620
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
jmp 0x17a00
movq %rax, %rdi
callq 0x102f6