// File: /workspace/github_cpp_makefile_star2_O1/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 0xed44
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x1000, %rsi           # imm = 0x1000
jbe 0xebd4
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 0x4250
leaq (%r14,%r15,8), %rbx
bsrq %r15, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x24dc8
movq %r14, %rdi
movq %rbx, %rsi
callq 0x24eaf
decq %r15
cmpq %r13, %r15
je 0xec05
movq (%r14,%r13,8), %rax
leaq 0x1(%r13), %r12
cmpq 0x8(%r14,%r13,8), %rax
movq %r12, %r13
jne 0xea89
movq 0x2850d(%rip), %rbx     # 0x36fb8
leaq 0x1e855(%rip), %rsi     # 0x2d307
movq %rbx, %rdi
callq 0x4310
movq -0x8(%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40c0
leaq 0x1e67e(%rip), %r15     # 0x2d14c
movq %rax, %rdi
movq %r15, %rsi
callq 0x4310
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 0x40c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1e63a(%rip), %rsi     # 0x2d151
movq %rax, %rdi
callq 0x4310
movq (%r14,%r12,8), %rsi
movq %rax, %rdi
callq 0x40c0
movq %rax, %rdi
movq %r15, %rsi
callq 0x4310
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 0x40c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x207a2(%rip), %rsi     # 0x2f315
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4150
leaq 0x21090(%rip), %r14     # 0x2fc1a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4310
leaq 0x1fb7c(%rip), %rsi     # 0x2e718
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
movl $0x136, %esi            # imm = 0x136
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1fa38(%rip), %rdi     # 0x2e5f8
leaq 0x21066(%rip), %rcx     # 0x2fc2d
movq %r14, %rsi
movl $0x136, %edx            # imm = 0x136
callq 0x41c0
xorl %eax, %eax
movq %rax, %r13
incq %rax
cmpq %r15, %rax
jae 0xebf6
movq (%rbx,%r13,8), %rcx
movq %rax, %r12
cmpq (%rbx,%r12,8), %rcx
je 0xec16
incq %r12
cmpq %r15, %r12
jb 0xebe8
cmpq %r15, %rax
jne 0xebd6
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %r14, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x4420
movq 0x2839b(%rip), %r14     # 0x36fb8
leaq 0x1e6e3(%rip), %rsi     # 0x2d307
movq %r14, %rdi
callq 0x4310
movq (%rbx,%r13,8), %rsi
movq %rax, %rdi
callq 0x40c0
leaq 0x1e50d(%rip), %r15     # 0x2d14c
movq %rax, %rdi
movq %r15, %rsi
callq 0x4310
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 0x40c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1e4ca(%rip), %rsi     # 0x2d151
movq %rax, %rdi
callq 0x4310
movq (%rbx,%r12,8), %rsi
movq %rax, %rdi
callq 0x40c0
movq %rax, %rdi
movq %r15, %rsi
callq 0x4310
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 0x40c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x20632(%rip), %rsi     # 0x2f315
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4150
leaq 0x20f20(%rip), %rbx     # 0x2fc1a
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4310
leaq 0x1fa0c(%rip), %rsi     # 0x2e718
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
movl $0x13f, %esi            # imm = 0x13F
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1f8c8(%rip), %rdi     # 0x2e5f8
leaq 0x20ef6(%rip), %rcx     # 0x2fc2d
movq %rbx, %rsi
movl $0x13f, %edx            # imm = 0x13F
callq 0x41c0
movq 0x2826d(%rip), %rbx     # 0x36fb8
leaq 0x1e3c3(%rip), %rsi     # 0x2d115
movq %rbx, %rdi
callq 0x4310
movq %rax, %rdi
xorl %esi, %esi
callq 0x40c0
leaq 0x1e3c0(%rip), %rsi     # 0x2d12b
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
xorl %esi, %esi
callq 0x4610
leaq 0x20591(%rip), %rsi     # 0x2f315
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
callq 0x4150
leaq 0x20e7f(%rip), %r14     # 0x2fc1a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4310
leaq 0x1f96b(%rip), %rsi     # 0x2e718
movq %rax, %rdi
callq 0x4310
movq %rax, %rdi
movl $0x12e, %esi            # imm = 0x12E
callq 0x4610
movq %rax, %rdi
callq 0x4150
leaq 0x1f827(%rip), %rdi     # 0x2e5f8
leaq 0x20e55(%rip), %rcx     # 0x2fc2d
movq %r14, %rsi
movl $0x12e, %edx            # imm = 0x12E
callq 0x41c0