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[271828], T[271828];

char ST[256], TS[256];

int main(void) {
	int i;
	if (scanf("%271828s", S) != 1) return 1;
	if (scanf("%271828s", T) != 1) return 1;
	for (i = 0; S[i] != '\0'; i++) {
		int sidx = (unsigned char)S[i];
		int tidx = (unsigned char)T[i];
		if (T[i] == '\0') {
			puts("No");
			return 0;
		}
		if (ST[sidx] == 0) {
			ST[sidx] = T[i];
		} else {
			if (ST[sidx] != T[i]) {
				puts("No");
				return 0;
			}
		}
		if (TS[tidx] == 0) {
			TS[tidx] = S[i];
		} else {
			if (TS[tidx] != S[i]) {
				puts("No");
				return 0;
			}
		}
	}
	puts(T[i] == '\0' ? "Yes" : "No");
	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	S
	.bss
	.align 32
	.type	S, @object
	.size	S, 271828
S:
	.zero	271828
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 271828
T:
	.zero	271828
	.globl	ST
	.align 32
	.type	ST, @object
	.size	ST, 256
ST:
	.zero	256
	.globl	TS
	.align 32
	.type	TS, @object
	.size	TS, 256
TS:
	.zero	256
	.section	.rodata
.LC0:
	.string	"%271828s"
.LC1:
	.string	"No"
.LC2:
	.string	"Yes"
	.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	$16, %rsp
	leaq	S(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	leaq	T(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L4
	movl	$1, %eax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L11:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -8(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L6
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L6:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L8
.L7:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L8
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L8:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L9
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L10
.L9:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L10
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L10:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L11
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC2(%rip), %rax
	jmp	.L13
.L12:
	leaq	.LC1(%rip), %rax
.L13:
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
.L3:
	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	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%271828s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC2(%rip), %rbp
	xorl	%eax, %eax
	leaq	S(%rip), %rsi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rbp, %rdi
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L2
.L4:
	movl	$1, %eax
.L1:
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	leaq	T(%rip), %rbx
	xorl	%eax, %eax
	movq	%rbp, %rdi
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	subl	$1, %eax
	jne	.L4
	movzbl	S(%rip), %esi
	testb	%sil, %sil
	je	.L14
	movl	$1, %eax
	leaq	-1(%rbx), %r11
	leaq	ST(%rip), %r9
	leaq	TS(%rip), %r10
	leaq	-1+S(%rip), %rbp
	jmp	.L12
	.p2align 4,,10
	.p2align 3
.L19:
	movb	%cl, (%r9,%rdx)
.L8:
	movslq	%ecx, %rdx
	movzbl	(%r10,%rdx), %ecx
	testb	%cl, %cl
	jne	.L10
	movb	%sil, (%r10,%rdx)
.L11:
	movslq	%eax, %rdx
	movzbl	1(%rax,%rbp), %esi
	addq	$1, %rax
	testb	%sil, %sil
	je	.L5
.L12:
	movzbl	(%r11,%rax), %ecx
	movzbl	%sil, %edx
	testb	%cl, %cl
	je	.L9
	movzbl	(%r9,%rdx), %r8d
	testb	%r8b, %r8b
	je	.L19
	cmpb	%r8b, %cl
	je	.L8
.L9:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	xorl	%eax, %eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L10:
	cmpb	%sil, %cl
	je	.L11
	jmp	.L9
.L14:
	xorl	%edx, %edx
.L5:
	cmpb	$0, (%rbx,%rdx)
	leaq	.LC1(%rip), %rax
	leaq	.LC0(%rip), %rdi
	cmovne	%rax, %rdi
	call	puts@PLT
	xorl	%eax, %eax
	jmp	.L1
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	TS
	.bss
	.align 32
	.type	TS, @object
	.size	TS, 256
TS:
	.zero	256
	.globl	ST
	.align 32
	.type	ST, @object
	.size	ST, 256
ST:
	.zero	256
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 271828
T:
	.zero	271828
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 271828
S:
	.zero	271828
	.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	"Yes"
.LC1:
	.string	"No"
.LC2:
	.string	"%271828s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC2(%rip), %rbp
	xorl	%eax, %eax
	leaq	S(%rip), %rsi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rbp, %rdi
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L2
.L4:
	movl	$1, %eax
.L1:
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	leaq	T(%rip), %rbx
	xorl	%eax, %eax
	movq	%rbp, %rdi
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	subl	$1, %eax
	jne	.L4
	movzbl	S(%rip), %esi
	testb	%sil, %sil
	je	.L14
	movl	$1, %eax
	leaq	-1(%rbx), %r11
	leaq	ST(%rip), %r9
	leaq	TS(%rip), %r10
	leaq	-1+S(%rip), %rbp
	jmp	.L12
	.p2align 4,,10
	.p2align 3
.L19:
	movb	%cl, (%r9,%rdx)
.L8:
	movslq	%ecx, %rdx
	movzbl	(%r10,%rdx), %ecx
	testb	%cl, %cl
	jne	.L10
	movb	%sil, (%r10,%rdx)
.L11:
	movslq	%eax, %rdx
	movzbl	1(%rax,%rbp), %esi
	addq	$1, %rax
	testb	%sil, %sil
	je	.L5
.L12:
	movzbl	(%r11,%rax), %ecx
	movzbl	%sil, %edx
	testb	%cl, %cl
	je	.L9
	movzbl	(%r9,%rdx), %r8d
	testb	%r8b, %r8b
	je	.L19
	cmpb	%r8b, %cl
	je	.L8
.L9:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	xorl	%eax, %eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L10:
	cmpb	%sil, %cl
	je	.L11
	jmp	.L9
.L14:
	xorl	%edx, %edx
.L5:
	cmpb	$0, (%rbx,%rdx)
	leaq	.LC1(%rip), %rax
	leaq	.LC0(%rip), %rdi
	cmovne	%rax, %rdi
	call	puts@PLT
	xorl	%eax, %eax
	jmp	.L1
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	TS
	.bss
	.align 32
	.type	TS, @object
	.size	TS, 256
TS:
	.zero	256
	.globl	ST
	.align 32
	.type	ST, @object
	.size	ST, 256
ST:
	.zero	256
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 271828
T:
	.zero	271828
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 271828
S:
	.zero	271828
	.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[271828], T[271828];

char ST[256], TS[256];

int main(void) {
	int i;
	if (scanf("%271828s", S) != 1) return 1;
	if (scanf("%271828s", T) != 1) return 1;
	for (i = 0; S[i] != '\0'; i++) {
		int sidx = (unsigned char)S[i];
		int tidx = (unsigned char)T[i];
		if (T[i] == '\0') {
			puts("No");
			return 0;
		}
		if (ST[sidx] == 0) {
			ST[sidx] = T[i];
		} else {
			if (ST[sidx] != T[i]) {
				puts("No");
				return 0;
			}
		}
		if (TS[tidx] == 0) {
			TS[tidx] = S[i];
		} else {
			if (TS[tidx] != S[i]) {
				puts("No");
				return 0;
			}
		}
	}
	puts(T[i] == '\0' ? "Yes" : "No");
	return 0;
}

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

No
 Yes
 No
 No
 Yes
 No
 No
 No
 No
 No

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

```c
#include <stdio.h>

char S[271828], T[271828];

char ST[256], TS[256];

int main(void) {
	int i;
	if (scanf("%271828s", S) != 1) return 1;
	if (scanf("%271828s", T) != 1) return 1;
	for (i = 0; S[i] != '\0'; i++) {
		int sidx = (unsigned char)S[i];
		int tidx = (unsigned char)T[i];
		if (T[i] == '\0') {
			puts("No");
			return 0;
		}
		if (ST[sidx] == 0) {
			ST[sidx] = T[i];
		} else {
			if (ST[sidx] != T[i]) {
				puts("No");
				return 0;
			}
		}
		if (TS[tidx] == 0) {
			TS[tidx] = S[i];
		} else {
			if (TS[tidx] != S[i]) {
				puts("No");
				return 0;
			}
		}
	}
	puts(T[i] == '\0' ? "Yes" : "No");
	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	S
	.bss
	.align 32
	.type	S, @object
	.size	S, 271828
S:
	.zero	271828
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 271828
T:
	.zero	271828
	.globl	ST
	.align 32
	.type	ST, @object
	.size	ST, 256
ST:
	.zero	256
	.globl	TS
	.align 32
	.type	TS, @object
	.size	TS, 256
TS:
	.zero	256
	.section	.rodata
.LC0:
	.string	"%271828s"
.LC1:
	.string	"No"
.LC2:
	.string	"Yes"
	.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	$16, %rsp
	leaq	S(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	leaq	T(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L4
	movl	$1, %eax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L11:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -8(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L6
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L6:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L8
.L7:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L8
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L8:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L9
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L10
.L9:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L10
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L10:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L11
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC2(%rip), %rax
	jmp	.L13
.L12:
	leaq	.LC1(%rip), %rax
.L13:
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
.L3:
	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	S
	.bss
	.align 32
	.type	S, @object
	.size	S, 271828
S:
	.zero	271828
	.globl	T
	.align 32
	.type	T, @object
	.size	T, 271828
T:
	.zero	271828
	.globl	ST
	.align 32
	.type	ST, @object
	.size	ST, 256
ST:
	.zero	256
	.globl	TS
	.align 32
	.type	TS, @object
	.size	TS, 256
TS:
	.zero	256
	.section	.rodata
.LC0:
	.string	"%271828s"
.LC1:
	.string	"No"
.LC2:
	.string	"Yes"
	.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	$16, %rsp
	leaq	S(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	leaq	T(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$1, %eax
	je	.L4
	movl	$1, %eax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L11:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -8(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movzbl	%al, %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L6
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L6:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L8
.L7:
	movl	-8(%rbp), %eax
	cltq
	leaq	ST(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L8
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L8:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L9
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	.L10
.L9:
	movl	-4(%rbp), %eax
	cltq
	leaq	TS(%rip), %rdx
	movzbl	(%rax,%rdx), %edx
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rcx
	movzbl	(%rax,%rcx), %eax
	cmpb	%al, %dl
	je	.L10
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L3
.L10:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	S(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L11
	movl	-12(%rbp), %eax
	cltq
	leaq	T(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L12
	leaq	.LC2(%rip), %rax
	jmp	.L13
.L12:
	leaq	.LC1(%rip), %rax
.L13:
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
.L3:
	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:
