// File: /workspace/github_cpp_makefile_star2_O1/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 %rbx
movq %rsi, %r14
movq %rdi, %rbx
movq 0x20(%rdi), %rcx
movq 0x28(%rdi), %rax
movb 0x14(%rax), %al
cmpb $0x1, 0x10(%rcx)
jne 0x3e921
leaq 0x30(%r14), %rcx
testb %al, %al
cmovneq %r14, %rcx
movq %rcx, (%rbx)
movl $0x60, %ecx
movl $0xf0, %eax
jmp 0x3e942
leaq 0xc0(%r14), %rcx
leaq 0x90(%r14), %rdx
testb %al, %al
cmovneq %rdx, %rcx
movq %rcx, (%rbx)
movl $0xf0, %ecx
movl $0x60, %eax
cmovneq %rcx, %rax
addq %r14, %rax
movq %rax, 0x10(%rbx)
leaq 0x150(%r14), %rax
movq %rax, 0x18(%rbx)
movq (%rbx), %rax
movq 0x20(%rax), %rax
cmpq 0x8(%rbx), %rax
movq %rax, 0x8(%rbx)
jbe 0x3e9f8
movq 0x48(%rbx), %rdi
testq %rdi, %rdi
je 0x3e97b
callq 0x95e0
movq 0x8(%rbx), %rax
imulq %rax, %rax
movabsq $0x1800000000000000, %rcx # imm = 0x1800000000000000
andq %rax, %rcx
shlq $0x5, %rax
xorl %edi, %edi
negq %rcx
sbbq %rdi, %rdi
orq %rax, %rdi
callq 0x9030
movq %rax, 0x48(%rbx)
movq 0x50(%rbx), %rdi
testq %rdi, %rdi
je 0x3e9b6
callq 0x95e0
movq 0x8(%rbx), %r15
imulq %r15, %r15
movq %r15, %rdi
callq 0x9030
movq %rax, 0x50(%rbx)
movq %rax, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x9250
movq 0x98(%rbx), %rdi
testq %rdi, %rdi
je 0x3e9e8
callq 0x95e0
movq 0x8(%rbx), %rdi
callq 0x9030
movq %rax, 0x98(%rbx)
xorl %eax, %eax
movq %rax, 0x70(%rbx)
movq %rax, 0x90(%rbx)
cmpb $0x1, 0x148(%rbx)
jne 0x3ea99
movq 0x2c597(%rip), %r15     # 0x6afb0
leaq 0x18595(%rip), %rsi     # 0x56fb5
movl $0xe, %edx
movq %r15, %rdi
callq 0x9560
movq (%rbx), %rsi
movq %r15, %rdi
callq 0x1fe01
movq %rax, %r15
leaq 0x18582(%rip), %rsi     # 0x56fc4
movl $0x8, %edx
movq %rax, %rdi
callq 0x9560
movq 0x10(%rbx), %rsi
movq %r15, %rdi
callq 0x1fe01
movq %rax, %r15
leaq 0x187ae(%rip), %rsi     # 0x57213
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)
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
cmpl $0x1, %edx
jne 0x3eb7e
movq %r14, %rdi
callq 0x91a0
leaq 0x2f706(%rip), %rdi     # 0x6e1f8
callq 0x4bff0
movq 0x2c4f2(%rip), %rdi     # 0x6aff0
leaq 0x18462(%rip), %rsi     # 0x56f67
movl $0x2a, %edx
callq 0x9560
movq 0x2c4da(%rip), %rdi     # 0x6aff0
leaq 0x18475(%rip), %rsi     # 0x56f92
movl $0x22, %edx
callq 0x9560
movq (%rbx), %rax
movq 0x20(%rax), %rsi
movq 0x2c4bb(%rip), %rdi     # 0x6aff0
callq 0x92e0
movq %rax, %rdi
callq 0x91f0
movl $0x4, %edi
callq 0x9200
movl $0x1, (%rax)
movq 0x2c3df(%rip), %rsi     # 0x6af38
movq %rax, %rdi
xorl %edx, %edx
callq 0x98f0
movq %rax, %r14
leaq 0x2f68b(%rip), %rdi     # 0x6e1f8
callq 0x4c02c
jmp 0x3eb79
jmp 0x3eb86
movq %rax, %r14
callq 0x9840
movq %r14, %rdi
callq 0x9930
movq %rax, %rdi
callq 0x1b23d