// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./aligner.h
// Function: PairedBWAlignerV1<EbwtRangeSource>::setQuery(PatternSourcePerThread*)
virtual void setQuery(PatternSourcePerThread* patsrc) {
		Aligner::setQuery(patsrc); // set fields & random seed
		assert(!patsrc->bufb().empty());
		// Give all of the drivers pointers to the relevant read info
		patsrc_ = patsrc;
		pool_->reset(&patsrc->bufa().name, (uint32_t)patsrc->rdid());
		if(patsrc->bufa().length() < 4 || patsrc->bufb().length() < 4) {
			if(!quiet_) {
				cerr << "Warning: Skipping pair " << patsrc->bufa().name
					 << " because a mate is less than 4 characters long" << endl;
			}
			this->done = true;
			sinkPt_->finishRead(*patsrc_, true, true);
			return;
		}
		driver1Fw_->setQuery(patsrc, NULL);
		driver1Rc_->setQuery(patsrc, NULL);
		driver2Fw_->setQuery(patsrc, NULL);
		driver2Rc_->setQuery(patsrc, NULL);
		qlen1_ = patsrc_->bufa().length();
		qlen2_ = patsrc_->bufb().length();
		if(btCnt_ != NULL) (*btCnt_) = maxBts_;
		// Neither orientation is done
		doneFw_   = false;
		doneFwFirst_ = true;
		this->done   = false;
		// No ranges are being chased yet
		chase1Fw_ = false;
		chase1Rc_ = false;
		chase2Fw_ = false;
		chase2Rc_ = false;
		delayedChase1Fw_ = false;
		delayedChase1Rc_ = false;
		delayedChase2Fw_ = false;
		delayedChase2Rc_ = false;
		// Clear all intermediate ranges
		for(size_t i = 0; i < 32; i++) {
			offs1FwArr_[i].clear();   offs1RcArr_[i].clear();
			offs2FwArr_[i].clear();   offs2RcArr_[i].clear();
			ranges1FwArr_[i].clear(); ranges1RcArr_[i].clear();
			ranges2FwArr_[i].clear(); ranges2RcArr_[i].clear();
		}
		offs1FwSz_ = offs1RcSz_ = offs2FwSz_ = offs2RcSz_ = 0;
		chaseL_        = &chaseL_fw_;
		chaseR_        = &chaseR_fw_;
		delayedchaseL_ = &delayedchaseL_fw_;
		delayedchaseR_ = &delayedchaseR_fw_;
		drL_           = &drL_fw_;
		drR_           = &drR_fw_;
		offsLarr_      = offsLarr_fw_;
		offsRarr_      = offsRarr_fw_;
		rangesLarr_    = rangesLarr_fw_;
		rangesRarr_    = rangesRarr_fw_;
		offsLsz_       = &offsLsz_fw_;
		offsRsz_       = &offsRsz_fw_;
		donePair_      = &doneFw_;
		fwL_           = fw1_;
		fwR_           = fw2_;
		mixedAttempts_ = 0;
		pairs_fw_.clear();
		pairs_rc_.clear();
#ifndef NDEBUG
		allTopsL_fw_.clear();
		allTopsR_fw_.clear();
		allTopsL_rc_.clear();
		allTopsR_rc_.clear();
#endif
	}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x28196
movq %r14, 0x58(%rbx)
movq 0xc8(%rbx), %rdi
movq 0x18(%r14), %rax
movq 0x50(%r14), %rdx
imulq $0x268, %rdx, %rcx      # imm = 0x268
leaq (%rax,%rcx), %rsi
addq $0x150, %rsi            # imm = 0x150
addl 0x58(%r14), %edx
callq 0x296ac
movq 0x18(%r14), %rcx
imulq $0x268, 0x50(%r14), %rax # imm = 0x268
cmpq $0x4, 0x20(%rcx,%rax)
jb 0x322ef
movq 0x38(%r14), %rcx
cmpq $0x3, 0x20(%rcx,%rax)
ja 0x32365
cmpb $0x0, 0xc1(%rbx)
jne 0x32341
movq 0x2fcf1(%rip), %rdi     # 0x61ff0
leaq 0x18a95(%rip), %rsi     # 0x4ad9b
callq 0x94e0
movq 0x18(%r14), %rcx
imulq $0x268, 0x50(%r14), %rdx # imm = 0x268
leaq (%rcx,%rdx), %rsi
addq $0x150, %rsi            # imm = 0x150
movq %rax, %rdi
callq 0x1970d
leaq 0x18a82(%rip), %rsi     # 0x4adb3
movq %rax, %rdi
callq 0x94e0
movq %rax, %rdi
callq 0x9210
movb $0x1, 0x8(%rbx)
movq 0x58(%rbx), %rsi
movq 0x88(%rbx), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
pushq $0x1
popq %rcx
movl %ecx, %edx
addq $0x8, %rsp
popq %rbx
popq %r14
jmpq *%rax
movq 0xd8(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0xe0(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0x10f8(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0x1100(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0x58(%rbx), %rcx
movq 0xd0(%rbx), %rax
movq 0x18(%rcx), %rdx
imulq $0x268, 0x50(%rcx), %rsi # imm = 0x268
movl 0x20(%rdx,%rsi), %edx
movl %edx, 0x60(%rbx)
imulq $0x268, 0x50(%rcx), %rdx # imm = 0x268
movq 0x38(%rcx), %rcx
movl 0x20(%rcx,%rdx), %ecx
movl %ecx, 0x64(%rbx)
testq %rax, %rax
je 0x323eb
movl 0xc4(%rbx), %ecx
movl %ecx, (%rax)
leaq 0x68(%rbx), %rax
movw $0x100, 0x68(%rbx)      # imm = 0x100
movb $0x0, 0x8(%rbx)
andq $0x0, 0x6a(%rbx)
movq $-0x400, %rcx           # imm = 0xFC00
testq %rcx, %rcx
je 0x32458
andq $0x0, 0x500(%rbx,%rcx)
andq $0x0, 0xd08(%rbx,%rcx)
andq $0x0, 0x1520(%rbx,%rcx)
andq $0x0, 0x1d28(%rbx,%rcx)
andq $0x0, 0x900(%rbx,%rcx)
andq $0x0, 0x1108(%rbx,%rcx)
andq $0x0, 0x1920(%rbx,%rcx)
andq $0x0, 0x2128(%rbx,%rcx)
addq $0x20, %rcx
jmp 0x32405
andl $0x0, 0x2110(%rbx)
andl $0x0, 0x1908(%rbx)
andl $0x0, 0x10f0(%rbx)
andl $0x0, 0x8e8(%rbx)
movups 0x2118(%rbx), %xmm0
movups %xmm0, 0x21d8(%rbx)
movups 0x2128(%rbx), %xmm0
movups %xmm0, 0x21e8(%rbx)
movups 0x2138(%rbx), %xmm0
movups %xmm0, 0x21f8(%rbx)
movups 0x2148(%rbx), %xmm0
movups %xmm0, 0x2208(%rbx)
movups 0x2158(%rbx), %xmm0
movups %xmm0, 0x2218(%rbx)
movups 0x2168(%rbx), %xmm0
movups %xmm0, 0x2228(%rbx)
movq %rax, 0x2238(%rbx)
movb 0xb4(%rbx), %al
movb %al, 0x2240(%rbx)
movb 0xb5(%rbx), %al
movb %al, 0x2241(%rbx)
andl $0x0, 0xb0(%rbx)
leaq 0x2248(%rbx), %rdi
callq 0x334ac
addq $0x2278, %rbx           # imm = 0x2278
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x334ac