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

```c
int t[]={850,1100,1230,1400,1610,1520,1950,1870,2070,2250,2244,2620,2624,2794,3004,3040,3344,3390,3590,3740,3764,4120,4114,4314,4494,4488,4864,4868,5038,5248,5284,5588,5634,5834,5984,6008,6364,6358,6558,6738,6732,7108,7112,7282,7492,7528};int main(n){while(scanf("%d",&n),n){printf("%d\n",t[n/100-5]);}return 0;}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	t
	.data
	.align 32
	.type	t, @object
	.size	t, 184
t:
	.long	850
	.long	1100
	.long	1230
	.long	1400
	.long	1610
	.long	1520
	.long	1950
	.long	1870
	.long	2070
	.long	2250
	.long	2244
	.long	2620
	.long	2624
	.long	2794
	.long	3004
	.long	3040
	.long	3344
	.long	3390
	.long	3590
	.long	3740
	.long	3764
	.long	4120
	.long	4114
	.long	4314
	.long	4494
	.long	4488
	.long	4864
	.long	4868
	.long	5038
	.long	5248
	.long	5284
	.long	5588
	.long	5634
	.long	5834
	.long	5984
	.long	6008
	.long	6364
	.long	6358
	.long	6558
	.long	6738
	.long	6732
	.long	7108
	.long	7112
	.long	7282
	.long	7492
	.long	7528
	.section	.rodata
.LC0:
	.string	"%d\n"
.LC1:
	.string	"%d"
	.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
	movl	%edi, -4(%rbp)
	jmp	.L2
.L3:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	imulq	$1374389535, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$5, %edx
	sarl	$31, %eax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	subl	$5, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	t(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
.L2:
	leaq	-4(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	scanf@PLT
	movl	-4(%rbp), %eax
	testl	%eax, %eax
	jne	.L3
	movl	$0, %eax
	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	"%d\n"
.LC1:
	.string	"%d"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leaq	t(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	.LC0(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	leaq	.LC1(%rip), %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 64
	movl	%edi, 12(%rsp)
	leaq	12(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L3:
	movslq	%edx, %rax
	sarl	$31, %edx
	movq	%r12, %rdi
	imulq	$1374389535, %rax, %rax
	sarq	$37, %rax
	subl	%edx, %eax
	subl	$5, %eax
	cltq
	movl	0(%r13,%rax,4), %esi
	xorl	%eax, %eax
	call	printf@PLT
.L2:
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	xorl	%eax, %eax
	call	scanf@PLT
	movl	12(%rsp), %edx
	testl	%edx, %edx
	jne	.L3
	addq	$24, %rsp
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.globl	t
	.data
	.align 32
	.type	t, @object
	.size	t, 184
t:
	.long	850
	.long	1100
	.long	1230
	.long	1400
	.long	1610
	.long	1520
	.long	1950
	.long	1870
	.long	2070
	.long	2250
	.long	2244
	.long	2620
	.long	2624
	.long	2794
	.long	3004
	.long	3040
	.long	3344
	.long	3390
	.long	3590
	.long	3740
	.long	3764
	.long	4120
	.long	4114
	.long	4314
	.long	4494
	.long	4488
	.long	4864
	.long	4868
	.long	5038
	.long	5248
	.long	5284
	.long	5588
	.long	5634
	.long	5834
	.long	5984
	.long	6008
	.long	6364
	.long	6358
	.long	6558
	.long	6738
	.long	6732
	.long	7108
	.long	7112
	.long	7282
	.long	7492
	.long	7528
	.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	"%d\n"
.LC1:
	.string	"%d"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	leaq	t(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	leaq	.LC0(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	leaq	.LC1(%rip), %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 64
	movl	%edi, 12(%rsp)
	leaq	12(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L3:
	movslq	%edx, %rax
	sarl	$31, %edx
	movq	%r12, %rdi
	imulq	$1374389535, %rax, %rax
	sarq	$37, %rax
	subl	%edx, %eax
	subl	$5, %eax
	cltq
	movl	0(%r13,%rax,4), %esi
	xorl	%eax, %eax
	call	printf@PLT
.L2:
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	xorl	%eax, %eax
	call	scanf@PLT
	movl	12(%rsp), %edx
	testl	%edx, %edx
	jne	.L3
	addq	$24, %rsp
	.cfi_def_cfa_offset 40
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.globl	t
	.data
	.align 32
	.type	t, @object
	.size	t, 184
t:
	.long	850
	.long	1100
	.long	1230
	.long	1400
	.long	1610
	.long	1520
	.long	1950
	.long	1870
	.long	2070
	.long	2250
	.long	2244
	.long	2620
	.long	2624
	.long	2794
	.long	3004
	.long	3040
	.long	3344
	.long	3390
	.long	3590
	.long	3740
	.long	3764
	.long	4120
	.long	4114
	.long	4314
	.long	4494
	.long	4488
	.long	4864
	.long	4868
	.long	5038
	.long	5248
	.long	5284
	.long	5588
	.long	5634
	.long	5834
	.long	5984
	.long	6008
	.long	6364
	.long	6358
	.long	6558
	.long	6738
	.long	6732
	.long	7108
	.long	7112
	.long	7282
	.long	7492
	.long	7528
	.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:

int t[]={850,1100,1230,1400,1610,1520,1950,1870,2070,2250,2244,2620,2624,2794,3004,3040,3344,3390,3590,3740,3764,4120,4114,4314,4494,4488,4864,4868,5038,5248,5284,5588,5634,5834,5984,6008,6364,6358,6558,6738,6732,7108,7112,7282,7492,7528};int main(n){while(scanf("%d",&n),n){printf("%d\n",t[n/100-5]);}return 0;}
500
1000
0
 500
0000
0
 500
1100
0
 500
0000
1
 500
0000
2
 500
0000
-1
 500
0000
4
 500
0000
8
 500
0000
-2
 500
0000
3

850
1520
 850
 850
1950
 850
 850
 850
 850
 850
 850
 850

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

```c
int t[]={850,1100,1230,1400,1610,1520,1950,1870,2070,2250,2244,2620,2624,2794,3004,3040,3344,3390,3590,3740,3764,4120,4114,4314,4494,4488,4864,4868,5038,5248,5284,5588,5634,5834,5984,6008,6364,6358,6558,6738,6732,7108,7112,7282,7492,7528};int main(n){while(scanf("%d",&n),n){printf("%d\n",t[n/100-5]);}return 0;}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	t
	.data
	.align 32
	.type	t, @object
	.size	t, 184
t:
	.long	850
	.long	1100
	.long	1230
	.long	1400
	.long	1610
	.long	1520
	.long	1950
	.long	1870
	.long	2070
	.long	2250
	.long	2244
	.long	2620
	.long	2624
	.long	2794
	.long	3004
	.long	3040
	.long	3344
	.long	3390
	.long	3590
	.long	3740
	.long	3764
	.long	4120
	.long	4114
	.long	4314
	.long	4494
	.long	4488
	.long	4864
	.long	4868
	.long	5038
	.long	5248
	.long	5284
	.long	5588
	.long	5634
	.long	5834
	.long	5984
	.long	6008
	.long	6364
	.long	6358
	.long	6558
	.long	6738
	.long	6732
	.long	7108
	.long	7112
	.long	7282
	.long	7492
	.long	7528
	.section	.rodata
.LC0:
	.string	"%d\n"
.LC1:
	.string	"%d"
	.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
	movl	%edi, -4(%rbp)
	jmp	.L2
.L3:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	imulq	$1374389535, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$5, %edx
	sarl	$31, %eax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	subl	$5, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	t(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
.L2:
	leaq	-4(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	scanf@PLT
	movl	-4(%rbp), %eax
	testl	%eax, %eax
	jne	.L3
	movl	$0, %eax
	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	t
	.data
	.align 32
	.type	t, @object
	.size	t, 184
t:
	.long	850
	.long	1100
	.long	1230
	.long	1400
	.long	1610
	.long	1520
	.long	1950
	.long	1870
	.long	2070
	.long	2250
	.long	2244
	.long	2620
	.long	2624
	.long	2794
	.long	3004
	.long	3040
	.long	3344
	.long	3390
	.long	3590
	.long	3740
	.long	3764
	.long	4120
	.long	4114
	.long	4314
	.long	4494
	.long	4488
	.long	4864
	.long	4868
	.long	5038
	.long	5248
	.long	5284
	.long	5588
	.long	5634
	.long	5834
	.long	5984
	.long	6008
	.long	6364
	.long	6358
	.long	6558
	.long	6738
	.long	6732
	.long	7108
	.long	7112
	.long	7282
	.long	7492
	.long	7528
	.section	.rodata
.LC0:
	.string	"%d\n"
.LC1:
	.string	"%d"
	.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
	movl	%edi, -4(%rbp)
	jmp	.L2
.L3:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	imulq	$1374389535, %rdx, %rdx
	shrq	$32, %rdx
	sarl	$5, %edx
	sarl	$31, %eax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	subl	$5, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	t(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
.L2:
	leaq	-4(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	scanf@PLT
	movl	-4(%rbp), %eax
	testl	%eax, %eax
	jne	.L3
	movl	$0, %eax
	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:
