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

```c
#define _CRT_SECURE_NO_WARNINGS
//#define _USE_MATH_DEFINES
#include<stdio.h>
//#include<stdlib.h>
//#include<math.h>
#include<string.h>
//#include<time.h>
#define P(type,x) fprintf(stdout,"%"#type"\n",x)
const char code[10][10] = {"","',.!?","abcABC","defDEF","ghiGHI","jklJKL","mnoMNO","pqrsPQRS","tuvTUV","wxyzWXYZ" };

int main() {
	int c = 0,a;
	char input[10001],*p;
	for (;~fscanf(stdin, "%[^\n]*s", input)!=NULL; puts("")) {
		getchar();
		p = input;
		c = 0;
		while (*p) {
			if (*(p+1) != *p) {
				if (*p == '1')a = 5;
				else if (*p == '7' || *p == '9') a = 8;
				else a = 6;
				if(*p!='0') fprintf(stdout, "%c", code[*p - '0'][c%a]);
				c = 0;
			}
			else c++;
			if(*p=='0'&&*(p+1)=='0') putchar(' ');
			p++;
		}
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	code
	.section	.rodata
	.align 32
	.type	code, @object
	.size	code, 100
code:
	.string	""
	.zero	9
	.string	"',.!?"
	.zero	4
	.string	"abcABC"
	.zero	3
	.string	"defDEF"
	.zero	3
	.string	"ghiGHI"
	.zero	3
	.string	"jklJKL"
	.zero	3
	.string	"mnoMNO"
	.zero	3
	.string	"pqrsPQRS"
	.zero	1
	.string	"tuvTUV"
	.zero	3
	.string	"wxyzWXYZ"
	.zero	1
.LC0:
	.string	""
.LC1:
	.string	"%[^\n]*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
	movl	$0, -10032(%rbp)
	jmp	.L2
.L13:
	call	getchar@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, -10024(%rbp)
	movl	$0, -10032(%rbp)
	jmp	.L3
.L12:
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %edx
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$49, %al
	jne	.L5
	movl	$5, -10028(%rbp)
	jmp	.L6
.L5:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$55, %al
	je	.L7
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jne	.L8
.L7:
	movl	$8, -10028(%rbp)
	jmp	.L6
.L8:
	movl	$6, -10028(%rbp)
.L6:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	je	.L9
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	leal	-48(%rax), %ecx
	movl	-10032(%rbp), %eax
	cltd
	idivl	-10028(%rbp)
	movl	%edx, %eax
	movslq	%eax, %rsi
	movslq	%ecx, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	code(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movq	stdout(%rip), %rdx
	movq	%rdx, %rsi
	movl	%eax, %edi
	call	fputc@PLT
.L9:
	movl	$0, -10032(%rbp)
	jmp	.L10
.L4:
	addl	$1, -10032(%rbp)
.L10:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movl	$32, %edi
	call	putchar@PLT
.L11:
	addq	$1, -10024(%rbp)
.L3:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L2:
	movq	stdin(%rip), %rax
	leaq	-10016(%rbp), %rdx
	leaq	.LC1(%rip), %rcx
	movq	%rcx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_fscanf@PLT
	cmpl	$-1, %eax
	jne	.L13
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L15
	call	__stack_chk_fail@PLT
.L15:
	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	""
.LC1:
	.string	"%[^\n]*s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$4096, %rsp
	.cfi_def_cfa_offset 4152
	orq	$0, (%rsp)
	subq	$4096, %rsp
	.cfi_def_cfa_offset 8248
	orq	$0, (%rsp)
	subq	$1832, %rsp
	.cfi_def_cfa_offset 10080
	leaq	.LC1(%rip), %r12
	leaq	code(%rip), %rbx
	leaq	.LC0(%rip), %r13
	movq	%fs:40, %rax
	movq	%rax, 10008(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L2:
	movq	stdin(%rip), %rdi
	xorl	%eax, %eax
	movq	%rbp, %rdx
	movq	%r12, %rsi
	call	__isoc99_fscanf@PLT
	cmpl	$-1, %eax
	je	.L28
	movq	stdin(%rip), %rdi
	movq	%rbp, %r14
	xorl	%r15d, %r15d
	call	getc@PLT
	movsbl	(%rsp), %ecx
	testb	%cl, %cl
	je	.L10
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	1(%r14), %eax
	cmpb	%cl, %al
	je	.L4
	leal	-55(%rcx), %edx
	andl	$253, %edx
	je	.L15
	movl	$6, %esi
	cmpb	$49, %cl
	je	.L29
.L5:
	cmpb	$48, %cl
	jne	.L6
.L26:
	xorl	%r15d, %r15d
.L7:
	movsbl	%al, %ecx
	cmpb	$48, %cl
	je	.L30
.L8:
	addq	$1, %r14
	testb	%cl, %cl
	jne	.L3
.L10:
	movq	%r13, %rdi
	call	puts@PLT
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L4:
	addl	$1, %r15d
	cmpb	$48, %cl
	je	.L7
	addq	$1, %r14
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L29:
	movl	$5, %esi
.L6:
	movl	%r15d, %eax
	subl	$48, %ecx
	cltd
	movslq	%ecx, %rcx
	idivl	%esi
	movq	stdout(%rip), %rsi
	leaq	(%rcx,%rcx,4), %rax
	leaq	(%rbx,%rax,2), %rax
	movslq	%edx, %rdx
	movsbl	(%rax,%rdx), %edi
	call	fputc@PLT
	cmpb	$48, (%r14)
	movsbl	1(%r14), %ecx
	je	.L18
	xorl	%r15d, %r15d
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L15:
	movl	$8, %esi
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L30:
	movq	stdout(%rip), %rsi
	movl	$32, %edi
	call	putc@PLT
	movsbl	1(%r14), %ecx
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L28:
	movq	10008(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L31
	addq	$10024, %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
.L18:
	.cfi_restore_state
	movl	%ecx, %eax
	jmp	.L26
.L31:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE35:
	.size	main, .-main
	.globl	code
	.section	.rodata
	.align 32
	.type	code, @object
	.size	code, 100
code:
	.string	""
	.zero	9
	.string	"',.!?"
	.zero	4
	.string	"abcABC"
	.zero	3
	.string	"defDEF"
	.zero	3
	.string	"ghiGHI"
	.zero	3
	.string	"jklJKL"
	.zero	3
	.string	"mnoMNO"
	.zero	3
	.string	"pqrsPQRS"
	.zero	1
	.string	"tuvTUV"
	.zero	3
	.string	"wxyzWXYZ"
	.zero	1
	.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	""
.LC1:
	.string	"%[^\n]*s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$4096, %rsp
	.cfi_def_cfa_offset 4152
	orq	$0, (%rsp)
	subq	$4096, %rsp
	.cfi_def_cfa_offset 8248
	orq	$0, (%rsp)
	subq	$1832, %rsp
	.cfi_def_cfa_offset 10080
	leaq	.LC1(%rip), %r12
	leaq	code(%rip), %rbx
	leaq	.LC0(%rip), %r13
	movq	%fs:40, %rax
	movq	%rax, 10008(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L2:
	movq	stdin(%rip), %rdi
	xorl	%eax, %eax
	movq	%rbp, %rdx
	movq	%r12, %rsi
	call	__isoc99_fscanf@PLT
	cmpl	$-1, %eax
	je	.L28
	movq	stdin(%rip), %rdi
	movq	%rbp, %r14
	xorl	%r15d, %r15d
	call	getc@PLT
	movsbl	(%rsp), %ecx
	testb	%cl, %cl
	je	.L10
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	1(%r14), %eax
	cmpb	%cl, %al
	je	.L4
	leal	-55(%rcx), %edx
	andl	$253, %edx
	je	.L15
	movl	$6, %esi
	cmpb	$49, %cl
	je	.L29
.L5:
	cmpb	$48, %cl
	jne	.L6
.L26:
	xorl	%r15d, %r15d
.L7:
	movsbl	%al, %ecx
	cmpb	$48, %cl
	je	.L30
.L8:
	addq	$1, %r14
	testb	%cl, %cl
	jne	.L3
.L10:
	movq	%r13, %rdi
	call	puts@PLT
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L4:
	addl	$1, %r15d
	cmpb	$48, %cl
	je	.L7
	addq	$1, %r14
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L29:
	movl	$5, %esi
.L6:
	movl	%r15d, %eax
	subl	$48, %ecx
	cltd
	movslq	%ecx, %rcx
	idivl	%esi
	movq	stdout(%rip), %rsi
	leaq	(%rcx,%rcx,4), %rax
	leaq	(%rbx,%rax,2), %rax
	movslq	%edx, %rdx
	movsbl	(%rax,%rdx), %edi
	call	fputc@PLT
	cmpb	$48, (%r14)
	movsbl	1(%r14), %ecx
	je	.L18
	xorl	%r15d, %r15d
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L15:
	movl	$8, %esi
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L30:
	movq	stdout(%rip), %rsi
	movl	$32, %edi
	call	putc@PLT
	movsbl	1(%r14), %ecx
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L28:
	movq	10008(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L31
	addq	$10024, %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
.L18:
	.cfi_restore_state
	movl	%ecx, %eax
	jmp	.L26
.L31:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE35:
	.size	main, .-main
	.globl	code
	.section	.rodata
	.align 32
	.type	code, @object
	.size	code, 100
code:
	.string	""
	.zero	9
	.string	"',.!?"
	.zero	4
	.string	"abcABC"
	.zero	3
	.string	"defDEF"
	.zero	3
	.string	"ghiGHI"
	.zero	3
	.string	"jklJKL"
	.zero	3
	.string	"mnoMNO"
	.zero	3
	.string	"pqrsPQRS"
	.zero	1
	.string	"tuvTUV"
	.zero	3
	.string	"wxyzWXYZ"
	.zero	1
	.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:

#define _CRT_SECURE_NO_WARNINGS
//#define _USE_MATH_DEFINES
#include<stdio.h>
//#include<stdlib.h>
//#include<math.h>
#include<string.h>
//#include<time.h>
#define P(type,x) fprintf(stdout,"%"#type"\n",x)
const char code[10][10] = {"","',.!?","abcABC","defDEF","ghiGHI","jklJKL","mnoMNO","pqrsPQRS","tuvTUV","wxyzWXYZ" };

int main() {
	int c = 0,a;
	char input[10001],*p;
	for (;~fscanf(stdin, "%[^\n]*s", input)!=NULL; puts("")) {
		getchar();
		p = input;
		c = 0;
		while (*p) {
			if (*(p+1) != *p) {
				if (*p == '1')a = 5;
				else if (*p == '7' || *p == '9') a = 8;
				else a = 6;
				if(*p!='0') fprintf(stdout, "%c", code[*p - '0'][c%a]);
				c = 0;
			}
			else c++;
			if(*p=='0'&&*(p+1)=='0') putchar(' ');
			p++;
		}
	}
	return 0;
}
666660666
62238520449600706121638
20202202000333003330333
 666660666
62238520449600706121638
20470251257982382367886
 666660666
79768964391256325078385
20470251257982382367886
 666660666
79768964391256325078385
25978567800744130697792
 666660666
55999974773440645998345
20202202000333003330333
 666660666
62238520449600706121638
14850052156216880632963
 666660666
62238520449600706121638
33891614279093528467517
 666660666
142145446803031564412541
20470251257982382367886
 666660666
79768964391256325078385
44810356897267049407435
 666660666
55999974773440645998345
29797517585616389626336

No
mbdtjahwm pm'a'mdt
aaba  f ff
 No
mbdtjahwm pm'a'mdt
agpaj'ajpwtadtadmpum
 No
pwpmtwmgdw'ajmdajptdtj
agpaj'ajpwtadtadmpum
 No
pwpmtwmgdw'ajmdajptdtj
ajwptjmpt ph'dmwqwa
 No
kzpgqdhmgjxtdgj
aaba  f ff
 No
mbdtjahwm pm'a'mdt
'gtj ja'jma'mumdawmd
 No
mbdtjahwm pm'a'mdt
etw'm'gapwwdjatgmpj'p
 No
'ga'gjhmtdd'jmh'ajg'
agpaj'ajpwtadtadmpum
 No
pwpmtwmgdw'ajmdajptdtj
ht'djmtwpampgwgpgdj
 No
kzpgqdhmgjxtdgj
awpwpj'pjtjm'mdtwmamem

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

```c
#define _CRT_SECURE_NO_WARNINGS
//#define _USE_MATH_DEFINES
#include<stdio.h>
//#include<stdlib.h>
//#include<math.h>
#include<string.h>
//#include<time.h>
#define P(type,x) fprintf(stdout,"%"#type"\n",x)
const char code[10][10] = {"","',.!?","abcABC","defDEF","ghiGHI","jklJKL","mnoMNO","pqrsPQRS","tuvTUV","wxyzWXYZ" };

