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

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

// 内部変数 - テスト用
#ifdef D_TEST
	static FILE *szpFpT;
#endif

// 素数判定
int
fChk(
	int piVal					// <I> 値
)
{
	int i, liRet;

	// 上限値
	double ldLimit = sqrt((double)piVal);
	int liLimit = (int)ldLimit;

	// 割り切れるかチェック
	for (i = 2; i <= liLimit; i++) {
		liRet = piVal % i;
		if (liRet == 0) {
			return -1;
		}
	}

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1～
)
{
	int i, liRet;
	char lc1Buf[1024];

	// テストファイルオープン
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpT = fopen(lc1Buf, "r");
#endif

	// 出力数取得
	int liCnt;
#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpT);
#else
	fgets(lc1Buf, sizeof(lc1Buf), stdin);
#endif
	sscanf(lc1Buf, "%d", &liCnt);

	// 表示 - 5n+1 AND 素数
	int liOut = 0;
	for (i = 11; ; i+=5) {

		// 素数チェック
		liRet = fChk(i);
		if (liRet != 0) {
			continue;
		}

		// 表示
		if (liOut > 0) {
			printf(" ");
		}
		printf("%d", i);
		liOut++;

		// 終了チェック
		if (liOut == liCnt) {
			printf("\n");
			break;
		}
	}

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

	return 0;
}

