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>
char s[101];
a(p){return s[p]==0?0:s[p]=='0'?x(p+1):y(p+1);}
b(p){return s[p]==0?1:s[p]=='0'?y(p+1):x(p+1);}
w(p){return s[p]==0?0:s[p]=='0'?b(p+1):y(p+1);}
x(p){return s[p]==0?0:s[p]=='0'?0:z(p+1);}
y(p){return s[p]==0?0:s[p]=='0'?x(p+1):0;}
z(p){return s[p]==0?0:s[p]=='0'?w(p+1):b(p+1);}
main(n)
{
	for(;scanf("%s",s),s[0]!='#';)
		puts(a(0)?"Yes":"No");
	exit(0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	s
	.bss
	.align 32
	.type	s, @object
	.size	s, 101
s:
	.zero	101
	.text
	.globl	a
	.type	a, @function
a:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L2
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L3
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L6
.L3:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L6
.L2:
	movl	$0, %eax
.L6:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	a, .-a
	.globl	b
	.type	b, @function
b:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L8
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L9
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L12
.L9:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L12
.L8:
	movl	$1, %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	b, .-b
	.globl	w
	.type	w, @function
w:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L14
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L15
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L18
.L15:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L18
.L14:
	movl	$0, %eax
.L18:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	w, .-w
	.globl	x
	.type	x, @function
x:
.LFB3:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L20
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	je	.L21
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	z
	jmp	.L24
.L21:
	movl	$0, %eax
	jmp	.L24
.L20:
	movl	$0, %eax
.L24:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	x, .-x
	.globl	y
	.type	y, @function
y:
.LFB4:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L26
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L27
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L30
.L27:
	movl	$0, %eax
	jmp	.L30
.L26:
	movl	$0, %eax
.L30:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	y, .-y
	.globl	z
	.type	z, @function
z:
.LFB5:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L32
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L33
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	w
	jmp	.L36
.L33:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L36
.L32:
	movl	$0, %eax
.L36:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	z, .-z
	.section	.rodata
.LC0:
	.string	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	jmp	.L38
.L41:
	movl	$0, %edi
	movl	$0, %eax
	call	a
	testl	%eax, %eax
	je	.L39
	leaq	.LC0(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC1(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L38:
	leaq	s(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	s(%rip), %eax
	cmpb	$35, %al
	jne	.L41
	movl	$0, %edi
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.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	b
	.type	b, @function
b:
.LFB24:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L6
.L2:
	leal	1(%rdi), %r9d
	movslq	%r9d, %rcx
	movzbl	(%rax,%rcx), %ecx
	cmpb	$48, %dl
	je	.L24
	cmpb	$48, %cl
	je	.L10
	testb	%cl, %cl
	jne	.L25
.L10:
	xorl	%r8d, %r8d
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	movl	$1, %r8d
.L1:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L24:
	xorl	%r8d, %r8d
	cmpb	$48, %cl
	jne	.L1
.L22:
	movl	%r9d, %edi
	xorl	%eax, %eax
	jmp	y.part.0
	.p2align 4,,10
	.p2align 3
.L25:
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L10
	leal	3(%rdi), %r9d
	cmpb	$48, %dl
	je	.L26
.L5:
	movslq	%r9d, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L6
	movl	%r9d, %edi
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L26:
	movslq	%r9d, %r9
	movzbl	(%rax,%r9), %edx
	testb	%dl, %dl
	je	.L10
	leal	4(%rdi), %r9d
	cmpb	$48, %dl
	je	.L5
	movslq	%r9d, %rdx
	xorl	%r8d, %r8d
	cmpb	$48, (%rax,%rdx)
	jne	.L1
	jmp	.L22
	.cfi_endproc
.LFE24:
	.size	b, .-b
	.p2align 4
	.type	y.part.0, @function
y.part.0:
.LFB32:
	.cfi_startproc
	movslq	%edi, %rax
	leaq	s(%rip), %rdx
	addq	%rdx, %rax
.L31:
	movzbl	1(%rax), %edx
	cmpb	$48, %dl
	je	.L27
	testb	%dl, %dl
	jne	.L45
.L27:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L45:
	movzbl	2(%rax), %edx
	testb	%dl, %dl
	je	.L27
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L46
	movl	%r8d, %edi
.L44:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L46:
	movzbl	3(%rax), %edx
	testb	%dl, %dl
	je	.L27
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L44
	addq	$4, %rax
	cmpb	$48, (%rax)
	jne	.L27
	jmp	.L31
	.cfi_endproc
.LFE32:
	.size	y.part.0, .-y.part.0
	.p2align 4
	.globl	a
	.type	a, @function
a:
.LFB23:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L47
	leal	1(%rdi), %r8d
	movslq	%r8d, %rcx
	movzbl	(%rax,%rcx), %ecx
	cmpb	$48, %dl
	je	.L69
	cmpb	$48, %cl
	je	.L70
.L47:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L69:
	cmpb	$48, %cl
	je	.L47
	testb	%cl, %cl
	je	.L47
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L47
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L71
	movl	%r8d, %edi
.L67:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L70:
	movl	%r8d, %edi
.L68:
	xorl	%eax, %eax
	jmp	y.part.0
.L71:
	movslq	%r8d, %r8
	movzbl	(%rax,%r8), %edx
	testb	%dl, %dl
	je	.L47
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L67
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	jne	.L47
	jmp	.L68
	.cfi_endproc
.LFE23:
	.size	a, .-a
	.p2align 4
	.globl	w
	.type	w, @function
w:
.LFB25:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rdx
	movslq	%edi, %rax
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	je	.L72
	addl	$1, %edi
	cmpb	$48, %al
	je	.L78
	movslq	%edi, %rax
	cmpb	$48, (%rdx,%rax)
	je	.L79
.L72:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L78:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L79:
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE25:
	.size	w, .-w
	.p2align 4
	.globl	x
	.type	x, @function
x:
.LFB26:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rdx
	movslq	%edi, %rax
	movzbl	(%rdx,%rax), %eax
	cmpb	$48, %al
	je	.L80
	testb	%al, %al
	jne	.L97
.L80:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L97:
	leal	1(%rdi), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	je	.L80
	leal	2(%rdi), %r8d
	cmpb	$48, %al
	je	.L98
	movl	%r8d, %edi
.L96:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L98:
	movslq	%r8d, %r8
	movzbl	(%rdx,%r8), %eax
	testb	%al, %al
	je	.L80
	addl	$3, %edi
	cmpb	$48, %al
	je	.L96
	movslq	%edi, %rax
	cmpb	$48, (%rdx,%rax)
	jne	.L80
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE26:
	.size	x, .-x
	.p2align 4
	.globl	y
	.type	y, @function
y:
.LFB27:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	je	.L117
.L99:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L117:
	leal	1(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	cmpb	$48, %dl
	je	.L99
	testb	%dl, %dl
	je	.L99
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L99
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L118
	movl	%r8d, %edi
.L116:
	xorl	%eax, %eax
	jmp	b
.L118:
	movslq	%r8d, %r8
	movzbl	(%rax,%r8), %edx
	testb	%dl, %dl
	je	.L99
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L116
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	jne	.L99
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE27:
	.size	y, .-y
	.p2align 4
	.globl	z
	.type	z, @function
z:
.LFB28:
	.cfi_startproc
	endbr64
	movslq	%edi, %rdx
	leaq	s(%rip), %rsi
	movq	%rdx, %rax
	movzbl	(%rsi,%rdx), %edx
	testb	%dl, %dl
	je	.L133
	leal	1(%rax), %ecx
	movslq	%ecx, %rcx
	movzbl	(%rsi,%rcx), %ecx
	cmpb	$48, %dl
	je	.L145
	testb	%cl, %cl
	je	.L129
	leal	2(%rax), %edi
	movslq	%edi, %rdx
	movzbl	(%rsi,%rdx), %edx
	cmpb	$48, %cl
	je	.L146
	cmpb	$48, %dl
	je	.L133
	testb	%dl, %dl
	jne	.L147
	.p2align 4,,10
	.p2align 3
.L133:
	xorl	%eax, %eax
.L119:
	ret
	.p2align 4,,10
	.p2align 3
.L145:
	testb	%cl, %cl
	je	.L133
	leal	2(%rax), %edi
	cmpb	$48, %cl
	je	.L124
.L125:
	movslq	%edi, %rdx
	xorl	%eax, %eax
	cmpb	$48, (%rsi,%rdx)
	jne	.L119
.L142:
	jmp	y.part.0
	.p2align 4,,10
	.p2align 3
.L129:
	movl	$1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L146:
	xorl	%eax, %eax
	cmpb	$48, %dl
	je	.L142
	ret
	.p2align 4,,10
	.p2align 3
.L147:
	leal	3(%rax), %edx
	movslq	%edx, %rdx
	movzbl	(%rsi,%rdx), %edx
	testb	%dl, %dl
	je	.L133
	leal	4(%rax), %edi
	cmpb	$48, %dl
	je	.L148
.L124:
	xorl	%eax, %eax
	jmp	b
.L148:
	movslq	%edi, %rdi
	movzbl	(%rsi,%rdi), %edx
	testb	%dl, %dl
	je	.L133
	leal	5(%rax), %edi
	cmpb	$48, %dl
	jne	.L125
	jmp	.L124
	.cfi_endproc
.LFE28:
	.size	z, .-z
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB29:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leaq	.LC0(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	.LC2(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	.LC1(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	leaq	s(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	jmp	.L150
	.p2align 4,,10
	.p2align 3
.L152:
	cmpb	$48, %dl
	je	.L188
.L151:
	call	puts@PLT
.L150:
	movq	%rbx, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movzbl	(%rbx), %eax
	cmpb	$35, %al
	je	.L189
	movq	%rbp, %rdi
	testb	%al, %al
	je	.L151
	movzbl	1+s(%rip), %edx
	cmpb	$48, %al
	jne	.L152
	cmpb	$48, %dl
	je	.L165
	testb	%dl, %dl
	jne	.L190
.L165:
	movq	%rbp, %rdi
	jmp	.L151
	.p2align 4,,10
	.p2align 3
.L189:
	xorl	%edi, %edi
	call	exit@PLT
.L188:
	movzbl	2+s(%rip), %eax
	testb	%al, %al
	je	.L165
	cmpb	$48, %al
	je	.L165
	movzbl	3+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L191
.L156:
	movl	$4, %edi
	xorl	%eax, %eax
	call	b
	jmp	.L155
.L190:
	movzbl	2+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L192
	movl	$3, %edi
	xorl	%eax, %eax
	call	b
.L155:
	testl	%eax, %eax
	movq	%r13, %rdi
	cmove	%rbp, %rdi
	jmp	.L151
.L192:
	movzbl	3+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L156
	cmpb	$48, 4+s(%rip)
	jne	.L151
	movl	$4, %edi
	xorl	%eax, %eax
	call	y.part.0
	jmp	.L155
.L191:
	movzbl	4+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L193
	cmpb	$48, 5+s(%rip)
	jne	.L151
	movl	$5, %edi
	xorl	%eax, %eax
	call	y.part.0
	jmp	.L155
.L193:
	movl	$5, %edi
	xorl	%eax, %eax
	call	b
	jmp	.L155
	.cfi_endproc
.LFE29:
	.size	main, .-main
	.globl	s
	.bss
	.align 32
	.type	s, @object
	.size	s, 101
s:
	.zero	101
	.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	b
	.type	b, @function
b:
.LFB24:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L6
.L2:
	leal	1(%rdi), %r9d
	movslq	%r9d, %rcx
	movzbl	(%rax,%rcx), %ecx
	cmpb	$48, %dl
	je	.L24
	cmpb	$48, %cl
	je	.L10
	testb	%cl, %cl
	jne	.L25
.L10:
	xorl	%r8d, %r8d
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	movl	$1, %r8d
.L1:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L24:
	xorl	%r8d, %r8d
	cmpb	$48, %cl
	jne	.L1
.L22:
	movl	%r9d, %edi
	xorl	%eax, %eax
	jmp	y.part.0
	.p2align 4,,10
	.p2align 3
.L25:
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L10
	leal	3(%rdi), %r9d
	cmpb	$48, %dl
	je	.L26
.L5:
	movslq	%r9d, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L6
	movl	%r9d, %edi
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L26:
	movslq	%r9d, %r9
	movzbl	(%rax,%r9), %edx
	testb	%dl, %dl
	je	.L10
	leal	4(%rdi), %r9d
	cmpb	$48, %dl
	je	.L5
	movslq	%r9d, %rdx
	xorl	%r8d, %r8d
	cmpb	$48, (%rax,%rdx)
	jne	.L1
	jmp	.L22
	.cfi_endproc
.LFE24:
	.size	b, .-b
	.p2align 4
	.type	y.part.0, @function
y.part.0:
.LFB32:
	.cfi_startproc
	movslq	%edi, %rax
	leaq	s(%rip), %rdx
	addq	%rdx, %rax
.L31:
	movzbl	1(%rax), %edx
	cmpb	$48, %dl
	je	.L27
	testb	%dl, %dl
	jne	.L45
.L27:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L45:
	movzbl	2(%rax), %edx
	testb	%dl, %dl
	je	.L27
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L46
	movl	%r8d, %edi
.L44:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L46:
	movzbl	3(%rax), %edx
	testb	%dl, %dl
	je	.L27
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L44
	addq	$4, %rax
	cmpb	$48, (%rax)
	jne	.L27
	jmp	.L31
	.cfi_endproc
.LFE32:
	.size	y.part.0, .-y.part.0
	.p2align 4
	.globl	a
	.type	a, @function
a:
.LFB23:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L47
	leal	1(%rdi), %r8d
	movslq	%r8d, %rcx
	movzbl	(%rax,%rcx), %ecx
	cmpb	$48, %dl
	je	.L69
	cmpb	$48, %cl
	je	.L70
.L47:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L69:
	cmpb	$48, %cl
	je	.L47
	testb	%cl, %cl
	je	.L47
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L47
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L71
	movl	%r8d, %edi
.L67:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L70:
	movl	%r8d, %edi
.L68:
	xorl	%eax, %eax
	jmp	y.part.0
.L71:
	movslq	%r8d, %r8
	movzbl	(%rax,%r8), %edx
	testb	%dl, %dl
	je	.L47
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L67
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	jne	.L47
	jmp	.L68
	.cfi_endproc
.LFE23:
	.size	a, .-a
	.p2align 4
	.globl	w
	.type	w, @function
w:
.LFB25:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rdx
	movslq	%edi, %rax
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	je	.L72
	addl	$1, %edi
	cmpb	$48, %al
	je	.L78
	movslq	%edi, %rax
	cmpb	$48, (%rdx,%rax)
	je	.L79
.L72:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L78:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L79:
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE25:
	.size	w, .-w
	.p2align 4
	.globl	x
	.type	x, @function
x:
.LFB26:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rdx
	movslq	%edi, %rax
	movzbl	(%rdx,%rax), %eax
	cmpb	$48, %al
	je	.L80
	testb	%al, %al
	jne	.L97
.L80:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L97:
	leal	1(%rdi), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	je	.L80
	leal	2(%rdi), %r8d
	cmpb	$48, %al
	je	.L98
	movl	%r8d, %edi
.L96:
	xorl	%eax, %eax
	jmp	b
	.p2align 4,,10
	.p2align 3
.L98:
	movslq	%r8d, %r8
	movzbl	(%rdx,%r8), %eax
	testb	%al, %al
	je	.L80
	addl	$3, %edi
	cmpb	$48, %al
	je	.L96
	movslq	%edi, %rax
	cmpb	$48, (%rdx,%rax)
	jne	.L80
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE26:
	.size	x, .-x
	.p2align 4
	.globl	y
	.type	y, @function
y:
.LFB27:
	.cfi_startproc
	endbr64
	leaq	s(%rip), %rax
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	je	.L117
.L99:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L117:
	leal	1(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	cmpb	$48, %dl
	je	.L99
	testb	%dl, %dl
	je	.L99
	leal	2(%rdi), %edx
	movslq	%edx, %rdx
	movzbl	(%rax,%rdx), %edx
	testb	%dl, %dl
	je	.L99
	leal	3(%rdi), %r8d
	cmpb	$48, %dl
	je	.L118
	movl	%r8d, %edi
.L116:
	xorl	%eax, %eax
	jmp	b
.L118:
	movslq	%r8d, %r8
	movzbl	(%rax,%r8), %edx
	testb	%dl, %dl
	je	.L99
	addl	$4, %edi
	cmpb	$48, %dl
	je	.L116
	movslq	%edi, %rdx
	cmpb	$48, (%rax,%rdx)
	jne	.L99
	xorl	%eax, %eax
	jmp	y.part.0
	.cfi_endproc
.LFE27:
	.size	y, .-y
	.p2align 4
	.globl	z
	.type	z, @function
z:
.LFB28:
	.cfi_startproc
	endbr64
	movslq	%edi, %rdx
	leaq	s(%rip), %rsi
	movq	%rdx, %rax
	movzbl	(%rsi,%rdx), %edx
	testb	%dl, %dl
	je	.L133
	leal	1(%rax), %ecx
	movslq	%ecx, %rcx
	movzbl	(%rsi,%rcx), %ecx
	cmpb	$48, %dl
	je	.L145
	testb	%cl, %cl
	je	.L129
	leal	2(%rax), %edi
	movslq	%edi, %rdx
	movzbl	(%rsi,%rdx), %edx
	cmpb	$48, %cl
	je	.L146
	cmpb	$48, %dl
	je	.L133
	testb	%dl, %dl
	jne	.L147
	.p2align 4,,10
	.p2align 3
.L133:
	xorl	%eax, %eax
.L119:
	ret
	.p2align 4,,10
	.p2align 3
.L145:
	testb	%cl, %cl
	je	.L133
	leal	2(%rax), %edi
	cmpb	$48, %cl
	je	.L124
.L125:
	movslq	%edi, %rdx
	xorl	%eax, %eax
	cmpb	$48, (%rsi,%rdx)
	jne	.L119
.L142:
	jmp	y.part.0
	.p2align 4,,10
	.p2align 3
.L129:
	movl	$1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L146:
	xorl	%eax, %eax
	cmpb	$48, %dl
	je	.L142
	ret
	.p2align 4,,10
	.p2align 3
.L147:
	leal	3(%rax), %edx
	movslq	%edx, %rdx
	movzbl	(%rsi,%rdx), %edx
	testb	%dl, %dl
	je	.L133
	leal	4(%rax), %edi
	cmpb	$48, %dl
	je	.L148
.L124:
	xorl	%eax, %eax
	jmp	b
.L148:
	movslq	%edi, %rdi
	movzbl	(%rsi,%rdi), %edx
	testb	%dl, %dl
	je	.L133
	leal	5(%rax), %edi
	cmpb	$48, %dl
	jne	.L125
	jmp	.L124
	.cfi_endproc
.LFE28:
	.size	z, .-z
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB29:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leaq	.LC0(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	.LC2(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	.LC1(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	leaq	s(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	jmp	.L150
	.p2align 4,,10
	.p2align 3
.L152:
	cmpb	$48, %dl
	je	.L188
.L151:
	call	puts@PLT
.L150:
	movq	%rbx, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movzbl	(%rbx), %eax
	cmpb	$35, %al
	je	.L189
	movq	%rbp, %rdi
	testb	%al, %al
	je	.L151
	movzbl	1+s(%rip), %edx
	cmpb	$48, %al
	jne	.L152
	cmpb	$48, %dl
	je	.L165
	testb	%dl, %dl
	jne	.L190
.L165:
	movq	%rbp, %rdi
	jmp	.L151
	.p2align 4,,10
	.p2align 3
.L189:
	xorl	%edi, %edi
	call	exit@PLT
.L188:
	movzbl	2+s(%rip), %eax
	testb	%al, %al
	je	.L165
	cmpb	$48, %al
	je	.L165
	movzbl	3+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L191
.L156:
	movl	$4, %edi
	xorl	%eax, %eax
	call	b
	jmp	.L155
.L190:
	movzbl	2+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L192
	movl	$3, %edi
	xorl	%eax, %eax
	call	b
.L155:
	testl	%eax, %eax
	movq	%r13, %rdi
	cmove	%rbp, %rdi
	jmp	.L151
.L192:
	movzbl	3+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L156
	cmpb	$48, 4+s(%rip)
	jne	.L151
	movl	$4, %edi
	xorl	%eax, %eax
	call	y.part.0
	jmp	.L155
.L191:
	movzbl	4+s(%rip), %eax
	testb	%al, %al
	je	.L151
	cmpb	$48, %al
	je	.L193
	cmpb	$48, 5+s(%rip)
	jne	.L151
	movl	$5, %edi
	xorl	%eax, %eax
	call	y.part.0
	jmp	.L155
.L193:
	movl	$5, %edi
	xorl	%eax, %eax
	call	b
	jmp	.L155
	.cfi_endproc
.LFE29:
	.size	main, .-main
	.globl	s
	.bss
	.align 32
	.type	s, @object
	.size	s, 101
s:
	.zero	101
	.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>
char s[101];
a(p){return s[p]==0?0:s[p]=='0'?x(p+1):y(p+1);}
b(p){return s[p]==0?1:s[p]=='0'?y(p+1):x(p+1);}
w(p){return s[p]==0?0:s[p]=='0'?b(p+1):y(p+1);}
x(p){return s[p]==0?0:s[p]=='0'?0:z(p+1);}
y(p){return s[p]==0?0:s[p]=='0'?x(p+1):0;}
z(p){return s[p]==0?0:s[p]=='0'?w(p+1):b(p+1);}
main(n)
{
	for(;scanf("%s",s),s[0]!='#';)
		puts(a(0)?"Yes":"No");
	exit(0);
}
0100
0101
10100
01000
0101011
0011
011110
#
 0100
1101
10100
11000
0001011
0011
011110
#
 0100
1101
10000
10000
0001011
0011
011110
#
 0100
0101
10100
10001
0011011
1011
011110
#
 0100
0100
10100
10001
0011011
1001
011110
#
 0100
1101
10100
10000
0001011
0011
011111
#
 0100
0101
10101
10011
0011011
1011
011110
#
 0100
0100
10110
10011
0011011
1101
011110
#
 0100
0100
10100
10011
0011011
1101
011111
#
 0100
1101
10110
11000
0101011
0011
011110
#

Yes
No
Yes
No
Yes
No
No
 Yes
No
Yes
No
No
No
No
 Yes
No
No
No
No
No
No
 Yes
No
Yes
No
No
Yes
No
 Yes
Yes
Yes
No
No
No
No
 Yes
No
Yes
No
No
No
Yes
 Yes
No
No
No
No
Yes
No
 Yes
Yes
No
No
No
No
No
 Yes
Yes
Yes
No
No
No
Yes
 Yes
No
No
No
Yes
No
No

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>
char s[101];
a(p){return s[p]==0?0:s[p]=='0'?x(p+1):y(p+1);}
b(p){return s[p]==0?1:s[p]=='0'?y(p+1):x(p+1);}
w(p){return s[p]==0?0:s[p]=='0'?b(p+1):y(p+1);}
x(p){return s[p]==0?0:s[p]=='0'?0:z(p+1);}
y(p){return s[p]==0?0:s[p]=='0'?x(p+1):0;}
z(p){return s[p]==0?0:s[p]=='0'?w(p+1):b(p+1);}
main(n)
{
	for(;scanf("%s",s),s[0]!='#';)
		puts(a(0)?"Yes":"No");
	exit(0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	s
	.bss
	.align 32
	.type	s, @object
	.size	s, 101
s:
	.zero	101
	.text
	.globl	a
	.type	a, @function
a:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L2
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L3
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L6
.L3:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L6
.L2:
	movl	$0, %eax
.L6:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	a, .-a
	.globl	b
	.type	b, @function
b:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L8
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L9
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L12
.L9:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L12
.L8:
	movl	$1, %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	b, .-b
	.globl	w
	.type	w, @function
w:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L14
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L15
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L18
.L15:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L18
.L14:
	movl	$0, %eax
.L18:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	w, .-w
	.globl	x
	.type	x, @function
x:
.LFB3:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L20
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	je	.L21
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	z
	jmp	.L24
.L21:
	movl	$0, %eax
	jmp	.L24
.L20:
	movl	$0, %eax
.L24:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	x, .-x
	.globl	y
	.type	y, @function
y:
.LFB4:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L26
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L27
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L30
.L27:
	movl	$0, %eax
	jmp	.L30
.L26:
	movl	$0, %eax
.L30:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	y, .-y
	.globl	z
	.type	z, @function
z:
.LFB5:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L32
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L33
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	w
	jmp	.L36
.L33:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L36
.L32:
	movl	$0, %eax
.L36:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	z, .-z
	.section	.rodata
.LC0:
	.string	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	jmp	.L38
.L41:
	movl	$0, %edi
	movl	$0, %eax
	call	a
	testl	%eax, %eax
	je	.L39
	leaq	.LC0(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC1(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L38:
	leaq	s(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	s(%rip), %eax
	cmpb	$35, %al
	jne	.L41
	movl	$0, %edi
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.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	s
	.bss
	.align 32
	.type	s, @object
	.size	s, 101
s:
	.zero	101
	.text
	.globl	a
	.type	a, @function
a:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L2
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L3
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L6
.L3:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L6
.L2:
	movl	$0, %eax
.L6:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	a, .-a
	.globl	b
	.type	b, @function
b:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L8
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L9
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L12
.L9:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L12
.L8:
	movl	$1, %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	b, .-b
	.globl	w
	.type	w, @function
w:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L14
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L15
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L18
.L15:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	y
	jmp	.L18
.L14:
	movl	$0, %eax
.L18:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	w, .-w
	.globl	x
	.type	x, @function
x:
.LFB3:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L20
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	je	.L21
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	z
	jmp	.L24
.L21:
	movl	$0, %eax
	jmp	.L24
.L20:
	movl	$0, %eax
.L24:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	x, .-x
	.globl	y
	.type	y, @function
y:
.LFB4:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L26
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L27
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	x
	jmp	.L30
.L27:
	movl	$0, %eax
	jmp	.L30
.L26:
	movl	$0, %eax
.L30:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	y, .-y
	.globl	z
	.type	z, @function
z:
.LFB5:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L32
	movl	-4(%rbp), %eax
	cltq
	leaq	s(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$48, %al
	jne	.L33
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	w
	jmp	.L36
.L33:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, %edi
	movl	$0, %eax
	call	b
	jmp	.L36
.L32:
	movl	$0, %eax
.L36:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	z, .-z
	.section	.rodata
.LC0:
	.string	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%s"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	jmp	.L38
.L41:
	movl	$0, %edi
	movl	$0, %eax
	call	a
	testl	%eax, %eax
	je	.L39
	leaq	.LC0(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC1(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L38:
	leaq	s(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	s(%rip), %eax
	cmpb	$35, %al
	jne	.L41
	movl	$0, %edi
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.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:
