Program: vectors-3d

x86 assembly:
	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_vector_sub                     ## -- Begin function vector_sub
	.p2align	4, 0x90
_vector_sub:                            ## @vector_sub
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	%rdi, %rax
	movq	%rsi, -8(%rbp)
	movq	%rdx, -16(%rbp)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	subsd	(%rcx), %xmm0
	movsd	%xmm0, (%rdi)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	subsd	8(%rcx), %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm0                 ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	subsd	16(%rcx), %xmm0
	movsd	%xmm0, 16(%rdi)
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_vector_add                     ## -- Begin function vector_add
	.p2align	4, 0x90
_vector_add:                            ## @vector_add
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	%rdi, %rax
	movq	%rsi, -8(%rbp)
	movq	%rdx, -16(%rbp)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	addsd	(%rcx), %xmm0
	movsd	%xmm0, (%rdi)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	addsd	8(%rcx), %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm0                 ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	addsd	16(%rcx), %xmm0
	movsd	%xmm0, 16(%rdi)
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_dot_prod                       ## -- Begin function dot_prod
	.p2align	4, 0x90
_dot_prod:                              ## @dot_prod
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movsd	(%rax), %xmm0                   ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rax
	mulsd	(%rax), %xmm0
	movsd	%xmm0, -24(%rbp)
	movq	-8(%rbp), %rax
	movsd	8(%rax), %xmm0                  ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rax
	movsd	8(%rax), %xmm2                  ## xmm2 = mem[0],zero
	movsd	-24(%rbp), %xmm1                ## xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, -24(%rbp)
	movq	-8(%rbp), %rax
	movsd	16(%rax), %xmm0                 ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rax
	movsd	16(%rax), %xmm2                 ## xmm2 = mem[0],zero
	movsd	-24(%rbp), %xmm1                ## xmm1 = mem[0],zero
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, -24(%rbp)
	movsd	-24(%rbp), %xmm0                ## xmm0 = mem[0],zero
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_vector_prod                    ## -- Begin function vector_prod
	.p2align	4, 0x90
_vector_prod:                           ## @vector_prod
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	%rdi, %rax
	movq	%rsi, -8(%rbp)
	movq	%rdx, -16(%rbp)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	movsd	16(%rcx), %xmm2                 ## xmm2 = mem[0],zero
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm1                 ## xmm1 = mem[0],zero
	movq	-16(%rbp), %rcx
	mulsd	8(%rcx), %xmm1
	movq	%xmm1, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, (%rdi)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movq	%xmm0, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm0
	movq	-16(%rbp), %rcx
	movsd	16(%rcx), %xmm2                 ## xmm2 = mem[0],zero
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm1                 ## xmm1 = mem[0],zero
	movq	-16(%rbp), %rcx
	mulsd	(%rcx), %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movq	-16(%rbp), %rcx
	movsd	8(%rcx), %xmm2                  ## xmm2 = mem[0],zero
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm1                  ## xmm1 = mem[0],zero
	movq	-16(%rbp), %rcx
	mulsd	(%rcx), %xmm1
	movq	%xmm1, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm1
	mulsd	%xmm2, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 16(%rdi)
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_print_vector                   ## -- Begin function print_vector
	.p2align	4, 0x90
_print_vector:                          ## @print_vector
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rcx
	movq	-8(%rbp), %rax
	movsd	(%rax), %xmm0                   ## xmm0 = mem[0],zero
	movq	-8(%rbp), %rax
	movsd	8(%rax), %xmm1                  ## xmm1 = mem[0],zero
	movq	-8(%rbp), %rax
	movsd	16(%rax), %xmm2                 ## xmm2 = mem[0],zero
	leaq	_print_vector.vec_str(%rip), %rdi
	movl	$99, %esi
	leaq	L_.str(%rip), %rdx
	movb	$3, %al
	callq	_libmin_snprintf
	leaq	_print_vector.vec_str(%rip), %rax
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_vector_norm                    ## -- Begin function vector_norm
	.p2align	4, 0x90
_vector_norm:                           ## @vector_norm
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movq	%rdi, -8(%rbp)
	movq	-8(%rbp), %rdi
	movq	-8(%rbp), %rsi
	callq	_dot_prod
	movsd	%xmm0, -16(%rbp)
	movsd	-16(%rbp), %xmm0                ## xmm0 = mem[0],zero
	callq	_libmin_sqrt
	movsd	%xmm0, -16(%rbp)
	movsd	-16(%rbp), %xmm0                ## xmm0 = mem[0],zero
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ## -- Begin function unit_vec
LCPI6_0:
	.quad	0x3e112e0be826d695              ## double 1.0000000000000001E-9
LCPI6_1:
	.quad	0x3ff0000000000000              ## double 1
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_unit_vec
	.p2align	4, 0x90
_unit_vec:                              ## @unit_vec
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$32, %rsp
	movq	%rdi, -32(%rbp)                 ## 8-byte Spill
	movq	%rdi, %rax
	movq	%rax, -24(%rbp)                 ## 8-byte Spill
	movq	%rsi, -8(%rbp)
	xorl	%esi, %esi
	movl	$24, %edx
	callq	_memset
	movq	-8(%rbp), %rdi
	callq	_vector_norm
	movsd	%xmm0, -16(%rbp)
	movsd	-16(%rbp), %xmm0                ## xmm0 = mem[0],zero
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI6_0(%rip), %xmm0            ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB6_2
## %bb.1:
	jmp	LBB6_5
LBB6_2:
	movsd	-16(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI6_1(%rip), %xmm1            ## xmm1 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jne	LBB6_3
	jp	LBB6_3
	jmp	LBB6_4
LBB6_3:
	movq	-32(%rbp), %rax                 ## 8-byte Reload
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	divsd	-16(%rbp), %xmm0
	movsd	%xmm0, (%rax)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	divsd	-16(%rbp), %xmm0
	movsd	%xmm0, 8(%rax)
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm0                 ## xmm0 = mem[0],zero
	divsd	-16(%rbp), %xmm0
	movsd	%xmm0, 16(%rax)
LBB6_4:
	jmp	LBB6_5
LBB6_5:
	movq	-24(%rbp), %rax                 ## 8-byte Reload
	addq	$32, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_get_cross_matrix               ## -- Begin function get_cross_matrix
	.p2align	4, 0x90
_get_cross_matrix:                      ## @get_cross_matrix
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	%rdi, %rax
	movq	%rsi, -8(%rbp)
	xorps	%xmm0, %xmm0
	movsd	%xmm0, (%rdi)
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm0                 ## xmm0 = mem[0],zero
	movq	%xmm0, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm0
	movsd	%xmm0, 8(%rdi)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	movsd	%xmm0, 16(%rdi)
	movq	-8(%rbp), %rcx
	movsd	16(%rcx), %xmm0                 ## xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rdi)
	xorps	%xmm0, %xmm0
	movsd	%xmm0, 32(%rdi)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movq	%xmm0, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm0
	movsd	%xmm0, 40(%rdi)
	movq	-8(%rbp), %rcx
	movsd	8(%rcx), %xmm0                  ## xmm0 = mem[0],zero
	movq	%xmm0, %rcx
	movabsq	$-9223372036854775808, %rdx     ## imm = 0x8000000000000000
	xorq	%rdx, %rcx
	movq	%rcx, %xmm0
	movsd	%xmm0, 48(%rdi)
	movq	-8(%rbp), %rcx
	movsd	(%rcx), %xmm0                   ## xmm0 = mem[0],zero
	movsd	%xmm0, 56(%rdi)
	xorps	%xmm0, %xmm0
	movsd	%xmm0, 64(%rdi)
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ## -- Begin function get_angle
LCPI8_0:
	.quad	0x3e112e0be826d695              ## double 1.0000000000000001E-9
LCPI8_1:
	.quad	0x7ff8000000000000              ## double NaN
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_get_angle
	.p2align	4, 0x90
_get_angle:                             ## @get_angle
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$64, %rsp
	movq	%rdi, -16(%rbp)
	movq	%rsi, -24(%rbp)
	movq	-16(%rbp), %rdi
	callq	_vector_norm
	movsd	%xmm0, -48(%rbp)
	movq	-24(%rbp), %rdi
	callq	_vector_norm
	movsd	%xmm0, -56(%rbp)
	movsd	-48(%rbp), %xmm0                ## xmm0 = mem[0],zero
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI8_0(%rip), %xmm0            ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	ja	LBB8_2
## %bb.1:
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI8_0(%rip), %xmm0            ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB8_3
LBB8_2:
	movsd	LCPI8_1(%rip), %xmm0            ## xmm0 = mem[0],zero
	movsd	%xmm0, -8(%rbp)
	jmp	LBB8_4
LBB8_3:
	movq	-16(%rbp), %rdi
	movq	-24(%rbp), %rsi
	callq	_dot_prod
	movsd	-48(%rbp), %xmm1                ## xmm1 = mem[0],zero
	mulsd	-56(%rbp), %xmm1
	divsd	%xmm1, %xmm0
	movsd	%xmm0, -40(%rbp)
	movsd	-40(%rbp), %xmm0                ## xmm0 = mem[0],zero
	callq	_libmin_acos
	movsd	%xmm0, -32(%rbp)
	movsd	-32(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	%xmm0, -8(%rbp)
LBB8_4:
	movsd	-8(%rbp), %xmm0                 ## xmm0 = mem[0],zero
	addq	$64, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_main                           ## -- Begin function main
	.p2align	4, 0x90
_main:                                  ## @main
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	$0, -4(%rbp)
	callq	_test
	callq	_libmin_success
	xorl	%eax, %eax
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ## -- Begin function test
LCPI10_0:
	.quad	0x3f847ae147ae147b              ## double 0.01
LCPI10_1:
	.quad	0x400def9db22d0e56              ## double 3.742
LCPI10_2:
	.quad	0x3ffbb645a1cac083              ## double 1.732
LCPI10_3:
	.quad	0x4018000000000000              ## double 6
LCPI10_4:
	.quad	0xbff0000000000000              ## double -1
LCPI10_5:
	.quad	0x4000000000000000              ## double 2
LCPI10_6:
	.quad	0x3fd8ce63a5c1c609              ## double 0.38759700000000002
	.section	__TEXT,__text,regular,pure_instructions
	.p2align	4, 0x90
_test:                                  ## @test
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$96, %rsp
	movq	l___const.test.a(%rip), %rax
	movq	%rax, -24(%rbp)
	movq	l___const.test.a+8(%rip), %rax
	movq	%rax, -16(%rbp)
	movq	l___const.test.a+16(%rip), %rax
	movq	%rax, -8(%rbp)
	movq	l___const.test.b(%rip), %rax
	movq	%rax, -48(%rbp)
	movq	l___const.test.b+8(%rip), %rax
	movq	%rax, -40(%rbp)
	movq	l___const.test.b+16(%rip), %rax
	movq	%rax, -32(%rbp)
	leaq	-24(%rbp), %rdi
	leaq	L_.str.2(%rip), %rsi
	callq	_print_vector
	movq	%rax, %rsi
	leaq	L_.str.1(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	leaq	-48(%rbp), %rdi
	leaq	L_.str.3(%rip), %rsi
	callq	_print_vector
	movq	%rax, %rsi
	leaq	L_.str.1(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	leaq	-24(%rbp), %rdi
	callq	_vector_norm
	movsd	%xmm0, -56(%rbp)
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	leaq	L_.str.4(%rip), %rdi
	movb	$1, %al
	callq	_libmin_printf
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_1(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_2
## %bb.1:
	jmp	LBB10_3
LBB10_2:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_3:
	leaq	-48(%rbp), %rdi
	callq	_vector_norm
	movsd	%xmm0, -56(%rbp)
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	leaq	L_.str.5(%rip), %rdi
	movb	$1, %al
	callq	_libmin_printf
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_2(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_5
## %bb.4:
	jmp	LBB10_6
LBB10_5:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_6:
	leaq	-24(%rbp), %rdi
	leaq	-48(%rbp), %rsi
	callq	_dot_prod
	movsd	%xmm0, -56(%rbp)
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	leaq	L_.str.6(%rip), %rdi
	movb	$1, %al
	callq	_libmin_printf
	movsd	-56(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_3(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_8
## %bb.7:
	jmp	LBB10_9
LBB10_8:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_9:
	leaq	-80(%rbp), %rdi
	leaq	-24(%rbp), %rsi
	leaq	-48(%rbp), %rdx
	callq	_vector_prod
	leaq	L_.str.7(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	leaq	-80(%rbp), %rdi
	leaq	L_.str.8(%rip), %rsi
	callq	_print_vector
	movq	%rax, %rsi
	leaq	L_.str.1(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	movsd	-80(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_4(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_11
## %bb.10:
	jmp	LBB10_12
LBB10_11:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_12:
	movsd	-72(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_5(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_14
## %bb.13:
	jmp	LBB10_15
LBB10_14:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_15:
	movsd	-64(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_4(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_17
## %bb.16:
	jmp	LBB10_18
LBB10_17:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_18:
	leaq	-24(%rbp), %rdi
	leaq	-48(%rbp), %rsi
	callq	_get_angle
	movsd	%xmm0, -88(%rbp)
	movsd	-88(%rbp), %xmm0                ## xmm0 = mem[0],zero
	leaq	L_.str.9(%rip), %rdi
	movb	$1, %al
	callq	_libmin_printf
	movsd	-88(%rbp), %xmm0                ## xmm0 = mem[0],zero
	movsd	LCPI10_6(%rip), %xmm1           ## xmm1 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_libmin_fabs
	movaps	%xmm0, %xmm1
	movsd	LCPI10_0(%rip), %xmm0           ## xmm0 = mem[0],zero
	ucomisd	%xmm1, %xmm0
	jbe	LBB10_20
## %bb.19:
	jmp	LBB10_21
LBB10_20:
	movl	$1, %edi
	callq	_libmin_fail
LBB10_21:
	leaq	L_.str.10(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	addq	$96, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
.zerofill __DATA,__bss,_print_vector.vec_str,100,4 ## @print_vector.vec_str
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"vec(%s) = (%.0lf)i + (%.0lf)j + (%.0lf)k\n"

	.section	__TEXT,__const
	.p2align	3                               ## @__const.test.a
l___const.test.a:
	.quad	0x3ff0000000000000              ## double 1
	.quad	0x4000000000000000              ## double 2
	.quad	0x4008000000000000              ## double 3

	.p2align	3                               ## @__const.test.b
l___const.test.b:
	.quad	0x3ff0000000000000              ## double 1
	.quad	0x3ff0000000000000              ## double 1
	.quad	0x3ff0000000000000              ## double 1

	.section	__TEXT,__cstring,cstring_literals
L_.str.1:                               ## @.str.1
	.asciz	"%s"

L_.str.2:                               ## @.str.2
	.asciz	"a"

L_.str.3:                               ## @.str.3
	.asciz	"b"

L_.str.4:                               ## @.str.4
	.asciz	"|a| = %.4lf\n"

L_.str.5:                               ## @.str.5
	.asciz	"|b| = %.4lf\n"

L_.str.6:                               ## @.str.6
	.asciz	"Dot product: %lf\n"

L_.str.7:                               ## @.str.7
	.asciz	"Vector product "

L_.str.8:                               ## @.str.8
	.asciz	"c"

L_.str.9:                               ## @.str.9
	.asciz	"The angle is %lf\n"

L_.str.10:                              ## @.str.10
	.asciz	"All tests passed!\n"

.subsections_via_symbols


ARM64 assembly:
	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_vector_sub                     ; -- Begin function vector_sub
	.p2align	2
_vector_sub:                            ; @vector_sub
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #48
	.cfi_def_cfa_offset 48
	str	x0, [sp, #16]
	str	x1, [sp, #8]
	ldr	x8, [sp, #16]
	ldr	d0, [x8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8]
	fsub	d0, d0, d1
	str	d0, [sp, #24]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #8]
	fsub	d0, d0, d1
	str	d0, [sp, #32]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #16]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #16]
	fsub	d0, d0, d1
	str	d0, [sp, #40]
	ldr	d0, [sp, #24]
	ldr	d1, [sp, #32]
	ldr	d2, [sp, #40]
	add	sp, sp, #48
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_vector_add                     ; -- Begin function vector_add
	.p2align	2
_vector_add:                            ; @vector_add
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #48
	.cfi_def_cfa_offset 48
	str	x0, [sp, #16]
	str	x1, [sp, #8]
	ldr	x8, [sp, #16]
	ldr	d0, [x8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8]
	fadd	d0, d0, d1
	str	d0, [sp, #24]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #8]
	fadd	d0, d0, d1
	str	d0, [sp, #32]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #16]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #16]
	fadd	d0, d0, d1
	str	d0, [sp, #40]
	ldr	d0, [sp, #24]
	ldr	d1, [sp, #32]
	ldr	d2, [sp, #40]
	add	sp, sp, #48
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_dot_prod                       ; -- Begin function dot_prod
	.p2align	2
_dot_prod:                              ; @dot_prod
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	str	x0, [sp, #24]
	str	x1, [sp, #16]
	ldr	x8, [sp, #24]
	ldr	d0, [x8]
	ldr	x8, [sp, #16]
	ldr	d1, [x8]
	fmul	d0, d0, d1
	str	d0, [sp, #8]
	ldr	x8, [sp, #24]
	ldr	d0, [x8, #8]
	ldr	x8, [sp, #16]
	ldr	d1, [x8, #8]
	ldr	d2, [sp, #8]
	fmadd	d0, d0, d1, d2
	str	d0, [sp, #8]
	ldr	x8, [sp, #24]
	ldr	d0, [x8, #16]
	ldr	x8, [sp, #16]
	ldr	d1, [x8, #16]
	ldr	d2, [sp, #8]
	fmadd	d0, d0, d1, d2
	str	d0, [sp, #8]
	ldr	d0, [sp, #8]
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_vector_prod                    ; -- Begin function vector_prod
	.p2align	2
_vector_prod:                           ; @vector_prod
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #48
	.cfi_def_cfa_offset 48
	str	x0, [sp, #16]
	str	x1, [sp, #8]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #16]
	ldr	x8, [sp, #16]
	ldr	d2, [x8, #16]
	ldr	x8, [sp, #8]
	ldr	d3, [x8, #8]
	fmul	d2, d2, d3
	fnmsub	d0, d0, d1, d2
	str	d0, [sp, #24]
	ldr	x8, [sp, #16]
	ldr	d0, [x8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #16]
	ldr	x8, [sp, #16]
	ldr	d2, [x8, #16]
	ldr	x8, [sp, #8]
	ldr	d3, [x8]
	fmul	d2, d2, d3
	fmsub	d0, d0, d1, d2
	str	d0, [sp, #32]
	ldr	x8, [sp, #16]
	ldr	d0, [x8]
	ldr	x8, [sp, #8]
	ldr	d1, [x8, #8]
	ldr	x8, [sp, #16]
	ldr	d2, [x8, #8]
	ldr	x8, [sp, #8]
	ldr	d3, [x8]
	fmul	d2, d2, d3
	fnmsub	d0, d0, d1, d2
	str	d0, [sp, #40]
	ldr	d0, [sp, #24]
	ldr	d1, [sp, #32]
	ldr	d2, [sp, #40]
	add	sp, sp, #48
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_print_vector                   ; -- Begin function print_vector
	.p2align	2
_print_vector:                          ; @print_vector
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #80
	.cfi_def_cfa_offset 80
	stp	x29, x30, [sp, #64]             ; 16-byte Folded Spill
	add	x29, sp, #64
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	x0, [x29, #-8]
	stur	x1, [x29, #-16]
	ldur	x9, [x29, #-16]
	ldur	x8, [x29, #-8]
	ldr	d2, [x8]
	ldur	x8, [x29, #-8]
	ldr	d1, [x8, #8]
	ldur	x8, [x29, #-8]
	ldr	d0, [x8, #16]
	mov	x8, sp
	str	x9, [x8]
	str	d2, [x8, #8]
	str	d1, [x8, #16]
	str	d0, [x8, #24]
	adrp	x0, _print_vector.vec_str@PAGE
	add	x0, x0, _print_vector.vec_str@PAGEOFF
	stur	x0, [x29, #-24]                 ; 8-byte Folded Spill
	mov	x1, #99
	adrp	x2, l_.str@PAGE
	add	x2, x2, l_.str@PAGEOFF
	bl	_libmin_snprintf
	ldur	x0, [x29, #-24]                 ; 8-byte Folded Reload
	ldp	x29, x30, [sp, #64]             ; 16-byte Folded Reload
	add	sp, sp, #80
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_vector_norm                    ; -- Begin function vector_norm
	.p2align	2
_vector_norm:                           ; @vector_norm
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	str	x0, [sp, #8]
	ldr	x0, [sp, #8]
	ldr	x1, [sp, #8]
	bl	_dot_prod
	str	d0, [sp]
	ldr	d0, [sp]
	bl	_libmin_sqrt
	str	d0, [sp]
	ldr	d0, [sp]
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ; -- Begin function unit_vec
lCPI6_0:
	.quad	0x3e112e0be826d695              ; double 1.0000000000000001E-9
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_unit_vec
	.p2align	2
_unit_vec:                              ; @unit_vec
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #64
	.cfi_def_cfa_offset 64
	stp	x29, x30, [sp, #48]             ; 16-byte Folded Spill
	add	x29, sp, #48
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	str	x0, [sp, #16]
	str	xzr, [sp, #24]
	str	xzr, [sp, #32]
	str	xzr, [sp, #40]
	ldr	x0, [sp, #16]
	bl	_vector_norm
	str	d0, [sp, #8]
	ldr	d0, [sp, #8]
	bl	_libmin_fabs
	adrp	x8, lCPI6_0@PAGE
	ldr	d1, [x8, lCPI6_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB6_2
	b	LBB6_1
LBB6_1:
	b	LBB6_5
LBB6_2:
	ldr	d0, [sp, #8]
	fmov	d1, #1.00000000
	fcmp	d0, d1
	cset	w8, eq
	tbnz	w8, #0, LBB6_4
	b	LBB6_3
LBB6_3:
	ldr	x8, [sp, #16]
	ldr	d0, [x8]
	ldr	d1, [sp, #8]
	fdiv	d0, d0, d1
	str	d0, [sp, #24]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #8]
	ldr	d1, [sp, #8]
	fdiv	d0, d0, d1
	str	d0, [sp, #32]
	ldr	x8, [sp, #16]
	ldr	d0, [x8, #16]
	ldr	d1, [sp, #8]
	fdiv	d0, d0, d1
	str	d0, [sp, #40]
	b	LBB6_4
LBB6_4:
	b	LBB6_5
LBB6_5:
	ldr	d0, [sp, #24]
	ldr	d1, [sp, #32]
	ldr	d2, [sp, #40]
	ldp	x29, x30, [sp, #48]             ; 16-byte Folded Reload
	add	sp, sp, #64
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_get_cross_matrix               ; -- Begin function get_cross_matrix
	.p2align	2
_get_cross_matrix:                      ; @get_cross_matrix
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	x0, [sp, #8]
	movi	d0, #0000000000000000
	str	d0, [x8]
	ldr	x9, [sp, #8]
	ldr	d1, [x9, #16]
	fneg	d1, d1
	str	d1, [x8, #8]
	ldr	x9, [sp, #8]
	ldr	d1, [x9, #8]
	str	d1, [x8, #16]
	ldr	x9, [sp, #8]
	ldr	d1, [x9, #16]
	str	d1, [x8, #24]
	str	d0, [x8, #32]
	ldr	x9, [sp, #8]
	ldr	d1, [x9]
	fneg	d1, d1
	str	d1, [x8, #40]
	ldr	x9, [sp, #8]
	ldr	d1, [x9, #8]
	fneg	d1, d1
	str	d1, [x8, #48]
	ldr	x9, [sp, #8]
	ldr	d1, [x9]
	str	d1, [x8, #56]
	str	d0, [x8, #64]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ; -- Begin function get_angle
lCPI8_0:
	.quad	0x7ff8000000000000              ; double NaN
lCPI8_1:
	.quad	0x3e112e0be826d695              ; double 1.0000000000000001E-9
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_get_angle
	.p2align	2
_get_angle:                             ; @get_angle
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #80
	.cfi_def_cfa_offset 80
	stp	x29, x30, [sp, #64]             ; 16-byte Folded Spill
	add	x29, sp, #64
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	x0, [x29, #-16]
	stur	x1, [x29, #-24]
	ldur	x0, [x29, #-16]
	bl	_vector_norm
	str	d0, [sp, #16]
	ldur	x0, [x29, #-24]
	bl	_vector_norm
	str	d0, [sp, #8]
	ldr	d0, [sp, #16]
	bl	_libmin_fabs
	adrp	x8, lCPI8_1@PAGE
	ldr	d1, [x8, lCPI8_1@PAGEOFF]
	fcmp	d0, d1
	cset	w8, mi
	tbnz	w8, #0, LBB8_2
	b	LBB8_1
LBB8_1:
	ldr	d0, [sp, #8]
	bl	_libmin_fabs
	adrp	x8, lCPI8_1@PAGE
	ldr	d1, [x8, lCPI8_1@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB8_3
	b	LBB8_2
LBB8_2:
	adrp	x8, lCPI8_0@PAGE
	ldr	d0, [x8, lCPI8_0@PAGEOFF]
	stur	d0, [x29, #-8]
	b	LBB8_4
LBB8_3:
	ldur	x0, [x29, #-16]
	ldur	x1, [x29, #-24]
	bl	_dot_prod
	ldr	d1, [sp, #16]
	ldr	d2, [sp, #8]
	fmul	d1, d1, d2
	fdiv	d0, d0, d1
	str	d0, [sp, #24]
	ldr	d0, [sp, #24]
	bl	_libmin_acos
	str	d0, [sp, #32]
	ldr	d0, [sp, #32]
	stur	d0, [x29, #-8]
	b	LBB8_4
LBB8_4:
	ldur	d0, [x29, #-8]
	ldp	x29, x30, [sp, #64]             ; 16-byte Folded Reload
	add	sp, sp, #80
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_main                           ; -- Begin function main
	.p2align	2
_main:                                  ; @main
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	mov	w8, #0
	str	w8, [sp, #8]                    ; 4-byte Folded Spill
	stur	wzr, [x29, #-4]
	bl	_test
	bl	_libmin_success
	ldr	w0, [sp, #8]                    ; 4-byte Folded Reload
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ; -- Begin function test
lCPI10_0:
	.quad	0x3f847ae147ae147b              ; double 0.01
lCPI10_1:
	.quad	0x3fd8ce63a5c1c609              ; double 0.38759700000000002
lCPI10_2:
	.quad	0x3ffbb645a1cac083              ; double 1.732
lCPI10_3:
	.quad	0x400def9db22d0e56              ; double 3.742
	.section	__TEXT,__text,regular,pure_instructions
	.p2align	2
_test:                                  ; @test
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #160
	.cfi_def_cfa_offset 160
	stp	x29, x30, [sp, #144]            ; 16-byte Folded Spill
	add	x29, sp, #144
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	adrp	x8, l___const.test.a@PAGE
	add	x8, x8, l___const.test.a@PAGEOFF
	ldr	q0, [x8]
	sub	x0, x29, #32
	str	x0, [sp, #32]                   ; 8-byte Folded Spill
	stur	q0, [x29, #-32]
	ldr	x8, [x8, #16]
	stur	x8, [x29, #-16]
	adrp	x8, l___const.test.b@PAGE
	add	x8, x8, l___const.test.b@PAGEOFF
	ldr	q0, [x8]
	sub	x9, x29, #64
	str	x9, [sp, #16]                   ; 8-byte Folded Spill
	stur	q0, [x29, #-64]
	ldr	x8, [x8, #16]
	stur	x8, [x29, #-48]
	adrp	x1, l_.str.2@PAGE
	add	x1, x1, l_.str.2@PAGEOFF
	bl	_print_vector
	mov	x8, sp
	str	x0, [x8]
	adrp	x0, l_.str.1@PAGE
	add	x0, x0, l_.str.1@PAGEOFF
	str	x0, [sp, #24]                   ; 8-byte Folded Spill
	bl	_libmin_printf
	ldr	x0, [sp, #16]                   ; 8-byte Folded Reload
	adrp	x1, l_.str.3@PAGE
	add	x1, x1, l_.str.3@PAGEOFF
	bl	_print_vector
	mov	x8, x0
	ldr	x0, [sp, #24]                   ; 8-byte Folded Reload
	mov	x9, sp
	str	x8, [x9]
	bl	_libmin_printf
	ldr	x0, [sp, #32]                   ; 8-byte Folded Reload
	bl	_vector_norm
	str	d0, [sp, #72]
	ldr	d0, [sp, #72]
	mov	x8, sp
	str	d0, [x8]
	adrp	x0, l_.str.4@PAGE
	add	x0, x0, l_.str.4@PAGEOFF
	bl	_libmin_printf
	ldr	d0, [sp, #72]
	adrp	x8, lCPI10_3@PAGE
	ldr	d1, [x8, lCPI10_3@PAGEOFF]
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_2
	b	LBB10_1
LBB10_1:
	b	LBB10_3
LBB10_2:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_3
LBB10_3:
	sub	x0, x29, #64
	bl	_vector_norm
	str	d0, [sp, #72]
	ldr	d0, [sp, #72]
	mov	x8, sp
	str	d0, [x8]
	adrp	x0, l_.str.5@PAGE
	add	x0, x0, l_.str.5@PAGEOFF
	bl	_libmin_printf
	ldr	d0, [sp, #72]
	adrp	x8, lCPI10_2@PAGE
	ldr	d1, [x8, lCPI10_2@PAGEOFF]
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_5
	b	LBB10_4
LBB10_4:
	b	LBB10_6
LBB10_5:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_6
LBB10_6:
	sub	x0, x29, #32
	sub	x1, x29, #64
	bl	_dot_prod
	str	d0, [sp, #72]
	ldr	d0, [sp, #72]
	mov	x8, sp
	str	d0, [x8]
	adrp	x0, l_.str.6@PAGE
	add	x0, x0, l_.str.6@PAGEOFF
	bl	_libmin_printf
	ldr	d0, [sp, #72]
	fmov	d1, #6.00000000
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_8
	b	LBB10_7
LBB10_7:
	b	LBB10_9
LBB10_8:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_9
LBB10_9:
	sub	x0, x29, #32
	sub	x1, x29, #64
	bl	_vector_prod
	add	x8, sp, #48
	str	x8, [sp, #8]                    ; 8-byte Folded Spill
	str	d0, [sp, #48]
	str	d1, [sp, #56]
	str	d2, [sp, #64]
	adrp	x0, l_.str.7@PAGE
	add	x0, x0, l_.str.7@PAGEOFF
	bl	_libmin_printf
	ldr	x0, [sp, #8]                    ; 8-byte Folded Reload
	adrp	x1, l_.str.8@PAGE
	add	x1, x1, l_.str.8@PAGEOFF
	bl	_print_vector
	mov	x8, sp
	str	x0, [x8]
	adrp	x0, l_.str.1@PAGE
	add	x0, x0, l_.str.1@PAGEOFF
	bl	_libmin_printf
	ldr	d0, [sp, #48]
	fmov	d1, #-1.00000000
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_11
	b	LBB10_10
LBB10_10:
	b	LBB10_12
LBB10_11:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_12
LBB10_12:
	ldr	d0, [sp, #56]
	fmov	d1, #2.00000000
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_14
	b	LBB10_13
LBB10_13:
	b	LBB10_15
LBB10_14:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_15
LBB10_15:
	ldr	d0, [sp, #64]
	fmov	d1, #-1.00000000
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_17
	b	LBB10_16
LBB10_16:
	b	LBB10_18
LBB10_17:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_18
LBB10_18:
	sub	x0, x29, #32
	sub	x1, x29, #64
	bl	_get_angle
	str	d0, [sp, #40]
	ldr	d0, [sp, #40]
	mov	x8, sp
	str	d0, [x8]
	adrp	x0, l_.str.9@PAGE
	add	x0, x0, l_.str.9@PAGEOFF
	bl	_libmin_printf
	ldr	d0, [sp, #40]
	adrp	x8, lCPI10_1@PAGE
	ldr	d1, [x8, lCPI10_1@PAGEOFF]
	fsub	d0, d0, d1
	bl	_libmin_fabs
	adrp	x8, lCPI10_0@PAGE
	ldr	d1, [x8, lCPI10_0@PAGEOFF]
	fcmp	d0, d1
	cset	w8, pl
	tbnz	w8, #0, LBB10_20
	b	LBB10_19
LBB10_19:
	b	LBB10_21
LBB10_20:
	mov	w0, #1
	bl	_libmin_fail
	b	LBB10_21
LBB10_21:
	adrp	x0, l_.str.10@PAGE
	add	x0, x0, l_.str.10@PAGEOFF
	bl	_libmin_printf
	ldp	x29, x30, [sp, #144]            ; 16-byte Folded Reload
	add	sp, sp, #160
	ret
	.cfi_endproc
                                        ; -- End function
.zerofill __DATA,__bss,_print_vector.vec_str,100,0 ; @print_vector.vec_str
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"vec(%s) = (%.0lf)i + (%.0lf)j + (%.0lf)k\n"

	.section	__TEXT,__const
	.p2align	3                               ; @__const.test.a
l___const.test.a:
	.quad	0x3ff0000000000000              ; double 1
	.quad	0x4000000000000000              ; double 2
	.quad	0x4008000000000000              ; double 3

	.p2align	3                               ; @__const.test.b
l___const.test.b:
	.quad	0x3ff0000000000000              ; double 1
	.quad	0x3ff0000000000000              ; double 1
	.quad	0x3ff0000000000000              ; double 1

	.section	__TEXT,__cstring,cstring_literals
l_.str.1:                               ; @.str.1
	.asciz	"%s"

l_.str.2:                               ; @.str.2
	.asciz	"a"

l_.str.3:                               ; @.str.3
	.asciz	"b"

l_.str.4:                               ; @.str.4
	.asciz	"|a| = %.4lf\n"

l_.str.5:                               ; @.str.5
	.asciz	"|b| = %.4lf\n"

l_.str.6:                               ; @.str.6
	.asciz	"Dot product: %lf\n"

l_.str.7:                               ; @.str.7
	.asciz	"Vector product "

l_.str.8:                               ; @.str.8
	.asciz	"c"

l_.str.9:                               ; @.str.9
	.asciz	"The angle is %lf\n"

l_.str.10:                              ; @.str.10
	.asciz	"All tests passed!\n"

.subsections_via_symbols