// File: /workspace/github_cpp_makefile_star2_O3/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, 0xac(%rsp)
movq %r8, %r15
movq %rcx, 0x40(%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, 0x28(%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, 0x68(%rsp)
movq %r10, 0x420(%r14)
movq %rdi, 0x428(%r14)
movq %r8, 0x430(%r14)
movq %rdi, 0x438(%r14)
leaq 0x440(%r14), %r9
movq %r9, 0x70(%rsp)
movq %r10, 0x440(%r14)
movq %rdi, 0x448(%r14)
movq %r8, 0x450(%r14)
movq %rdi, 0x458(%r14)
leaq 0x460(%r14), %r9
movq %r9, 0x78(%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, 0x98(%rsp)
movq %rdi, 0x548(%r14)
leaq 0x4a0(%r14), %rdi
movq %rdi, 0xa0(%rsp)
pxor %xmm0, %xmm0
movdqu %xmm0, 0x538(%r14)
movb $0x1, 0x56c(%r14)
movb %dl, 0x56d(%r14)
movb %sil, 0x56e(%r14)
movb %cl, 0x56f(%r14)
movb %al, 0x570(%r14)
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x4c0(%r14), %rax
movq %rax, 0x80(%rsp)
leaq 0x4e0(%r14), %rax
movq %rax, 0x120(%rsp)
leaq 0x500(%r14), %rax
movq %rax, 0x88(%rsp)
leaq 0x520(%r14), %rax
movq %rax, 0x90(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0x21612
movq %r14, 0x18(%rsp)
leaq 0x18d9c(%rip), %rsi     # 0x2d9e6
leaq 0x1a8(%rsp), %rdi
callq 0x46a0
leaq 0x24492(%rip), %r14     # 0x390f0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
leaq 0x1a8(%rsp), %rdi
callq 0x4110
leaq 0xc0(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14ca2
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x14caa
movdqu (%rcx), %xmm0
movdqu %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xb8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x14ce2
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x4340
leaq 0x1a8(%rsp), %rdi
movq %r12, (%rdi)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
callq 0x21612
leaq 0x18ce7(%rip), %rsi     # 0x2d9ea
leaq 0x1a8(%rsp), %rdi
callq 0x46a0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
leaq 0x1a8(%rsp), %rdi
callq 0x4110
leaq 0x58(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x18(%rsp), %r14
je 0x14d50
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0x14d58
movdqu (%rcx), %xmm0
movdqu %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x14d8d
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xb0(%rsp), %rdi
leaq 0x17707(%rip), %rsi     # 0x2c4a3
callq 0x4390
testq %rax, %rax
je 0x14f08
movq %rax, %r12
movq 0x48(%rsp), %rdi
leaq 0x176ea(%rip), %rsi     # 0x2c4a3
callq 0x4390
testq %rax, %rax
je 0x1503e
movq %r12, 0x118(%rsp)
movb 0x42248(%rsp), %bpl
cmpb $0x1, 0x56e(%r14)
jne 0x150b7
movq %rax, %rbx
movb 0x570(%r14), %al
orb %bpl, %al
cmpb $0x1, %al
jne 0x14e3d
movq 0x221f3(%rip), %rdi     # 0x36ff0
leaq 0x18cf6(%rip), %rsi     # 0x2dafa
movl $0x26, %edx
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x221d1(%rip), %rdi     # 0x36ff0
callq 0x43b0
leaq 0x17ca3(%rip), %rsi     # 0x2cace
movl $0x2, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa840
movq 0x48(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x4600
cmpl $-0x1, %eax
je 0x16120
movq 0x1d8(%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 0x160e6
cmpb $0x0, 0x42238(%rsp)
je 0x14f00
xorl %ebx, %ebx
testq %r12, %r12
jle 0x14ebb
xorl %eax, %eax
movq %r13, %rdx
movsbq (%rdx,%rax), %rcx
addq %rcx, %rbx
addq $0x400, %rax            # imm = 0x400
cmpq %r12, %rax
jl 0x14ea8
testb %bpl, %bpl
je 0x14f00
movq 0x22129(%rip), %rdi     # 0x36ff0
leaq 0x18c53(%rip), %rsi     # 0x2db21
movl $0x34, %edx
callq 0x43b0
movq 0x22111(%rip), %rdi     # 0x36ff0
movq %rbx, %rsi
callq 0x42e0
leaq 0x17be0(%rip), %rsi     # 0x2cace
movl $0x2, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa840
movq %r13, %rbp
jmp 0x150b9
movq 0x220e1(%rip), %rdi     # 0x36ff0
leaq 0x18ad8(%rip), %rsi     # 0x2d9ee
movl $0x2b, %edx
callq 0x43b0
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq 0x220b9(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rbx
leaq 0x18ad4(%rip), %rsi     # 0x2da1a
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 0x2206f(%rip), %rbx     # 0x36ff0
leaq 0x18aa0(%rip), %rsi     # 0x2da28
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 0x2203d(%rip), %rdi     # 0x36ff0
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %rbx
leaq 0x18aa5(%rip), %rsi     # 0x2da6f
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 0x18ab3(%rip), %rsi     # 0x2dabb
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 0x150aa
movq 0x21fab(%rip), %rdi     # 0x36ff0
leaq 0x189a2(%rip), %rsi     # 0x2d9ee
movl $0x2b, %edx
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x21f89(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rbx
leaq 0x189a4(%rip), %rsi     # 0x2da1a
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 0x16093
xorl %ebp, %ebp
leaq 0x1a8(%rsp), %rdi
movl $0x1, %esi
movl $0x4, %edx
movq 0x118(%rsp), %r13
movq %r13, %rcx
callq 0x44e0
cmpq $0x4, %rax
jne 0x16adc
movl 0x1a8(%rsp), %ebx
cmpq $0x1, %rbx
je 0x1510c
cmpb $0x1, 0x56e(%r14)
je 0x1705a
cmpl $0x1000000, %ebx        # imm = 0x1000000
jne 0x170a4
leaq 0x1a8(%rsp), %rdi
movl $0x1, %esi
movl $0x8, %edx
movq %r13, %rcx
callq 0x44e0
cmpq $0x8, %rax
jne 0x16af3
movq 0x1a8(%rsp), %rax
movq %rax, %rdx
bswapq %rdx
cmpl $0x1, %ebx
cmoveq %rax, %rdx
testq %rdx, %rdx
je 0x16b12
leaq 0x540(%r14), %rax
movq %rax, 0x38(%rsp)
xorl %eax, %eax
movq %rax, 0x560(%r14)
leaq 0x568(%r14), %rcx
movq %rcx, 0x20(%rsp)
movl $0x0, 0x568(%r14)
movq %rax, 0x8(%rsp)
movq %rax, 0x30(%rsp)
leaq 0x1a8(%rsp), %r12
movq %rdx, 0x10(%rsp)
movq %rdx, %r14
xorl %edx, %edx
cmpl $0x1, %ebx
setne %dl
movq %r12, %rdi
movq %r13, %rsi
callq 0x1ee80
movq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x1ee04
decq %r14
jne 0x15194
movq %rbp, 0x110(%rsp)
leaq 0x1a8(%rsp), %rax
movq $0x0, (%rax)
xorl %ebx, %ebx
leaq 0x8(%rsp), %rbp
leaq 0x30(%rsp), %r12
xorl %r13d, %r13d
xorl %esi, %esi
movq 0x18(%rsp), %r14
movq 0x28(%rsp), %rdi
callq 0x1ef76
cmpb $0x1, 0x10(%rax)
jne 0x15335
cmpq $0x0, 0x560(%r14)
je 0x15211
movq 0x70(%rsp), %rdi
movq %r12, %rsi
callq 0x1f03e
testq %rbx, %rbx
leaq 0xd0(%rsp), %rbx
je 0x1523c
cmpq $0x2, %r13
jb 0x1523c
movl 0x30(%rsp), %eax
movl %eax, 0xd0(%rsp)
movq 0x68(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f0b0
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
cmpq $0x0, 0x8(%rax)
je 0x152c8
movq 0x80(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x1f03e
movq 0x78(%rsp), %rdi
movq %rbp, %rsi
callq 0x1f03e
movl 0x560(%r14), %eax
movl %eax, 0xd0(%rsp)
movq 0x120(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f0b0
movq 0x88(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x1f0b0
movq 0x20(%rsp), %rax
incl (%rax)
movb $0x0, 0xd0(%rsp)
movq 0x90(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f120
jmp 0x152f2
movq 0x88(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x1f0b0
movb $0x1, 0xd0(%rsp)
movq 0x90(%rsp), %rdi
movq %rbx, %rsi
callq 0x1f120
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 0x16778
cmpq 0x518(%r14), %rax
jne 0x165ec
xorl %r13d, %r13d
xorl %ebx, %ebx
movq 0x98(%rsp), %rdi
movq %rbp, %rsi
callq 0x1f03e
movq 0xa0(%rsp), %rdi
movq %r12, %rsi
callq 0x1f03e
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
movq 0x8(%rax), %rax
addq %rax, 0x8(%rsp)
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
cmpq $0x0, 0x8(%rax)
je 0x153be
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
movq (%rax), %rax
addq %rax, 0x30(%rsp)
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
movq 0x8(%rax), %rax
addq %rax, 0x30(%rsp)
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
addq 0x8(%rax), %rbx
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
cmpq %r13, 0x8(%rax)
jbe 0x15402
movq 0x1a8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x1ef76
movq 0x8(%rax), %r13
movq 0x1a8(%rsp), %rsi
incq %rsi
movq %rsi, 0x1a8(%rsp)
cmpq 0x10(%rsp), %rsi
jb 0x151e6
movb 0x570(%r14), %al
orb 0x42248(%rsp), %al
movq 0x118(%rsp), %rbp
je 0x154ca
movq 0x21bad(%rip), %rdi     # 0x36ff0
leaq 0x187c2(%rip), %rsi     # 0x2dc0c
movl $0x5, %edx
callq 0x43b0
movq 0x560(%r14), %rsi
movq 0x21b8e(%rip), %rdi     # 0x36ff0
callq 0x41d0
movq %rax, %r12
leaq 0x187a1(%rip), %rsi     # 0x2dc12
movl $0x14, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x20(%rsp), %rax
movl (%rax), %esi
movq %r12, %rdi
callq 0x41d0
movq %rax, %r12
leaq 0x18790(%rip), %rsi     # 0x2dc27
movl $0x11, %edx
movq %rax, %rdi
callq 0x43b0
movq %r12, %rdi
movq 0x10(%rsp), %rsi
callq 0x41d0
leaq 0x18781(%rip), %rsi     # 0x2dc39
movl $0xa, %edx
movq %rax, %rdi
callq 0x43b0
callq 0xa840
movq 0x418(%r14), %rax
leaq 0x1a8(%rsp), %rsi
movq %rax, (%rsi)
movq 0x80(%rsp), %rdi
callq 0x1f03e
leaq 0x8(%rsp), %rsi
movq 0x78(%rsp), %rdi
callq 0x1f03e
testq %rbx, %rbx
je 0x1551b
cmpq $0x2, %r13
jb 0x1551b
movl 0x30(%rsp), %eax
leaq 0x1a8(%rsp), %rsi
movl %eax, (%rsi)
movq 0x68(%rsp), %rdi
callq 0x1f0b0
leaq 0x30(%rsp), %rsi
movq 0x70(%rsp), %rdi
callq 0x1f03e
leaq 0x8(%rsp), %rsi
movq 0x98(%rsp), %rdi
callq 0x1f03e
leaq 0x30(%rsp), %rsi
movq 0xa0(%rsp), %rdi
callq 0x1f03e
movq 0x8(%rsp), %rax
movq %rax, 0x550(%r14)
movl 0x568(%r14), %eax
cmpq %rax, 0x438(%r14)
jne 0x16b74
movq 0x10(%rsp), %rax
cmpq 0x418(%r14), %rax
movb 0x42248(%rsp), %bl
jne 0x16cec
movq %rbp, %rdi
callq 0x4320
movq 0x8(%rsp), %rax
testb $0x3, %al
je 0x155a5
andq $-0x4, %rax
addq $0x4, %rax
movq %rax, 0x8(%rsp)
movq 0x110(%rsp), %rcx
movq %rax, %rdi
shrq $0x2, %rdi
movq %rdi, 0x558(%r14)
testb $0x3, %al
jne 0x16e60
cmpb $0x0, 0x42220(%rsp)
je 0x16093
cmpb $0x1, 0x56e(%r14)
jne 0x15699
movq %rcx, 0x540(%r14)
cmpb $0x1, 0x56d(%r14)
jne 0x15808
movq 0x48(%rsp), %rdi
leaq 0x16ea3(%rip), %rsi     # 0x2c4a3
callq 0x4390
movq %rax, %rbx
movq 0x8(%rsp), %r12
shrq $0x2, %r12
movq %r12, %rdi
callq 0x4030
movq 0x18(%rsp), %rcx
movq %rax, 0x548(%rcx)
movl $0x1, %esi
movq %rax, %rdi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x44e0
movq %rax, %r12
movq 0x8(%rsp), %rax
shrq $0x2, %rax
cmpq %rax, %r12
jne 0x17216
movq %rbx, %rdi
callq 0x4320
movq 0x8(%rsp), %rax
cmpq $0x4, %rax
jb 0x15808
shrq $0x2, %rax
movq 0x18(%rsp), %rdx
movq 0x540(%rdx), %rcx
movq 0x548(%rdx), %rdx
xorl %r14d, %r14d
movb (%rdx,%r14), %sil
cmpb (%rcx,%r14), %sil
jne 0x168fa
incq %r14
cmpq %r14, %rax
jne 0x1567e
jmp 0x15808
cmpb $0x0, 0x56f(%r14)
je 0x15760
leaq 0x158(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rdi
callq 0x21612
leaq 0x1861d(%rip), %rsi     # 0x2dcf2
leaq 0x148(%rsp), %rdi
callq 0x46a0
movq 0x8(%rsp), %rsi
shrq $0x2, %rsi
movq 0x18(%rsp), %r14
orb 0x570(%r14), %bl
movzbl %bl, %r8d
leaq 0x18f6a(%rip), %rcx     # 0x2e66c
leaq 0x148(%rsp), %rdi
movq 0x38(%rsp), %rdx
callq 0x1153e
movl %eax, %ebx
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x15733
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x4340
testb %bl, %bl
jne 0x1576d
cmpb $0x1, 0x56f(%r14)
jne 0x15808
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rsi
shrq $0x2, %rsi
callq 0x2ad9c
jmp 0x15808
callq 0x4030
movq 0x38(%rsp), %rcx
movq %rax, (%rcx)
movq 0x48(%rsp), %rdi
leaq 0x16d2a(%rip), %rsi     # 0x2c4a3
callq 0x4390
testq %rax, %rax
je 0x15a0f
movq %rax, %r12
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rdx
shrq $0x2, %rdx
movl $0x1, %esi
movq %r12, %rcx
callq 0x44e0
movq %rax, %rbx
movq 0x8(%rsp), %rax
shrq $0x2, %rax
cmpq %rax, %rbx
jne 0x172bc
leaq 0x1a8(%rsp), %rdi
movl $0x1, %esi
movl $0x1, %edx
movq %r12, %rcx
callq 0x44e0
testq %rax, %rax
jne 0x17362
movq %r12, %rdi
callq 0x4320
cmpb $0x1, 0x56f(%r14)
jne 0x15808
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rsi
shrq $0x2, %rsi
callq 0x2ad94
movdqa 0x16800(%rip), %xmm0    # 0x2c010
xorl %eax, %eax
movdqa 0x16806(%rip), %xmm1    # 0x2c020
movdqa 0x1680e(%rip), %xmm2    # 0x2c030
movdqa 0x16816(%rip), %xmm3    # 0x2c040
movdqa 0x1681e(%rip), %xmm4    # 0x2c050
movdqa 0x16826(%rip), %xmm5    # 0x2c060
movdqa %xmm0, %xmm6
movdqa %xmm0, %xmm7
movdqa %xmm0, %xmm8
movq 0x18(%rsp), %rcx
movdqa %xmm0, %xmm9
pand %xmm1, %xmm9
movdqa %xmm6, %xmm10
pslld $0x6, %xmm10
pand %xmm2, %xmm10
por %xmm9, %xmm10
movdqa %xmm7, %xmm9
pslld $0xc, %xmm9
pand %xmm3, %xmm9
movdqa %xmm8, %xmm11
pslld $0x12, %xmm11
pand %xmm4, %xmm11
por %xmm9, %xmm11
por %xmm10, %xmm11
movdqu %xmm11, (%rcx,%rax,4)
addq $0x4, %rax
paddd %xmm5, %xmm0
paddd %xmm5, %xmm6
paddd %xmm5, %xmm7
paddd %xmm5, %xmm8
cmpq $0x100, %rax            # imm = 0x100
jne 0x1584c
cmpb $0x1, 0x56d(%rcx)
jne 0x16093
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0x128(%rsp)
xorl %eax, %eax
movq %rax, 0x130(%rsp)
movq $0x80, 0x138(%rsp)
movq %rax, 0x140(%rsp)
movq 0x40(%rsp), %r12
testq %r12, %r12
je 0x159e7
movq 0x18(%r12), %rax
leaq 0x128(%rsp), %r15
cmpb $0x0, 0xac(%rsp)
je 0x15b42
testq %rax, %rax
je 0x15f4b
movq %r12, %rdi
leaq 0x1b0(%rsp), %r14
xorl %ebx, %ebx
leaq 0x21375(%rip), %r13     # 0x36cb0
leaq 0x1a8(%rsp), %r12
movq %rbx, %rsi
callq 0x179c4
cmpq $0x0, 0x8(%rax)
je 0x16aca
movq (%rax), %rax
cmpb $0x5c, (%rax)
jne 0x1597a
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x179c4
movl $0x1, %edx
movq %rax, %rdi
xorl %esi, %esi
callq 0x40a0
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x179c4
movq (%rax), %rbp
movq %r13, 0x1a8(%rsp)
pxor %xmm0, %xmm0
movdqu %xmm0, (%r14)
movq $0x0, 0x10(%r14)
movl $0x1, %esi
movq %r12, %rdi
callq 0x10114
movq 0x1b0(%rsp), %rax
movb (%rbp), %cl
movb %cl, (%rax)
movq %r15, %rdi
movq %r12, %rsi
callq 0x1f190
movq %r12, %rdi
callq 0x1092e
incq %rbx
movq 0x40(%rsp), %rdi
cmpq 0x18(%rdi), %rbx
jb 0x15943
jmp 0x15f4b
testq %r15, %r15
jne 0x15f4b
leaq 0x18301(%rip), %rdi     # 0x2dcf8
leaq 0x17e67(%rip), %rsi     # 0x2d865
leaq 0x18151(%rip), %rcx     # 0x2db56
movl $0x14d, %edx            # imm = 0x14D
callq 0x41c0
movq 0x215da(%rip), %rdi     # 0x36ff0
leaq 0x17fd1(%rip), %rsi     # 0x2d9ee
movl $0x2b, %edx
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x215b8(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rbx
leaq 0x17fd3(%rip), %rsi     # 0x2da1a
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 0x2156e(%rip), %rbx     # 0x36ff0
leaq 0x17f9f(%rip), %rsi     # 0x2da28
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 0x2153c(%rip), %rdi     # 0x36ff0
callq 0x4040
movq %rax, %rdi
callq 0x41e0
movq %rax, %rbx
leaq 0x17fa4(%rip), %rsi     # 0x2da6f
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 0x17fb2(%rip), %rsi     # 0x2dabb
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 0x150aa
testq %rax, %rax
je 0x15f4b
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x10(%rsp)
leaq 0xf0(%rsp), %r14
leaq 0x188(%rsp), %rbx
xorl %r13d, %r13d
movq %r12, %rdi
movq %r13, 0x20(%rsp)
movq %r13, %rsi
callq 0x1782e
movq %rax, %rbp
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
movq %rax, 0xd0(%rsp)
xorl %r12d, %r12d
movq %r12, 0xd8(%rsp)
movl $0x80, %ecx
movq %rcx, 0xe0(%rsp)
movq %r12, 0xe8(%rsp)
movq %rax, 0x188(%rsp)
movq %r12, 0x190(%rsp)
movq %rcx, 0x198(%rsp)
movq %r12, 0x1a0(%rsp)
movq (%rbp), %rdi
leaq 0x16c25(%rip), %rsi     # 0x2c7fd
callq 0x4390
testq %rax, %rax
je 0x16fd0
leaq 0x1b0(%rsp), %rcx
pxor %xmm0, %xmm0
movdqu %xmm0, (%rcx)
movq %r12, 0x10(%rcx)
movl $0x40000, %ecx          # imm = 0x40000
movq %rcx, 0x1d0(%rsp)
movq %rcx, 0x1c8(%rsp)
movb $0x0, 0x1d8(%rsp)
movq %r12, 0x401e0(%rsp)
movq %rax, 0x1a8(%rsp)
movq $0x0, 0xf0(%rsp)
leaq 0xd0(%rsp), %rdi
movq %r14, %r12
movq %r14, %rsi
callq 0x1f03e
movq $0x0, 0xf0(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1f03e
leaq 0xd0(%rsp), %rdi
callq 0x20b7c
movq %rax, %r12
movq %rbx, %rdi
callq 0x20b7c
leaq 0x1a8(%rsp), %rdi
movq %r12, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x20a6c
movq %rbx, %rdi
callq 0x20b7c
cmpq $0x0, (%rax)
jne 0x15cad
leaq 0xd0(%rsp), %rdi
callq 0x20c44
movq %rbx, %rdi
callq 0x20c44
movq 0x1c8(%rsp), %rax
cmpq 0x1d0(%rsp), %rax
jne 0x15c27
testb $0x1, 0x1d8(%rsp)
je 0x15c27
leaq 0x1a8(%rsp), %rdi
callq 0x20f3e
movq (%rbp), %rdi
leaq 0x16b14(%rip), %rsi     # 0x2c7fd
callq 0x4390
testq %rax, %rax
je 0x17015
leaq 0x1b0(%rsp), %rcx
pxor %xmm0, %xmm0
movdqu %xmm0, (%rcx)
xorl %edx, %edx
movq %rdx, 0x10(%rcx)
movl $0x40000, %ecx          # imm = 0x40000
movq %rcx, 0x1d0(%rsp)
movq %rcx, 0x1c8(%rsp)
movb $0x0, 0x1d8(%rsp)
movq %rdx, 0x401e0(%rsp)
movq %rax, 0x1a8(%rsp)
xorl %ebp, %ebp
leaq 0x100(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq $0x0, 0xf8(%rsp)
movb $0x0, 0x100(%rsp)
leaq 0xd0(%rsp), %rdi
movq %rbp, %rsi
callq 0xf5ea
movq (%rax), %rsi
incq %rsi
movq %r14, %rdi
callq 0x4550
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf5ea
movq (%rax), %rdi
callq 0x4030
movq %rax, %r13
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf5ea
movq (%rax), %r12
leaq 0x20f07(%rip), %rax     # 0x36cb0
movq %rax, 0x168(%rsp)
leaq 0x170(%rsp), %rax
pxor %xmm0, %xmm0
movdqu %xmm0, (%rax)
movq $0x0, 0x10(%rax)
testq %r12, %r12
je 0x15df1
leaq 0x168(%rsp), %rdi
movq %r12, %rsi
callq 0x10114
movq 0x170(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x4250
movq %r15, %rdi
leaq 0x168(%rsp), %r12
movq %r12, %rsi
callq 0x1f190
movq %r12, %rdi
callq 0x1092e
movq %r15, %rdi
callq 0x208e0
leaq 0x1a8(%rsp), %rdi
movq %r14, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
callq 0x2079e
movq %r15, %rdi
callq 0x208e0
cmpq $0x0, 0x18(%rax)
je 0x15e6b
movq %r15, %rdi
callq 0x208e0
movq 0x10(%rsp), %rcx
cmpq %rcx, 0x18(%rax)
jle 0x15ec1
movq %r15, %rdi
callq 0x208e0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x10114
movq $0x0, 0x10(%rsp)
jmp 0x15ed7
movq %r15, %rdi
callq 0x209aa
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x15e98
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x4340
incq %rbp
movq 0x1c8(%rsp), %rax
cmpq 0x1d0(%rsp), %rax
jne 0x15d3c
testb $0x1, 0x1d8(%rsp)
je 0x15d3c
jmp 0x15f09
movq %r15, %rdi
callq 0x208e0
movq 0x10(%rsp), %rcx
subq 0x18(%rax), %rcx
movq %rcx, 0x10(%rsp)
xorl %r13d, %r13d
movq %r15, %rdi
callq 0x208e0
cmpq 0x18(%rax), %r13
jae 0x15e73
movq %r15, %rdi
callq 0x208e0
movq %rax, %rdi
movq %r13, %rsi
callq 0x10430
cmpb $0x0, (%rax)
js 0x16195
incq %r13
jmp 0x15eda
leaq 0x1a8(%rsp), %rdi
callq 0x20f3e
movq %rbx, %rdi
callq 0x1f9be
movq 0x40(%rsp), %r12
movq 0x20(%rsp), %r13
leaq 0xd0(%rsp), %rdi
callq 0x1f9be
cmpq $0x0, 0x10(%rsp)
jle 0x15f4b
incq %r13
cmpq 0x18(%r12), %r13
jb 0x15b68
cmpq $0x0, 0x18(%r15)
je 0x16086
xorl %r13d, %r13d
xorl %r12d, %r12d
movq $0x0, 0x10(%rsp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq 0x18(%rax), %rbp
testq %rbp, %rbp
je 0x16079
xorl %ebx, %ebx
xorl %r14d, %r14d
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
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 0x15f82
testl %r14d, %r14d
je 0x16079
movq %rbp, %rdi
andq $-0x4, %rdi
addq $0xc, %rdi
callq 0x4030
movq %rax, %rbx
movq 0x18(%rsp), %rdi
movq %rax, %rsi
movq 0x10(%rsp), %rdx
xorl %ecx, %ecx
movq %rbp, %r8
callq 0x134e4
cltq
movq %rbx, 0x40(%rsp)
addq %rax, %rbx
movq %rbx, 0x20(%rsp)
xorl %ebx, %ebx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
movsbl (%rax), %eax
movq 0x20(%rsp), %rcx
movzbl (%rcx,%rbx), %ecx
cmpl %ecx, %eax
jne 0x16445
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
movsbl (%rax), %r14d
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f2da
cmpl %r14d, %eax
jne 0x1628a
incq %rbx
cmpq %rbx, %rbp
jne 0x16003
incq 0x10(%rsp)
movq 0x40(%rsp), %rdi
callq 0x4420
incq %r13
cmpq 0x18(%r15), %r13
jb 0x15f65
leaq 0x128(%rsp), %rdi
callq 0x2043a
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x160af
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x160d4
movq 0xc0(%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 0x16452(%rip), %rdi     # 0x2c53f
callq 0x4270
movq 0x20ef7(%rip), %rdi     # 0x36ff0
leaq 0x16444(%rip), %rsi     # 0x2c544
movl $0x2b, %edx
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x20eda(%rip), %rdi     # 0x36ff0
callq 0x4310
movq %rax, %rbx
jmp 0x1616c
leaq 0x163d8(%rip), %rdi     # 0x2c4ff
callq 0x4270
movq 0x20ebd(%rip), %rdi     # 0x36ff0
leaq 0x163ca(%rip), %rsi     # 0x2c504
movl $0x21, %edx
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x20ea0(%rip), %rdi     # 0x36ff0
callq 0x4310
movq %rax, %rbx
leaq 0x163c7(%rip), %rsi     # 0x2c526
movl $0x18, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x20dcd(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x20e1c(%rip), %rdi     # 0x36fb8
leaq 0x1610f(%rip), %rsi     # 0x2c2b2
movl $0x16, %edx
callq 0x43b0
leaq 0x128(%rsp), %rdi
callq 0x208e0
movq %rax, %rdi
movq %r13, %rsi
callq 0x10430
movb (%rax), %al
leaq 0x168(%rsp), %rsi
movb %al, (%rsi)
movq 0x20de0(%rip), %rdi     # 0x36fb8
movl $0x1, %edx
callq 0x43b0
movq %rax, %rbx
leaq 0x160dd(%rip), %rsi     # 0x2c2c9
movl $0x6, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
leaq 0x18198(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20d8f(%rip), %rdi     # 0x36fb8
leaq 0x17ebf(%rip), %rsi     # 0x2e0ef
movl $0xf, %edx
callq 0x43b0
movq 0x20d77(%rip), %rdi     # 0x36fb8
leaq 0x17560(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x20d5f(%rip), %rdi     # 0x36fb8
movl $0x69, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x17416(%rip), %rdi     # 0x2d688
leaq 0x17e76(%rip), %rsi     # 0x2e0ef
leaq 0x17e7f(%rip), %rcx     # 0x2e0ff
movl $0x69, %edx
callq 0x41c0
movq 0x20d27(%rip), %rdi     # 0x36fb8
leaq 0x15f2e(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
movsbl (%rax), %esi
movq 0x20cf6(%rip), %rdi     # 0x36fb8
callq 0x4610
movq %rax, %rbp
leaq 0x15f0b(%rip), %rsi     # 0x2c1dc
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 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
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 0x15eab(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %r15, %rdi
callq 0x43b0
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f2da
movq %r15, %rdi
movl %eax, %esi
callq 0x4610
movq %rax, %r15
leaq 0x15e73(%rip), %rsi     # 0x2c1dc
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), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f2da
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 0x17fdd(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20bd4(%rip), %rdi     # 0x36fb8
leaq 0x1747a(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20bbc(%rip), %rdi     # 0x36fb8
leaq 0x173a5(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x20ba4(%rip), %rdi     # 0x36fb8
movl $0x16b, %esi            # imm = 0x16B
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1725b(%rip), %rdi     # 0x2d688
leaq 0x17431(%rip), %rsi     # 0x2d865
leaq 0x1771b(%rip), %rcx     # 0x2db56
movl $0x16b, %edx            # imm = 0x16B
callq 0x41c0
movq 0x20b6c(%rip), %rdi     # 0x36fb8
leaq 0x15d73(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq %r15, %rdi
movq %r13, %rsi
callq 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
movsbl (%rax), %esi
movq 0x20b3b(%rip), %rdi     # 0x36fb8
callq 0x4610
movq %rax, %r12
leaq 0x15d50(%rip), %rsi     # 0x2c1dc
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 0x1f214
movq %rax, %rdi
movq %rbx, %rsi
callq 0x10430
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 0x15cee(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %r15, %rdi
callq 0x43b0
movq 0x20(%rsp), %rax
movzbl (%rax,%rbx), %esi
movq %r15, %rdi
callq 0x4610
movq %rax, %r15
leaq 0x15cc1(%rip), %rsi     # 0x2c1dc
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 0x20(%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 0x17e36(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20a2d(%rip), %rdi     # 0x36fb8
leaq 0x172d3(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20a15(%rip), %rdi     # 0x36fb8
leaq 0x171fe(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x209fd(%rip), %rdi     # 0x36fb8
movl $0x16a, %esi            # imm = 0x16A
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x170b4(%rip), %rdi     # 0x2d688
leaq 0x1728a(%rip), %rsi     # 0x2d865
leaq 0x17574(%rip), %rcx     # 0x2db56
movl $0x16a, %edx            # imm = 0x16A
callq 0x41c0
movq 0x209c5(%rip), %rdi     # 0x36fb8
leaq 0x15bcc(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x18(%rsp), %rax
movq 0x560(%rax), %rsi
movq 0x209a1(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x15bb6(%rip), %rsi     # 0x2c1dc
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
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 0x15b66(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x18(%rsp), %rax
movq 0x518(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x15b36(%rip), %rsi     # 0x2c1dc
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
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 0x17caa(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x208a1(%rip), %rdi     # 0x36fb8
leaq 0x17147(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20889(%rip), %rdi     # 0x36fb8
leaq 0x17072(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x20871(%rip), %rdi     # 0x36fb8
movl $0xb6, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x16f28(%rip), %rdi     # 0x2d688
leaq 0x170fe(%rip), %rsi     # 0x2d865
leaq 0x173e8(%rip), %rcx     # 0x2db56
movl $0xb6, %edx
callq 0x41c0
movq 0x20839(%rip), %rdi     # 0x36fb8
leaq 0x15a40(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x20(%rsp), %rax
movl (%rax), %esi
movq 0x2081a(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x15a2f(%rip), %rsi     # 0x2c1dc
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 0x20(%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 0x159e4(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x18(%rsp), %rax
movq 0x4f8(%rax), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x159b4(%rip), %rsi     # 0x2c1dc
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
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 0x17b28(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x2071f(%rip), %rdi     # 0x36fb8
leaq 0x16fc5(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20707(%rip), %rdi     # 0x36fb8
leaq 0x16ef0(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x206ef(%rip), %rdi     # 0x36fb8
movl $0xb5, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x16da6(%rip), %rdi     # 0x2d688
leaq 0x16f7c(%rip), %rsi     # 0x2d865
leaq 0x17266(%rip), %rcx     # 0x2db56
movl $0xb5, %edx
callq 0x41c0
movq 0x206b7(%rip), %rdi     # 0x36fb8
leaq 0x158be(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x18(%rsp), %rax
movq 0x548(%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a8(%rsp), %rsi
movb %al, (%rsi)
movq 0x20685(%rip), %rdi     # 0x36fb8
movl $0x1, %edx
callq 0x43b0
movq %rax, %rbx
leaq 0x15895(%rip), %rsi     # 0x2c1dc
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
movq 0x548(%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a8(%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 0x15832(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x38(%rsp), %rax
movq (%rax), %rax
movb (%rax,%r14), %al
leaq 0x1a8(%rsp), %rsi
movb %al, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rbx
leaq 0x157f3(%rip), %rsi     # 0x2c1dc
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 0x1a8(%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 0x17958(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x2054f(%rip), %rdi     # 0x36fb8
leaq 0x16df5(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20537(%rip), %rdi     # 0x36fb8
leaq 0x16d20(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x2051f(%rip), %rdi     # 0x36fb8
movl $0xef, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x16bd6(%rip), %rdi     # 0x2d688
leaq 0x16dac(%rip), %rsi     # 0x2d865
leaq 0x17096(%rip), %rcx     # 0x2db56
movl $0xef, %edx
callq 0x41c0
leaq 0x174eb(%rip), %rdi     # 0x2dfbc
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x44f0
leaq 0x17223(%rip), %rdi     # 0x2dd06
leaq 0x17222(%rip), %rsi     # 0x2dd0c
leaq 0x17227(%rip), %rcx     # 0x2dd18
jmp 0x16b08
leaq 0x1720c(%rip), %rdi     # 0x2dd06
leaq 0x1720b(%rip), %rsi     # 0x2dd0c
leaq 0x1901f(%rip), %rcx     # 0x2fb27
movl $0x4a, %edx
callq 0x41c0
movq 0x204d7(%rip), %rdi     # 0x36ff0
leaq 0x170c0(%rip), %rsi     # 0x2dbe0
movl $0x2b, %edx
callq 0x43b0
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq 0x204af(%rip), %rdi     # 0x36ff0
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x203f3(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1757e
movq 0x2043d(%rip), %rdi     # 0x36fb8
leaq 0x15644(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x20(%rsp), %rax
movl (%rax), %esi
movq 0x2041e(%rip), %rdi     # 0x36fb8
callq 0x41d0
movq %rax, %rbx
leaq 0x15633(%rip), %rsi     # 0x2c1dc
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 0x20(%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 0x155e8(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x438(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x155bd(%rip), %rsi     # 0x2c1dc
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 0x17736(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x2032d(%rip), %rdi     # 0x36fb8
leaq 0x16bd3(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20315(%rip), %rdi     # 0x36fb8
leaq 0x16afe(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x202fd(%rip), %rdi     # 0x36fb8
movl $0xd8, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x169b4(%rip), %rdi     # 0x2d688
leaq 0x16b8a(%rip), %rsi     # 0x2d865
leaq 0x16e74(%rip), %rcx     # 0x2db56
movl $0xd8, %edx
callq 0x41c0
movq 0x202c5(%rip), %rdi     # 0x36fb8
leaq 0x154cc(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x202ad(%rip), %rdi     # 0x36fb8
movq 0x10(%rsp), %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x154bd(%rip), %rsi     # 0x2c1dc
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 0x15474(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x418(%r14), %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x15449(%rip), %rsi     # 0x2c1dc
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 0x175c2(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x201b9(%rip), %rdi     # 0x36fb8
leaq 0x16a5f(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x201a1(%rip), %rdi     # 0x36fb8
leaq 0x1698a(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x20189(%rip), %rdi     # 0x36fb8
movl $0xd9, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x16840(%rip), %rdi     # 0x2d688
leaq 0x16a16(%rip), %rsi     # 0x2d865
leaq 0x16d00(%rip), %rcx     # 0x2db56
movl $0xd9, %edx
callq 0x41c0
movq 0x20151(%rip), %rdi     # 0x36fb8
leaq 0x15358(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x20139(%rip), %rdi     # 0x36fb8
xorl %esi, %esi
callq 0x4610
movq %rax, %rbx
leaq 0x1534c(%rip), %rsi     # 0x2c1dc
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 0x15306(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x43b0
movq 0x8(%rsp), %rsi
andl $0x3, %esi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x152da(%rip), %rsi     # 0x2c1dc
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), %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 0x17452(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x20049(%rip), %rdi     # 0x36fb8
leaq 0x168ef(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x20031(%rip), %rdi     # 0x36fb8
leaq 0x1681a(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x20019(%rip), %rdi     # 0x36fb8
movl $0xe0, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x166d0(%rip), %rdi     # 0x2d688
leaq 0x168a6(%rip), %rsi     # 0x2d865
leaq 0x16b90(%rip), %rcx     # 0x2db56
movl $0xe0, %edx
callq 0x41c0
movq 0x20019(%rip), %rdi     # 0x36ff0
leaq 0x170f4(%rip), %rsi     # 0x2e0d2
movl $0x1c, %edx
callq 0x43b0
movq 0x20001(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1ff4d(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x1ffd4(%rip), %rdi     # 0x36ff0
leaq 0x170af(%rip), %rsi     # 0x2e0d2
movl $0x1c, %edx
callq 0x43b0
movq 0x1ffbc(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1ff08(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq 0x1ff8f(%rip), %rdi     # 0x36ff0
leaq 0x155c4(%rip), %rsi     # 0x2c62c
movl $0x4e, %edx
callq 0x43b0
movq 0x1ff77(%rip), %rdi     # 0x36ff0
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fec3(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1757e
movq 0x1ff0d(%rip), %rdi     # 0x36fb8
leaq 0x15114(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x1fef5(%rip), %rdi     # 0x36fb8
movl $0x1000000, %esi        # imm = 0x1000000
callq 0x4610
movq %rax, %r14
leaq 0x15105(%rip), %rsi     # 0x2c1dc
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 0x150b8(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %r14, %rdi
callq 0x43b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x41d0
movq %rax, %r14
leaq 0x15091(%rip), %rsi     # 0x2c1dc
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 0x1720c(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1fe03(%rip), %rdi     # 0x36fb8
leaq 0x166a9(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x1fdeb(%rip), %rdi     # 0x36fb8
leaq 0x165d4(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x1fdd3(%rip), %rdi     # 0x36fb8
movl $0x77, %esi
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1648a(%rip), %rdi     # 0x2d688
leaq 0x16660(%rip), %rsi     # 0x2d865
leaq 0x1694a(%rip), %rcx     # 0x2db56
movl $0x77, %edx
callq 0x41c0
movq 0x1fdd3(%rip), %rdi     # 0x36ff0
leaq 0x16a20(%rip), %rsi     # 0x2dc44
movl $0xa, %edx
callq 0x43b0
movq 0x1fdbb(%rip), %rdi     # 0x36ff0
movq %r12, %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x16a08(%rip), %rsi     # 0x2dc4f
movl $0xf, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x8(%rsp), %rsi
shrq $0x2, %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x169f0(%rip), %rsi     # 0x2dc5f
movl $0x1c, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fcab(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1757e
movq 0x1fd2d(%rip), %rdi     # 0x36ff0
leaq 0x1697a(%rip), %rsi     # 0x2dc44
movl $0xa, %edx
callq 0x43b0
movq 0x1fd15(%rip), %rdi     # 0x36ff0
movq %rbx, %rsi
callq 0x41d0
movq %rax, %rbx
leaq 0x16962(%rip), %rsi     # 0x2dc4f
movl $0xf, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x8(%rsp), %rsi
shrq $0x2, %rsi
movq %rbx, %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0x1694a(%rip), %rsi     # 0x2dc5f
movl $0x1c, %edx
movq %rax, %rdi
callq 0x43b0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x43b0
movq %rax, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1fc05(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
jmp 0x1757e
movq %rax, %rbx
movq 0x1fc4c(%rip), %rdi     # 0x36fb8
leaq 0x14e53(%rip), %rsi     # 0x2c1c6
movl $0x15, %edx
callq 0x43b0
movq 0x1fc34(%rip), %rdi     # 0x36fb8
xorl %esi, %esi
callq 0x4610
movq %rax, %r14
leaq 0x14e47(%rip), %rsi     # 0x2c1dc
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
xorl %esi, %esi
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 0x14dfd(%rip), %rsi     # 0x2c1e1
movl $0x7, %edx
movq %r14, %rdi
callq 0x43b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x41d0
movq %rax, %r14
leaq 0x14dd6(%rip), %rsi     # 0x2c1dc
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 0x16f51(%rip), %rsi     # 0x2e3a5
movl $0x1, %edx
movq %rbx, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movq 0x1fb48(%rip), %rdi     # 0x36fb8
leaq 0x163ee(%rip), %rsi     # 0x2d865
movl $0xd, %edx
callq 0x43b0
movq 0x1fb30(%rip), %rdi     # 0x36fb8
leaq 0x16319(%rip), %rsi     # 0x2d7a8
movl $0x1, %edx
callq 0x43b0
movq 0x1fb18(%rip), %rdi     # 0x36fb8
movl $0x11c, %esi            # imm = 0x11C
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x161cf(%rip), %rdi     # 0x2d688
leaq 0x163a5(%rip), %rsi     # 0x2d865
leaq 0x1668f(%rip), %rcx     # 0x2db56
movl $0x11c, %edx            # imm = 0x11C
callq 0x41c0
jmp 0x17752
jmp 0x174dd
jmp 0x17752
movq %rax, %r14
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x17755
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x4340
jmp 0x17755
movq %rax, %r14
cmpl $0x1, %edx
jne 0x17755
movq %r14, %rdi
callq 0x4130
movq 0x1facf(%rip), %rdi     # 0x36ff0
leaq 0x16754(%rip), %rsi     # 0x2dc7c
movl $0x4e, %edx
callq 0x43b0
movq 0x1fab7(%rip), %rdi     # 0x36ff0
callq 0x4150
movq %rax, %rbx
leaq 0x16783(%rip), %rsi     # 0x2dccb
movl $0x26, %edx
movq %rax, %rdi
callq 0x43b0
movq %rbx, %rdi
callq 0x4150
movl $0x4, %edi
callq 0x4160
movl $0x1, (%rax)
movq 0x1f9e4(%rip), %rsi     # 0x36f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x45f0
movq %rax, %r14
callq 0x4580
jmp 0x17755
jmp 0x17826
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17826
jmp 0x17752
jmp 0x17752
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x175c4
jmp 0x17826
movq %rax, %r14
jmp 0x17715
jmp 0x176d7
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x176d7
movq %rax, %r14
leaq 0x1a8(%rsp), %rdi
callq 0x1092e
jmp 0x1772f
jmp 0x176d7
jmp 0x176d7
jmp 0x17752
jmp 0x176d7
jmp 0x176d7
jmp 0x1761f
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x17771
movq 0x1b8(%rsp), %rsi
jmp 0x17769
movq %rax, %r14
jmp 0x17771
jmp 0x1764a
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x17796
movq 0x1b8(%rsp), %rsi
jmp 0x1778e
movq %rax, %r14
jmp 0x17796
jmp 0x176d7
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17752
movq %rax, %r14
leaq 0x168(%rsp), %rdi
callq 0x1092e
jmp 0x176e3
jmp 0x176ba
jmp 0x176ba
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x17752
jmp 0x176e0
movq %rax, %r14
leaq 0x1a8(%rsp), %rdi
callq 0x20f3e
jmp 0x17715
jmp 0x17826
jmp 0x176d7
jmp 0x176e0
jmp 0x176d7
movq %rax, %r14
jmp 0x1772f
jmp 0x17752
jmp 0x176e0
movq %rax, %r14
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x17708
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x4340
leaq 0x1a8(%rsp), %rdi
callq 0x20f3e
leaq 0x188(%rsp), %rdi
callq 0x1f9be
leaq 0xd0(%rsp), %rdi
callq 0x1f9be
leaq 0x128(%rsp), %rdi
callq 0x2043a
jmp 0x17755
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
movq %rax, %r14
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x17771
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x17796
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x4340
movq 0x90(%rsp), %rdi
callq 0x2005e
movq 0x88(%rsp), %rdi
callq 0x1fd24
movq 0x120(%rsp), %rdi
callq 0x1fd24
movq 0x80(%rsp), %rdi
callq 0x1f9be
movq 0xa0(%rsp), %rdi
callq 0x1f9be
movq 0x98(%rsp), %rdi
callq 0x1f9be
movq 0x78(%rsp), %rdi
callq 0x1f9be
movq 0x70(%rsp), %rdi
callq 0x1f9be
movq 0x68(%rsp), %rdi
callq 0x1fd24
movq 0x28(%rsp), %rdi
callq 0x1f656
movq %r14, %rdi
callq 0x4620
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
jmp 0x17826
movq %rax, %rdi
callq 0x100de