	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.section	__TEXT,__literal16,16byte_literals
	.p2align	4                               ## -- Begin function multiply
LCPI0_0:
	.quad	0x8000000000000000              ## double -0
	.quad	0x8000000000000000              ## double -0
	.section	__TEXT,__text,regular,pure_instructions
	.p2align	4, 0x90
_multiply:                              ## @multiply
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
                                        ## kill: def $edi killed $edi def $rdi
	movapd	LCPI0_0(%rip), %xmm10           ## xmm10 = [-0.0E+0,-0.0E+0]
	xorpd	%xmm10, %xmm0
	xorpd	%xmm1, %xmm10
	testl	%edi, %edi
	jle	LBB0_5
## %bb.1:
	movl	%edi, %r8d
	cmpl	$1, %edi
	jne	LBB0_6
LBB0_2:
	movq	%r8, %rax
LBB0_3:
	leal	(%rax,%rax), %ecx
	incq	%rax
	.p2align	4, 0x90
LBB0_4:                                 ## =>This Inner Loop Header: Depth=1
	movslq	%ecx, %rdx
	movsd	(%rsi,%rdx,8), %xmm2            ## xmm2 = mem[0],zero
	leal	1(%rdx), %ecx
	movslq	%ecx, %rdi
	movsd	(%rsi,%rdi,8), %xmm3            ## xmm3 = mem[0],zero
	movapd	%xmm3, %xmm4
	mulsd	%xmm1, %xmm4
	movapd	%xmm0, %xmm5
	mulsd	%xmm2, %xmm5
	addsd	%xmm4, %xmm5
	leal	-2(%rdx), %ecx
	movslq	%ecx, %rbx
	addsd	(%rsi,%rbx,8), %xmm5
	movsd	%xmm5, (%rsi,%rdx,8)
	mulsd	%xmm10, %xmm2
	mulsd	%xmm0, %xmm3
	addsd	%xmm2, %xmm3
	decl	%edx
	movslq	%edx, %rdx
	addsd	(%rsi,%rdx,8), %xmm3
	movsd	%xmm3, (%rsi,%rdi,8)
	decq	%rax
	cmpq	$1, %rax
	ja	LBB0_4
LBB0_5:
	movupd	(%rsi), %xmm2
	unpcklpd	%xmm10, %xmm1                   ## xmm1 = xmm1[0],xmm10[0]
	movddup	%xmm0, %xmm0                    ## xmm0 = xmm0[0,0]
	mulpd	%xmm2, %xmm0
	shufpd	$1, %xmm2, %xmm2                ## xmm2 = xmm2[1,0]
	mulpd	%xmm1, %xmm2
	addpd	%xmm2, %xmm0
	movupd	%xmm0, (%rsi)
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB0_6:
	leaq	-1(%r8), %r9
	leal	(%rdi,%rdi), %ecx
	movl	%r9d, %r11d
	addl	%r9d, %r11d
	setb	%r10b
	movl	%ecx, %ebx
	subl	%r11d, %ebx
	movl	$16, %edx
	movq	%r9, %rax
	mulq	%rdx
	seto	%r14b
	cmpl	%ecx, %ebx
	jg	LBB0_2
## %bb.7:
	testb	%r10b, %r10b
	jne	LBB0_2
## %bb.8:
	shrq	$32, %r9
	jne	LBB0_2
## %bb.9:
	leal	(%rdi,%rdi), %edx
	incl	%edx
	movl	%edx, %ebx
	subl	%r11d, %ebx
	cmpl	%edx, %ebx
	jg	LBB0_2
## %bb.10:
	testb	%r10b, %r10b
	jne	LBB0_2
## %bb.11:
	testq	%r9, %r9
	jne	LBB0_2
## %bb.12:
	leal	(%rdi,%rdi), %r15d
	addl	$-2, %r15d
	movl	%r15d, %ebx
	subl	%r11d, %ebx
	cmpl	%r15d, %ebx
	jg	LBB0_2
## %bb.13:
	testb	%r10b, %r10b
	jne	LBB0_2
## %bb.14:
	testq	%r9, %r9
	jne	LBB0_2
## %bb.15:
	leal	(%rdi,%rdi), %edx
	decl	%edx
	movl	%edx, %ebx
	subl	%r11d, %ebx
	cmpl	%edx, %ebx
	jg	LBB0_2
## %bb.16:
	testb	%r10b, %r10b
	jne	LBB0_2
## %bb.17:
	testq	%r9, %r9
	jne	LBB0_2
## %bb.18:
	movslq	%r15d, %r9
	leaq	(%rsi,%r9,8), %rdx
	addq	$8, %rdx
	movq	%rdx, %rbx
	subq	%rax, %rbx
	cmpq	%rdx, %rbx
	ja	LBB0_2
## %bb.19:
	testb	%r14b, %r14b
	jne	LBB0_2
## %bb.20:
	movslq	%ecx, %r10
	leaq	(%rsi,%r10,8), %rbx
	addq	$8, %rbx
	movq	%rbx, %rdx
	subq	%rax, %rdx
	cmpq	%rbx, %rdx
	ja	LBB0_2
## %bb.21:
	testb	%r14b, %r14b
	jne	LBB0_2
## %bb.22:
	leaq	(%rsi,%r10,8), %rbx
	movq	%rbx, %rdx
	subq	%rax, %rdx
	cmpq	%rbx, %rdx
	ja	LBB0_2
## %bb.23:
	testb	%r14b, %r14b
	jne	LBB0_2
## %bb.24:
	leaq	(%rsi,%r9,8), %rbx
	movq	%rbx, %rdx
	subq	%rax, %rdx
	cmpq	%rbx, %rdx
	ja	LBB0_2
## %bb.25:
	testb	%r14b, %r14b
	jne	LBB0_2
## %bb.26:
	leal	(%rdi,%rdi), %eax
	movslq	%eax, %rdx
	leaq	2(%rdx), %rax
	movq	%r8, -56(%rbp)                  ## 8-byte Spill
	leaq	(%r8,%r8), %rbx
	subq	%rbx, %rax
	leaq	(%rsi,%rax,8), %rax
	leaq	(%rsi,%rdx,8), %r9
	addq	$8, %r9
	leaq	(%rsi,%rdx,8), %r15
	addq	$16, %r15
	subq	%rbx, %rdx
	leaq	(%rsi,%rdx,8), %r12
	addq	$24, %r12
	addl	%edi, %edi
	addl	$-2, %edi
	movslq	%edi, %rdi
	leaq	2(%rdi), %rdx
	subq	%rbx, %rdx
	leaq	(%rsi,%rdx,8), %r14
	leaq	(%rsi,%rdi,8), %rdx
	addq	$8, %rdx
	leaq	(%rsi,%rdi,8), %r13
	addq	$16, %r13
	subq	%rbx, %rdi
	leaq	(%rsi,%rdi,8), %r8
	addq	$24, %r8
	cmpq	%r15, %rax
	setb	-41(%rbp)                       ## 1-byte Folded Spill
	cmpq	%r9, %r12
	setb	%r11b
	cmpq	%rdx, %rax
	setb	%bl
	cmpq	%r9, %r14
	setb	%r10b
	cmpq	%r13, %rax
	setb	%dil
	cmpq	%r9, %r8
	setb	%al
	cmpq	%rdx, %r12
	setb	%r9b
	cmpq	%r15, %r14
	setb	%r14b
	cmpq	%r13, %r12
	setb	%dl
	cmpq	%r15, %r8
	setb	%r8b
	testb	%r11b, -41(%rbp)                ## 1-byte Folded Reload
	jne	LBB0_45
## %bb.27:
	andb	%r10b, %bl
	jne	LBB0_45
## %bb.28:
	andb	%al, %dil
	jne	LBB0_45
## %bb.29:
	andb	%r14b, %r9b
	jne	LBB0_45
## %bb.30:
	andb	%r8b, %dl
	jne	LBB0_45
## %bb.31:
	movq	-56(%rbp), %r8                  ## 8-byte Reload
	movl	%r8d, %r9d
	andl	$-2, %r9d
	movl	%r8d, %eax
	andl	$1, %eax
	movddup	%xmm1, %xmm8                    ## xmm8 = xmm1[0,0]
	movddup	%xmm0, %xmm11                   ## xmm11 = xmm0[0,0]
	movddup	%xmm10, %xmm9                   ## xmm9 = xmm10[0,0]
	movq	%r9, %rdi
	.p2align	4, 0x90
LBB0_32:                                ## =>This Inner Loop Header: Depth=1
	movslq	%ecx, %rcx
	movupd	-16(%rsi,%rcx,8), %xmm7
	movupd	(%rsi,%rcx,8), %xmm3
	movapd	%xmm3, %xmm6
	unpcklpd	%xmm7, %xmm6                    ## xmm6 = xmm6[0],xmm7[0]
	unpckhpd	%xmm7, %xmm3                    ## xmm3 = xmm3[1],xmm7[1]
	leal	1(%rcx), %edx
	movslq	%edx, %rdx
	movapd	%xmm11, %xmm7
	mulpd	%xmm3, %xmm7
	mulpd	%xmm8, %xmm3
	movapd	%xmm11, %xmm4
	mulpd	%xmm6, %xmm4
	addpd	%xmm3, %xmm4
	leal	-2(%rcx), %ebx
	movslq	%ebx, %rbx
	movupd	-16(%rsi,%rbx,8), %xmm3
	movupd	(%rsi,%rbx,8), %xmm2
	movapd	%xmm3, %xmm5
	unpcklpd	%xmm2, %xmm5                    ## xmm5 = xmm5[0],xmm2[0]
	unpckhpd	%xmm2, %xmm3                    ## xmm3 = xmm3[1],xmm2[1]
	mulpd	%xmm9, %xmm6
	addpd	%xmm7, %xmm6
	shufpd	$1, %xmm4, %xmm4                ## xmm4 = xmm4[1,0]
	addpd	%xmm5, %xmm4
	shufpd	$1, %xmm6, %xmm6                ## xmm6 = xmm6[1,0]
	addpd	%xmm3, %xmm6
	movapd	%xmm4, %xmm2
	unpcklpd	%xmm6, %xmm2                    ## xmm2 = xmm2[0],xmm6[0]
	movhlps	%xmm4, %xmm6                    ## xmm6 = xmm4[1],xmm6[1]
	movups	%xmm6, -8(%rsi,%rdx,8)
	movupd	%xmm2, -24(%rsi,%rdx,8)
	addl	$-4, %ecx
	addq	$-2, %rdi
	jne	LBB0_32
## %bb.33:
	cmpq	%r8, %r9
	jne	LBB0_3
	jmp	LBB0_5
LBB0_45:
	movq	-56(%rbp), %rax                 ## 8-byte Reload
	jmp	LBB0_3
	.cfi_endproc
                                        ## -- End function
	.no_dead_strip	_multiply
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function multiply
_multiply:                              ; @multiply
	.cfi_startproc
; %bb.0:
                                        ; kill: def $d1 killed $d1 def $q1
	fneg	d0, d0
	fneg	d2, d1
	cmp	w0, #1
	b.lt	LBB0_5
; %bb.1:
	mov	w8, w0
	b.ne	LBB0_6
LBB0_2:
	mov	x10, x8
LBB0_3:
	lsl	w9, w10, #1
	add	x8, x10, #1
LBB0_4:                                 ; =>This Inner Loop Header: Depth=1
	sbfiz	x10, x9, #3, #32
	ldr	d3, [x1, x10]
	add	w11, w9, #1
	sbfiz	x11, x11, #3, #32
	ldr	d4, [x1, x11]
	fmul	d5, d4, d1
	fmadd	d5, d0, d3, d5
	sub	w12, w9, #1
	sub	w9, w9, #2
	ldr	d6, [x1, w9, sxtw #3]
	fadd	d5, d6, d5
	str	d5, [x1, x10]
	fmul	d3, d3, d2
	fmadd	d3, d0, d4, d3
	ldr	d4, [x1, w12, sxtw #3]
	fadd	d3, d3, d4
	str	d3, [x1, x11]
	sub	x8, x8, #1
                                        ; kill: def $w9 killed $w9 def $x9
	cmp	x8, #1
	b.hi	LBB0_4
LBB0_5:
	ldp	d3, d4, [x1]
	fmul	d1, d4, d1
	fmadd	d1, d0, d3, d1
	str	d1, [x1]
	fmul	d1, d3, d2
	fmadd	d0, d0, d4, d1
	str	d0, [x1, #8]
	ret
LBB0_6:
	sub	x12, x8, #1
	lsl	w9, w0, #1
	adds	w14, w12, w12
	sub	w11, w9, w14
	cset	w13, hs
	cmp	xzr, x12, lsr #60
	cset	w10, ne
	cmp	w11, w9
	b.gt	LBB0_2
; %bb.7:
	tbnz	w13, #0, LBB0_2
; %bb.8:
	lsr	x15, x12, #32
	cbnz	x15, LBB0_2
; %bb.9:
	mov	w11, #1
	bfi	w11, w0, #1, #31
	sub	w16, w11, w14
	cmp	w16, w11
	b.gt	LBB0_2
; %bb.10:
	tbnz	w13, #0, LBB0_2
; %bb.11:
	cbnz	x15, LBB0_2
; %bb.12:
	sub	w11, w9, #2
	sub	w16, w11, w14
	cmp	w16, w11
	b.gt	LBB0_2
; %bb.13:
	tbnz	w13, #0, LBB0_2
; %bb.14:
	cbnz	x15, LBB0_2
; %bb.15:
	sub	w16, w9, #1
	sub	w14, w16, w14
	cmp	w14, w16
	b.gt	LBB0_2
; %bb.16:
	tbnz	w13, #0, LBB0_2
; %bb.17:
	cbnz	x15, LBB0_2
; %bb.18:
	add	x13, x1, w11, sxtw #3
	add	x15, x13, #8
	lsl	x14, x12, #4
	sub	x12, x15, x14
	cmp	x12, x15
	b.hi	LBB0_2
; %bb.19:
	tbnz	w10, #0, LBB0_2
; %bb.20:
	add	x12, x1, w9, sxtw #3
	add	x15, x12, #8
	sub	x16, x15, x14
	cmp	x16, x15
	b.hi	LBB0_2
; %bb.21:
	tbnz	w10, #0, LBB0_2
; %bb.22:
	sub	x15, x12, x14
	cmp	x15, x12
	b.hi	LBB0_2
; %bb.23:
	tbnz	w10, #0, LBB0_2
; %bb.24:
	sub	x14, x13, x14
	cmp	x14, x13
	b.hi	LBB0_2
; %bb.25:
	tbnz	w10, #0, LBB0_2
; %bb.26:
	sxtw	x10, w9
	add	x14, x10, #2
	lsl	x15, x8, #1
	sub	x16, x14, x15
	add	x16, x1, x16, lsl #3
	add	x17, x12, #8
	sub	x10, x10, x15
	add	x10, x1, x10, lsl #3
	add	x0, x10, #24
	add	x14, x1, x14, lsl #3
	sxtw	x10, w11
	add	x11, x10, #2
	sub	x12, x11, x15
	add	x12, x1, x12, lsl #3
	add	x13, x13, #8
	sub	x10, x10, x15
	add	x10, x1, x10, lsl #3
	add	x15, x10, #24
	add	x2, x1, x11, lsl #3
	cmp	x16, x13
	ccmp	x12, x17, #2, lo
	cset	w10, lo
	cmp	x16, x2
	ccmp	x15, x17, #2, lo
	cset	w11, lo
	cmp	x0, x13
	ccmp	x12, x14, #2, lo
	cset	w12, lo
	cmp	x0, x2
	ccmp	x15, x14, #2, lo
	cset	w13, lo
	cmp	x0, x17
	ccmp	x16, x14, #2, lo
	b.lo	LBB0_2
; %bb.27:
	tbnz	w10, #0, LBB0_2
; %bb.28:
	tbnz	w11, #0, LBB0_2
; %bb.29:
	tbnz	w12, #0, LBB0_2
; %bb.30:
	tbnz	w13, #0, LBB0_2
; %bb.31:
	and	x11, x8, #0xfffffffe
	and	x10, x8, #0x1
	dup.2d	v3, v0[0]
	sub	x12, x1, #16
	sub	x13, x1, #24
	mov	x14, x11
LBB0_32:                                ; =>This Inner Loop Header: Depth=1
	add	x15, x12, w9, sxtw #3
	ld2.2d	{ v4, v5 }, [x15]
	ext.16b	v6, v4, v4, #8
	ext.16b	v4, v5, v5, #8
	add	w15, w9, #1
	sub	w16, w9, #2
	add	x16, x12, w16, sxtw #3
	fmul.2d	v5, v4, v1[0]
	ld2.2d	{ v16, v17 }, [x16]
	fmul.2d	v7, v6, v2[0]
	fmla.2d	v5, v6, v3
	fmla.2d	v7, v4, v3
	ext.16b	v4, v5, v5, #8
	fadd.2d	v4, v16, v4
	ext.16b	v6, v7, v7, #8
	fadd.2d	v5, v6, v17
	add	x15, x13, w15, sxtw #3
	st2.2d	{ v4, v5 }, [x15]
	sub	w9, w9, #4
	subs	x14, x14, #2
	b.ne	LBB0_32
; %bb.33:
	cmp	x11, x8
	b.ne	LBB0_3
	b	LBB0_5
	.cfi_endproc
                                        ; -- End function
	.no_dead_strip	_multiply
.subsections_via_symbols
