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

```c
#pragma GCC optimize("O2")
#include <stdio.h>

int arr1[10][10] = {
    {0,0,0,0,0,0,0,0,0,0},
    {0,100000,0,9029,0,0,0,7519,7572,1},
    {0,0,0,0,9527,0,0,13336,0,0},
    {0,14416,0,0,0,0,0,0,0,0},
    {0,0,3,0,0,0,16971,0,18448,0},
    {50000,342,0,0,0,0,0,0,0,50000},
    {0,20398,0,0,7169,0,0,5300,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,17391,0,0,0,0,0,0},
    {0,0,0,0,0,799,0,0,0,0}
};
char ch[20];

void puti(int i) {
    if (i >= 10) {
        puti(i / 10);
        i %= 10;
    }
    fputc(i + '0', stdout);
}

int main(void) {
    // テストケースハックする良くないコード
    fread(ch, sizeof(char), 8, stdin);
    int res = arr1[ch[0] - '0'][ch[7] - '0'];
    if (ch[7] == '\n') {
        if (ch[0] == '3') {
            res = '4' - ch[2];
        }
        else if (ch[0] == '2' && ch[1] == ' ') {
            res = ch[2] - '0';
        }
        else
            res = arr1[ch[0] - '0'][ch[6] - '0'];
    }
    else if (ch[6] == '9') {
        if (ch[0] == '6') {
            res = 22888;
        }
        else if (ch[0] == '9') {
            res = 25436;
        }
    }
    puti(res);
    fputc('\n', stdout);
    return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	arr1
	.data
	.align 32
	.type	arr1, @object
	.size	arr1, 400
arr1:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	100000
	.long	0
	.long	9029
	.long	0
	.long	0
	.long	0
	.long	7519
	.long	7572
	.long	1
	.long	0
	.long	0
	.long	0
	.long	0
	.long	9527
	.long	0
	.long	0
	.long	13336
	.long	0
	.long	0
	.long	0
	.long	14416
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	16971
	.long	0
	.long	18448
	.long	0
	.long	50000
	.long	342
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	50000
	.long	0
	.long	20398
	.long	0
	.long	0
	.long	7169
	.long	0
	.long	0
	.long	5300
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	17391
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	799
	.long	0
	.long	0
	.long	0
	.long	0
	.globl	ch
	.bss
	.align 16
	.type	ch, @object
	.size	ch, 20
ch:
	.zero	20
	.text
	.p2align 4
	.globl	puti
	.type	puti, @function
puti:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movl	%edi, %ebx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	cmpl	$9, %edi
	jg	.L5
.L2:
	movq	stdout(%rip), %rsi
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	leal	48(%rbx), %edi
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	fputc@PLT
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	movslq	%edi, %rbp
	movl	%edi, %eax
	imulq	$1717986919, %rbp, %rbp
	sarl	$31, %eax
	sarq	$34, %rbp
	subl	%eax, %ebp
	movl	%ebp, %edi
	call	puti
	leal	0(%rbp,%rbp,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebx
	jmp	.L2
	.cfi_endproc
.LFE0:
	.size	puti, .-puti
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	stdin(%rip), %rcx
	movl	$8, %edx
	movl	$1, %esi
	leaq	ch(%rip), %rdi
	call	fread@PLT
	movsbl	ch(%rip), %eax
	movsbl	7+ch(%rip), %edx
	leaq	arr1(%rip), %r8
	movl	%eax, %esi
	subl	$48, %eax
	movl	%edx, %ecx
	subl	$48, %edx
	cltq
	movslq	%edx, %rdx
	leaq	(%rax,%rax,4), %rdi
	leaq	(%rdx,%rdi,2), %rdx
	movl	(%r8,%rdx,4), %edi
	cmpb	$10, %cl
	je	.L13
	cmpb	$57, 6+ch(%rip)
	je	.L14
.L9:
	call	puti
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	call	fputc@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L14:
	.cfi_restore_state
	cmpb	$54, %sil
	je	.L11
	cmpb	$57, %sil
	movl	$25436, %eax
	cmove	%eax, %edi
	jmp	.L9
.L13:
	cmpb	$51, %sil
	je	.L15
	cmpb	$50, %sil
	je	.L16
.L10:
	movsbl	6+ch(%rip), %edx
	imulq	$10, %rax, %rax
	subl	$48, %edx
	movslq	%edx, %rdx
	addq	%rdx, %rax
	movl	(%r8,%rax,4), %edi
	jmp	.L9
.L11:
	movl	$22888, %edi
	jmp	.L9
.L16:
	cmpb	$32, 1+ch(%rip)
	jne	.L10
	movsbl	2+ch(%rip), %edi
	subl	$48, %edi
	jmp	.L9
.L15:
	movsbl	2+ch(%rip), %eax
	movl	$52, %edi
	subl	%eax, %edi
	jmp	.L9
	.cfi_endproc
.LFE1:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
user
	.file	"temp.c"
	.text
	.p2align 4
	.globl	puti
	.type	puti, @function
puti:
.LFB23:
	.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
	movl	%edi, %ebx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	cmpl	$9, %edi
	jg	.L7
.L2:
	movq	stdout(%rip), %rsi
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	leal	48(%rbx), %edi
	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
	jmp	fputc@PLT
	.p2align 4,,10
	.p2align 3
.L7:
	.cfi_restore_state
	movslq	%edi, %r12
	movl	%edi, %eax
	imulq	$1717986919, %r12, %rbp
	sarl	$31, %eax
	sarq	$34, %rbp
	subl	%eax, %ebp
	cmpl	$99, %edi
	jg	.L8
.L3:
	movq	stdout(%rip), %rsi
	leal	48(%rbp), %edi
	call	fputc@PLT
	imulq	$1717986919, %r12, %rax
	movl	%ebx, %edx
	sarl	$31, %edx
	sarq	$34, %rax
	subl	%edx, %eax
	leal	(%rax,%rax,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebx
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L8:
	movl	%ebp, %r13d
	movl	$3435973837, %eax
	movq	%r13, %r14
	imulq	%rax, %r14
	shrq	$35, %r14
	cmpl	$999, %edi
	jg	.L9
.L4:
	movq	stdout(%rip), %rsi
	leal	48(%r14), %edi
	call	fputc@PLT
	movl	$3435973837, %eax
	imulq	%rax, %r13
	shrq	$35, %r13
	leal	0(%r13,%r13,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebp
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%r14d, %r15d
	imulq	%rax, %r15
	shrq	$35, %r15
	movl	%r15d, %edi
	call	puti
	leal	(%r15,%r15,4), %eax
	addl	%eax, %eax
	subl	%eax, %r14d
	jmp	.L4
	.cfi_endproc
.LFE23:
	.size	puti, .-puti
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB24:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	stdin(%rip), %rcx
	movl	$8, %edx
	movl	$1, %esi
	leaq	ch(%rip), %rdi
	call	fread@PLT
	movsbl	ch(%rip), %eax
	movsbl	7+ch(%rip), %edx
	leaq	arr1(%rip), %r8
	movl	%eax, %esi
	subl	$48, %eax
	movl	%edx, %ecx
	subl	$48, %edx
	cltq
	movslq	%edx, %rdx
	leaq	(%rax,%rax,4), %rdi
	leaq	(%rdx,%rdi,2), %rdx
	movl	(%r8,%rdx,4), %edi
	cmpb	$10, %cl
	je	.L17
	cmpb	$57, 6+ch(%rip)
	je	.L18
.L13:
	call	puti
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	call	fputc@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L18:
	.cfi_restore_state
	cmpb	$54, %sil
	je	.L15
	cmpb	$57, %sil
	movl	$25436, %eax
	cmove	%eax, %edi
	jmp	.L13
.L17:
	cmpb	$51, %sil
	je	.L19
	cmpb	$50, %sil
	je	.L20
.L14:
	movsbl	6+ch(%rip), %edx
	imulq	$10, %rax, %rax
	subl	$48, %edx
	movslq	%edx, %rdx
	addq	%rdx, %rax
	movl	(%r8,%rax,4), %edi
	jmp	.L13
.L15:
	movl	$22888, %edi
	jmp	.L13
.L20:
	cmpb	$32, 1+ch(%rip)
	jne	.L14
	movsbl	2+ch(%rip), %edi
	subl	$48, %edi
	jmp	.L13
.L19:
	movsbl	2+ch(%rip), %eax
	movl	$52, %edi
	subl	%eax, %edi
	jmp	.L13
	.cfi_endproc
.LFE24:
	.size	main, .-main
	.globl	ch
	.bss
	.align 16
	.type	ch, @object
	.size	ch, 20
ch:
	.zero	20
	.globl	arr1
	.data
	.align 32
	.type	arr1, @object
	.size	arr1, 400
arr1:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	100000
	.long	0
	.long	9029
	.long	0
	.long	0
	.long	0
	.long	7519
	.long	7572
	.long	1
	.long	0
	.long	0
	.long	0
	.long	0
	.long	9527
	.long	0
	.long	0
	.long	13336
	.long	0
	.long	0
	.long	0
	.long	14416
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	16971
	.long	0
	.long	18448
	.long	0
	.long	50000
	.long	342
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	50000
	.long	0
	.long	20398
	.long	0
	.long	0
	.long	7169
	.long	0
	.long	0
	.long	5300
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	17391
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	799
	.long	0
	.long	0
	.long	0
	.long	0
	.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	puti
	.type	puti, @function
puti:
.LFB23:
	.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
	movl	%edi, %ebx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	cmpl	$9, %edi
	jg	.L7
.L2:
	movq	stdout(%rip), %rsi
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	leal	48(%rbx), %edi
	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
	jmp	fputc@PLT
	.p2align 4,,10
	.p2align 3
.L7:
	.cfi_restore_state
	movslq	%edi, %r12
	movl	%edi, %eax
	imulq	$1717986919, %r12, %rbp
	sarl	$31, %eax
	sarq	$34, %rbp
	subl	%eax, %ebp
	cmpl	$99, %edi
	jg	.L8
.L3:
	movq	stdout(%rip), %rsi
	leal	48(%rbp), %edi
	call	fputc@PLT
	imulq	$1717986919, %r12, %rax
	movl	%ebx, %edx
	sarl	$31, %edx
	sarq	$34, %rax
	subl	%edx, %eax
	leal	(%rax,%rax,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebx
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L8:
	movl	%ebp, %r13d
	movl	$3435973837, %eax
	movq	%r13, %r14
	imulq	%rax, %r14
	shrq	$35, %r14
	cmpl	$999, %edi
	jg	.L9
.L4:
	movq	stdout(%rip), %rsi
	leal	48(%r14), %edi
	call	fputc@PLT
	movl	$3435973837, %eax
	imulq	%rax, %r13
	shrq	$35, %r13
	leal	0(%r13,%r13,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebp
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%r14d, %r15d
	imulq	%rax, %r15
	shrq	$35, %r15
	movl	%r15d, %edi
	call	puti
	leal	(%r15,%r15,4), %eax
	addl	%eax, %eax
	subl	%eax, %r14d
	jmp	.L4
	.cfi_endproc
.LFE23:
	.size	puti, .-puti
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB24:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	stdin(%rip), %rcx
	movl	$8, %edx
	movl	$1, %esi
	leaq	ch(%rip), %rdi
	call	fread@PLT
	movsbl	ch(%rip), %eax
	movsbl	7+ch(%rip), %edx
	leaq	arr1(%rip), %r8
	movl	%eax, %esi
	subl	$48, %eax
	movl	%edx, %ecx
	subl	$48, %edx
	cltq
	movslq	%edx, %rdx
	leaq	(%rax,%rax,4), %rdi
	leaq	(%rdx,%rdi,2), %rdx
	movl	(%r8,%rdx,4), %edi
	cmpb	$10, %cl
	je	.L17
	cmpb	$57, 6+ch(%rip)
	je	.L18
.L13:
	call	puti
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	call	fputc@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L18:
	.cfi_restore_state
	cmpb	$54, %sil
	je	.L15
	cmpb	$57, %sil
	movl	$25436, %eax
	cmove	%eax, %edi
	jmp	.L13
.L17:
	cmpb	$51, %sil
	je	.L19
	cmpb	$50, %sil
	je	.L20
.L14:
	movsbl	6+ch(%rip), %edx
	imulq	$10, %rax, %rax
	subl	$48, %edx
	movslq	%edx, %rdx
	addq	%rdx, %rax
	movl	(%r8,%rax,4), %edi
	jmp	.L13
.L15:
	movl	$22888, %edi
	jmp	.L13
.L20:
	cmpb	$32, 1+ch(%rip)
	jne	.L14
	movsbl	2+ch(%rip), %edi
	subl	$48, %edi
	jmp	.L13
.L19:
	movsbl	2+ch(%rip), %eax
	movl	$52, %edi
	subl	%eax, %edi
	jmp	.L13
	.cfi_endproc
.LFE24:
	.size	main, .-main
	.globl	ch
	.bss
	.align 16
	.type	ch, @object
	.size	ch, 20
ch:
	.zero	20
	.globl	arr1
	.data
	.align 32
	.type	arr1, @object
	.size	arr1, 400
arr1:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	100000
	.long	0
	.long	9029
	.long	0
	.long	0
	.long	0
	.long	7519
	.long	7572
	.long	1
	.long	0
	.long	0
	.long	0
	.long	0
	.long	9527
	.long	0
	.long	0
	.long	13336
	.long	0
	.long	0
	.long	0
	.long	14416
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	16971
	.long	0
	.long	18448
	.long	0
	.long	50000
	.long	342
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	50000
	.long	0
	.long	20398
	.long	0
	.long	0
	.long	7169
	.long	0
	.long	0
	.long	5300
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	17391
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	799
	.long	0
	.long	0
	.long	0
	.long	0
	.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:

#pragma GCC optimize("O2")
#include <stdio.h>

int arr1[10][10] = {
    {0,0,0,0,0,0,0,0,0,0},
    {0,100000,0,9029,0,0,0,7519,7572,1},
    {0,0,0,0,9527,0,0,13336,0,0},
    {0,14416,0,0,0,0,0,0,0,0},
    {0,0,3,0,0,0,16971,0,18448,0},
    {50000,342,0,0,0,0,0,0,0,50000},
    {0,20398,0,0,7169,0,0,5300,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,17391,0,0,0,0,0,0},
    {0,0,0,0,0,799,0,0,0,0}
};
char ch[20];

void puti(int i) {
    if (i >= 10) {
        puti(i / 10);
        i %= 10;
    }
    fputc(i + '0', stdout);
}

int main(void) {
    // テストケースハックする良くないコード
    fread(ch, sizeof(char), 8, stdin);
    int res = arr1[ch[0] - '0'][ch[7] - '0'];
    if (ch[7] == '\n') {
        if (ch[0] == '3') {
            res = '4' - ch[2];
        }
        else if (ch[0] == '2' && ch[1] == ' ') {
            res = ch[2] - '0';
        }
        else
            res = arr1[ch[0] - '0'][ch[6] - '0'];
    }
    else if (ch[6] == '9') {
        if (ch[0] == '6') {
            res = 22888;
        }
        else if (ch[0] == '9') {
            res = 25436;
        }
    }
    puti(res);
    fputc('\n', stdout);
    return 0;
}
6 2
1 2
2 3
 4 4
1 2
2 3
4 1
3 0
 6 2
1 0
2 6
 6 2
1 2
2 6
 6 2
2 0
2 6
 3 2
1 0
2 3
 4 4
2 2
2 3
4 1
3 4
 4 4
1 2
2 3
4 1
1 0
 6 2
1 2
4 6
 3 2
2 0
2 3

0
 3
 0
 0
 0
 2
 3
 3
 0
 2

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

```c
#pragma GCC optimize("O2")
#include <stdio.h>

int arr1[10][10] = {
    {0,0,0,0,0,0,0,0,0,0},
    {0,100000,0,9029,0,0,0,7519,7572,1},
    {0,0,0,0,9527,0,0,13336,0,0},
    {0,14416,0,0,0,0,0,0,0,0},
    {0,0,3,0,0,0,16971,0,18448,0},
    {50000,342,0,0,0,0,0,0,0,50000},
    {0,20398,0,0,7169,0,0,5300,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,17391,0,0,0,0,0,0},
    {0,0,0,0,0,799,0,0,0,0}
};
char ch[20];

void puti(int i) {
    if (i >= 10) {
        puti(i / 10);
        i %= 10;
    }
    fputc(i + '0', stdout);
}

int main(void) {
    // テストケースハックする良くないコード
    fread(ch, sizeof(char), 8, stdin);
    int res = arr1[ch[0] - '0'][ch[7] - '0'];
    if (ch[7] == '\n') {
        if (ch[0] == '3') {
            res = '4' - ch[2];
        }
        else if (ch[0] == '2' && ch[1] == ' ') {
            res = ch[2] - '0';
        }
        else
            res = arr1[ch[0] - '0'][ch[6] - '0'];
    }
    else if (ch[6] == '9') {
        if (ch[0] == '6') {
            res = 22888;
        }
        else if (ch[0] == '9') {
            res = 25436;
        }
    }
    puti(res);
    fputc('\n', stdout);
    return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	arr1
	.data
	.align 32
	.type	arr1, @object
	.size	arr1, 400
arr1:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	100000
	.long	0
	.long	9029
	.long	0
	.long	0
	.long	0
	.long	7519
	.long	7572
	.long	1
	.long	0
	.long	0
	.long	0
	.long	0
	.long	9527
	.long	0
	.long	0
	.long	13336
	.long	0
	.long	0
	.long	0
	.long	14416
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	16971
	.long	0
	.long	18448
	.long	0
	.long	50000
	.long	342
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	50000
	.long	0
	.long	20398
	.long	0
	.long	0
	.long	7169
	.long	0
	.long	0
	.long	5300
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	17391
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	799
	.long	0
	.long	0
	.long	0
	.long	0
	.globl	ch
	.bss
	.align 16
	.type	ch, @object
	.size	ch, 20
ch:
	.zero	20
	.text
	.p2align 4
	.globl	puti
	.type	puti, @function
puti:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movl	%edi, %ebx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	cmpl	$9, %edi
	jg	.L5
.L2:
	movq	stdout(%rip), %rsi
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	leal	48(%rbx), %edi
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	fputc@PLT
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	movslq	%edi, %rbp
	movl	%edi, %eax
	imulq	$1717986919, %rbp, %rbp
	sarl	$31, %eax
	sarq	$34, %rbp
	subl	%eax, %ebp
	movl	%ebp, %edi
	call	puti
	leal	0(%rbp,%rbp,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebx
	jmp	.L2
	.cfi_endproc
.LFE0:
	.size	puti, .-puti
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	stdin(%rip), %rcx
	movl	$8, %edx
	movl	$1, %esi
	leaq	ch(%rip), %rdi
	call	fread@PLT
	movsbl	ch(%rip), %eax
	movsbl	7+ch(%rip), %edx
	leaq	arr1(%rip), %r8
	movl	%eax, %esi
	subl	$48, %eax
	movl	%edx, %ecx
	subl	$48, %edx
	cltq
	movslq	%edx, %rdx
	leaq	(%rax,%rax,4), %rdi
	leaq	(%rdx,%rdi,2), %rdx
	movl	(%r8,%rdx,4), %edi
	cmpb	$10, %cl
	je	.L13
	cmpb	$57, 6+ch(%rip)
	je	.L14
.L9:
	call	puti
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	call	fputc@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L14:
	.cfi_restore_state
	cmpb	$54, %sil
	je	.L11
	cmpb	$57, %sil
	movl	$25436, %eax
	cmove	%eax, %edi
	jmp	.L9
.L13:
	cmpb	$51, %sil
	je	.L15
	cmpb	$50, %sil
	je	.L16
.L10:
	movsbl	6+ch(%rip), %edx
	imulq	$10, %rax, %rax
	subl	$48, %edx
	movslq	%edx, %rdx
	addq	%rdx, %rax
	movl	(%r8,%rax,4), %edi
	jmp	.L9
.L11:
	movl	$22888, %edi
	jmp	.L9
.L16:
	cmpb	$32, 1+ch(%rip)
	jne	.L10
	movsbl	2+ch(%rip), %edi
	subl	$48, %edi
	jmp	.L9
.L15:
	movsbl	2+ch(%rip), %eax
	movl	$52, %edi
	subl	%eax, %edi
	jmp	.L9
	.cfi_endproc
.LFE1:
	.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	arr1
	.data
	.align 32
	.type	arr1, @object
	.size	arr1, 400
arr1:
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	100000
	.long	0
	.long	9029
	.long	0
	.long	0
	.long	0
	.long	7519
	.long	7572
	.long	1
	.long	0
	.long	0
	.long	0
	.long	0
	.long	9527
	.long	0
	.long	0
	.long	13336
	.long	0
	.long	0
	.long	0
	.long	14416
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	16971
	.long	0
	.long	18448
	.long	0
	.long	50000
	.long	342
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	50000
	.long	0
	.long	20398
	.long	0
	.long	0
	.long	7169
	.long	0
	.long	0
	.long	5300
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	17391
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	799
	.long	0
	.long	0
	.long	0
	.long	0
	.globl	ch
	.bss
	.align 16
	.type	ch, @object
	.size	ch, 20
ch:
	.zero	20
	.text
	.p2align 4
	.globl	puti
	.type	puti, @function
puti:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movl	%edi, %ebx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	cmpl	$9, %edi
	jg	.L5
.L2:
	movq	stdout(%rip), %rsi
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	leal	48(%rbx), %edi
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	jmp	fputc@PLT
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	movslq	%edi, %rbp
	movl	%edi, %eax
	imulq	$1717986919, %rbp, %rbp
	sarl	$31, %eax
	sarq	$34, %rbp
	subl	%eax, %ebp
	movl	%ebp, %edi
	call	puti
	leal	0(%rbp,%rbp,4), %eax
	addl	%eax, %eax
	subl	%eax, %ebx
	jmp	.L2
	.cfi_endproc
.LFE0:
	.size	puti, .-puti
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	stdin(%rip), %rcx
	movl	$8, %edx
	movl	$1, %esi
	leaq	ch(%rip), %rdi
	call	fread@PLT
	movsbl	ch(%rip), %eax
	movsbl	7+ch(%rip), %edx
	leaq	arr1(%rip), %r8
	movl	%eax, %esi
	subl	$48, %eax
	movl	%edx, %ecx
	subl	$48, %edx
	cltq
	movslq	%edx, %rdx
	leaq	(%rax,%rax,4), %rdi
	leaq	(%rdx,%rdi,2), %rdx
	movl	(%r8,%rdx,4), %edi
	cmpb	$10, %cl
	je	.L13
	cmpb	$57, 6+ch(%rip)
	je	.L14
.L9:
	call	puti
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	call	fputc@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L14:
	.cfi_restore_state
	cmpb	$54, %sil
	je	.L11
	cmpb	$57, %sil
	movl	$25436, %eax
	cmove	%eax, %edi
	jmp	.L9
.L13:
	cmpb	$51, %sil
	je	.L15
	cmpb	$50, %sil
	je	.L16
.L10:
	movsbl	6+ch(%rip), %edx
	imulq	$10, %rax, %rax
	subl	$48, %edx
	movslq	%edx, %rdx
	addq	%rdx, %rax
	movl	(%r8,%rax,4), %edi
	jmp	.L9
.L11:
	movl	$22888, %edi
	jmp	.L9
.L16:
	cmpb	$32, 1+ch(%rip)
	jne	.L10
	movsbl	2+ch(%rip), %edi
	subl	$48, %edi
	jmp	.L9
.L15:
	movsbl	2+ch(%rip), %eax
	movl	$52, %edi
	subl	%eax, %edi
	jmp	.L9
	.cfi_endproc
.LFE1:
	.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:
