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

```c
main(){double a,l,x,s,t;
for(;~scanf("%lf%lf%lf",&a,&l,&x);)
s=(l+l+a)/2,printf("%lf\n",sqrt((a/2)*(a/2)*(s-a)*s)+sqrt(l*l*x*(l+x+l))/2);exit(0);}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC2:
	.string	"%lf\n"
.LC3:
	.string	"%lf%lf%lf"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	.LC3(%rip), %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %r13
	leaq	24(%rsp), %r12
	leaq	16(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movsd	24(%rsp), %xmm3
	movsd	16(%rsp), %xmm2
	pxor	%xmm5, %xmm5
	movsd	.LC0(%rip), %xmm0
	movapd	%xmm3, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm2, %xmm1
	mulsd	.LC0(%rip), %xmm1
	mulsd	%xmm0, %xmm0
	movapd	%xmm1, %xmm4
	subsd	%xmm2, %xmm4
	mulsd	%xmm4, %xmm0
	mulsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm5
	ja	.L13
	sqrtsd	%xmm1, %xmm1
	movapd	%xmm5, %xmm6
.L5:
	movapd	%xmm3, %xmm0
	movsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm2
	addsd	%xmm3, %xmm2
	mulsd	%xmm2, %xmm0
	ucomisd	%xmm0, %xmm6
	ja	.L14
	sqrtsd	%xmm0, %xmm0
.L8:
	mulsd	.LC0(%rip), %xmm0
	movq	%r14, %rdi
	movl	$1, %eax
	addsd	%xmm1, %xmm0
	call	printf@PLT
.L2:
	xorl	%eax, %eax
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	scanf@PLT
	cmpl	$-1, %eax
	jne	.L9
	xorl	%edi, %edi
	call	exit@PLT
.L13:
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm3
	pxor	%xmm6, %xmm6
	movapd	%xmm0, %xmm1
	jmp	.L5
.L14:
	movsd	%xmm1, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1071644672
	.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
.LC2:
	.string	"%lf\n"
.LC3:
	.string	"%lf%lf%lf"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	.LC3(%rip), %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %r13
	leaq	24(%rsp), %r12
	leaq	16(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movsd	24(%rsp), %xmm3
	movsd	16(%rsp), %xmm2
	pxor	%xmm5, %xmm5
	movsd	.LC0(%rip), %xmm0
	movapd	%xmm3, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm2, %xmm1
	mulsd	.LC0(%rip), %xmm1
	mulsd	%xmm0, %xmm0
	movapd	%xmm1, %xmm4
	subsd	%xmm2, %xmm4
	mulsd	%xmm4, %xmm0
	mulsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm5
	ja	.L13
	sqrtsd	%xmm1, %xmm1
	movapd	%xmm5, %xmm6
.L5:
	movapd	%xmm3, %xmm0
	movsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm2
	addsd	%xmm3, %xmm2
	mulsd	%xmm2, %xmm0
	ucomisd	%xmm0, %xmm6
	ja	.L14
	sqrtsd	%xmm0, %xmm0
.L8:
	mulsd	.LC0(%rip), %xmm0
	movq	%r14, %rdi
	movl	$1, %eax
	addsd	%xmm1, %xmm0
	call	printf@PLT
.L2:
	xorl	%eax, %eax
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	scanf@PLT
	cmpl	$-1, %eax
	jne	.L9
	xorl	%edi, %edi
	call	exit@PLT
.L13:
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm3
	pxor	%xmm6, %xmm6
	movapd	%xmm0, %xmm1
	jmp	.L5
.L14:
	movsd	%xmm1, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1071644672
	.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
.LC2:
	.string	"%lf\n"
.LC3:
	.string	"%lf%lf%lf"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	.LC3(%rip), %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %r13
	leaq	24(%rsp), %r12
	leaq	16(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movsd	24(%rsp), %xmm3
	movsd	16(%rsp), %xmm2
	pxor	%xmm5, %xmm5
	movsd	.LC0(%rip), %xmm0
	movapd	%xmm3, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm2, %xmm1
	mulsd	.LC0(%rip), %xmm1
	mulsd	%xmm0, %xmm0
	movapd	%xmm1, %xmm4
	subsd	%xmm2, %xmm4
	mulsd	%xmm4, %xmm0
	mulsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm5
	ja	.L13
	sqrtsd	%xmm1, %xmm1
	movapd	%xmm5, %xmm6
.L5:
	movapd	%xmm3, %xmm0
	movsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm2
	addsd	%xmm3, %xmm2
	mulsd	%xmm2, %xmm0
	ucomisd	%xmm0, %xmm6
	ja	.L14
	sqrtsd	%xmm0, %xmm0
.L8:
	mulsd	.LC0(%rip), %xmm0
	movq	%r14, %rdi
	movl	$1, %eax
	addsd	%xmm1, %xmm0
	call	printf@PLT
.L2:
	xorl	%eax, %eax
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	scanf@PLT
	cmpl	$-1, %eax
	jne	.L9
	xorl	%edi, %edi
	call	exit@PLT
.L13:
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm3
	pxor	%xmm6, %xmm6
	movapd	%xmm0, %xmm1
	jmp	.L5
.L14:
	movsd	%xmm1, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1071644672
	.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(){double a,l,x,s,t;
for(;~scanf("%lf%lf%lf",&a,&l,&x);)
s=(l+l+a)/2,printf("%lf\n",sqrt((a/2)*(a/2)*(s-a)*s)+sqrt(l*l*x*(l+x+l))/2);exit(0);}```
Given the following C code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
main(){double a,l,x,s,t;
for(;~scanf("%lf%lf%lf",&a,&l,&x);)
s=(l+l+a)/2,printf("%lf\n",sqrt((a/2)*(a/2)*(s-a)*s)+sqrt(l*l*x*(l+x+l))/2);exit(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:

2 2 1
2 3 1
3 2 3
1 3 5
 4 2 1
2 3 1
3 2 3
1 3 5
 2 2 1
2 3 1
3 2 5
1 3 5
 2 2 0
2 3 1
3 2 3
2 3 5
 2 2 1
2 3 1
1 2 3
1 3 5
 4 2 1
2 3 1
3 2 3
1 3 0
 2 2 1
2 3 1
1 2 5
1 3 5
 2 2 0
2 3 0
3 2 3
2 3 5
 3 2 1
2 3 1
1 2 3
1 3 5
 4 2 1
2 3 1
3 2 3
1 6 0

3.968119
6.797054
6.566889
12.603318
 2.236068
6.797054
6.566889
12.603318
 3.968119
6.797054
8.692517
12.603318
 1.732051
6.797054
6.566889
13.952725
 3.968119
6.797054
5.550822
12.603318
 2.236068
6.797054
6.566889
1.479020
 3.968119
6.797054
7.676450
12.603318
 1.732051
2.828427
6.566889
13.952725
 4.220381
6.797054
5.550822
12.603318
 2.236068
6.797054
6.566889
2.989565

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

```c
main(){double a,l,x,s,t;
for(;~scanf("%lf%lf%lf",&a,&l,&x);)
s=(l+l+a)/2,printf("%lf\n",sqrt((a/2)*(a/2)*(s-a)*s)+sqrt(l*l*x*(l+x+l))/2);exit(0);}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC2:
	.string	"%lf\n"
.LC3:
	.string	"%lf%lf%lf"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	.LC3(%rip), %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %r13
	leaq	24(%rsp), %r12
	leaq	16(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movsd	24(%rsp), %xmm3
	movsd	16(%rsp), %xmm2
	pxor	%xmm5, %xmm5
	movsd	.LC0(%rip), %xmm0
	movapd	%xmm3, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm2, %xmm1
	mulsd	.LC0(%rip), %xmm1
	mulsd	%xmm0, %xmm0
	movapd	%xmm1, %xmm4
	subsd	%xmm2, %xmm4
	mulsd	%xmm4, %xmm0
	mulsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm5
	ja	.L13
	sqrtsd	%xmm1, %xmm1
	movapd	%xmm5, %xmm6
.L5:
	movapd	%xmm3, %xmm0
	movsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm2
	addsd	%xmm3, %xmm2
	mulsd	%xmm2, %xmm0
	ucomisd	%xmm0, %xmm6
	ja	.L14
	sqrtsd	%xmm0, %xmm0
.L8:
	mulsd	.LC0(%rip), %xmm0
	movq	%r14, %rdi
	movl	$1, %eax
	addsd	%xmm1, %xmm0
	call	printf@PLT
.L2:
	xorl	%eax, %eax
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	scanf@PLT
	cmpl	$-1, %eax
	jne	.L9
	xorl	%edi, %edi
	call	exit@PLT
.L13:
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm3
	pxor	%xmm6, %xmm6
	movapd	%xmm0, %xmm1
	jmp	.L5
.L14:
	movsd	%xmm1, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1071644672
	.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
.LC2:
	.string	"%lf\n"
.LC3:
	.string	"%lf%lf%lf"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	.LC3(%rip), %rbx
	subq	$48, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 40(%rsp)
	xorl	%eax, %eax
	leaq	32(%rsp), %r13
	leaq	24(%rsp), %r12
	leaq	16(%rsp), %rbp
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movsd	24(%rsp), %xmm3
	movsd	16(%rsp), %xmm2
	pxor	%xmm5, %xmm5
	movsd	.LC0(%rip), %xmm0
	movapd	%xmm3, %xmm1
	addsd	%xmm3, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm2, %xmm1
	mulsd	.LC0(%rip), %xmm1
	mulsd	%xmm0, %xmm0
	movapd	%xmm1, %xmm4
	subsd	%xmm2, %xmm4
	mulsd	%xmm4, %xmm0
	mulsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm5
	ja	.L13
	sqrtsd	%xmm1, %xmm1
	movapd	%xmm5, %xmm6
.L5:
	movapd	%xmm3, %xmm0
	movsd	32(%rsp), %xmm2
	mulsd	%xmm3, %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm2
	addsd	%xmm3, %xmm2
	mulsd	%xmm2, %xmm0
	ucomisd	%xmm0, %xmm6
	ja	.L14
	sqrtsd	%xmm0, %xmm0
.L8:
	mulsd	.LC0(%rip), %xmm0
	movq	%r14, %rdi
	movl	$1, %eax
	addsd	%xmm1, %xmm0
	call	printf@PLT
.L2:
	xorl	%eax, %eax
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	scanf@PLT
	cmpl	$-1, %eax
	jne	.L9
	xorl	%edi, %edi
	call	exit@PLT
.L13:
	movapd	%xmm1, %xmm0
	movsd	%xmm3, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm3
	pxor	%xmm6, %xmm6
	movapd	%xmm0, %xmm1
	jmp	.L5
.L14:
	movsd	%xmm1, 8(%rsp)
	call	sqrt@PLT
	movsd	8(%rsp), %xmm1
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC0:
	.long	0
	.long	1071644672
	.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:
```