int main() {
	int c = 0,a;
	char input[10001],*p;
	for (;~fscanf(stdin, "%[^\n]*s", input)!=NULL; puts("")) {
		getchar();
		p = input;
		c = 0;
		while (*p) {
			if (*(p+1) != *p) {
				if (*p == '1')a = 5;
				else if (*p == '7' || *p == '9') a = 8;
				else a = 6;
				if(*p!='0') fprintf(stdout, "%c", code[*p - '0'][c%a]);
				c = 0;
			}
			else c++;
			if(*p=='0'&&*(p+1)=='0') putchar(' ');
			p++;
		}
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	code
	.section	.rodata
	.align 32
	.type	code, @object
	.size	code, 100
code:
	.string	""
	.zero	9
	.string	"',.!?"
	.zero	4
	.string	"abcABC"
	.zero	3
	.string	"defDEF"
	.zero	3
	.string	"ghiGHI"
	.zero	3
	.string	"jklJKL"
	.zero	3
	.string	"mnoMNO"
	.zero	3
	.string	"pqrsPQRS"
	.zero	1
	.string	"tuvTUV"
	.zero	3
	.string	"wxyzWXYZ"
	.zero	1
.LC0:
	.string	""
.LC1:
	.string	"%[^\n]*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
	movl	$0, -10032(%rbp)
	jmp	.L2
.L13:
	call	getchar@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, -10024(%rbp)
	movl	$0, -10032(%rbp)
	jmp	.L3
.L12:
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %edx
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$49, %al
	jne	.L5
	movl	$5, -10028(%rbp)
	jmp	.L6
.L5:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$55, %al
	je	.L7
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jne	.L8
.L7:
	movl	$8, -10028(%rbp)
	jmp	.L6
.L8:
	movl	$6, -10028(%rbp)
.L6:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	je	.L9
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	leal	-48(%rax), %ecx
	movl	-10032(%rbp), %eax
	cltd
	idivl	-10028(%rbp)
	movl	%edx, %eax
	movslq	%eax, %rsi
	movslq	%ecx, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	code(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movq	stdout(%rip), %rdx
	movq	%rdx, %rsi
	movl	%eax, %edi
	call	fputc@PLT
.L9:
	movl	$0, -10032(%rbp)
	jmp	.L10
.L4:
	addl	$1, -10032(%rbp)
.L10:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movl	$32, %edi
	call	putchar@PLT
.L11:
	addq	$1, -10024(%rbp)
.L3:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L2:
	movq	stdin(%rip), %rax
	leaq	-10016(%rbp), %rdx
	leaq	.LC1(%rip), %rcx
	movq	%rcx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_fscanf@PLT
	cmpl	$-1, %eax
	jne	.L13
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L15
	call	__stack_chk_fail@PLT
.L15:
	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
	.globl	code
	.section	.rodata
	.align 32
	.type	code, @object
	.size	code, 100
code:
	.string	""
	.zero	9
	.string	"',.!?"
	.zero	4
	.string	"abcABC"
	.zero	3
	.string	"defDEF"
	.zero	3
	.string	"ghiGHI"
	.zero	3
	.string	"jklJKL"
	.zero	3
	.string	"mnoMNO"
	.zero	3
	.string	"pqrsPQRS"
	.zero	1
	.string	"tuvTUV"
	.zero	3
	.string	"wxyzWXYZ"
	.zero	1
.LC0:
	.string	""
.LC1:
	.string	"%[^\n]*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
	movl	$0, -10032(%rbp)
	jmp	.L2
.L13:
	call	getchar@PLT
	leaq	-10016(%rbp), %rax
	movq	%rax, -10024(%rbp)
	movl	$0, -10032(%rbp)
	jmp	.L3
.L12:
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %edx
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$49, %al
	jne	.L5
	movl	$5, -10028(%rbp)
	jmp	.L6
.L5:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$55, %al
	je	.L7
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jne	.L8
.L7:
	movl	$8, -10028(%rbp)
	jmp	.L6
.L8:
	movl	$6, -10028(%rbp)
.L6:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	je	.L9
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	leal	-48(%rax), %ecx
	movl	-10032(%rbp), %eax
	cltd
	idivl	-10028(%rbp)
	movl	%edx, %eax
	movslq	%eax, %rsi
	movslq	%ecx, %rdx
	movq	%rdx, %rax
	salq	$2, %rax
	addq	%rdx, %rax
	addq	%rax, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	code(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movq	stdout(%rip), %rdx
	movq	%rdx, %rsi
	movl	%eax, %edi
	call	fputc@PLT
.L9:
	movl	$0, -10032(%rbp)
	jmp	.L10
.L4:
	addl	$1, -10032(%rbp)
.L10:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movq	-10024(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L11
	movl	$32, %edi
	call	putchar@PLT
.L11:
	addq	$1, -10024(%rbp)
.L3:
	movq	-10024(%rbp), %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L2:
	movq	stdin(%rip), %rax
	leaq	-10016(%rbp), %rdx
	leaq	.LC1(%rip), %rcx
	movq	%rcx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_fscanf@PLT
	cmpl	$-1, %eax
	jne	.L13
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L15
	call	__stack_chk_fail@PLT
.L15:
	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:
