// File: 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 %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
ja 0x1429e
movq 0x35dce(%rip), %rdi     # 0x49fc0
leaq 0x2aeff(%rip), %rsi     # 0x3f0f8
callq 0x5360
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2aefa(%rip), %rsi     # 0x3f10e
callq 0x5360
movq %rax, %rdi
xorl %esi, %esi
callq 0x5750
movq %rax, %rdi
leaq 0x2d38b(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x35d44(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x35d78(%rip), %rdi     # 0x49fc0
leaq 0x2dcdf(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2c52c(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x12e, %esi            # imm = 0x12E
callq 0x5750
movq %rax, %rdi
movq 0x35d06(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2c3e4(%rip), %rdi     # 0x4066a
leaq 0x2dca1(%rip), %rsi     # 0x41f2e
movl $0x12e, %edx            # imm = 0x12E
leaq 0x2dca8(%rip), %rcx     # 0x41f41
callq 0x51e0
cmpq $0x1000, -0x10(%rbp)    # imm = 0x1000
jbe 0x144e5
movq -0x10(%rbp), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5030
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x142de
jmp 0x142fd
leaq 0x2dc8c(%rip), %rdi     # 0x41f71
leaq 0x2dc42(%rip), %rsi     # 0x41f2e
movl $0x132, %edx            # imm = 0x132
leaq 0x2dc49(%rip), %rcx     # 0x41f41
callq 0x51e0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x18(%rbp), %rdx
callq 0x32680
movq -0x18(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x326c0
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x144c9
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rdx
cmpq 0x8(%rcx,%rdx,8), %rax
jne 0x144b6
movq 0x35c4c(%rip), %rdi     # 0x49fc0
leaq 0x2af6f(%rip), %rsi     # 0x3f2ea
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2ad91(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq 0x4433(%rip), %rsi      # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x4440(%rip), %rsi      # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x2ad55(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2ad2c(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq 0x43ce(%rip), %rsi      # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x43da(%rip), %rsi      # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x2d173(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x35b2c(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x35b60(%rip), %rdi     # 0x49fc0
leaq 0x2dac7(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2c314(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x136, %esi            # imm = 0x136
callq 0x5750
movq %rax, %rdi
movq 0x35aee(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2c1cc(%rip), %rdi     # 0x4066a
leaq 0x2da89(%rip), %rsi     # 0x41f2e
movl $0x136, %edx            # imm = 0x136
leaq 0x2da90(%rip), %rcx     # 0x41f41
callq 0x51e0
jmp 0x144b8
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x14339
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x144e0
movq -0x38(%rbp), %rdi
callq 0x5510
jmp 0x146a2
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x146a0
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x1468d
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x8(%rbp), %rcx
movq -0x30(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x1467a
movq 0x35a86(%rip), %rdi     # 0x49fc0
leaq 0x2ada9(%rip), %rsi     # 0x3f2ea
callq 0x5360
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2abcb(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq 0x426d(%rip), %rsi      # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x427a(%rip), %rsi      # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x2ab8f(%rip), %rsi     # 0x3f134
callq 0x5360
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x2ab67(%rip), %rsi     # 0x3f12f
callq 0x5360
movq %rax, %rdi
leaq 0x4209(%rip), %rsi      # 0x187e0
callq 0x5120
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x50c0
movq %rax, %rdi
leaq 0x4216(%rip), %rsi      # 0x18810
callq 0x5120
movq %rax, %rdi
leaq 0x2cfaf(%rip), %rsi     # 0x415b8
callq 0x5360
movq %rax, %rdi
movq 0x35968(%rip), %rsi     # 0x49f80
callq 0x53c0
movq 0x3599c(%rip), %rdi     # 0x49fc0
leaq 0x2d903(%rip), %rsi     # 0x41f2e
callq 0x5360
movq %rax, %rdi
leaq 0x2c150(%rip), %rsi     # 0x4078a
callq 0x5360
movq %rax, %rdi
movl $0x13f, %esi            # imm = 0x13F
callq 0x5750
movq %rax, %rdi
movq 0x3592a(%rip), %rsi     # 0x49f80
callq 0x53c0
leaq 0x2c008(%rip), %rdi     # 0x4066a
leaq 0x2d8c5(%rip), %rsi     # 0x41f2e
movl $0x13f, %edx            # imm = 0x13F
leaq 0x2d8cc(%rip), %rcx     # 0x41f41
callq 0x51e0
jmp 0x1467c
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x14507
jmp 0x1468f
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x144ed
jmp 0x146a2
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)