// File: BenLangmead[P]bowtie/./reference.h
// Function: BitPairReference::getStretch(unsigned int*, unsigned long, unsigned long, unsigned long) const
int getStretch(uint32_t *destU32,
	               size_t tidx,
	               size_t toff,
	               size_t count) const
	{
		ASSERT_ONLY(size_t origCount = count);
		ASSERT_ONLY(size_t origToff = toff);
		if(count == 0) return 0;
		uint8_t *dest = (uint8_t*)destU32;
#ifndef NDEBUG
		uint32_t *destU32_2 = new uint32_t[(origCount >> 2) + 2];
		int off2 = getStretchNaive(destU32_2, tidx, origToff, origCount);
		uint8_t *dest_2 = ((uint8_t*)destU32_2) + off2;
#endif
		destU32[0] = 0x04040404; // Add Ns, which we might end up using later
		uint64_t reci = refRecOffs_[tidx];   // first record for target reference sequence
		uint64_t recf = refRecOffs_[tidx+1]; // last record (exclusive) for target seq
		assert_gt(recf, reci);
		uint64_t cur = 4; // keep a cushion of 4 bases at the beginning
		uint64_t bufOff = refOffs_[tidx];
		uint64_t off = 0;
		int64_t offset = 4;
		bool firstStretch = true;
		ASSERT_ONLY(bool binarySearched = false);
		uint64_t left  = reci;
		uint64_t right = recf;
		uint64_t mid   = 0;
		// For all records pertaining to the target reference sequence...
		for(uint64_t i = reci; i < recf; i++) {
#ifndef NDEBUG
			uint64_t origBufOff = bufOff;
#endif
			assert_geq(toff, off);
			if (firstStretch && recf > reci + 16){
				// binary search finds smallest i s.t. toff >= cumRefOff_[i]
				while (left < right-1) {
					mid = left + ((right - left) >> 1);
					if (cumRefOff_[mid] <= toff)
						left = mid;
					else
						right = mid;
				}
				off = cumRefOff_[left];
				bufOff = cumUnambig_[left];
#ifndef NDEBUG
				origBufOff = bufOff;
#endif
				i = left;
				assert(cumRefOff_[i+1] == 0 || cumRefOff_[i+1] > toff);
				ASSERT_ONLY(binarySearched = true);
			}
			off += recs_[i].off; // skip Ns at beginning of stretch
			assert_gt(count, 0);
			if(toff < off) {
				size_t cpycnt = min((size_t)(off - toff), count);
				memset(&dest[cur], 4, cpycnt);
				count -= cpycnt;
				toff += cpycnt;
				cur += cpycnt;
				if(count == 0) break;
			}
			assert_geq(toff, off);
			if(toff < off + recs_[i].len) {
				bufOff += toff - off; // move bufOff pointer forward
			} else {
				bufOff += recs_[i].len;
			}
			off += recs_[i].len;
			assert(off == cumRefOff_[i+1] || cumRefOff_[i+1] == 0);
			assert(!binarySearched || toff < off);
			if(toff < off) {
				if(firstStretch) {
					if(toff + 8 < off && count > 8) {
						// We already added some Ns, so we have to do
						// a fixup at the beginning of the buffer so
						// that we can start clobbering at cur >> 2
						if(cur & 3) {
							offset -= (cur & 3);
						}
						uint64_t curU32 = cur >> 2;
						// Do the initial few bases
						if(bufOff & 3) {
							const uint64_t bufElt = (bufOff) >> 2;
							const int64_t low2 = bufOff & 3;
							// Lots of cache misses on the following line
							destU32[curU32] = byteToU32_[buf_[bufElt]];
							for(int j = 0; j < low2; j++) {
								((char *)(&destU32[curU32]))[j] = 4;
							}
							curU32++;
							offset += low2;
							const int64_t chars = 4 - low2;
							count -= chars;
							bufOff += chars;
							toff += chars;
						}
						assert_eq(0, bufOff & 3);
						uint64_t bufOffU32 = bufOff >> 2;
						uint64_t countLim = count >> 2;
						uint64_t offLim = ((off - (toff + 4)) >> 2);
						uint64_t lim = min(countLim, offLim);
						// Do the fast thing for as far as possible
						for(uint64_t j = 0; j < lim; j++) {
							// Lots of cache misses on the following line
							destU32[curU32] = byteToU32_[buf_[bufOffU32++]];
#ifndef NDEBUG
							if(dest_2 != NULL) {
								assert_eq(dest[(curU32 << 2) + 0], dest_2[(curU32 << 2) - offset + 0]);
								assert_eq(dest[(curU32 << 2) + 1], dest_2[(curU32 << 2) - offset + 1]);
								assert_eq(dest[(curU32 << 2) + 2], dest_2[(curU32 << 2) - offset + 2]);
								assert_eq(dest[(curU32 << 2) + 3], dest_2[(curU32 << 2) - offset + 3]);
							}
#endif
							curU32++;
						}
						toff += (lim << 2);
						assert_leq(toff, off);
						assert_leq((lim << 2), count);
						count -= (lim << 2);
						bufOff = bufOffU32 << 2;
						cur = curU32 << 2;
					}
					// Do the slow thing for the rest
					for(; toff < off && count > 0; toff++) {
						assert_lt(bufOff, bufSz_);
						const uint64_t bufElt = (bufOff) >> 2;
						const uint64_t shift = (bufOff & 3) << 1;
						dest[cur++] = (buf_[bufElt] >> shift) & 3;
						bufOff++;
						count--;
					}
					firstStretch = false;
				} else {
					// Do the slow thing
					for(; toff < off && count > 0; toff++) {
						assert_lt(bufOff, bufSz_);
						const uint64_t bufElt = (bufOff) >> 2;
						const uint64_t shift = (bufOff & 3) << 1;
						dest[cur++] = (buf_[bufElt] >> shift) & 3;
						bufOff++;
						count--;
					}
				}
			}
			if(count == 0) break;
			assert_eq(recs_[i].len, bufOff - origBufOff);
			assert_geq(toff, off);
		} // end for loop over records
		// In any chars are left after scanning all the records,
		// they must be ambiguous
		while(count > 0) {
			count--;
			dest[cur++] = 4;
		}
		assert_eq(0, count);
#ifndef NDEBUG
		delete[] destU32_2;
#endif
		return (int)offset;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x1c8ed
movl $0x0, -0x4(%rbp)
jmp 0x1e4b7
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
shrq $0x2, %rax
addq $0x2, %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5030
movq -0x148(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x2b3f0
movq -0x148(%rbp), %rdi
movl %eax, -0x54(%rbp)
movq -0x50(%rbp), %rax
movslq -0x54(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movl $0x4040404, (%rax)      # imm = 0x4040404
addq $0x4c0, %rdi            # imm = 0x4C0
movq -0x20(%rbp), %rsi
callq 0x2bbc0
movq -0x148(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x68(%rbp)
addq $0x4c0, %rdi            # imm = 0x4C0
movq -0x20(%rbp), %rsi
addq $0x1, %rsi
callq 0x2bbc0
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0x68(%rbp), %rax
ja 0x1ca61
movq 0x2d60d(%rip), %rdi     # 0x49fc0
leaq 0x2273e(%rip), %rsi     # 0x3f0f8
callq 0x5360
movq %rax, %rdi
movq -0x70(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x22739(%rip), %rsi     # 0x3f10e
callq 0x5360
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x24bc8(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2d581(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2d5b5(%rip), %rdi     # 0x49fc0
leaq 0x23e35(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x23d69(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x1f0, %esi            # imm = 0x1F0
callq 0x5750
movq %rax, %rdi
movq 0x2d543(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x23c21(%rip), %rdi     # 0x4066a
leaq 0x23df7(%rip), %rsi     # 0x40847
movl $0x1f0, %edx            # imm = 0x1F0
leaq 0x23df9(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x148(%rbp), %rdi
movq $0x4, -0x78(%rbp)
addq $0x460, %rdi            # imm = 0x460
movq -0x20(%rbp), %rsi
callq 0x2bbc0
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x4, -0x90(%rbp)
movb $0x1, -0x91(%rbp)
movb $0x0, -0x92(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq $0x0, -0xb0(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x1e333
movq -0x80(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x1cbbc
movq 0x2d4b5(%rip), %rdi     # 0x49fc0
leaq 0x226f3(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x226ef(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x88(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x24a6d(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2d426(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2d45a(%rip), %rdi     # 0x49fc0
leaq 0x23cda(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x23c0e(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x1ff, %esi            # imm = 0x1FF
callq 0x5750
movq %rax, %rdi
movq 0x2d3e8(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x23ac6(%rip), %rdi     # 0x4066a
leaq 0x23c9c(%rip), %rsi     # 0x40847
movl $0x1ff, %edx            # imm = 0x1FF
leaq 0x23c9e(%rip), %rcx     # 0x40855
callq 0x51e0
testb $0x1, -0x91(%rbp)
je 0x1cd4b
movq -0x70(%rbp), %rax
movq -0x68(%rbp), %rcx
addq $0x10, %rcx
cmpq %rcx, %rax
jbe 0x1cd4b
jmp 0x1cbe0
movq -0xa0(%rbp), %rax
movq -0xa8(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x1cc5c
movq -0x148(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq -0xa8(%rbp), %rcx
subq -0xa0(%rbp), %rcx
shrq %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xb0(%rbp), %rsi
callq 0x2bbc0
movq (%rax), %rax
cmpq -0x28(%rbp), %rax
ja 0x1cc4c
movq -0xb0(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0x1cc5a
movq -0xb0(%rbp), %rax
movq %rax, -0xa8(%rbp)
jmp 0x1cbe0
movq -0x148(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xa0(%rbp), %rsi
callq 0x2bbc0
movq -0x148(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x88(%rbp)
addq $0x480, %rdi            # imm = 0x480
movq -0xa0(%rbp), %rsi
callq 0x2bbc0
movq -0x148(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xb8(%rbp)
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xb8(%rbp), %rsi
addq $0x1, %rsi
callq 0x2bbc0
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, (%rcx)
movb %al, -0x149(%rbp)
je 0x1cd17
movq -0x148(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xb8(%rbp), %rsi
addq $0x1, %rsi
callq 0x2bbc0
movq (%rax), %rax
cmpq -0x28(%rbp), %rax
seta %al
movb %al, -0x149(%rbp)
movb -0x149(%rbp), %al
testb $0x1, %al
jne 0x1cd23
jmp 0x1cd25
jmp 0x1cd44
leaq 0x23b74(%rip), %rdi     # 0x408a0
leaq 0x23b14(%rip), %rsi     # 0x40847
movl $0x20f, %edx            # imm = 0x20F
leaq 0x23b16(%rip), %rcx     # 0x40855
callq 0x51e0
movb $0x1, -0x92(%rbp)
movq -0x148(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq (%rax), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x30(%rbp)
ja 0x1ce34
movq 0x2d238(%rip), %rdi     # 0x49fc0
leaq 0x22369(%rip), %rsi     # 0x3f0f8
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x22364(%rip), %rsi     # 0x3f10e
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x247f5(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2d1ae(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2d1e2(%rip), %rdi     # 0x49fc0
leaq 0x23a62(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x23996(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x213, %esi            # imm = 0x213
callq 0x5750
movq %rax, %rdi
movq 0x2d170(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2384e(%rip), %rdi     # 0x4066a
leaq 0x23a24(%rip), %rsi     # 0x40847
movl $0x213, %edx            # imm = 0x213
leaq 0x23a26(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x1cec8
movq -0x88(%rbp), %rax
subq -0x28(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1b390
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
movq -0x48(%rbp), %rdi
addq -0x78(%rbp), %rdi
movq -0xc8(%rbp), %rdx
movl $0x4, %esi
callq 0x5190
movq -0xc8(%rbp), %rcx
movq -0x30(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0xc8(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0xc8(%rbp), %rax
addq -0x78(%rbp), %rax
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x1cec6
jmp 0x1e333
jmp 0x1cec8
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x1cf91
movq 0x2d0e0(%rip), %rdi     # 0x49fc0
leaq 0x2231e(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2231a(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x88(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x24698(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2d051(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2d085(%rip), %rdi     # 0x49fc0
leaq 0x23905(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x23839(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x21c, %esi            # imm = 0x21C
callq 0x5750
movq %rax, %rdi
movq 0x2d013(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x236f1(%rip), %rdi     # 0x4066a
leaq 0x238c7(%rip), %rsi     # 0x40847
movl $0x21c, %edx            # imm = 0x21C
leaq 0x238c9(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x148(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x160(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq -0x160(%rbp), %rcx
movq %rax, %rdx
movq -0x158(%rbp), %rax
addq 0x8(%rdx), %rcx
cmpq %rcx, %rax
jae 0x1cff3
movq -0x28(%rbp), %rax
subq -0x88(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x1d019
movq -0x148(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq 0x8(%rax), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x148(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq -0x148(%rbp), %rdi
movq 0x8(%rax), %rax
addq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x170(%rbp)
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xb8(%rbp), %rsi
addq $0x1, %rsi
callq 0x2bbc0
movq -0x170(%rbp), %rcx
movq %rax, %rdx
movb $0x1, %al
cmpq (%rdx), %rcx
movb %al, -0x161(%rbp)
je 0x1d0b3
movq -0x148(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movq -0xb8(%rbp), %rsi
addq $0x1, %rsi
callq 0x2bbc0
cmpq $0x0, (%rax)
sete %al
movb %al, -0x161(%rbp)
movb -0x161(%rbp), %al
testb $0x1, %al
jne 0x1d0bf
jmp 0x1d0c1
jmp 0x1d0e0
leaq 0x23807(%rip), %rdi     # 0x408cf
leaq 0x23778(%rip), %rsi     # 0x40847
movl $0x223, %edx            # imm = 0x223
leaq 0x2377a(%rip), %rcx     # 0x40855
callq 0x51e0
movb $0x1, %al
testb $0x1, -0x92(%rbp)
movb %al, -0x171(%rbp)
je 0x1d105
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
setb %al
movb %al, -0x171(%rbp)
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x1d111
jmp 0x1d113
jmp 0x1d132
leaq 0x237e4(%rip), %rdi     # 0x408fe
leaq 0x23726(%rip), %rsi     # 0x40847
movl $0x224, %edx            # imm = 0x224
leaq 0x23728(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x1e094
testb $0x1, -0x91(%rbp)
je 0x1defe
movq -0x28(%rbp), %rax
addq $0x8, %rax
cmpq -0x88(%rbp), %rax
jae 0x1dd60
cmpq $0x8, -0x30(%rbp)
jbe 0x1dd60
movq -0x78(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
je 0x1d197
movq -0x78(%rbp), %rcx
andq $0x3, %rcx
movq -0x90(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x78(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0xd8(%rbp)
movq -0x80(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
je 0x1d2b2
movq -0x148(%rbp), %rax
movq -0x80(%rbp), %rcx
shrq $0x2, %rcx
movq %rcx, -0xe0(%rbp)
movq -0x80(%rbp), %rcx
andq $0x3, %rcx
movq %rcx, -0xe8(%rbp)
movq 0x540(%rax), %rcx
movq -0xe0(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movl (%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movq -0xd8(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl $0x0, -0xec(%rbp)
movslq -0xec(%rbp), %rax
cmpq -0xe8(%rbp), %rax
jge 0x1d248
movq -0x18(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movslq -0xec(%rbp), %rcx
movb $0x4, (%rax,%rcx)
movl -0xec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xec(%rbp)
jmp 0x1d20a
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
movq -0xe8(%rbp), %rax
addq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x4, %eax
subq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rcx
movq -0x30(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0xf8(%rbp), %rax
addq -0x80(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0xf8(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x80(%rbp), %rcx
andq $0x3, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x1d3f0
movq 0x2ccf4(%rip), %rdi     # 0x49fc0
leaq 0x21e46(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x21e43(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4b1b(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0x4b04(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x21e11(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x80(%rbp), %rsi
andq $0x3, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x21ded(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4b71(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x80(%rbp), %rsi
andq $0x3, %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0x4b60(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x24239(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2cbf2(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2cc26(%rip), %rdi     # 0x49fc0
leaq 0x234a6(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x233da(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x23f, %esi            # imm = 0x23F
callq 0x5750
movq %rax, %rdi
movq 0x2cbb4(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x23292(%rip), %rdi     # 0x4066a
leaq 0x23468(%rip), %rsi     # 0x40847
movl $0x23f, %edx            # imm = 0x23F
leaq 0x2346a(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x80(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0x100(%rbp)
movq -0x30(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0x108(%rbp)
movq -0x88(%rbp), %rax
movq -0x28(%rbp), %rcx
addq $0x4, %rcx
subq %rcx, %rax
shrq $0x2, %rax
movq %rax, -0x110(%rbp)
leaq -0x108(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x1b390
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movq $0x0, -0x120(%rbp)
movq -0x120(%rbp), %rax
cmpq -0x118(%rbp), %rax
jae 0x1db7f
movq -0x148(%rbp), %rax
movq 0x540(%rax), %rcx
movq -0x100(%rbp), %rdx
movq %rdx, %rsi
addq $0x1, %rsi
movq %rsi, -0x100(%rbp)
movzbl (%rcx,%rdx), %ecx
movl (%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movq -0xd8(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
cmpq $0x0, -0x60(%rbp)
je 0x1db56
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl (%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0xd8(%rbp), %rdx
shlq $0x2, %rdx
subq -0x90(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1d650
movq 0x2cada(%rip), %rdi     # 0x49fc0
leaq 0x21c2c(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x21c18(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4d46(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x4d40(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x21bd5(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x21b9f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4dbf(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl (%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x4dc0(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x23fd9(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c992(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c9c6(%rip), %rdi     # 0x49fc0
leaq 0x23246(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x2317a(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x24a, %esi            # imm = 0x24A
callq 0x5750
movq %rax, %rdi
movq 0x2c954(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x23032(%rip), %rdi     # 0x4066a
leaq 0x23208(%rip), %rsi     # 0x40847
movl $0x24a, %edx            # imm = 0x24A
leaq 0x2320a(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x1(%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0xd8(%rbp), %rdx
shlq $0x2, %rdx
subq -0x90(%rbp), %rdx
movzbl 0x1(%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1d7fc
movq 0x2c932(%rip), %rdi     # 0x49fc0
leaq 0x21a84(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x1(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x21a6f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4eef(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x1(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x4eea(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x21a2b(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x219f4(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x4f6a(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x1(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x4f6c(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x23e2d(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c7e6(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c81a(%rip), %rdi     # 0x49fc0
leaq 0x2309a(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22fce(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x24b, %esi            # imm = 0x24B
callq 0x5750
movq %rax, %rdi
movq 0x2c7a8(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22e86(%rip), %rdi     # 0x4066a
leaq 0x2305c(%rip), %rsi     # 0x40847
movl $0x24b, %edx            # imm = 0x24B
leaq 0x2305e(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x2(%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0xd8(%rbp), %rdx
shlq $0x2, %rdx
subq -0x90(%rbp), %rdx
movzbl 0x2(%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1d9a8
movq 0x2c786(%rip), %rdi     # 0x49fc0
leaq 0x218d8(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x2(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x218c3(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x509b(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x2(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x5096(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x2187f(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x21848(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x5116(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x5118(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x23c81(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c63a(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c66e(%rip), %rdi     # 0x49fc0
leaq 0x22eee(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22e22(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x24c, %esi            # imm = 0x24C
callq 0x5750
movq %rax, %rdi
movq 0x2c5fc(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22cda(%rip), %rdi     # 0x4066a
leaq 0x22eb0(%rip), %rsi     # 0x40847
movl $0x24c, %edx            # imm = 0x24C
leaq 0x22eb2(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x3(%rax,%rcx), %eax
movq -0x60(%rbp), %rcx
movq -0xd8(%rbp), %rdx
shlq $0x2, %rdx
subq -0x90(%rbp), %rdx
movzbl 0x3(%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x1db54
movq 0x2c5da(%rip), %rdi     # 0x49fc0
leaq 0x2172c(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x3(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x21717(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x5247(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x48(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
movzbl 0x3(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x5242(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x216d3(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq 0x2169c(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x52c2(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq -0xd8(%rbp), %rcx
shlq $0x2, %rcx
subq -0x90(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %esi
callq 0x5620
movq %rax, %rdi
leaq -0x52c4(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x23ad5(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c48e(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c4c2(%rip), %rdi     # 0x49fc0
leaq 0x22d42(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22c76(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x24d, %esi            # imm = 0x24D
callq 0x5750
movq %rax, %rdi
movq 0x2c450(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22b2e(%rip), %rdi     # 0x4066a
leaq 0x22d04(%rip), %rsi     # 0x40847
movl $0x24d, %edx            # imm = 0x24D
leaq 0x22d06(%rip), %rcx     # 0x40855
callq 0x51e0
jmp 0x1db56
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
movq -0x120(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x120(%rbp)
jmp 0x1d453
movq -0x118(%rbp), %rax
shlq $0x2, %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jbe 0x1dc5b
movq 0x2c416(%rip), %rdi     # 0x49fc0
leaq 0x215f2(%rip), %rsi     # 0x3f1a3
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x215ee(%rip), %rsi     # 0x3f1ba
callq 0x5360
movq %rax, %rdi
movq -0x88(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x239ce(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c387(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c3bb(%rip), %rdi     # 0x49fc0
leaq 0x22c3b(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22b6f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x253, %esi            # imm = 0x253
callq 0x5750
movq %rax, %rdi
movq 0x2c349(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22a27(%rip), %rdi     # 0x4066a
leaq 0x22bfd(%rip), %rsi     # 0x40847
movl $0x253, %edx            # imm = 0x253
leaq 0x22bff(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x118(%rbp), %rax
shlq $0x2, %rax
cmpq -0x30(%rbp), %rax
jbe 0x1dd2c
movq 0x2c349(%rip), %rdi     # 0x49fc0
leaq 0x21525(%rip), %rsi     # 0x3f1a3
callq 0x5360
movq %rax, %rdi
movq -0x118(%rbp), %rsi
shlq $0x2, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2151a(%rip), %rsi     # 0x3f1ba
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x238fd(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c2b6(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c2ea(%rip), %rdi     # 0x49fc0
leaq 0x22b6a(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22a9e(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x254, %esi            # imm = 0x254
callq 0x5750
movq %rax, %rdi
movq 0x2c278(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22956(%rip), %rdi     # 0x4066a
leaq 0x22b2c(%rip), %rsi     # 0x40847
movl $0x254, %edx            # imm = 0x254
leaq 0x22b2e(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x118(%rbp), %rcx
shlq $0x2, %rcx
movq -0x30(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x100(%rbp), %rax
shlq $0x2, %rax
movq %rax, -0x80(%rbp)
movq -0xd8(%rbp), %rax
shlq $0x2, %rax
movq %rax, -0x78(%rbp)
jmp 0x1dd62
movq -0x28(%rbp), %rcx
xorl %eax, %eax
cmpq -0x88(%rbp), %rcx
movb %al, -0x172(%rbp)
jae 0x1dd85
cmpq $0x0, -0x30(%rbp)
seta %al
movb %al, -0x172(%rbp)
movb -0x172(%rbp), %al
testb $0x1, %al
jne 0x1dd94
jmp 0x1def2
movq -0x148(%rbp), %rcx
movq -0x80(%rbp), %rax
cmpq 0x550(%rcx), %rax
jb 0x1de6b
movq 0x2c20d(%rip), %rdi     # 0x49fc0
leaq 0x2148d(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x80(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x21488(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq -0x148(%rbp), %rax
movq 0x550(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x237be(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2c177(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c1ab(%rip), %rdi     # 0x49fc0
leaq 0x22a2b(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x2295f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x25b, %esi            # imm = 0x25B
callq 0x5750
movq %rax, %rdi
movq 0x2c139(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22817(%rip), %rdi     # 0x4066a
leaq 0x229ed(%rip), %rsi     # 0x40847
movl $0x25b, %edx            # imm = 0x25B
leaq 0x229ef(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x148(%rbp), %rax
movq -0x80(%rbp), %rcx
shrq $0x2, %rcx
movq %rcx, -0x128(%rbp)
movq -0x80(%rbp), %rcx
andq $0x3, %rcx
shlq %rcx
movq %rcx, -0x130(%rbp)
movq 0x540(%rax), %rax
movq -0x128(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x130(%rbp), %rcx
sarl %cl, %eax
andl $0x3, %eax
movb %al, %dl
movq -0x48(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x78(%rbp)
movb %dl, (%rax,%rcx)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x1dd62
movb $0x0, -0x91(%rbp)
jmp 0x1e092
jmp 0x1df00
movq -0x28(%rbp), %rcx
xorl %eax, %eax
cmpq -0x88(%rbp), %rcx
movb %al, -0x173(%rbp)
jae 0x1df23
cmpq $0x0, -0x30(%rbp)
seta %al
movb %al, -0x173(%rbp)
movb -0x173(%rbp), %al
testb $0x1, %al
jne 0x1df32
jmp 0x1e090
movq -0x148(%rbp), %rcx
movq -0x80(%rbp), %rax
cmpq 0x550(%rcx), %rax
jb 0x1e009
movq 0x2c06f(%rip), %rdi     # 0x49fc0
leaq 0x212ef(%rip), %rsi     # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x80(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x212ea(%rip), %rsi     # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq -0x148(%rbp), %rax
movq 0x550(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x23620(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2bfd9(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2c00d(%rip), %rdi     # 0x49fc0
leaq 0x2288d(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x227c1(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x266, %esi            # imm = 0x266
callq 0x5750
movq %rax, %rdi
movq 0x2bf9b(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22679(%rip), %rdi     # 0x4066a
leaq 0x2284f(%rip), %rsi     # 0x40847
movl $0x266, %edx            # imm = 0x266
leaq 0x22851(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x148(%rbp), %rax
movq -0x80(%rbp), %rcx
shrq $0x2, %rcx
movq %rcx, -0x138(%rbp)
movq -0x80(%rbp), %rcx
andq $0x3, %rcx
shlq %rcx
movq %rcx, -0x140(%rbp)
movq 0x540(%rax), %rax
movq -0x138(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x140(%rbp), %rcx
sarl %cl, %eax
andl $0x3, %eax
movb %al, %dl
movq -0x48(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x78(%rbp)
movb %dl, (%rax,%rcx)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x1df00
jmp 0x1e092
jmp 0x1e094
cmpq $0x0, -0x30(%rbp)
jne 0x1e0a0
jmp 0x1e333
movq -0x148(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq 0x8(%rax), %rax
movq -0x80(%rbp), %rcx
subq -0xc0(%rbp), %rcx
cmpq %rcx, %rax
je 0x1e251
movq 0x2bee7(%rip), %rdi     # 0x49fc0
leaq 0x21039(%rip), %rsi     # 0x3f119
callq 0x5360
movq -0x148(%rbp), %rdi
movq %rax, -0x188(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq -0x188(%rbp), %rdi
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2100f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x594f(%rip), %rsi     # 0x187e0
callq 0x5120
movq -0x148(%rbp), %rdi
movq %rax, -0x180(%rbp)
addq $0x400, %rdi            # imm = 0x400
movq -0xb8(%rbp), %rsi
callq 0x22d20
movq -0x180(%rbp), %rdi
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0x595f(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x20fb6(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x80(%rbp), %rsi
subq -0xc0(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x20f8f(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x59cf(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x80(%rbp), %rsi
subq -0xc0(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0x59c1(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x233d8(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2bd91(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2bdc5(%rip), %rdi     # 0x49fc0
leaq 0x22645(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x22579(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x270, %esi            # imm = 0x270
callq 0x5750
movq %rax, %rdi
movq 0x2bd53(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22431(%rip), %rdi     # 0x4066a
leaq 0x22607(%rip), %rsi     # 0x40847
movl $0x270, %edx            # imm = 0x270
leaq 0x22609(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x28(%rbp), %rax
cmpq -0x88(%rbp), %rax
jae 0x1e31a
movq 0x2bd57(%rip), %rdi     # 0x49fc0
leaq 0x20f95(%rip), %rsi     # 0x3f205
callq 0x5360
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x20f91(%rip), %rsi     # 0x3f21c
callq 0x5360
movq %rax, %rdi
movq -0x88(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2330f(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2bcc8(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2bcfc(%rip), %rdi     # 0x49fc0
leaq 0x2257c(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x224b0(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x271, %esi            # imm = 0x271
callq 0x5750
movq %rax, %rdi
movq 0x2bc8a(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x22368(%rip), %rdi     # 0x4066a
leaq 0x2253e(%rip), %rsi     # 0x40847
movl $0x271, %edx            # imm = 0x271
leaq 0x22540(%rip), %rcx     # 0x40855
callq 0x51e0
jmp 0x1e31c
movq -0xb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb8(%rbp)
jmp 0x1cad7
jmp 0x1e335
cmpq $0x0, -0x30(%rbp)
jbe 0x1e361
movq -0x30(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x48(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x78(%rbp)
movb $0x4, (%rax,%rcx)
jmp 0x1e335
xorl %eax, %eax
cmpq -0x30(%rbp), %rax
je 0x1e490
movq 0x2bc4c(%rip), %rdi     # 0x49fc0
leaq 0x20d9e(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x20d9b(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x5bc3(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0x5bac(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x20d69(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x20d49(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x5c15(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0x5c00(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x23199(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2bb52(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2bb86(%rip), %rdi     # 0x49fc0
leaq 0x22406(%rip), %rsi     # 0x40847
callq 0x5360
movq %rax, %rdi
leaq 0x2233a(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x279, %esi            # imm = 0x279
callq 0x5750
movq %rax, %rdi
movq 0x2bb14(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x221f2(%rip), %rdi     # 0x4066a
leaq 0x223c8(%rip), %rsi     # 0x40847
movl $0x279, %edx            # imm = 0x279
leaq 0x223ca(%rip), %rcx     # 0x40855
callq 0x51e0
movq -0x50(%rbp), %rax
movq %rax, -0x190(%rbp)
cmpq $0x0, %rax
je 0x1e4ad
movq -0x190(%rbp), %rdi
callq 0x5510
movq -0x90(%rbp), %rax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)