// File: /workspace/github_cpp_makefile_star2_O3/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 %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x31044
movq %r14, 0x58(%rbx)
movq 0xc8(%rbx), %r15
movq 0x18(%r14), %rax
movq 0x50(%r14), %rcx
imulq $0x268, %rcx, %rdx      # imm = 0x268
addl 0x58(%r14), %ecx
addq %rdx, %rax
addq $0x150, %rax            # imm = 0x150
movl %ecx, 0x4(%r15)
movq %rax, 0x40(%r15)
movl $0x0, 0x10(%r15)
movq 0x30(%r15), %rdi
movl 0x20(%r15), %eax
shrl $0x5, %eax
leaq 0x4(,%rax,4), %rdx
xorl %esi, %esi
callq 0x9250
movq $0x0, 0x24(%r15)
movq 0x18(%r14), %rcx
imulq $0x268, 0x50(%r14), %rax # imm = 0x268
cmpq $0x4, 0x20(%rcx,%rax)
jb 0x3b8d9
movq 0x38(%r14), %rcx
cmpq $0x3, 0x20(%rcx,%rax)
ja 0x3b981
cmpb $0x0, 0xc1(%rbx)
jne 0x3b95a
movq 0x2e707(%rip), %r15     # 0x69ff0
leaq 0x1a540(%rip), %rsi     # 0x55e30
movl $0x17, %edx
movq %r15, %rdi
callq 0x9560
movq 0x18(%r14), %rax
imulq $0x268, 0x50(%r14), %rcx # imm = 0x268
leaq (%rax,%rcx), %rsi
addq $0x150, %rsi            # imm = 0x150
movq %r15, %rdi
callq 0x1fb3f
movq %rax, %r14
leaq 0x1a522(%rip), %rsi     # 0x55e48
movl $0x2e, %edx
movq %rax, %rdi
callq 0x9560
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x9480
movsbl %al, %esi
movq %r14, %rdi
callq 0x9050
movq %rax, %rdi
callq 0x92f0
movb $0x1, 0x8(%rbx)
movq 0x58(%rbx), %rsi
movq 0x88(%rbx), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
movl $0x1, %edx
movl $0x1, %ecx
popq %rbx
popq %r14
popq %r15
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 0x3ba07
movl 0xc4(%rbx), %ecx
movl %ecx, (%rax)
leaq 0x68(%rbx), %rax
movw $0x100, 0x68(%rbx)      # imm = 0x100
movb $0x0, 0x8(%rbx)
movq $0x0, 0x6a(%rbx)
movq $-0x400, %rcx           # imm = 0xFC00
xorl %edx, %edx
movq %rdx, 0x500(%rbx,%rcx)
movq %rdx, 0xd08(%rbx,%rcx)
movq %rdx, 0x1520(%rbx,%rcx)
movq %rdx, 0x1d28(%rbx,%rcx)
movq %rdx, 0x900(%rbx,%rcx)
movq %rdx, 0x1108(%rbx,%rcx)
movq %rdx, 0x1920(%rbx,%rcx)
movq %rdx, 0x2128(%rbx,%rcx)
addq $0x20, %rcx
jne 0x3ba26
xorl %ecx, %ecx
movl %ecx, 0x2110(%rbx)
movl %ecx, 0x1908(%rbx)
movl %ecx, 0x10f0(%rbx)
movl %ecx, 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)
movl %ecx, 0xb0(%rbx)
leaq 0x2248(%rbx), %rdi
callq 0x3cbe8
addq $0x2278, %rbx           # imm = 0x2278
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x3cbe8
nop