// File: 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
movq %rsp, %rbp
subq $0xa0, %rsp
movb 0x10(%rbp), %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
movq -0x18(%rbp), %rax
addq $0x0, %rax
movq %rax, -0x18(%rbp)
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x34b20
movl %eax, %eax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
callq 0x33470
movl %eax, %ecx
movq -0x58(%rbp), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x346e1
movq 0x15999(%rip), %rdi     # 0x49fc0
leaq 0xac19(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xac14(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, -0x60(%rbp)
movq -0x30(%rbp), %rdi
callq 0x33470
movq -0x60(%rbp), %rdi
movl %eax, %esi
callq 0x5530
movq %rax, %rdi
leaq 0xcf48(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15901(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15935(%rip), %rdi     # 0x49fc0
leaq 0xd89c(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc0e9(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x302, %esi            # imm = 0x302
callq 0x5750
movq %rax, %rdi
movq 0x158c3(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xbfa1(%rip), %rdi      # 0x4066a
leaq 0xd85e(%rip), %rsi      # 0x41f2e
movl $0x302, %edx            # imm = 0x302
leaq 0xdb15(%rip), %rcx      # 0x421f1
callq 0x51e0
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
subq -0x20(%rbp), %rcx
cmpq %rcx, %rax
jb 0x347af
movq 0x158c3(%rip), %rdi     # 0x49fc0
leaq 0xab43(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xab3e(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rsi
subq -0x20(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xce7a(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15833(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15867(%rip), %rdi     # 0x49fc0
leaq 0xd7ce(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xc01b(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x303, %esi            # imm = 0x303
callq 0x5750
movq %rax, %rdi
movq 0x157f5(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xbed3(%rip), %rdi      # 0x4066a
leaq 0xd790(%rip), %rsi      # 0x41f2e
movl $0x303, %edx            # imm = 0x303
leaq 0xda47(%rip), %rcx      # 0x421f1
callq 0x51e0
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
subq -0x28(%rbp), %rcx
cmpq %rcx, %rax
jb 0x3487d
movq 0x157f5(%rip), %rdi     # 0x49fc0
leaq 0xaa75(%rip), %rsi      # 0x3f247
callq 0x5360
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xaa70(%rip), %rsi      # 0x3f25d
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rsi
subq -0x28(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0xcdac(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x15765(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x15799(%rip), %rdi     # 0x49fc0
leaq 0xd700(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xbf4d(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x304, %esi            # imm = 0x304
callq 0x5750
movq %rax, %rdi
movq 0x15727(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xbe05(%rip), %rdi      # 0x4066a
leaq 0xd6c2(%rip), %rsi      # 0x41f2e
movl $0x304, %edx            # imm = 0x304
leaq 0xd979(%rip), %rcx      # 0x421f1
callq 0x51e0
testb $0x1, -0x31(%rbp)
je 0x34a6b
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
jae 0x34a69
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movsbl %al, %eax
movl %eax, -0x64(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movb %al, %cl
movl -0x64(%rbp), %eax
movsbl %cl, %ecx
cmpl %ecx, %eax
je 0x34a56
movq 0x156e4(%rip), %rdi     # 0x49fc0
leaq 0xa836(%rip), %rsi      # 0x3f119
callq 0x5360
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movq -0x88(%rbp), %rdi
movsbl %al, %esi
callq 0x54a0
movq %rax, %rdi
leaq 0xa816(%rip), %rsi      # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x1c148(%rip), %rsi    # 0x187e0
callq 0x5120
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movq -0x80(%rbp), %rdi
movsbl %al, %esi
callq 0x54a0
movq %rax, %rdi
leaq -0x1c148(%rip), %rsi    # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0xa7cd(%rip), %rsi      # 0x3f134
callq 0x5360
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movq -0x78(%rbp), %rdi
movsbl %al, %esi
callq 0x54a0
movq %rax, %rdi
leaq 0xa798(%rip), %rsi      # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq -0x1c1c6(%rip), %rsi    # 0x187e0
callq 0x5120
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq -0x48(%rbp), %rsi
callq 0x356a0
movq -0x70(%rbp), %rdi
movsbl %al, %esi
callq 0x54a0
movq %rax, %rdi
leaq -0x1c1c6(%rip), %rsi    # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0xcbd3(%rip), %rsi      # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x1558c(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x155c0(%rip), %rdi     # 0x49fc0
leaq 0xd527(%rip), %rsi      # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0xbd74(%rip), %rsi      # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x307, %esi            # imm = 0x307
callq 0x5750
movq %rax, %rdi
movq 0x1554e(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0xbc2c(%rip), %rdi      # 0x4066a
leaq 0xd4e9(%rip), %rsi      # 0x41f2e
movl $0x307, %edx            # imm = 0x307
leaq 0xd7a0(%rip), %rcx      # 0x421f1
callq 0x51e0
jmp 0x34a58
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x3488f
jmp 0x34a6b
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq -0x40(%rbp), %rsi
movq -0x28(%rbp), %rdx
addq -0x40(%rbp), %rdx
callq 0x357a0
cmpq $0x0, %rax
setl %al
andb $0x1, %al
movb %al, -0x49(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x18(%rbp), %r9
xorl %eax, %eax
movl $0x0, (%rsp)
callq 0x15f40
andb $0x1, %al
movb %al, -0x4a(%rbp)
movb $0x1, %al
testb $0x1, -0x31(%rbp)
movb %al, -0x89(%rbp)
je 0x34ae5
movb -0x49(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb -0x4a(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0x34af1
jmp 0x34af3
jmp 0x34b12
leaq 0xd786(%rip), %rdi      # 0x42280
leaq 0xd42d(%rip), %rsi      # 0x41f2e
movl $0x30e, %edx            # imm = 0x30E
leaq 0xd6e4(%rip), %rcx      # 0x421f1
callq 0x51e0
movb -0x49(%rbp), %al
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq