// File: /workspace/github_cpp_makefile_star2_O1/cjc12[P]ezSTL/src/../include/algorithm.h
// Function: void ezSTL::__intro_sort_loop<unsigned int*, ezSTL::less<unsigned int>>(unsigned int*, unsigned int*, unsigned int, ezSTL::less<unsigned int>)
void __intro_sort_loop(Iterator First, Iterator Last, unsigned int depth, Compare cmp) {
		unsigned int count;
		while ((count = Last - First) > insertion_threshold && depth > 0) {
			--depth;
			Iterator Medium = __quick_sort_partition(First, Last, cmp);
			if (Medium - First < Last - Medium) {
				__intro_sort_loop(First, Medium, depth, cmp);
				First = Medium;
			}
			else {
				__intro_sort_loop(Medium, Last, depth, cmp);
				Last = Medium;
			}
		}
		// if exceed recursive depth limitation
		if (depth <= 0)
			__heap_sort(First, Last, cmp);
		// if < insertion_threshold, change to insertion sort
		else if (count >= 2)
			__insertion_sort(First, Last, cmp);
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq %rsi, %rcx
subq %rdi, %rcx
movq %rcx, %rdx
shrq $0x2, %rdx
cmpl $0x15, %edx
setb %al
testl %ebp, %ebp
sete %sil
orb %al, %sil
jne 0xc5ba
movq %rbx, %rax
movq %rcx, %rdx
sarq $0x2, %rdx
shrq $0x3f, %rcx
addq %rdx, %rcx
andq $-0x2, %rcx
leaq (%r14,%rcx,2), %rcx
movl (%rcx), %edi
movl (%r14), %edx
cmpl %edx, %edi
jae 0xc4bf
cmpl %edi, -0x4(%rbx)
jb 0xc4d2
movl -0x4(%rbx), %esi
cmpl %edi, %edx
jae 0xc587
cmpl %esi, %edi
jae 0xc587
movl %edi, %esi
movl %esi, (%r14)
movl %edx, (%rcx)
movl (%r14), %ecx
leaq -0x4(%rbx), %rdx
movq %r14, %r15
cmpq %r14, %rdx
jbe 0xc533
movq %r14, %r15
movq %rbx, %rsi
addq $-0x4, %rsi
movq %rsi, %rdx
movl (%rsi), %edi
cmpq %rsi, %r15
jae 0xc522
leaq -0x4(%rdx), %rsi
cmpl %ecx, %edi
jae 0xc4f2
movl (%rdx), %edi
movl %edi, (%r15)
cmpq %rdx, %r15
jae 0xc525
addq $0x4, %rsi
cmpl (%r15), %ecx
jb 0xc525
addq $0x4, %r15
cmpq %rsi, %r15
jb 0xc512
jmp 0xc525
movl %edi, (%r15)
movl (%r15), %esi
movl %esi, (%rdx)
leaq 0x4(%rdx), %rsi
cmpq %rdx, %r15
jb 0xc4ee
decl %ebp
movl %ecx, (%r15)
movq %r15, %rcx
subq %r14, %rcx
subq %r15, %rax
cmpq %rax, %rcx
jge 0xc558
movq %r14, %rdi
movq %r15, %rsi
movl %ebp, %edx
callq 0xc467
movq %r15, %r14
jmp 0xc568
movq %r15, %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0xc467
movq %r15, %rbx
movq %rbx, %rcx
subq %r14, %rcx
movq %rcx, %rdx
shrq $0x2, %rdx
cmpl $0x15, %edx
jb 0xc5ba
movq %rbx, %rax
testl %ebp, %ebp
jne 0xc49b
jmp 0xc5ba
leaq -0x4(%rbx), %rcx
cmpl %esi, %edi
setb %r8b
cmpl %esi, %edx
setb %r9b
cmpl %edi, %esi
setb %r10b
cmpl %edx, %esi
setb %dil
testb %r10b, %r9b
jne 0xc4d4
andb %dil, %r8b
je 0xc4d9
jmp 0xc4d4
testl %ebp, %ebp
je 0xc61a
cmpl $0x2, %edx
jb 0xc60f
leaq 0x4(%r14), %rax
cmpq %rbx, %rax
je 0xc60f
movl (%rax), %ecx
cmpl (%r14), %ecx
jae 0xc5fa
movq %r14, %rdx
cmpq %r14, %rax
jbe 0xc5f2
movq %rax, %rdx
movl -0x4(%rdx), %esi
movl %esi, (%rdx)
leaq -0x4(%rdx), %rsi
movq %rsi, %rdx
cmpq %r14, %rsi
ja 0xc5de
movq %r14, %rdx
movl %ecx, (%rdx)
addq $0x4, %rax
jmp 0xc5c7
movl -0x4(%rax), %esi
movq %rax, %rdx
cmpl %esi, %ecx
jae 0xc5f2
movl %esi, (%rdx)
movl -0x8(%rdx), %esi
addq $-0x4, %rdx
jmp 0xc600
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xc62f