// File: /workspace/github_cpp_makefile_star2_O1/BenLangmead[P]bowtie/./ls.h
// Function: LarssonSadakane<int>::sort_split(int*, int)
inline void sort_split(T *p, T n)
	{
	   T *pa, *pb, *pc, *pd, *pl, *pm, *pn;
	   T f, v, s, t, tmp;

	   if (n<7) {                   /* multi-selection sort smallest arrays.*/
		  select_sort_split(p, n);
		  return;
	   }

	   v=choose_pivot(p, n);
	   pa=pb=p;
	   pc=pd=p+n-1;
	   while (1) {                  /* split-end partition.*/
		  while (pb<=pc && (f=LS_KEY(pb))<=v) {
			 if (f==v) {
				LS_SWAP(pa, pb);
				++pa;
			 }
			 ++pb;
		  }
		  while (pc>=pb && (f=LS_KEY(pc))>=v) {
			 if (f==v) {
				LS_SWAP(pc, pd);
				--pd;
			 }
			 --pc;
		  }
		  if (pb>pc)
			 break;
		  LS_SWAP(pb, pc);
		  ++pb;
		  --pc;
	   }
	   pn=p+n;
	   if ((s=(T)(pa-p))>(t=(T)(pb-pa)))
		  s=t;
	   for (pl=p, pm=pb-s; s; --s, ++pl, ++pm)
		  LS_SWAP(pl, pm);
	   if ((s=(T)(pd-pc))>(t=(T)(pn-pd-1)))
		  s=t;
	   for (pl=pb, pm=pn-s; s; --s, ++pl, ++pm)
		  LS_SWAP(pl, pm);

	   s=(T)(pb-pa);
	   t=(T)(pd-pc);
	   if (s>0)
		  sort_split(p, s);
	   update_group(p+s, p+n-t-1);
	   if (t>0)
		  sort_split(p+n-t, t);
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %edx, %r15d
movq %rsi, %r14
movq %rdi, %rbx
cmpl $0x6, %r15d
jle 0x1e4ce
movq %rbx, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x1e5c0
movl %r15d, %ecx
leaq (%r14,%rcx,4), %r13
leaq (%r14,%rcx,4), %rsi
addq $-0x4, %rsi
movq %rsi, %r15
movq %r14, %rcx
movq %r14, %rdx
cmpq %rsi, %rcx
ja 0x1e367
movq 0x8(%rbx), %r8
movslq (%rcx), %rdi
movslq 0x14(%rbx), %r9
addq %rdi, %r9
cmpl %eax, (%r8,%r9,4)
jg 0x1e367
jne 0x1e361
movl (%rdx), %r8d
movl %edi, (%rdx)
movl %r8d, (%rcx)
addq $0x4, %rdx
addq $0x4, %rcx
jmp 0x1e33a
cmpq %rcx, %rsi
setb %dil
jb 0x1e3dc
movq 0x8(%rbx), %r9
movslq (%rsi), %r8
movslq 0x14(%rbx), %r10
addq %r8, %r10
movl (%r9,%r10,4), %r9d
cmpl %eax, %r9d
jl 0x1e3bc
cmpl %eax, %r9d
jne 0x1e398
movl (%r15), %edi
movl %edi, (%rsi)
movl %r8d, (%r15)
addq $-0x4, %r15
leaq -0x4(%rsi), %r10
cmpq %rcx, %r10
setb %dil
jb 0x1e3d8
movq 0x8(%rbx), %rsi
movslq (%r10), %r8
movslq 0x14(%rbx), %r9
addq %r8, %r9
movl (%rsi,%r9,4), %r9d
movq %r10, %rsi
jmp 0x1e382
testb %dil, %dil
jne 0x1e3dc
movl (%rcx), %edi
movl (%rsi), %r8d
movl %r8d, (%rcx)
movl %edi, (%rsi)
addq $0x4, %rcx
addq $-0x4, %rsi
jmp 0x1e33a
addq $-0x4, %rsi
movq %rcx, %r12
subq %rdx, %r12
subq %r14, %rdx
shrq $0x2, %rdx
shrq $0x2, %r12
cmpl %r12d, %edx
cmovgel %r12d, %edx
testl %edx, %edx
je 0x1e41e
movslq %edx, %rdi
shlq $0x2, %rdi
movq %rcx, %rax
subq %rdi, %rax
xorl %edi, %edi
movl (%r14,%rdi,4), %r8d
movl (%rax,%rdi,4), %r9d
movl %r9d, (%r14,%rdi,4)
movl %r8d, (%rax,%rdi,4)
incq %rdi
cmpl %edi, %edx
jne 0x1e407
movq %r13, %rax
subq %r15, %rax
subq %rsi, %r15
shrq $0x2, %r15
shrq $0x2, %rax
decl %eax
cmpl %r15d, %eax
cmovgel %r15d, %eax
testl %eax, %eax
je 0x1e460
movslq %eax, %rsi
shlq $0x2, %rsi
movq %r13, %rdx
subq %rsi, %rdx
xorl %esi, %esi
movl (%rcx,%rsi,4), %edi
movl (%rdx,%rsi,4), %r8d
movl %r8d, (%rcx,%rsi,4)
movl %edi, (%rdx,%rsi,4)
incq %rsi
cmpl %esi, %eax
jne 0x1e44b
testl %r12d, %r12d
jle 0x1e473
movq %rbx, %rdi
movq %r14, %rsi
movl %r12d, %edx
callq 0x1e2f8
movslq %r12d, %rax
leaq (%r14,%rax,4), %rax
movslq %r15d, %rcx
shlq $0x2, %rcx
subq %rcx, %r13
leaq -0x4(%r13), %rcx
movq %rcx, %rdx
subq (%rbx), %rdx
shrq $0x2, %rdx
movq 0x8(%rbx), %rsi
movslq (%rax), %rdi
movl %edx, (%rsi,%rdi,4)
cmpq %rcx, %rax
je 0x1e4b7
movq 0x8(%rbx), %rsi
movslq 0x4(%rax), %rdi
addq $0x4, %rax
movl %edx, (%rsi,%rdi,4)
cmpq %rcx, %rax
jb 0x1e4a1
jmp 0x1e4bd
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq %r13, %r14
testl %r15d, %r15d
jg 0x1e30a
jmp 0x1e5b5
movslq %r15d, %rax
leaq (%r14,%rax,4), %rax
addq $-0x4, %rax
cmpq %r14, %rax
jbe 0x1e593
leaq 0x4(%r14), %rdx
cmpq %rax, %rdx
jbe 0x1e4f0
movq %rdx, %rcx
jmp 0x1e549
movq 0x8(%rbx), %rcx
movslq 0x14(%rbx), %rsi
movslq (%r14), %rdi
addq %rsi, %rdi
movl (%rcx,%rdi,4), %edi
movq %rdx, %rcx
movq %rdx, %rsi
movq 0x8(%rbx), %r8
movslq (%rsi), %r9
movslq 0x14(%rbx), %r10
addq %r9, %r10
movl (%r8,%r10,4), %r8d
cmpl %edi, %r8d
jge 0x1e52b
movl (%r14), %ecx
movl %ecx, (%rsi)
movl %r9d, (%r14)
movq %rdx, %rcx
jmp 0x1e53d
jne 0x1e53a
movl (%rcx), %r8d
movl %r8d, (%rsi)
movl %r9d, (%rcx)
addq $0x4, %rcx
movl %edi, %r8d
addq $0x4, %rsi
movl %r8d, %edi
cmpq %rax, %rsi
jbe 0x1e507
leaq -0x4(%rcx), %rdx
movq %rdx, %rsi
subq (%rbx), %rsi
shrq $0x2, %rsi
movq 0x8(%rbx), %rdi
movslq (%r14), %r8
movl %esi, (%rdi,%r8,4)
cmpq %rdx, %r14
je 0x1e57e
movq 0x8(%rbx), %rdi
movslq 0x4(%r14), %r8
addq $0x4, %r14
movl %esi, (%rdi,%r8,4)
cmpq %rdx, %r14
jb 0x1e567
jmp 0x1e585
movl $0xffffffff, (%r14)     # imm = 0xFFFFFFFF
movq %rcx, %r14
cmpq %rax, %rcx
jb 0x1e4e2
jmp 0x1e596
movq %r14, %rcx
cmpq %rax, %rcx
jne 0x1e5b5
movq %rcx, %rax
subq (%rbx), %rax
shrq $0x2, %rax
movq 0x8(%rbx), %rdx
movslq (%rcx), %rsi
movl %eax, (%rdx,%rsi,4)
movl $0xffffffff, (%rcx)     # imm = 0xFFFFFFFF
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop