fac:
	testq	%rdi, %rdi
	pushq	%rbx
	movl	$1, %eax
	movq	%rdi, %rbx
	jne	.L6
	popq	%rbx
	ret
.L6:
	leaq	-1(%rdi), %rdi
	call	fac
	imulq	%rbx, %rax
	popq	%rbx
	ret
