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<string.h>

int main(void)
{
	int n,i,t;
	char s[10000];

	scanf("%d",&n);
	scanf("%s",s);

	t=strlen(s);
	
	for(i=0;i<t;i++)
		s[i]='A'+(s[i]-'A'+n)%26;

		printf("%s",s);

		return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$1840, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-10028(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -10020(%rbp)
	movl	$0, -10024(%rbp)
	jmp	.L2
.L3:
	movl	-10024(%rbp), %eax
	cltq
	movzbl	-10016(%rbp,%rax), %eax
	movsbl	%al, %eax
	leal	-65(%rax), %edx
	movl	-10028(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	imulq	$1321528399, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$3, %edx
	movl	%eax, %ecx
	sarl	$31, %ecx
	subl	%ecx, %edx
	imull	$26, %edx, %ecx
	subl	%ecx, %eax
	movl	%eax, %edx
	movl	%edx, %eax
	addl	$65, %eax
	movl	%eax, %edx
	movl	-10024(%rbp), %eax
	cltq
	movb	%dl, -10016(%rbp,%rax)
	addl	$1, -10024(%rbp)
.L2:
	movl	-10024(%rbp), %eax
	cmpl	-10020(%rbp), %eax
	jl	.L3
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.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
	.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:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	subq	$4096, %rsp
	.cfi_def_cfa_offset 4120
	orq	$0, (%rsp)
	subq	$4096, %rsp
	.cfi_def_cfa_offset 8216
	orq	$0, (%rsp)
	subq	$1848, %rsp
	.cfi_def_cfa_offset 10064
	leaq	.LC0(%rip), %rdi
	leaq	.LC1(%rip), %rbp
	movq	%fs:40, %rax
	movq	%rax, 10024(%rsp)
	xorl	%eax, %eax
	leaq	12(%rsp), %rsi
	leaq	16(%rsp), %r12
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	xorl	%eax, %eax
	movq	%r12, %rsi
	call	__isoc99_scanf@PLT
	movq	%r12, %rdi
	call	strlen@PLT
	testq	%rax, %rax
	je	.L2
	movq	%rax, %rcx
	leal	-1(%rax), %eax
	movl	12(%rsp), %edi
	cmpl	$14, %eax
	jbe	.L7
	movd	%edi, %xmm6
	movl	%ecx, %edx
	pxor	%xmm13, %xmm13
	movq	%r12, %rax
	movdqa	.LC3(%rip), %xmm5
	pshufd	$0, %xmm6, %xmm9
	pxor	%xmm6, %xmm6
	shrl	$4, %edx
	movdqa	%xmm6, %xmm7
	subl	$1, %edx
	movdqa	.LC2(%rip), %xmm12
	movdqa	.LC4(%rip), %xmm11
	pcmpgtd	%xmm5, %xmm7
	salq	$4, %rdx
	pxor	%xmm10, %xmm10
	leaq	32(%rsp,%rdx), %rdx
	.p2align 4,,10
	.p2align 3
.L4:
	movdqa	(%rax), %xmm1
	movdqa	%xmm13, %xmm0
	movdqa	%xmm10, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm7, %xmm15
	addq	$16, %rax
	pcmpgtb	%xmm1, %xmm0
	movdqa	%xmm1, %xmm2
	punpcklbw	%xmm0, %xmm2
	punpckhbw	%xmm0, %xmm1
	paddw	%xmm12, %xmm2
	paddw	%xmm12, %xmm1
	pcmpgtw	%xmm2, %xmm3
	movdqa	%xmm2, %xmm0
	movdqa	%xmm1, %xmm4
	punpcklwd	%xmm3, %xmm0
	punpckhwd	%xmm3, %xmm2
	movdqa	%xmm10, %xmm3
	pcmpgtw	%xmm1, %xmm3
	paddd	%xmm9, %xmm0
	paddd	%xmm9, %xmm2
	movdqa	%xmm0, %xmm8
	punpckldq	%xmm0, %xmm8
	punpcklwd	%xmm3, %xmm4
	pmuludq	%xmm8, %xmm14
	punpckhwd	%xmm3, %xmm1
	movdqa	%xmm6, %xmm3
	paddd	%xmm9, %xmm4
	paddd	%xmm9, %xmm1
	pcmpgtd	%xmm8, %xmm3
	pmuludq	%xmm5, %xmm8
	pmuludq	%xmm5, %xmm3
	paddq	%xmm14, %xmm3
	movdqa	%xmm6, %xmm14
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm8
	movdqa	%xmm0, %xmm3
	punpckhdq	%xmm0, %xmm3
	pcmpgtd	%xmm3, %xmm14
	pmuludq	%xmm3, %xmm15
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm14
	paddq	%xmm15, %xmm14
	movdqa	%xmm7, %xmm15
	psllq	$32, %xmm14
	paddq	%xmm14, %xmm3
	movdqa	%xmm0, %xmm14
	shufps	$221, %xmm3, %xmm8
	movdqa	%xmm8, %xmm3
	psrad	$31, %xmm14
	psrad	$3, %xmm3
	psubd	%xmm14, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm3, %xmm8
	pslld	$1, %xmm3
	paddd	%xmm8, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm8, %xmm3
	movdqa	%xmm2, %xmm8
	pslld	$1, %xmm3
	punpckldq	%xmm2, %xmm8
	psubd	%xmm3, %xmm0
	pmuludq	%xmm8, %xmm14
	movdqa	%xmm6, %xmm3
	pcmpgtd	%xmm8, %xmm3
	pmuludq	%xmm5, %xmm8
	pmuludq	%xmm5, %xmm3
	paddq	%xmm14, %xmm3
	movdqa	%xmm6, %xmm14
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm8
	movdqa	%xmm2, %xmm3
	punpckhdq	%xmm2, %xmm3
	pcmpgtd	%xmm3, %xmm14
	pmuludq	%xmm3, %xmm15
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm14
	paddq	%xmm15, %xmm14
	psllq	$32, %xmm14
	paddq	%xmm14, %xmm3
	movdqa	%xmm2, %xmm14
	shufps	$221, %xmm3, %xmm8
	movdqa	%xmm8, %xmm3
	psrad	$31, %xmm14
	psrad	$3, %xmm3
	psubd	%xmm14, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm3, %xmm8
	pslld	$1, %xmm3
	paddd	%xmm8, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm8, %xmm3
	movdqa	%xmm7, %xmm8
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm2
	movdqa	%xmm0, %xmm3
	punpcklwd	%xmm2, %xmm0
	punpckhwd	%xmm2, %xmm3
	movdqa	%xmm0, %xmm2
	punpcklwd	%xmm3, %xmm0
	punpckhwd	%xmm3, %xmm2
	movdqa	%xmm6, %xmm3
	punpcklwd	%xmm2, %xmm0
	movdqa	%xmm4, %xmm2
	punpckldq	%xmm4, %xmm2
	pand	%xmm11, %xmm0
	pcmpgtd	%xmm2, %xmm3
	pmuludq	%xmm2, %xmm8
	pmuludq	%xmm5, %xmm2
	pmuludq	%xmm5, %xmm3
	paddq	%xmm8, %xmm3
	movdqa	%xmm6, %xmm8
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm2
	movdqa	%xmm4, %xmm3
	punpckhdq	%xmm4, %xmm3
	pcmpgtd	%xmm3, %xmm8
	pmuludq	%xmm3, %xmm14
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm8
	paddq	%xmm14, %xmm8
	movdqa	%xmm7, %xmm14
	psllq	$32, %xmm8
	paddq	%xmm8, %xmm3
	movdqa	%xmm7, %xmm8
	shufps	$221, %xmm3, %xmm2
	movdqa	%xmm4, %xmm3
	psrad	$3, %xmm2
	psrad	$31, %xmm3
	psubd	%xmm3, %xmm2
	movdqa	%xmm2, %xmm3
	pslld	$1, %xmm3
	paddd	%xmm2, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm2, %xmm3
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm4
	movdqa	%xmm6, %xmm3
	movdqa	%xmm4, %xmm2
	movdqa	%xmm1, %xmm4
	punpckldq	%xmm1, %xmm4
	pcmpgtd	%xmm4, %xmm3
	pmuludq	%xmm4, %xmm8
	pmuludq	%xmm5, %xmm4
	pmuludq	%xmm5, %xmm3
	paddq	%xmm8, %xmm3
	movdqa	%xmm6, %xmm8
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm4
	movdqa	%xmm1, %xmm3
	punpckhdq	%xmm1, %xmm3
	pcmpgtd	%xmm3, %xmm8
	pmuludq	%xmm3, %xmm14
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm8
	paddq	%xmm14, %xmm8
	psllq	$32, %xmm8
	paddq	%xmm8, %xmm3
	shufps	$221, %xmm3, %xmm4
	movdqa	%xmm1, %xmm3
	psrad	$3, %xmm4
	psrad	$31, %xmm3
	psubd	%xmm3, %xmm4
	movdqa	%xmm4, %xmm3
	pslld	$1, %xmm3
	paddd	%xmm4, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm4, %xmm3
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm1
	movdqa	%xmm2, %xmm3
	punpcklwd	%xmm1, %xmm2
	punpckhwd	%xmm1, %xmm3
	movdqa	%xmm2, %xmm1
	punpcklwd	%xmm3, %xmm2
	punpckhwd	%xmm3, %xmm1
	punpcklwd	%xmm1, %xmm2
	pand	%xmm11, %xmm2
	packuswb	%xmm2, %xmm0
	paddb	.LC5(%rip), %xmm0
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L4
	movl	%ecx, %esi
	andl	$-16, %esi
	testb	$15, %cl
	je	.L2
.L3:
	movslq	%esi, %r8
	movsbl	16(%rsp,%r8), %eax
	leal	-65(%rdi,%rax), %edx
	movslq	%edx, %rax
	movl	%edx, %r9d
	imulq	$1321528399, %rax, %rax
	sarl	$31, %r9d
	sarq	$35, %rax
	subl	%r9d, %eax
	imull	$26, %eax, %eax
	subl	%eax, %edx
	leal	1(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r8)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r8
	movsbl	16(%rsp,%r8), %eax
	leal	-65(%rdi,%rax), %edx
	movslq	%edx, %rax
	movl	%edx, %r9d
	imulq	$1321528399, %rax, %rax
	sarl	$31, %r9d
	sarq	$35, %rax
	subl	%r9d, %eax
	imull	$26, %eax, %eax
	subl	%eax, %edx
	leal	2(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r8)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movl	$26, %r8d
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	3(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	4(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	5(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	6(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	7(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	8(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	9(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	10(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	11(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	12(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	13(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	addl	$14, %esi
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%esi, %ecx
	jle	.L2
	movslq	%esi, %rsi
	movsbl	16(%rsp,%rsi), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	addl	$65, %edx
	movb	%dl, 16(%rsp,%rsi)
	.p2align 4,,10
	.p2align 3
.L2:
	xorl	%eax, %eax
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	10024(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L14
	addq	$10040, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L7:
	.cfi_restore_state
	xorl	%esi, %esi
	jmp	.L3
.L14:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE35:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC2:
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.align 16
.LC3:
	.long	1321528399
	.long	1321528399
	.long	1321528399
	.long	1321528399
	.align 16
.LC4:
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.align 16
.LC5:
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.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
	.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:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	subq	$4096, %rsp
	.cfi_def_cfa_offset 4120
	orq	$0, (%rsp)
	subq	$4096, %rsp
	.cfi_def_cfa_offset 8216
	orq	$0, (%rsp)
	subq	$1848, %rsp
	.cfi_def_cfa_offset 10064
	leaq	.LC0(%rip), %rdi
	leaq	.LC1(%rip), %rbp
	movq	%fs:40, %rax
	movq	%rax, 10024(%rsp)
	xorl	%eax, %eax
	leaq	12(%rsp), %rsi
	leaq	16(%rsp), %r12
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	xorl	%eax, %eax
	movq	%r12, %rsi
	call	__isoc99_scanf@PLT
	movq	%r12, %rdi
	call	strlen@PLT
	testq	%rax, %rax
	je	.L2
	movq	%rax, %rcx
	leal	-1(%rax), %eax
	movl	12(%rsp), %edi
	cmpl	$14, %eax
	jbe	.L7
	movd	%edi, %xmm6
	movl	%ecx, %edx
	pxor	%xmm13, %xmm13
	movq	%r12, %rax
	movdqa	.LC3(%rip), %xmm5
	pshufd	$0, %xmm6, %xmm9
	pxor	%xmm6, %xmm6
	shrl	$4, %edx
	movdqa	%xmm6, %xmm7
	subl	$1, %edx
	movdqa	.LC2(%rip), %xmm12
	movdqa	.LC4(%rip), %xmm11
	pcmpgtd	%xmm5, %xmm7
	salq	$4, %rdx
	pxor	%xmm10, %xmm10
	leaq	32(%rsp,%rdx), %rdx
	.p2align 4,,10
	.p2align 3
.L4:
	movdqa	(%rax), %xmm1
	movdqa	%xmm13, %xmm0
	movdqa	%xmm10, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm7, %xmm15
	addq	$16, %rax
	pcmpgtb	%xmm1, %xmm0
	movdqa	%xmm1, %xmm2
	punpcklbw	%xmm0, %xmm2
	punpckhbw	%xmm0, %xmm1
	paddw	%xmm12, %xmm2
	paddw	%xmm12, %xmm1
	pcmpgtw	%xmm2, %xmm3
	movdqa	%xmm2, %xmm0
	movdqa	%xmm1, %xmm4
	punpcklwd	%xmm3, %xmm0
	punpckhwd	%xmm3, %xmm2
	movdqa	%xmm10, %xmm3
	pcmpgtw	%xmm1, %xmm3
	paddd	%xmm9, %xmm0
	paddd	%xmm9, %xmm2
	movdqa	%xmm0, %xmm8
	punpckldq	%xmm0, %xmm8
	punpcklwd	%xmm3, %xmm4
	pmuludq	%xmm8, %xmm14
	punpckhwd	%xmm3, %xmm1
	movdqa	%xmm6, %xmm3
	paddd	%xmm9, %xmm4
	paddd	%xmm9, %xmm1
	pcmpgtd	%xmm8, %xmm3
	pmuludq	%xmm5, %xmm8
	pmuludq	%xmm5, %xmm3
	paddq	%xmm14, %xmm3
	movdqa	%xmm6, %xmm14
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm8
	movdqa	%xmm0, %xmm3
	punpckhdq	%xmm0, %xmm3
	pcmpgtd	%xmm3, %xmm14
	pmuludq	%xmm3, %xmm15
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm14
	paddq	%xmm15, %xmm14
	movdqa	%xmm7, %xmm15
	psllq	$32, %xmm14
	paddq	%xmm14, %xmm3
	movdqa	%xmm0, %xmm14
	shufps	$221, %xmm3, %xmm8
	movdqa	%xmm8, %xmm3
	psrad	$31, %xmm14
	psrad	$3, %xmm3
	psubd	%xmm14, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm3, %xmm8
	pslld	$1, %xmm3
	paddd	%xmm8, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm8, %xmm3
	movdqa	%xmm2, %xmm8
	pslld	$1, %xmm3
	punpckldq	%xmm2, %xmm8
	psubd	%xmm3, %xmm0
	pmuludq	%xmm8, %xmm14
	movdqa	%xmm6, %xmm3
	pcmpgtd	%xmm8, %xmm3
	pmuludq	%xmm5, %xmm8
	pmuludq	%xmm5, %xmm3
	paddq	%xmm14, %xmm3
	movdqa	%xmm6, %xmm14
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm8
	movdqa	%xmm2, %xmm3
	punpckhdq	%xmm2, %xmm3
	pcmpgtd	%xmm3, %xmm14
	pmuludq	%xmm3, %xmm15
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm14
	paddq	%xmm15, %xmm14
	psllq	$32, %xmm14
	paddq	%xmm14, %xmm3
	movdqa	%xmm2, %xmm14
	shufps	$221, %xmm3, %xmm8
	movdqa	%xmm8, %xmm3
	psrad	$31, %xmm14
	psrad	$3, %xmm3
	psubd	%xmm14, %xmm3
	movdqa	%xmm7, %xmm14
	movdqa	%xmm3, %xmm8
	pslld	$1, %xmm3
	paddd	%xmm8, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm8, %xmm3
	movdqa	%xmm7, %xmm8
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm2
	movdqa	%xmm0, %xmm3
	punpcklwd	%xmm2, %xmm0
	punpckhwd	%xmm2, %xmm3
	movdqa	%xmm0, %xmm2
	punpcklwd	%xmm3, %xmm0
	punpckhwd	%xmm3, %xmm2
	movdqa	%xmm6, %xmm3
	punpcklwd	%xmm2, %xmm0
	movdqa	%xmm4, %xmm2
	punpckldq	%xmm4, %xmm2
	pand	%xmm11, %xmm0
	pcmpgtd	%xmm2, %xmm3
	pmuludq	%xmm2, %xmm8
	pmuludq	%xmm5, %xmm2
	pmuludq	%xmm5, %xmm3
	paddq	%xmm8, %xmm3
	movdqa	%xmm6, %xmm8
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm2
	movdqa	%xmm4, %xmm3
	punpckhdq	%xmm4, %xmm3
	pcmpgtd	%xmm3, %xmm8
	pmuludq	%xmm3, %xmm14
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm8
	paddq	%xmm14, %xmm8
	movdqa	%xmm7, %xmm14
	psllq	$32, %xmm8
	paddq	%xmm8, %xmm3
	movdqa	%xmm7, %xmm8
	shufps	$221, %xmm3, %xmm2
	movdqa	%xmm4, %xmm3
	psrad	$3, %xmm2
	psrad	$31, %xmm3
	psubd	%xmm3, %xmm2
	movdqa	%xmm2, %xmm3
	pslld	$1, %xmm3
	paddd	%xmm2, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm2, %xmm3
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm4
	movdqa	%xmm6, %xmm3
	movdqa	%xmm4, %xmm2
	movdqa	%xmm1, %xmm4
	punpckldq	%xmm1, %xmm4
	pcmpgtd	%xmm4, %xmm3
	pmuludq	%xmm4, %xmm8
	pmuludq	%xmm5, %xmm4
	pmuludq	%xmm5, %xmm3
	paddq	%xmm8, %xmm3
	movdqa	%xmm6, %xmm8
	psllq	$32, %xmm3
	paddq	%xmm3, %xmm4
	movdqa	%xmm1, %xmm3
	punpckhdq	%xmm1, %xmm3
	pcmpgtd	%xmm3, %xmm8
	pmuludq	%xmm3, %xmm14
	pmuludq	%xmm5, %xmm3
	pmuludq	%xmm5, %xmm8
	paddq	%xmm14, %xmm8
	psllq	$32, %xmm8
	paddq	%xmm8, %xmm3
	shufps	$221, %xmm3, %xmm4
	movdqa	%xmm1, %xmm3
	psrad	$3, %xmm4
	psrad	$31, %xmm3
	psubd	%xmm3, %xmm4
	movdqa	%xmm4, %xmm3
	pslld	$1, %xmm3
	paddd	%xmm4, %xmm3
	pslld	$2, %xmm3
	paddd	%xmm4, %xmm3
	pslld	$1, %xmm3
	psubd	%xmm3, %xmm1
	movdqa	%xmm2, %xmm3
	punpcklwd	%xmm1, %xmm2
	punpckhwd	%xmm1, %xmm3
	movdqa	%xmm2, %xmm1
	punpcklwd	%xmm3, %xmm2
	punpckhwd	%xmm3, %xmm1
	punpcklwd	%xmm1, %xmm2
	pand	%xmm11, %xmm2
	packuswb	%xmm2, %xmm0
	paddb	.LC5(%rip), %xmm0
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L4
	movl	%ecx, %esi
	andl	$-16, %esi
	testb	$15, %cl
	je	.L2
.L3:
	movslq	%esi, %r8
	movsbl	16(%rsp,%r8), %eax
	leal	-65(%rdi,%rax), %edx
	movslq	%edx, %rax
	movl	%edx, %r9d
	imulq	$1321528399, %rax, %rax
	sarl	$31, %r9d
	sarq	$35, %rax
	subl	%r9d, %eax
	imull	$26, %eax, %eax
	subl	%eax, %edx
	leal	1(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r8)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r8
	movsbl	16(%rsp,%r8), %eax
	leal	-65(%rdi,%rax), %edx
	movslq	%edx, %rax
	movl	%edx, %r9d
	imulq	$1321528399, %rax, %rax
	sarl	$31, %r9d
	sarq	$35, %rax
	subl	%r9d, %eax
	imull	$26, %eax, %eax
	subl	%eax, %edx
	leal	2(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r8)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movl	$26, %r8d
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	3(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	4(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	5(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	6(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	7(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	8(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	9(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	10(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	11(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	12(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	leal	13(%rsi), %eax
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%eax, %ecx
	jle	.L2
	movslq	%eax, %r9
	addl	$14, %esi
	movsbl	16(%rsp,%r9), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	addl	$65, %edx
	movb	%dl, 16(%rsp,%r9)
	cmpl	%esi, %ecx
	jle	.L2
	movslq	%esi, %rsi
	movsbl	16(%rsp,%rsi), %eax
	leal	-65(%rdi,%rax), %eax
	cltd
	idivl	%r8d
	addl	$65, %edx
	movb	%dl, 16(%rsp,%rsi)
	.p2align 4,,10
	.p2align 3
.L2:
	xorl	%eax, %eax
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	10024(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L14
	addq	$10040, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L7:
	.cfi_restore_state
	xorl	%esi, %esi
	jmp	.L3
.L14:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE35:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC2:
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.value	-65
	.align 16
.LC3:
	.long	1321528399
	.long	1321528399
	.long	1321528399
	.long	1321528399
	.align 16
.LC4:
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.value	255
	.align 16
.LC5:
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.byte	65
	.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<string.h>

int main(void)
{
	int n,i,t;
	char s[10000];

	scanf("%d",&n);
	scanf("%s",s);

	t=strlen(s);
	
	for(i=0;i<t;i++)
		s[i]='A'+(s[i]-'A'+n)%26;

		printf("%s",s);

		return 0;
}

13
ABCDEFGGIJKLMNOPQRSTUVWXYZ
 0
YBCXAZ
 2
ABDXYZ
 13
ABCDEFGGIJKLMNOOQRSTUVWXYZ
 0
YBBXAZ
 2
ZYXDBA
 13
ABCDEFGOIJKLMNGOQRSTUVWXYZ
 0
YABXAZ
 2
ZXXDBA
 13
ZYXWVUTSRQOGNMLKJIOGFEDCBA

NOPQRSTTVWXYZABCDEFGHIJKLM YBCXAZ CDFZAB NOPQRSTTVWXYZABBDEFGHIJKLM YBBXAZ BAZFDC NOPQRSTBVWXYZATBDEFGHIJKLM YABXAZ BZZFDC MLKJIHGFEDBTAZYXWVBTSRQPON
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<string.h>

int main(void)
{
	int n,i,t;
	char s[10000];

	scanf("%d",&n);
	scanf("%s",s);

	t=strlen(s);
	
	for(i=0;i<t;i++)
		s[i]='A'+(s[i]-'A'+n)%26;

		printf("%s",s);

		return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$1840, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-10028(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -10020(%rbp)
	movl	$0, -10024(%rbp)
	jmp	.L2
.L3:
	movl	-10024(%rbp), %eax
	cltq
	movzbl	-10016(%rbp,%rax), %eax
	movsbl	%al, %eax
	leal	-65(%rax), %edx
	movl	-10028(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	imulq	$1321528399, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$3, %edx
	movl	%eax, %ecx
	sarl	$31, %ecx
	subl	%ecx, %edx
	imull	$26, %edx, %ecx
	subl	%ecx, %eax
	movl	%eax, %edx
	movl	%edx, %eax
	addl	$65, %eax
	movl	%eax, %edx
	movl	-10024(%rbp), %eax
	cltq
	movb	%dl, -10016(%rbp,%rax)
	addl	$1, -10024(%rbp)
.L2:
	movl	-10024(%rbp), %eax
	cmpl	-10020(%rbp), %eax
	jl	.L3
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.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
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$4096, %rsp
	orq	$0, (%rsp)
	subq	$1840, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-10028(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -10020(%rbp)
	movl	$0, -10024(%rbp)
	jmp	.L2
.L3:
	movl	-10024(%rbp), %eax
	cltq
	movzbl	-10016(%rbp,%rax), %eax
	movsbl	%al, %eax
	leal	-65(%rax), %edx
	movl	-10028(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	imulq	$1321528399, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$3, %edx
	movl	%eax, %ecx
	sarl	$31, %ecx
	subl	%ecx, %edx
	imull	$26, %edx, %ecx
	subl	%ecx, %eax
	movl	%eax, %edx
	movl	%edx, %eax
	addl	$65, %eax
	movl	%eax, %edx
	movl	-10024(%rbp), %eax
	cltq
	movb	%dl, -10016(%rbp,%rax)
	addl	$1, -10024(%rbp)
.L2:
	movl	-10024(%rbp), %eax
	cmpl	-10020(%rbp), %eax
	jl	.L3
	leaq	-10016(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L5
	call	__stack_chk_fail@PLT
.L5:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.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:
