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>
#include <math.h>
#include <float.h>


#define i_cin(X) scanf("%d", &X)
#define i_cin2(X,Y) scanf("%d %d",&X,&Y)
#define i_cin3(X,Y,Z) scanf("%d %d %d",&X,&Y,&Z)
#define l_cin(X) scanf("%ld",&X)
#define f_cin(X) scanf("%f",&X)
#define l_cin2(X,Y) scanf("%ld %ld",&X,&Y)
#define s_cin(X) scanf("%s",&X)

#define  i_cout(X) printf("%d\n",X)
#define  f_cout(X) printf("%g\n",X)
#define  i_cout2(X,Y) printf("%d %d\n",X,Y)
#define  l_cout(X) printf("%ld\n",X)
#define  s_cout(X) printf("%s\n",X)
#define  ll_cout(X) printf("%lld\n",X)

typedef long long  ll;
#define rept(x, s, n) for (int x = s; x < n; x++)

#define Yes_RTN s_cout("Yes");return 0
#define No_RTN  s_cout("No");return 0
#define YES_RTN s_cout("YES");return 0
#define NO_RTN  s_cout("NO");return 0


int i_cins(int n, int* A);
int l_cins2(int n, long* A,long* B);
int s_dsort(const void* a, const void* b);
int s_asort(const void* a, const void* b);

int  _gcd(int a, int b);

int s_asorts(const void* a, const void* b);

//++++++++++++++++POLL

static char S[200001][11];
static int  pt[200000];


int main(void) {
	int N, i;
	int cnt = 1, j = 0, rc, max = 1;

	i_cin(N);
	for(i=0;i<N;i++)
        s_cin(S[i]);
	if (N == 1)
	{s_cout(S[i]); return 0;}

	//昇順に並べる

	qsort((void*)S, N, sizeof(S[0]), s_asorts);

	// 候補者リストを作る
	pt[0] = 0;

	for (i = 0; i < N; i++) {

		rc = strcmp(S[i], S[i + 1]);
		if (!rc)       { cnt++;   continue; }  //同じならカウント
		if (cnt == 1 || cnt < max) {
			cnt = 1; continue;      //違う票でカウント１か
		}                           //票が少なければ
	
		if (cnt == max) j++;   //同じ得票数なら
		if( cnt >  max) { max = cnt; j = 0; }  //票が多ければ
		pt[j] = i;
		cnt = 1;
	}
	if (max == 1) {
		for (i = 0; i < N; i++)
			s_cout(S[i]);
		return 0;
	}

	for (i = 0; i < j+1; i++)
		s_cout(S[pt[i]]);

	return 0;
}




//昇順
int s_asorts(const void* a, const void* b) {
	return(strcmp((char*)a, (char*)b));
}
	
int s_dsort(const void* a, const void* b) {
	return(*(int*)b - *(int*)a);
}
int s_asort(const void* a, const void* b) {
	return(*(int*)a -*(int*)b);
}
int l_cins2(int n, long* a, long* b) {
	int i;
	rept(i, 0, n) {
		l_cin2(*(a + i), *(b + i));
	}
	return 0;
}
int i_cins(int n, int* a) {
	int i;
	for (i = 0; i < n; i++) {
		i_cin(*(a + i));
	}

	return 0;
}

int _gcd(int a, int b) {
	int r, tmp;
	if (a < b) { tmp = a; a = b; b = tmp; }
	r = a % b;
	while (r) {
		if (!r) break;
		a = b; b = r;
		r = a % b;
	}
	return(b);
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.local	S
	.comm	S,2200011,32
	.local	pt
	.comm	pt,800000,32
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$1, -24(%rbp)
	movl	$0, -20(%rbp)
	movl	$1, -16(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -28(%rbp)
	jmp	.L2
.L3:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -28(%rbp)
.L2:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L3
	movl	-32(%rbp), %eax
	cmpl	$1, %eax
	jne	.L4
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L19
.L4:
	movl	-32(%rbp), %eax
	cltq
	leaq	s_asorts(%rip), %rdx
	movq	%rdx, %rcx
	movl	$11, %edx
	movq	%rax, %rsi
	leaq	S(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, pt(%rip)
	movl	$0, -28(%rbp)
	jmp	.L6
.L13:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	leaq	(%rax,%rdx), %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	movl	%eax, -12(%rbp)
	cmpl	$0, -12(%rbp)
	jne	.L7
	addl	$1, -24(%rbp)
	jmp	.L8
.L7:
	cmpl	$1, -24(%rbp)
	je	.L9
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jge	.L10
.L9:
	movl	$1, -24(%rbp)
	jmp	.L8
.L10:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jne	.L11
	addl	$1, -20(%rbp)
.L11:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jle	.L12
	movl	-24(%rbp), %eax
	movl	%eax, -16(%rbp)
	movl	$0, -20(%rbp)
.L12:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	pt(%rip), %rdx
	movl	-28(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	$1, -24(%rbp)
.L8:
	addl	$1, -28(%rbp)
.L6:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L13
	cmpl	$1, -16(%rbp)
	jne	.L14
	movl	$0, -28(%rbp)
	jmp	.L15
.L16:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L15:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L16
	movl	$0, %eax
	jmp	.L19
.L14:
	movl	$0, -28(%rbp)
	jmp	.L17
.L18:
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	pt(%rip), %rax
	movl	(%rdx,%rax), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L17:
	movl	-20(%rbp), %eax
	cmpl	-28(%rbp), %eax
	jge	.L18
	movl	$0, %eax
.L19:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	s_asorts
	.type	s_asorts, @function
s_asorts:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	s_asorts, .-s_asorts
	.globl	s_dsort
	.type	s_dsort, @function
s_dsort:
.LFB8:
	.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	-16(%rbp), %rax
	movl	(%rax), %edx
	movq	-8(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	s_dsort, .-s_dsort
	.globl	s_asort
	.type	s_asort, @function
s_asort:
.LFB9:
	.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
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	s_asort, .-s_asort
	.section	.rodata
.LC2:
	.string	"%ld %ld"
	.text
	.globl	l_cins2
	.type	l_cins2, @function
l_cins2:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	%rdx, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L28
.L29:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-40(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L29
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	l_cins2, .-l_cins2
	.globl	i_cins
	.type	i_cins, @function
i_cins:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L32
.L33:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L32:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L33
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	i_cins, .-i_cins
	.globl	_gcd
	.type	_gcd, @function
_gcd:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jge	.L36
	movl	-20(%rbp), %eax
	movl	%eax, -4(%rbp)
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-4(%rbp), %eax
	movl	%eax, -24(%rbp)
.L36:
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
	jmp	.L37
.L40:
	cmpl	$0, -8(%rbp)
	je	.L42
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-8(%rbp), %eax
	movl	%eax, -24(%rbp)
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
.L37:
	cmpl	$0, -8(%rbp)
	jne	.L40
	jmp	.L39
.L42:
	nop
.L39:
	movl	-24(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	_gcd, .-_gcd
	.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	s_asorts
	.type	s_asorts, @function
s_asorts:
.LFB52:
	.cfi_startproc
	endbr64
	jmp	strcmp@PLT
	.cfi_endproc
.LFE52:
	.size	s_asorts, .-s_asorts
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC0(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC1(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	S(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%r12, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	xorl	%ebx, %ebx
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	leaq	20(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movslq	20(%rsp), %rsi
	testl	%esi, %esi
	jle	.L4
	.p2align 4,,10
	.p2align 3
.L5:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	addl	$1, %ebx
	call	__isoc99_scanf@PLT
	movslq	20(%rsp), %rsi
	addq	$11, %rbp
	cmpl	%ebx, %esi
	jg	.L5
	cmpl	$1, %esi
	je	.L26
.L4:
	leaq	s_asorts(%rip), %rcx
	movl	$11, %edx
	movq	%r12, %rdi
	call	qsort@PLT
	movl	20(%rsp), %eax
	movl	$0, pt(%rip)
	movl	%eax, 4(%rsp)
	testl	%eax, %eax
	jle	.L6
	movl	$1, %ebp
	xorl	%ebx, %ebx
	movl	$1, %r14d
	xorl	%r15d, %r15d
	leaq	S(%rip), %r12
	movq	%r12, 8(%rsp)
	movq	%r12, %r13
	jmp	.L12
	.p2align 4,,10
	.p2align 3
.L8:
	cmpl	$1, %r14d
	je	.L16
	cmpl	%r14d, %ebp
	jg	.L16
	je	.L27
	movl	$0, %eax
	cmovl	%r14d, %ebp
	cmovl	%eax, %ebx
.L11:
	movl	(%rsp), %edx
	movslq	%ebx, %rax
	leaq	pt(%rip), %rcx
	movl	$1, %r14d
	movl	%edx, (%rcx,%rax,4)
.L9:
	cmpl	4(%rsp), %r15d
	je	.L28
.L12:
	movq	%r13, %rdi
	addq	$11, %r13
	movl	%r15d, (%rsp)
	addl	$1, %r15d
	movq	%r13, %rsi
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L8
	addl	$1, %r14d
	cmpl	4(%rsp), %r15d
	jne	.L12
.L28:
	xorl	%r13d, %r13d
	leaq	pt(%rip), %r14
	cmpl	$1, %ebp
	je	.L29
	.p2align 4,,10
	.p2align 3
.L13:
	movslq	(%r14,%r13,4), %rax
	addq	$1, %r13
	leaq	(%rax,%rax,4), %rdx
	leaq	(%rax,%rdx,2), %rdi
	addq	%r12, %rdi
	call	puts@PLT
	cmpl	%r13d, %ebx
	jge	.L13
.L6:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L30
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L16:
	.cfi_restore_state
	movl	$1, %r14d
	jmp	.L9
	.p2align 4,,10
	.p2align 3
.L27:
	addl	$1, %ebx
	jmp	.L11
.L26:
	movslq	%ebx, %rdi
	imulq	$11, %rdi, %rdi
	addq	%r12, %rdi
	call	puts@PLT
	jmp	.L6
.L29:
	xorl	%ebx, %ebx
	.p2align 4,,10
	.p2align 3
.L14:
	movq	8(%rsp), %r15
	addl	$1, %ebx
	movq	%r15, %rdi
	call	puts@PLT
	movq	%r15, %rax
	addq	$11, %rax
	movq	%rax, 8(%rsp)
	cmpl	%ebx, 20(%rsp)
	jg	.L14
	jmp	.L6
.L30:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.size	main, .-main
	.text
	.p2align 4
	.globl	s_dsort
	.type	s_dsort, @function
s_dsort:
.LFB53:
	.cfi_startproc
	endbr64
	movl	(%rsi), %eax
	subl	(%rdi), %eax
	ret
	.cfi_endproc
.LFE53:
	.size	s_dsort, .-s_dsort
	.p2align 4
	.globl	s_asort
	.type	s_asort, @function
s_asort:
.LFB54:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE54:
	.size	s_asort, .-s_asort
	.section	.rodata.str1.1
.LC2:
	.string	"%ld %ld"
	.text
	.p2align 4
	.globl	l_cins2
	.type	l_cins2, @function
l_cins2:
.LFB55:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L38
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leal	-1(%rdi), %eax
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	8(%rsi,%rax,8), %r13
	leaq	.LC2(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rsi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	.p2align 4,,10
	.p2align 3
.L35:
	movq	%rbp, %rdx
	movq	%rbx, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$8, %rbx
	addq	$8, %rbp
	cmpq	%r13, %rbx
	jne	.L35
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L38:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE55:
	.size	l_cins2, .-l_cins2
	.p2align 4
	.globl	i_cins
	.type	i_cins, @function
i_cins:
.LFB56:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L46
	leal	-1(%rdi), %eax
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	leaq	4(%rsi,%rax,4), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	.p2align 4,,10
	.p2align 3
.L43:
	movq	%rbx, %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	addq	$4, %rbx
	call	__isoc99_scanf@PLT
	cmpq	%r12, %rbx
	jne	.L43
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L46:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE56:
	.size	i_cins, .-i_cins
	.p2align 4
	.globl	_gcd
	.type	_gcd, @function
_gcd:
.LFB57:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	cmpl	%esi, %edi
	jge	.L50
	movl	%esi, %eax
	movl	%edi, %esi
.L50:
	cltd
	idivl	%esi
	testl	%edx, %edx
	je	.L53
	.p2align 4,,10
	.p2align 3
.L52:
	movl	%esi, %eax
	movl	%edx, %r8d
	cltd
	movl	%r8d, %esi
	idivl	%r8d
	testl	%edx, %edx
	jne	.L52
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L53:
	movl	%esi, %r8d
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE57:
	.size	_gcd, .-_gcd
	.local	pt
	.comm	pt,800000,32
	.local	S
	.comm	S,2200011,32
	.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	s_asorts
	.type	s_asorts, @function
s_asorts:
.LFB52:
	.cfi_startproc
	endbr64
	jmp	strcmp@PLT
	.cfi_endproc
.LFE52:
	.size	s_asorts, .-s_asorts
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC0(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC1(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	S(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%r12, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	xorl	%ebx, %ebx
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	leaq	20(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movslq	20(%rsp), %rsi
	testl	%esi, %esi
	jle	.L4
	.p2align 4,,10
	.p2align 3
.L5:
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	addl	$1, %ebx
	call	__isoc99_scanf@PLT
	movslq	20(%rsp), %rsi
	addq	$11, %rbp
	cmpl	%ebx, %esi
	jg	.L5
	cmpl	$1, %esi
	je	.L26
.L4:
	leaq	s_asorts(%rip), %rcx
	movl	$11, %edx
	movq	%r12, %rdi
	call	qsort@PLT
	movl	20(%rsp), %eax
	movl	$0, pt(%rip)
	movl	%eax, 4(%rsp)
	testl	%eax, %eax
	jle	.L6
	movl	$1, %ebp
	xorl	%ebx, %ebx
	movl	$1, %r14d
	xorl	%r15d, %r15d
	leaq	S(%rip), %r12
	movq	%r12, 8(%rsp)
	movq	%r12, %r13
	jmp	.L12
	.p2align 4,,10
	.p2align 3
.L8:
	cmpl	$1, %r14d
	je	.L16
	cmpl	%r14d, %ebp
	jg	.L16
	je	.L27
	movl	$0, %eax
	cmovl	%r14d, %ebp
	cmovl	%eax, %ebx
.L11:
	movl	(%rsp), %edx
	movslq	%ebx, %rax
	leaq	pt(%rip), %rcx
	movl	$1, %r14d
	movl	%edx, (%rcx,%rax,4)
.L9:
	cmpl	4(%rsp), %r15d
	je	.L28
.L12:
	movq	%r13, %rdi
	addq	$11, %r13
	movl	%r15d, (%rsp)
	addl	$1, %r15d
	movq	%r13, %rsi
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L8
	addl	$1, %r14d
	cmpl	4(%rsp), %r15d
	jne	.L12
.L28:
	xorl	%r13d, %r13d
	leaq	pt(%rip), %r14
	cmpl	$1, %ebp
	je	.L29
	.p2align 4,,10
	.p2align 3
.L13:
	movslq	(%r14,%r13,4), %rax
	addq	$1, %r13
	leaq	(%rax,%rax,4), %rdx
	leaq	(%rax,%rdx,2), %rdi
	addq	%r12, %rdi
	call	puts@PLT
	cmpl	%r13d, %ebx
	jge	.L13
.L6:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L30
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L16:
	.cfi_restore_state
	movl	$1, %r14d
	jmp	.L9
	.p2align 4,,10
	.p2align 3
.L27:
	addl	$1, %ebx
	jmp	.L11
.L26:
	movslq	%ebx, %rdi
	imulq	$11, %rdi, %rdi
	addq	%r12, %rdi
	call	puts@PLT
	jmp	.L6
.L29:
	xorl	%ebx, %ebx
	.p2align 4,,10
	.p2align 3
.L14:
	movq	8(%rsp), %r15
	addl	$1, %ebx
	movq	%r15, %rdi
	call	puts@PLT
	movq	%r15, %rax
	addq	$11, %rax
	movq	%rax, 8(%rsp)
	cmpl	%ebx, 20(%rsp)
	jg	.L14
	jmp	.L6
.L30:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.size	main, .-main
	.text
	.p2align 4
	.globl	s_dsort
	.type	s_dsort, @function
s_dsort:
.LFB53:
	.cfi_startproc
	endbr64
	movl	(%rsi), %eax
	subl	(%rdi), %eax
	ret
	.cfi_endproc
.LFE53:
	.size	s_dsort, .-s_dsort
	.p2align 4
	.globl	s_asort
	.type	s_asort, @function
s_asort:
.LFB54:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE54:
	.size	s_asort, .-s_asort
	.section	.rodata.str1.1
.LC2:
	.string	"%ld %ld"
	.text
	.p2align 4
	.globl	l_cins2
	.type	l_cins2, @function
l_cins2:
.LFB55:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L38
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leal	-1(%rdi), %eax
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	8(%rsi,%rax,8), %r13
	leaq	.LC2(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	movq	%rdx, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rsi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	.p2align 4,,10
	.p2align 3
.L35:
	movq	%rbp, %rdx
	movq	%rbx, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$8, %rbx
	addq	$8, %rbp
	cmpq	%r13, %rbx
	jne	.L35
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L38:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE55:
	.size	l_cins2, .-l_cins2
	.p2align 4
	.globl	i_cins
	.type	i_cins, @function
i_cins:
.LFB56:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L46
	leal	-1(%rdi), %eax
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	leaq	4(%rsi,%rax,4), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	.p2align 4,,10
	.p2align 3
.L43:
	movq	%rbx, %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	addq	$4, %rbx
	call	__isoc99_scanf@PLT
	cmpq	%r12, %rbx
	jne	.L43
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L46:
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE56:
	.size	i_cins, .-i_cins
	.p2align 4
	.globl	_gcd
	.type	_gcd, @function
_gcd:
.LFB57:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	cmpl	%esi, %edi
	jge	.L50
	movl	%esi, %eax
	movl	%edi, %esi
.L50:
	cltd
	idivl	%esi
	testl	%edx, %edx
	je	.L53
	.p2align 4,,10
	.p2align 3
.L52:
	movl	%esi, %eax
	movl	%edx, %r8d
	cltd
	movl	%r8d, %esi
	idivl	%r8d
	testl	%edx, %edx
	jne	.L52
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L53:
	movl	%esi, %r8d
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE57:
	.size	_gcd, .-_gcd
	.local	pt
	.comm	pt,800000,32
	.local	S
	.comm	S,2200011,32
	.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>
#include <math.h>
#include <float.h>


#define i_cin(X) scanf("%d", &X)
#define i_cin2(X,Y) scanf("%d %d",&X,&Y)
#define i_cin3(X,Y,Z) scanf("%d %d %d",&X,&Y,&Z)
#define l_cin(X) scanf("%ld",&X)
#define f_cin(X) scanf("%f",&X)
#define l_cin2(X,Y) scanf("%ld %ld",&X,&Y)
#define s_cin(X) scanf("%s",&X)

#define  i_cout(X) printf("%d\n",X)
#define  f_cout(X) printf("%g\n",X)
#define  i_cout2(X,Y) printf("%d %d\n",X,Y)
#define  l_cout(X) printf("%ld\n",X)
#define  s_cout(X) printf("%s\n",X)
#define  ll_cout(X) printf("%lld\n",X)

typedef long long  ll;
#define rept(x, s, n) for (int x = s; x < n; x++)

#define Yes_RTN s_cout("Yes");return 0
#define No_RTN  s_cout("No");return 0
#define YES_RTN s_cout("YES");return 0
#define NO_RTN  s_cout("NO");return 0


int i_cins(int n, int* A);
int l_cins2(int n, long* A,long* B);
int s_dsort(const void* a, const void* b);
int s_asort(const void* a, const void* b);

int  _gcd(int a, int b);

int s_asorts(const void* a, const void* b);

//++++++++++++++++POLL

static char S[200001][11];
static int  pt[200000];


int main(void) {
	int N, i;
	int cnt = 1, j = 0, rc, max = 1;

	i_cin(N);
	for(i=0;i<N;i++)
        s_cin(S[i]);
	if (N == 1)
	{s_cout(S[i]); return 0;}

	//昇順に並べる

	qsort((void*)S, N, sizeof(S[0]), s_asorts);

	// 候補者リストを作る
	pt[0] = 0;

	for (i = 0; i < N; i++) {

		rc = strcmp(S[i], S[i + 1]);
		if (!rc)       { cnt++;   continue; }  //同じならカウント
		if (cnt == 1 || cnt < max) {
			cnt = 1; continue;      //違う票でカウント１か
		}                           //票が少なければ
	
		if (cnt == max) j++;   //同じ得票数なら
		if( cnt >  max) { max = cnt; j = 0; }  //票が多ければ
		pt[j] = i;
		cnt = 1;
	}
	if (max == 1) {
		for (i = 0; i < N; i++)
			s_cout(S[i]);
		return 0;
	}

	for (i = 0; i < j+1; i++)
		s_cout(S[pt[i]]);

	return 0;
}




//昇順
int s_asorts(const void* a, const void* b) {
	return(strcmp((char*)a, (char*)b));
}
	
int s_dsort(const void* a, const void* b) {
	return(*(int*)b - *(int*)a);
}
int s_asort(const void* a, const void* b) {
	return(*(int*)a -*(int*)b);
}
int l_cins2(int n, long* a, long* b) {
	int i;
	rept(i, 0, n) {
		l_cin2(*(a + i), *(b + i));
	}
	return 0;
}
int i_cins(int n, int* a) {
	int i;
	for (i = 0; i < n; i++) {
		i_cin(*(a + i));
	}

	return 0;
}

int _gcd(int a, int b) {
	int r, tmp;
	if (a < b) { tmp = a; a = b; b = tmp; }
	r = a % b;
	while (r) {
		if (!r) break;
		a = b; b = r;
		r = a % b;
	}
	return(b);
}


8
buffalo
buffalo
buffalo
buffalo
olaffub
buffalo
buffalo
buffalo
 7
beat
veu
beet
bed
vet
bet
beet
 7
bass
bass
kick
kick
bats
kick
kick
 4
ushi
taou
nichia
kun
 4
ihsu
taou
nichia
kun
 7
beat
veu
beet
bed
vte
bet
teeb
 4
ihsu
taou
michia
kun
 7
beat
veu
bfet
bed
vte
bet
teeb
 4
ihsu
taou
michia
nuk
 7
beat
veu
bfet
bed
vte
cet
teeb

buffalo
 beet
 kick
 kun
nichia
taou
ushi
 ihsu
kun
nichia
taou
 beat
bed
beet
bet
teeb
veu
vte
 ihsu
kun
michia
taou
 beat
bed
bet
bfet
teeb
veu
vte
 ihsu
michia
nuk
taou
 beat
bed
bfet
cet
teeb
veu
vte

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>
#include <math.h>
#include <float.h>


#define i_cin(X) scanf("%d", &X)
#define i_cin2(X,Y) scanf("%d %d",&X,&Y)
#define i_cin3(X,Y,Z) scanf("%d %d %d",&X,&Y,&Z)
#define l_cin(X) scanf("%ld",&X)
#define f_cin(X) scanf("%f",&X)
#define l_cin2(X,Y) scanf("%ld %ld",&X,&Y)
#define s_cin(X) scanf("%s",&X)

#define  i_cout(X) printf("%d\n",X)
#define  f_cout(X) printf("%g\n",X)
#define  i_cout2(X,Y) printf("%d %d\n",X,Y)
#define  l_cout(X) printf("%ld\n",X)
#define  s_cout(X) printf("%s\n",X)
#define  ll_cout(X) printf("%lld\n",X)

typedef long long  ll;
#define rept(x, s, n) for (int x = s; x < n; x++)

#define Yes_RTN s_cout("Yes");return 0
#define No_RTN  s_cout("No");return 0
#define YES_RTN s_cout("YES");return 0
#define NO_RTN  s_cout("NO");return 0


int i_cins(int n, int* A);
int l_cins2(int n, long* A,long* B);
int s_dsort(const void* a, const void* b);
int s_asort(const void* a, const void* b);

int  _gcd(int a, int b);

int s_asorts(const void* a, const void* b);

//++++++++++++++++POLL

static char S[200001][11];
static int  pt[200000];


int main(void) {
	int N, i;
	int cnt = 1, j = 0, rc, max = 1;

	i_cin(N);
	for(i=0;i<N;i++)
        s_cin(S[i]);
	if (N == 1)
	{s_cout(S[i]); return 0;}

	//昇順に並べる

	qsort((void*)S, N, sizeof(S[0]), s_asorts);

	// 候補者リストを作る
	pt[0] = 0;

	for (i = 0; i < N; i++) {

		rc = strcmp(S[i], S[i + 1]);
		if (!rc)       { cnt++;   continue; }  //同じならカウント
		if (cnt == 1 || cnt < max) {
			cnt = 1; continue;      //違う票でカウント１か
		}                           //票が少なければ
	
		if (cnt == max) j++;   //同じ得票数なら
		if( cnt >  max) { max = cnt; j = 0; }  //票が多ければ
		pt[j] = i;
		cnt = 1;
	}
	if (max == 1) {
		for (i = 0; i < N; i++)
			s_cout(S[i]);
		return 0;
	}

	for (i = 0; i < j+1; i++)
		s_cout(S[pt[i]]);

	return 0;
}




//昇順
int s_asorts(const void* a, const void* b) {
	return(strcmp((char*)a, (char*)b));
}
	
int s_dsort(const void* a, const void* b) {
	return(*(int*)b - *(int*)a);
}
int s_asort(const void* a, const void* b) {
	return(*(int*)a -*(int*)b);
}
int l_cins2(int n, long* a, long* b) {
	int i;
	rept(i, 0, n) {
		l_cin2(*(a + i), *(b + i));
	}
	return 0;
}
int i_cins(int n, int* a) {
	int i;
	for (i = 0; i < n; i++) {
		i_cin(*(a + i));
	}

	return 0;
}

int _gcd(int a, int b) {
	int r, tmp;
	if (a < b) { tmp = a; a = b; b = tmp; }
	r = a % b;
	while (r) {
		if (!r) break;
		a = b; b = r;
		r = a % b;
	}
	return(b);
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.local	S
	.comm	S,2200011,32
	.local	pt
	.comm	pt,800000,32
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$1, -24(%rbp)
	movl	$0, -20(%rbp)
	movl	$1, -16(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -28(%rbp)
	jmp	.L2
.L3:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -28(%rbp)
.L2:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L3
	movl	-32(%rbp), %eax
	cmpl	$1, %eax
	jne	.L4
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L19
.L4:
	movl	-32(%rbp), %eax
	cltq
	leaq	s_asorts(%rip), %rdx
	movq	%rdx, %rcx
	movl	$11, %edx
	movq	%rax, %rsi
	leaq	S(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, pt(%rip)
	movl	$0, -28(%rbp)
	jmp	.L6
.L13:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	leaq	(%rax,%rdx), %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	movl	%eax, -12(%rbp)
	cmpl	$0, -12(%rbp)
	jne	.L7
	addl	$1, -24(%rbp)
	jmp	.L8
.L7:
	cmpl	$1, -24(%rbp)
	je	.L9
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jge	.L10
.L9:
	movl	$1, -24(%rbp)
	jmp	.L8
.L10:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jne	.L11
	addl	$1, -20(%rbp)
.L11:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jle	.L12
	movl	-24(%rbp), %eax
	movl	%eax, -16(%rbp)
	movl	$0, -20(%rbp)
.L12:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	pt(%rip), %rdx
	movl	-28(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	$1, -24(%rbp)
.L8:
	addl	$1, -28(%rbp)
.L6:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L13
	cmpl	$1, -16(%rbp)
	jne	.L14
	movl	$0, -28(%rbp)
	jmp	.L15
.L16:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L15:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L16
	movl	$0, %eax
	jmp	.L19
.L14:
	movl	$0, -28(%rbp)
	jmp	.L17
.L18:
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	pt(%rip), %rax
	movl	(%rdx,%rax), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L17:
	movl	-20(%rbp), %eax
	cmpl	-28(%rbp), %eax
	jge	.L18
	movl	$0, %eax
.L19:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	s_asorts
	.type	s_asorts, @function
s_asorts:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	s_asorts, .-s_asorts
	.globl	s_dsort
	.type	s_dsort, @function
s_dsort:
.LFB8:
	.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	-16(%rbp), %rax
	movl	(%rax), %edx
	movq	-8(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	s_dsort, .-s_dsort
	.globl	s_asort
	.type	s_asort, @function
s_asort:
.LFB9:
	.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
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	s_asort, .-s_asort
	.section	.rodata
.LC2:
	.string	"%ld %ld"
	.text
	.globl	l_cins2
	.type	l_cins2, @function
l_cins2:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	%rdx, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L28
.L29:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-40(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L29
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	l_cins2, .-l_cins2
	.globl	i_cins
	.type	i_cins, @function
i_cins:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L32
.L33:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L32:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L33
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	i_cins, .-i_cins
	.globl	_gcd
	.type	_gcd, @function
_gcd:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jge	.L36
	movl	-20(%rbp), %eax
	movl	%eax, -4(%rbp)
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-4(%rbp), %eax
	movl	%eax, -24(%rbp)
.L36:
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
	jmp	.L37
.L40:
	cmpl	$0, -8(%rbp)
	je	.L42
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-8(%rbp), %eax
	movl	%eax, -24(%rbp)
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
.L37:
	cmpl	$0, -8(%rbp)
	jne	.L40
	jmp	.L39
.L42:
	nop
.L39:
	movl	-24(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	_gcd, .-_gcd
	.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
	.local	S
	.comm	S,2200011,32
	.local	pt
	.comm	pt,800000,32
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$1, -24(%rbp)
	movl	$0, -20(%rbp)
	movl	$1, -16(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -28(%rbp)
	jmp	.L2
.L3:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -28(%rbp)
.L2:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L3
	movl	-32(%rbp), %eax
	cmpl	$1, %eax
	jne	.L4
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L19
.L4:
	movl	-32(%rbp), %eax
	cltq
	leaq	s_asorts(%rip), %rdx
	movq	%rdx, %rcx
	movl	$11, %edx
	movq	%rax, %rsi
	leaq	S(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	movl	$0, pt(%rip)
	movl	$0, -28(%rbp)
	jmp	.L6
.L13:
	movl	-28(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	leaq	(%rax,%rdx), %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	movl	%eax, -12(%rbp)
	cmpl	$0, -12(%rbp)
	jne	.L7
	addl	$1, -24(%rbp)
	jmp	.L8
.L7:
	cmpl	$1, -24(%rbp)
	je	.L9
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jge	.L10
.L9:
	movl	$1, -24(%rbp)
	jmp	.L8
.L10:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jne	.L11
	addl	$1, -20(%rbp)
.L11:
	movl	-24(%rbp), %eax
	cmpl	-16(%rbp), %eax
	jle	.L12
	movl	-24(%rbp), %eax
	movl	%eax, -16(%rbp)
	movl	$0, -20(%rbp)
.L12:
	movl	-20(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	pt(%rip), %rdx
	movl	-28(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	$1, -24(%rbp)
.L8:
	addl	$1, -28(%rbp)
.L6:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L13
	cmpl	$1, -16(%rbp)
	jne	.L14
	movl	$0, -28(%rbp)
	jmp	.L15
.L16:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L15:
	movl	-32(%rbp), %eax
	cmpl	%eax, -28(%rbp)
	jl	.L16
	movl	$0, %eax
	jmp	.L19
.L14:
	movl	$0, -28(%rbp)
	jmp	.L17
.L18:
	movl	-28(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	pt(%rip), %rax
	movl	(%rdx,%rax), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	leaq	S(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	puts@PLT
	addl	$1, -28(%rbp)
.L17:
	movl	-20(%rbp), %eax
	cmpl	-28(%rbp), %eax
	jge	.L18
	movl	$0, %eax
.L19:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	s_asorts
	.type	s_asorts, @function
s_asorts:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcmp@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	s_asorts, .-s_asorts
	.globl	s_dsort
	.type	s_dsort, @function
s_dsort:
.LFB8:
	.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	-16(%rbp), %rax
	movl	(%rax), %edx
	movq	-8(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	s_dsort, .-s_dsort
	.globl	s_asort
	.type	s_asort, @function
s_asort:
.LFB9:
	.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
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	s_asort, .-s_asort
	.section	.rodata
.LC2:
	.string	"%ld %ld"
	.text
	.globl	l_cins2
	.type	l_cins2, @function
l_cins2:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	%rdx, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L28
.L29:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-40(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L29
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	l_cins2, .-l_cins2
	.globl	i_cins
	.type	i_cins, @function
i_cins:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L32
.L33:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L32:
	movl	-4(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jl	.L33
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	i_cins, .-i_cins
	.globl	_gcd
	.type	_gcd, @function
_gcd:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jge	.L36
	movl	-20(%rbp), %eax
	movl	%eax, -4(%rbp)
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-4(%rbp), %eax
	movl	%eax, -24(%rbp)
.L36:
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
	jmp	.L37
.L40:
	cmpl	$0, -8(%rbp)
	je	.L42
	movl	-24(%rbp), %eax
	movl	%eax, -20(%rbp)
	movl	-8(%rbp), %eax
	movl	%eax, -24(%rbp)
	movl	-20(%rbp), %eax
	cltd
	idivl	-24(%rbp)
	movl	%edx, -8(%rbp)
.L37:
	cmpl	$0, -8(%rbp)
	jne	.L40
	jmp	.L39
.L42:
	nop
.L39:
	movl	-24(%rbp), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	_gcd, .-_gcd
	.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:
