// File: /workspace/github_cpp_makefile_star2_O2/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
pushq $0x30
popq %rdi
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 0x3474f
movq 0x48(%rbx), %rdi
testq %rdi, %rdi
je 0x346ca
callq 0x9610
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 0x34712
callq 0x9610
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 0x9270
movq 0x98(%rbx), %rdi
testq %rdi, %rdi
je 0x34740
callq 0x9610
movq 0x8(%rbx), %r15
movq %r15, %rdi
callq 0x9030
movq %rax, 0x98(%rbx)
andq $0x0, 0x70(%rbx)
andq $0x0, 0x90(%rbx)
cmpb $0x1, 0x148(%rbx)
jne 0x347b5
movq 0x2d844(%rip), %rdi     # 0x61fb0
leaq 0x1688d(%rip), %rsi     # 0x4b000
callq 0x94e0
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x1970d
leaq 0x16885(%rip), %rsi     # 0x4b00f
movq %rax, %rdi
callq 0x94e0
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x1970d
leaq 0x16ab9(%rip), %rsi     # 0x4b25e
movq %rax, %rdi
callq 0x94e0
movq %rax, %rdi
callq 0x9210
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 0x3488a
movq %r14, %rdi
callq 0x91a0
leaq 0x309f4(%rip), %rdi     # 0x65208
movq %rdi, (%rsp)
callq 0x40dda
movq 0x2d7cc(%rip), %rdi     # 0x61ff0
leaq 0x16787(%rip), %rsi     # 0x4afb2
callq 0x94e0
leaq 0x167a6(%rip), %rsi     # 0x4afdd
movq %rax, %rdi
callq 0x94e0
movq (%rbx), %rcx
movq 0x20(%rcx), %rsi
movq %rax, %rdi
callq 0x9310
movq %rax, %rdi
callq 0x9210
pushq $0x4
popq %rdi
callq 0x9220
movl $0x1, (%rax)
movq 0x2d6ed(%rip), %rsi     # 0x61f58
movq %rax, %rdi
xorl %edx, %edx
callq 0x9910
movq %rax, %r14
movq %rsp, %rdi
callq 0x1a9ee
jmp 0x34885
movq %rax, %r14
callq 0x9860
movq %r14, %rdi
callq 0x9950
movq %rax, %rdi
callq 0x15e2d