// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./aligner.h
// Function: PairedBWAlignerV1<EbwtRangeSource>::PairedBWAlignerV1(EbwtSearchParams*, RangeSourceDriver<EbwtRangeSource>*, RangeSourceDriver<EbwtRangeSource>*, RangeSourceDriver<EbwtRangeSource>*, RangeSourceDriver<EbwtRangeSource>*, RefAligner*, RangeChaser*, HitSink&, HitSinkPerThreadFactory const&, HitSinkPerThread*, bool, bool, unsigned int, unsigned int, bool, unsigned int, unsigned int, unsigned int, BitPairReference const*, bool, bool, bool, int, ChunkPool*, int*)
PairedBWAlignerV1(
		EbwtSearchParams* params,
		TDriver* driver1Fw, TDriver* driver1Rc,
		TDriver* driver2Fw, TDriver* driver2Rc,
		RefAligner* refAligner,
		RangeChaser* rchase,
		HitSink& sink,
		const HitSinkPerThreadFactory& sinkPtFactory,
		HitSinkPerThread* sinkPt,
		bool fw1, bool fw2,
		uint32_t minInsert,
		uint32_t maxInsert,
		bool dontReconcile,
		uint32_t symCeiling,
		uint32_t mixedThresh,
		uint32_t mixedAttemptLim,
		const BitPairReference* refs,
		bool rangeMode,
		bool verbose,
		bool quiet,
		int maxBts,
		ChunkPool *pool,
		int *btCnt) :
		Aligner(true, rangeMode),
		refs_(refs),
		patsrc_(NULL), qlen1_(0), qlen2_(0), doneFw_(true),
		doneFwFirst_(true),
		chase1Fw_(false), chase1Rc_(false),
		chase2Fw_(false), chase2Rc_(false),
		delayedChase1Fw_(false), delayedChase1Rc_(false),
		delayedChase2Fw_(false), delayedChase2Rc_(false),
		refAligner_(refAligner),
		sinkPtFactory_(sinkPtFactory),
		sinkPt_(sinkPt),
		params_(params),
		minInsert_(minInsert),
		maxInsert_(maxInsert),
		dontReconcile_(dontReconcile),
		symCeiling_(symCeiling),
		mixedThresh_(mixedThresh),
		mixedAttemptLim_(mixedAttemptLim),
		mixedAttempts_(0),
		fw1_(fw1), fw2_(fw2),
		rchase_(rchase),
		verbose_(verbose),
		quiet_(quiet),
		maxBts_(maxBts),
		pool_(pool),
		btCnt_(btCnt),
		driver1Fw_(driver1Fw), driver1Rc_(driver1Rc),
		offs1FwSz_(0), offs1RcSz_(0),
		driver2Fw_(driver2Fw), driver2Rc_(driver2Rc),
		offs2FwSz_(0), offs2RcSz_(0),

		chaseL_fw_       (fw1_ ? chase1Fw_        : chase1Rc_),
		chaseR_fw_       (fw2_ ? chase2Fw_        : chase2Rc_),
		delayedchaseL_fw_(fw1_ ? delayedChase1Fw_ : delayedChase1Rc_),
		delayedchaseR_fw_(fw2_ ? delayedChase2Fw_ : delayedChase2Rc_),
		drL_fw_          (fw1_ ? *driver1Fw_      : *driver1Rc_),
		drR_fw_          (fw2_ ? *driver2Fw_      : *driver2Rc_),
		offsLarr_fw_     (fw1_ ? offs1FwArr_      : offs1RcArr_),
		offsRarr_fw_     (fw2_ ? offs2FwArr_      : offs2RcArr_),
		rangesLarr_fw_   (fw1_ ? ranges1FwArr_    : ranges1RcArr_),
		rangesRarr_fw_   (fw2_ ? ranges2FwArr_    : ranges2RcArr_),
		offsLsz_fw_      (fw1_ ? offs1FwSz_       : offs1RcSz_),
		offsRsz_fw_      (fw2_ ? offs2FwSz_       : offs2RcSz_),

		chaseL_rc_       (fw2_ ? chase2Rc_        : chase2Fw_),
		chaseR_rc_       (fw1_ ? chase1Rc_        : chase1Fw_),
		delayedchaseL_rc_(fw2_ ? delayedChase2Rc_ : delayedChase2Fw_),
		delayedchaseR_rc_(fw1_ ? delayedChase1Rc_ : delayedChase1Fw_),
		drL_rc_          (fw2_ ? *driver2Rc_      : *driver2Fw_),
		drR_rc_          (fw1_ ? *driver1Rc_      : *driver1Fw_),
		offsLarr_rc_     (fw2_ ? offs2RcArr_      : offs2FwArr_),
		offsRarr_rc_     (fw1_ ? offs1RcArr_      : offs1FwArr_),
		rangesLarr_rc_   (fw2_ ? ranges2RcArr_    : ranges2FwArr_),
		rangesRarr_rc_   (fw1_ ? ranges1RcArr_    : ranges1FwArr_),
		offsLsz_rc_      (fw2_ ? offs2RcSz_       : offs2FwSz_),
		offsRsz_rc_      (fw1_ ? offs1RcSz_       : offs1FwSz_),

		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),
		verbose2_(false)
	{
		assert(pool_      != NULL);
		assert(sinkPt_    != NULL);
		assert(params_    != NULL);
		assert(driver1Fw_ != NULL);
		assert(driver1Rc_ != NULL);
		assert(driver2Fw_ != NULL);
		assert(driver2Rc_ != NULL);
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movaps 0xe0(%rsp), %xmm0
movl 0xd8(%rsp), %eax
movb $0x1, 0x8(%rdi)
andq $0x0, 0x28(%rdi)
movb 0xc0(%rsp), %r10b
xorps %xmm1, %xmm1
movups %xmm1, 0x10(%rdi)
movb %r10b, 0x34(%rdi)
movabsq $0x3c6ef35f0019660d, %r10 # imm = 0x3C6EF35F0019660D
movq %r10, 0x38(%rdi)
movb $0x0, 0x48(%rdi)
leaq 0x33fd4(%rip), %r10     # 0x61418
movq %r10, (%rdi)
movq 0xb8(%rsp), %r10
movq %r10, 0x50(%rdi)
movups %xmm1, 0x58(%rdi)
movw $0x101, 0x68(%rdi)      # imm = 0x101
andq $0x0, 0x6a(%rdi)
movq 0x50(%rsp), %r10
movq %r10, 0x78(%rdi)
movq 0x68(%rsp), %r10
movq %r10, 0x80(%rdi)
movq 0x70(%rsp), %r10
movq %r10, 0x88(%rdi)
movq 0x58(%rsp), %r10
movq %rsi, 0x90(%rdi)
movl 0x88(%rsp), %esi
movl %esi, 0x98(%rdi)
movl 0x90(%rsp), %esi
movl %esi, 0x9c(%rdi)
movb 0x98(%rsp), %sil
movb %sil, 0xa0(%rdi)
movl 0xa0(%rsp), %esi
movl %esi, 0xa4(%rdi)
movl 0xa8(%rsp), %esi
movl %esi, 0xa8(%rdi)
movl 0xb0(%rsp), %esi
movl %esi, 0xac(%rdi)
movb 0x80(%rsp), %sil
andl $0x0, 0xb0(%rdi)
movb 0x78(%rsp), %r11b
movb %r11b, 0xb4(%rdi)
movb %sil, 0xb5(%rdi)
movq %r10, 0xb8(%rdi)
movb 0xd0(%rsp), %sil
movb 0xc8(%rsp), %r10b
movb %r10b, 0xc0(%rdi)
movb %sil, 0xc1(%rdi)
leaq 0x68(%rdi), %rsi
movq %rsi, 0x10(%rsp)
movl %eax, 0xc4(%rdi)
leaq 0x6a(%rdi), %rsi
movups %xmm0, 0xc8(%rdi)
movq %rdx, 0xd8(%rdi)
movq %rcx, 0xe0(%rdi)
xorl %eax, %eax
movabsq $-0x100000000, %rbx     # imm = 0xFFFFFFFF00000000
movq %rbx, 0xe8(%rdi,%rax)
andq $0x0, 0xf0(%rdi,%rax)
movq $0x80, 0xf8(%rdi,%rax)
andq $0x0, 0x100(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d55a
xorl %eax, %eax
movq %rbx, 0x4e8(%rdi,%rax)
andq $0x0, 0x4f0(%rdi,%rax)
movq $0x80, 0x4f8(%rdi,%rax)
andq $0x0, 0x500(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d58e
leaq 0x8e8(%rdi), %rax
movq %rax, 0x8(%rsp)
andl $0x0, 0x8e8(%rdi)
xorl %eax, %eax
movq %rbx, 0x8f0(%rdi,%rax)
andq $0x0, 0x8f8(%rdi,%rax)
movq $0x80, 0x900(%rdi,%rax)
andq $0x0, 0x908(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d5d5
xorl %eax, %eax
movq %rbx, 0xcf0(%rdi,%rax)
andq $0x0, 0xcf8(%rdi,%rax)
movq $0x80, 0xd00(%rdi,%rax)
andq $0x0, 0xd08(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d609
andl $0x0, 0x10f0(%rdi)
leaq 0x10f0(%rdi), %r13
movq %r8, 0x10f8(%rdi)
movq %r9, 0x1100(%rdi)
xorl %eax, %eax
movq %rbx, 0x1108(%rdi,%rax)
andq $0x0, 0x1110(%rdi,%rax)
movq $0x80, 0x1118(%rdi,%rax)
andq $0x0, 0x1120(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d659
xorl %eax, %eax
movq %rbx, 0x1508(%rdi,%rax)
andq $0x0, 0x1510(%rdi,%rax)
movq $0x80, 0x1518(%rdi,%rax)
andq $0x0, 0x1520(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d68d
leaq 0x1908(%rdi), %r8
andl $0x0, 0x1908(%rdi)
xorl %eax, %eax
movq %rbx, 0x1910(%rdi,%rax)
andq $0x0, 0x1918(%rdi,%rax)
movq $0x80, 0x1920(%rdi,%rax)
andq $0x0, 0x1928(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d6cf
xorl %eax, %eax
movq %rbx, 0x1d10(%rdi,%rax)
andq $0x0, 0x1d18(%rdi,%rax)
movq $0x80, 0x1d20(%rdi,%rax)
andq $0x0, 0x1d28(%rdi,%rax)
addq $0x20, %rax
cmpq $0x400, %rax            # imm = 0x400
jne 0x2d703
andl $0x0, 0x2110(%rdi)
leaq 0x71(%rdi), %rax
leaq 0x6d(%rdi), %rcx
cmpb $0x0, 0xb5(%rdi)
leaq 0x6c(%rdi), %r9
movq %rcx, %rdx
cmovneq %r9, %rdx
movq %rdx, %r15
movq %rdx, -0x28(%rsp)
leaq 0x70(%rdi), %r10
movq %rax, %rdx
cmovneq %r10, %rdx
movq %r10, %rbx
movq %rdx, %r11
movq %rdx, -0x30(%rsp)
leaq 0x1910(%rdi), %rdx
movq 0x10f8(%rdi), %r10
cmovneq %rcx, %r9
movq %r9, -0x10(%rsp)
movq 0x1100(%rdi), %rcx
cmovneq %rax, %rbx
movq %rbx, -0x8(%rsp)
movq %rcx, %rax
cmovneq %r10, %rax
movq %rax, %rbx
movq %rax, -0x40(%rsp)
cmovneq %rcx, %r10
movq %r10, (%rsp)
leaq 0x1108(%rdi), %r9
movq %rdx, %rax
cmovneq %r9, %rax
movq %rax, %rcx
movq %rax, -0x48(%rsp)
cmovneq %rdx, %r9
movq %r9, -0x18(%rsp)
leaq 0x1d10(%rdi), %rax
leaq 0x1508(%rdi), %r10
movq %rax, %r9
cmovneq %r10, %r9
movq %r9, -0x50(%rsp)
cmovneq %rax, %r10
movq %r10, -0x20(%rsp)
leaq 0x2110(%rdi), %rax
movq %rax, %rdx
cmovneq %r8, %rdx
movq %rdx, -0x80(%rsp)
cmovneq %rax, %r8
movq %r8, -0x38(%rsp)
cmpb $0x0, 0xb4(%rdi)
leaq 0x6b(%rdi), %r12
movq %r12, -0x58(%rsp)
cmovneq %rsi, %r12
movq %r12, 0x2118(%rdi)
leaq 0x6f(%rdi), %r14
movq %r14, -0x60(%rsp)
movq %rsi, %r10
leaq 0x6e(%rdi), %r8
cmovneq %r8, %r14
movq %r15, 0x2120(%rdi)
movq %r14, 0x2128(%rdi)
movq %r11, 0x2130(%rdi)
movq 0xd8(%rdi), %rsi
movq 0xe0(%rdi), %r11
movq %r11, -0x68(%rsp)
cmovneq %rsi, %r11
movq %r11, 0x2138(%rdi)
movq %rbx, 0x2140(%rdi)
leaq 0x8f0(%rdi), %r15
movq %r15, -0x70(%rsp)
leaq 0xe8(%rdi), %rdx
cmovneq %rdx, %r15
movq %r15, 0x2148(%rdi)
movq %rcx, 0x2150(%rdi)
leaq 0xcf0(%rdi), %rbx
movq %rbx, -0x78(%rsp)
leaq 0x4e8(%rdi), %rcx
cmovneq %rcx, %rbx
movq %rbx, 0x2158(%rdi)
movq %r9, 0x2160(%rdi)
movq %r13, %r9
movq 0x8(%rsp), %rax
cmovneq %rax, %r9
movq %r9, 0x2168(%rdi)
movq -0x80(%rsp), %rbp
movq %rbp, 0x2170(%rdi)
movq -0x10(%rsp), %rbp
movq %rbp, 0x2178(%rdi)
cmovneq -0x58(%rsp), %r10
movq %r10, 0x2180(%rdi)
movq -0x8(%rsp), %r10
movq %r10, 0x2188(%rdi)
cmovneq -0x60(%rsp), %r8
movq %r8, 0x2190(%rdi)
movq (%rsp), %r8
movq %r8, 0x2198(%rdi)
cmovneq -0x68(%rsp), %rsi
movq %rsi, 0x21a0(%rdi)
movq -0x18(%rsp), %rsi
movq %rsi, 0x21a8(%rdi)
cmovneq -0x70(%rsp), %rdx
movq %rdx, 0x21b0(%rdi)
movq -0x20(%rsp), %rdx
movq %rdx, 0x21b8(%rdi)
cmovneq -0x78(%rsp), %rcx
movq %rcx, 0x21c0(%rdi)
movq -0x38(%rsp), %rcx
movq %rcx, 0x21c8(%rdi)
cmovneq %r13, %rax
movq %rax, 0x21d0(%rdi)
movq %r12, 0x21d8(%rdi)
movq -0x28(%rsp), %rax
movq %rax, 0x21e0(%rdi)
movq %r14, 0x21e8(%rdi)
movq -0x30(%rsp), %rax
movq %rax, 0x21f0(%rdi)
movq %r11, 0x21f8(%rdi)
movq -0x40(%rsp), %rax
movq %rax, 0x2200(%rdi)
movq %r15, 0x2208(%rdi)
movq -0x48(%rsp), %rax
movq %rax, 0x2210(%rdi)
movq %rbx, 0x2218(%rdi)
movq -0x50(%rsp), %rax
movq %rax, 0x2220(%rdi)
movq %r9, 0x2228(%rdi)
movq -0x80(%rsp), %rax
movq %rax, 0x2230(%rdi)
movq 0x10(%rsp), %rax
movq %rax, 0x2238(%rdi)
movb 0x78(%rsp), %al
movb %al, 0x2240(%rdi)
movb 0x80(%rsp), %al
movb %al, 0x2241(%rdi)
leaq 0x2250(%rdi), %rax
andl $0x0, 0x2250(%rdi)
andq $0x0, 0x2258(%rdi)
movq %rax, 0x2260(%rdi)
movq %rax, 0x2268(%rdi)
andq $0x0, 0x2270(%rdi)
andl $0x0, 0x2280(%rdi)
andq $0x0, 0x2288(%rdi)
leaq 0x2280(%rdi), %rax
movq %rax, 0x2290(%rdi)
movq %rax, 0x2298(%rdi)
andq $0x0, 0x22a0(%rdi)
movb $0x0, 0x22a8(%rdi)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq