// File: BenLangmead[P]bowtie/./ebwt.h
// Function: Ebwt::mapLFEx(SideLocus const&, unsigned long*, bool) const
inline void Ebwt::mapLFEx(const SideLocus& l,
		TIndexOffU *arrs
                                ASSERT_ONLY(, bool overrideSanity)
                                ) const
{
	assert_eq(0, arrs[0]);
	assert_eq(0, arrs[1]);
	assert_eq(0, arrs[2]);
	assert_eq(0, arrs[3]);
	if(l._fw) {
		// Forward side
		!_eh._isBt2Index ? countFwSideEx(l, arrs)
		                 : countBt2SideEx(l, arrs);
	} else {
		countBwSideEx(l, arrs); // Backward side
	}
#ifndef NDEBUG
	if(_sanity && !overrideSanity) {
		// Make sure results match up with individual calls to mapLF;
		// be sure to override sanity-checking in the callee, or we'll
		// have infinite recursion
		assert_eq(mapLF(l, 0, true), arrs[0]);
		assert_eq(mapLF(l, 1, true), arrs[1]);
		assert_eq(mapLF(l, 2, true), arrs[2]);
		assert_eq(mapLF(l, 3, true), arrs[3]);
	}
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq (%rcx), %rax
je 0x25a9b
movq 0x24647(%rip), %rdi     # 0x49fc0
leaq 0x19799(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x19796(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd1c8(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0xd1b1(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x19764(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x19741(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd21d(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd20b(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1bb8e(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x24547(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x2457b(%rip), %rdi     # 0x49fc0
leaq 0x19671(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1ad2f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x958, %esi            # imm = 0x958
callq 0x5750
movq %rax, %rdi
movq 0x24509(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1abe7(%rip), %rdi     # 0x4066a
leaq 0x19633(%rip), %rsi     # 0x3f0bd
movl $0x958, %edx            # imm = 0x958
leaq 0x1a79c(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq 0x8(%rcx), %rax
je 0x25bd6
movq 0x2450e(%rip), %rdi     # 0x49fc0
leaq 0x19660(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x1965d(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd301(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0xd2ea(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1962b(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x19607(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd357(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd346(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1ba53(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x2440c(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x24440(%rip), %rdi     # 0x49fc0
leaq 0x19536(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1abf4(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x959, %esi            # imm = 0x959
callq 0x5750
movq %rax, %rdi
movq 0x243ce(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1aaac(%rip), %rdi     # 0x4066a
leaq 0x194f8(%rip), %rsi     # 0x3f0bd
movl $0x959, %edx            # imm = 0x959
leaq 0x1a661(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq 0x10(%rcx), %rax
je 0x25d11
movq 0x243d3(%rip), %rdi     # 0x49fc0
leaq 0x19525(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x19522(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd43c(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0xd425(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x194f0(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x194cc(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd492(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd481(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b918(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x242d1(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x24305(%rip), %rdi     # 0x49fc0
leaq 0x193fb(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1aab9(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x95a, %esi            # imm = 0x95A
callq 0x5750
movq %rax, %rdi
movq 0x24293(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a971(%rip), %rdi     # 0x4066a
leaq 0x193bd(%rip), %rsi     # 0x3f0bd
movl $0x95a, %edx            # imm = 0x95A
leaq 0x1a526(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq 0x18(%rcx), %rax
je 0x25e4c
movq 0x24298(%rip), %rdi     # 0x49fc0
leaq 0x193ea(%rip), %rsi     # 0x3f119
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x193e7(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd577(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq -0xd560(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x193b5(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x19391(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd5cd(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd5bc(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b7dd(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x24196(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x241ca(%rip), %rdi     # 0x49fc0
leaq 0x192c0(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1a97e(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x95b, %esi            # imm = 0x95B
callq 0x5750
movq %rax, %rdi
movq 0x24158(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a836(%rip), %rdi     # 0x4066a
leaq 0x19282(%rip), %rsi     # 0x3f0bd
movl $0x95b, %edx            # imm = 0x95B
leaq 0x1a3eb(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x10(%rbp), %rax
testb $0x1, 0x12(%rax)
je 0x25e89
movq -0x28(%rbp), %rax
testb $0x1, 0x1c1(%rax)
jne 0x25e76
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x26740
jmp 0x25e87
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x27e00
jmp 0x25e9a
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x293d0
movq -0x28(%rbp), %rax
testb $0x1, 0xe(%rax)
je 0x264c7
testb $0x1, -0x19(%rbp)
jne 0x264c7
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
je 0x26030
movq 0x240e6(%rip), %rdi     # 0x49fc0
leaq 0x19238(%rip), %rsi     # 0x3f119
callq 0x5360
movq -0x28(%rbp), %rdi
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x1921b(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd743(%rip), %rsi     # 0x187e0
callq 0x5120
movq -0x28(%rbp), %rdi
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd746(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x191cf(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x191ac(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd7b2(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd7a0(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b5f9(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x23fb2(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x23fe6(%rip), %rdi     # 0x49fc0
leaq 0x190dc(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1a79a(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x968, %esi            # imm = 0x968
callq 0x5750
movq %rax, %rdi
movq 0x23f74(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a652(%rip), %rdi     # 0x4066a
leaq 0x1909e(%rip), %rsi     # 0x3f0bd
movl $0x968, %edx            # imm = 0x968
leaq 0x1a207(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl $0x1, %ecx
movl %ecx, %edx
callq 0x2a760
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
je 0x261b1
movq 0x23f67(%rip), %rdi     # 0x49fc0
leaq 0x190b9(%rip), %rsi     # 0x3f119
callq 0x5360
movq -0x28(%rbp), %rdi
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rsi
movl $0x1, %ecx
movl %ecx, %edx
callq 0x2a760
movq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x1909c(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd8c2(%rip), %rsi     # 0x187e0
callq 0x5120
movq -0x28(%rbp), %rdi
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rsi
movl $0x1, %ecx
movl %ecx, %edx
callq 0x2a760
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd8c5(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x19050(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x1902c(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xd932(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xd921(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b478(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x23e31(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x23e65(%rip), %rdi     # 0x49fc0
leaq 0x18f5b(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1a619(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x969, %esi            # imm = 0x969
callq 0x5750
movq %rax, %rdi
movq 0x23df3(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a4d1(%rip), %rdi     # 0x4066a
leaq 0x18f1d(%rip), %rsi     # 0x3f0bd
movl $0x969, %edx            # imm = 0x969
leaq 0x1a086(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl $0x2, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x18(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x2633b
movq 0x23de3(%rip), %rdi     # 0x49fc0
leaq 0x18f35(%rip), %rsi     # 0x3f119
callq 0x5360
movq -0x28(%rbp), %rdi
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rsi
movl $0x2, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x18f15(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xda49(%rip), %rsi     # 0x187e0
callq 0x5120
movq -0x28(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rsi
movl $0x2, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xda4f(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x18ec6(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x18ea2(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xdabc(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xdaab(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b2ee(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x23ca7(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x23cdb(%rip), %rdi     # 0x49fc0
leaq 0x18dd1(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1a48f(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x96a, %esi            # imm = 0x96A
callq 0x5750
movq %rax, %rdi
movq 0x23c69(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a347(%rip), %rdi     # 0x4066a
leaq 0x18d93(%rip), %rsi     # 0x3f0bd
movl $0x96a, %edx            # imm = 0x96A
leaq 0x19efc(%rip), %rcx     # 0x40232
callq 0x51e0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x264c5
movq 0x23c59(%rip), %rdi     # 0x49fc0
leaq 0x18dab(%rip), %rsi     # 0x3f119
callq 0x5360
movq -0x28(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rsi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x68(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x18d8b(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xdbd3(%rip), %rsi     # 0x187e0
callq 0x5120
movq -0x28(%rbp), %rdi
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rsi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x2a760
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xdbd9(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x18d3c(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x18d18(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0xdc46(%rip), %rsi     # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x50c0
movq %rax, %rdi
leaq -0xdc35(%rip), %rsi     # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x1b164(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x23b1d(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x23b51(%rip), %rdi     # 0x49fc0
leaq 0x18c47(%rip), %rsi     # 0x3f0bd
callq 0x5360
movq %rax, %rdi
leaq 0x1a305(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x96b, %esi            # imm = 0x96B
callq 0x5750
movq %rax, %rdi
movq 0x23adf(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x1a1bd(%rip), %rdi     # 0x4066a
leaq 0x18c09(%rip), %rsi     # 0x3f0bd
movl $0x96b, %edx            # imm = 0x96B
leaq 0x19d72(%rip), %rcx     # 0x40232
callq 0x51e0
jmp 0x264c7
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)