int
main()
{

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

	return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fChk
	.type	fChk, @function
fChk:
.LFB51:
	.cfi_startproc
	endbr64
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%edi, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L27
	sqrtsd	%xmm0, %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L16
	testb	$1, %dil
	je	.L20
	movl	$2, %ecx
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L21:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L20
.L19:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L21
.L16:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	movl	$-1, %eax
	ret
.L27:
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	%edi, 12(%rsp)
	call	sqrt@PLT
	movl	12(%rsp), %edi
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L8
	testb	$1, %dil
	je	.L10
	movl	$2, %ecx
	jmp	.L6
.L7:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L10
.L6:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L7
.L8:
	xorl	%eax, %eax
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	orl	$-1, %eax
	jmp	.L1
	.cfi_endproc
.LFE51:
	.size	fChk, .-fChk
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$1024, %esi
	movl	$11, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC1(%rip), %rbx
	subq	$1056, %rsp
	.cfi_def_cfa_offset 1088
	movq	stdin(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	movq	%rbp, %rdi
	leaq	12(%rsp), %rdx
	movq	%rbx, %rsi
	xorl	%eax, %eax
	xorl	%ebp, %ebp
	call	__isoc99_sscanf@PLT
	.p2align 4,,10
	.p2align 3
.L36:
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%r12d, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L47
	sqrtsd	%xmm0, %xmm0
.L31:
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L32
	testb	$1, %r12b
	je	.L33
	movl	$2, %ecx
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L35:
	movl	%r12d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L33
.L34:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L35
.L32:
	testl	%ebp, %ebp
	jle	.L38
	movl	$32, %edi
	call	putchar@PLT
.L38:
	movl	%r12d, %edx
	movq	%rbx, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	addl	$1, %ebp
	cmpl	%ebp, 12(%rsp)
	je	.L50
.L33:
	addl	$5, %r12d
	jmp	.L36
.L50:
	movl	$10, %edi
	call	putchar@PLT
	movq	1048(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L51
	addq	$1056, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L47:
	.cfi_restore_state
	call	sqrt@PLT
	jmp	.L31
.L51:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	fMain, .-fMain
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB53:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	fMain
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE53:
	.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.
Optimized Assembly Code:

user
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fChk
	.type	fChk, @function
fChk:
.LFB51:
	.cfi_startproc
	endbr64
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%edi, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L27
	sqrtsd	%xmm0, %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L16
	testb	$1, %dil
	je	.L20
	movl	$2, %ecx
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L21:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L20
.L19:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L21
.L16:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	movl	$-1, %eax
	ret
.L27:
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	%edi, 12(%rsp)
	call	sqrt@PLT
	movl	12(%rsp), %edi
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L8
	testb	$1, %dil
	je	.L10
	movl	$2, %ecx
	jmp	.L6
.L7:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L10
.L6:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L7
.L8:
	xorl	%eax, %eax
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	orl	$-1, %eax
	jmp	.L1
	.cfi_endproc
.LFE51:
	.size	fChk, .-fChk
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$1024, %esi
	movl	$11, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC1(%rip), %rbx
	subq	$1056, %rsp
	.cfi_def_cfa_offset 1088
	movq	stdin(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	movq	%rbp, %rdi
	leaq	12(%rsp), %rdx
	movq	%rbx, %rsi
	xorl	%eax, %eax
	xorl	%ebp, %ebp
	call	__isoc99_sscanf@PLT
	.p2align 4,,10
	.p2align 3
.L36:
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%r12d, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L47
	sqrtsd	%xmm0, %xmm0
.L31:
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L32
	testb	$1, %r12b
	je	.L33
	movl	$2, %ecx
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L35:
	movl	%r12d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L33
.L34:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L35
.L32:
	testl	%ebp, %ebp
	jle	.L38
	movl	$32, %edi
	call	putchar@PLT
.L38:
	movl	%r12d, %edx
	movq	%rbx, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	addl	$1, %ebp
	cmpl	%ebp, 12(%rsp)
	je	.L50
.L33:
	addl	$5, %r12d
	jmp	.L36
.L50:
	movl	$10, %edi
	call	putchar@PLT
	movq	1048(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L51
	addq	$1056, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L47:
	.cfi_restore_state
	call	sqrt@PLT
	jmp	.L31
.L51:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	fMain, .-fMain
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB53:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	fMain
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE53:
	.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
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fChk
	.type	fChk, @function
fChk:
.LFB51:
	.cfi_startproc
	endbr64
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%edi, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L27
	sqrtsd	%xmm0, %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L16
	testb	$1, %dil
	je	.L20
	movl	$2, %ecx
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L21:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L20
.L19:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L21
.L16:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	movl	$-1, %eax
	ret
.L27:
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	%edi, 12(%rsp)
	call	sqrt@PLT
	movl	12(%rsp), %edi
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L8
	testb	$1, %dil
	je	.L10
	movl	$2, %ecx
	jmp	.L6
.L7:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L10
.L6:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L7
.L8:
	xorl	%eax, %eax
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	orl	$-1, %eax
	jmp	.L1
	.cfi_endproc
.LFE51:
	.size	fChk, .-fChk
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$1024, %esi
	movl	$11, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC1(%rip), %rbx
	subq	$1056, %rsp
	.cfi_def_cfa_offset 1088
	movq	stdin(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	movq	%rbp, %rdi
	leaq	12(%rsp), %rdx
	movq	%rbx, %rsi
	xorl	%eax, %eax
	xorl	%ebp, %ebp
	call	__isoc99_sscanf@PLT
	.p2align 4,,10
	.p2align 3
.L36:
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%r12d, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L47
	sqrtsd	%xmm0, %xmm0
.L31:
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L32
	testb	$1, %r12b
	je	.L33
	movl	$2, %ecx
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L35:
	movl	%r12d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L33
.L34:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L35
.L32:
	testl	%ebp, %ebp
	jle	.L38
	movl	$32, %edi
	call	putchar@PLT
.L38:
	movl	%r12d, %edx
	movq	%rbx, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	addl	$1, %ebp
	cmpl	%ebp, 12(%rsp)
	je	.L50
.L33:
	addl	$5, %r12d
	jmp	.L36
.L50:
	movl	$10, %edi
	call	putchar@PLT
	movq	1048(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L51
	addq	$1056, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L47:
	.cfi_restore_state
	call	sqrt@PLT
	jmp	.L31
.L51:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	fMain, .-fMain
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB53:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	fMain
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE53:
	.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:
```
```c
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部変数 - テスト用
#ifdef D_TEST
	static FILE *szpFpT;
#endif

// 素数判定
int
fChk(
	int piVal					// <I> 値
)
{
	int i, liRet;

	// 上限値
	double ldLimit = sqrt((double)piVal);
	int liLimit = (int)ldLimit;

	// 割り切れるかチェック
	for (i = 2; i <= liLimit; i++) {
		liRet = piVal % i;
		if (liRet == 0) {
			return -1;
		}
	}

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1～
)
{
	int i, liRet;
	char lc1Buf[1024];

	// テストファイルオープン
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpT = fopen(lc1Buf, "r");
#endif

	// 出力数取得
	int liCnt;
#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpT);
#else
	fgets(lc1Buf, sizeof(lc1Buf), stdin);
#endif
	sscanf(lc1Buf, "%d", &liCnt);

	// 表示 - 5n+1 AND 素数
	int liOut = 0;
	for (i = 11; ; i+=5) {

		// 素数チェック
		liRet = fChk(i);
		if (liRet != 0) {
			continue;
		}

		// 表示
		if (liOut > 0) {
			printf(" ");
		}
		printf("%d", i);
		liOut++;

		// 終了チェック
		if (liOut == liCnt) {
			printf("\n");
			break;
		}
	}

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

	return 0;
}

int
main()
{

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

	return 0;
}

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

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

// 内部変数 - テスト用
#ifdef D_TEST
	static FILE *szpFpT;
#endif

// 素数判定
int
fChk(
	int piVal					// <I> 値
)
{
	int i, liRet;

	// 上限値
	double ldLimit = sqrt((double)piVal);
	int liLimit = (int)ldLimit;

	// 割り切れるかチェック
	for (i = 2; i <= liLimit; i++) {
		liRet = piVal % i;
		if (liRet == 0) {
			return -1;
		}
	}

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1～
)
{
	int i, liRet;
	char lc1Buf[1024];

	// テストファイルオープン
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpT = fopen(lc1Buf, "r");
#endif

	// 出力数取得
	int liCnt;
#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpT);
#else
	fgets(lc1Buf, sizeof(lc1Buf), stdin);
#endif
	sscanf(lc1Buf, "%d", &liCnt);

	// 表示 - 5n+1 AND 素数
	int liOut = 0;
	for (i = 11; ; i+=5) {

		// 素数チェック
		liRet = fChk(i);
		if (liRet != 0) {
			continue;
		}

		// 表示
		if (liOut > 0) {
			printf(" ");
		}
		printf("%d", i);
		liOut++;

		// 終了チェック
		if (liOut == liCnt) {
			printf("\n");
			break;
		}
	}

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

	return 0;
}

int
main()
{

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

	return 0;
}

```

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.
Optimized Assembly Code:

10
 14
 12
 20
 27
 13
 50
 17
 1
 2

11 31 41 61 71 101 131 151 181 191
 11 31 41 61 71 101 131 151 181 191 211 241 251 271
 11 31 41 61 71 101 131 151 181 191 211 241
 11 31 41 61 71 101 131 151 181 191 211 241 251 271 281 311 331 401 421 431
 11 31 41 61 71 101 131 151 181 191 211 241 251 271 281 311 331 401 421 431 461 491 521 541 571 601 631
 11 31 41 61 71 101 131 151 181 191 211 241 251
 11 31 41 61 71 101 131 151 181 191 211 241 251 271 281 311 331 401 421 431 461 491 521 541 571 601 631 641 661 691 701 751 761 811 821 881 911 941 971 991 1021 1031 1051 1061 1091 1151 1171 1181 1201 1231
 11 31 41 61 71 101 131 151 181 191 211 241 251 271 281 311 331
 11
 11 31

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

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

// 内部変数 - テスト用
#ifdef D_TEST
	static FILE *szpFpT;
#endif

// 素数判定
int
fChk(
	int piVal					// <I> 値
)
{
	int i, liRet;

	// 上限値
	double ldLimit = sqrt((double)piVal);
	int liLimit = (int)ldLimit;

	// 割り切れるかチェック
	for (i = 2; i <= liLimit; i++) {
		liRet = piVal % i;
		if (liRet == 0) {
			return -1;
		}
	}

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1～
)
{
	int i, liRet;
	char lc1Buf[1024];

	// テストファイルオープン
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpT = fopen(lc1Buf, "r");
#endif

	// 出力数取得
	int liCnt;
#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpT);
#else
	fgets(lc1Buf, sizeof(lc1Buf), stdin);
#endif
	sscanf(lc1Buf, "%d", &liCnt);

	// 表示 - 5n+1 AND 素数
	int liOut = 0;
	for (i = 11; ; i+=5) {

		// 素数チェック
		liRet = fChk(i);
		if (liRet != 0) {
			continue;
		}

		// 表示
		if (liOut > 0) {
			printf(" ");
		}
		printf("%d", i);
		liOut++;

		// 終了チェック
		if (liOut == liCnt) {
			printf("\n");
			break;
		}
	}

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

	return 0;
}

int
main()
{

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

	return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fChk
	.type	fChk, @function
fChk:
.LFB51:
	.cfi_startproc
	endbr64
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%edi, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L27
	sqrtsd	%xmm0, %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L16
	testb	$1, %dil
	je	.L20
	movl	$2, %ecx
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L21:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L20
.L19:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L21
.L16:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	movl	$-1, %eax
	ret
.L27:
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	%edi, 12(%rsp)
	call	sqrt@PLT
	movl	12(%rsp), %edi
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L8
	testb	$1, %dil
	je	.L10
	movl	$2, %ecx
	jmp	.L6
.L7:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L10
.L6:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L7
.L8:
	xorl	%eax, %eax
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	orl	$-1, %eax
	jmp	.L1
	.cfi_endproc
.LFE51:
	.size	fChk, .-fChk
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$1024, %esi
	movl	$11, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC1(%rip), %rbx
	subq	$1056, %rsp
	.cfi_def_cfa_offset 1088
	movq	stdin(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	movq	%rbp, %rdi
	leaq	12(%rsp), %rdx
	movq	%rbx, %rsi
	xorl	%eax, %eax
	xorl	%ebp, %ebp
	call	__isoc99_sscanf@PLT
	.p2align 4,,10
	.p2align 3
.L36:
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%r12d, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L47
	sqrtsd	%xmm0, %xmm0
.L31:
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L32
	testb	$1, %r12b
	je	.L33
	movl	$2, %ecx
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L35:
	movl	%r12d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L33
.L34:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L35
.L32:
	testl	%ebp, %ebp
	jle	.L38
	movl	$32, %edi
	call	putchar@PLT
.L38:
	movl	%r12d, %edx
	movq	%rbx, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	addl	$1, %ebp
	cmpl	%ebp, 12(%rsp)
	je	.L50
.L33:
	addl	$5, %r12d
	jmp	.L36
.L50:
	movl	$10, %edi
	call	putchar@PLT
	movq	1048(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L51
	addq	$1056, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L47:
	.cfi_restore_state
	call	sqrt@PLT
	jmp	.L31
.L51:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	fMain, .-fMain
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB53:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	fMain
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE53:
	.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.
Optimized Assembly Code:

train
```assembly
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fChk
	.type	fChk, @function
fChk:
.LFB51:
	.cfi_startproc
	endbr64
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%edi, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L27
	sqrtsd	%xmm0, %xmm0
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L16
	testb	$1, %dil
	je	.L20
	movl	$2, %ecx
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L21:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L20
.L19:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L21
.L16:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L20:
	movl	$-1, %eax
	ret
.L27:
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	%edi, 12(%rsp)
	call	sqrt@PLT
	movl	12(%rsp), %edi
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L8
	testb	$1, %dil
	je	.L10
	movl	$2, %ecx
	jmp	.L6
.L7:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L10
.L6:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L7
.L8:
	xorl	%eax, %eax
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	orl	$-1, %eax
	jmp	.L1
	.cfi_endproc
.LFE51:
	.size	fChk, .-fChk
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
	.text
	.p2align 4
	.globl	fMain
	.type	fMain, @function
fMain:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	$1024, %esi
	movl	$11, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	leaq	.LC1(%rip), %rbx
	subq	$1056, %rsp
	.cfi_def_cfa_offset 1088
	movq	stdin(%rip), %rdx
	movq	%fs:40, %rax
	movq	%rax, 1048(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rbp
	movq	%rbp, %rdi
	call	fgets@PLT
	movq	%rbp, %rdi
	leaq	12(%rsp), %rdx
	movq	%rbx, %rsi
	xorl	%eax, %eax
	xorl	%ebp, %ebp
	call	__isoc99_sscanf@PLT
	.p2align 4,,10
	.p2align 3
.L36:
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	cvtsi2sdl	%r12d, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L47
	sqrtsd	%xmm0, %xmm0
.L31:
	cvttsd2sil	%xmm0, %esi
	cmpl	$1, %esi
	jle	.L32
	testb	$1, %r12b
	je	.L33
	movl	$2, %ecx
	jmp	.L34
	.p2align 4,,10
	.p2align 3
.L35:
	movl	%r12d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L33
.L34:
	addl	$1, %ecx
	cmpl	%ecx, %esi
	jge	.L35
.L32:
	testl	%ebp, %ebp
	jle	.L38
	movl	$32, %edi
	call	putchar@PLT
.L38:
	movl	%r12d, %edx
	movq	%rbx, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	addl	$1, %ebp
	cmpl	%ebp, 12(%rsp)
	je	.L50
.L33:
	addl	$5, %r12d
	jmp	.L36
.L50:
	movl	$10, %edi
	call	putchar@PLT
	movq	1048(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L51
	addq	$1056, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
.L47:
	.cfi_restore_state
	call	sqrt@PLT
	jmp	.L31
.L51:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	fMain, .-fMain
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB53:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	xorl	%edi, %edi
	call	fMain
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE53:
	.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:
```