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

```c
#include <float.h>
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部定数
#define D_MASS_MAX		200005									// 最大マス数
#define D_MASS_NONE		'.'										// マス - なし

// 内部変数
static FILE *szpFpI;											// 入力
static int siA, siB, siC, siD;									// 位置
static char sc1Mass[D_MASS_MAX];								// マス

// 内部変数 - テスト用
#ifdef D_TEST
	static int siRes;
	static FILE *szpFpA;
	static int siTNo;
#endif

// １行出力
int
fOutLine(
	char *pcpLine				// <I> １行
)
{
	char lc1Buf[1024];

#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, pcpLine)) {
		siRes = -1;
	}
#else
	printf("%s", pcpLine);
#endif

	return 0;
}

// 移動チェック
int
fChkMove(
	int piSNo					// <I> 開始位置
	, int piENo					// <I> 終了位置
)
{
	int i;

	// 移動
	int liMax = 0;
	int liLen = 0;
	for (i = piSNo; i <= piENo; i++) {
		if (sc1Mass[i] == D_MASS_NONE) {
			liLen++;
			if (liMax < liLen) {
				liMax = liLen;
			}
		}
		else if (sc1Mass[i + 1] == D_MASS_NONE) {
			liLen = 0;
		}
		else {
			return -1;
		}
	}

	return liMax;
}

// Bの妨げチェック
int
fChkB(
)
{
	// D > C
	if (siD > siC) {
		return 0;
	}

	// Bの前後
	if (sc1Mass[siB - 1] == D_MASS_NONE) {
		if (sc1Mass[siB + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	// Dの前後
	if (sc1Mass[siD - 1] == D_MASS_NONE) {
		if (sc1Mass[siD + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	return -1;
}

// 実行メイン
int
fMain(
)
{
	int liRet, liWork;
	char lc1Buf[1024];

	// 位置 - 取得
	fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
	sscanf(lc1Buf, "%d%d%d%d%d", &liWork, &siA, &siB, &siC, &siD);
	siA--;
	siB--;
	siC--;
	siD--;

	// マス - 取得
	fgets(sc1Mass, sizeof(sc1Mass), szpFpI);

	// B -> D
	liRet = fChkMove(siB, siD);
	if (liRet < 0) {
		return -1;
	}

	// Bの妨げチェック
	if (liRet < 3) {
		liRet = fChkB();
		if (liRet != 0) {
			return -1;
		}
	}

	// A -> C
	liRet = fChkMove(siA, siC);
	if (liRet < 0) {
		return -1;
	}

	return 0;
}

// １回実行
int
fOne(
)
{
	int liRet;
	char lc1Buf[1024];

	// 入力 - セット
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", siTNo);
	szpFpI = fopen(lc1Buf, "r");
	sprintf(lc1Buf, ".\\Test\\A%d.txt", siTNo);
	szpFpA = fopen(lc1Buf, "r");
	siRes = 0;
#else
	szpFpI = stdin;
#endif

	// 実行メイン
	liRet = fMain();

	// １行出力
	if (liRet == 0) {
		sprintf(lc1Buf, "Yes\n");
	}
	else {
		sprintf(lc1Buf, "No\n");
	}
	fOutLine(lc1Buf);

	// 残データ有無
#ifdef D_TEST
	lc1Buf[0] = '\0';
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, "")) {
		siRes = -1;
	}
#endif

	// テストファイルクローズ
#ifdef D_TEST
	fclose(szpFpI);
	fclose(szpFpA);
#endif

	// テスト結果
#ifdef D_TEST
	if (siRes == 0) {
		printf("OK %d\n", siTNo);
	}
	else {
		printf("NG %d\n", siTNo);
	}
#endif

	return 0;
}

// プログラム開始
int
main()
{

#ifdef D_TEST
	int i;
	for (i = D_TEST_SNO; i <= D_TEST_ENO; i++) {
		siTNo = i;
		fOne();
	}
#else
	fOne();
#endif

	return 0;
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.local	szpFpI
	.comm	szpFpI,8,8
	.local	siA
	.comm	siA,4,4
	.local	siB
	.comm	siB,4,4
	.local	siC
	.comm	siC,4,4
	.local	siD
	.comm	siD,4,4
	.local	sc1Mass
	.comm	sc1Mass,200005,32
	.section	.rodata
.LC0:
	.string	"%s"
	.text
	.globl	fOutLine
	.type	fOutLine, @function
fOutLine:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%rdi, -1048(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	-1048(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L3
	call	__stack_chk_fail@PLT
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fOutLine, .-fOutLine
	.globl	fChkMove
	.type	fChkMove, @function
fChkMove:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	movl	$0, -4(%rbp)
	movl	-20(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L5
.L10:
	movl	-12(%rbp), %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L6
	addl	$1, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L7
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L7
.L6:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L8
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	$-1, %eax
	jmp	.L9
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jle	.L10
	movl	-8(%rbp), %eax
.L9:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	fChkMove, .-fChkMove
	.globl	fChkB
	.type	fChkB, @function
fChkB:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	siD(%rip), %edx
	movl	siC(%rip), %eax
	cmpl	%eax, %edx
	jle	.L12
	movl	$0, %eax
	jmp	.L13
.L12:
	movl	siB(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	siB(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	$0, %eax
	jmp	.L13
.L14:
	movl	siD(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	siD(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	$0, %eax
	jmp	.L13
.L15:
	movl	$-1, %eax
.L13:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	fChkB, .-fChkB
	.section	.rodata
.LC1:
	.string	"%d%d%d%d%d"
	.text
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	szpFpI(%rip), %rdx
	leaq	-1040(%rbp), %rax
	movl	$1024, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	leaq	-1048(%rbp), %rdx
	leaq	-1040(%rbp), %rax
	subq	$8, %rsp
	leaq	siD(%rip), %rcx
	pushq	%rcx
	leaq	siC(%rip), %r9
	leaq	siB(%rip), %r8
	leaq	siA(%rip), %rcx
	leaq	.LC1(%rip), %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_sscanf@PLT
	addq	$16, %rsp
	movl	siA(%rip), %eax
	subl	$1, %eax
	movl	%eax, siA(%rip)
	movl	siB(%rip), %eax
	subl	$1, %eax
	movl	%eax, siB(%rip)
	movl	siC(%rip), %eax
	subl	$1, %eax
	movl	%eax, siC(%rip)
	movl	siD(%rip), %eax
	subl	$1, %eax
	movl	%eax, siD(%rip)
	movq	szpFpI(%rip), %rax
	movq	%rax, %rdx
	movl	$200005, %esi
	leaq	sc1Mass(%rip), %rax
	movq	%rax, %rdi
	call	fgets@PLT
	movl	siD(%rip), %edx
	movl	siB(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L17
	movl	$-1, %eax
	jmp	.L21
.L17:
	cmpl	$2, -1044(%rbp)
	jg	.L19
	movl	$0, %eax
	call	fChkB
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	je	.L19
	movl	$-1, %eax
	jmp	.L21
.L19:
	movl	siC(%rip), %edx
	movl	siA(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L20
	movl	$-1, %eax
	jmp	.L21
.L20:
	movl	$0, %eax
.L21:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L22
	call	__stack_chk_fail@PLT
.L22:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	fMain, .-fMain
	.section	.rodata
.LC2:
	.string	"Yes\n"
.LC3:
	.string	"No\n"
	.text
	.globl	fOne
	.type	fOne, @function
fOne:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	stdin(%rip), %rax
	movq	%rax, szpFpI(%rip)
	movl	$0, %eax
	call	fMain
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jne	.L24
	leaq	-1040(%rbp), %rax
	leaq	.LC2(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
	jmp	.L25
.L24:
	leaq	-1040(%rbp), %rax
	leaq	.LC3(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
.L25:
	leaq	-1040(%rbp), %rax
	movq	%rax, %rdi
	call	fOutLine
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	fOne, .-fOne
	.globl	main
	.type	main, @function
main:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$0, %eax
	call	fOne
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.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	"%s"
	.text
	.p2align 4
	.globl	fOutLine
	.type	fOutLine, @function
fOutLine:
.LFB51:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	%rdi, %rdx
	leaq	.LC0(%rip), %rsi
	xorl	%eax, %eax
	movl	$1, %edi
	call	__printf_chk@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE51:
	.size	fOutLine, .-fOutLine
	.p2align 4
	.globl	fChkMove
	.type	fChkMove, @function
fChkMove:
.LFB52:
	.cfi_startproc
	endbr64
	cmpl	%esi, %edi
	jg	.L9
	leaq	sc1Mass(%rip), %rdx
	movslq	%edi, %rdi
	xorl	%eax, %eax
	xorl	%r8d, %r8d
	leaq	1(%rdx), %rcx
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L6:
	cmpb	$46, (%rdi,%rcx)
	jne	.L10
	addq	$1, %rdi
	xorl	%eax, %eax
	cmpl	%edi, %esi
	jl	.L4
.L8:
	cmpb	$46, (%rdx,%rdi)
	jne	.L6
	addl	$1, %eax
	cmpl	%eax, %r8d
	cmovl	%eax, %r8d
	addq	$1, %rdi
	cmpl	%edi, %esi
	jge	.L8
.L4:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L10:
	movl	$-1, %r8d
	movl	%r8d, %eax
	ret
.L9:
	xorl	%r8d, %r8d
	jmp	.L4
	.cfi_endproc
.LFE52:
	.size	fChkMove, .-fChkMove
	.p2align 4
	.globl	fChkB
	.type	fChkB, @function
fChkB:
.LFB53:
	.cfi_startproc
	endbr64
	movl	siD(%rip), %edx
	xorl	%eax, %eax
	cmpl	siC(%rip), %edx
	jg	.L12
	movl	siB(%rip), %edi
	leaq	sc1Mass(%rip), %rcx
	leal	-1(%rdi), %esi
	movslq	%esi, %rsi
	cmpb	$46, (%rcx,%rsi)
	je	.L18
.L14:
	leal	-1(%rdx), %eax
	cltq
	cmpb	$46, (%rcx,%rax)
	jne	.L17
	addl	$1, %edx
	xorl	%eax, %eax
	movslq	%edx, %rdx
	cmpb	$46, (%rcx,%rdx)
	setne	%al
	negl	%eax
	ret
	.p2align 4,,10
	.p2align 3
.L18:
	addl	$1, %edi
	movslq	%edi, %rdi
	cmpb	$46, (%rcx,%rdi)
	jne	.L14
.L12:
	ret
	.p2align 4,,10
	.p2align 3
.L17:
	movl	$-1, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	fChkB, .-fChkB
	.section	.rodata.str1.1
.LC1:
	.string	"%d%d%d%d%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB54:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$1024, %esi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	sc1Mass(%rip), %rbx
	subq	$1064, %rsp
	.cfi_def_cfa_offset 1088
	movq	szpFpI(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	leaq	12(%rsp), %rdx
	subq	$8, %rsp
	.cfi_def_cfa_offset 1096
	leaq	siD(%rip), %rax
	pushq	%rax
	.cfi_def_cfa_offset 1104
	leaq	siB(%rip), %r8
	xorl	%eax, %eax
	leaq	siA(%rip), %rcx
	leaq	siC(%rip), %r9
	leaq	.LC1(%rip), %rsi
	movq	%rbp, %rdi
	call	__isoc99_sscanf@PLT
	movq	szpFpI(%rip), %rdx
	movq	%rbx, %rdi
	movl	$200005, %esi
	subl	$1, siA(%rip)
	subl	$1, siB(%rip)
	subl	$1, siC(%rip)
	subl	$1, siD(%rip)
	call	fgets@PLT
	movl	siD(%rip), %ecx
	movl	siB(%rip), %r8d
	popq	%rax
	.cfi_def_cfa_offset 1096
	popq	%rdx
	.cfi_def_cfa_offset 1088
	cmpl	%r8d, %ecx
	jl	.L20
	movslq	%r8d, %rax
	xorl	%esi, %esi
	leaq	1(%rbx), %rdi
	xorl	%edx, %edx
	jmp	.L24
	.p2align 4,,10
	.p2align 3
.L21:
	cmpb	$46, (%rax,%rdi)
	jne	.L35
	addq	$1, %rax
	xorl	%edx, %edx
	cmpl	%eax, %ecx
	jl	.L40
.L24:
	cmpb	$46, (%rbx,%rax)
	jne	.L21
	addl	$1, %edx
	cmpl	%edx, %esi
	cmovl	%edx, %esi
	addq	$1, %rax
	cmpl	%eax, %ecx
	jge	.L24
.L40:
	movl	siC(%rip), %edx
	cmpl	$2, %esi
	jle	.L20
.L26:
	movslq	siA(%rip), %rax
	cmpl	%edx, %eax
	jg	.L34
	leaq	1+sc1Mass(%rip), %rcx
	.p2align 4,,10
	.p2align 3
.L29:
	cmpb	$46, (%rbx,%rax)
	je	.L28
	cmpb	$46, (%rax,%rcx)
	jne	.L35
.L28:
	addq	$1, %rax
	cmpl	%eax, %edx
	jge	.L29
.L34:
	xorl	%eax, %eax
.L19:
	movq	1048(%rsp), %rdx
	subq	%fs:40, %rdx
	jne	.L41
	addq	$1064, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	.cfi_restore_state
	movl	siC(%rip), %edx
	cmpl	%edx, %ecx
	jg	.L26
	leal	-1(%r8), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	je	.L42
.L27:
	leal	-1(%rcx), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	jne	.L35
	addl	$1, %ecx
	movslq	%ecx, %rcx
	cmpb	$46, (%rbx,%rcx)
	je	.L26
	.p2align 4,,10
	.p2align 3
.L35:
	movl	$-1, %eax
	jmp	.L19
.L42:
	leal	1(%r8), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	jne	.L27
	jmp	.L26
.L41:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE54:
	.size	fMain, .-fMain
	.p2align 4
	.globl	fOne
	.type	fOne, @function
fOne:
.LFB55:
	.cfi_startproc
	endbr64
	subq	$1048, %rsp
	.cfi_def_cfa_offset 1056
	movq	%fs:40, %rax
	movq	%rax, 1032(%rsp)
	movq	stdin(%rip), %rax
	movq	%rax, szpFpI(%rip)
	xorl	%eax, %eax
	call	fMain
	testl	%eax, %eax
	jne	.L44
	movl	$175334745, (%rsp)
	movb	$0, 4(%rsp)
.L45:
	xorl	%eax, %eax
	movq	%rsp, %rdx
	movl	$1, %edi
	leaq	.LC0(%rip), %rsi
	call	__printf_chk@PLT
	movq	1032(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L48
	xorl	%eax, %eax
	addq	$1048, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L44:
	.cfi_restore_state
	movl	$683854, (%rsp)
	jmp	.L45
.L48:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE55:
	.size	fOne, .-fOne
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB56:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	call	fOne
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	main, .-main
	.local	sc1Mass
	.comm	sc1Mass,200005,32
	.local	siD
	.comm	siD,4,4
	.local	siC
	.comm	siC,4,4
	.local	siB
	.comm	siB,4,4
	.local	siA
	.comm	siA,4,4
	.local	szpFpI
	.comm	szpFpI,8,8
	.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	"%s"
	.text
	.p2align 4
	.globl	fOutLine
	.type	fOutLine, @function
fOutLine:
.LFB51:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movq	%rdi, %rdx
	leaq	.LC0(%rip), %rsi
	xorl	%eax, %eax
	movl	$1, %edi
	call	__printf_chk@PLT
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE51:
	.size	fOutLine, .-fOutLine
	.p2align 4
	.globl	fChkMove
	.type	fChkMove, @function
fChkMove:
.LFB52:
	.cfi_startproc
	endbr64
	cmpl	%esi, %edi
	jg	.L9
	leaq	sc1Mass(%rip), %rdx
	movslq	%edi, %rdi
	xorl	%eax, %eax
	xorl	%r8d, %r8d
	leaq	1(%rdx), %rcx
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L6:
	cmpb	$46, (%rdi,%rcx)
	jne	.L10
	addq	$1, %rdi
	xorl	%eax, %eax
	cmpl	%edi, %esi
	jl	.L4
.L8:
	cmpb	$46, (%rdx,%rdi)
	jne	.L6
	addl	$1, %eax
	cmpl	%eax, %r8d
	cmovl	%eax, %r8d
	addq	$1, %rdi
	cmpl	%edi, %esi
	jge	.L8
.L4:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L10:
	movl	$-1, %r8d
	movl	%r8d, %eax
	ret
.L9:
	xorl	%r8d, %r8d
	jmp	.L4
	.cfi_endproc
.LFE52:
	.size	fChkMove, .-fChkMove
	.p2align 4
	.globl	fChkB
	.type	fChkB, @function
fChkB:
.LFB53:
	.cfi_startproc
	endbr64
	movl	siD(%rip), %edx
	xorl	%eax, %eax
	cmpl	siC(%rip), %edx
	jg	.L12
	movl	siB(%rip), %edi
	leaq	sc1Mass(%rip), %rcx
	leal	-1(%rdi), %esi
	movslq	%esi, %rsi
	cmpb	$46, (%rcx,%rsi)
	je	.L18
.L14:
	leal	-1(%rdx), %eax
	cltq
	cmpb	$46, (%rcx,%rax)
	jne	.L17
	addl	$1, %edx
	xorl	%eax, %eax
	movslq	%edx, %rdx
	cmpb	$46, (%rcx,%rdx)
	setne	%al
	negl	%eax
	ret
	.p2align 4,,10
	.p2align 3
.L18:
	addl	$1, %edi
	movslq	%edi, %rdi
	cmpb	$46, (%rcx,%rdi)
	jne	.L14
.L12:
	ret
	.p2align 4,,10
	.p2align 3
.L17:
	movl	$-1, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	fChkB, .-fChkB
	.section	.rodata.str1.1
.LC1:
	.string	"%d%d%d%d%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB54:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movl	$1024, %esi
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	sc1Mass(%rip), %rbx
	subq	$1064, %rsp
	.cfi_def_cfa_offset 1088
	movq	szpFpI(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	leaq	12(%rsp), %rdx
	subq	$8, %rsp
	.cfi_def_cfa_offset 1096
	leaq	siD(%rip), %rax
	pushq	%rax
	.cfi_def_cfa_offset 1104
	leaq	siB(%rip), %r8
	xorl	%eax, %eax
	leaq	siA(%rip), %rcx
	leaq	siC(%rip), %r9
	leaq	.LC1(%rip), %rsi
	movq	%rbp, %rdi
	call	__isoc99_sscanf@PLT
	movq	szpFpI(%rip), %rdx
	movq	%rbx, %rdi
	movl	$200005, %esi
	subl	$1, siA(%rip)
	subl	$1, siB(%rip)
	subl	$1, siC(%rip)
	subl	$1, siD(%rip)
	call	fgets@PLT
	movl	siD(%rip), %ecx
	movl	siB(%rip), %r8d
	popq	%rax
	.cfi_def_cfa_offset 1096
	popq	%rdx
	.cfi_def_cfa_offset 1088
	cmpl	%r8d, %ecx
	jl	.L20
	movslq	%r8d, %rax
	xorl	%esi, %esi
	leaq	1(%rbx), %rdi
	xorl	%edx, %edx
	jmp	.L24
	.p2align 4,,10
	.p2align 3
.L21:
	cmpb	$46, (%rax,%rdi)
	jne	.L35
	addq	$1, %rax
	xorl	%edx, %edx
	cmpl	%eax, %ecx
	jl	.L40
.L24:
	cmpb	$46, (%rbx,%rax)
	jne	.L21
	addl	$1, %edx
	cmpl	%edx, %esi
	cmovl	%edx, %esi
	addq	$1, %rax
	cmpl	%eax, %ecx
	jge	.L24
.L40:
	movl	siC(%rip), %edx
	cmpl	$2, %esi
	jle	.L20
.L26:
	movslq	siA(%rip), %rax
	cmpl	%edx, %eax
	jg	.L34
	leaq	1+sc1Mass(%rip), %rcx
	.p2align 4,,10
	.p2align 3
.L29:
	cmpb	$46, (%rbx,%rax)
	je	.L28
	cmpb	$46, (%rax,%rcx)
	jne	.L35
.L28:
	addq	$1, %rax
	cmpl	%eax, %edx
	jge	.L29
.L34:
	xorl	%eax, %eax
.L19:
	movq	1048(%rsp), %rdx
	subq	%fs:40, %rdx
	jne	.L41
	addq	$1064, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	.cfi_restore_state
	movl	siC(%rip), %edx
	cmpl	%edx, %ecx
	jg	.L26
	leal	-1(%r8), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	je	.L42
.L27:
	leal	-1(%rcx), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	jne	.L35
	addl	$1, %ecx
	movslq	%ecx, %rcx
	cmpb	$46, (%rbx,%rcx)
	je	.L26
	.p2align 4,,10
	.p2align 3
.L35:
	movl	$-1, %eax
	jmp	.L19
.L42:
	leal	1(%r8), %eax
	cltq
	cmpb	$46, (%rbx,%rax)
	jne	.L27
	jmp	.L26
.L41:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE54:
	.size	fMain, .-fMain
	.p2align 4
	.globl	fOne
	.type	fOne, @function
fOne:
.LFB55:
	.cfi_startproc
	endbr64
	subq	$1048, %rsp
	.cfi_def_cfa_offset 1056
	movq	%fs:40, %rax
	movq	%rax, 1032(%rsp)
	movq	stdin(%rip), %rax
	movq	%rax, szpFpI(%rip)
	xorl	%eax, %eax
	call	fMain
	testl	%eax, %eax
	jne	.L44
	movl	$175334745, (%rsp)
	movb	$0, 4(%rsp)
.L45:
	xorl	%eax, %eax
	movq	%rsp, %rdx
	movl	$1, %edi
	leaq	.LC0(%rip), %rsi
	call	__printf_chk@PLT
	movq	1032(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L48
	xorl	%eax, %eax
	addq	$1048, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L44:
	.cfi_restore_state
	movl	$683854, (%rsp)
	jmp	.L45
.L48:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE55:
	.size	fOne, .-fOne
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB56:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	call	fOne
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	main, .-main
	.local	sc1Mass
	.comm	sc1Mass,200005,32
	.local	siD
	.comm	siD,4,4
	.local	siC
	.comm	siC,4,4
	.local	siB
	.comm	siB,4,4
	.local	siA
	.comm	siA,4,4
	.local	szpFpI
	.comm	szpFpI,8,8
	.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 <float.h>
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部定数
#define D_MASS_MAX		200005									// 最大マス数
#define D_MASS_NONE		'.'										// マス - なし

// 内部変数
static FILE *szpFpI;											// 入力
static int siA, siB, siC, siD;									// 位置
static char sc1Mass[D_MASS_MAX];								// マス

// 内部変数 - テスト用
#ifdef D_TEST
	static int siRes;
	static FILE *szpFpA;
	static int siTNo;
#endif

// １行出力
int
fOutLine(
	char *pcpLine				// <I> １行
)
{
	char lc1Buf[1024];

#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, pcpLine)) {
		siRes = -1;
	}
#else
	printf("%s", pcpLine);
#endif

	return 0;
}

// 移動チェック
int
fChkMove(
	int piSNo					// <I> 開始位置
	, int piENo					// <I> 終了位置
)
{
	int i;

	// 移動
	int liMax = 0;
	int liLen = 0;
	for (i = piSNo; i <= piENo; i++) {
		if (sc1Mass[i] == D_MASS_NONE) {
			liLen++;
			if (liMax < liLen) {
				liMax = liLen;
			}
		}
		else if (sc1Mass[i + 1] == D_MASS_NONE) {
			liLen = 0;
		}
		else {
			return -1;
		}
	}

	return liMax;
}

// Bの妨げチェック
int
fChkB(
)
{
	// D > C
	if (siD > siC) {
		return 0;
	}

	// Bの前後
	if (sc1Mass[siB - 1] == D_MASS_NONE) {
		if (sc1Mass[siB + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	// Dの前後
	if (sc1Mass[siD - 1] == D_MASS_NONE) {
		if (sc1Mass[siD + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	return -1;
}

// 実行メイン
int
fMain(
)
{
	int liRet, liWork;
	char lc1Buf[1024];

	// 位置 - 取得
	fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
	sscanf(lc1Buf, "%d%d%d%d%d", &liWork, &siA, &siB, &siC, &siD);
	siA--;
	siB--;
	siC--;
	siD--;

	// マス - 取得
	fgets(sc1Mass, sizeof(sc1Mass), szpFpI);

	// B -> D
	liRet = fChkMove(siB, siD);
	if (liRet < 0) {
		return -1;
	}

	// Bの妨げチェック
	if (liRet < 3) {
		liRet = fChkB();
		if (liRet != 0) {
			return -1;
		}
	}

	// A -> C
	liRet = fChkMove(siA, siC);
	if (liRet < 0) {
		return -1;
	}

	return 0;
}

// １回実行
int
fOne(
)
{
	int liRet;
	char lc1Buf[1024];

	// 入力 - セット
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", siTNo);
	szpFpI = fopen(lc1Buf, "r");
	sprintf(lc1Buf, ".\\Test\\A%d.txt", siTNo);
	szpFpA = fopen(lc1Buf, "r");
	siRes = 0;
#else
	szpFpI = stdin;
#endif

	// 実行メイン
	liRet = fMain();

	// １行出力
	if (liRet == 0) {
		sprintf(lc1Buf, "Yes\n");
	}
	else {
		sprintf(lc1Buf, "No\n");
	}
	fOutLine(lc1Buf);

	// 残データ有無
#ifdef D_TEST
	lc1Buf[0] = '\0';
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, "")) {
		siRes = -1;
	}
#endif

	// テストファイルクローズ
#ifdef D_TEST
	fclose(szpFpI);
	fclose(szpFpA);
#endif

	// テスト結果
#ifdef D_TEST
	if (siRes == 0) {
		printf("OK %d\n", siTNo);
	}
	else {
		printf("NG %d\n", siTNo);
	}
#endif

	return 0;
}

// プログラム開始
int
main()
{

#ifdef D_TEST
	int i;
	for (i = D_TEST_SNO; i <= D_TEST_ENO; i++) {
		siTNo = i;
		fOne();
	}
#else
	fOne();
#endif

	return 0;
}


9 1 3 7 6
.#..#..
 15 1 3 15 11
...#.#...#.#...
 4 1 3 7 6
.#..#..
 8 1 3 7 6
.#..#..
 15 0 3 15 13
...#.#...#.#...
 15 0 3 15 11
...#.#...#.#...
 1 1 3 7 6
.#..#..
 15 1 3 15 7
...#.#...#.#...
 8 1 4 7 6
.#..#..
 15 0 6 15 13
...#.#...#.#...

No
 Yes
 No
 No
 Yes
 Yes
 No
 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 <float.h>
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部定数
#define D_MASS_MAX		200005									// 最大マス数
#define D_MASS_NONE		'.'										// マス - なし

// 内部変数
static FILE *szpFpI;											// 入力
static int siA, siB, siC, siD;									// 位置
static char sc1Mass[D_MASS_MAX];								// マス

// 内部変数 - テスト用
#ifdef D_TEST
	static int siRes;
	static FILE *szpFpA;
	static int siTNo;
#endif

// １行出力
int
fOutLine(
	char *pcpLine				// <I> １行
)
{
	char lc1Buf[1024];

#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, pcpLine)) {
		siRes = -1;
	}
#else
	printf("%s", pcpLine);
#endif

	return 0;
}

// 移動チェック
int
fChkMove(
	int piSNo					// <I> 開始位置
	, int piENo					// <I> 終了位置
)
{
	int i;

	// 移動
	int liMax = 0;
	int liLen = 0;
	for (i = piSNo; i <= piENo; i++) {
		if (sc1Mass[i] == D_MASS_NONE) {
			liLen++;
			if (liMax < liLen) {
				liMax = liLen;
			}
		}
		else if (sc1Mass[i + 1] == D_MASS_NONE) {
			liLen = 0;
		}
		else {
			return -1;
		}
	}

	return liMax;
}

// Bの妨げチェック
int
fChkB(
)
{
	// D > C
	if (siD > siC) {
		return 0;
	}

	// Bの前後
	if (sc1Mass[siB - 1] == D_MASS_NONE) {
		if (sc1Mass[siB + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	// Dの前後
	if (sc1Mass[siD - 1] == D_MASS_NONE) {
		if (sc1Mass[siD + 1] == D_MASS_NONE) {
			return 0;
		}
	}

	return -1;
}

// 実行メイン
int
fMain(
)
{
	int liRet, liWork;
	char lc1Buf[1024];

	// 位置 - 取得
	fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
	sscanf(lc1Buf, "%d%d%d%d%d", &liWork, &siA, &siB, &siC, &siD);
	siA--;
	siB--;
	siC--;
	siD--;

	// マス - 取得
	fgets(sc1Mass, sizeof(sc1Mass), szpFpI);

	// B -> D
	liRet = fChkMove(siB, siD);
	if (liRet < 0) {
		return -1;
	}

	// Bの妨げチェック
	if (liRet < 3) {
		liRet = fChkB();
		if (liRet != 0) {
			return -1;
		}
	}

	// A -> C
	liRet = fChkMove(siA, siC);
	if (liRet < 0) {
		return -1;
	}

	return 0;
}

// １回実行
int
fOne(
)
{
	int liRet;
	char lc1Buf[1024];

	// 入力 - セット
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", siTNo);
	szpFpI = fopen(lc1Buf, "r");
	sprintf(lc1Buf, ".\\Test\\A%d.txt", siTNo);
	szpFpA = fopen(lc1Buf, "r");
	siRes = 0;
#else
	szpFpI = stdin;
#endif

	// 実行メイン
	liRet = fMain();

	// １行出力
	if (liRet == 0) {
		sprintf(lc1Buf, "Yes\n");
	}
	else {
		sprintf(lc1Buf, "No\n");
	}
	fOutLine(lc1Buf);

	// 残データ有無
#ifdef D_TEST
	lc1Buf[0] = '\0';
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, "")) {
		siRes = -1;
	}
#endif

	// テストファイルクローズ
#ifdef D_TEST
	fclose(szpFpI);
	fclose(szpFpA);
#endif

	// テスト結果
#ifdef D_TEST
	if (siRes == 0) {
		printf("OK %d\n", siTNo);
	}
	else {
		printf("NG %d\n", siTNo);
	}
#endif

	return 0;
}

// プログラム開始
int
main()
{

#ifdef D_TEST
	int i;
	for (i = D_TEST_SNO; i <= D_TEST_ENO; i++) {
		siTNo = i;
		fOne();
	}
#else
	fOne();
#endif

	return 0;
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.local	szpFpI
	.comm	szpFpI,8,8
	.local	siA
	.comm	siA,4,4
	.local	siB
	.comm	siB,4,4
	.local	siC
	.comm	siC,4,4
	.local	siD
	.comm	siD,4,4
	.local	sc1Mass
	.comm	sc1Mass,200005,32
	.section	.rodata
.LC0:
	.string	"%s"
	.text
	.globl	fOutLine
	.type	fOutLine, @function
fOutLine:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%rdi, -1048(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	-1048(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L3
	call	__stack_chk_fail@PLT
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fOutLine, .-fOutLine
	.globl	fChkMove
	.type	fChkMove, @function
fChkMove:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	movl	$0, -4(%rbp)
	movl	-20(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L5
.L10:
	movl	-12(%rbp), %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L6
	addl	$1, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L7
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L7
.L6:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L8
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	$-1, %eax
	jmp	.L9
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jle	.L10
	movl	-8(%rbp), %eax
.L9:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	fChkMove, .-fChkMove
	.globl	fChkB
	.type	fChkB, @function
fChkB:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	siD(%rip), %edx
	movl	siC(%rip), %eax
	cmpl	%eax, %edx
	jle	.L12
	movl	$0, %eax
	jmp	.L13
.L12:
	movl	siB(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	siB(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	$0, %eax
	jmp	.L13
.L14:
	movl	siD(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	siD(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	$0, %eax
	jmp	.L13
.L15:
	movl	$-1, %eax
.L13:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	fChkB, .-fChkB
	.section	.rodata
.LC1:
	.string	"%d%d%d%d%d"
	.text
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	szpFpI(%rip), %rdx
	leaq	-1040(%rbp), %rax
	movl	$1024, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	leaq	-1048(%rbp), %rdx
	leaq	-1040(%rbp), %rax
	subq	$8, %rsp
	leaq	siD(%rip), %rcx
	pushq	%rcx
	leaq	siC(%rip), %r9
	leaq	siB(%rip), %r8
	leaq	siA(%rip), %rcx
	leaq	.LC1(%rip), %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_sscanf@PLT
	addq	$16, %rsp
	movl	siA(%rip), %eax
	subl	$1, %eax
	movl	%eax, siA(%rip)
	movl	siB(%rip), %eax
	subl	$1, %eax
	movl	%eax, siB(%rip)
	movl	siC(%rip), %eax
	subl	$1, %eax
	movl	%eax, siC(%rip)
	movl	siD(%rip), %eax
	subl	$1, %eax
	movl	%eax, siD(%rip)
	movq	szpFpI(%rip), %rax
	movq	%rax, %rdx
	movl	$200005, %esi
	leaq	sc1Mass(%rip), %rax
	movq	%rax, %rdi
	call	fgets@PLT
	movl	siD(%rip), %edx
	movl	siB(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L17
	movl	$-1, %eax
	jmp	.L21
.L17:
	cmpl	$2, -1044(%rbp)
	jg	.L19
	movl	$0, %eax
	call	fChkB
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	je	.L19
	movl	$-1, %eax
	jmp	.L21
.L19:
	movl	siC(%rip), %edx
	movl	siA(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L20
	movl	$-1, %eax
	jmp	.L21
.L20:
	movl	$0, %eax
.L21:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L22
	call	__stack_chk_fail@PLT
.L22:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	fMain, .-fMain
	.section	.rodata
.LC2:
	.string	"Yes\n"
.LC3:
	.string	"No\n"
	.text
	.globl	fOne
	.type	fOne, @function
fOne:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	stdin(%rip), %rax
	movq	%rax, szpFpI(%rip)
	movl	$0, %eax
	call	fMain
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jne	.L24
	leaq	-1040(%rbp), %rax
	leaq	.LC2(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
	jmp	.L25
.L24:
	leaq	-1040(%rbp), %rax
	leaq	.LC3(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
.L25:
	leaq	-1040(%rbp), %rax
	movq	%rax, %rdi
	call	fOutLine
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	fOne, .-fOne
	.globl	main
	.type	main, @function
main:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$0, %eax
	call	fOne
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.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
	.local	szpFpI
	.comm	szpFpI,8,8
	.local	siA
	.comm	siA,4,4
	.local	siB
	.comm	siB,4,4
	.local	siC
	.comm	siC,4,4
	.local	siD
	.comm	siD,4,4
	.local	sc1Mass
	.comm	sc1Mass,200005,32
	.section	.rodata
.LC0:
	.string	"%s"
	.text
	.globl	fOutLine
	.type	fOutLine, @function
fOutLine:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%rdi, -1048(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	-1048(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L3
	call	__stack_chk_fail@PLT
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fOutLine, .-fOutLine
	.globl	fChkMove
	.type	fChkMove, @function
fChkMove:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	movl	$0, -4(%rbp)
	movl	-20(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L5
.L10:
	movl	-12(%rbp), %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L6
	addl	$1, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L7
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L7
.L6:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L8
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	$-1, %eax
	jmp	.L9
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jle	.L10
	movl	-8(%rbp), %eax
.L9:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	fChkMove, .-fChkMove
	.globl	fChkB
	.type	fChkB, @function
fChkB:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	siD(%rip), %edx
	movl	siC(%rip), %eax
	cmpl	%eax, %edx
	jle	.L12
	movl	$0, %eax
	jmp	.L13
.L12:
	movl	siB(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	siB(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L14
	movl	$0, %eax
	jmp	.L13
.L14:
	movl	siD(%rip), %eax
	subl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	siD(%rip), %eax
	addl	$1, %eax
	cltq
	leaq	sc1Mass(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$46, %al
	jne	.L15
	movl	$0, %eax
	jmp	.L13
.L15:
	movl	$-1, %eax
.L13:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	fChkB, .-fChkB
	.section	.rodata
.LC1:
	.string	"%d%d%d%d%d"
	.text
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	szpFpI(%rip), %rdx
	leaq	-1040(%rbp), %rax
	movl	$1024, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	leaq	-1048(%rbp), %rdx
	leaq	-1040(%rbp), %rax
	subq	$8, %rsp
	leaq	siD(%rip), %rcx
	pushq	%rcx
	leaq	siC(%rip), %r9
	leaq	siB(%rip), %r8
	leaq	siA(%rip), %rcx
	leaq	.LC1(%rip), %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_sscanf@PLT
	addq	$16, %rsp
	movl	siA(%rip), %eax
	subl	$1, %eax
	movl	%eax, siA(%rip)
	movl	siB(%rip), %eax
	subl	$1, %eax
	movl	%eax, siB(%rip)
	movl	siC(%rip), %eax
	subl	$1, %eax
	movl	%eax, siC(%rip)
	movl	siD(%rip), %eax
	subl	$1, %eax
	movl	%eax, siD(%rip)
	movq	szpFpI(%rip), %rax
	movq	%rax, %rdx
	movl	$200005, %esi
	leaq	sc1Mass(%rip), %rax
	movq	%rax, %rdi
	call	fgets@PLT
	movl	siD(%rip), %edx
	movl	siB(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L17
	movl	$-1, %eax
	jmp	.L21
.L17:
	cmpl	$2, -1044(%rbp)
	jg	.L19
	movl	$0, %eax
	call	fChkB
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	je	.L19
	movl	$-1, %eax
	jmp	.L21
.L19:
	movl	siC(%rip), %edx
	movl	siA(%rip), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	fChkMove
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jns	.L20
	movl	$-1, %eax
	jmp	.L21
.L20:
	movl	$0, %eax
.L21:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L22
	call	__stack_chk_fail@PLT
.L22:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	fMain, .-fMain
	.section	.rodata
.LC2:
	.string	"Yes\n"
.LC3:
	.string	"No\n"
	.text
	.globl	fOne
	.type	fOne, @function
fOne:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$1056, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	stdin(%rip), %rax
	movq	%rax, szpFpI(%rip)
	movl	$0, %eax
	call	fMain
	movl	%eax, -1044(%rbp)
	cmpl	$0, -1044(%rbp)
	jne	.L24
	leaq	-1040(%rbp), %rax
	leaq	.LC2(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
	jmp	.L25
.L24:
	leaq	-1040(%rbp), %rax
	leaq	.LC3(%rip), %rdx
	movq	%rdx, %rsi
	movq	%rax, %rdi
	movl	$0, %eax
	call	sprintf@PLT
.L25:
	leaq	-1040(%rbp), %rax
	movq	%rax, %rdi
	call	fOutLine
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	fOne, .-fOne
	.globl	main
	.type	main, @function
main:
.LFB11:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$0, %eax
	call	fOne
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.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:
