aprod:
	leaq	-2(%rsi), %rdx
	xorl	%eax, %eax
	movsd	.LC0(%rip), %xmm0
	testq	%rdx, %rdx
	jle	.L2
.L3:
	mulsd	(%rdi,%rax,8), %xmm0
	mulsd	8(%rdi,%rax,8), %xmm0
	mulsd	16(%rdi,%rax,8), %xmm0
	addq	$3, %rax
	cmpq	%rdx, %rax
	jl	.L3
.L2:
	cmpq	%rax, %rsi
	jle	.L4
.L5:
	mulsd	(%rdi,%rax,8), %xmm0
	addq	$1, %rax
	cmpq	%rsi, %rax
	jne	.L5
.L4:
	rep ret
aprod1:
	testq	%rsi, %rsi
	movsd	.LC0(%rip), %xmm0
	jle	.L11
	xorl	%eax, %eax
.L10:
	mulsd	(%rdi,%rax,8), %xmm0
	mulsd	8(%rdi,%rax,8), %xmm0
	mulsd	16(%rdi,%rax,8), %xmm0
	addq	$3, %rax
	cmpq	%rax, %rsi
	jg	.L10
	rep ret
.L11:
	rep ret
t1:
	movq	%rdi, %rsi
	movl	$a, %edi
	call	aprod1
	movsd	%xmm0, sink(%rip)
	ret

aprod2:
	testq	%rsi, %rsi
	movsd	.LC0(%rip), %xmm0
	jle	.L16
	xorl	%eax, %eax
.L15:
	movsd	(%rdi,%rax,8), %xmm1
	mulsd	8(%rdi,%rax,8), %xmm1
	mulsd	%xmm1, %xmm0
	mulsd	16(%rdi,%rax,8), %xmm0
	addq	$3, %rax
	cmpq	%rax, %rsi
	jg	.L15
	rep ret
.L16:
	rep ret
t2:
	movq	%rdi, %rsi
	movl	$a, %edi
	call	aprod2
	movsd	%xmm0, sink(%rip)
	ret

aprod3:
	testq	%rsi, %rsi
	movsd	.LC0(%rip), %xmm0
	jle	.L21
	xorl	%eax, %eax
.L20:
	movsd	(%rdi,%rax,8), %xmm1
	mulsd	8(%rdi,%rax,8), %xmm1
	mulsd	16(%rdi,%rax,8), %xmm1
	addq	$3, %rax
	cmpq	%rax, %rsi
	mulsd	%xmm1, %xmm0
	jg	.L20
	rep ret
.L21:
	rep ret
t3:
	movq	%rdi, %rsi
	movl	$a, %edi
	call	aprod3
	movsd	%xmm0, sink(%rip)
	ret

aprod4:
	testq	%rsi, %rsi
	movsd	.LC0(%rip), %xmm0
	jle	.L26
	xorl	%eax, %eax
.L25:
	movsd	8(%rdi,%rax,8), %xmm1
	mulsd	16(%rdi,%rax,8), %xmm1
	mulsd	(%rdi,%rax,8), %xmm1
	addq	$3, %rax
	cmpq	%rax, %rsi
	mulsd	%xmm1, %xmm0
	jg	.L25
	rep ret
.L26:
	rep ret
t4:
	movq	%rdi, %rsi
	movl	$a, %edi
	call	aprod4
	movsd	%xmm0, sink(%rip)
	ret

aprod5:
	testq	%rsi, %rsi
	movsd	.LC0(%rip), %xmm0
	jle	.L31
	xorl	%eax, %eax
.L30:
	movsd	8(%rdi,%rax,8), %xmm1
	mulsd	(%rdi,%rax,8), %xmm0
	mulsd	16(%rdi,%rax,8), %xmm1
	addq	$3, %rax
	cmpq	%rax, %rsi
	mulsd	%xmm1, %xmm0
	jg	.L30
	rep ret
.L31:
	rep ret
t5:
	movq	%rdi, %rsi
	movl	$a, %edi
	call	aprod5
	movsd	%xmm0, sink(%rip)
	ret

main:
	subq	$8, %rsp
	movl	$1024, %esi
	movl	$t1, %edi
	call	find_cpe
	movl	$.LC1, %edi
	movl	$1, %eax
	call	printf
	movl	$1024, %esi
	movl	$t2, %edi
	call	find_cpe
	movl	$.LC2, %edi
	movl	$1, %eax
	call	printf
	movl	$1024, %esi
	movl	$t3, %edi
	call	find_cpe
	movl	$.LC3, %edi
	movl	$1, %eax
	call	printf
	movl	$1024, %esi
	movl	$t4, %edi
	call	find_cpe
	movl	$.LC4, %edi
	movl	$1, %eax
	call	printf
	movl	$1024, %esi
	movl	$t5, %edi
	call	find_cpe
	movl	$.LC5, %edi
	movl	$1, %eax
	call	printf
	xorl	%eax, %eax
	addq	$8, %rsp
	ret

sink:
