// File: 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
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xc58, %rsp            # imm = 0xC58
movq %r8, %r10
movq %rcx, %r11
movq %rsi, %r14
movq %rdi, %r15
movb %dl, %bl
movb 0x38(%rbp), %al
movb 0x30(%rbp), %cl
movb 0x28(%rbp), %dl
movb 0x20(%rbp), %sil
movb 0x18(%rbp), %dil
movb 0x10(%rbp), %r8b
movq %r15, -0x20(%rbp)
movq %r14, -0x28(%rbp)
andb $0x1, %bl
movb %bl, -0x29(%rbp)
movq %r11, -0x38(%rbp)
movq %r10, -0x40(%rbp)
andb $0x1, %r9b
movb %r9b, -0x41(%rbp)
andb $0x1, %r8b
movb %r8b, -0x42(%rbp)
andb $0x1, %dil
movb %dil, -0x43(%rbp)
andb $0x1, %sil
movb %sil, -0x44(%rbp)
andb $0x1, %dl
movb %dl, -0x45(%rbp)
andb $0x1, %cl
movb %cl, -0x46(%rbp)
andb $0x1, %al
movb %al, -0x47(%rbp)
movq -0x20(%rbp), %rdi
movq %rdi, -0x320(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq %rdi, -0x328(%rbp)
callq 0x2bcc0
movq -0x320(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
movq %rdi, -0x318(%rbp)
callq 0x2bd00
jmp 0x1e584
movq -0x320(%rbp), %rdi
addq $0x440, %rdi            # imm = 0x440
movq %rdi, -0x330(%rbp)
callq 0x2bd40
jmp 0x1e5a0
movq -0x320(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
movq %rdi, -0x338(%rbp)
callq 0x2bd40
jmp 0x1e5bc
movq -0x320(%rbp), %rdi
addq $0x480, %rdi            # imm = 0x480
movq %rdi, -0x340(%rbp)
callq 0x2bd40
jmp 0x1e5d8
movq -0x320(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movq %rdi, -0x348(%rbp)
callq 0x2bd40
jmp 0x1e5f4
movq -0x320(%rbp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
movq %rdi, -0x350(%rbp)
callq 0x2bd40
jmp 0x1e610
movq -0x320(%rbp), %rdi
addq $0x4e0, %rdi            # imm = 0x4E0
movq %rdi, -0x358(%rbp)
callq 0x2bd00
jmp 0x1e62c
movq -0x320(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
movq %rdi, -0x360(%rbp)
callq 0x2bd00
jmp 0x1e648
movq -0x320(%rbp), %rdi
addq $0x520, %rdi            # imm = 0x520
movq %rdi, -0x368(%rbp)
callq 0x2bd80
jmp 0x1e664
movq -0x320(%rbp), %rax
movq $0x0, 0x540(%rax)
movq $0x0, 0x548(%rax)
movb $0x1, 0x56c(%rax)
movb -0x29(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x56d(%rax)
movb -0x43(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x56e(%rax)
movb -0x44(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x56f(%rax)
movb -0x46(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x570(%rax)
movq -0x28(%rbp), %rsi
leaq 0x22305(%rip), %rdx     # 0x409c8
leaq -0x98(%rbp), %rdi
callq 0x1a930
jmp 0x1e6d1
leaq 0x2db08(%rip), %rdx     # 0x4c1e0
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x2bdc0
jmp 0x1e6ea
leaq -0x98(%rbp), %rdi
callq 0x5888
movq -0x28(%rbp), %rsi
leaq 0x222cb(%rip), %rdx     # 0x409cc
leaq -0xd8(%rbp), %rdi
callq 0x1a930
jmp 0x1e70f
leaq 0x2daca(%rip), %rdx     # 0x4c1e0
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x2bdc0
jmp 0x1e72b
leaq -0xd8(%rbp), %rdi
callq 0x5888
leaq -0x78(%rbp), %rdi
callq 0x5150
movq %rax, %rdi
leaq 0x20cac(%rip), %rsi     # 0x3f3f6
callq 0x5460
movq %rax, -0x370(%rbp)
jmp 0x1e758
movq -0x370(%rbp), %rax
movq %rax, -0xe0(%rbp)
cmpq $0x0, %rax
jne 0x1e99a
movq 0x2b879(%rip), %rdi     # 0x49ff0
leaq 0x22252(%rip), %rsi     # 0x409d0
callq 0x5360
movq %rax, -0x378(%rbp)
jmp 0x1e78c
movq -0x378(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x52f0
movq %rax, -0x380(%rbp)
jmp 0x1e7a5
movq -0x380(%rbp), %rdi
leaq 0x22249(%rip), %rsi     # 0x409fc
callq 0x5360
movq %rax, -0x388(%rbp)
jmp 0x1e7c1
movq -0x388(%rbp), %rdi
movq 0x2b7b1(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1e7d6
movq 0x2b813(%rip), %rdi     # 0x49ff0
leaq 0x22226(%rip), %rsi     # 0x40a0a
callq 0x5360
movq %rax, -0x390(%rbp)
jmp 0x1e7f2
movq -0x390(%rbp), %rdi
movq 0x2b780(%rip), %rsi     # 0x49f80
callq 0x53c0
movq %rax, -0x398(%rbp)
jmp 0x1e80e
movq -0x398(%rbp), %rdi
leaq 0x22235(%rip), %rsi     # 0x40a51
callq 0x5360
movq %rax, -0x3a0(%rbp)
jmp 0x1e82a
movq -0x3a0(%rbp), %rdi
movq 0x2b748(%rip), %rsi     # 0x49f80
callq 0x53c0
movq %rax, -0x3a8(%rbp)
jmp 0x1e846
movq -0x3a8(%rbp), %rdi
leaq 0x22249(%rip), %rsi     # 0x40a9d
callq 0x5360
movq %rax, -0x3b0(%rbp)
jmp 0x1e862
movq -0x3b0(%rbp), %rdi
movq 0x2b710(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1e877
movq -0x320(%rbp), %rax
movb $0x0, 0x56c(%rax)
movl $0x1, -0xec(%rbp)
jmp 0x21d01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21da5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5888
jmp 0x21d39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x5888
jmp 0x21d30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21d24
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq %rax, %rdi
leaq 0x20a46(%rip), %rsi     # 0x3f3f6
callq 0x5460
movq %rax, -0x3b8(%rbp)
jmp 0x1e9be
movq -0x3b8(%rbp), %rax
movq %rax, -0xe8(%rbp)
cmpq $0x0, %rax
jne 0x1ea5c
movq 0x2b613(%rip), %rdi     # 0x49ff0
leaq 0x21fec(%rip), %rsi     # 0x409d0
callq 0x5360
movq %rax, -0x3c0(%rbp)
jmp 0x1e9f2
movq -0x3c0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x52f0
movq %rax, -0x3c8(%rbp)
jmp 0x1ea0e
movq -0x3c8(%rbp), %rdi
leaq 0x21fe0(%rip), %rsi     # 0x409fc
callq 0x5360
movq %rax, -0x3d0(%rbp)
jmp 0x1ea2a
movq -0x3d0(%rbp), %rdi
movq 0x2b548(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1ea3f
movq -0x320(%rbp), %rax
movb $0x0, 0x56c(%rax)
movl $0x1, -0xec(%rbp)
jmp 0x21d01
movq -0x320(%rbp), %rax
movq $0x0, -0xf8(%rbp)
testb $0x1, 0x56e(%rax)
je 0x1ed79
movq -0x320(%rbp), %rax
testb $0x1, 0x570(%rax)
jne 0x1ea91
testb $0x1, -0x47(%rbp)
je 0x1eaf3
movq 0x2b558(%rip), %rdi     # 0x49ff0
leaq 0x2203d(%rip), %rsi     # 0x40adc
callq 0x5360
movq %rax, -0x3d8(%rbp)
jmp 0x1eaad
movq -0x3d8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x52f0
movq %rax, -0x3e0(%rbp)
jmp 0x1eac9
movq -0x3e0(%rbp), %rdi
leaq 0x20f4a(%rip), %rsi     # 0x3fa21
callq 0x5360
jmp 0x1eade
movq 0x2b50b(%rip), %rdi     # 0x49ff0
movl $0x1, %esi
callq 0xdf60
jmp 0x1eaf1
jmp 0x1eaf3
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq %rax, %rdi
leaq -0x188(%rbp), %rsi
callq 0x5730
cmpl $-0x1, %eax
jne 0x1ebbe
leaq 0x20934(%rip), %rdi     # 0x3f452
callq 0x52b0
jmp 0x1eb25
movq 0x2b4c4(%rip), %rdi     # 0x49ff0
leaq 0x20924(%rip), %rsi     # 0x3f457
callq 0x5360
movq %rax, -0x3e8(%rbp)
jmp 0x1eb41
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq -0x3e8(%rbp), %rdi
movq %rax, %rsi
callq 0x5360
movq %rax, -0x3f0(%rbp)
jmp 0x1eb65
movq -0x3f0(%rbp), %rdi
leaq 0x20906(%rip), %rsi     # 0x3f479
callq 0x5360
movq %rax, -0x3f8(%rbp)
jmp 0x1eb81
movq -0x3f8(%rbp), %rdi
movq 0x2b3f1(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1eb96
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x2b3c0(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
movq -0x158(%rbp), %rax
movq %rax, -0x400(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x53e0
movq -0x400(%rbp), %rsi
movl %eax, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %ecx
movq %r9, %rdi
movl %ecx, %edx
callq 0x5330
movq %rax, -0xf8(%rbp)
movq $-0x1, %rax
cmpq %rax, -0xf8(%rbp)
je 0x1ec1b
cmpq $0x0, -0xf8(%rbp)
jne 0x1eca6
leaq 0x20870(%rip), %rdi     # 0x3f492
callq 0x52b0
jmp 0x1ec29
movq 0x2b3c0(%rip), %rdi     # 0x49ff0
leaq 0x20860(%rip), %rsi     # 0x3f497
callq 0x5360
movq %rax, -0x408(%rbp)
jmp 0x1ec45
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq -0x408(%rbp), %rdi
movq %rax, %rsi
callq 0x5360
movq %rax, -0x410(%rbp)
jmp 0x1ec69
movq -0x410(%rbp), %rdi
movq 0x2b309(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1ec7e
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x2b2d8(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
testb $0x1, -0x45(%rbp)
je 0x1ed77
movq $0x0, -0x190(%rbp)
movq $0x0, -0x198(%rbp)
movq -0x198(%rbp), %rax
cmpq -0x158(%rbp), %rax
jge 0x1ed0d
movq -0xf8(%rbp), %rax
movq -0x198(%rbp), %rcx
movsbq (%rax,%rcx), %rax
addq -0x190(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x198(%rbp), %rax
addq $0x400, %rax            # imm = 0x400
movq %rax, -0x198(%rbp)
jmp 0x1ecc6
testb $0x1, -0x47(%rbp)
je 0x1ed75
movq 0x2b2d6(%rip), %rdi     # 0x49ff0
leaq 0x21de2(%rip), %rsi     # 0x40b03
callq 0x5360
movq %rax, -0x418(%rbp)
jmp 0x1ed2f
movq -0x418(%rbp), %rdi
movq -0x190(%rbp), %rsi
callq 0x57b0
movq %rax, -0x420(%rbp)
jmp 0x1ed4b
movq -0x420(%rbp), %rdi
leaq 0x20cc8(%rip), %rsi     # 0x3fa21
callq 0x5360
jmp 0x1ed60
movq 0x2b289(%rip), %rdi     # 0x49ff0
movl $0x1, %esi
callq 0xdf60
jmp 0x1ed73
jmp 0x1ed75
jmp 0x1ed77
jmp 0x1ed79
movb $0x0, -0x19d(%rbp)
movq -0xe0(%rbp), %rdi
movzbl -0x19d(%rbp), %esi
andl $0x1, %esi
callq 0x12780
movl %eax, -0x424(%rbp)
jmp 0x1ed9e
movl -0x424(%rbp), %eax
movl %eax, -0x19c(%rbp)
cmpl $0x1, -0x19c(%rbp)
je 0x1f039
movq -0x320(%rbp), %rax
testb $0x1, 0x56e(%rax)
je 0x1ee20
movq 0x2b222(%rip), %rdi     # 0x49ff0
leaq 0x207aa(%rip), %rsi     # 0x3f57f
callq 0x5360
movq %rax, -0x430(%rbp)
jmp 0x1ede3
movq -0x430(%rbp), %rdi
movq 0x2b18f(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1edf8
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x2b15e(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
movl $0x1000000, %eax        # imm = 0x1000000
cmpl -0x19c(%rbp), %eax
je 0x1f032
movq 0x2b188(%rip), %rdi     # 0x49fc0
leaq 0x202da(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x438(%rbp)
jmp 0x1ee4d
movq -0x438(%rbp), %rdi
movl $0x1000000, %esi        # imm = 0x1000000
callq 0x5750
movq %rax, -0x440(%rbp)
jmp 0x1ee67
movq -0x440(%rbp), %rdi
leaq 0x202ba(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x448(%rbp)
jmp 0x1ee83
movq -0x448(%rbp), %rdi
leaq -0x66b1(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x450(%rbp)
jmp 0x1ee9f
movq -0x450(%rbp), %rdi
movl $0x1000000, %esi        # imm = 0x1000000
callq 0x5750
movq %rax, -0x458(%rbp)
jmp 0x1eeb9
movq -0x458(%rbp), %rdi
leaq -0x66b7(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x460(%rbp)
jmp 0x1eed5
movq -0x460(%rbp), %rdi
leaq 0x20251(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x468(%rbp)
jmp 0x1eef1
movq -0x468(%rbp), %rdi
movl -0x19c(%rbp), %esi
callq 0x5530
movq %rax, -0x470(%rbp)
jmp 0x1ef0c
movq -0x470(%rbp), %rdi
leaq 0x20215(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x478(%rbp)
jmp 0x1ef28
movq -0x478(%rbp), %rdi
leaq -0x6756(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x480(%rbp)
jmp 0x1ef44
movq -0x480(%rbp), %rdi
movl -0x19c(%rbp), %esi
callq 0x5530
movq %rax, -0x488(%rbp)
jmp 0x1ef5f
movq -0x488(%rbp), %rdi
leaq -0x675d(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x490(%rbp)
jmp 0x1ef7b
movq -0x490(%rbp), %rdi
leaq 0x2262f(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x498(%rbp)
jmp 0x1ef97
movq -0x498(%rbp), %rdi
movq 0x2afdb(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1efac
movq 0x2b00d(%rip), %rdi     # 0x49fc0
leaq 0x2188d(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x4a0(%rbp)
jmp 0x1efc8
movq -0x4a0(%rbp), %rdi
leaq 0x217b4(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x4a8(%rbp)
jmp 0x1efe4
movq -0x4a8(%rbp), %rdi
movl $0x77, %esi
callq 0x5750
movq %rax, -0x4b0(%rbp)
jmp 0x1effe
movq -0x4b0(%rbp), %rdi
movq 0x2af74(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f013
leaq 0x21650(%rip), %rdi     # 0x4066a
leaq 0x21826(%rip), %rsi     # 0x40847
movl $0x77, %edx
leaq 0x21b0b(%rip), %rcx     # 0x40b38
callq 0x51e0
movb $0x1, -0x19d(%rbp)
movq -0xe0(%rbp), %rdi
movzbl -0x19d(%rbp), %esi
andl $0x1, %esi
callq 0xe330
movq %rax, -0x4b8(%rbp)
jmp 0x1f058
movq -0x4b8(%rbp), %rax
movq %rax, -0x1a8(%rbp)
cmpq $0x0, -0x1a8(%rbp)
jne 0x1f0e2
movq 0x2af79(%rip), %rdi     # 0x49ff0
leaq 0x21b44(%rip), %rsi     # 0x40bc2
callq 0x5360
movq %rax, -0x4c0(%rbp)
jmp 0x1f08c
movq -0x4c0(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x52f0
movq %rax, -0x4c8(%rbp)
jmp 0x1f0a5
movq -0x4c8(%rbp), %rdi
movq 0x2aecd(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f0ba
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x2ae9c(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
movq -0x320(%rbp), %rax
movq $0x0, 0x560(%rax)
movl $0x0, 0x568(%rax)
movq $0x0, -0x1b0(%rbp)
movq $0x0, -0x1b8(%rbp)
movq $0x0, -0x1c0(%rbp)
movq $0x0, -0x1c8(%rbp)
movq $0x0, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rax
cmpq -0x1a8(%rbp), %rax
jae 0x1f1a3
movq -0x320(%rbp), %rax
addq $0x400, %rax            # imm = 0x400
movq %rax, -0x4d0(%rbp)
movq -0xe0(%rbp), %rsi
movzbl -0x19d(%rbp), %edx
andl $0x1, %edx
leaq -0x1e8(%rbp), %rdi
callq 0x2bea0
jmp 0x1f178
movq -0x4d0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x2be10
jmp 0x1f18d
jmp 0x1f18f
movq -0x1d0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1d0(%rbp)
jmp 0x1f135
movq $0x0, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
cmpq -0x1a8(%rbp), %rax
jae 0x1fae6
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x4d8(%rbp)
jmp 0x1f1e5
movq -0x4d8(%rbp), %rax
testb $0x1, 0x10(%rax)
je 0x1f8f2
movq -0x320(%rbp), %rax
cmpq $0x0, 0x560(%rax)
jbe 0x1f225
movq -0x320(%rbp), %rdi
addq $0x440, %rdi            # imm = 0x440
leaq -0x1b8(%rbp), %rsi
callq 0x2c110
jmp 0x1f223
jmp 0x1f225
cmpq $0x0, -0x1c0(%rbp)
jbe 0x1f263
cmpq $0x1, -0x1c8(%rbp)
jbe 0x1f263
movq -0x320(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
movl -0x1b8(%rbp), %eax
movl %eax, -0x1f4(%rbp)
leaq -0x1f4(%rbp), %rsi
callq 0x2c180
jmp 0x1f261
jmp 0x1f263
movq -0x320(%rbp), %rdi
movb $0x1, -0x1f5(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x4e0(%rbp)
jmp 0x1f28d
movq -0x4e0(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x1f361
testb $0x1, -0x1f5(%rbp)
je 0x1f361
movq -0x320(%rbp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
leaq -0x1f0(%rbp), %rsi
callq 0x2c110
jmp 0x1f2c8
movq -0x320(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
leaq -0x1b0(%rbp), %rsi
callq 0x2c110
jmp 0x1f2e4
movq -0x320(%rbp), %rax
movq %rax, %rdi
addq $0x4e0, %rdi            # imm = 0x4E0
movl 0x560(%rax), %eax
movl %eax, -0x1fc(%rbp)
leaq -0x1fc(%rbp), %rsi
callq 0x2c180
jmp 0x1f30f
movq -0x320(%rbp), %rsi
movq %rsi, %rdi
addq $0x500, %rdi            # imm = 0x500
addq $0x568, %rsi            # imm = 0x568
callq 0x2c180
jmp 0x1f32e
movq -0x320(%rbp), %rdi
movl 0x568(%rdi), %eax
incl %eax
movl %eax, 0x568(%rdi)
addq $0x520, %rdi            # imm = 0x520
movb $0x0, -0x1fd(%rbp)
leaq -0x1fd(%rbp), %rsi
callq 0x2c1f0
jmp 0x1f35f
jmp 0x1f3a5
movq -0x320(%rbp), %rsi
movq %rsi, %rdi
addq $0x500, %rdi            # imm = 0x500
addq $0x568, %rsi            # imm = 0x568
callq 0x2c180
jmp 0x1f380
movq -0x320(%rbp), %rdi
addq $0x520, %rdi            # imm = 0x520
movb $0x1, -0x1fe(%rbp)
leaq -0x1fe(%rbp), %rsi
callq 0x2c1f0
jmp 0x1f3a3
jmp 0x1f3a5
movq -0x320(%rbp), %rdi
movq $0x0, -0x1b8(%rbp)
movq $0x0, -0x1c0(%rbp)
movq $0x0, -0x1c8(%rbp)
movq 0x560(%rdi), %rax
incq %rax
movq %rax, 0x560(%rdi)
movl 0x568(%rdi), %eax
movq %rax, -0x4f0(%rbp)
addq $0x4e0, %rdi            # imm = 0x4E0
callq 0x2c260
movq %rax, -0x4e8(%rbp)
jmp 0x1f400
movq -0x4f0(%rbp), %rax
movq -0x4e8(%rbp), %rcx
cmpq %rcx, %rax
je 0x1f662
movq 0x2aba2(%rip), %rdi     # 0x49fc0
leaq 0x1fcf4(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x4f8(%rbp)
jmp 0x1f433
movq -0x4f8(%rbp), %rdi
movq -0x320(%rbp), %rax
movl 0x568(%rax), %esi
callq 0x5530
movq %rax, -0x500(%rbp)
jmp 0x1f455
movq -0x500(%rbp), %rdi
leaq 0x1fccc(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x508(%rbp)
jmp 0x1f471
movq -0x508(%rbp), %rdi
leaq -0x6c9f(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x510(%rbp)
jmp 0x1f48d
movq -0x510(%rbp), %rdi
movq -0x320(%rbp), %rax
movl 0x568(%rax), %esi
callq 0x5530
movq %rax, -0x518(%rbp)
jmp 0x1f4af
movq -0x518(%rbp), %rdi
leaq -0x6cad(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x520(%rbp)
jmp 0x1f4cb
movq -0x520(%rbp), %rdi
leaq 0x1fc5b(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x528(%rbp)
jmp 0x1f4e7
movq -0x320(%rbp), %rdi
addq $0x4e0, %rdi            # imm = 0x4E0
callq 0x2c260
movq %rax, -0x530(%rbp)
jmp 0x1f503
movq -0x530(%rbp), %rsi
movq -0x528(%rbp), %rdi
callq 0x50c0
movq %rax, -0x538(%rbp)
jmp 0x1f51f
movq -0x538(%rbp), %rdi
leaq 0x1fc02(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x540(%rbp)
jmp 0x1f53b
movq -0x540(%rbp), %rdi
leaq -0x6d69(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x548(%rbp)
jmp 0x1f557
movq -0x320(%rbp), %rdi
addq $0x4e0, %rdi            # imm = 0x4E0
callq 0x2c260
movq %rax, -0x550(%rbp)
jmp 0x1f573
movq -0x550(%rbp), %rsi
movq -0x548(%rbp), %rdi
callq 0x50c0
movq %rax, -0x558(%rbp)
jmp 0x1f58f
movq -0x558(%rbp), %rdi
leaq -0x6d8d(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x560(%rbp)
jmp 0x1f5ab
movq -0x560(%rbp), %rdi
leaq 0x21fff(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x568(%rbp)
jmp 0x1f5c7
movq -0x568(%rbp), %rdi
movq 0x2a9ab(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f5dc
movq 0x2a9dd(%rip), %rdi     # 0x49fc0
leaq 0x2125d(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x570(%rbp)
jmp 0x1f5f8
movq -0x570(%rbp), %rdi
leaq 0x21184(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x578(%rbp)
jmp 0x1f614
movq -0x578(%rbp), %rdi
movl $0xb5, %esi
callq 0x5750
movq %rax, -0x580(%rbp)
jmp 0x1f62e
movq -0x580(%rbp), %rdi
movq 0x2a944(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f643
leaq 0x21020(%rip), %rdi     # 0x4066a
leaq 0x211f6(%rip), %rsi     # 0x40847
movl $0xb5, %edx
leaq 0x214db(%rip), %rcx     # 0x40b38
callq 0x51e0
movq -0x320(%rbp), %rdi
movq 0x560(%rdi), %rax
movq %rax, -0x590(%rbp)
addq $0x500, %rdi            # imm = 0x500
callq 0x2c260
movq %rax, -0x588(%rbp)
jmp 0x1f68c
movq -0x590(%rbp), %rax
movq -0x588(%rbp), %rcx
cmpq %rcx, %rax
je 0x1f8f0
movq 0x2a916(%rip), %rdi     # 0x49fc0
leaq 0x1fa68(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x598(%rbp)
jmp 0x1f6bf
movq -0x598(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x560(%rax), %rsi
callq 0x50c0
movq %rax, -0x5a0(%rbp)
jmp 0x1f6e2
movq -0x5a0(%rbp), %rdi
leaq 0x1fa3f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x5a8(%rbp)
jmp 0x1f6fe
movq -0x5a8(%rbp), %rdi
leaq -0x6f2c(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x5b0(%rbp)
jmp 0x1f71a
movq -0x5b0(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x560(%rax), %rsi
callq 0x50c0
movq %rax, -0x5b8(%rbp)
jmp 0x1f73d
movq -0x5b8(%rbp), %rdi
leaq -0x6f3b(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x5c0(%rbp)
jmp 0x1f759
movq -0x5c0(%rbp), %rdi
leaq 0x1f9cd(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x5c8(%rbp)
jmp 0x1f775
movq -0x320(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
callq 0x2c260
movq %rax, -0x5d0(%rbp)
jmp 0x1f791
movq -0x5d0(%rbp), %rsi
movq -0x5c8(%rbp), %rdi
callq 0x50c0
movq %rax, -0x5d8(%rbp)
jmp 0x1f7ad
movq -0x5d8(%rbp), %rdi
leaq 0x1f974(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x5e0(%rbp)
jmp 0x1f7c9
movq -0x5e0(%rbp), %rdi
leaq -0x6ff7(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x5e8(%rbp)
jmp 0x1f7e5
movq -0x320(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
callq 0x2c260
movq %rax, -0x5f0(%rbp)
jmp 0x1f801
movq -0x5f0(%rbp), %rsi
movq -0x5e8(%rbp), %rdi
callq 0x50c0
movq %rax, -0x5f8(%rbp)
jmp 0x1f81d
movq -0x5f8(%rbp), %rdi
leaq -0x701b(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x600(%rbp)
jmp 0x1f839
movq -0x600(%rbp), %rdi
leaq 0x21d71(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x608(%rbp)
jmp 0x1f855
movq -0x608(%rbp), %rdi
movq 0x2a71d(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f86a
movq 0x2a74f(%rip), %rdi     # 0x49fc0
leaq 0x20fcf(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x610(%rbp)
jmp 0x1f886
movq -0x610(%rbp), %rdi
leaq 0x20ef6(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x618(%rbp)
jmp 0x1f8a2
movq -0x618(%rbp), %rdi
movl $0xb6, %esi
callq 0x5750
movq %rax, -0x620(%rbp)
jmp 0x1f8bc
movq -0x620(%rbp), %rdi
movq 0x2a6b6(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1f8d1
leaq 0x20d92(%rip), %rdi     # 0x4066a
leaq 0x20f68(%rip), %rsi     # 0x40847
movl $0xb6, %edx
leaq 0x2124d(%rip), %rcx     # 0x40b38
callq 0x51e0
jmp 0x1f900
cmpq $0x0, -0x1f0(%rbp)
jne 0x1f8fe
jmp 0x1f8fe
jmp 0x1f900
movq -0x320(%rbp), %rdi
addq $0x480, %rdi            # imm = 0x480
leaq -0x1b0(%rbp), %rsi
callq 0x2c110
jmp 0x1f91c
movq -0x320(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
leaq -0x1b8(%rbp), %rsi
callq 0x2c110
jmp 0x1f938
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x628(%rbp)
jmp 0x1f95b
movq -0x320(%rbp), %rdi
movq -0x628(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x1b0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x630(%rbp)
jmp 0x1f99a
movq -0x630(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x1fa22
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x638(%rbp)
jmp 0x1f9cb
movq -0x320(%rbp), %rdi
movq -0x638(%rbp), %rax
movq (%rax), %rcx
movq -0x1b8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x1b8(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x640(%rbp)
jmp 0x1fa09
movq -0x640(%rbp), %rax
movq 0x8(%rax), %rax
addq -0x1b8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x648(%rbp)
jmp 0x1fa45
movq -0x320(%rbp), %rdi
movq -0x648(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x1c0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x1c0(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x650(%rbp)
jmp 0x1fa84
movq -0x650(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x1c8(%rbp), %rax
jbe 0x1facd
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0x1f0(%rbp), %rsi
callq 0x2c010
movq %rax, -0x658(%rbp)
jmp 0x1fabb
movq -0x658(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x1c8(%rbp)
jmp 0x1facf
movq -0x1f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1f0(%rbp)
jmp 0x1f1ae
movq -0x320(%rbp), %rax
testb $0x1, 0x570(%rax)
jne 0x1fb00
testb $0x1, -0x47(%rbp)
je 0x1fbdf
movq 0x2a4e9(%rip), %rdi     # 0x49ff0
leaq 0x210e0(%rip), %rsi     # 0x40bee
callq 0x5360
movq %rax, -0x660(%rbp)
jmp 0x1fb1c
movq -0x660(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x560(%rax), %rsi
callq 0x50c0
movq %rax, -0x668(%rbp)
jmp 0x1fb3f
movq -0x668(%rbp), %rdi
leaq 0x210a7(%rip), %rsi     # 0x40bf4
callq 0x5360
movq %rax, -0x670(%rbp)
jmp 0x1fb5b
movq -0x670(%rbp), %rdi
movq -0x320(%rbp), %rax
movl 0x568(%rax), %esi
callq 0x5530
movq %rax, -0x678(%rbp)
jmp 0x1fb7d
movq -0x678(%rbp), %rdi
leaq 0x2107e(%rip), %rsi     # 0x40c09
callq 0x5360
movq %rax, -0x680(%rbp)
jmp 0x1fb99
movq -0x680(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x50c0
movq %rax, -0x688(%rbp)
jmp 0x1fbb5
movq -0x688(%rbp), %rdi
leaq 0x21058(%rip), %rsi     # 0x40c1b
callq 0x5360
jmp 0x1fbca
movq 0x2a41f(%rip), %rdi     # 0x49ff0
movl $0x1, %esi
callq 0xdf60
jmp 0x1fbdd
jmp 0x1fbdf
movq -0x320(%rbp), %rdi
movq %rdi, %rax
addq $0x4c0, %rax            # imm = 0x4C0
movq %rax, -0x698(%rbp)
addq $0x400, %rdi            # imm = 0x400
callq 0x22d00
movq %rax, -0x690(%rbp)
jmp 0x1fc0b
movq -0x698(%rbp), %rdi
movq -0x690(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0x208(%rbp), %rsi
callq 0x2c110
jmp 0x1fc2e
movq -0x320(%rbp), %rdi
addq $0x460, %rdi            # imm = 0x460
leaq -0x1b0(%rbp), %rsi
callq 0x2c110
jmp 0x1fc4a
cmpq $0x0, -0x1c0(%rbp)
jbe 0x1fc88
cmpq $0x1, -0x1c8(%rbp)
jbe 0x1fc88
movq -0x320(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
movl -0x1b8(%rbp), %eax
movl %eax, -0x20c(%rbp)
leaq -0x20c(%rbp), %rsi
callq 0x2c180
jmp 0x1fc86
jmp 0x1fc88
movq -0x320(%rbp), %rdi
addq $0x440, %rdi            # imm = 0x440
leaq -0x1b8(%rbp), %rsi
callq 0x2c110
jmp 0x1fca4
movq -0x320(%rbp), %rdi
addq $0x480, %rdi            # imm = 0x480
leaq -0x1b0(%rbp), %rsi
callq 0x2c110
jmp 0x1fcc0
movq -0x320(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
leaq -0x1b8(%rbp), %rsi
callq 0x2c110
jmp 0x1fcdc
movq -0x320(%rbp), %rdi
movq -0x1b0(%rbp), %rax
movq %rax, 0x550(%rdi)
movl 0x568(%rdi), %eax
movq %rax, -0x6a8(%rbp)
addq $0x420, %rdi            # imm = 0x420
callq 0x2c260
movq %rax, -0x6a0(%rbp)
jmp 0x1fd13
movq -0x6a8(%rbp), %rax
movq -0x6a0(%rbp), %rcx
cmpq %rcx, %rax
je 0x1ff75
movq 0x2a28f(%rip), %rdi     # 0x49fc0
leaq 0x1f3e1(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x6b0(%rbp)
jmp 0x1fd46
movq -0x6b0(%rbp), %rdi
movq -0x320(%rbp), %rax
movl 0x568(%rax), %esi
callq 0x5530
movq %rax, -0x6b8(%rbp)
jmp 0x1fd68
movq -0x6b8(%rbp), %rdi
leaq 0x1f3b9(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x6c0(%rbp)
jmp 0x1fd84
movq -0x6c0(%rbp), %rdi
leaq -0x75b2(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x6c8(%rbp)
jmp 0x1fda0
movq -0x6c8(%rbp), %rdi
movq -0x320(%rbp), %rax
movl 0x568(%rax), %esi
callq 0x5530
movq %rax, -0x6d0(%rbp)
jmp 0x1fdc2
movq -0x6d0(%rbp), %rdi
leaq -0x75c0(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x6d8(%rbp)
jmp 0x1fdde
movq -0x6d8(%rbp), %rdi
leaq 0x1f348(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x6e0(%rbp)
jmp 0x1fdfa
movq -0x320(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
callq 0x2c260
movq %rax, -0x6e8(%rbp)
jmp 0x1fe16
movq -0x6e8(%rbp), %rsi
movq -0x6e0(%rbp), %rdi
callq 0x50c0
movq %rax, -0x6f0(%rbp)
jmp 0x1fe32
movq -0x6f0(%rbp), %rdi
leaq 0x1f2ef(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x6f8(%rbp)
jmp 0x1fe4e
movq -0x6f8(%rbp), %rdi
leaq -0x767c(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x700(%rbp)
jmp 0x1fe6a
movq -0x320(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
callq 0x2c260
movq %rax, -0x708(%rbp)
jmp 0x1fe86
movq -0x708(%rbp), %rsi
movq -0x700(%rbp), %rdi
callq 0x50c0
movq %rax, -0x710(%rbp)
jmp 0x1fea2
movq -0x710(%rbp), %rdi
leaq -0x76a0(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x718(%rbp)
jmp 0x1febe
movq -0x718(%rbp), %rdi
leaq 0x216ec(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x720(%rbp)
jmp 0x1feda
movq -0x720(%rbp), %rdi
movq 0x2a098(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1feef
movq 0x2a0ca(%rip), %rdi     # 0x49fc0
leaq 0x2094a(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x728(%rbp)
jmp 0x1ff0b
movq -0x728(%rbp), %rdi
leaq 0x20871(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x730(%rbp)
jmp 0x1ff27
movq -0x730(%rbp), %rdi
movl $0xd8, %esi
callq 0x5750
movq %rax, -0x738(%rbp)
jmp 0x1ff41
movq -0x738(%rbp), %rdi
movq 0x2a031(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x1ff56
leaq 0x2070d(%rip), %rdi     # 0x4066a
leaq 0x208e3(%rip), %rsi     # 0x40847
movl $0xd8, %edx
leaq 0x20bc8(%rip), %rcx     # 0x40b38
callq 0x51e0
movq -0x320(%rbp), %rdi
movq -0x1a8(%rbp), %rax
movq %rax, -0x748(%rbp)
addq $0x400, %rdi            # imm = 0x400
callq 0x22d00
movq %rax, -0x740(%rbp)
jmp 0x1ff9f
movq -0x748(%rbp), %rax
movq -0x740(%rbp), %rcx
cmpq %rcx, %rax
je 0x201f5
movq 0x2a003(%rip), %rdi     # 0x49fc0
leaq 0x1f155(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x750(%rbp)
jmp 0x1ffd2
movq -0x750(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x50c0
movq %rax, -0x758(%rbp)
jmp 0x1ffee
movq -0x758(%rbp), %rdi
leaq 0x1f133(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x760(%rbp)
jmp 0x2000a
movq -0x760(%rbp), %rdi
leaq -0x7838(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x768(%rbp)
jmp 0x20026
movq -0x768(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x50c0
movq %rax, -0x770(%rbp)
jmp 0x20042
movq -0x770(%rbp), %rdi
leaq -0x7840(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x778(%rbp)
jmp 0x2005e
movq -0x778(%rbp), %rdi
leaq 0x1f0c8(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x780(%rbp)
jmp 0x2007a
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
callq 0x22d00
movq %rax, -0x788(%rbp)
jmp 0x20096
movq -0x788(%rbp), %rsi
movq -0x780(%rbp), %rdi
callq 0x50c0
movq %rax, -0x790(%rbp)
jmp 0x200b2
movq -0x790(%rbp), %rdi
leaq 0x1f06f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x798(%rbp)
jmp 0x200ce
movq -0x798(%rbp), %rdi
leaq -0x78fc(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x7a0(%rbp)
jmp 0x200ea
movq -0x320(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
callq 0x22d00
movq %rax, -0x7a8(%rbp)
jmp 0x20106
movq -0x7a8(%rbp), %rsi
movq -0x7a0(%rbp), %rdi
callq 0x50c0
movq %rax, -0x7b0(%rbp)
jmp 0x20122
movq -0x7b0(%rbp), %rdi
leaq -0x7920(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x7b8(%rbp)
jmp 0x2013e
movq -0x7b8(%rbp), %rdi
leaq 0x2146c(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x7c0(%rbp)
jmp 0x2015a
movq -0x7c0(%rbp), %rdi
movq 0x29e18(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x2016f
movq 0x29e4a(%rip), %rdi     # 0x49fc0
leaq 0x206ca(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x7c8(%rbp)
jmp 0x2018b
movq -0x7c8(%rbp), %rdi
leaq 0x205f1(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x7d0(%rbp)
jmp 0x201a7
movq -0x7d0(%rbp), %rdi
movl $0xd9, %esi
callq 0x5750
movq %rax, -0x7d8(%rbp)
jmp 0x201c1
movq -0x7d8(%rbp), %rdi
movq 0x29db1(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x201d6
leaq 0x2048d(%rip), %rdi     # 0x4066a
leaq 0x20663(%rip), %rsi     # 0x40847
movl $0xd9, %edx
leaq 0x20948(%rip), %rcx     # 0x40b38
callq 0x51e0
cmpq $0x0, -0xe0(%rbp)
je 0x2020f
movq -0xe0(%rbp), %rdi
callq 0x5370
jmp 0x2020d
jmp 0x2020f
movq -0x1b0(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
je 0x20241
movq -0x1b0(%rbp), %rcx
andq $0x3, %rcx
movl $0x4, %eax
subq %rcx, %rax
addq -0x1b0(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x320(%rbp), %rax
movq -0x1b0(%rbp), %rcx
shrq $0x2, %rcx
movq %rcx, 0x558(%rax)
movq -0x1b0(%rbp), %rcx
andq $0x3, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x20477
movq 0x29d49(%rip), %rdi     # 0x49fc0
leaq 0x1ee9b(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x7e0(%rbp)
jmp 0x2028c
movq -0x7e0(%rbp), %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, -0x7e8(%rbp)
jmp 0x202a3
movq -0x7e8(%rbp), %rdi
leaq 0x1ee7e(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x7f0(%rbp)
jmp 0x202bf
movq -0x7f0(%rbp), %rdi
leaq -0x7aed(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x7f8(%rbp)
jmp 0x202db
movq -0x7f8(%rbp), %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, -0x800(%rbp)
jmp 0x202f2
movq -0x800(%rbp), %rdi
leaq -0x7af0(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x808(%rbp)
jmp 0x2030e
movq -0x808(%rbp), %rdi
leaq 0x1ee18(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x810(%rbp)
jmp 0x2032a
movq -0x810(%rbp), %rdi
movq -0x1b0(%rbp), %rax
andl $0x3, %eax
movl %eax, %esi
callq 0x50c0
movq %rax, -0x818(%rbp)
jmp 0x2034b
movq -0x818(%rbp), %rdi
leaq 0x1edd6(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x820(%rbp)
jmp 0x20367
movq -0x820(%rbp), %rdi
leaq -0x7b95(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x828(%rbp)
jmp 0x20383
movq -0x828(%rbp), %rdi
movq -0x1b0(%rbp), %rax
andl $0x3, %eax
movl %eax, %esi
callq 0x50c0
movq %rax, -0x830(%rbp)
jmp 0x203a4
movq -0x830(%rbp), %rdi
leaq -0x7ba2(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x838(%rbp)
jmp 0x203c0
movq -0x838(%rbp), %rdi
leaq 0x211ea(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x840(%rbp)
jmp 0x203dc
movq -0x840(%rbp), %rdi
movq 0x29b96(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x203f1
movq 0x29bc8(%rip), %rdi     # 0x49fc0
leaq 0x20448(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x848(%rbp)
jmp 0x2040d
movq -0x848(%rbp), %rdi
leaq 0x2036f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x850(%rbp)
jmp 0x20429
movq -0x850(%rbp), %rdi
movl $0xe0, %esi
callq 0x5750
movq %rax, -0x858(%rbp)
jmp 0x20443
movq -0x858(%rbp), %rdi
movq 0x29b2f(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20458
leaq 0x2020b(%rip), %rdi     # 0x4066a
leaq 0x203e1(%rip), %rsi     # 0x40847
movl $0xe0, %edx
leaq 0x206c6(%rip), %rcx     # 0x40b38
callq 0x51e0
testb $0x1, -0x42(%rbp)
jne 0x2048c
movl $0x1, -0xec(%rbp)
jmp 0x21d01
movq -0x320(%rbp), %rax
testb $0x1, 0x56e(%rax)
je 0x20936
movq -0x320(%rbp), %rax
movq -0xf8(%rbp), %rcx
movq %rcx, 0x540(%rax)
testb $0x1, 0x56d(%rax)
je 0x20931
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq %rax, %rdi
leaq 0x1ef1e(%rip), %rsi     # 0x3f3f6
callq 0x5460
movq %rax, -0x860(%rbp)
jmp 0x204e6
movq -0x860(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x1b0(%rbp), %rdi
shrq $0x2, %rdi
callq 0x5030
movq %rax, -0x868(%rbp)
jmp 0x2050d
movq -0x320(%rbp), %rax
movq -0x868(%rbp), %rcx
movq %rcx, 0x548(%rax)
movq 0x548(%rax), %rdi
movq -0x1b0(%rbp), %rdx
shrq $0x2, %rdx
movq -0x218(%rbp), %rcx
movl $0x1, %esi
callq 0x5600
movq %rax, -0x870(%rbp)
jmp 0x2054e
movq -0x870(%rbp), %rax
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rax
movq -0x1b0(%rbp), %rcx
shrq $0x2, %rcx
cmpq %rcx, %rax
je 0x20660
movq 0x29a72(%rip), %rdi     # 0x49ff0
leaq 0x206a1(%rip), %rsi     # 0x40c26
callq 0x5360
movq %rax, -0x878(%rbp)
jmp 0x20593
movq -0x878(%rbp), %rdi
movq -0x220(%rbp), %rsi
callq 0x50c0
movq %rax, -0x880(%rbp)
jmp 0x205af
movq -0x880(%rbp), %rdi
leaq 0x20674(%rip), %rsi     # 0x40c31
callq 0x5360
movq %rax, -0x888(%rbp)
jmp 0x205cb
movq -0x888(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
shrq $0x2, %rsi
callq 0x50c0
movq %rax, -0x890(%rbp)
jmp 0x205eb
movq -0x890(%rbp), %rdi
leaq 0x20648(%rip), %rsi     # 0x40c41
callq 0x5360
movq %rax, -0x898(%rbp)
jmp 0x20607
movq -0x898(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x52f0
movq %rax, -0x8a0(%rbp)
jmp 0x20623
movq -0x8a0(%rbp), %rdi
movq 0x2994f(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20638
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x2991e(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
movq -0x218(%rbp), %rdi
callq 0x5370
jmp 0x2066e
movq $0x0, -0x228(%rbp)
movq -0x228(%rbp), %rax
movq -0x1b0(%rbp), %rcx
shrq $0x2, %rcx
cmpq %rcx, %rax
jae 0x2092f
movq -0x320(%rbp), %rcx
movq 0x548(%rcx), %rax
movq -0x228(%rbp), %rdx
movzbl (%rax,%rdx), %eax
movq 0x540(%rcx), %rcx
movq -0x228(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x20916
movq 0x298f2(%rip), %rdi     # 0x49fc0
leaq 0x1ea44(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x8a8(%rbp)
jmp 0x206e3
movq -0x8a8(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x548(%rax), %rax
movq -0x228(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, -0x8b0(%rbp)
jmp 0x20711
movq -0x8b0(%rbp), %rdi
leaq 0x1ea10(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x8b8(%rbp)
jmp 0x2072d
movq -0x8b8(%rbp), %rdi
leaq -0x7f5b(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x8c0(%rbp)
jmp 0x20749
movq -0x8c0(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x548(%rax), %rax
movq -0x228(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, -0x8c8(%rbp)
jmp 0x20777
movq -0x8c8(%rbp), %rdi
leaq -0x7f75(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x8d0(%rbp)
jmp 0x20793
movq -0x8d0(%rbp), %rdi
leaq 0x1e993(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0x8d8(%rbp)
jmp 0x207af
movq -0x8d8(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x540(%rax), %rax
movq -0x228(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, -0x8e0(%rbp)
jmp 0x207dd
movq -0x8e0(%rbp), %rdi
leaq 0x1e944(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0x8e8(%rbp)
jmp 0x207f9
movq -0x8e8(%rbp), %rdi
leaq -0x8027(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0x8f0(%rbp)
jmp 0x20815
movq -0x8f0(%rbp), %rdi
movq -0x320(%rbp), %rax
movq 0x540(%rax), %rax
movq -0x228(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, -0x8f8(%rbp)
jmp 0x20843
movq -0x8f8(%rbp), %rdi
leaq -0x8041(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0x900(%rbp)
jmp 0x2085f
movq -0x900(%rbp), %rdi
leaq 0x20d4b(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0x908(%rbp)
jmp 0x2087b
movq -0x908(%rbp), %rdi
movq 0x296f7(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20890
movq 0x29729(%rip), %rdi     # 0x49fc0
leaq 0x1ffa9(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0x910(%rbp)
jmp 0x208ac
movq -0x910(%rbp), %rdi
leaq 0x1fed0(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0x918(%rbp)
jmp 0x208c8
movq -0x918(%rbp), %rdi
movl $0xef, %esi
callq 0x5750
movq %rax, -0x920(%rbp)
jmp 0x208e2
movq -0x920(%rbp), %rdi
movq 0x29690(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x208f7
leaq 0x1fd6c(%rip), %rdi     # 0x4066a
leaq 0x1ff42(%rip), %rsi     # 0x40847
movl $0xef, %edx
leaq 0x20227(%rip), %rcx     # 0x40b38
callq 0x51e0
jmp 0x20918
movq -0x228(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x228(%rbp)
jmp 0x20679
jmp 0x20931
jmp 0x210df
movq -0x320(%rbp), %rax
movb $0x1, -0x229(%rbp)
testb $0x1, 0x56f(%rax)
jne 0x20aa1
movq -0x1b0(%rbp), %rdi
shrq $0x2, %rdi
callq 0x5030
movq %rax, -0x928(%rbp)
jmp 0x2096a
movq -0x320(%rbp), %rax
movq -0x928(%rbp), %rcx
movq %rcx, 0x540(%rax)
cmpq $0x0, 0x540(%rax)
jne 0x20a82
movl $0x8, %edi
callq 0x5180
movq %rax, %rdi
movq %rdi, -0x930(%rbp)
callq 0x2c280
movq -0x930(%rbp), %rdi
movq 0x29614(%rip), %rsi     # 0x49fc8
movq 0x295dd(%rip), %rdx     # 0x49f98
callq 0x5720
jmp 0x21dc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x21d24
movq -0x50(%rbp), %rdi
callq 0x5140
movq %rax, -0x238(%rbp)
movq 0x295f8(%rip), %rdi     # 0x49ff0
leaq 0x2025f(%rip), %rsi     # 0x40c5e
callq 0x5360
movq %rax, -0x938(%rbp)
jmp 0x20a0d
movq -0x938(%rbp), %rdi
movq 0x29565(%rip), %rsi     # 0x49f80
callq 0x53c0
movq %rax, -0x940(%rbp)
jmp 0x20a29
movq -0x940(%rbp), %rdi
leaq 0x20276(%rip), %rsi     # 0x40cad
callq 0x5360
movq %rax, -0x948(%rbp)
jmp 0x20a45
movq -0x948(%rbp), %rdi
movq 0x2952d(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20a5a
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x294fc(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
jmp 0x20a9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x56a0
jmp 0x20a97
jmp 0x21d24
jmp 0x20b70
leaq 0x2022c(%rip), %rdx     # 0x40cd4
leaq -0x258(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1a930
jmp 0x20abd
movq -0x320(%rbp), %rcx
movq -0x1b0(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0x960(%rbp)
movq %rcx, %rax
addq $0x540, %rax            # imm = 0x540
movq %rax, -0x958(%rbp)
movb $0x1, %al
testb $0x1, 0x570(%rcx)
movb %al, -0x949(%rbp)
jne 0x20b00
movb -0x47(%rbp), %al
movb %al, -0x949(%rbp)
movq -0x958(%rbp), %rdx
movq -0x960(%rbp), %rsi
movb -0x949(%rbp), %al
movzbl %al, %r8d
andl $0x1, %r8d
leaq 0x20d75(%rip), %rcx     # 0x41898
leaq -0x258(%rbp), %rdi
callq 0x1a160
movb %al, -0x961(%rbp)
jmp 0x20b37
movb -0x961(%rbp), %al
andb $0x1, %al
movb %al, -0x229(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5888
jmp 0x20b70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5888
jmp 0x21d24
testb $0x1, -0x229(%rbp)
je 0x210a9
leaq -0xb8(%rbp), %rdi
callq 0x5150
movq %rax, %rdi
leaq 0x1e863(%rip), %rsi     # 0x3f3f6
callq 0x5460
movq %rax, -0x970(%rbp)
jmp 0x20ba1
movq -0x970(%rbp), %rax
movq %rax, -0x260(%rbp)
cmpq $0x0, -0x260(%rbp)
jne 0x20ce4
movq 0x2942c(%rip), %rdi     # 0x49ff0
leaq 0x1fe05(%rip), %rsi     # 0x409d0
callq 0x5360
movq %rax, -0x978(%rbp)
jmp 0x20bd9
movq -0x978(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x52f0
movq %rax, -0x980(%rbp)
jmp 0x20bf5
movq -0x980(%rbp), %rdi
leaq 0x1fdf9(%rip), %rsi     # 0x409fc
callq 0x5360
movq %rax, -0x988(%rbp)
jmp 0x20c11
movq -0x988(%rbp), %rdi
movq 0x29361(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20c26
movq 0x293c3(%rip), %rdi     # 0x49ff0
leaq 0x1fdd6(%rip), %rsi     # 0x40a0a
callq 0x5360
movq %rax, -0x990(%rbp)
jmp 0x20c42
movq -0x990(%rbp), %rdi
movq 0x29330(%rip), %rsi     # 0x49f80
callq 0x53c0
movq %rax, -0x998(%rbp)
jmp 0x20c5e
movq -0x998(%rbp), %rdi
leaq 0x1fde5(%rip), %rsi     # 0x40a51
callq 0x5360
movq %rax, -0x9a0(%rbp)
jmp 0x20c7a
movq -0x9a0(%rbp), %rdi
movq 0x292f8(%rip), %rsi     # 0x49f80
callq 0x53c0
movq %rax, -0x9a8(%rbp)
jmp 0x20c96
movq -0x9a8(%rbp), %rdi
leaq 0x1fdf9(%rip), %rsi     # 0x40a9d
callq 0x5360
movq %rax, -0x9b0(%rbp)
jmp 0x20cb2
movq -0x9b0(%rbp), %rdi
movq 0x292c0(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20cc7
movq -0x320(%rbp), %rax
movb $0x0, 0x56c(%rax)
movl $0x1, -0xec(%rbp)
jmp 0x21d01
movq -0x320(%rbp), %rax
movq 0x540(%rax), %rdi
movq -0x1b0(%rbp), %rdx
shrq $0x2, %rdx
movq -0x260(%rbp), %rcx
movl $0x1, %esi
callq 0x5600
movq %rax, -0x9b8(%rbp)
jmp 0x20d17
movq -0x9b8(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rax
movq -0x1b0(%rbp), %rcx
shrq $0x2, %rcx
cmpq %rcx, %rax
je 0x20e29
movq 0x292a9(%rip), %rdi     # 0x49ff0
leaq 0x1fed8(%rip), %rsi     # 0x40c26
callq 0x5360
movq %rax, -0x9c0(%rbp)
jmp 0x20d5c
movq -0x9c0(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x50c0
movq %rax, -0x9c8(%rbp)
jmp 0x20d78
movq -0x9c8(%rbp), %rdi
leaq 0x1feab(%rip), %rsi     # 0x40c31
callq 0x5360
movq %rax, -0x9d0(%rbp)
jmp 0x20d94
movq -0x9d0(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
shrq $0x2, %rsi
callq 0x50c0
movq %rax, -0x9d8(%rbp)
jmp 0x20db4
movq -0x9d8(%rbp), %rdi
leaq 0x1fe7f(%rip), %rsi     # 0x40c41
callq 0x5360
movq %rax, -0x9e0(%rbp)
jmp 0x20dd0
movq -0x9e0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x52f0
movq %rax, -0x9e8(%rbp)
jmp 0x20dec
movq -0x9e8(%rbp), %rdi
movq 0x29186(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20e01
movl $0x4, %edi
callq 0x5180
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x29155(%rip), %rsi     # 0x49f70
xorl %eax, %eax
movl %eax, %edx
callq 0x5720
jmp 0x21dc2
movq -0x260(%rbp), %rcx
leaq -0x269(%rbp), %rdi
movl $0x1, %edx
movq %rdx, %rsi
callq 0x5600
movq %rax, -0x9f0(%rbp)
jmp 0x20e4d
movq -0x9f0(%rbp), %rax
movq %rax, -0x268(%rbp)
xorl %eax, %eax
cmpq -0x268(%rbp), %rax
je 0x21067
movq 0x2914f(%rip), %rdi     # 0x49fc0
leaq 0x1e2a1(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0x9f8(%rbp)
jmp 0x20e86
movq -0x9f8(%rbp), %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, -0xa00(%rbp)
jmp 0x20e9d
movq -0xa00(%rbp), %rdi
leaq 0x1e284(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xa08(%rbp)
jmp 0x20eb9
movq -0xa08(%rbp), %rdi
leaq -0x86e7(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xa10(%rbp)
jmp 0x20ed5
movq -0xa10(%rbp), %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, -0xa18(%rbp)
jmp 0x20eec
movq -0xa18(%rbp), %rdi
leaq -0x86ea(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xa20(%rbp)
jmp 0x20f08
movq -0xa20(%rbp), %rdi
leaq 0x1e21e(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0xa28(%rbp)
jmp 0x20f24
movq -0xa28(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x50c0
movq %rax, -0xa30(%rbp)
jmp 0x20f40
movq -0xa30(%rbp), %rdi
leaq 0x1e1e1(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xa38(%rbp)
jmp 0x20f5c
movq -0xa38(%rbp), %rdi
leaq -0x878a(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xa40(%rbp)
jmp 0x20f78
movq -0xa40(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x50c0
movq %rax, -0xa48(%rbp)
jmp 0x20f94
movq -0xa48(%rbp), %rdi
leaq -0x8792(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xa50(%rbp)
jmp 0x20fb0
movq -0xa50(%rbp), %rdi
leaq 0x205fa(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0xa58(%rbp)
jmp 0x20fcc
movq -0xa58(%rbp), %rdi
movq 0x28fa6(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x20fe1
movq 0x28fd8(%rip), %rdi     # 0x49fc0
leaq 0x1f858(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0xa60(%rbp)
jmp 0x20ffd
movq -0xa60(%rbp), %rdi
leaq 0x1f77f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0xa68(%rbp)
jmp 0x21019
movq -0xa68(%rbp), %rdi
movl $0x11c, %esi            # imm = 0x11C
callq 0x5750
movq %rax, -0xa70(%rbp)
jmp 0x21033
movq -0xa70(%rbp), %rdi
movq 0x28f3f(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x21048
leaq 0x1f61b(%rip), %rdi     # 0x4066a
leaq 0x1f7f1(%rip), %rsi     # 0x40847
movl $0x11c, %edx            # imm = 0x11C
leaq 0x1fad6(%rip), %rcx     # 0x40b38
callq 0x51e0
movq -0x260(%rbp), %rdi
callq 0x5370
jmp 0x21075
movq -0x320(%rbp), %rax
testb $0x1, 0x56f(%rax)
je 0x210a7
movq -0x320(%rbp), %rax
movq 0x540(%rax), %rdi
movq -0x1b0(%rbp), %rsi
shrq $0x2, %rsi
callq 0x3cdf0
jmp 0x210a5
jmp 0x210a7
jmp 0x210dd
movq -0x320(%rbp), %rax
testb $0x1, 0x56f(%rax)
je 0x210db
movq -0x320(%rbp), %rax
movq 0x540(%rax), %rdi
movq -0x1b0(%rbp), %rsi
shrq $0x2, %rsi
callq 0x3ce10
jmp 0x210d9
jmp 0x210db
jmp 0x210dd
jmp 0x210df
callq 0x11c90
movb %al, -0xa71(%rbp)
jmp 0x210ec
movb -0xa71(%rbp), %al
andb $0x1, %al
movb %al, -0x26a(%rbp)
movl $0x0, -0x270(%rbp)
cmpl $0x100, -0x270(%rbp)    # imm = 0x100
jge 0x2122c
movl $0x0, -0x274(%rbp)
testb $0x1, -0x26a(%rbp)
je 0x21195
movl -0x270(%rbp), %eax
sarl $0x0, %eax
andl $0x3, %eax
shll $0x18, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x2, %eax
andl $0x3, %eax
shll $0x10, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x4, %eax
andl $0x3, %eax
shll $0x8, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x6, %eax
andl $0x3, %eax
shll $0x0, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
jmp 0x21201
movl -0x270(%rbp), %eax
sarl $0x0, %eax
andl $0x3, %eax
shll $0x0, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x2, %eax
andl $0x3, %eax
shll $0x8, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x4, %eax
andl $0x3, %eax
shll $0x10, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
sarl $0x6, %eax
andl $0x3, %eax
shll $0x18, %eax
orl -0x274(%rbp), %eax
movl %eax, -0x274(%rbp)
movq -0x320(%rbp), %rax
movl -0x274(%rbp), %edx
movslq -0x270(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x270(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x270(%rbp)
jmp 0x21104
movq -0x320(%rbp), %rax
testb $0x1, 0x56d(%rax)
je 0x21cf7
leaq -0x2a0(%rbp), %rdi
callq 0x2c2c0
jmp 0x2124e
cmpq $0x0, -0x38(%rbp)
je 0x213e6
testb $0x1, -0x41(%rbp)
je 0x213bb
movq $0x0, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rax
movq %rax, -0xa88(%rbp)
movq -0x38(%rbp), %rdi
callq 0x1aaa0
movq %rax, -0xa80(%rbp)
jmp 0x2128e
movq -0xa88(%rbp), %rax
movq -0xa80(%rbp), %rcx
cmpq %rcx, %rax
jae 0x213b9
movq -0x38(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
callq 0x22060
movq %rax, -0xa90(%rbp)
jmp 0x212be
movq -0xa90(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5810
movq %rax, -0xa98(%rbp)
jmp 0x212d7
movq -0xa98(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0x21329
movq -0x38(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
callq 0x22060
movq %rax, -0xaa0(%rbp)
jmp 0x212ff
movq -0xaa0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x50b0
jmp 0x21316
jmp 0x21329
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x21ce9
movq -0x38(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
callq 0x22060
movq %rax, -0xaa8(%rbp)
jmp 0x21342
movq -0xaa8(%rbp), %rdi
callq 0x5150
movq %rax, %rsi
leaq -0x2c8(%rbp), %rdi
movl $0x1, %edx
callq 0x2c380
jmp 0x21364
leaq -0x2a0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x2c300
jmp 0x21379
leaq -0x2c8(%rbp), %rdi
callq 0x196d0
movq -0x2a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2a8(%rbp)
jmp 0x2126e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x196d0
jmp 0x21ce9
jmp 0x213d6
movq -0x38(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
callq 0x12800
jmp 0x213d4
jmp 0x213d6
leaq -0x2a0(%rbp), %rax
movq %rax, -0x280(%rbp)
jmp 0x21419
cmpq $0x0, -0x40(%rbp)
je 0x213ef
jmp 0x2140e
leaq 0x1f8e4(%rip), %rdi     # 0x40cda
leaq 0x1f44a(%rip), %rsi     # 0x40847
movl $0x14d, %edx            # imm = 0x14D
leaq 0x1f72f(%rip), %rcx     # 0x40b38
callq 0x51e0
movq -0x40(%rbp), %rax
movq %rax, -0x280(%rbp)
movq $0x0, -0x2d0(%rbp)
movl $0x0, -0x2d4(%rbp)
movl $0x0, -0x2d8(%rbp)
movq $0x0, -0x2e0(%rbp)
movq -0x2e0(%rbp), %rax
movq %rax, -0xab8(%rbp)
movq -0x280(%rbp), %rdi
callq 0x19490
movq %rax, -0xab0(%rbp)
jmp 0x21466
movq -0xab8(%rbp), %rax
movq -0xab0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x21cdb
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xac0(%rbp)
jmp 0x21499
movq -0xac0(%rbp), %rdi
callq 0x195b0
movq %rax, -0xac8(%rbp)
jmp 0x214ae
movq -0xac8(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq $0x0, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rax
cmpq -0x2e8(%rbp), %rax
jae 0x21570
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xad0(%rbp)
jmp 0x214f7
movq -0xad0(%rbp), %rdi
movq -0x2f0(%rbp), %rsi
callq 0x18f90
movq %rax, -0xad8(%rbp)
jmp 0x21513
movq -0xad8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4, %eax
jge 0x2154d
movl -0x2d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d8(%rbp)
movl -0x2d8(%rbp), %eax
cmpl -0x2d4(%rbp), %eax
jle 0x2154b
movl -0x2d8(%rbp), %eax
movl %eax, -0x2d4(%rbp)
jmp 0x21557
movl $0x0, -0x2d8(%rbp)
jmp 0x21559
movq -0x2f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2f0(%rbp)
jmp 0x214c7
cmpl $0x0, -0x2d4(%rbp)
jne 0x2157e
jmp 0x21cc4
movl $0x0, -0x2d4(%rbp)
movq -0x2e8(%rbp), %rax
addq $0xc, %rax
shrq $0x2, %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x5030
movq %rax, -0xae0(%rbp)
jmp 0x215c9
movq -0x320(%rbp), %rdi
movq -0xae0(%rbp), %rax
movq %rax, -0x300(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x308(%rbp)
movq -0x300(%rbp), %rsi
movq -0x2d0(%rbp), %rdx
movq -0x2e8(%rbp), %r8
xorl %eax, %eax
movl %eax, %ecx
callq 0x1c8a0
movl %eax, -0xae4(%rbp)
jmp 0x21612
movl -0xae4(%rbp), %ecx
movq -0x308(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x308(%rbp)
movq $0x0, -0x310(%rbp)
movq -0x310(%rbp), %rax
cmpq -0x2e8(%rbp), %rax
jae 0x21c90
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xaf0(%rbp)
jmp 0x21667
movq -0xaf0(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xaf8(%rbp)
jmp 0x21683
movq -0xaf8(%rbp), %rax
movsbl (%rax), %eax
movq -0x308(%rbp), %rcx
movq -0x310(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2193a
movq 0x28912(%rip), %rdi     # 0x49fc0
leaq 0x1da64(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0xb00(%rbp)
jmp 0x216c3
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xb08(%rbp)
jmp 0x216df
movq -0xb08(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xb10(%rbp)
jmp 0x216fb
movq -0xb00(%rbp), %rdi
movq -0xb10(%rbp), %rax
movsbl (%rax), %esi
callq 0x5750
movq %rax, -0xb18(%rbp)
jmp 0x2171a
movq -0xb18(%rbp), %rdi
leaq 0x1da07(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xb20(%rbp)
jmp 0x21736
movq -0xb20(%rbp), %rdi
leaq -0x8f64(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xb28(%rbp)
jmp 0x21752
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xb30(%rbp)
jmp 0x2176e
movq -0xb30(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xb38(%rbp)
jmp 0x2178a
movq -0xb28(%rbp), %rdi
movq -0xb38(%rbp), %rax
movsbl (%rax), %esi
callq 0x5750
movq %rax, -0xb40(%rbp)
jmp 0x217a9
movq -0xb40(%rbp), %rdi
leaq -0x8fa7(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xb48(%rbp)
jmp 0x217c5
movq -0xb48(%rbp), %rdi
leaq 0x1d961(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0xb50(%rbp)
jmp 0x217e1
movq -0xb50(%rbp), %rdi
movq -0x308(%rbp), %rax
movq -0x310(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5750
movq %rax, -0xb58(%rbp)
jmp 0x21808
movq -0xb58(%rbp), %rdi
leaq 0x1d919(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xb60(%rbp)
jmp 0x21824
movq -0xb60(%rbp), %rdi
leaq -0x9052(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xb68(%rbp)
jmp 0x21840
movq -0xb68(%rbp), %rdi
movq -0x308(%rbp), %rax
movq -0x310(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5750
movq %rax, -0xb70(%rbp)
jmp 0x21867
movq -0xb70(%rbp), %rdi
leaq -0x9065(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xb78(%rbp)
jmp 0x21883
movq -0xb78(%rbp), %rdi
leaq 0x1fd27(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0xb80(%rbp)
jmp 0x2189f
movq -0xb80(%rbp), %rdi
movq 0x286d3(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x218b4
movq 0x28705(%rip), %rdi     # 0x49fc0
leaq 0x1ef85(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0xb88(%rbp)
jmp 0x218d0
movq -0xb88(%rbp), %rdi
leaq 0x1eeac(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0xb90(%rbp)
jmp 0x218ec
movq -0xb90(%rbp), %rdi
movl $0x16a, %esi            # imm = 0x16A
callq 0x5750
movq %rax, -0xb98(%rbp)
jmp 0x21906
movq -0xb98(%rbp), %rdi
movq 0x2866c(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x2191b
leaq 0x1ed48(%rip), %rdi     # 0x4066a
leaq 0x1ef1e(%rip), %rsi     # 0x40847
movl $0x16a, %edx            # imm = 0x16A
leaq 0x1f203(%rip), %rcx     # 0x40b38
callq 0x51e0
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xba0(%rbp)
jmp 0x21956
movq -0xba0(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xba8(%rbp)
jmp 0x21972
movq -0x320(%rbp), %rdi
movq -0xba8(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0xbb0(%rbp)
movq -0x2d0(%rbp), %rsi
movq -0x310(%rbp), %rdx
callq 0x2c4e0
movl %eax, -0xbac(%rbp)
jmp 0x219a4
movl -0xbb0(%rbp), %eax
movl -0xbac(%rbp), %ecx
cmpl %ecx, %eax
je 0x21c77
movq 0x28601(%rip), %rdi     # 0x49fc0
leaq 0x1d753(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, -0xbb8(%rbp)
jmp 0x219d4
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xbc0(%rbp)
jmp 0x219f0
movq -0xbc0(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xbc8(%rbp)
jmp 0x21a0c
movq -0xbb8(%rbp), %rdi
movq -0xbc8(%rbp), %rax
movsbl (%rax), %esi
callq 0x5750
movq %rax, -0xbd0(%rbp)
jmp 0x21a2b
movq -0xbd0(%rbp), %rdi
leaq 0x1d6f6(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xbd8(%rbp)
jmp 0x21a47
movq -0xbd8(%rbp), %rdi
leaq -0x9275(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xbe0(%rbp)
jmp 0x21a63
movq -0x280(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x2c3e0
movq %rax, -0xbe8(%rbp)
jmp 0x21a7f
movq -0xbe8(%rbp), %rdi
movq -0x310(%rbp), %rsi
callq 0x18f90
movq %rax, -0xbf0(%rbp)
jmp 0x21a9b
movq -0xbe0(%rbp), %rdi
movq -0xbf0(%rbp), %rax
movsbl (%rax), %esi
callq 0x5750
movq %rax, -0xbf8(%rbp)
jmp 0x21aba
movq -0xbf8(%rbp), %rdi
leaq -0x92b8(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xc00(%rbp)
jmp 0x21ad6
movq -0xc00(%rbp), %rdi
leaq 0x1d650(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, -0xc08(%rbp)
jmp 0x21af2
movq -0x320(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
movq -0x310(%rbp), %rdx
callq 0x2c4e0
movl %eax, -0xc0c(%rbp)
jmp 0x21b14
movl -0xc0c(%rbp), %esi
movq -0xc08(%rbp), %rdi
callq 0x5750
movq %rax, -0xc18(%rbp)
jmp 0x21b2f
movq -0xc18(%rbp), %rdi
leaq 0x1d5f2(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, -0xc20(%rbp)
jmp 0x21b4b
movq -0xc20(%rbp), %rdi
leaq -0x9379(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, -0xc28(%rbp)
jmp 0x21b67
movq -0x320(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
movq -0x310(%rbp), %rdx
callq 0x2c4e0
movl %eax, -0xc2c(%rbp)
jmp 0x21b89
movl -0xc2c(%rbp), %esi
movq -0xc28(%rbp), %rdi
callq 0x5750
movq %rax, -0xc38(%rbp)
jmp 0x21ba4
movq -0xc38(%rbp), %rdi
leaq -0x93a2(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, -0xc40(%rbp)
jmp 0x21bc0
movq -0xc40(%rbp), %rdi
leaq 0x1f9ea(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, -0xc48(%rbp)
jmp 0x21bdc
movq -0xc48(%rbp), %rdi
movq 0x28396(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x21bf1
movq 0x283c8(%rip), %rdi     # 0x49fc0
leaq 0x1ec48(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, -0xc50(%rbp)
jmp 0x21c0d
movq -0xc50(%rbp), %rdi
leaq 0x1eb6f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, -0xc58(%rbp)
jmp 0x21c29
movq -0xc58(%rbp), %rdi
movl $0x16b, %esi            # imm = 0x16B
callq 0x5750
movq %rax, -0xc60(%rbp)
jmp 0x21c43
movq -0xc60(%rbp), %rdi
movq 0x2832f(%rip), %rsi     # 0x49f80
callq 0x53c0
jmp 0x21c58
leaq 0x1ea0b(%rip), %rdi     # 0x4066a
leaq 0x1ebe1(%rip), %rsi     # 0x40847
movl $0x16b, %edx            # imm = 0x16B
leaq 0x1eec6(%rip), %rcx     # 0x40b38
callq 0x51e0
jmp 0x21c79
movq -0x310(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x310(%rbp)
jmp 0x21637
movq -0x2d0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2d0(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0xc68(%rbp)
cmpq $0x0, %rax
je 0x21cc2
movq -0xc68(%rbp), %rdi
callq 0x5510
jmp 0x21cc4
movq -0x2e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2e0(%rbp)
jmp 0x21443
leaq -0x2a0(%rbp), %rdi
callq 0x2ca60
jmp 0x21cf7
leaq -0x2a0(%rbp), %rdi
callq 0x2ca60
jmp 0x21d24
movl $0x0, -0xec(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x5888
leaq -0x78(%rbp), %rdi
callq 0x5888
addq $0xc58, %rsp            # imm = 0xC58
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq -0xb8(%rbp), %rdi
callq 0x5888
leaq -0x78(%rbp), %rdi
callq 0x5888
movq -0x368(%rbp), %rdi
callq 0x2ca90
movq -0x360(%rbp), %rdi
callq 0x2cac0
movq -0x358(%rbp), %rdi
callq 0x2cac0
movq -0x350(%rbp), %rdi
callq 0x2caf0
movq -0x348(%rbp), %rdi
callq 0x2caf0
movq -0x340(%rbp), %rdi
callq 0x2caf0
movq -0x338(%rbp), %rdi
callq 0x2caf0
movq -0x330(%rbp), %rdi
callq 0x2caf0
movq -0x318(%rbp), %rdi
callq 0x2cac0
movq -0x328(%rbp), %rdi
callq 0x2cb20
movq -0x50(%rbp), %rdi
callq 0x5760
movq %rax, %rdi
callq 0x18920
nopw %cs:(%rax,%rax)
nopl (%rax)