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

```c
main(){//先に入手
long long L[87] = { 2,1,3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,24476,39603,64079,103682,167761,271443,439204,710647,1149851,1860498,3010349,4870847,7881196,12752043,20633239,33385282,54018521,87403803,141422324,228826127,370248451,599074578,969323029,1568397607,2537720636,4106118243,6643838879,10749957122,17393796001,28143753123,45537549124,73681302247,119218851371,192900153618,312119004989,505019158607,817138163596,1322157322203,2139295485799,3461452808002,5600748293801,9062201101803,14662949395604,23725150497407,38388099893011,62113250390418,100501350283429,162614600673847,263115950957276,425730551631123,688846502588399,1114577054219522,1803423556807921,2918000611027443,4721424167835364,7639424778862807,12360848946698171,20000273725560978,32361122672259149,52361396397820127,84722519070079276,137083915467899403,221806434537978679,358890350005878082,580696784543856761,939587134549734843 };
int i;scanf("%d",&i);printf("%lld",L[i]);
}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
.LC2:
	.string	"%lld"
	.section	.rodata
	.align 32
.LC0:
	.quad	2
	.quad	1
	.quad	3
	.quad	4
	.quad	7
	.quad	11
	.quad	18
	.quad	29
	.quad	47
	.quad	76
	.quad	123
	.quad	199
	.quad	322
	.quad	521
	.quad	843
	.quad	1364
	.quad	2207
	.quad	3571
	.quad	5778
	.quad	9349
	.quad	15127
	.quad	24476
	.quad	39603
	.quad	64079
	.quad	103682
	.quad	167761
	.quad	271443
	.quad	439204
	.quad	710647
	.quad	1149851
	.quad	1860498
	.quad	3010349
	.quad	4870847
	.quad	7881196
	.quad	12752043
	.quad	20633239
	.quad	33385282
	.quad	54018521
	.quad	87403803
	.quad	141422324
	.quad	228826127
	.quad	370248451
	.quad	599074578
	.quad	969323029
	.quad	1568397607
	.quad	2537720636
	.quad	4106118243
	.quad	6643838879
	.quad	10749957122
	.quad	17393796001
	.quad	28143753123
	.quad	45537549124
	.quad	73681302247
	.quad	119218851371
	.quad	192900153618
	.quad	312119004989
	.quad	505019158607
	.quad	817138163596
	.quad	1322157322203
	.quad	2139295485799
	.quad	3461452808002
	.quad	5600748293801
	.quad	9062201101803
	.quad	14662949395604
	.quad	23725150497407
	.quad	38388099893011
	.quad	62113250390418
	.quad	100501350283429
	.quad	162614600673847
	.quad	263115950957276
	.quad	425730551631123
	.quad	688846502588399
	.quad	1114577054219522
	.quad	1803423556807921
	.quad	2918000611027443
	.quad	4721424167835364
	.quad	7639424778862807
	.quad	12360848946698171
	.quad	20000273725560978
	.quad	32361122672259149
	.quad	52361396397820127
	.quad	84722519070079276
	.quad	137083915467899403
	.quad	221806434537978679
	.quad	358890350005878082
	.quad	580696784543856761
	.quad	939587134549734843
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	subq	$728, %rsp
	.cfi_def_cfa_offset 736
	leaq	.LC0(%rip), %rsi
	movl	$87, %ecx
	movq	%fs:40, %rax
	movq	%rax, 712(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rdi
	rep movsq
	leaq	12(%rsp), %rsi
	leaq	.LC1(%rip), %rdi
	call	scanf@PLT
	movslq	12(%rsp), %rax
	leaq	.LC2(%rip), %rdi
	movq	16(%rsp,%rax,8), %rsi
	xorl	%eax, %eax
	call	printf@PLT
	movq	712(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L5
	xorl	%eax, %eax
	addq	$728, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L5:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.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.
Optimized Assembly Code:

user
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
.LC2:
	.string	"%lld"
	.section	.rodata
	.align 32
.LC0:
	.quad	2
	.quad	1
	.quad	3
	.quad	4
	.quad	7
	.quad	11
	.quad	18
	.quad	29
	.quad	47
	.quad	76
	.quad	123
	.quad	199
	.quad	322
	.quad	521
	.quad	843
	.quad	1364
	.quad	2207
	.quad	3571
	.quad	5778
	.quad	9349
	.quad	15127
	.quad	24476
	.quad	39603
	.quad	64079
	.quad	103682
	.quad	167761
	.quad	271443
	.quad	439204
	.quad	710647
	.quad	1149851
	.quad	1860498
	.quad	3010349
	.quad	4870847
	.quad	7881196
	.quad	12752043
	.quad	20633239
	.quad	33385282
	.quad	54018521
	.quad	87403803
	.quad	141422324
	.quad	228826127
	.quad	370248451
	.quad	599074578
	.quad	969323029
	.quad	1568397607
	.quad	2537720636
	.quad	4106118243
	.quad	6643838879
	.quad	10749957122
	.quad	17393796001
	.quad	28143753123
	.quad	45537549124
	.quad	73681302247
	.quad	119218851371
	.quad	192900153618
	.quad	312119004989
	.quad	505019158607
	.quad	817138163596
	.quad	1322157322203
	.quad	2139295485799
	.quad	3461452808002
	.quad	5600748293801
	.quad	9062201101803
	.quad	14662949395604
	.quad	23725150497407
	.quad	38388099893011
	.quad	62113250390418
	.quad	100501350283429
	.quad	162614600673847
	.quad	263115950957276
	.quad	425730551631123
	.quad	688846502588399
	.quad	1114577054219522
	.quad	1803423556807921
	.quad	2918000611027443
	.quad	4721424167835364
	.quad	7639424778862807
	.quad	12360848946698171
	.quad	20000273725560978
	.quad	32361122672259149
	.quad	52361396397820127
	.quad	84722519070079276
	.quad	137083915467899403
	.quad	221806434537978679
	.quad	358890350005878082
	.quad	580696784543856761
	.quad	939587134549734843
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	subq	$728, %rsp
	.cfi_def_cfa_offset 736
	leaq	.LC0(%rip), %rsi
	movl	$87, %ecx
	movq	%fs:40, %rax
	movq	%rax, 712(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rdi
	rep movsq
	leaq	12(%rsp), %rsi
	leaq	.LC1(%rip), %rdi
	call	scanf@PLT
	movslq	12(%rsp), %rax
	leaq	.LC2(%rip), %rdi
	movq	16(%rsp,%rax,8), %rsi
	xorl	%eax, %eax
	call	printf@PLT
	movq	712(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L5
	xorl	%eax, %eax
	addq	$728, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L5:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.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:
```
rule
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
.LC2:
	.string	"%lld"
	.section	.rodata
	.align 32
.LC0:
	.quad	2
	.quad	1
	.quad	3
	.quad	4
	.quad	7
	.quad	11
	.quad	18
	.quad	29
	.quad	47
	.quad	76
	.quad	123
	.quad	199
	.quad	322
	.quad	521
	.quad	843
	.quad	1364
	.quad	2207
	.quad	3571
	.quad	5778
	.quad	9349
	.quad	15127
	.quad	24476
	.quad	39603
	.quad	64079
	.quad	103682
	.quad	167761
	.quad	271443
	.quad	439204
	.quad	710647
	.quad	1149851
	.quad	1860498
	.quad	3010349
	.quad	4870847
	.quad	7881196
	.quad	12752043
	.quad	20633239
	.quad	33385282
	.quad	54018521
	.quad	87403803
	.quad	141422324
	.quad	228826127
	.quad	370248451
	.quad	599074578
	.quad	969323029
	.quad	1568397607
	.quad	2537720636
	.quad	4106118243
	.quad	6643838879
	.quad	10749957122
	.quad	17393796001
	.quad	28143753123
	.quad	45537549124
	.quad	73681302247
	.quad	119218851371
	.quad	192900153618
	.quad	312119004989
	.quad	505019158607
	.quad	817138163596
	.quad	1322157322203
	.quad	2139295485799
	.quad	3461452808002
	.quad	5600748293801
	.quad	9062201101803
	.quad	14662949395604
	.quad	23725150497407
	.quad	38388099893011
	.quad	62113250390418
	.quad	100501350283429
	.quad	162614600673847
	.quad	263115950957276
	.quad	425730551631123
	.quad	688846502588399
	.quad	1114577054219522
	.quad	1803423556807921
	.quad	2918000611027443
	.quad	4721424167835364
	.quad	7639424778862807
	.quad	12360848946698171
	.quad	20000273725560978
	.quad	32361122672259149
	.quad	52361396397820127
	.quad	84722519070079276
	.quad	137083915467899403
	.quad	221806434537978679
	.quad	358890350005878082
	.quad	580696784543856761
	.quad	939587134549734843
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	subq	$728, %rsp
	.cfi_def_cfa_offset 736
	leaq	.LC0(%rip), %rsi
	movl	$87, %ecx
	movq	%fs:40, %rax
	movq	%rax, 712(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rdi
	rep movsq
	leaq	12(%rsp), %rsi
	leaq	.LC1(%rip), %rdi
	call	scanf@PLT
	movslq	12(%rsp), %rax
	leaq	.LC2(%rip), %rdi
	movq	16(%rsp,%rax,8), %rsi
	xorl	%eax, %eax
	call	printf@PLT
	movq	712(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L5
	xorl	%eax, %eax
	addq	$728, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L5:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.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:
```
```c
main(){//先に入手
long long L[87] = { 2,1,3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,24476,39603,64079,103682,167761,271443,439204,710647,1149851,1860498,3010349,4870847,7881196,12752043,20633239,33385282,54018521,87403803,141422324,228826127,370248451,599074578,969323029,1568397607,2537720636,4106118243,6643838879,10749957122,17393796001,28143753123,45537549124,73681302247,119218851371,192900153618,312119004989,505019158607,817138163596,1322157322203,2139295485799,3461452808002,5600748293801,9062201101803,14662949395604,23725150497407,38388099893011,62113250390418,100501350283429,162614600673847,263115950957276,425730551631123,688846502588399,1114577054219522,1803423556807921,2918000611027443,4721424167835364,7639424778862807,12360848946698171,20000273725560978,32361122672259149,52361396397820127,84722519070079276,137083915467899403,221806434537978679,358890350005878082,580696784543856761,939587134549734843 };
int i;scanf("%d",&i);printf("%lld",L[i]);
}```
Given the following C code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
main(){//先に入手
long long L[87] = { 2,1,3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,24476,39603,64079,103682,167761,271443,439204,710647,1149851,1860498,3010349,4870847,7881196,12752043,20633239,33385282,54018521,87403803,141422324,228826127,370248451,599074578,969323029,1568397607,2537720636,4106118243,6643838879,10749957122,17393796001,28143753123,45537549124,73681302247,119218851371,192900153618,312119004989,505019158607,817138163596,1322157322203,2139295485799,3461452808002,5600748293801,9062201101803,14662949395604,23725150497407,38388099893011,62113250390418,100501350283429,162614600673847,263115950957276,425730551631123,688846502588399,1114577054219522,1803423556807921,2918000611027443,4721424167835364,7639424778862807,12360848946698171,20000273725560978,32361122672259149,52361396397820127,84722519070079276,137083915467899403,221806434537978679,358890350005878082,580696784543856761,939587134549734843 };
int i;scanf("%d",&i);printf("%lld",L[i]);
}```

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:

1
 2
 4
 3
 30
 49
 6
 8
 7
 58

1 3 7 4 1860498 17393796001 18 47 29 1322157322203
Given the following C code and assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
main(){//先に入手
long long L[87] = { 2,1,3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,24476,39603,64079,103682,167761,271443,439204,710647,1149851,1860498,3010349,4870847,7881196,12752043,20633239,33385282,54018521,87403803,141422324,228826127,370248451,599074578,969323029,1568397607,2537720636,4106118243,6643838879,10749957122,17393796001,28143753123,45537549124,73681302247,119218851371,192900153618,312119004989,505019158607,817138163596,1322157322203,2139295485799,3461452808002,5600748293801,9062201101803,14662949395604,23725150497407,38388099893011,62113250390418,100501350283429,162614600673847,263115950957276,425730551631123,688846502588399,1114577054219522,1803423556807921,2918000611027443,4721424167835364,7639424778862807,12360848946698171,20000273725560978,32361122672259149,52361396397820127,84722519070079276,137083915467899403,221806434537978679,358890350005878082,580696784543856761,939587134549734843 };
int i;scanf("%d",&i);printf("%lld",L[i]);
}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
.LC2:
	.string	"%lld"
	.section	.rodata
	.align 32
.LC0:
	.quad	2
	.quad	1
	.quad	3
	.quad	4
	.quad	7
	.quad	11
	.quad	18
	.quad	29
	.quad	47
	.quad	76
	.quad	123
	.quad	199
	.quad	322
	.quad	521
	.quad	843
	.quad	1364
	.quad	2207
	.quad	3571
	.quad	5778
	.quad	9349
	.quad	15127
	.quad	24476
	.quad	39603
	.quad	64079
	.quad	103682
	.quad	167761
	.quad	271443
	.quad	439204
	.quad	710647
	.quad	1149851
	.quad	1860498
	.quad	3010349
	.quad	4870847
	.quad	7881196
	.quad	12752043
	.quad	20633239
	.quad	33385282
	.quad	54018521
	.quad	87403803
	.quad	141422324
	.quad	228826127
	.quad	370248451
	.quad	599074578
	.quad	969323029
	.quad	1568397607
	.quad	2537720636
	.quad	4106118243
	.quad	6643838879
	.quad	10749957122
	.quad	17393796001
	.quad	28143753123
	.quad	45537549124
	.quad	73681302247
	.quad	119218851371
	.quad	192900153618
	.quad	312119004989
	.quad	505019158607
	.quad	817138163596
	.quad	1322157322203
	.quad	2139295485799
	.quad	3461452808002
	.quad	5600748293801
	.quad	9062201101803
	.quad	14662949395604
	.quad	23725150497407
	.quad	38388099893011
	.quad	62113250390418
	.quad	100501350283429
	.quad	162614600673847
	.quad	263115950957276
	.quad	425730551631123
	.quad	688846502588399
	.quad	1114577054219522
	.quad	1803423556807921
	.quad	2918000611027443
	.quad	4721424167835364
	.quad	7639424778862807
	.quad	12360848946698171
	.quad	20000273725560978
	.quad	32361122672259149
	.quad	52361396397820127
	.quad	84722519070079276
	.quad	137083915467899403
	.quad	221806434537978679
	.quad	358890350005878082
	.quad	580696784543856761
	.quad	939587134549734843
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	subq	$728, %rsp
	.cfi_def_cfa_offset 736
	leaq	.LC0(%rip), %rsi
	movl	$87, %ecx
	movq	%fs:40, %rax
	movq	%rax, 712(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rdi
	rep movsq
	leaq	12(%rsp), %rsi
	leaq	.LC1(%rip), %rdi
	call	scanf@PLT
	movslq	12(%rsp), %rax
	leaq	.LC2(%rip), %rdi
	movq	16(%rsp,%rax,8), %rsi
	xorl	%eax, %eax
	call	printf@PLT
	movq	712(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L5
	xorl	%eax, %eax
	addq	$728, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L5:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.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.
Optimized Assembly Code:

train
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d"
.LC2:
	.string	"%lld"
	.section	.rodata
	.align 32
.LC0:
	.quad	2
	.quad	1
	.quad	3
	.quad	4
	.quad	7
	.quad	11
	.quad	18
	.quad	29
	.quad	47
	.quad	76
	.quad	123
	.quad	199
	.quad	322
	.quad	521
	.quad	843
	.quad	1364
	.quad	2207
	.quad	3571
	.quad	5778
	.quad	9349
	.quad	15127
	.quad	24476
	.quad	39603
	.quad	64079
	.quad	103682
	.quad	167761
	.quad	271443
	.quad	439204
	.quad	710647
	.quad	1149851
	.quad	1860498
	.quad	3010349
	.quad	4870847
	.quad	7881196
	.quad	12752043
	.quad	20633239
	.quad	33385282
	.quad	54018521
	.quad	87403803
	.quad	141422324
	.quad	228826127
	.quad	370248451
	.quad	599074578
	.quad	969323029
	.quad	1568397607
	.quad	2537720636
	.quad	4106118243
	.quad	6643838879
	.quad	10749957122
	.quad	17393796001
	.quad	28143753123
	.quad	45537549124
	.quad	73681302247
	.quad	119218851371
	.quad	192900153618
	.quad	312119004989
	.quad	505019158607
	.quad	817138163596
	.quad	1322157322203
	.quad	2139295485799
	.quad	3461452808002
	.quad	5600748293801
	.quad	9062201101803
	.quad	14662949395604
	.quad	23725150497407
	.quad	38388099893011
	.quad	62113250390418
	.quad	100501350283429
	.quad	162614600673847
	.quad	263115950957276
	.quad	425730551631123
	.quad	688846502588399
	.quad	1114577054219522
	.quad	1803423556807921
	.quad	2918000611027443
	.quad	4721424167835364
	.quad	7639424778862807
	.quad	12360848946698171
	.quad	20000273725560978
	.quad	32361122672259149
	.quad	52361396397820127
	.quad	84722519070079276
	.quad	137083915467899403
	.quad	221806434537978679
	.quad	358890350005878082
	.quad	580696784543856761
	.quad	939587134549734843
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	subq	$728, %rsp
	.cfi_def_cfa_offset 736
	leaq	.LC0(%rip), %rsi
	movl	$87, %ecx
	movq	%fs:40, %rax
	movq	%rax, 712(%rsp)
	xorl	%eax, %eax
	leaq	16(%rsp), %rdi
	rep movsq
	leaq	12(%rsp), %rsi
	leaq	.LC1(%rip), %rdi
	call	scanf@PLT
	movslq	12(%rsp), %rax
	leaq	.LC2(%rip), %rdi
	movq	16(%rsp,%rax,8), %rsi
	xorl	%eax, %eax
	call	printf@PLT
	movq	712(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L5
	xorl	%eax, %eax
	addq	$728, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L5:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.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:
```