Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef long long ll;

int dsort(const void *A,const void *B){return *(ll*)A<*(ll*)B?1:0;}

int main(void){
    ll n,sum=0,ans=0;
    scanf("%lld",&n);
    ll a[n],b[n],k[n];
    for (int i=0; i<n; i++){
        scanf("%lld",&a[i]);
    }
    for (int i=0; i<n; i++){
        scanf("%lld",&b[i]);
    }
    for (int i=0; i<n; i++){
        k[i]=a[i]-b[i];
        if (k[i]<0){
            sum+=k[i];
            ans++;
        }
    }
    qsort (k,n,sizeof(ll),dsort);
    for (int i=0; i<n; i++){
        if (sum<0){
            sum+=k[i];
            ans++;
        } else {
            break ;
        }
    }
    if (sum>=0){
        printf("%lld\n",ans);
    } else {
        printf("-1\n");
    }
    return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	dsort
	.type	dsort, @function
dsort:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	setl	%al
	movzbl	%al, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	dsort, .-dsort
	.section	.rodata
.LC0:
	.string	"%lld"
.LC1:
	.string	"%lld\n"
.LC2:
	.string	"-1"
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$168, %rsp
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	movq	%fs:40, %rax
	movq	%rax, -56(%rbp)
	xorl	%eax, %eax
	movq	%rsp, %rax
	movq	%rax, %rbx
	movq	$0, -120(%rbp)
	movq	$0, -112(%rbp)
	leaq	-128(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -104(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -160(%rbp)
	movq	$0, -152(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -176(%rbp)
	movq	$0, -168(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L4:
	cmpq	%rdx, %rsp
	je	.L5
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L4
.L5:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L6
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L6:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -96(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -88(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -192(%rbp)
	movq	$0, -184(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -208(%rbp)
	movq	$0, -200(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %esi
	movl	$0, %edx
	divq	%rsi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L7:
	cmpq	%rdx, %rsp
	je	.L8
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L7
.L8:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L9
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L9:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -80(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -72(%rbp)
	movq	%rax, %rdx
	movq	%rdx, %r14
	movl	$0, %r15d
	movq	%rax, %rdx
	movq	%rdx, %r12
	movl	$0, %r13d
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L10:
	cmpq	%rdx, %rsp
	je	.L11
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L10
.L11:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L12
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L12:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -64(%rbp)
	movl	$0, -144(%rbp)
	jmp	.L13
.L14:
	movl	-144(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-96(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -144(%rbp)
.L13:
	movl	-144(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L14
	movl	$0, -140(%rbp)
	jmp	.L15
.L16:
	movl	-140(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-80(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -140(%rbp)
.L15:
	movl	-140(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L16
	movl	$0, -136(%rbp)
	jmp	.L17
.L19:
	movq	-96(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rcx
	movq	-80(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	subq	%rax, %rcx
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	%rcx, (%rax,%rdx,8)
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	testq	%rax, %rax
	jns	.L18
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
.L18:
	addl	$1, -136(%rbp)
.L17:
	movl	-136(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L19
	movq	-128(%rbp), %rax
	movq	%rax, %rsi
	movq	-64(%rbp), %rax
	leaq	dsort(%rip), %rdx
	movq	%rdx, %rcx
	movl	$8, %edx
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, -132(%rbp)
	jmp	.L20
.L24:
	cmpq	$0, -120(%rbp)
	jns	.L29
	movq	-64(%rbp), %rax
	movl	-132(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
	addl	$1, -132(%rbp)
.L20:
	movl	-132(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L24
	jmp	.L23
.L29:
	nop
.L23:
	cmpq	$0, -120(%rbp)
	js	.L25
	movq	-112(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L26
.L25:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L26:
	movl	$0, %eax
	movq	%rbx, %rsp
	movq	-56(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L28
	call	__stack_chk_fail@PLT
.L28:
	leaq	-40(%rbp), %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.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:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
user
	.file	"temp.c"
	.text
	.p2align 4
	.globl	dsort
	.type	dsort, @function
dsort:
.LFB51:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	cmpq	%rax, (%rdi)
	setl	%al
	movzbl	%al, %eax
	ret
	.cfi_endproc
.LFE51:
	.size	dsort, .-dsort
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%lld"
.LC1:
	.string	"%lld\n"
.LC2:
	.string	"-1"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r15
	pushq	%r14
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	leaq	.LC0(%rip), %r14
	leaq	-64(%rbp), %rsi
	pushq	%r13
	movq	%r14, %rdi
	pushq	%r12
	pushq	%rbx
	subq	$40, %rsp
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	movq	%fs:40, %rax
	movq	%rax, -56(%rbp)
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	movq	%rsp, %rcx
	leaq	15(,%rsi,8), %rax
	movq	%rax, %rdi
	movq	%rax, %rdx
	andq	$-4096, %rdi
	andq	$-16, %rdx
	subq	%rdi, %rcx
	cmpq	%rcx, %rsp
	je	.L5
.L43:
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	cmpq	%rcx, %rsp
	jne	.L43
.L5:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	jne	.L44
.L6:
	movq	%rax, %rdi
	movq	%rax, %rdx
	movq	%rsp, %rcx
	movq	%rsp, %rbx
	andq	$-4096, %rdi
	andq	$-16, %rdx
	subq	%rdi, %rcx
.L7:
	cmpq	%rcx, %rsp
	je	.L8
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L7
.L44:
	orq	$0, -8(%rsp,%rdx)
	jmp	.L6
.L8:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	jne	.L45
.L9:
	movq	%rsp, -72(%rbp)
	movq	%rax, %rdx
	movq	%rsp, %rcx
	andq	$-4096, %rax
	andq	$-16, %rdx
	subq	%rax, %rcx
.L10:
	cmpq	%rcx, %rsp
	je	.L11
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L10
.L45:
	orq	$0, -8(%rsp,%rdx)
	jmp	.L9
.L11:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	je	.L12
	orq	$0, -8(%rsp,%rdx)
.L12:
	movq	%rsp, %r12
	testq	%rsi, %rsi
	jle	.L16
	movq	%rbx, %r13
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L14:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %r15
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	addq	$8, %r13
	cmpq	%r15, %rsi
	jg	.L14
	testq	%rsi, %rsi
	jle	.L16
	movq	-72(%rbp), %r13
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L15:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %r15
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	addq	$8, %r13
	cmpq	%r15, %rsi
	jg	.L15
	testq	%rsi, %rsi
	jle	.L16
	leaq	0(,%rsi,8), %rcx
	xorl	%eax, %eax
	xorl	%r14d, %r14d
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L18:
	movq	-72(%rbp), %rdi
	movq	(%rbx,%rax), %rdx
	subq	(%rdi,%rax), %rdx
	movq	%rdx, (%r12,%rax)
	jns	.L17
	addq	%rdx, %r15
	addq	$1, %r14
.L17:
	addq	$8, %rax
	cmpq	%rax, %rcx
	jne	.L18
	leaq	dsort(%rip), %rcx
	movl	$8, %edx
	movq	%r12, %rdi
	call	qsort@PLT
	movq	-64(%rbp), %rax
	testq	%rax, %rax
	jle	.L19
	testq	%r15, %r15
	je	.L20
	movq	%r14, %rdx
	addq	%r14, %rax
	negq	%rdx
	leaq	(%r12,%rdx,8), %rdx
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L22:
	testq	%r15, %r15
	jns	.L20
.L21:
	addq	(%rdx,%r14,8), %r15
	addq	$1, %r14
	cmpq	%r14, %rax
	jne	.L22
.L19:
	testq	%r15, %r15
	jns	.L20
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
.L24:
	movq	-56(%rbp), %rax
	subq	%fs:40, %rax
	jne	.L46
	leaq	-40(%rbp), %rsp
	xorl	%eax, %eax
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
.L16:
	.cfi_restore_state
	leaq	dsort(%rip), %rcx
	movl	$8, %edx
	movq	%r12, %rdi
	xorl	%r14d, %r14d
	call	qsort@PLT
.L20:
	movq	%r14, %rdx
	leaq	.LC1(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L24
.L46:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.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:

rule
	.file	"temp.c"
	.text
	.p2align 4
	.globl	dsort
	.type	dsort, @function
dsort:
.LFB51:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	cmpq	%rax, (%rdi)
	setl	%al
	movzbl	%al, %eax
	ret
	.cfi_endproc
.LFE51:
	.size	dsort, .-dsort
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%lld"
.LC1:
	.string	"%lld\n"
.LC2:
	.string	"-1"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r15
	pushq	%r14
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	leaq	.LC0(%rip), %r14
	leaq	-64(%rbp), %rsi
	pushq	%r13
	movq	%r14, %rdi
	pushq	%r12
	pushq	%rbx
	subq	$40, %rsp
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	movq	%fs:40, %rax
	movq	%rax, -56(%rbp)
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	movq	%rsp, %rcx
	leaq	15(,%rsi,8), %rax
	movq	%rax, %rdi
	movq	%rax, %rdx
	andq	$-4096, %rdi
	andq	$-16, %rdx
	subq	%rdi, %rcx
	cmpq	%rcx, %rsp
	je	.L5
.L43:
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	cmpq	%rcx, %rsp
	jne	.L43
.L5:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	jne	.L44
.L6:
	movq	%rax, %rdi
	movq	%rax, %rdx
	movq	%rsp, %rcx
	movq	%rsp, %rbx
	andq	$-4096, %rdi
	andq	$-16, %rdx
	subq	%rdi, %rcx
.L7:
	cmpq	%rcx, %rsp
	je	.L8
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L7
.L44:
	orq	$0, -8(%rsp,%rdx)
	jmp	.L6
.L8:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	jne	.L45
.L9:
	movq	%rsp, -72(%rbp)
	movq	%rax, %rdx
	movq	%rsp, %rcx
	andq	$-4096, %rax
	andq	$-16, %rdx
	subq	%rax, %rcx
.L10:
	cmpq	%rcx, %rsp
	je	.L11
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L10
.L45:
	orq	$0, -8(%rsp,%rdx)
	jmp	.L9
.L11:
	andl	$4095, %edx
	subq	%rdx, %rsp
	testq	%rdx, %rdx
	je	.L12
	orq	$0, -8(%rsp,%rdx)
.L12:
	movq	%rsp, %r12
	testq	%rsi, %rsi
	jle	.L16
	movq	%rbx, %r13
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L14:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %r15
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	addq	$8, %r13
	cmpq	%r15, %rsi
	jg	.L14
	testq	%rsi, %rsi
	jle	.L16
	movq	-72(%rbp), %r13
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L15:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %r15
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rsi
	addq	$8, %r13
	cmpq	%r15, %rsi
	jg	.L15
	testq	%rsi, %rsi
	jle	.L16
	leaq	0(,%rsi,8), %rcx
	xorl	%eax, %eax
	xorl	%r14d, %r14d
	xorl	%r15d, %r15d
	.p2align 4,,10
	.p2align 3
.L18:
	movq	-72(%rbp), %rdi
	movq	(%rbx,%rax), %rdx
	subq	(%rdi,%rax), %rdx
	movq	%rdx, (%r12,%rax)
	jns	.L17
	addq	%rdx, %r15
	addq	$1, %r14
.L17:
	addq	$8, %rax
	cmpq	%rax, %rcx
	jne	.L18
	leaq	dsort(%rip), %rcx
	movl	$8, %edx
	movq	%r12, %rdi
	call	qsort@PLT
	movq	-64(%rbp), %rax
	testq	%rax, %rax
	jle	.L19
	testq	%r15, %r15
	je	.L20
	movq	%r14, %rdx
	addq	%r14, %rax
	negq	%rdx
	leaq	(%r12,%rdx,8), %rdx
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L22:
	testq	%r15, %r15
	jns	.L20
.L21:
	addq	(%rdx,%r14,8), %r15
	addq	$1, %r14
	cmpq	%r14, %rax
	jne	.L22
.L19:
	testq	%r15, %r15
	jns	.L20
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
.L24:
	movq	-56(%rbp), %rax
	subq	%fs:40, %rax
	jne	.L46
	leaq	-40(%rbp), %rsp
	xorl	%eax, %eax
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	.cfi_remember_state
	.cfi_def_cfa 7, 8
	ret
.L16:
	.cfi_restore_state
	leaq	dsort(%rip), %rcx
	movl	$8, %edx
	movq	%r12, %rdi
	xorl	%r14d, %r14d
	call	qsort@PLT
.L20:
	movq	%r14, %rdx
	leaq	.LC1(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L24
.L46:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.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:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef long long ll;

int dsort(const void *A,const void *B){return *(ll*)A<*(ll*)B?1:0;}

int main(void){
    ll n,sum=0,ans=0;
    scanf("%lld",&n);
    ll a[n],b[n],k[n];
    for (int i=0; i<n; i++){
        scanf("%lld",&a[i]);
    }
    for (int i=0; i<n; i++){
        scanf("%lld",&b[i]);
    }
    for (int i=0; i<n; i++){
        k[i]=a[i]-b[i];
        if (k[i]<0){
            sum+=k[i];
            ans++;
        }
    }
    qsort (k,n,sizeof(ll),dsort);
    for (int i=0; i<n; i++){
        if (sum<0){
            sum+=k[i];
            ans++;
        } else {
            break ;
        }
    }
    if (sum>=0){
        printf("%lld\n",ans);
    } else {
        printf("-1\n");
    }
    return 0;
}

12
757232153 372327760 440075441 195848680 354974235 458054863 463477172 740174259 615762794 632963102 529866931 64991604
102338863 98239366 465611891 362739947 147060907 118867039 63189252 78303147 501410831 110823640 122948912 572905212
 3
2 3 5
3 7 1
 3
1 3 3
2 2 1
 3
1 6 5
0 1 3
 12
48863441 372327760 440075441 31969951 354974235 315231620 463477172 740174259 615762794 632963102 529866931 3620058
139572012 98239366 465611891 362739947 147060907 118867039 114119164 78303147 501410831 49230544 122948912 572905212
 12
48863441 372327760 440075441 40635764 354974235 315231620 463477172 1102766996 615762794 632963102 529866931 3620058
139572012 98239366 222622949 362739947 147060907 118867039 114119164 78303147 501410831 49230544 122948912 572905212
 3
1 -1 9
0 8 1
 12
48863441 372327760 755057774 40635764 156339565 315231620 182202208 742111057 13211473 458883009 529866931 3620058
139572012 98239366 125015454 362739947 147060907 118867039 114119164 78303147 501410831 57813398 122948912 572905212
 12
48863441 372327760 771553476 40635764 156339565 109554065 141758554 369087251 13211473 458883009 529866931 3620058
139572012 9487455 125015454 362739947 147060907 118867039 114119164 78303147 501410831 79768540 58647642 572905212
 12
48863441 372327760 771553476 40635764 156339565 109554065 141758554 369087251 13211473 458883009 529866931 3620058
197984360 9487455 125015454 362739947 147060907 118867039 114119164 78303147 501410831 79768540 58647642 572905212

5
 -1
 2
 0
 6
 4
 3
 7
 8
 9

Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef long long ll;

int dsort(const void *A,const void *B){return *(ll*)A<*(ll*)B?1:0;}

int main(void){
    ll n,sum=0,ans=0;
    scanf("%lld",&n);
    ll a[n],b[n],k[n];
    for (int i=0; i<n; i++){
        scanf("%lld",&a[i]);
    }
    for (int i=0; i<n; i++){
        scanf("%lld",&b[i]);
    }
    for (int i=0; i<n; i++){
        k[i]=a[i]-b[i];
        if (k[i]<0){
            sum+=k[i];
            ans++;
        }
    }
    qsort (k,n,sizeof(ll),dsort);
    for (int i=0; i<n; i++){
        if (sum<0){
            sum+=k[i];
            ans++;
        } else {
            break ;
        }
    }
    if (sum>=0){
        printf("%lld\n",ans);
    } else {
        printf("-1\n");
    }
    return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	dsort
	.type	dsort, @function
dsort:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	setl	%al
	movzbl	%al, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	dsort, .-dsort
	.section	.rodata
.LC0:
	.string	"%lld"
.LC1:
	.string	"%lld\n"
.LC2:
	.string	"-1"
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$168, %rsp
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	movq	%fs:40, %rax
	movq	%rax, -56(%rbp)
	xorl	%eax, %eax
	movq	%rsp, %rax
	movq	%rax, %rbx
	movq	$0, -120(%rbp)
	movq	$0, -112(%rbp)
	leaq	-128(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -104(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -160(%rbp)
	movq	$0, -152(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -176(%rbp)
	movq	$0, -168(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L4:
	cmpq	%rdx, %rsp
	je	.L5
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L4
.L5:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L6
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L6:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -96(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -88(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -192(%rbp)
	movq	$0, -184(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -208(%rbp)
	movq	$0, -200(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %esi
	movl	$0, %edx
	divq	%rsi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L7:
	cmpq	%rdx, %rsp
	je	.L8
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L7
.L8:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L9
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L9:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -80(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -72(%rbp)
	movq	%rax, %rdx
	movq	%rdx, %r14
	movl	$0, %r15d
	movq	%rax, %rdx
	movq	%rdx, %r12
	movl	$0, %r13d
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L10:
	cmpq	%rdx, %rsp
	je	.L11
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L10
.L11:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L12
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L12:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -64(%rbp)
	movl	$0, -144(%rbp)
	jmp	.L13
.L14:
	movl	-144(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-96(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -144(%rbp)
.L13:
	movl	-144(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L14
	movl	$0, -140(%rbp)
	jmp	.L15
.L16:
	movl	-140(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-80(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -140(%rbp)
.L15:
	movl	-140(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L16
	movl	$0, -136(%rbp)
	jmp	.L17
.L19:
	movq	-96(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rcx
	movq	-80(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	subq	%rax, %rcx
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	%rcx, (%rax,%rdx,8)
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	testq	%rax, %rax
	jns	.L18
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
.L18:
	addl	$1, -136(%rbp)
.L17:
	movl	-136(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L19
	movq	-128(%rbp), %rax
	movq	%rax, %rsi
	movq	-64(%rbp), %rax
	leaq	dsort(%rip), %rdx
	movq	%rdx, %rcx
	movl	$8, %edx
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, -132(%rbp)
	jmp	.L20
.L24:
	cmpq	$0, -120(%rbp)
	jns	.L29
	movq	-64(%rbp), %rax
	movl	-132(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
	addl	$1, -132(%rbp)
.L20:
	movl	-132(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L24
	jmp	.L23
.L29:
	nop
.L23:
	cmpq	$0, -120(%rbp)
	js	.L25
	movq	-112(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L26
.L25:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L26:
	movl	$0, %eax
	movq	%rbx, %rsp
	movq	-56(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L28
	call	__stack_chk_fail@PLT
.L28:
	leaq	-40(%rbp), %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.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:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
train
	.file	"temp.c"
	.text
	.globl	dsort
	.type	dsort, @function
dsort:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movq	(%rax), %rdx
	movq	-16(%rbp), %rax
	movq	(%rax), %rax
	cmpq	%rax, %rdx
	setl	%al
	movzbl	%al, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	dsort, .-dsort
	.section	.rodata
.LC0:
	.string	"%lld"
.LC1:
	.string	"%lld\n"
.LC2:
	.string	"-1"
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$168, %rsp
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	movq	%fs:40, %rax
	movq	%rax, -56(%rbp)
	xorl	%eax, %eax
	movq	%rsp, %rax
	movq	%rax, %rbx
	movq	$0, -120(%rbp)
	movq	$0, -112(%rbp)
	leaq	-128(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -104(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -160(%rbp)
	movq	$0, -152(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -176(%rbp)
	movq	$0, -168(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L4:
	cmpq	%rdx, %rsp
	je	.L5
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L4
.L5:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L6
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L6:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -96(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -88(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -192(%rbp)
	movq	$0, -184(%rbp)
	movq	%rax, %rdx
	movq	%rdx, -208(%rbp)
	movq	$0, -200(%rbp)
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %esi
	movl	$0, %edx
	divq	%rsi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L7:
	cmpq	%rdx, %rsp
	je	.L8
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L7
.L8:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L9
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L9:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -80(%rbp)
	movq	-128(%rbp), %rax
	leaq	-1(%rax), %rdx
	movq	%rdx, -72(%rbp)
	movq	%rax, %rdx
	movq	%rdx, %r14
	movl	$0, %r15d
	movq	%rax, %rdx
	movq	%rdx, %r12
	movl	$0, %r13d
	leaq	0(,%rax,8), %rdx
	movl	$16, %eax
	subq	$1, %rax
	addq	%rdx, %rax
	movl	$16, %edi
	movl	$0, %edx
	divq	%rdi
	imulq	$16, %rax, %rax
	movq	%rax, %rcx
	andq	$-4096, %rcx
	movq	%rsp, %rdx
	subq	%rcx, %rdx
.L10:
	cmpq	%rdx, %rsp
	je	.L11
	subq	$4096, %rsp
	orq	$0, 4088(%rsp)
	jmp	.L10
.L11:
	movq	%rax, %rdx
	andl	$4095, %edx
	subq	%rdx, %rsp
	movq	%rax, %rdx
	andl	$4095, %edx
	testq	%rdx, %rdx
	je	.L12
	andl	$4095, %eax
	subq	$8, %rax
	addq	%rsp, %rax
	orq	$0, (%rax)
.L12:
	movq	%rsp, %rax
	addq	$7, %rax
	shrq	$3, %rax
	salq	$3, %rax
	movq	%rax, -64(%rbp)
	movl	$0, -144(%rbp)
	jmp	.L13
.L14:
	movl	-144(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-96(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -144(%rbp)
.L13:
	movl	-144(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L14
	movl	$0, -140(%rbp)
	jmp	.L15
.L16:
	movl	-140(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-80(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -140(%rbp)
.L15:
	movl	-140(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L16
	movl	$0, -136(%rbp)
	jmp	.L17
.L19:
	movq	-96(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rcx
	movq	-80(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	subq	%rax, %rcx
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	%rcx, (%rax,%rdx,8)
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	testq	%rax, %rax
	jns	.L18
	movq	-64(%rbp), %rax
	movl	-136(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
.L18:
	addl	$1, -136(%rbp)
.L17:
	movl	-136(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L19
	movq	-128(%rbp), %rax
	movq	%rax, %rsi
	movq	-64(%rbp), %rax
	leaq	dsort(%rip), %rdx
	movq	%rdx, %rcx
	movl	$8, %edx
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, -132(%rbp)
	jmp	.L20
.L24:
	cmpq	$0, -120(%rbp)
	jns	.L29
	movq	-64(%rbp), %rax
	movl	-132(%rbp), %edx
	movslq	%edx, %rdx
	movq	(%rax,%rdx,8), %rax
	addq	%rax, -120(%rbp)
	addq	$1, -112(%rbp)
	addl	$1, -132(%rbp)
.L20:
	movl	-132(%rbp), %eax
	movslq	%eax, %rdx
	movq	-128(%rbp), %rax
	cmpq	%rax, %rdx
	jl	.L24
	jmp	.L23
.L29:
	nop
.L23:
	cmpq	$0, -120(%rbp)
	js	.L25
	movq	-112(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L26
.L25:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L26:
	movl	$0, %eax
	movq	%rbx, %rsp
	movq	-56(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L28
	call	__stack_chk_fail@PLT
.L28:
	leaq	-40(%rbp), %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.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:
