// File: /workspace/github_cpp_makefile_star2_O3/BenLangmead[P]bowtie/./ebwt_search_backtrack.h
// Function: GreedyDFSRangeSource::setQuery(Read&)
void setQuery(Read& r) {
		const bool fw = _params.fw();
		const bool ebwtFw = _ebwt->fw();
		if(ebwtFw) {
			_qry  = fw ? &r.patFw : &r.patRc;
			_qual = fw ? &r.qual  : &r.qualRev;
		} else {
			_qry  = fw ? &r.patFwRev : &r.patRcRev;
			_qual = fw ? &r.qualRev  : &r.qual;
		}
		_name = &r.name;
		// Reset _qlen
		if(_qry->length() > _qlen) {
			try {
				_qlen = _qry->length();
				// Resize _pairs
				if(_pairs != NULL) { delete[] _pairs; }
				_pairs = new TIndexOffU[_qlen*_qlen*8];
				// Resize _elims
				if(_elims != NULL) { delete[] _elims; }
				_elims = new uint8_t[_qlen*_qlen];
				memset(_elims, 0, _qlen*_qlen);
				// Resize _chars
				if(_chars != NULL) { delete[] _chars; }
				_chars = new char[_qlen];
				assert(_pairs != NULL && _elims != NULL && _chars != NULL);
			} catch(std::bad_alloc& e) {
				ThreadSafe _ts(&gLock);
				cerr << "Unable to allocate memory for depth-first "
				     << "backtracking search; new length = " << _qry->length()
				     << endl;
				throw 1;
			}
		} else {
			// New length is less than old length, so there's no need
			// to resize any data structures.
			assert(_pairs != NULL && _elims != NULL && _chars != NULL);
			_qlen = _qry->length();
		}
		_mms.clear();
		_refcs.clear();
		assert_geq(_qual->length(), _qlen);
		if(_verbose) {
			cout << "setQuery(_qry=" << (*_qry) << ", _qual=" << (*_qual) << ")" << endl;
		}
		// Initialize the random source using new read as part of the
		// seed.
		_seed = r.seed;
		_patid = r.rdid;
		_rand.init(r.seed);
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x20(%rdi), %rax
movq 0x28(%rdi), %rcx
movb 0x14(%rcx), %cl
xorl %edx, %edx
testb %cl, %cl
movl $0x30, %edi
cmovneq %rdx, %rdi
movl $0x90, %edx
movl $0xc0, %r8d
cmovneq %rdx, %r8
movb 0x10(%rax), %al
testb %al, %al
cmovneq %rdi, %r8
movq %rsi, %r14
xorb %al, %cl
leaq 0x60(%rsi), %rax
leaq 0xf0(%rsi), %rdx
testb %cl, %cl
cmovneq %rdx, %rax
leaq (%rsi,%r8), %rcx
movq %rcx, (%rbx)
movq %rax, 0x10(%rbx)
leaq 0x150(%rsi), %rax
movq %rax, 0x18(%rbx)
movq 0x20(%rsi,%r8), %r15
cmpq 0x8(%rbx), %r15
movq %r15, 0x8(%rbx)
jbe 0x3dd79
movq 0x48(%rbx), %rdi
testq %rdi, %rdi
je 0x3dcf4
callq 0x95e0
movq 0x8(%rbx), %r15
movq %r15, %r12
imulq %r15, %r12
movabsq $0x1800000000000000, %rax # imm = 0x1800000000000000
andq %r12, %rax
movq %r12, %rcx
shlq $0x5, %rcx
xorl %edi, %edi
negq %rax
sbbq %rdi, %rdi
orq %rcx, %rdi
callq 0x9030
movq %rax, 0x48(%rbx)
movq 0x50(%rbx), %rdi
testq %rdi, %rdi
je 0x3dd3c
callq 0x95e0
movq 0x8(%rbx), %r15
movq %r15, %r12
imulq %r15, %r12
movq %r12, %rdi
callq 0x9030
movq %rax, 0x50(%rbx)
movq %rax, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x9250
movq 0x98(%rbx), %rdi
testq %rdi, %rdi
je 0x3dd6a
callq 0x95e0
movq 0x8(%rbx), %r15
movq %r15, %rdi
callq 0x9030
movq %rax, 0x98(%rbx)
xorl %eax, %eax
movq %rax, 0x70(%rbx)
movq %rax, 0x90(%rbx)
cmpb $0x1, 0x148(%rbx)
jne 0x3de1a
movq 0x2c216(%rip), %r15     # 0x69fb0
leaq 0x182f4(%rip), %rsi     # 0x56095
movl $0xe, %edx
movq %r15, %rdi
callq 0x9560
movq (%rbx), %rsi
movq %r15, %rdi
callq 0x1fb3f
movq %rax, %r15
leaq 0x182e1(%rip), %rsi     # 0x560a4
movl $0x8, %edx
movq %rax, %rdi
callq 0x9560
movq 0x10(%rbx), %rsi
movq %r15, %rdi
callq 0x1fb3f
movq %rax, %r15
leaq 0x1850d(%rip), %rsi     # 0x562f3
movl $0x1, %edx
movq %rax, %rdi
callq 0x9560
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %r15, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
movl 0x18c(%r14), %eax
movl %eax, 0x1dc(%rbx)
movl 0x180(%r14), %eax
movl %eax, 0x1d8(%rbx)
movl 0x18c(%r14), %eax
movl %eax, 0x13c(%rbx)
movb $0x1, 0x144(%rbx)
movl $0x1e, 0x140(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r14
cmpl $0x1, %edx
jne 0x3df05
movq %r14, %rdi
callq 0x91a0
leaq 0x2f37f(%rip), %rdi     # 0x6d1f8
callq 0x4ac58
movq 0x2c16b(%rip), %rdi     # 0x69ff0
leaq 0x181bb(%rip), %rsi     # 0x56047
movl $0x2a, %edx
callq 0x9560
movq 0x2c153(%rip), %rdi     # 0x69ff0
leaq 0x181ce(%rip), %rsi     # 0x56072
movl $0x22, %edx
callq 0x9560
movq (%rbx), %rax
movq 0x20(%rax), %rsi
movq 0x2c134(%rip), %rdi     # 0x69ff0
callq 0x92e0
movq %rax, %rdi
callq 0x91f0
movl $0x4, %edi
callq 0x9200
movl $0x1, (%rax)
movq 0x2c058(%rip), %rsi     # 0x69f38
movq %rax, %rdi
xorl %edx, %edx
callq 0x98f0
movq %rax, %r14
leaq 0x2f304(%rip), %rdi     # 0x6d1f8
callq 0x4ac94
jmp 0x3df00
jmp 0x3df0d
movq %rax, %r14
callq 0x9840
movq %r14, %rdi
callq 0x9930
movq %rax, %rdi
callq 0x1afa3
nop