	.file	"extr_qsort.c_pg_qsort.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	pg_qsort
	.type	pg_qsort, @function
pg_qsort:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	mov	rax, rdx
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	neg	rax
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13, rcx
	lea	rcx, [rdi+rdx]
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rdi
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	rbp, rax
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rsi
	sub	rsp, 72
	.cfi_def_cfa_offset 128
	mov	QWORD PTR 8[rsp], rdx
	mov	QWORD PTR 56[rsp], rcx
	.p2align 4,,10
	.p2align 3
.L2:
	mov	r14, QWORD PTR 8[rsp]
	mov	rdi, r12
	mov	rsi, r14
	call	SWAPINIT@PLT
	mov	rax, r14
	imul	rax, rbx
	add	rax, r12
	mov	QWORD PTR 24[rsp], rax
	mov	rax, QWORD PTR 56[rsp]
	mov	QWORD PTR 32[rsp], rax
	cmp	rbx, 6
	jbe	.L42
	mov	rax, QWORD PTR 56[rsp]
	mov	rcx, QWORD PTR 24[rsp]
	cmp	rax, rcx
	jnb	.L1
	mov	r14, rax
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L43:
	add	r14, r15
	cmp	r14, QWORD PTR 24[rsp]
	jnb	.L1
.L10:
	mov	r15, QWORD PTR 8[rsp]
	mov	rdi, r14
	mov	rsi, r14
	sub	rdi, r15
	call	r13
	test	eax, eax
	jle	.L43
	mov	rax, QWORD PTR 8[rsp]
	mov	r15, rbx
	lea	r14, -1[rbx]
	shr	r15
	imul	r15, rax
	imul	r14, rax
	add	r15, r12
	add	r14, r12
	cmp	rbx, 7
	je	.L28
	mov	rdx, r14
	mov	r8, r12
	cmp	rbx, 40
	ja	.L44
.L11:
	mov	rsi, r15
	mov	rcx, r13
	mov	rdi, r8
	call	med3@PLT
	mov	r15, rax
.L28:
	mov	rsi, r15
	mov	rdi, r12
	call	swap@PLT
	mov	rax, QWORD PTR 56[rsp]
	cmp	rax, r14
	jbe	.L12
	mov	QWORD PTR 16[rsp], rax
	xor	r8d, r8d
	xor	ebx, ebx
	xor	r9d, r9d
	xor	esi, esi
	.p2align 4,,10
	.p2align 3
.L13:
	mov	rdi, QWORD PTR 32[rsp]
	mov	QWORD PTR 40[rsp], r8
	mov	DWORD PTR 52[rsp], r9d
	sub	rdi, r12
	call	Min@PLT
	mov	rsi, QWORD PTR 16[rsp]
	mov	rdi, r12
	mov	rdx, rax
	sub	rsi, rax
	call	vecswap@PLT
	mov	r15, QWORD PTR 24[rsp]
	mov	r9d, DWORD PTR 52[rsp]
	mov	rsi, r15
	mov	edi, r9d
	sub	rsi, r14
	sub	esi, DWORD PTR 8[rsp]
	call	Min@PLT
	mov	rdi, QWORD PTR 16[rsp]
	mov	rsi, r15
	mov	rdx, rax
	sub	rsi, rax
	call	vecswap@PLT
	mov	r8, QWORD PTR 40[rsp]
	cmp	r8, rbx
	jb	.L45
	cmp	QWORD PTR 8[rsp], rbx
	jb	.L46
.L23:
	mov	rcx, QWORD PTR 8[rsp]
	cmp	rcx, r8
	jnb	.L1
	mov	rax, r8
	xor	edx, edx
	mov	r12, QWORD PTR 24[rsp]
	div	rcx
	sub	r12, r8
	mov	rbx, rax
	lea	rax, [r12+rcx]
	mov	QWORD PTR 56[rsp], rax
	jmp	.L2
.L12:
	mov	rbx, QWORD PTR 56[rsp]
	mov	r15, r14
	.p2align 4,,10
	.p2align 3
.L15:
	mov	QWORD PTR 16[rsp], rbx
	mov	rsi, r12
	mov	rdi, rbx
	call	r13
	test	eax, eax
	jle	.L16
	cmp	r15, QWORD PTR 16[rsp]
	jnb	.L17
	jmp	.L47
	.p2align 4,,10
	.p2align 3
.L18:
	add	r15, rbp
	cmp	r15, rbx
	jb	.L40
.L17:
	mov	rsi, r12
	mov	rdi, r15
	call	r13
	test	eax, eax
	js	.L48
	jne	.L18
	mov	rsi, r14
	mov	rdi, r15
	add	r14, rbp
	call	swap@PLT
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L48:
	mov	rsi, r15
	mov	rdi, rbx
	add	r15, rbp
	call	swap@PLT
	mov	rax, QWORD PTR 8[rsp]
	add	rax, rbx
	mov	QWORD PTR 16[rsp], rax
.L26:
	mov	rbx, rax
	cmp	rax, r15
	jbe	.L15
	mov	r8, r14
	sub	rax, QWORD PTR 32[rsp]
	sub	r8, r15
	mov	esi, eax
	mov	rbx, rax
	mov	r9d, r8d
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L16:
	je	.L49
.L14:
	mov	rax, QWORD PTR 8[rsp]
	add	rax, rbx
	mov	QWORD PTR 16[rsp], rax
	jmp	.L26
.L49:
	mov	rdi, QWORD PTR 32[rsp]
	mov	rsi, rbx
	call	swap@PLT
	mov	rcx, QWORD PTR 8[rsp]
	add	QWORD PTR 32[rsp], rcx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L45:
	cmp	QWORD PTR 8[rsp], r8
	jb	.L50
.L25:
	mov	rcx, QWORD PTR 8[rsp]
	cmp	rcx, rbx
	jnb	.L1
	mov	rax, rbx
	xor	edx, edx
	div	rcx
	mov	rbx, rax
	jmp	.L2
.L44:
	shr	rbx, 3
	imul	rbx, QWORD PTR 8[rsp]
	mov	rcx, r13
	mov	rdi, r12
	lea	rdx, [r12+rbx*2]
	lea	rsi, [r12+rbx]
	call	med3@PLT
	mov	rdi, r15
	mov	r9, rbx
	lea	rdx, [r15+rbx]
	neg	r9
	mov	rsi, r15
	sub	rdi, rbx
	mov	rcx, r13
	mov	QWORD PTR 16[rsp], r9
	mov	QWORD PTR 40[rsp], rax
	call	med3@PLT
	mov	r9, QWORD PTR 16[rsp]
	mov	rdx, r14
	mov	rcx, r13
	mov	r15, rax
	lea	rsi, [r14+r9]
	lea	rdi, [rsi+r9]
	call	med3@PLT
	mov	r8, QWORD PTR 40[rsp]
	mov	rdx, rax
	jmp	.L11
.L42:
	mov	rbx, QWORD PTR 8[rsp]
	mov	rcx, QWORD PTR 24[rsp]
	neg	rbx
	cmp	rax, rcx
	jnb	.L1
.L4:
	mov	rax, QWORD PTR 32[rsp]
	cmp	r12, rax
	jnb	.L8
	mov	rbp, rax
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L7:
	mov	rsi, rbp
	mov	rdi, r14
	call	swap@PLT
	cmp	rbp, r12
	jbe	.L8
.L6:
	mov	r14, rbp
	add	rbp, rbx
	mov	rsi, r14
	mov	rdi, rbp
	call	r13
	test	eax, eax
	jg	.L7
.L8:
	mov	rcx, QWORD PTR 8[rsp]
	add	QWORD PTR 32[rsp], rcx
	mov	rax, QWORD PTR 32[rsp]
	cmp	rax, QWORD PTR 24[rsp]
	jb	.L4
.L1:
	add	rsp, 72
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	ret
.L46:
	.cfi_restore_state
	mov	rax, rbx
	mov	rbx, QWORD PTR 8[rsp]
	xor	edx, edx
	mov	rcx, r13
	mov	rdi, r12
	mov	QWORD PTR 16[rsp], r8
	div	rbx
	mov	rdx, rbx
	mov	rsi, rax
	call	pg_qsort
	mov	r8, QWORD PTR 16[rsp]
	jmp	.L23
.L50:
	mov	r10, QWORD PTR 8[rsp]
	mov	rax, r8
	xor	edx, edx
	mov	rdi, QWORD PTR 24[rsp]
	mov	rcx, r13
	div	r10
	sub	rdi, r8
	mov	rdx, r10
	mov	rsi, rax
	call	pg_qsort
	jmp	.L25
.L47:
	mov	rbx, QWORD PTR 16[rsp]
.L40:
	mov	r8, r14
	sub	rbx, QWORD PTR 32[rsp]
	sub	r8, r15
	mov	esi, ebx
	mov	r9d, r8d
	jmp	.L13
	.cfi_endproc
.LFE0:
	.size	pg_qsort, .-pg_qsort
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_qsort.c_pg_qsort.c"
	.text
	.global	__aeabi_uidiv
	.align	2
	.global	pg_qsort
	.syntax unified
	.arm
	.fpu softvfp
	.type	pg_qsort, %function
pg_qsort:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov	r5, r0
	mov	r8, r2
	mov	r10, r1
	mov	r7, r3
	sub	sp, sp, #20
	add	r3, r0, r2
	str	r3, [sp, #12]
	rsb	r4, r2, #0
.L2:
	mul	r6, r8, r10
	mov	r1, r8
	mov	r0, r5
	bl	SWAPINIT
	add	r3, r5, r6
	str	r3, [sp, #4]
	ldr	r3, [sp, #12]
	cmp	r10, #6
	str	r3, [sp]
	bls	.L42
	ldr	r3, [sp, #12]
	add	fp, r5, r6
	cmp	r3, fp
	bcs	.L1
	mov	r9, r3
	b	.L10
.L43:
	cmp	r9, fp
	bcs	.L1
.L10:
	mov	r1, r9
	sub	r0, r9, r8
	blx	r7
	cmp	r0, #0
	add	r9, r9, r8
	ble	.L43
	sub	r6, r6, r8
	lsr	r9, r10, #1
	cmp	r10, #7
	mla	r9, r8, r9, r5
	add	r6, r5, r6
	beq	.L28
	cmp	r10, #40
	movls	r2, r6
	movls	r10, r5
	bhi	.L44
.L11:
	mov	r1, r9
	mov	r0, r10
	mov	r3, r7
	bl	med3
	mov	r9, r0
.L28:
	mov	r1, r9
	mov	r0, r5
	bl	swap
	ldr	r9, [sp, #12]
	cmp	r6, r9
	bcs	.L12
	mov	r10, #0
	mov	fp, r10
	mov	r3, r10
	mov	r1, r10
.L13:
	str	r3, [sp, #8]
	ldr	r3, [sp]
	sub	r0, r3, r5
	bl	Min
	mov	r2, r0
	mov	r0, r5
	sub	r1, r9, r2
	bl	vecswap
	ldr	r3, [sp, #4]
	sub	r1, r3, r6
	ldr	r3, [sp, #8]
	sub	r1, r1, r8
	mov	r0, r3
	bl	Min
	mov	r2, r0
	ldr	r3, [sp, #4]
	mov	r0, r9
	sub	r1, r3, r2
	bl	vecswap
	cmp	r10, fp
	bcc	.L45
	cmp	r8, fp
	bcc	.L46
.L23:
	cmp	r8, r10
	bcs	.L1
	mov	r0, r10
	mov	r1, r8
	bl	__aeabi_uidiv
	ldr	r3, [sp, #4]
	sub	r5, r3, r10
	add	r3, r5, r8
	mov	r10, r0
	str	r3, [sp, #12]
	b	.L2
.L12:
	mov	fp, r6
	ldr	r10, [sp, #12]
.L15:
	mov	r1, r5
	mov	r0, r10
	blx	r7
	cmp	r0, #0
	mov	r9, r10
	ble	.L16
	cmp	fp, r10
	bcs	.L17
	b	.L47
.L18:
	add	fp, fp, r4
	cmp	fp, r10
	bcc	.L48
.L17:
	mov	r1, r5
	mov	r0, fp
	blx	r7
	cmp	r0, #0
	blt	.L49
	bne	.L18
	mov	r1, r6
	mov	r0, fp
	bl	swap
	add	r6, r6, r4
	b	.L18
.L49:
	mov	r1, fp
	mov	r0, r10
	add	r9, r10, r8
	bl	swap
	mov	r1, r9
	add	fp, fp, r4
.L26:
	cmp	r1, fp
	mov	r10, r1
	bls	.L15
	ldr	r3, [sp]
	sub	r1, r1, r3
	sub	r3, r6, fp
	mov	r10, r3
	mov	fp, r1
	b	.L13
.L16:
	beq	.L50
.L14:
	add	r1, r10, r8
	mov	r9, r1
	b	.L26
.L50:
	ldr	r9, [sp]
	mov	r1, r10
	mov	r0, r9
	bl	swap
	add	r3, r9, r8
	str	r3, [sp]
	b	.L14
.L45:
	cmp	r8, r10
	bcc	.L51
.L25:
	cmp	r8, fp
	bcs	.L1
	mov	r0, fp
	mov	r1, r8
	bl	__aeabi_uidiv
	mov	r10, r0
	b	.L2
.L44:
	lsr	r10, r10, #3
	mul	fp, r8, r10
	mov	r3, r7
	add	r2, r5, fp, lsl #1
	add	r1, r5, fp
	mov	r0, r5
	bl	med3
	mov	r1, r9
	add	r2, r9, fp
	mov	r3, r7
	mov	r10, r0
	sub	r0, r9, fp
	bl	med3
	mov	r2, r6
	mov	r9, r0
	mov	r3, r7
	sub	r1, r6, fp
	sub	r0, r6, fp, lsl #1
	bl	med3
	mov	r2, r0
	b	.L11
.L42:
	ldr	fp, [sp, #4]
	mov	r10, r3
	cmp	r3, fp
	bcs	.L1
	rsb	r9, r8, #0
.L4:
	cmp	r5, r10
	bcs	.L8
	mov	r4, r10
	b	.L6
.L7:
	mov	r0, r6
	mov	r1, r4
	bl	swap
	cmp	r4, r5
	bls	.L8
.L6:
	mov	r6, r4
	add	r4, r4, r9
	mov	r1, r6
	mov	r0, r4
	blx	r7
	cmp	r0, #0
	bgt	.L7
.L8:
	add	r10, r10, r8
	cmp	r10, fp
	bcc	.L4
.L1:
	add	sp, sp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L46:
	mov	r1, r8
	mov	r0, fp
	bl	__aeabi_uidiv
	mov	r3, r7
	mov	r1, r0
	mov	r2, r8
	mov	r0, r5
	bl	pg_qsort
	b	.L23
.L51:
	mov	r1, r8
	mov	r0, r10
	bl	__aeabi_uidiv
	mov	r1, r0
	ldr	r0, [sp, #4]
	mov	r3, r7
	mov	r2, r8
	sub	r0, r0, r10
	bl	pg_qsort
	b	.L25
.L48:
	ldr	r3, [sp]
	sub	r1, r10, r3
	sub	r3, r6, fp
	mov	r10, r3
	mov	fp, r1
	b	.L13
.L47:
	ldr	r2, [sp]
	sub	r3, r6, fp
	sub	r1, r10, r2
	mov	fp, r1
	mov	r10, r3
	b	.L13
	.size	pg_qsort, .-pg_qsort
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
