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

```c
// AtCoder ABC109: C - String Transformation
// 2019.9.12 bal4u

#include <stdio.h>
#include <stdlib.h>

#if 0
int getchar_unlocked(void);
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif

int ins(char *s) { // 文字列の入力　スペース以下の文字で入力終了
	char *p = s--;
	do *++s = gc();
	while (*s > ' ');
	*s = 0;
	return s - p;
}

char S[200005], T[200005];
int a[26], b[26];

int cmp(const void *u, const void *v) { return *(int *)u - *(int *)v; }

int main()
{
	int i, w;
	
	w = ins(S), ins(T);
	for (i = 0; i < w; i++) a[S[i] - 'a']++;
	for (i = 0; i < w; i++) b[T[i] - 'a']++;
	qsort(a, 26, sizeof(int), cmp);
	qsort(b, 26, sizeof(int), cmp);
	for (i = 0; i < 26; i++) {
		if (a[i] != b[i]) { puts("No"); return 0; }
	}
	puts("Yes");
	return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB40:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE40:
	.size	cmp, .-cmp
	.p2align 4
	.globl	ins
	.type	ins, @function
ins:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	-1(%rdi), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	.p2align 4,,10
	.p2align 3
.L4:
	movq	stdin(%rip), %rdi
	addq	$1, %rbx
	call	getc@PLT
	movb	%al, (%rbx)
	cmpb	$32, %al
	jg	.L4
	movb	$0, (%rbx)
	movl	%ebx, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	subl	%ebp, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE39:
	.size	ins, .-ins
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"No"
.LC1:
	.string	"Yes"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	leaq	-1+S(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	.p2align 4,,10
	.p2align 3
.L8:
	movq	stdin(%rip), %rdi
	addq	$1, %rbp
	call	getc@PLT
	movb	%al, 0(%rbp)
	cmpb	$32, %al
	jg	.L8
	movb	$0, 0(%rbp)
	leaq	S(%rip), %rbx
	leaq	T(%rip), %rdi
	subq	%rbx, %rbp
	leaq	a(%rip), %r12
	leaq	b(%rip), %r13
	call	ins
	testl	%ebp, %ebp
	jle	.L9
	leal	-1(%rbp), %esi
	leaq	1(%rbx), %rcx
	movq	%rbx, %rdx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L10:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, (%r12,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L10
	leaq	T(%rip), %rdx
	leaq	b(%rip), %r13
	leaq	1(%rdx), %rcx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L11:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, 0(%r13,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L11
.L9:
	leaq	cmp(%rip), %r14
	movl	$4, %edx
	movl	$26, %esi
	movq	%r12, %rdi
	movq	%r14, %rcx
	call	qsort@PLT
	movq	%r14, %rcx
	movl	$4, %edx
	movq	%r13, %rdi
	movl	$26, %esi
	call	qsort@PLT
	xorl	%eax, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L12:
	addq	$4, %rax
	cmpq	$104, %rax
	je	.L21
.L14:
	movl	0(%r13,%rax), %ebx
	cmpl	%ebx, (%r12,%rax)
	je	.L12
	leaq	.LC0(%rip), %rdi
	call	puts@PLT
.L13:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L21:
	.cfi_restore_state
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L13
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 104
b:
	.zero	104
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 104
a:
	.zero	104
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 200005
T:
	.zero	200005
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 200005
S:
	.zero	200005
	.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.
Optimized Assembly Code:

user
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB40:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE40:
	.size	cmp, .-cmp
	.p2align 4
	.globl	ins
	.type	ins, @function
ins:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	-1(%rdi), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	.p2align 4,,10
	.p2align 3
.L4:
	movq	stdin(%rip), %rdi
	addq	$1, %rbx
	call	getc@PLT
	movb	%al, (%rbx)
	cmpb	$32, %al
	jg	.L4
	movb	$0, (%rbx)
	movl	%ebx, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	subl	%ebp, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE39:
	.size	ins, .-ins
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"No"
.LC1:
	.string	"Yes"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	leaq	-1+S(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	.p2align 4,,10
	.p2align 3
.L8:
	movq	stdin(%rip), %rdi
	addq	$1, %rbp
	call	getc@PLT
	movb	%al, 0(%rbp)
	cmpb	$32, %al
	jg	.L8
	movb	$0, 0(%rbp)
	leaq	S(%rip), %rbx
	leaq	T(%rip), %rdi
	subq	%rbx, %rbp
	leaq	a(%rip), %r12
	leaq	b(%rip), %r13
	call	ins
	testl	%ebp, %ebp
	jle	.L9
	leal	-1(%rbp), %esi
	leaq	1(%rbx), %rcx
	movq	%rbx, %rdx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L10:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, (%r12,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L10
	leaq	T(%rip), %rdx
	leaq	b(%rip), %r13
	leaq	1(%rdx), %rcx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L11:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, 0(%r13,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L11
.L9:
	leaq	cmp(%rip), %r14
	movl	$4, %edx
	movl	$26, %esi
	movq	%r12, %rdi
	movq	%r14, %rcx
	call	qsort@PLT
	movq	%r14, %rcx
	movl	$4, %edx
	movq	%r13, %rdi
	movl	$26, %esi
	call	qsort@PLT
	xorl	%eax, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L12:
	addq	$4, %rax
	cmpq	$104, %rax
	je	.L21
.L14:
	movl	0(%r13,%rax), %ebx
	cmpl	%ebx, (%r12,%rax)
	je	.L12
	leaq	.LC0(%rip), %rdi
	call	puts@PLT
.L13:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L21:
	.cfi_restore_state
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L13
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 104
b:
	.zero	104
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 104
a:
	.zero	104
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 200005
T:
	.zero	200005
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 200005
S:
	.zero	200005
	.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
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB40:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE40:
	.size	cmp, .-cmp
	.p2align 4
	.globl	ins
	.type	ins, @function
ins:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	-1(%rdi), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	.p2align 4,,10
	.p2align 3
.L4:
	movq	stdin(%rip), %rdi
	addq	$1, %rbx
	call	getc@PLT
	movb	%al, (%rbx)
	cmpb	$32, %al
	jg	.L4
	movb	$0, (%rbx)
	movl	%ebx, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	subl	%ebp, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE39:
	.size	ins, .-ins
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"No"
.LC1:
	.string	"Yes"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	leaq	-1+S(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	.p2align 4,,10
	.p2align 3
.L8:
	movq	stdin(%rip), %rdi
	addq	$1, %rbp
	call	getc@PLT
	movb	%al, 0(%rbp)
	cmpb	$32, %al
	jg	.L8
	movb	$0, 0(%rbp)
	leaq	S(%rip), %rbx
	leaq	T(%rip), %rdi
	subq	%rbx, %rbp
	leaq	a(%rip), %r12
	leaq	b(%rip), %r13
	call	ins
	testl	%ebp, %ebp
	jle	.L9
	leal	-1(%rbp), %esi
	leaq	1(%rbx), %rcx
	movq	%rbx, %rdx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L10:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, (%r12,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L10
	leaq	T(%rip), %rdx
	leaq	b(%rip), %r13
	leaq	1(%rdx), %rcx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L11:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, 0(%r13,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L11
.L9:
	leaq	cmp(%rip), %r14
	movl	$4, %edx
	movl	$26, %esi
	movq	%r12, %rdi
	movq	%r14, %rcx
	call	qsort@PLT
	movq	%r14, %rcx
	movl	$4, %edx
	movq	%r13, %rdi
	movl	$26, %esi
	call	qsort@PLT
	xorl	%eax, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L12:
	addq	$4, %rax
	cmpq	$104, %rax
	je	.L21
.L14:
	movl	0(%r13,%rax), %ebx
	cmpl	%ebx, (%r12,%rax)
	je	.L12
	leaq	.LC0(%rip), %rdi
	call	puts@PLT
.L13:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L21:
	.cfi_restore_state
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L13
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 104
b:
	.zero	104
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 104
a:
	.zero	104
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 200005
T:
	.zero	200005
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 200005
S:
	.zero	200005
	.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:
```
```c
// AtCoder ABC109: C - String Transformation
// 2019.9.12 bal4u

#include <stdio.h>
#include <stdlib.h>

#if 0
int getchar_unlocked(void);
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif

int ins(char *s) { // 文字列の入力　スペース以下の文字で入力終了
	char *p = s--;
	do *++s = gc();
	while (*s > ' ');
	*s = 0;
	return s - p;
}

char S[200005], T[200005];
int a[26], b[26];

int cmp(const void *u, const void *v) { return *(int *)u - *(int *)v; }

int main()
{
	int i, w;
	
	w = ins(S), ins(T);
	for (i = 0; i < w; i++) a[S[i] - 'a']++;
	for (i = 0; i < w; i++) b[T[i] - 'a']++;
	qsort(a, 26, sizeof(int), cmp);
	qsort(b, 26, sizeof(int), cmp);
	for (i = 0; i < 26; i++) {
		if (a[i] != b[i]) { puts("No"); return 0; }
	}
	puts("Yes");
	return 0;
}

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

```c
// AtCoder ABC109: C - String Transformation
// 2019.9.12 bal4u

#include <stdio.h>
#include <stdlib.h>

#if 0
int getchar_unlocked(void);
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif

int ins(char *s) { // 文字列の入力　スペース以下の文字で入力終了
	char *p = s--;
	do *++s = gc();
	while (*s > ' ');
	*s = 0;
	return s - p;
}

char S[200005], T[200005];
int a[26], b[26];

int cmp(const void *u, const void *v) { return *(int *)u - *(int *)v; }

int main()
{
	int i, w;
	
	w = ins(S), ins(T);
	for (i = 0; i < w; i++) a[S[i] - 'a']++;
	for (i = 0; i < w; i++) b[T[i] - 'a']++;
	qsort(a, 26, sizeof(int), cmp);
	qsort(b, 26, sizeof(int), cmp);
	for (i = 0; i < 26; i++) {
		if (a[i] != b[i]) { puts("No"); return 0; }
	}
	puts("Yes");
	return 0;
}

```

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.
Optimized Assembly Code:

azzel
apqle
 abcdefghijklmnopqrstuvwxyz
unomzpgwdtsjxlcvakerfqhybi
 ihokudac
redcoder
 azzle
apqle
 zyxwvutsrqponmlkjihgfedcba
unomzpgwdtsjxlcvakerfqhybi
 cadukohi
redcoder
 azzle
apqld
 zyxwvutsrqponmlkjihgfedcba
unonzpgwdtsjxlcvakerfqhybi
 ihojudac
redcoder
 azzle
dlqpa

No
 Yes
 No
 No
 Yes
 No
 No
 No
 No
 No

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

```c
// AtCoder ABC109: C - String Transformation
// 2019.9.12 bal4u

#include <stdio.h>
#include <stdlib.h>

#if 0
int getchar_unlocked(void);
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif

int ins(char *s) { // 文字列の入力　スペース以下の文字で入力終了
	char *p = s--;
	do *++s = gc();
	while (*s > ' ');
	*s = 0;
	return s - p;
}

char S[200005], T[200005];
int a[26], b[26];

int cmp(const void *u, const void *v) { return *(int *)u - *(int *)v; }

int main()
{
	int i, w;
	
	w = ins(S), ins(T);
	for (i = 0; i < w; i++) a[S[i] - 'a']++;
	for (i = 0; i < w; i++) b[T[i] - 'a']++;
	qsort(a, 26, sizeof(int), cmp);
	qsort(b, 26, sizeof(int), cmp);
	for (i = 0; i < 26; i++) {
		if (a[i] != b[i]) { puts("No"); return 0; }
	}
	puts("Yes");
	return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB40:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE40:
	.size	cmp, .-cmp
	.p2align 4
	.globl	ins
	.type	ins, @function
ins:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	-1(%rdi), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	.p2align 4,,10
	.p2align 3
.L4:
	movq	stdin(%rip), %rdi
	addq	$1, %rbx
	call	getc@PLT
	movb	%al, (%rbx)
	cmpb	$32, %al
	jg	.L4
	movb	$0, (%rbx)
	movl	%ebx, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	subl	%ebp, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE39:
	.size	ins, .-ins
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"No"
.LC1:
	.string	"Yes"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	leaq	-1+S(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	.p2align 4,,10
	.p2align 3
.L8:
	movq	stdin(%rip), %rdi
	addq	$1, %rbp
	call	getc@PLT
	movb	%al, 0(%rbp)
	cmpb	$32, %al
	jg	.L8
	movb	$0, 0(%rbp)
	leaq	S(%rip), %rbx
	leaq	T(%rip), %rdi
	subq	%rbx, %rbp
	leaq	a(%rip), %r12
	leaq	b(%rip), %r13
	call	ins
	testl	%ebp, %ebp
	jle	.L9
	leal	-1(%rbp), %esi
	leaq	1(%rbx), %rcx
	movq	%rbx, %rdx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L10:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, (%r12,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L10
	leaq	T(%rip), %rdx
	leaq	b(%rip), %r13
	leaq	1(%rdx), %rcx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L11:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, 0(%r13,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L11
.L9:
	leaq	cmp(%rip), %r14
	movl	$4, %edx
	movl	$26, %esi
	movq	%r12, %rdi
	movq	%r14, %rcx
	call	qsort@PLT
	movq	%r14, %rcx
	movl	$4, %edx
	movq	%r13, %rdi
	movl	$26, %esi
	call	qsort@PLT
	xorl	%eax, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L12:
	addq	$4, %rax
	cmpq	$104, %rax
	je	.L21
.L14:
	movl	0(%r13,%rax), %ebx
	cmpl	%ebx, (%r12,%rax)
	je	.L12
	leaq	.LC0(%rip), %rdi
	call	puts@PLT
.L13:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L21:
	.cfi_restore_state
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L13
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 104
b:
	.zero	104
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 104
a:
	.zero	104
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 200005
T:
	.zero	200005
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 200005
S:
	.zero	200005
	.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.
Optimized Assembly Code:

train
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB40:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE40:
	.size	cmp, .-cmp
	.p2align 4
	.globl	ins
	.type	ins, @function
ins:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	-1(%rdi), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	.p2align 4,,10
	.p2align 3
.L4:
	movq	stdin(%rip), %rdi
	addq	$1, %rbx
	call	getc@PLT
	movb	%al, (%rbx)
	cmpb	$32, %al
	jg	.L4
	movb	$0, (%rbx)
	movl	%ebx, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	subl	%ebp, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE39:
	.size	ins, .-ins
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"No"
.LC1:
	.string	"Yes"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	leaq	-1+S(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	.p2align 4,,10
	.p2align 3
.L8:
	movq	stdin(%rip), %rdi
	addq	$1, %rbp
	call	getc@PLT
	movb	%al, 0(%rbp)
	cmpb	$32, %al
	jg	.L8
	movb	$0, 0(%rbp)
	leaq	S(%rip), %rbx
	leaq	T(%rip), %rdi
	subq	%rbx, %rbp
	leaq	a(%rip), %r12
	leaq	b(%rip), %r13
	call	ins
	testl	%ebp, %ebp
	jle	.L9
	leal	-1(%rbp), %esi
	leaq	1(%rbx), %rcx
	movq	%rbx, %rdx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L10:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, (%r12,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L10
	leaq	T(%rip), %rdx
	leaq	b(%rip), %r13
	leaq	1(%rdx), %rcx
	addq	%rsi, %rcx
	.p2align 4,,10
	.p2align 3
.L11:
	movsbl	(%rdx), %eax
	addq	$1, %rdx
	subl	$97, %eax
	cltq
	addl	$1, 0(%r13,%rax,4)
	cmpq	%rdx, %rcx
	jne	.L11
.L9:
	leaq	cmp(%rip), %r14
	movl	$4, %edx
	movl	$26, %esi
	movq	%r12, %rdi
	movq	%r14, %rcx
	call	qsort@PLT
	movq	%r14, %rcx
	movl	$4, %edx
	movq	%r13, %rdi
	movl	$26, %esi
	call	qsort@PLT
	xorl	%eax, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L12:
	addq	$4, %rax
	cmpq	$104, %rax
	je	.L21
.L14:
	movl	0(%r13,%rax), %ebx
	cmpl	%ebx, (%r12,%rax)
	je	.L12
	leaq	.LC0(%rip), %rdi
	call	puts@PLT
.L13:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
.L21:
	.cfi_restore_state
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L13
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.globl	b
	.bss
	.align 32
	.type	b, @object
	.size	b, 104
b:
	.zero	104
	.globl	a
	.align 32
	.type	a, @object
	.size	a, 104
a:
	.zero	104
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 200005
T:
	.zero	200005
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 200005
S:
	.zero	200005
	.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:
```