// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./multikey_qsort.h
// Function: bool sufDcLtU8<S2bDnaString, S2bDnaString>(S2bDnaString const&, S2bDnaString const&, unsigned long, unsigned long, unsigned long, DifferenceCoverSample<S2bDnaString> const&, bool)
inline
bool sufDcLtU8(const T1& host1,
               const T2& host,
               size_t hlen,
               size_t s1,
               size_t s2,
               const DifferenceCoverSample<T1>& dc,
               bool sanityCheck = false)
{
	hlen += 0;
	size_t diff = dc.tieBreakOff((TIndexOffU)s1, (TIndexOffU)s2);
	assert_lt(diff, dc.v());
	assert_lt(diff, hlen-s1);
	assert_lt(diff, hlen-s2);
	if(sanityCheck) {
		for(size_t i = 0; i < diff; i++) {
			assert_eq(host[s1+i], host1[s2+i]);
		}
	}
	bool ret = dc.breakTie((TIndexOffU)(s1+diff), (TIndexOffU)(s2+diff)) < 0;
	// Sanity-check return value using dollarLt
#ifndef NDEBUG
	bool ret2 = sstr_suf_lt(host1, s1, hlen, host, s2, hlen, false);
	assert(!sanityCheck || ret == ret2);

#endif
	return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, %r13
movq %r8, %rbx
movq %rcx, %r15
movq %rdx, %r14
movq %rsi, %rbp
movq %rdi, 0x20(%rsp)
movq %r9, %rdi
movq %rcx, %rsi
movq %r8, %rdx
callq 0x21894
movl %eax, %r12d
cmpl 0x8(%r13), %eax
jae 0x21688
movq %r14, %rax
subq %r15, %r14
cmpq %r12, %r14
jbe 0x2172c
movq %r13, 0x30(%rsp)
movq %r15, 0x10(%rsp)
movq %rax, 0x28(%rsp)
movq %rax, %r14
movq %rbx, 0x18(%rsp)
subq %rbx, %r14
movq %r12, 0x8(%rsp)
cmpq %r12, %r14
jbe 0x217cf
cmpb $0x0, 0x70(%rsp)
je 0x2161f
movq 0x8(%rsp), %rbx
negq %rbx
xorl %r15d, %r15d
movq 0x18(%rsp), %r13
movq 0x10(%rsp), %r14
cmpq %r15, %rbx
je 0x2161f
movq %rbp, %rdi
movq %r14, %rsi
callq 0x22204
movl %eax, %r12d
movq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x22204
decq %r15
incq %r14
incq %r13
cmpb %al, %r12b
je 0x21472
movq 0x12b0d(%rip), %r12     # 0x33fb8
leaq 0x6ca7(%rip), %rsi      # 0x28159
movq %r12, %rdi
callq 0x42d0
movq %rax, %r14
notq %r15
movq 0x10(%rsp), %rbx
addq %r15, %rbx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x22204
movsbl %al, %esi
movq %r14, %rdi
callq 0x4380
leaq 0x6c8a(%rip), %r14      # 0x2816f
movq %rax, %rdi
movq %r14, %rsi
callq 0x42d0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r13,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r13,%rax)
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x22204
movsbl %al, %esi
movq %r13, %rdi
callq 0x4380
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x6c38(%rip), %rsi      # 0x28174
movq %rax, %rdi
callq 0x42d0
movq %rax, %r13
addq 0x18(%rsp), %r15
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x22204
movsbl %al, %esi
movq %r13, %rdi
callq 0x4380
movq %rax, %rdi
movq %r14, %rsi
callq 0x42d0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r14,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r14,%rax)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x22204
movsbl %al, %esi
movq %r14, %rdi
callq 0x4380
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x8e5a(%rip), %rsi      # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x9748(%rip), %rbx      # 0x2ad1d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x42d0
leaq 0x8154(%rip), %rsi      # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x307, %esi            # imm = 0x307
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x8010(%rip), %rdi      # 0x2961b
leaq 0x99bf(%rip), %rcx      # 0x2afd1
movq %rbx, %rsi
movl $0x307, %edx            # imm = 0x307
callq 0x4190
movq 0x10(%rsp), %r15
movq 0x8(%rsp), %rdx
leaq (%rdx,%r15), %rsi
movq 0x18(%rsp), %rbx
addq %rbx, %rdx
movq 0x30(%rsp), %rdi
callq 0x222ca
movq %rax, %r14
movq 0x20(%rsp), %rdi
movq %r15, %rsi
movq 0x28(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
movq %rdx, %r9
callq 0xd07a
testq %r14, %r14
sets %cl
xorb %al, %cl
andb 0x70(%rsp), %cl
cmpb $0x1, %cl
je 0x21874
shrq $0x3f, %r14
movl %r14d, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x12929(%rip), %rbx     # 0x33fb8
leaq 0x6bf1(%rip), %rsi      # 0x28287
movq %rbx, %rdi
callq 0x42d0
movq %rax, %rdi
movq %r12, %rsi
callq 0x40b0
leaq 0x6bed(%rip), %rsi      # 0x2829d
movq %rax, %rdi
callq 0x42d0
movl 0x8(%r13), %esi
movq %rax, %rdi
callq 0x4400
leaq 0x8d4d(%rip), %rsi      # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x963b(%rip), %r14      # 0x2ad1d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x42d0
leaq 0x8047(%rip), %rsi      # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x302, %esi            # imm = 0x302
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x7f03(%rip), %rdi      # 0x2961b
leaq 0x98b2(%rip), %rcx      # 0x2afd1
movq %r14, %rsi
movl $0x302, %edx            # imm = 0x302
callq 0x4190
movq 0x12885(%rip), %rbx     # 0x33fb8
leaq 0x6b4d(%rip), %rsi      # 0x28287
movq %rbx, %rdi
callq 0x42d0
movq %rax, %rdi
movq %r12, %rsi
callq 0x40b0
leaq 0x6b49(%rip), %rsi      # 0x2829d
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movq %r14, %rsi
callq 0x40b0
leaq 0x8caa(%rip), %rsi      # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x9598(%rip), %r14      # 0x2ad1d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x42d0
leaq 0x7fa4(%rip), %rsi      # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x303, %esi            # imm = 0x303
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x7e60(%rip), %rdi      # 0x2961b
leaq 0x980f(%rip), %rcx      # 0x2afd1
movq %r14, %rsi
movl $0x303, %edx            # imm = 0x303
callq 0x4190
movq 0x127e2(%rip), %rbx     # 0x33fb8
leaq 0x6aaa(%rip), %rsi      # 0x28287
movq %rbx, %rdi
callq 0x42d0
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x40b0
leaq 0x6aa4(%rip), %rsi      # 0x2829d
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movq %r14, %rsi
callq 0x40b0
leaq 0x8c05(%rip), %rsi      # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x94f3(%rip), %r14      # 0x2ad1d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x42d0
leaq 0x7eff(%rip), %rsi      # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x304, %esi            # imm = 0x304
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x7dbb(%rip), %rdi      # 0x2961b
leaq 0x976a(%rip), %rcx      # 0x2afd1
movq %r14, %rsi
movl $0x304, %edx            # imm = 0x304
callq 0x4190
leaq 0x97e5(%rip), %rdi      # 0x2b060
leaq 0x949b(%rip), %rsi      # 0x2ad1d
leaq 0x9748(%rip), %rcx      # 0x2afd1
movl $0x30e, %edx            # imm = 0x30E
callq 0x4190
nop