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>

 int main(){
     
     int b[10];
     int bingo = 0;
     scanf("%d %d %d", &b[0],&b[1],&b[2]);
     scanf("%d %d %d", &b[3],&b[4],&b[5]);
     scanf("%d %d %d", &b[6],&b[7],&b[8]);
     int times;
     int num[50] = {0};
     scanf("%d", &times);
     for(int i = 0; i<times;i++){
         scanf("%d", &num[i]);
     }
     for(int i = 0; i<times;i++){
         for(int j=0;j<9;j++){
             if(num[i] == b[j]){
                 b[j] = 777;
             }
         }
     }
    if(b[0] == 777 && b[1] == 777 && b[2] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[6] == 777 && b[7] == 777 && b[8] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[0] == 777 && b[3] == 777 && b[6] == 777){
        bingo++;
    }else if(b[1] == 777 && b[4] == 777 && b[7] == 777){
        bingo++;
    }else if(b[2] == 777 && b[5] == 777 && b[8] == 777){
        bingo++;
    }else if(b[0] == 777 && b[4] == 777 && b[8] == 777){
        bingo++;
    }else if(b[2] == 777 && b[4] == 777 && b[6] == 777){
        bingo++;
    }
    
    if(bingo > 0){
        printf("Yes\n");
    }else{
        printf("No\n");
    }     
 return 0;
 }```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata
.LC0:
	.string	"%d %d %d"
.LC1:
	.string	"%d"
.LC2:
	.string	"Yes"
.LC3:
	.string	"No"
	.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	$288, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -272(%rbp)
	leaq	-256(%rbp), %rax
	leaq	8(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	4(%rax), %rdx
	leaq	-256(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	20(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	16(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$12, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	32(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	28(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$24, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-208(%rbp), %rdx
	movl	$0, %eax
	movl	$25, %ecx
	movq	%rdx, %rdi
	rep stosq
	leaq	-276(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -268(%rbp)
	jmp	.L2
.L3:
	leaq	-208(%rbp), %rdx
	movl	-268(%rbp), %eax
	cltq
	salq	$2, %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -268(%rbp)
.L2:
	movl	-276(%rbp), %eax
	cmpl	%eax, -268(%rbp)
	jl	.L3
	movl	$0, -264(%rbp)
	jmp	.L4
.L8:
	movl	$0, -260(%rbp)
	jmp	.L5
.L7:
	movl	-264(%rbp), %eax
	cltq
	movl	-208(%rbp,%rax,4), %edx
	movl	-260(%rbp), %eax
	cltq
	movl	-256(%rbp,%rax,4), %eax
	cmpl	%eax, %edx
	jne	.L6
	movl	-260(%rbp), %eax
	cltq
	movl	$777, -256(%rbp,%rax,4)
.L6:
	addl	$1, -260(%rbp)
.L5:
	cmpl	$8, -260(%rbp)
	jle	.L7
	addl	$1, -264(%rbp)
.L4:
	movl	-276(%rbp), %eax
	cmpl	%eax, -264(%rbp)
	jl	.L8
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	addl	$1, -272(%rbp)
	jmp	.L10
.L9:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	addl	$1, -272(%rbp)
	jmp	.L10
.L11:
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	addl	$1, -272(%rbp)
	jmp	.L10
.L12:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	addl	$1, -272(%rbp)
	jmp	.L10
.L13:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	addl	$1, -272(%rbp)
	jmp	.L10
.L14:
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	addl	$1, -272(%rbp)
	jmp	.L10
.L15:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	addl	$1, -272(%rbp)
	jmp	.L10
.L16:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	addl	$1, -272(%rbp)
	jmp	.L10
.L17:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	addl	$1, -272(%rbp)
.L10:
	cmpl	$0, -272(%rbp)
	jle	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	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 %d %d"
.LC1:
	.string	"%d"
.LC2:
	.string	"Yes"
.LC3:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.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
	leaq	.LC1(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rbp, %rdi
	subq	$296, %rsp
	.cfi_def_cfa_offset 352
	movq	%fs:40, %rax
	movq	%rax, 280(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %rsi
	leaq	40(%rsp), %rcx
	leaq	36(%rsp), %rdx
	leaq	80(%rsp), %rbx
	movq	%rbx, %r13
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	leaq	52(%rsp), %rcx
	xorl	%eax, %eax
	leaq	48(%rsp), %rdx
	leaq	44(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	leaq	64(%rsp), %rcx
	xorl	%eax, %eax
	leaq	60(%rsp), %rdx
	leaq	56(%rsp), %rsi
	movq	%rbx, %rbp
	call	__isoc99_scanf@PLT
	xorl	%eax, %eax
	movl	$25, %ecx
	movq	%rbx, %rdi
	rep stosq
	leaq	28(%rsp), %rsi
	movq	%r14, %rdi
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	testl	%eax, %eax
	jle	.L106
	.p2align 4,,10
	.p2align 3
.L4:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addl	$1, %r12d
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %edi
	addq	$4, %r13
	cmpl	%r12d, %edi
	jg	.L4
	movl	32(%rsp), %eax
	movl	%eax, 12(%rsp)
	movl	%eax, %esi
	testl	%edi, %edi
	jle	.L3
	movb	$0, 6(%rsp)
	movl	36(%rsp), %r9d
	xorl	%r15d, %r15d
	xorl	%r14d, %r14d
	leal	-1(%rdi), %r13d
	leaq	4(%rbx), %rdi
	movb	$0, 7(%rsp)
	movl	40(%rsp), %r10d
	leaq	(%rdi,%r13,4), %rbx
	movb	$0, 9(%rsp)
	movl	44(%rsp), %r11d
	xorl	%r13d, %r13d
	movl	48(%rsp), %r12d
	movl	52(%rsp), %r8d
	movb	$0, 8(%rsp)
	movl	56(%rsp), %ecx
	movl	60(%rsp), %edx
	movb	$0, 11(%rsp)
	movb	$0, 10(%rsp)
	movl	64(%rsp), %eax
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L108:
	cmpq	%rdi, %rbx
	je	.L107
.L15:
	addq	$4, %rdi
.L18:
	movl	0(%rbp), %ebp
	cmpl	%esi, %ebp
	jne	.L6
	movb	$1, 10(%rsp)
	movl	$777, %esi
.L6:
	cmpl	%r9d, %ebp
	jne	.L7
	movb	$1, 11(%rsp)
	movl	$777, %r9d
.L7:
	cmpl	%ebp, %r10d
	jne	.L8
	movb	$1, 8(%rsp)
	movl	$777, %r10d
.L8:
	cmpl	%ebp, %r11d
	jne	.L9
	movb	$1, 9(%rsp)
	movl	$777, %r11d
.L9:
	cmpl	%ebp, %r12d
	jne	.L10
	movb	$1, 7(%rsp)
	movl	$777, %r12d
.L10:
	cmpl	%ebp, %r8d
	jne	.L11
	movb	$1, 6(%rsp)
	movl	$777, %r8d
.L11:
	cmpl	%ebp, %ecx
	jne	.L12
	movl	$1, %r14d
	movl	$777, %ecx
.L12:
	cmpl	%ebp, %edx
	jne	.L13
	movl	$1, %r13d
	movl	$777, %edx
.L13:
	cmpl	%ebp, %eax
	movq	%rdi, %rbp
	jne	.L108
	movl	$777, %eax
	cmpq	%rdi, %rbx
	je	.L17
	movl	$1, %r15d
	jmp	.L15
.L106:
	movl	32(%rsp), %eax
	movl	%eax, 12(%rsp)
.L3:
	cmpl	$777, 12(%rsp)
	je	.L109
.L27:
	cmpl	$777, 44(%rsp)
	je	.L110
	movl	56(%rsp), %eax
	cmpl	$777, %eax
	je	.L111
.L40:
	cmpl	$777, 36(%rsp)
	je	.L112
.L32:
	movl	40(%rsp), %edx
	cmpl	$777, %edx
	je	.L113
	cmpl	$777, 12(%rsp)
	je	.L37
.L35:
	leaq	.LC3(%rip), %rdi
	call	puts@PLT
.L36:
	movq	280(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L114
	addq	$296, %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
.L107:
	.cfi_restore_state
	testb	%r15b, %r15b
	jne	.L17
.L19:
	testb	%r13b, %r13b
	je	.L20
	movl	%edx, 60(%rsp)
.L20:
	testb	%r14b, %r14b
	je	.L21
	movl	%ecx, 56(%rsp)
.L21:
	cmpb	$0, 6(%rsp)
	je	.L22
	movl	%r8d, 52(%rsp)
.L22:
	cmpb	$0, 7(%rsp)
	je	.L23
	movl	%r12d, 48(%rsp)
.L23:
	cmpb	$0, 9(%rsp)
	je	.L24
	movl	%r11d, 44(%rsp)
.L24:
	cmpb	$0, 8(%rsp)
	je	.L25
	movl	%r10d, 40(%rsp)
.L25:
	cmpb	$0, 11(%rsp)
	je	.L26
	movl	%r9d, 36(%rsp)
.L26:
	cmpb	$0, 10(%rsp)
	je	.L3
	movl	%esi, 32(%rsp)
	movl	%esi, 12(%rsp)
	jmp	.L3
.L17:
	movl	%eax, 64(%rsp)
	jmp	.L19
.L111:
	cmpl	$777, 60(%rsp)
	jne	.L40
	cmpl	$777, 64(%rsp)
	jne	.L40
.L28:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L36
.L113:
	cmpl	$777, 52(%rsp)
	je	.L115
.L34:
	cmpl	$777, 12(%rsp)
	jne	.L38
.L37:
	cmpl	$777, 48(%rsp)
	jne	.L35
	cmpl	$777, 64(%rsp)
	je	.L28
	cmpl	$777, %edx
	jne	.L35
.L38:
	cmpl	$777, 48(%rsp)
	jne	.L35
	cmpl	$777, %eax
	jne	.L35
	jmp	.L28
.L109:
	cmpl	$777, 36(%rsp)
	jne	.L27
	cmpl	$777, 40(%rsp)
	jne	.L27
	jmp	.L28
.L110:
	cmpl	$777, 48(%rsp)
	je	.L116
.L30:
	movl	56(%rsp), %eax
	cmpl	$777, %eax
	je	.L41
	cmpl	$777, 48(%rsp)
	jne	.L40
	cmpl	$777, 52(%rsp)
	jne	.L40
	jmp	.L28
.L112:
	cmpl	$777, 48(%rsp)
	jne	.L32
	cmpl	$777, 60(%rsp)
	jne	.L32
	jmp	.L28
.L41:
	cmpl	$777, 60(%rsp)
	je	.L117
.L45:
	cmpl	$777, 48(%rsp)
	je	.L118
.L31:
	cmpl	$777, 12(%rsp)
	jne	.L40
	jmp	.L28
.L115:
	cmpl	$777, 64(%rsp)
	jne	.L34
	jmp	.L28
.L116:
	cmpl	$777, 52(%rsp)
	jne	.L30
	jmp	.L28
.L118:
	cmpl	$777, 52(%rsp)
	jne	.L31
	jmp	.L28
.L117:
	cmpl	$777, 64(%rsp)
	jne	.L45
	jmp	.L28
.L114:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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:

rule
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d %d %d"
.LC1:
	.string	"%d"
.LC2:
	.string	"Yes"
.LC3:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.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
	leaq	.LC1(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rbp, %rdi
	subq	$296, %rsp
	.cfi_def_cfa_offset 352
	movq	%fs:40, %rax
	movq	%rax, 280(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %rsi
	leaq	40(%rsp), %rcx
	leaq	36(%rsp), %rdx
	leaq	80(%rsp), %rbx
	movq	%rbx, %r13
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	leaq	52(%rsp), %rcx
	xorl	%eax, %eax
	leaq	48(%rsp), %rdx
	leaq	44(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movq	%rbp, %rdi
	leaq	64(%rsp), %rcx
	xorl	%eax, %eax
	leaq	60(%rsp), %rdx
	leaq	56(%rsp), %rsi
	movq	%rbx, %rbp
	call	__isoc99_scanf@PLT
	xorl	%eax, %eax
	movl	$25, %ecx
	movq	%rbx, %rdi
	rep stosq
	leaq	28(%rsp), %rsi
	movq	%r14, %rdi
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	testl	%eax, %eax
	jle	.L106
	.p2align 4,,10
	.p2align 3
.L4:
	movq	%r13, %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addl	$1, %r12d
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %edi
	addq	$4, %r13
	cmpl	%r12d, %edi
	jg	.L4
	movl	32(%rsp), %eax
	movl	%eax, 12(%rsp)
	movl	%eax, %esi
	testl	%edi, %edi
	jle	.L3
	movb	$0, 6(%rsp)
	movl	36(%rsp), %r9d
	xorl	%r15d, %r15d
	xorl	%r14d, %r14d
	leal	-1(%rdi), %r13d
	leaq	4(%rbx), %rdi
	movb	$0, 7(%rsp)
	movl	40(%rsp), %r10d
	leaq	(%rdi,%r13,4), %rbx
	movb	$0, 9(%rsp)
	movl	44(%rsp), %r11d
	xorl	%r13d, %r13d
	movl	48(%rsp), %r12d
	movl	52(%rsp), %r8d
	movb	$0, 8(%rsp)
	movl	56(%rsp), %ecx
	movl	60(%rsp), %edx
	movb	$0, 11(%rsp)
	movb	$0, 10(%rsp)
	movl	64(%rsp), %eax
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L108:
	cmpq	%rdi, %rbx
	je	.L107
.L15:
	addq	$4, %rdi
.L18:
	movl	0(%rbp), %ebp
	cmpl	%esi, %ebp
	jne	.L6
	movb	$1, 10(%rsp)
	movl	$777, %esi
.L6:
	cmpl	%r9d, %ebp
	jne	.L7
	movb	$1, 11(%rsp)
	movl	$777, %r9d
.L7:
	cmpl	%ebp, %r10d
	jne	.L8
	movb	$1, 8(%rsp)
	movl	$777, %r10d
.L8:
	cmpl	%ebp, %r11d
	jne	.L9
	movb	$1, 9(%rsp)
	movl	$777, %r11d
.L9:
	cmpl	%ebp, %r12d
	jne	.L10
	movb	$1, 7(%rsp)
	movl	$777, %r12d
.L10:
	cmpl	%ebp, %r8d
	jne	.L11
	movb	$1, 6(%rsp)
	movl	$777, %r8d
.L11:
	cmpl	%ebp, %ecx
	jne	.L12
	movl	$1, %r14d
	movl	$777, %ecx
.L12:
	cmpl	%ebp, %edx
	jne	.L13
	movl	$1, %r13d
	movl	$777, %edx
.L13:
	cmpl	%ebp, %eax
	movq	%rdi, %rbp
	jne	.L108
	movl	$777, %eax
	cmpq	%rdi, %rbx
	je	.L17
	movl	$1, %r15d
	jmp	.L15
.L106:
	movl	32(%rsp), %eax
	movl	%eax, 12(%rsp)
.L3:
	cmpl	$777, 12(%rsp)
	je	.L109
.L27:
	cmpl	$777, 44(%rsp)
	je	.L110
	movl	56(%rsp), %eax
	cmpl	$777, %eax
	je	.L111
.L40:
	cmpl	$777, 36(%rsp)
	je	.L112
.L32:
	movl	40(%rsp), %edx
	cmpl	$777, %edx
	je	.L113
	cmpl	$777, 12(%rsp)
	je	.L37
.L35:
	leaq	.LC3(%rip), %rdi
	call	puts@PLT
.L36:
	movq	280(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L114
	addq	$296, %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
.L107:
	.cfi_restore_state
	testb	%r15b, %r15b
	jne	.L17
.L19:
	testb	%r13b, %r13b
	je	.L20
	movl	%edx, 60(%rsp)
.L20:
	testb	%r14b, %r14b
	je	.L21
	movl	%ecx, 56(%rsp)
.L21:
	cmpb	$0, 6(%rsp)
	je	.L22
	movl	%r8d, 52(%rsp)
.L22:
	cmpb	$0, 7(%rsp)
	je	.L23
	movl	%r12d, 48(%rsp)
.L23:
	cmpb	$0, 9(%rsp)
	je	.L24
	movl	%r11d, 44(%rsp)
.L24:
	cmpb	$0, 8(%rsp)
	je	.L25
	movl	%r10d, 40(%rsp)
.L25:
	cmpb	$0, 11(%rsp)
	je	.L26
	movl	%r9d, 36(%rsp)
.L26:
	cmpb	$0, 10(%rsp)
	je	.L3
	movl	%esi, 32(%rsp)
	movl	%esi, 12(%rsp)
	jmp	.L3
.L17:
	movl	%eax, 64(%rsp)
	jmp	.L19
.L111:
	cmpl	$777, 60(%rsp)
	jne	.L40
	cmpl	$777, 64(%rsp)
	jne	.L40
.L28:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L36
.L113:
	cmpl	$777, 52(%rsp)
	je	.L115
.L34:
	cmpl	$777, 12(%rsp)
	jne	.L38
.L37:
	cmpl	$777, 48(%rsp)
	jne	.L35
	cmpl	$777, 64(%rsp)
	je	.L28
	cmpl	$777, %edx
	jne	.L35
.L38:
	cmpl	$777, 48(%rsp)
	jne	.L35
	cmpl	$777, %eax
	jne	.L35
	jmp	.L28
.L109:
	cmpl	$777, 36(%rsp)
	jne	.L27
	cmpl	$777, 40(%rsp)
	jne	.L27
	jmp	.L28
.L110:
	cmpl	$777, 48(%rsp)
	je	.L116
.L30:
	movl	56(%rsp), %eax
	cmpl	$777, %eax
	je	.L41
	cmpl	$777, 48(%rsp)
	jne	.L40
	cmpl	$777, 52(%rsp)
	jne	.L40
	jmp	.L28
.L112:
	cmpl	$777, 48(%rsp)
	jne	.L32
	cmpl	$777, 60(%rsp)
	jne	.L32
	jmp	.L28
.L41:
	cmpl	$777, 60(%rsp)
	je	.L117
.L45:
	cmpl	$777, 48(%rsp)
	je	.L118
.L31:
	cmpl	$777, 12(%rsp)
	jne	.L40
	jmp	.L28
.L115:
	cmpl	$777, 64(%rsp)
	jne	.L34
	jmp	.L28
.L116:
	cmpl	$777, 52(%rsp)
	jne	.L30
	jmp	.L28
.L118:
	cmpl	$777, 52(%rsp)
	jne	.L31
	jmp	.L28
.L117:
	cmpl	$777, 64(%rsp)
	jne	.L45
	jmp	.L28
.L114:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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:

#include<stdio.h>

 int main(){
     
     int b[10];
     int bingo = 0;
     scanf("%d %d %d", &b[0],&b[1],&b[2]);
     scanf("%d %d %d", &b[3],&b[4],&b[5]);
     scanf("%d %d %d", &b[6],&b[7],&b[8]);
     int times;
     int num[50] = {0};
     scanf("%d", &times);
     for(int i = 0; i<times;i++){
         scanf("%d", &num[i]);
     }
     for(int i = 0; i<times;i++){
         for(int j=0;j<9;j++){
             if(num[i] == b[j]){
                 b[j] = 777;
             }
         }
     }
    if(b[0] == 777 && b[1] == 777 && b[2] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[6] == 777 && b[7] == 777 && b[8] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[0] == 777 && b[3] == 777 && b[6] == 777){
        bingo++;
    }else if(b[1] == 777 && b[4] == 777 && b[7] == 777){
        bingo++;
    }else if(b[2] == 777 && b[5] == 777 && b[8] == 777){
        bingo++;
    }else if(b[0] == 777 && b[4] == 777 && b[8] == 777){
        bingo++;
    }else if(b[2] == 777 && b[4] == 777 && b[6] == 777){
        bingo++;
    }
    
    if(bingo > 0){
        printf("Yes\n");
    }else{
        printf("No\n");
    }     
 return 0;
 }
60 88 34
92 41 43
39 73 48
10
60
43
88
11
48
73
65
41
92
34
 41 7 46
26 89 2
78 92 8
5
12
45
16
57
17
 84 97 66
79 89 11
61 59 7
7
89
7
146
79
24
84
30
 60 106 34
92 41 43
39 73 48
10
60
43
88
11
48
73
65
41
92
34
 84 97 66
79 89 11
61 59 7
7
95
7
146
79
24
84
30
 41 6 46
26 89 2
78 92 8
5
12
45
16
57
17
 60 68 34
92 41 43
39 73 48
10
60
43
88
11
48
73
65
41
92
34
 84 97 66
79 89 6
61 59 7
7
95
7
146
79
24
84
30
 41 6 46
1 89 2
78 92 8
5
12
45
16
57
17
 60 68 34
92 41 43
39 73 48
10
60
43
88
10
48
73
65
41
92
34

Yes
 No
 Yes
 Yes
 No
 No
 Yes
 No
 No
 Yes

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>

 int main(){
     
     int b[10];
     int bingo = 0;
     scanf("%d %d %d", &b[0],&b[1],&b[2]);
     scanf("%d %d %d", &b[3],&b[4],&b[5]);
     scanf("%d %d %d", &b[6],&b[7],&b[8]);
     int times;
     int num[50] = {0};
     scanf("%d", &times);
     for(int i = 0; i<times;i++){
         scanf("%d", &num[i]);
     }
     for(int i = 0; i<times;i++){
         for(int j=0;j<9;j++){
             if(num[i] == b[j]){
                 b[j] = 777;
             }
         }
     }
    if(b[0] == 777 && b[1] == 777 && b[2] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[6] == 777 && b[7] == 777 && b[8] == 777){
        bingo++;
    }else if(b[3] == 777 && b[4] == 777 && b[5] == 777){
        bingo++;
    }else if(b[0] == 777 && b[3] == 777 && b[6] == 777){
        bingo++;
    }else if(b[1] == 777 && b[4] == 777 && b[7] == 777){
        bingo++;
    }else if(b[2] == 777 && b[5] == 777 && b[8] == 777){
        bingo++;
    }else if(b[0] == 777 && b[4] == 777 && b[8] == 777){
        bingo++;
    }else if(b[2] == 777 && b[4] == 777 && b[6] == 777){
        bingo++;
    }
    
    if(bingo > 0){
        printf("Yes\n");
    }else{
        printf("No\n");
    }     
 return 0;
 }```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata
.LC0:
	.string	"%d %d %d"
.LC1:
	.string	"%d"
.LC2:
	.string	"Yes"
.LC3:
	.string	"No"
	.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	$288, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -272(%rbp)
	leaq	-256(%rbp), %rax
	leaq	8(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	4(%rax), %rdx
	leaq	-256(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	20(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	16(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$12, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	32(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	28(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$24, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-208(%rbp), %rdx
	movl	$0, %eax
	movl	$25, %ecx
	movq	%rdx, %rdi
	rep stosq
	leaq	-276(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -268(%rbp)
	jmp	.L2
.L3:
	leaq	-208(%rbp), %rdx
	movl	-268(%rbp), %eax
	cltq
	salq	$2, %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -268(%rbp)
.L2:
	movl	-276(%rbp), %eax
	cmpl	%eax, -268(%rbp)
	jl	.L3
	movl	$0, -264(%rbp)
	jmp	.L4
.L8:
	movl	$0, -260(%rbp)
	jmp	.L5
.L7:
	movl	-264(%rbp), %eax
	cltq
	movl	-208(%rbp,%rax,4), %edx
	movl	-260(%rbp), %eax
	cltq
	movl	-256(%rbp,%rax,4), %eax
	cmpl	%eax, %edx
	jne	.L6
	movl	-260(%rbp), %eax
	cltq
	movl	$777, -256(%rbp,%rax,4)
.L6:
	addl	$1, -260(%rbp)
.L5:
	cmpl	$8, -260(%rbp)
	jle	.L7
	addl	$1, -264(%rbp)
.L4:
	movl	-276(%rbp), %eax
	cmpl	%eax, -264(%rbp)
	jl	.L8
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	addl	$1, -272(%rbp)
	jmp	.L10
.L9:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	addl	$1, -272(%rbp)
	jmp	.L10
.L11:
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	addl	$1, -272(%rbp)
	jmp	.L10
.L12:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	addl	$1, -272(%rbp)
	jmp	.L10
.L13:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	addl	$1, -272(%rbp)
	jmp	.L10
.L14:
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	addl	$1, -272(%rbp)
	jmp	.L10
.L15:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	addl	$1, -272(%rbp)
	jmp	.L10
.L16:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	addl	$1, -272(%rbp)
	jmp	.L10
.L17:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	addl	$1, -272(%rbp)
.L10:
	cmpl	$0, -272(%rbp)
	jle	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	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 %d %d"
.LC1:
	.string	"%d"
.LC2:
	.string	"Yes"
.LC3:
	.string	"No"
	.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	$288, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -272(%rbp)
	leaq	-256(%rbp), %rax
	leaq	8(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	4(%rax), %rdx
	leaq	-256(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	20(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	16(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$12, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-256(%rbp), %rax
	leaq	32(%rax), %rcx
	leaq	-256(%rbp), %rax
	leaq	28(%rax), %rdx
	leaq	-256(%rbp), %rax
	addq	$24, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	leaq	-208(%rbp), %rdx
	movl	$0, %eax
	movl	$25, %ecx
	movq	%rdx, %rdi
	rep stosq
	leaq	-276(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -268(%rbp)
	jmp	.L2
.L3:
	leaq	-208(%rbp), %rdx
	movl	-268(%rbp), %eax
	cltq
	salq	$2, %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -268(%rbp)
.L2:
	movl	-276(%rbp), %eax
	cmpl	%eax, -268(%rbp)
	jl	.L3
	movl	$0, -264(%rbp)
	jmp	.L4
.L8:
	movl	$0, -260(%rbp)
	jmp	.L5
.L7:
	movl	-264(%rbp), %eax
	cltq
	movl	-208(%rbp,%rax,4), %edx
	movl	-260(%rbp), %eax
	cltq
	movl	-256(%rbp,%rax,4), %eax
	cmpl	%eax, %edx
	jne	.L6
	movl	-260(%rbp), %eax
	cltq
	movl	$777, -256(%rbp,%rax,4)
.L6:
	addl	$1, -260(%rbp)
.L5:
	cmpl	$8, -260(%rbp)
	jle	.L7
	addl	$1, -264(%rbp)
.L4:
	movl	-276(%rbp), %eax
	cmpl	%eax, -264(%rbp)
	jl	.L8
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L9
	addl	$1, -272(%rbp)
	jmp	.L10
.L9:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L11
	addl	$1, -272(%rbp)
	jmp	.L10
.L11:
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L12
	addl	$1, -272(%rbp)
	jmp	.L10
.L12:
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L13
	addl	$1, -272(%rbp)
	jmp	.L10
.L13:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-244(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L14
	addl	$1, -272(%rbp)
	jmp	.L10
.L14:
	movl	-252(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	movl	-228(%rbp), %eax
	cmpl	$777, %eax
	jne	.L15
	addl	$1, -272(%rbp)
	jmp	.L10
.L15:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-236(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L16
	addl	$1, -272(%rbp)
	jmp	.L10
.L16:
	movl	-256(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	movl	-224(%rbp), %eax
	cmpl	$777, %eax
	jne	.L17
	addl	$1, -272(%rbp)
	jmp	.L10
.L17:
	movl	-248(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-240(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	movl	-232(%rbp), %eax
	cmpl	$777, %eax
	jne	.L10
	addl	$1, -272(%rbp)
.L10:
	cmpl	$0, -272(%rbp)
	jle	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	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:
