// File: /workspace/github_cpp_makefile_star2_O2/BenLangmead[P]bowtie/./multikey_qsort.h
// Function: sanityCheckInputSufs(unsigned long*, unsigned long)
static inline void sanityCheckInputSufs(TIndexOffU *s, size_t slen) {
	assert_gt(slen, 0);
	// Try keeping the running time <1min
        if (slen > 4096) {
		TIndexOffU *s_copy = new TIndexOffU[slen];
		assert(s_copy != NULL);
		std::copy(s, s + slen, s_copy);
		std::sort(s_copy, s_copy + slen);
		for (size_t i = 0; i < slen - 1; i++)
			assert_neq(s_copy[i], s_copy[i + 1]);
		delete[] s_copy;
        } else {
		for(size_t i = 0; i < slen; i++) {
			// Actually, it's convenient to allow the caller to provide
			// suffix offsets thare are off the end of the host string.
			// See, e.g., build() in diff_sample.cpp.
			//assert_lt(s[i], length(host));
			for(size_t j = i+1; j < slen; j++) {
				assert_neq(s[i], s[j]);
			}
		}
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
testq %rsi, %rsi
je 0xc978
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x1000, %rsi           # imm = 0x1000
jbe 0xc807
movq %r15, %rax
shrq $0x3d, %rax
leaq (,%r15,8), %r12
xorl %r13d, %r13d
negq %rax
movl $0x0, %edi
sbbq %rdi, %rdi
orq %r12, %rdi
callq 0x4030
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x4220
leaq (%r14,%r15,8), %rsi
movq %r14, %rdi
callq 0x2070f
decq %r15
cmpq %r13, %r15
je 0xc82f
movq (%r14,%r13,8), %rax
leaq 0x1(%r13), %r12
cmpq 0x8(%r14,%r13,8), %rax
movq %r12, %r13
jne 0xc6bc
movq 0x278da(%rip), %rbx     # 0x33fb8
leaq 0x1bc45(%rip), %rsi     # 0x2832a
movq %rbx, %rdi
callq 0x42d0
movq -0x8(%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
leaq 0x1ba6e(%rip), %r15     # 0x2816f
movq %rax, %rdi
movq %r15, %rsi
callq 0x42d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq -0x8(%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1ba2a(%rip), %rsi     # 0x28174
movq %rax, %rdi
callq 0x42d0
movq (%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq %rax, %rdi
movq %r15, %rsi
callq 0x42d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1dc72(%rip), %rsi     # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x1e560(%rip), %r14     # 0x2ad1d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x42d0
leaq 0x1cf6c(%rip), %rsi     # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x136, %esi            # imm = 0x136
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x1ce28(%rip), %rdi     # 0x2961b
leaq 0x1e536(%rip), %rcx     # 0x2ad30
movq %r14, %rsi
movl $0x136, %edx            # imm = 0x136
callq 0x4190
xorl %r13d, %r13d
cmpq %r15, %r13
je 0xc840
leaq 0x1(%r13), %rax
movq %rax, %r12
cmpq %r15, %r12
jae 0xc82a
movq (%rbx,%r13,8), %rcx
cmpq (%rbx,%r12,8), %rcx
je 0xc84a
incq %r12
jmp 0xc816
movq %rax, %r13
jmp 0xc80a
movq %r14, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x43d0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x27767(%rip), %r14     # 0x33fb8
leaq 0x1bad2(%rip), %rsi     # 0x2832a
movq %r14, %rdi
callq 0x42d0
movq (%rbx,%r13,8), %rsi
movq %rax, %rdi
callq 0x40b0
leaq 0x1b8fc(%rip), %r15     # 0x2816f
movq %rax, %rdi
movq %r15, %rsi
callq 0x42d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%rbx,%r13,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1b8b9(%rip), %rsi     # 0x28174
movq %rax, %rdi
callq 0x42d0
movq (%rbx,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq %rax, %rdi
movq %r15, %rsi
callq 0x42d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%rbx,%r12,8), %rsi
movq %rax, %rdi
callq 0x40b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1db01(%rip), %rsi     # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x1e3ef(%rip), %rbx     # 0x2ad1d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x42d0
leaq 0x1cdfb(%rip), %rsi     # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x13f, %esi            # imm = 0x13F
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x1ccb7(%rip), %rdi     # 0x2961b
leaq 0x1e3c5(%rip), %rcx     # 0x2ad30
movq %rbx, %rsi
movl $0x13f, %edx            # imm = 0x13F
callq 0x4190
movq 0x27639(%rip), %rbx     # 0x33fb8
leaq 0x1b7b2(%rip), %rsi     # 0x28138
movq %rbx, %rdi
callq 0x42d0
movq %rax, %rdi
xorl %esi, %esi
callq 0x40b0
leaq 0x1b7af(%rip), %rsi     # 0x2814e
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
xorl %esi, %esi
callq 0x45d0
leaq 0x1da60(%rip), %rsi     # 0x2a418
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
callq 0x4130
leaq 0x1e34e(%rip), %r14     # 0x2ad1d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x42d0
leaq 0x1cd5a(%rip), %rsi     # 0x2973b
movq %rax, %rdi
callq 0x42d0
movq %rax, %rdi
movl $0x12e, %esi            # imm = 0x12E
callq 0x45d0
movq %rax, %rdi
callq 0x4130
leaq 0x1cc16(%rip), %rdi     # 0x2961b
leaq 0x1e324(%rip), %rcx     # 0x2ad30
movq %r14, %rsi
movl $0x12e, %edx            # imm = 0x12E
callq 0x4190