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

```c
#include <math.h>
#include <stdio.h>

#define EPS 1e-10

int rel_s_s( double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y ) {
	double dn = ( x2 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y2 - y1 );
	double nm = ( x3 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y3 - y1 );

	if ( fabs( dn ) < EPS )
		if ( fabs( nm ) < EPS ) {
			double h1 = x1 == x2 ? ( y3 - y1 ) / ( y2 - y1 ) : ( x3 - x1 ) / ( x2 - x1 );
			double h2 = x1 == x2 ? ( y4 - y1 ) / ( y2 - y1 ) : ( x4 - x1 ) / ( x2 - x1 );

			if ( ( h1 < h2 ? h1 : h2 ) < 0.0 && fabs( h1 < h2 ? h2 : h1 ) < EPS ) {
				*x = x1;
				*y = y1;
				return 4;
			} else if ( fabs( ( h1 < h2 ? h1 : h2 ) - 1.0 ) < EPS && 1.0 < ( h1 < h2 ? h2 : h1 ) ) {
				*x = x2;
				*y = y2;
				return 4;
			} else if ( h1 < 0.0 && h2 < 0.0 || 1.0 < h1 && 1.0 < h2 )
				return 3;
			else
				return 5;
		} else
			return 2;
	else
		if ( fabs( nm / dn - 0.5 ) < 0.5 + EPS && fabs( ( ( x3 - x1 ) * ( y2 - y1 ) - ( x2 - x1 ) * ( y3 - y1 ) ) / dn - 0.5 ) < 0.5 + EPS ) {
			*x = x1 + nm / dn * ( x2 - x1 );
			*y = y1 + nm / dn * ( y2 - y1 );

			if ( fabs( ( x2 - x1 ) * ( x4 - x3 ) + ( y2 - y1 ) * ( y4 - y3 ) ) < EPS )
				return 1;
			else
				return 0;
		} else
			return 6;
}

int main( void ) {
	int q;

	scanf( "%d", &q );
	while ( q-- ) {
		double x0, y0, x1, y1, x2, y2, x3, y3, x, y;

		scanf( "%lf %lf %lf %lf %lf %lf %lf %lf", &x0, &y0, &x1, &y1, &x2, &y2, &x3, &y3 );

		rel_s_s( x0, y0, x1, y1, x2, y2, x3, y3, &x, &y );
		printf( "%.8f %.8f\n", x, y );
	}

	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	rel_s_s
	.type	rel_s_s, @function
rel_s_s:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movsd	%xmm0, -40(%rbp)
	movsd	%xmm1, -48(%rbp)
	movsd	%xmm2, -56(%rbp)
	movsd	%xmm3, -64(%rbp)
	movsd	%xmm4, -72(%rbp)
	movsd	%xmm5, -80(%rbp)
	movsd	%xmm6, -88(%rbp)
	movsd	%xmm7, -96(%rbp)
	movq	%rdi, -104(%rbp)
	movq	%rsi, -112(%rbp)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -32(%rbp)
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -24(%rbp)
	movsd	-32(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L56
	movsd	-24(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L57
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L6
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L6
	movsd	-80(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L8
.L6:
	movsd	-72(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L8:
	movsd	%xmm0, -16(%rbp)
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L9
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L9
	movsd	-96(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L11
.L9:
	movsd	-88(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L11:
	movsd	%xmm0, -8(%rbp)
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L58
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	ja	.L14
	jmp	.L15
.L58:
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	jbe	.L15
.L14:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L59
	movsd	-8(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	ja	.L19
	jmp	.L15
.L59:
	movsd	-16(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L15
.L19:
	movq	-104(%rbp), %rax
	movsd	-40(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-48(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L15:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L60
	movsd	-16(%rbp), %xmm0
	jmp	.L24
.L60:
	movsd	-8(%rbp), %xmm0
.L24:
	movsd	.LC3(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L25
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L61
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	ja	.L29
	jmp	.L25
.L61:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L25
.L29:
	movq	-104(%rbp), %rax
	movsd	-56(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-64(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L25:
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L31
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	ja	.L33
.L31:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
.L33:
	movl	$3, %eax
	jmp	.L21
.L34:
	movl	$5, %eax
	jmp	.L21
.L57:
	movl	$2, %eax
	jmp	.L21
.L56:
	movsd	-24(%rbp), %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-56(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-40(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-56(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-40(%rbp), %xmm0
	movq	-104(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-48(%rbp), %xmm0
	movq	-112(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-88(%rbp), %xmm0
	subsd	-72(%rbp), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	-64(%rbp), %xmm0
	movapd	%xmm0, %xmm2
	subsd	-48(%rbp), %xmm2
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L62
	movl	$1, %eax
	jmp	.L21
.L62:
	movl	$0, %eax
	jmp	.L21
.L37:
	movl	$6, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	rel_s_s, .-rel_s_s
	.section	.rodata
.LC6:
	.string	"%d"
	.align 8
.LC7:
	.string	"%lf %lf %lf %lf %lf %lf %lf %lf"
.LC8:
	.string	"%.8f %.8f\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-92(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC6(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L64
.L65:
	leaq	-56(%rbp), %r8
	leaq	-64(%rbp), %rdi
	leaq	-72(%rbp), %rcx
	leaq	-80(%rbp), %rdx
	leaq	-88(%rbp), %rax
	subq	$8, %rsp
	leaq	-32(%rbp), %rsi
	pushq	%rsi
	leaq	-40(%rbp), %rsi
	pushq	%rsi
	leaq	-48(%rbp), %rsi
	pushq	%rsi
	movq	%r8, %r9
	movq	%rdi, %r8
	movq	%rax, %rsi
	leaq	.LC7(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addq	$32, %rsp
	movsd	-32(%rbp), %xmm6
	movsd	-40(%rbp), %xmm5
	movsd	-48(%rbp), %xmm4
	movsd	-56(%rbp), %xmm3
	movsd	-64(%rbp), %xmm2
	movsd	-72(%rbp), %xmm1
	movsd	-80(%rbp), %xmm0
	movq	-88(%rbp), %rax
	leaq	-16(%rbp), %rcx
	leaq	-24(%rbp), %rdx
	movq	%rcx, %rsi
	movq	%rdx, %rdi
	movapd	%xmm6, %xmm7
	movapd	%xmm5, %xmm6
	movapd	%xmm4, %xmm5
	movapd	%xmm3, %xmm4
	movapd	%xmm2, %xmm3
	movapd	%xmm1, %xmm2
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	call	rel_s_s
	movsd	-16(%rbp), %xmm0
	movq	-24(%rbp), %rax
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	leaq	.LC8(%rip), %rax
	movq	%rax, %rdi
	movl	$2, %eax
	call	printf@PLT
.L64:
	movl	-92(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -92(%rbp)
	testl	%eax, %eax
	jne	.L65
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L67
	call	__stack_chk_fail@PLT
.L67:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	main, .-main
	.section	.rodata
	.align 16
.LC0:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.align 8
.LC1:
	.long	-640172613
	.long	1037794527
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC4:
	.long	0
	.long	1071644672
	.align 8
.LC5:
	.long	900720
	.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.
user
	.file	"temp.c"
	.text
	.p2align 4
	.globl	rel_s_s
	.type	rel_s_s, @function
rel_s_s:
.LFB23:
	.cfi_startproc
	endbr64
	movapd	%xmm2, %xmm9
	movapd	%xmm6, %xmm14
	movapd	%xmm3, %xmm12
	movq	.LC0(%rip), %xmm10
	subsd	%xmm4, %xmm14
	subsd	%xmm0, %xmm9
	movq	%rdi, %rdx
	movq	%rsi, %rcx
	movapd	%xmm7, %xmm11
	subsd	%xmm1, %xmm12
	movapd	%xmm0, %xmm8
	subsd	%xmm5, %xmm11
	subsd	%xmm8, %xmm4
	movapd	%xmm3, %xmm13
	movapd	%xmm9, %xmm15
	movapd	%xmm14, %xmm0
	subsd	%xmm1, %xmm5
	mulsd	%xmm12, %xmm0
	movapd	%xmm14, %xmm3
	mulsd	%xmm11, %xmm15
	mulsd	%xmm5, %xmm3
	subsd	%xmm0, %xmm15
	movapd	%xmm11, %xmm0
	mulsd	%xmm4, %xmm0
	subsd	%xmm3, %xmm0
	movapd	%xmm15, %xmm3
	andpd	%xmm10, %xmm3
	movq	%xmm0, %rax
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm3, %xmm0
	jbe	.L44
	movapd	%xmm0, %xmm3
	movq	%rax, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm3
	jbe	.L45
	ucomisd	%xmm8, %xmm2
	jp	.L6
	jne	.L6
	subsd	%xmm1, %xmm7
	divsd	%xmm12, %xmm5
	pxor	%xmm3, %xmm3
	divsd	%xmm12, %xmm7
	movapd	%xmm5, %xmm4
	movapd	%xmm7, %xmm6
	comisd	%xmm4, %xmm6
	jbe	.L46
.L54:
	comisd	%xmm4, %xmm3
	ja	.L53
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm4, %xmm1
	movsd	.LC1(%rip), %xmm7
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	jbe	.L19
.L28:
	comisd	%xmm0, %xmm6
	ja	.L20
.L19:
	comisd	%xmm4, %xmm3
	ja	.L29
.L22:
	comisd	%xmm0, %xmm4
	jbe	.L49
	comisd	%xmm0, %xmm6
	movl	$5, %edx
	movl	$3, %eax
	cmovbe	%edx, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L44:
	movq	%rax, %xmm0
	movsd	.LC4(%rip), %xmm3
	movsd	.LC5(%rip), %xmm2
	divsd	%xmm15, %xmm0
	movapd	%xmm0, %xmm6
	subsd	%xmm3, %xmm6
	andpd	%xmm10, %xmm6
	comisd	%xmm6, %xmm2
	jbe	.L51
	mulsd	%xmm12, %xmm4
	mulsd	%xmm9, %xmm5
	subsd	%xmm5, %xmm4
	divsd	%xmm15, %xmm4
	subsd	%xmm3, %xmm4
	andpd	%xmm10, %xmm4
	comisd	%xmm4, %xmm2
	jbe	.L51
	mulsd	%xmm12, %xmm11
	movapd	%xmm9, %xmm2
	movsd	.LC1(%rip), %xmm7
	xorl	%eax, %eax
	mulsd	%xmm14, %xmm9
	mulsd	%xmm0, %xmm2
	mulsd	%xmm12, %xmm0
	addsd	%xmm11, %xmm9
	addsd	%xmm8, %xmm2
	addsd	%xmm1, %xmm0
	andpd	%xmm10, %xmm9
	comisd	%xmm9, %xmm7
	movsd	%xmm2, (%rdi)
	movsd	%xmm0, (%rsi)
	seta	%al
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	subsd	%xmm8, %xmm6
	divsd	%xmm9, %xmm4
	pxor	%xmm3, %xmm3
	divsd	%xmm9, %xmm6
	comisd	%xmm4, %xmm6
	ja	.L54
.L46:
	comisd	%xmm6, %xmm3
	ja	.L55
.L14:
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm6, %xmm1
	movsd	.LC1(%rip), %xmm7
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	jbe	.L19
	comisd	%xmm0, %xmm4
	jbe	.L19
.L20:
	movsd	%xmm2, (%rdx)
	movl	$4, %eax
	movsd	%xmm13, (%rcx)
	ret
	.p2align 4,,10
	.p2align 3
.L45:
	movl	$2, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L51:
	movl	$6, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L53:
	movsd	.LC1(%rip), %xmm7
	movapd	%xmm6, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm7
	ja	.L15
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm4, %xmm1
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	ja	.L28
.L29:
	comisd	%xmm6, %xmm3
	jbe	.L22
	movl	$3, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L55:
	movsd	.LC1(%rip), %xmm7
	movapd	%xmm4, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm7
	jbe	.L14
.L15:
	movsd	%xmm8, (%rdx)
	movl	$4, %eax
	movsd	%xmm1, (%rcx)
	ret
	.p2align 4,,10
	.p2align 3
.L49:
	movl	$5, %eax
	ret
	.cfi_endproc
.LFE23:
	.size	rel_s_s, .-rel_s_s
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC6:
	.string	"%d"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC7:
	.string	"%lf %lf %lf %lf %lf %lf %lf %lf"
	.section	.rodata.str1.1
.LC8:
	.string	"%.8f %.8f\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB24:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC6(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$120, %rsp
	.cfi_def_cfa_offset 176
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	36(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movl	36(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 36(%rsp)
	testl	%eax, %eax
	je	.L76
	leaq	96(%rsp), %rax
	leaq	72(%rsp), %r15
	movq	%rax, 24(%rsp)
	leaq	88(%rsp), %rax
	leaq	64(%rsp), %r14
	movq	%rax, 16(%rsp)
	leaq	80(%rsp), %rax
	leaq	56(%rsp), %r13
	movq	%rax, 8(%rsp)
	leaq	48(%rsp), %r12
	leaq	40(%rsp), %rbp
	leaq	.LC7(%rip), %rbx
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L95:
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm14
	jbe	.L60
	ucomisd	%xmm3, %xmm11
	jp	.L62
	jne	.L62
	divsd	%xmm5, %xmm9
	movapd	%xmm10, %xmm7
	subsd	%xmm1, %xmm7
	divsd	%xmm5, %xmm7
.L64:
	comisd	%xmm9, %xmm7
	jbe	.L91
	pxor	%xmm0, %xmm0
	comisd	%xmm9, %xmm0
	ja	.L94
.L68:
	movsd	.LC3(%rip), %xmm0
	movsd	.LC1(%rip), %xmm6
	subsd	%xmm0, %xmm9
	andpd	.LC0(%rip), %xmm9
	comisd	%xmm9, %xmm6
	jbe	.L60
	cmpnltsd	%xmm7, %xmm0
.L93:
	movapd	%xmm0, %xmm2
	andpd	%xmm0, %xmm1
	andpd	%xmm0, %xmm3
	andnpd	%xmm12, %xmm2
	andnpd	%xmm11, %xmm0
	orpd	%xmm2, %xmm1
	orpd	%xmm0, %xmm3
	.p2align 4,,10
	.p2align 3
.L60:
	movapd	%xmm3, %xmm0
	movl	$1, %edi
	movl	$2, %eax
	leaq	.LC8(%rip), %rsi
	call	__printf_chk@PLT
	movl	36(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 36(%rsp)
	testl	%eax, %eax
	je	.L76
.L57:
	subq	$8, %rsp
	.cfi_def_cfa_offset 184
	xorl	%eax, %eax
	movq	%r15, %r9
	movq	%r14, %r8
	pushq	32(%rsp)
	.cfi_def_cfa_offset 192
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	pushq	32(%rsp)
	.cfi_def_cfa_offset 200
	movq	%rbx, %rdi
	pushq	32(%rsp)
	.cfi_def_cfa_offset 208
	call	__isoc99_scanf@PLT
	movsd	120(%rsp), %xmm7
	movsd	88(%rsp), %xmm11
	movsd	104(%rsp), %xmm2
	movsd	72(%rsp), %xmm3
	movsd	96(%rsp), %xmm12
	movsd	80(%rsp), %xmm1
	movapd	%xmm11, %xmm6
	movapd	%xmm7, %xmm4
	movsd	112(%rsp), %xmm9
	subsd	%xmm2, %xmm4
	subsd	%xmm3, %xmm6
	movsd	128(%rsp), %xmm10
	movapd	%xmm12, %xmm5
	subsd	%xmm3, %xmm2
	addq	$32, %rsp
	.cfi_def_cfa_offset 176
	movsd	.LC1(%rip), %xmm14
	movapd	%xmm10, %xmm0
	subsd	%xmm1, %xmm5
	subsd	%xmm9, %xmm0
	movapd	%xmm4, %xmm13
	movapd	%xmm6, %xmm8
	subsd	%xmm1, %xmm9
	mulsd	%xmm5, %xmm13
	mulsd	%xmm0, %xmm8
	mulsd	%xmm9, %xmm4
	mulsd	%xmm2, %xmm0
	subsd	%xmm13, %xmm8
	subsd	%xmm4, %xmm0
	movapd	%xmm8, %xmm4
	andpd	.LC0(%rip), %xmm4
	comisd	%xmm4, %xmm14
	ja	.L95
	divsd	%xmm8, %xmm0
	movsd	.LC5(%rip), %xmm7
	movapd	%xmm0, %xmm4
	subsd	.LC4(%rip), %xmm4
	andpd	.LC0(%rip), %xmm4
	comisd	%xmm4, %xmm7
	jbe	.L60
	mulsd	%xmm5, %xmm2
	movapd	%xmm9, %xmm4
	mulsd	%xmm6, %xmm4
	subsd	%xmm4, %xmm2
	divsd	%xmm8, %xmm2
	subsd	.LC4(%rip), %xmm2
	andpd	.LC0(%rip), %xmm2
	comisd	%xmm2, %xmm7
	jbe	.L60
	mulsd	%xmm0, %xmm6
	mulsd	%xmm0, %xmm5
	addsd	%xmm6, %xmm3
	addsd	%xmm5, %xmm1
	jmp	.L60
	.p2align 4,,10
	.p2align 3
.L91:
	pxor	%xmm5, %xmm5
	comisd	%xmm7, %xmm5
	ja	.L96
.L70:
	subsd	.LC3(%rip), %xmm7
	movsd	.LC1(%rip), %xmm6
	andpd	.LC0(%rip), %xmm7
	comisd	%xmm7, %xmm6
	jbe	.L60
	movsd	.LC3(%rip), %xmm0
	cmpnltsd	%xmm9, %xmm0
	jmp	.L93
	.p2align 4,,10
	.p2align 3
.L62:
	divsd	%xmm6, %xmm2
	subsd	%xmm3, %xmm7
	divsd	%xmm6, %xmm7
	movapd	%xmm2, %xmm9
	jmp	.L64
	.p2align 4,,10
	.p2align 3
.L76:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L97
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L96:
	.cfi_restore_state
	movsd	.LC1(%rip), %xmm5
	movapd	%xmm9, %xmm0
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm5
	jbe	.L70
	jmp	.L60
.L94:
	movsd	.LC1(%rip), %xmm5
	movapd	%xmm7, %xmm0
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm5
	jbe	.L68
	jmp	.L60
.L97:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE24:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC1:
	.long	-640172613
	.long	1037794527
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC4:
	.long	0
	.long	1071644672
	.align 8
.LC5:
	.long	900720
	.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
	.file	"temp.c"
	.text
	.p2align 4
	.globl	rel_s_s
	.type	rel_s_s, @function
rel_s_s:
.LFB23:
	.cfi_startproc
	endbr64
	movapd	%xmm2, %xmm9
	movapd	%xmm6, %xmm14
	movapd	%xmm3, %xmm12
	movq	.LC0(%rip), %xmm10
	subsd	%xmm4, %xmm14
	subsd	%xmm0, %xmm9
	movq	%rdi, %rdx
	movq	%rsi, %rcx
	movapd	%xmm7, %xmm11
	subsd	%xmm1, %xmm12
	movapd	%xmm0, %xmm8
	subsd	%xmm5, %xmm11
	subsd	%xmm8, %xmm4
	movapd	%xmm3, %xmm13
	movapd	%xmm9, %xmm15
	movapd	%xmm14, %xmm0
	subsd	%xmm1, %xmm5
	mulsd	%xmm12, %xmm0
	movapd	%xmm14, %xmm3
	mulsd	%xmm11, %xmm15
	mulsd	%xmm5, %xmm3
	subsd	%xmm0, %xmm15
	movapd	%xmm11, %xmm0
	mulsd	%xmm4, %xmm0
	subsd	%xmm3, %xmm0
	movapd	%xmm15, %xmm3
	andpd	%xmm10, %xmm3
	movq	%xmm0, %rax
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm3, %xmm0
	jbe	.L44
	movapd	%xmm0, %xmm3
	movq	%rax, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm3
	jbe	.L45
	ucomisd	%xmm8, %xmm2
	jp	.L6
	jne	.L6
	subsd	%xmm1, %xmm7
	divsd	%xmm12, %xmm5
	pxor	%xmm3, %xmm3
	divsd	%xmm12, %xmm7
	movapd	%xmm5, %xmm4
	movapd	%xmm7, %xmm6
	comisd	%xmm4, %xmm6
	jbe	.L46
.L54:
	comisd	%xmm4, %xmm3
	ja	.L53
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm4, %xmm1
	movsd	.LC1(%rip), %xmm7
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	jbe	.L19
.L28:
	comisd	%xmm0, %xmm6
	ja	.L20
.L19:
	comisd	%xmm4, %xmm3
	ja	.L29
.L22:
	comisd	%xmm0, %xmm4
	jbe	.L49
	comisd	%xmm0, %xmm6
	movl	$5, %edx
	movl	$3, %eax
	cmovbe	%edx, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L44:
	movq	%rax, %xmm0
	movsd	.LC4(%rip), %xmm3
	movsd	.LC5(%rip), %xmm2
	divsd	%xmm15, %xmm0
	movapd	%xmm0, %xmm6
	subsd	%xmm3, %xmm6
	andpd	%xmm10, %xmm6
	comisd	%xmm6, %xmm2
	jbe	.L51
	mulsd	%xmm12, %xmm4
	mulsd	%xmm9, %xmm5
	subsd	%xmm5, %xmm4
	divsd	%xmm15, %xmm4
	subsd	%xmm3, %xmm4
	andpd	%xmm10, %xmm4
	comisd	%xmm4, %xmm2
	jbe	.L51
	mulsd	%xmm12, %xmm11
	movapd	%xmm9, %xmm2
	movsd	.LC1(%rip), %xmm7
	xorl	%eax, %eax
	mulsd	%xmm14, %xmm9
	mulsd	%xmm0, %xmm2
	mulsd	%xmm12, %xmm0
	addsd	%xmm11, %xmm9
	addsd	%xmm8, %xmm2
	addsd	%xmm1, %xmm0
	andpd	%xmm10, %xmm9
	comisd	%xmm9, %xmm7
	movsd	%xmm2, (%rdi)
	movsd	%xmm0, (%rsi)
	seta	%al
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	subsd	%xmm8, %xmm6
	divsd	%xmm9, %xmm4
	pxor	%xmm3, %xmm3
	divsd	%xmm9, %xmm6
	comisd	%xmm4, %xmm6
	ja	.L54
.L46:
	comisd	%xmm6, %xmm3
	ja	.L55
.L14:
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm6, %xmm1
	movsd	.LC1(%rip), %xmm7
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	jbe	.L19
	comisd	%xmm0, %xmm4
	jbe	.L19
.L20:
	movsd	%xmm2, (%rdx)
	movl	$4, %eax
	movsd	%xmm13, (%rcx)
	ret
	.p2align 4,,10
	.p2align 3
.L45:
	movl	$2, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L51:
	movl	$6, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L53:
	movsd	.LC1(%rip), %xmm7
	movapd	%xmm6, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm7
	ja	.L15
	movsd	.LC3(%rip), %xmm0
	movapd	%xmm4, %xmm1
	subsd	%xmm0, %xmm1
	andpd	%xmm10, %xmm1
	comisd	%xmm1, %xmm7
	ja	.L28
.L29:
	comisd	%xmm6, %xmm3
	jbe	.L22
	movl	$3, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L55:
	movsd	.LC1(%rip), %xmm7
	movapd	%xmm4, %xmm0
	andpd	%xmm10, %xmm0
	comisd	%xmm0, %xmm7
	jbe	.L14
.L15:
	movsd	%xmm8, (%rdx)
	movl	$4, %eax
	movsd	%xmm1, (%rcx)
	ret
	.p2align 4,,10
	.p2align 3
.L49:
	movl	$5, %eax
	ret
	.cfi_endproc
.LFE23:
	.size	rel_s_s, .-rel_s_s
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC6:
	.string	"%d"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC7:
	.string	"%lf %lf %lf %lf %lf %lf %lf %lf"
	.section	.rodata.str1.1
.LC8:
	.string	"%.8f %.8f\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB24:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC6(%rip), %rdi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$120, %rsp
	.cfi_def_cfa_offset 176
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	leaq	36(%rsp), %rsi
	call	__isoc99_scanf@PLT
	movl	36(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 36(%rsp)
	testl	%eax, %eax
	je	.L76
	leaq	96(%rsp), %rax
	leaq	72(%rsp), %r15
	movq	%rax, 24(%rsp)
	leaq	88(%rsp), %rax
	leaq	64(%rsp), %r14
	movq	%rax, 16(%rsp)
	leaq	80(%rsp), %rax
	leaq	56(%rsp), %r13
	movq	%rax, 8(%rsp)
	leaq	48(%rsp), %r12
	leaq	40(%rsp), %rbp
	leaq	.LC7(%rip), %rbx
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L95:
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm14
	jbe	.L60
	ucomisd	%xmm3, %xmm11
	jp	.L62
	jne	.L62
	divsd	%xmm5, %xmm9
	movapd	%xmm10, %xmm7
	subsd	%xmm1, %xmm7
	divsd	%xmm5, %xmm7
.L64:
	comisd	%xmm9, %xmm7
	jbe	.L91
	pxor	%xmm0, %xmm0
	comisd	%xmm9, %xmm0
	ja	.L94
.L68:
	movsd	.LC3(%rip), %xmm0
	movsd	.LC1(%rip), %xmm6
	subsd	%xmm0, %xmm9
	andpd	.LC0(%rip), %xmm9
	comisd	%xmm9, %xmm6
	jbe	.L60
	cmpnltsd	%xmm7, %xmm0
.L93:
	movapd	%xmm0, %xmm2
	andpd	%xmm0, %xmm1
	andpd	%xmm0, %xmm3
	andnpd	%xmm12, %xmm2
	andnpd	%xmm11, %xmm0
	orpd	%xmm2, %xmm1
	orpd	%xmm0, %xmm3
	.p2align 4,,10
	.p2align 3
.L60:
	movapd	%xmm3, %xmm0
	movl	$1, %edi
	movl	$2, %eax
	leaq	.LC8(%rip), %rsi
	call	__printf_chk@PLT
	movl	36(%rsp), %eax
	leal	-1(%rax), %edx
	movl	%edx, 36(%rsp)
	testl	%eax, %eax
	je	.L76
.L57:
	subq	$8, %rsp
	.cfi_def_cfa_offset 184
	xorl	%eax, %eax
	movq	%r15, %r9
	movq	%r14, %r8
	pushq	32(%rsp)
	.cfi_def_cfa_offset 192
	movq	%r13, %rcx
	movq	%r12, %rdx
	movq	%rbp, %rsi
	pushq	32(%rsp)
	.cfi_def_cfa_offset 200
	movq	%rbx, %rdi
	pushq	32(%rsp)
	.cfi_def_cfa_offset 208
	call	__isoc99_scanf@PLT
	movsd	120(%rsp), %xmm7
	movsd	88(%rsp), %xmm11
	movsd	104(%rsp), %xmm2
	movsd	72(%rsp), %xmm3
	movsd	96(%rsp), %xmm12
	movsd	80(%rsp), %xmm1
	movapd	%xmm11, %xmm6
	movapd	%xmm7, %xmm4
	movsd	112(%rsp), %xmm9
	subsd	%xmm2, %xmm4
	subsd	%xmm3, %xmm6
	movsd	128(%rsp), %xmm10
	movapd	%xmm12, %xmm5
	subsd	%xmm3, %xmm2
	addq	$32, %rsp
	.cfi_def_cfa_offset 176
	movsd	.LC1(%rip), %xmm14
	movapd	%xmm10, %xmm0
	subsd	%xmm1, %xmm5
	subsd	%xmm9, %xmm0
	movapd	%xmm4, %xmm13
	movapd	%xmm6, %xmm8
	subsd	%xmm1, %xmm9
	mulsd	%xmm5, %xmm13
	mulsd	%xmm0, %xmm8
	mulsd	%xmm9, %xmm4
	mulsd	%xmm2, %xmm0
	subsd	%xmm13, %xmm8
	subsd	%xmm4, %xmm0
	movapd	%xmm8, %xmm4
	andpd	.LC0(%rip), %xmm4
	comisd	%xmm4, %xmm14
	ja	.L95
	divsd	%xmm8, %xmm0
	movsd	.LC5(%rip), %xmm7
	movapd	%xmm0, %xmm4
	subsd	.LC4(%rip), %xmm4
	andpd	.LC0(%rip), %xmm4
	comisd	%xmm4, %xmm7
	jbe	.L60
	mulsd	%xmm5, %xmm2
	movapd	%xmm9, %xmm4
	mulsd	%xmm6, %xmm4
	subsd	%xmm4, %xmm2
	divsd	%xmm8, %xmm2
	subsd	.LC4(%rip), %xmm2
	andpd	.LC0(%rip), %xmm2
	comisd	%xmm2, %xmm7
	jbe	.L60
	mulsd	%xmm0, %xmm6
	mulsd	%xmm0, %xmm5
	addsd	%xmm6, %xmm3
	addsd	%xmm5, %xmm1
	jmp	.L60
	.p2align 4,,10
	.p2align 3
.L91:
	pxor	%xmm5, %xmm5
	comisd	%xmm7, %xmm5
	ja	.L96
.L70:
	subsd	.LC3(%rip), %xmm7
	movsd	.LC1(%rip), %xmm6
	andpd	.LC0(%rip), %xmm7
	comisd	%xmm7, %xmm6
	jbe	.L60
	movsd	.LC3(%rip), %xmm0
	cmpnltsd	%xmm9, %xmm0
	jmp	.L93
	.p2align 4,,10
	.p2align 3
.L62:
	divsd	%xmm6, %xmm2
	subsd	%xmm3, %xmm7
	divsd	%xmm6, %xmm7
	movapd	%xmm2, %xmm9
	jmp	.L64
	.p2align 4,,10
	.p2align 3
.L76:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L97
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L96:
	.cfi_restore_state
	movsd	.LC1(%rip), %xmm5
	movapd	%xmm9, %xmm0
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm5
	jbe	.L70
	jmp	.L60
.L94:
	movsd	.LC1(%rip), %xmm5
	movapd	%xmm7, %xmm0
	andpd	.LC0(%rip), %xmm0
	comisd	%xmm0, %xmm5
	jbe	.L68
	jmp	.L60
.L97:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE24:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC1:
	.long	-640172613
	.long	1037794527
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC4:
	.long	0
	.long	1071644672
	.align 8
.LC5:
	.long	900720
	.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:

#include <math.h>
#include <stdio.h>

#define EPS 1e-10

int rel_s_s( double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y ) {
	double dn = ( x2 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y2 - y1 );
	double nm = ( x3 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y3 - y1 );

	if ( fabs( dn ) < EPS )
		if ( fabs( nm ) < EPS ) {
			double h1 = x1 == x2 ? ( y3 - y1 ) / ( y2 - y1 ) : ( x3 - x1 ) / ( x2 - x1 );
			double h2 = x1 == x2 ? ( y4 - y1 ) / ( y2 - y1 ) : ( x4 - x1 ) / ( x2 - x1 );

			if ( ( h1 < h2 ? h1 : h2 ) < 0.0 && fabs( h1 < h2 ? h2 : h1 ) < EPS ) {
				*x = x1;
				*y = y1;
				return 4;
			} else if ( fabs( ( h1 < h2 ? h1 : h2 ) - 1.0 ) < EPS && 1.0 < ( h1 < h2 ? h2 : h1 ) ) {
				*x = x2;
				*y = y2;
				return 4;
			} else if ( h1 < 0.0 && h2 < 0.0 || 1.0 < h1 && 1.0 < h2 )
				return 3;
			else
				return 5;
		} else
			return 2;
	else
		if ( fabs( nm / dn - 0.5 ) < 0.5 + EPS && fabs( ( ( x3 - x1 ) * ( y2 - y1 ) - ( x2 - x1 ) * ( y3 - y1 ) ) / dn - 0.5 ) < 0.5 + EPS ) {
			*x = x1 + nm / dn * ( x2 - x1 );
			*y = y1 + nm / dn * ( y2 - y1 );

			if ( fabs( ( x2 - x1 ) * ( x4 - x3 ) + ( y2 - y1 ) * ( y4 - y3 ) ) < EPS )
				return 1;
			else
				return 0;
		} else
			return 6;
}

int main( void ) {
	int q;

	scanf( "%d", &q );
	while ( q-- ) {
		double x0, y0, x1, y1, x2, y2, x3, y3, x, y;

		scanf( "%lf %lf %lf %lf %lf %lf %lf %lf", &x0, &y0, &x1, &y1, &x2, &y2, &x3, &y3 );

		rel_s_s( x0, y0, x1, y1, x2, y2, x3, y3, &x, &y );
		printf( "%.8f %.8f\n", x, y );
	}

	return 0;
}
3
0 0 2 0 2 1 1 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 2 1 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 2 0 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 1 0 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 1 0 -1
0 0 1 1 0 1 1 0
0 0 1 0 1 0 0 1
 3
0 0 2 0 2 1 0 -1
0 0 1 1 0 1 2 0
0 0 1 0 1 0 0 1
 3
0 0 2 0 0 1 1 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 2 1 -1
0 0 1 1 0 1 1 0
0 0 1 1 2 0 0 1
 3
0 0 2 0 2 2 0 -1
0 0 2 1 0 1 1 0
0 0 1 1 1 0 0 1
 3
0 0 2 0 2 0 0 -1
0 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1

1.50000000 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000
 1.33333333 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000
 0.66666667 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000
 1.00000000 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000
 1.00000000 0.00000000
0.50000000 0.50000000
1.00000000 0.00000000
 1.00000000 0.00000000
0.66666667 0.66666667
1.00000000 0.00000000
 0.50000000 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000
 1.33333333 0.00000000
0.50000000 0.50000000
0.66666667 0.66666667
 0.66666667 0.00000000
0.66666667 0.33333333
0.50000000 0.50000000
 2.00000000 0.00000000
0.50000000 0.50000000
0.50000000 0.50000000

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

```c
#include <math.h>
#include <stdio.h>

#define EPS 1e-10

int rel_s_s( double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y ) {
	double dn = ( x2 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y2 - y1 );
	double nm = ( x3 - x1 ) * ( y4 - y3 ) - ( x4 - x3 ) * ( y3 - y1 );

	if ( fabs( dn ) < EPS )
		if ( fabs( nm ) < EPS ) {
			double h1 = x1 == x2 ? ( y3 - y1 ) / ( y2 - y1 ) : ( x3 - x1 ) / ( x2 - x1 );
			double h2 = x1 == x2 ? ( y4 - y1 ) / ( y2 - y1 ) : ( x4 - x1 ) / ( x2 - x1 );

			if ( ( h1 < h2 ? h1 : h2 ) < 0.0 && fabs( h1 < h2 ? h2 : h1 ) < EPS ) {
				*x = x1;
				*y = y1;
				return 4;
			} else if ( fabs( ( h1 < h2 ? h1 : h2 ) - 1.0 ) < EPS && 1.0 < ( h1 < h2 ? h2 : h1 ) ) {
				*x = x2;
				*y = y2;
				return 4;
			} else if ( h1 < 0.0 && h2 < 0.0 || 1.0 < h1 && 1.0 < h2 )
				return 3;
			else
				return 5;
		} else
			return 2;
	else
		if ( fabs( nm / dn - 0.5 ) < 0.5 + EPS && fabs( ( ( x3 - x1 ) * ( y2 - y1 ) - ( x2 - x1 ) * ( y3 - y1 ) ) / dn - 0.5 ) < 0.5 + EPS ) {
			*x = x1 + nm / dn * ( x2 - x1 );
			*y = y1 + nm / dn * ( y2 - y1 );

			if ( fabs( ( x2 - x1 ) * ( x4 - x3 ) + ( y2 - y1 ) * ( y4 - y3 ) ) < EPS )
				return 1;
			else
				return 0;
		} else
			return 6;
}

int main( void ) {
	int q;

	scanf( "%d", &q );
	while ( q-- ) {
		double x0, y0, x1, y1, x2, y2, x3, y3, x, y;

		scanf( "%lf %lf %lf %lf %lf %lf %lf %lf", &x0, &y0, &x1, &y1, &x2, &y2, &x3, &y3 );

		rel_s_s( x0, y0, x1, y1, x2, y2, x3, y3, &x, &y );
		printf( "%.8f %.8f\n", x, y );
	}

	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	rel_s_s
	.type	rel_s_s, @function
rel_s_s:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movsd	%xmm0, -40(%rbp)
	movsd	%xmm1, -48(%rbp)
	movsd	%xmm2, -56(%rbp)
	movsd	%xmm3, -64(%rbp)
	movsd	%xmm4, -72(%rbp)
	movsd	%xmm5, -80(%rbp)
	movsd	%xmm6, -88(%rbp)
	movsd	%xmm7, -96(%rbp)
	movq	%rdi, -104(%rbp)
	movq	%rsi, -112(%rbp)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -32(%rbp)
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -24(%rbp)
	movsd	-32(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L56
	movsd	-24(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L57
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L6
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L6
	movsd	-80(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L8
.L6:
	movsd	-72(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L8:
	movsd	%xmm0, -16(%rbp)
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L9
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L9
	movsd	-96(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L11
.L9:
	movsd	-88(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L11:
	movsd	%xmm0, -8(%rbp)
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L58
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	ja	.L14
	jmp	.L15
.L58:
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	jbe	.L15
.L14:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L59
	movsd	-8(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	ja	.L19
	jmp	.L15
.L59:
	movsd	-16(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L15
.L19:
	movq	-104(%rbp), %rax
	movsd	-40(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-48(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L15:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L60
	movsd	-16(%rbp), %xmm0
	jmp	.L24
.L60:
	movsd	-8(%rbp), %xmm0
.L24:
	movsd	.LC3(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L25
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L61
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	ja	.L29
	jmp	.L25
.L61:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L25
.L29:
	movq	-104(%rbp), %rax
	movsd	-56(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-64(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L25:
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L31
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	ja	.L33
.L31:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
.L33:
	movl	$3, %eax
	jmp	.L21
.L34:
	movl	$5, %eax
	jmp	.L21
.L57:
	movl	$2, %eax
	jmp	.L21
.L56:
	movsd	-24(%rbp), %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-56(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-40(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-56(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-40(%rbp), %xmm0
	movq	-104(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-48(%rbp), %xmm0
	movq	-112(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-88(%rbp), %xmm0
	subsd	-72(%rbp), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	-64(%rbp), %xmm0
	movapd	%xmm0, %xmm2
	subsd	-48(%rbp), %xmm2
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L62
	movl	$1, %eax
	jmp	.L21
.L62:
	movl	$0, %eax
	jmp	.L21
.L37:
	movl	$6, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	rel_s_s, .-rel_s_s
	.section	.rodata
.LC6:
	.string	"%d"
	.align 8
.LC7:
	.string	"%lf %lf %lf %lf %lf %lf %lf %lf"
.LC8:
	.string	"%.8f %.8f\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-92(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC6(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L64
.L65:
	leaq	-56(%rbp), %r8
	leaq	-64(%rbp), %rdi
	leaq	-72(%rbp), %rcx
	leaq	-80(%rbp), %rdx
	leaq	-88(%rbp), %rax
	subq	$8, %rsp
	leaq	-32(%rbp), %rsi
	pushq	%rsi
	leaq	-40(%rbp), %rsi
	pushq	%rsi
	leaq	-48(%rbp), %rsi
	pushq	%rsi
	movq	%r8, %r9
	movq	%rdi, %r8
	movq	%rax, %rsi
	leaq	.LC7(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addq	$32, %rsp
	movsd	-32(%rbp), %xmm6
	movsd	-40(%rbp), %xmm5
	movsd	-48(%rbp), %xmm4
	movsd	-56(%rbp), %xmm3
	movsd	-64(%rbp), %xmm2
	movsd	-72(%rbp), %xmm1
	movsd	-80(%rbp), %xmm0
	movq	-88(%rbp), %rax
	leaq	-16(%rbp), %rcx
	leaq	-24(%rbp), %rdx
	movq	%rcx, %rsi
	movq	%rdx, %rdi
	movapd	%xmm6, %xmm7
	movapd	%xmm5, %xmm6
	movapd	%xmm4, %xmm5
	movapd	%xmm3, %xmm4
	movapd	%xmm2, %xmm3
	movapd	%xmm1, %xmm2
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	call	rel_s_s
	movsd	-16(%rbp), %xmm0
	movq	-24(%rbp), %rax
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	leaq	.LC8(%rip), %rax
	movq	%rax, %rdi
	movl	$2, %eax
	call	printf@PLT
.L64:
	movl	-92(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -92(%rbp)
	testl	%eax, %eax
	jne	.L65
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L67
	call	__stack_chk_fail@PLT
.L67:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	main, .-main
	.section	.rodata
	.align 16
.LC0:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.align 8
.LC1:
	.long	-640172613
	.long	1037794527
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC4:
	.long	0
	.long	1071644672
	.align 8
.LC5:
	.long	900720
	.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.
train
	.file	"temp.c"
	.text
	.globl	rel_s_s
	.type	rel_s_s, @function
rel_s_s:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movsd	%xmm0, -40(%rbp)
	movsd	%xmm1, -48(%rbp)
	movsd	%xmm2, -56(%rbp)
	movsd	%xmm3, -64(%rbp)
	movsd	%xmm4, -72(%rbp)
	movsd	%xmm5, -80(%rbp)
	movsd	%xmm6, -88(%rbp)
	movsd	%xmm7, -96(%rbp)
	movq	%rdi, -104(%rbp)
	movq	%rsi, -112(%rbp)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -32(%rbp)
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-88(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-72(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	movsd	%xmm0, -24(%rbp)
	movsd	-32(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L56
	movsd	-24(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L57
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L6
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L6
	movsd	-80(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L8
.L6:
	movsd	-72(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L8:
	movsd	%xmm0, -16(%rbp)
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jp	.L9
	movsd	-40(%rbp), %xmm0
	ucomisd	-56(%rbp), %xmm0
	jne	.L9
	movsd	-96(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	movsd	-64(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	jmp	.L11
.L9:
	movsd	-88(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	movsd	-56(%rbp), %xmm1
	subsd	-40(%rbp), %xmm1
	divsd	%xmm1, %xmm0
.L11:
	movsd	%xmm0, -8(%rbp)
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L58
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	ja	.L14
	jmp	.L15
.L58:
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	jbe	.L15
.L14:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L59
	movsd	-8(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	ja	.L19
	jmp	.L15
.L59:
	movsd	-16(%rbp), %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L15
.L19:
	movq	-104(%rbp), %rax
	movsd	-40(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-48(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L15:
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L60
	movsd	-16(%rbp), %xmm0
	jmp	.L24
.L60:
	movsd	-8(%rbp), %xmm0
.L24:
	movsd	.LC3(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L25
	movsd	-8(%rbp), %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L61
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	ja	.L29
	jmp	.L25
.L61:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L25
.L29:
	movq	-104(%rbp), %rax
	movsd	-56(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-112(%rbp), %rax
	movsd	-64(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movl	$4, %eax
	jmp	.L21
.L25:
	pxor	%xmm0, %xmm0
	comisd	-16(%rbp), %xmm0
	jbe	.L31
	pxor	%xmm0, %xmm0
	comisd	-8(%rbp), %xmm0
	ja	.L33
.L31:
	movsd	-16(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
	movsd	-8(%rbp), %xmm0
	movsd	.LC3(%rip), %xmm1
	comisd	%xmm1, %xmm0
	jbe	.L34
.L33:
	movl	$3, %eax
	jmp	.L21
.L34:
	movl	$5, %eax
	jmp	.L21
.L57:
	movl	$2, %eax
	jmp	.L21
.L56:
	movsd	-24(%rbp), %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-72(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	movsd	-56(%rbp), %xmm1
	movapd	%xmm1, %xmm2
	subsd	-40(%rbp), %xmm2
	movsd	-80(%rbp), %xmm1
	subsd	-48(%rbp), %xmm1
	mulsd	%xmm2, %xmm1
	subsd	%xmm1, %xmm0
	divsd	-32(%rbp), %xmm0
	movsd	.LC4(%rip), %xmm1
	subsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC5(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L37
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-56(%rbp), %xmm0
	subsd	-40(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-40(%rbp), %xmm0
	movq	-104(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-24(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	divsd	-32(%rbp), %xmm1
	movsd	-64(%rbp), %xmm0
	subsd	-48(%rbp), %xmm0
	mulsd	%xmm1, %xmm0
	addsd	-48(%rbp), %xmm0
	movq	-112(%rbp), %rax
	movsd	%xmm0, (%rax)
	movsd	-56(%rbp), %xmm0
	movapd	%xmm0, %xmm1
	subsd	-40(%rbp), %xmm1
	movsd	-88(%rbp), %xmm0
	subsd	-72(%rbp), %xmm0
	mulsd	%xmm0, %xmm1
	movsd	-64(%rbp), %xmm0
	movapd	%xmm0, %xmm2
	subsd	-48(%rbp), %xmm2
	movsd	-96(%rbp), %xmm0
	subsd	-80(%rbp), %xmm0
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movq	.LC0(%rip), %xmm1
	andpd	%xmm0, %xmm1
	movsd	.LC1(%rip), %xmm0
	comisd	%xmm1, %xmm0
	jbe	.L62
	movl	$1, %eax
	jmp	.L21
.L62:
	movl	$0, %eax
	jmp	.L21
.L37:
	movl	$6, %eax
.L21:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	rel_s_s, .-rel_s_s
	.section	.rodata
.LC6:
	.string	"%d"
	.align 8
.LC7:
	.string	"%lf %lf %lf %lf %lf %lf %lf %lf"
.LC8:
	.string	"%.8f %.8f\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-92(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC6(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L64
.L65:
	leaq	-56(%rbp), %r8
	leaq	-64(%rbp), %rdi
	leaq	-72(%rbp), %rcx
	leaq	-80(%rbp), %rdx
	leaq	-88(%rbp), %rax
	subq	$8, %rsp
	leaq	-32(%rbp), %rsi
	pushq	%rsi
	leaq	-40(%rbp), %rsi
	pushq	%rsi
	leaq	-48(%rbp), %rsi
	pushq	%rsi
	movq	%r8, %r9
	movq	%rdi, %r8
	movq	%rax, %rsi
	leaq	.LC7(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addq	$32, %rsp
	movsd	-32(%rbp), %xmm6
	movsd	-40(%rbp), %xmm5
	movsd	-48(%rbp), %xmm4
	movsd	-56(%rbp), %xmm3
	movsd	-64(%rbp), %xmm2
	movsd	-72(%rbp), %xmm1
	movsd	-80(%rbp), %xmm0
	movq	-88(%rbp), %rax
	leaq	-16(%rbp), %rcx
	leaq	-24(%rbp), %rdx
	movq	%rcx, %rsi
	movq	%rdx, %rdi
	movapd	%xmm6, %xmm7
	movapd	%xmm5, %xmm6
	movapd	%xmm4, %xmm5
	movapd	%xmm3, %xmm4
	movapd	%xmm2, %xmm3
	movapd	%xmm1, %xmm2
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	call	rel_s_s
	movsd	-16(%rbp), %xmm0
	movq	-24(%rbp), %rax
	movapd	%xmm0, %xmm1
	movq	%rax, %xmm0
	leaq	.LC8(%rip), %rax
	movq	%rax, %rdi
	movl	$2, %eax
	call	printf@PLT
.L64:
	movl	-92(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -92(%rbp)
	testl	%eax, %eax
	jne	.L65
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L67
	call	__stack_chk_fail@PLT
.L67:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	main, .-main
	.section	.rodata
	.align 16
.LC0:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.align 8
.LC1:
	.long	-640172613
	.long	1037794527
	.align 8
.LC3:
	.long	0
	.long	1072693248
	.align 8
.LC4:
	.long	0
	.long	1071644672
	.align 8
.LC5:
	.long	900720
	.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:
