	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.section	__TEXT,__literal4,4byte_literals
	.p2align	2                               ## -- Begin function gpt_cb8
LCPI0_0:
	.long	0x41f42400                      ## float 30.5175781
LCPI0_1:
	.long	0x41f428f6                      ## float 30.5200005
LCPI0_3:
	.long	0x42c80000                      ## float 100
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3
LCPI0_2:
	.quad	0x3ff0000000000000              ## double 1
	.section	__TEXT,__text,regular,pure_instructions
	.p2align	4, 0x90
_gpt_cb8:                               ## @gpt_cb8
	.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
	pushq	%rax
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movq	_playing_note@GOTPCREL(%rip), %r14
	cmpl	$0, (%r14)
	je	LBB0_45
## %bb.1:
	movq	_voices@GOTPCREL(%rip), %r12
	movl	(%r12), %eax
	testl	%eax, %eax
	jle	LBB0_45
## %bb.2:
	cmpl	$2, %eax
	jb	LBB0_21
## %bb.3:
	movq	_polyphony_rate@GOTPCREL(%rip), %rcx
	xorps	%xmm0, %xmm0
	cmpl	$0, (%rcx)
	jne	LBB0_16
## %bb.4:
	movq	_glissando@GOTPCREL(%rip), %rcx
	cmpq	$0, (%rcx)
	je	LBB0_9
## %bb.5:
	movq	_frequency_alt@GOTPCREL(%rip), %rdx
	movl	(%rdx), %r15d
	testl	%r15d, %r15d
	je	LBB0_14
## %bb.6:
	movq	_frequencies@GOTPCREL(%rip), %rbx
	movq	(%rbx), %rcx
	addl	$-2, %eax
	movl	(%rcx,%rax,4), %r13d
	cmpl	%r13d, %r15d
	jge	LBB0_11
## %bb.7:
	movl	$-440, %eax                     ## imm = 0xFE48
	cltd
	idivl	%r13d
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	movq	_frequency_alt@GOTPCREL(%rip), %rdx
	imull	%r13d, %eax
	cmpl	%eax, %r15d
	movl	(%rdx), %r15d
	jge	LBB0_10
## %bb.8:
	movl	$440, %eax                      ## imm = 0x1B8
	xorl	%edx, %edx
	idivl	%r15d
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%r15d, %eax
	jmp	LBB0_15
LBB0_9:
	movq	_frequencies@GOTPCREL(%rip), %rcx
	movq	(%rcx), %rcx
	addl	$-2, %eax
	movl	(%rcx,%rax,4), %eax
	jmp	LBB0_15
LBB0_10:
	testl	%r15d, %r15d
	je	LBB0_14
LBB0_11:
	movq	(%rbx), %rax
	movslq	(%r12), %rcx
	movl	-8(%rax,%rcx,4), %ebx
	cmpl	%ebx, %r15d
	jle	LBB0_14
## %bb.12:
	movl	$440, %eax                      ## imm = 0x1B8
	movq	%rdx, %r13
	xorl	%edx, %edx
	idivl	%ebx
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%ebx, %eax
	cmpl	%eax, %r15d
	jle	LBB0_14
## %bb.13:
	movl	(%r13), %ebx
	movl	$-440, %eax                     ## imm = 0xFE48
	cltd
	idivl	%ebx
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%ebx, %eax
	jmp	LBB0_15
LBB0_14:
	movq	_frequencies@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movslq	(%r12), %rcx
	movl	-8(%rax,%rcx,4), %eax
LBB0_15:
	movq	_frequency_alt@GOTPCREL(%rip), %rcx
	movl	%eax, (%rcx)
	xorps	%xmm0, %xmm0
	cvtsi2ss	%eax, %xmm0
LBB0_16:
	movq	_envelope_index@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	cmpl	$65534, %ecx                    ## imm = 0xFFFE
	jg	LBB0_18
## %bb.17:
	incl	%ecx
	movl	%ecx, (%rax)
LBB0_18:
	callq	_voice_envelope
	movaps	%xmm0, %xmm1
	cmpltss	LCPI0_0(%rip), %xmm0
	movss	LCPI0_1(%rip), %xmm2            ## xmm2 = mem[0],zero,zero,zero
	andps	%xmm0, %xmm2
	andnps	%xmm1, %xmm0
	orps	%xmm2, %xmm0
	movq	_GET_CHANNEL_2_FREQ@GOTPCREL(%rip), %rax
	cvttss2si	%xmm0, %rcx
	cmpq	%rcx, (%rax)
	jne	LBB0_20
## %bb.19:
	xorl	%eax, %eax
	callq	_RESTART_CHANNEL_2
	jmp	LBB0_21
LBB0_20:
	callq	_UPDATE_CHANNEL_2_FREQ
LBB0_21:
	movq	_polyphony_rate@GOTPCREL(%rip), %rax
	movl	(%rax), %ebx
	testl	%ebx, %ebx
	jle	LBB0_25
## %bb.22:
	movl	(%r12), %edi
	cmpl	$1, %edi
	jle	LBB0_30
## %bb.23:
	movq	_voice_place@GOTPCREL(%rip), %r8
	movl	(%r8), %eax
	cltd
	idivl	%edi
	movl	%edx, %ecx
	movl	%edx, (%r8)
	movq	_place@GOTPCREL(%rip), %r9
	movsd	(%r9), %xmm0                    ## xmm0 = mem[0],zero
	movsd	LCPI0_2(%rip), %xmm1            ## xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, (%r9)
	movq	_frequencies@GOTPCREL(%rip), %rax
	movq	(%rax), %rsi
	movslq	%edx, %rax
	movl	(%rsi,%rax,4), %eax
	cltd
	idivl	%ebx
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	ucomisd	%xmm1, %xmm0
	jbe	LBB0_31
## %bb.24:
	incl	%ecx
	movl	%ecx, %eax
	cltd
	idivl	%edi
	movl	%edx, %ecx
	movl	%edx, (%r8)
	movq	$0, (%r9)
	jmp	LBB0_31
LBB0_25:
	movq	_glissando@GOTPCREL(%rip), %rax
	cmpq	$0, (%rax)
	je	LBB0_32
## %bb.26:
	movq	_frequency@GOTPCREL(%rip), %rbx
	movl	(%rbx), %r14d
	testl	%r14d, %r14d
	je	LBB0_38
## %bb.27:
	movq	_frequencies@GOTPCREL(%rip), %r13
	movq	(%r13), %rax
	movslq	(%r12), %rcx
	movl	-4(%rax,%rcx,4), %r15d
	cmpl	%r15d, %r14d
	jge	LBB0_34
## %bb.28:
	movl	$-440, %eax                     ## imm = 0xFE48
	cltd
	idivl	%r15d
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%r15d, %eax
	cmpl	%eax, %r14d
	movl	(%rbx), %r14d
	jge	LBB0_33
## %bb.29:
	movl	$440, %eax                      ## imm = 0x1B8
	xorl	%edx, %edx
	jmp	LBB0_37
LBB0_30:
	movq	_frequencies@GOTPCREL(%rip), %rax
	movq	(%rax), %rsi
	movq	_voice_place@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
LBB0_31:
	movslq	%ecx, %rax
	movl	(%rsi,%rax,4), %eax
	jmp	LBB0_40
LBB0_32:
	movq	_frequencies@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movslq	(%r12), %rcx
	movl	-4(%rax,%rcx,4), %eax
	movq	_frequency@GOTPCREL(%rip), %rcx
	movl	%eax, (%rcx)
	jmp	LBB0_40
LBB0_33:
	testl	%r14d, %r14d
	je	LBB0_38
LBB0_34:
	movq	(%r13), %rax
	movslq	(%r12), %rcx
	movl	-4(%rax,%rcx,4), %r13d
	cmpl	%r13d, %r14d
	jle	LBB0_38
## %bb.35:
	movl	$440, %eax                      ## imm = 0x1B8
	xorl	%edx, %edx
	idivl	%r13d
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%r13d, %eax
	cmpl	%eax, %r14d
	jle	LBB0_38
## %bb.36:
	movl	(%rbx), %r14d
	movl	$-440, %eax                     ## imm = 0xFE48
	cltd
LBB0_37:
	idivl	%r14d
	cwtl
	imull	$10923, %eax, %esi              ## imm = 0x2AAB
	movl	%esi, %eax
	shrl	$31, %eax
	sarl	$18, %esi
	addl	%eax, %esi
	movl	$2, %edi
	callq	_pow
	imull	%r14d, %eax
	jmp	LBB0_39
LBB0_38:
	movq	_frequencies@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movslq	(%r12), %rcx
	movl	-4(%rax,%rcx,4), %eax
LBB0_39:
	movl	%eax, (%rbx)
	movq	_playing_note@GOTPCREL(%rip), %r14
LBB0_40:
	xorps	%xmm0, %xmm0
	cvtsi2ss	%eax, %xmm0
	movq	_envelope_index@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	cmpl	$65534, %ecx                    ## imm = 0xFFFE
	jg	LBB0_42
## %bb.41:
	incl	%ecx
	movl	%ecx, (%rax)
LBB0_42:
	callq	_voice_envelope
	movaps	%xmm0, %xmm1
	cmpltss	LCPI0_0(%rip), %xmm0
	movss	LCPI0_1(%rip), %xmm2            ## xmm2 = mem[0],zero,zero,zero
	andps	%xmm0, %xmm2
	andnps	%xmm1, %xmm0
	orps	%xmm2, %xmm0
	movq	_GET_CHANNEL_1_FREQ@GOTPCREL(%rip), %rax
	cvttss2si	%xmm0, %rcx
	cmpq	%rcx, (%rax)
	jne	LBB0_44
## %bb.43:
	xorl	%eax, %eax
	callq	_RESTART_CHANNEL_1
	jmp	LBB0_45
LBB0_44:
	callq	_UPDATE_CHANNEL_1_FREQ
LBB0_45:
	movq	_playing_notes@GOTPCREL(%rip), %rbx
	cmpl	$0, (%rbx)
	je	LBB0_66
## %bb.46:
	movq	_note_frequency@GOTPCREL(%rip), %r15
	movl	(%r15), %eax
	testl	%eax, %eax
	jle	LBB0_51
## %bb.47:
	xorps	%xmm0, %xmm0
	cvtsi2ss	%eax, %xmm0
	movq	_envelope_index@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	cmpl	$65534, %ecx                    ## imm = 0xFFFE
	jg	LBB0_49
## %bb.48:
	incl	%ecx
	movl	%ecx, (%rax)
LBB0_49:
	callq	_voice_envelope
	movq	_GET_CHANNEL_1_FREQ@GOTPCREL(%rip), %rax
	movq	(%rax), %rdx
	cvttss2si	%xmm0, %rax
	cmpq	%rax, %rdx
	je	LBB0_52
## %bb.50:
	movss	%xmm0, -44(%rbp)                ## 4-byte Spill
	callq	_UPDATE_CHANNEL_1_FREQ
	movss	-44(%rbp), %xmm0                ## 4-byte Reload
                                        ## xmm0 = mem[0],zero,zero,zero
	callq	_UPDATE_CHANNEL_2_FREQ
LBB0_51:
	movq	_GET_CHANNEL_1_FREQ@GOTPCREL(%rip), %rax
	movq	(%rax), %rdx
LBB0_52:
	movq	_note_position@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	incl	%ecx
	movl	%ecx, (%rax)
	testq	%rdx, %rdx
	jle	LBB0_54
## %bb.53:
	movq	_note_resting@GOTPCREL(%rip), %rsi
	movq	_note_length@GOTPCREL(%rip), %rdx
	movl	(%rdx), %edx
	shll	$3, %edx
	cmpl	$1, (%rsi)
	sbbl	$0, %edx
	cmpl	%edx, %ecx
	jge	LBB0_55
	jmp	LBB0_66
LBB0_54:
	movq	_note_length@GOTPCREL(%rip), %rdx
	movl	(%rdx), %edx
	shll	$3, %edx
	cmpl	%edx, %ecx
	jl	LBB0_66
LBB0_55:
	movq	_current_note@GOTPCREL(%rip), %rdx
	movq	(%rdx), %rcx
	incq	%rcx
	movq	%rcx, (%rdx)
	movq	_notes_count@GOTPCREL(%rip), %rsi
	cmpq	(%rsi), %rcx
	jb	LBB0_58
## %bb.56:
	movq	_notes_repeat@GOTPCREL(%rip), %rcx
	cmpq	$0, (%rcx)
	je	LBB0_62
## %bb.57:
	movq	$0, (%rdx)
	xorl	%ecx, %ecx
LBB0_58:
	movq	_note_resting@GOTPCREL(%rip), %rsi
	cmpl	$0, (%rsi)
	je	LBB0_60
## %bb.59:
	movl	$0, (%rsi)
	movq	_envelope_index@GOTPCREL(%rip), %rdx
	movl	$0, (%rdx)
	movq	_notes_pointer@GOTPCREL(%rip), %rdx
	movq	(%rdx), %rdx
	movq	(%rdx), %rdx
	movq	(%rdx,%rcx,8), %rcx
	movl	(%rcx), %edx
	movl	%edx, (%r15)
	movl	4(%rcx), %ecx
	leal	3(%rcx), %edx
	testl	%ecx, %ecx
	cmovnsl	%ecx, %edx
	sarl	$2, %edx
	xorps	%xmm0, %xmm0
	cvtsi2ss	%edx, %xmm0
	movq	_note_tempo@GOTPCREL(%rip), %rcx
	xorps	%xmm1, %xmm1
	cvtsi2ssq	(%rcx), %xmm1
	divss	LCPI0_3(%rip), %xmm1
	mulss	%xmm0, %xmm1
	cvttss2si	%xmm1, %ecx
	jmp	LBB0_65
LBB0_60:
	movl	$1, (%rsi)
	leaq	-1(%rcx), %rsi
	movq	%rsi, (%rdx)
	movq	_notes_pointer@GOTPCREL(%rip), %rdx
	movq	(%rdx), %rdx
	movq	(%rdx), %rdx
	movq	-8(%rdx,%rcx,8), %rsi
	movq	(%rdx,%rcx,8), %rdx
	movl	(%rsi), %ecx
	cmpl	(%rdx), %ecx
	jne	LBB0_63
## %bb.61:
	movl	$0, (%r15)
	jmp	LBB0_64
LBB0_62:
	xorl	%eax, %eax
	callq	_STOP_CHANNEL_1
	xorl	%eax, %eax
	callq	_STOP_CHANNEL_2
	jmp	LBB0_68
LBB0_63:
	movl	%ecx, (%r15)
LBB0_64:
	movl	$1, %ecx
LBB0_65:
	movq	_note_length@GOTPCREL(%rip), %rdx
	movl	%ecx, (%rdx)
	movl	$0, (%rax)
LBB0_66:
	movq	_audio_config@GOTPCREL(%rip), %rax
	cmpl	$0, (%rax)
	jne	LBB0_69
## %bb.67:
	movq	_playing_notes@GOTPCREL(%rip), %rax
	movl	$0, (%rax)
	movq	%r14, %rbx
LBB0_68:
	movl	$0, (%rbx)
LBB0_69:
	addq	$8, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.comm	_playing_note,4,2               ## @playing_note
	.comm	_voices,4,2                     ## @voices
	.comm	_polyphony_rate,4,2             ## @polyphony_rate
	.comm	_glissando,8,3                  ## @glissando
	.comm	_frequency_alt,4,2              ## @frequency_alt
	.comm	_frequencies,8,3                ## @frequencies
	.comm	_envelope_index,4,2             ## @envelope_index
	.comm	_GET_CHANNEL_2_FREQ,8,3         ## @GET_CHANNEL_2_FREQ
	.comm	_voice_place,4,2                ## @voice_place
	.comm	_place,8,3                      ## @place
	.comm	_frequency,4,2                  ## @frequency
	.comm	_GET_CHANNEL_1_FREQ,8,3         ## @GET_CHANNEL_1_FREQ
	.comm	_playing_notes,4,2              ## @playing_notes
	.comm	_note_frequency,4,2             ## @note_frequency
	.comm	_note_position,4,2              ## @note_position
	.comm	_note_resting,4,2               ## @note_resting
	.comm	_note_length,4,2                ## @note_length
	.comm	_current_note,8,3               ## @current_note
	.comm	_notes_count,8,3                ## @notes_count
	.comm	_notes_repeat,8,3               ## @notes_repeat
	.comm	_notes_pointer,8,3              ## @notes_pointer
	.comm	_note_tempo,8,3                 ## @note_tempo
	.comm	_audio_config,4,2               ## @audio_config
	.comm	_vibrato_strength,8,3           ## @vibrato_strength
	.no_dead_strip	_gpt_cb8
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function gpt_cb8
_gpt_cb8:                               ; @gpt_cb8
	.cfi_startproc
; %bb.0:
	stp	d9, d8, [sp, #-96]!             ; 16-byte Folded Spill
	.cfi_def_cfa_offset 96
	stp	x26, x25, [sp, #16]             ; 16-byte Folded Spill
	stp	x24, x23, [sp, #32]             ; 16-byte Folded Spill
	stp	x22, x21, [sp, #48]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #64]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #80]             ; 16-byte Folded Spill
	add	x29, sp, #80
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
	.cfi_offset w21, -40
	.cfi_offset w22, -48
	.cfi_offset w23, -56
	.cfi_offset w24, -64
	.cfi_offset w25, -72
	.cfi_offset w26, -80
	.cfi_offset b8, -88
	.cfi_offset b9, -96
Lloh0:
	adrp	x8, _playing_note@GOTPAGE
Lloh1:
	ldr	x8, [x8, _playing_note@GOTPAGEOFF]
Lloh2:
	ldr	w9, [x8]
Lloh3:
	adrp	x20, _voices@GOTPAGE
Lloh4:
	ldr	x20, [x20, _voices@GOTPAGEOFF]
	ldr	w8, [x20]
	cmp	w9, #0
	ccmp	w8, #1, #8, ne
	b.lt	LBB0_42
; %bb.1:
Lloh5:
	adrp	x21, _polyphony_rate@GOTPAGE
Lloh6:
	ldr	x21, [x21, _polyphony_rate@GOTPAGEOFF]
Lloh7:
	adrp	x19, _envelope_index@GOTPAGE
Lloh8:
	ldr	x19, [x19, _envelope_index@GOTPAGEOFF]
	subs	w8, w8, #2
	b.lo	LBB0_20
; %bb.2:
	ldr	w9, [x21]
	movi	d0, #0000000000000000
	cbnz	w9, LBB0_15
; %bb.3:
Lloh9:
	adrp	x9, _glissando@GOTPAGE
Lloh10:
	ldr	x9, [x9, _glissando@GOTPAGEOFF]
Lloh11:
	ldr	x9, [x9]
Lloh12:
	adrp	x22, _frequency_alt@GOTPAGE
Lloh13:
	ldr	x22, [x22, _frequency_alt@GOTPAGEOFF]
	cbz	x9, LBB0_8
; %bb.4:
	ldr	w23, [x22]
	cbz	w23, LBB0_13
; %bb.5:
Lloh14:
	adrp	x24, _frequencies@GOTPAGE
Lloh15:
	ldr	x24, [x24, _frequencies@GOTPAGEOFF]
	ldr	x9, [x24]
	ldr	w25, [x9, w8, uxtw #2]
	cmp	w23, w25
	b.ge	LBB0_10
; %bb.6:
	mov	w8, #-440
	sdiv	w8, w8, w25
	sxth	w8, w8
	mov	w26, #10923
	mul	w8, w8, w26
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w25
	ldr	w25, [x22]
	cmp	w23, w8
	b.ge	LBB0_9
; %bb.7:
	mov	w8, #440
	sdiv	w8, w8, w25
	sxth	w8, w8
	mul	w8, w8, w26
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w25
	b	LBB0_14
LBB0_8:
Lloh16:
	adrp	x9, _frequencies@GOTPAGE
Lloh17:
	ldr	x9, [x9, _frequencies@GOTPAGEOFF]
Lloh18:
	ldr	x9, [x9]
	ldr	w8, [x9, w8, uxtw #2]
	b	LBB0_14
LBB0_9:
	mov	x23, x25
	cbz	w25, LBB0_13
LBB0_10:
	ldr	x8, [x24]
	ldrsw	x9, [x20]
	add	x8, x8, x9, lsl #2
	ldur	w25, [x8, #-8]
	cmp	w23, w25
	b.le	LBB0_13
; %bb.11:
	mov	w8, #440
	sdiv	w8, w8, w25
	sxth	w8, w8
	mov	w24, #10923
	mul	w8, w8, w24
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w25
	cmp	w23, w8
	b.le	LBB0_13
; %bb.12:
	ldr	w23, [x22]
	mov	w8, #-440
	sdiv	w8, w8, w23
	sxth	w8, w8
	mul	w8, w8, w24
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w23
	b	LBB0_14
LBB0_13:
Lloh19:
	adrp	x8, _frequencies@GOTPAGE
Lloh20:
	ldr	x8, [x8, _frequencies@GOTPAGEOFF]
Lloh21:
	ldr	x8, [x8]
	ldrsw	x9, [x20]
	add	x8, x8, x9, lsl #2
	ldur	w8, [x8, #-8]
LBB0_14:
	str	w8, [x22]
	scvtf	s0, w8
LBB0_15:
	ldr	w8, [x19]
	mov	w9, #65534
	cmp	w8, w9
	b.gt	LBB0_17
; %bb.16:
	add	w8, w8, #1
	str	w8, [x19]
LBB0_17:
	bl	_voice_envelope
	mov	w8, #9216
	movk	w8, #16884, lsl #16
	fmov	s1, w8
	fcmp	s0, s1
	mov	w8, #10486
	movk	w8, #16884, lsl #16
	fmov	s1, w8
	fcsel	s0, s1, s0, mi
Lloh22:
	adrp	x8, _GET_CHANNEL_2_FREQ@GOTPAGE
Lloh23:
	ldr	x8, [x8, _GET_CHANNEL_2_FREQ@GOTPAGEOFF]
Lloh24:
	ldr	x8, [x8]
	fcvtzs	x9, s0
	cmp	x8, x9
	b.ne	LBB0_19
; %bb.18:
	bl	_RESTART_CHANNEL_2
	b	LBB0_20
LBB0_19:
	bl	_UPDATE_CHANNEL_2_FREQ
LBB0_20:
	ldr	w12, [x21]
	cmp	w12, #1
	b.lt	LBB0_25
; %bb.21:
	ldr	w11, [x20]
Lloh25:
	adrp	x9, _voice_place@GOTPAGE
Lloh26:
	ldr	x9, [x9, _voice_place@GOTPAGEOFF]
	cmp	w11, #1
	b.le	LBB0_30
; %bb.22:
	ldr	w8, [x9]
	sdiv	w10, w8, w11
	msub	w8, w10, w11, w8
	str	w8, [x9]
Lloh27:
	adrp	x13, _place@GOTPAGE
Lloh28:
	ldr	x13, [x13, _place@GOTPAGEOFF]
	ldr	d0, [x13]
	fmov	d1, #1.00000000
	fadd	d1, d0, d1
	str	d1, [x13]
Lloh29:
	adrp	x10, _frequencies@GOTPAGE
Lloh30:
	ldr	x10, [x10, _frequencies@GOTPAGEOFF]
Lloh31:
	ldr	x10, [x10]
	ldr	w14, [x10, w8, sxtw #2]
	sdiv	w12, w14, w12
	scvtf	d1, w12
	fcmp	d0, d1
	b.le	LBB0_24
; %bb.23:
	add	w8, w8, #1
	sdiv	w12, w8, w11
	msub	w8, w12, w11, w8
	str	w8, [x9]
	str	xzr, [x13]
LBB0_24:
	ldr	w8, [x10, w8, sxtw #2]
	b	LBB0_37
LBB0_25:
Lloh32:
	adrp	x8, _glissando@GOTPAGE
Lloh33:
	ldr	x8, [x8, _glissando@GOTPAGEOFF]
Lloh34:
	ldr	x8, [x8]
Lloh35:
	adrp	x22, _frequencies@GOTPAGE
Lloh36:
	ldr	x22, [x22, _frequencies@GOTPAGEOFF]
Lloh37:
	adrp	x21, _frequency@GOTPAGE
Lloh38:
	ldr	x21, [x21, _frequency@GOTPAGEOFF]
	cbz	x8, LBB0_35
; %bb.26:
	ldr	w23, [x21]
	cbz	w23, LBB0_35
; %bb.27:
	ldr	x8, [x22]
	ldrsw	x9, [x20]
	add	x8, x8, x9, lsl #2
	ldur	w24, [x8, #-4]
	cmp	w23, w24
	b.ge	LBB0_32
; %bb.28:
	mov	w8, #-440
	sdiv	w8, w8, w24
	sxth	w8, w8
	mov	w25, #10923
	mul	w8, w8, w25
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w24
	ldr	w24, [x21]
	cmp	w23, w8
	b.ge	LBB0_31
; %bb.29:
	mov	w8, #440
	sdiv	w8, w8, w24
	sxth	w8, w8
	mul	w8, w8, w25
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w24
	b	LBB0_36
LBB0_30:
Lloh39:
	adrp	x8, _frequencies@GOTPAGE
Lloh40:
	ldr	x8, [x8, _frequencies@GOTPAGEOFF]
Lloh41:
	ldr	x10, [x8]
	ldr	w8, [x9]
	ldr	w8, [x10, w8, sxtw #2]
	b	LBB0_37
LBB0_31:
	mov	x23, x24
	cbz	w24, LBB0_35
LBB0_32:
	ldr	x8, [x22]
	ldrsw	x9, [x20]
	add	x8, x8, x9, lsl #2
	ldur	w25, [x8, #-4]
	cmp	w23, w25
	b.le	LBB0_35
; %bb.33:
	mov	w8, #440
	sdiv	w8, w8, w25
	sxth	w8, w8
	mov	w24, #10923
	mul	w8, w8, w24
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w25
	cmp	w23, w8
	b.le	LBB0_35
; %bb.34:
	ldr	w20, [x21]
	mov	w8, #-440
	sdiv	w8, w8, w20
	sxth	w8, w8
	mul	w8, w8, w24
	asr	w9, w8, #18
	add	w1, w9, w8, lsr #31
	mov	w0, #2
	bl	_pow
	mul	w8, w0, w20
	b	LBB0_36
LBB0_35:
	ldr	x8, [x22]
	ldrsw	x9, [x20]
	add	x8, x8, x9, lsl #2
	ldur	w8, [x8, #-4]
LBB0_36:
	str	w8, [x21]
LBB0_37:
	scvtf	s0, w8
	ldr	w8, [x19]
	mov	w9, #65534
	cmp	w8, w9
	b.gt	LBB0_39
; %bb.38:
	add	w8, w8, #1
	str	w8, [x19]
LBB0_39:
	bl	_voice_envelope
	mov	w8, #9216
	movk	w8, #16884, lsl #16
	fmov	s1, w8
	fcmp	s0, s1
	mov	w8, #10486
	movk	w8, #16884, lsl #16
	fmov	s1, w8
	fcsel	s0, s1, s0, mi
Lloh42:
	adrp	x8, _GET_CHANNEL_1_FREQ@GOTPAGE
Lloh43:
	ldr	x8, [x8, _GET_CHANNEL_1_FREQ@GOTPAGEOFF]
Lloh44:
	ldr	x8, [x8]
	fcvtzs	x9, s0
	cmp	x8, x9
	b.ne	LBB0_41
; %bb.40:
	bl	_RESTART_CHANNEL_1
	b	LBB0_42
LBB0_41:
	bl	_UPDATE_CHANNEL_1_FREQ
LBB0_42:
Lloh45:
	adrp	x19, _playing_notes@GOTPAGE
Lloh46:
	ldr	x19, [x19, _playing_notes@GOTPAGEOFF]
	ldr	w8, [x19]
	cbz	w8, LBB0_63
; %bb.43:
Lloh47:
	adrp	x20, _note_frequency@GOTPAGE
Lloh48:
	ldr	x20, [x20, _note_frequency@GOTPAGEOFF]
	ldr	w8, [x20]
	cmp	w8, #1
	b.lt	LBB0_48
; %bb.44:
	scvtf	s0, w8
Lloh49:
	adrp	x8, _envelope_index@GOTPAGE
Lloh50:
	ldr	x8, [x8, _envelope_index@GOTPAGEOFF]
	ldr	w9, [x8]
	mov	w10, #65534
	cmp	w9, w10
	b.gt	LBB0_46
; %bb.45:
	add	w9, w9, #1
	str	w9, [x8]
LBB0_46:
	bl	_voice_envelope
Lloh51:
	adrp	x8, _GET_CHANNEL_1_FREQ@GOTPAGE
Lloh52:
	ldr	x8, [x8, _GET_CHANNEL_1_FREQ@GOTPAGEOFF]
Lloh53:
	ldr	x11, [x8]
	fcvtzs	x8, s0
	cmp	x11, x8
	b.eq	LBB0_49
; %bb.47:
	fmov	s8, s0
	bl	_UPDATE_CHANNEL_1_FREQ
	fmov	s0, s8
	bl	_UPDATE_CHANNEL_2_FREQ
LBB0_48:
Lloh54:
	adrp	x8, _GET_CHANNEL_1_FREQ@GOTPAGE
Lloh55:
	ldr	x8, [x8, _GET_CHANNEL_1_FREQ@GOTPAGEOFF]
Lloh56:
	ldr	x11, [x8]
LBB0_49:
Lloh57:
	adrp	x8, _note_position@GOTPAGE
Lloh58:
	ldr	x8, [x8, _note_position@GOTPAGEOFF]
	ldr	w9, [x8]
	add	w10, w9, #1
	str	w10, [x8]
Lloh59:
	adrp	x9, _note_resting@GOTPAGE
Lloh60:
	ldr	x9, [x9, _note_resting@GOTPAGEOFF]
	cmp	x11, #1
	b.lt	LBB0_51
; %bb.50:
	ldr	w11, [x9]
	cmp	w11, #0
	cset	w11, eq
Lloh61:
	adrp	x12, _note_length@GOTPAGE
Lloh62:
	ldr	x12, [x12, _note_length@GOTPAGEOFF]
Lloh63:
	ldr	w12, [x12]
	lsl	w12, w12, #3
	sub	w11, w12, w11
	cmp	w10, w11
	b.ge	LBB0_52
	b	LBB0_63
LBB0_51:
Lloh64:
	adrp	x11, _note_length@GOTPAGE
Lloh65:
	ldr	x11, [x11, _note_length@GOTPAGEOFF]
Lloh66:
	ldr	w11, [x11]
	lsl	w11, w11, #3
	cmp	w10, w11
	b.lt	LBB0_63
LBB0_52:
Lloh67:
	adrp	x11, _current_note@GOTPAGE
Lloh68:
	ldr	x11, [x11, _current_note@GOTPAGEOFF]
	ldr	x10, [x11]
	add	x10, x10, #1
	str	x10, [x11]
Lloh69:
	adrp	x12, _notes_count@GOTPAGE
Lloh70:
	ldr	x12, [x12, _notes_count@GOTPAGEOFF]
Lloh71:
	ldr	x12, [x12]
	cmp	x10, x12
	b.lo	LBB0_55
; %bb.53:
Lloh72:
	adrp	x10, _notes_repeat@GOTPAGE
Lloh73:
	ldr	x10, [x10, _notes_repeat@GOTPAGEOFF]
Lloh74:
	ldr	x10, [x10]
	cbz	x10, LBB0_59
; %bb.54:
	mov	x10, #0
	str	xzr, [x11]
LBB0_55:
	ldr	w12, [x9]
	cbz	w12, LBB0_57
; %bb.56:
	str	wzr, [x9]
Lloh75:
	adrp	x9, _envelope_index@GOTPAGE
Lloh76:
	ldr	x9, [x9, _envelope_index@GOTPAGEOFF]
Lloh77:
	str	wzr, [x9]
Lloh78:
	adrp	x9, _notes_pointer@GOTPAGE
Lloh79:
	ldr	x9, [x9, _notes_pointer@GOTPAGEOFF]
Lloh80:
	ldr	x9, [x9]
	ldr	x9, [x9]
	ldr	x9, [x9, x10, lsl #3]
	ldp	w10, w9, [x9]
	add	w11, w9, #3
	cmp	w9, #0
	csel	w9, w11, w9, lt
	asr	w9, w9, #2
	scvtf	s0, w9
	str	w10, [x20]
Lloh81:
	adrp	x9, _note_tempo@GOTPAGE
Lloh82:
	ldr	x9, [x9, _note_tempo@GOTPAGEOFF]
Lloh83:
	ldr	x9, [x9]
	scvtf	s1, x9
	mov	w9, #1120403456
	fmov	s2, w9
	fdiv	s1, s1, s2
	fmul	s0, s1, s0
	fcvtzs	w9, s0
	b	LBB0_62
LBB0_57:
	mov	w12, #1
	str	w12, [x9]
	sub	x9, x10, #1
Lloh84:
	adrp	x12, _notes_pointer@GOTPAGE
Lloh85:
	ldr	x12, [x12, _notes_pointer@GOTPAGEOFF]
Lloh86:
	ldr	x12, [x12]
	ldr	x12, [x12]
	ldr	x13, [x12, x9, lsl #3]
	str	x9, [x11]
	ldr	w9, [x13]
	ldr	x10, [x12, x10, lsl #3]
	ldr	w10, [x10]
	cmp	w9, w10
	b.ne	LBB0_60
; %bb.58:
	str	wzr, [x20]
	b	LBB0_61
LBB0_59:
	bl	_STOP_CHANNEL_1
	bl	_STOP_CHANNEL_2
Lloh87:
	adrp	x8, _playing_notes@GOTPAGE
Lloh88:
	ldr	x8, [x8, _playing_notes@GOTPAGEOFF]
	b	LBB0_65
LBB0_60:
	str	w9, [x20]
LBB0_61:
	mov	w9, #1
LBB0_62:
Lloh89:
	adrp	x10, _note_length@GOTPAGE
Lloh90:
	ldr	x10, [x10, _note_length@GOTPAGEOFF]
Lloh91:
	str	w9, [x10]
	str	wzr, [x8]
LBB0_63:
Lloh92:
	adrp	x8, _audio_config@GOTPAGE
Lloh93:
	ldr	x8, [x8, _audio_config@GOTPAGEOFF]
Lloh94:
	ldr	w8, [x8]
	cbnz	w8, LBB0_66
; %bb.64:
	str	wzr, [x19]
Lloh95:
	adrp	x8, _playing_note@GOTPAGE
Lloh96:
	ldr	x8, [x8, _playing_note@GOTPAGEOFF]
LBB0_65:
	str	wzr, [x8]
LBB0_66:
	ldp	x29, x30, [sp, #80]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #64]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #48]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #32]             ; 16-byte Folded Reload
	ldp	x26, x25, [sp, #16]             ; 16-byte Folded Reload
	ldp	d9, d8, [sp], #96               ; 16-byte Folded Reload
	ret
	.loh AdrpLdrGot	Lloh3, Lloh4
	.loh AdrpLdrGotLdr	Lloh0, Lloh1, Lloh2
	.loh AdrpLdrGot	Lloh7, Lloh8
	.loh AdrpLdrGot	Lloh5, Lloh6
	.loh AdrpLdrGot	Lloh12, Lloh13
	.loh AdrpLdrGotLdr	Lloh9, Lloh10, Lloh11
	.loh AdrpLdrGot	Lloh14, Lloh15
	.loh AdrpLdrGotLdr	Lloh16, Lloh17, Lloh18
	.loh AdrpLdrGotLdr	Lloh19, Lloh20, Lloh21
	.loh AdrpLdrGotLdr	Lloh22, Lloh23, Lloh24
	.loh AdrpLdrGot	Lloh25, Lloh26
	.loh AdrpLdrGotLdr	Lloh29, Lloh30, Lloh31
	.loh AdrpLdrGot	Lloh27, Lloh28
	.loh AdrpLdrGot	Lloh37, Lloh38
	.loh AdrpLdrGot	Lloh35, Lloh36
	.loh AdrpLdrGotLdr	Lloh32, Lloh33, Lloh34
	.loh AdrpLdrGotLdr	Lloh39, Lloh40, Lloh41
	.loh AdrpLdrGotLdr	Lloh42, Lloh43, Lloh44
	.loh AdrpLdrGot	Lloh45, Lloh46
	.loh AdrpLdrGot	Lloh47, Lloh48
	.loh AdrpLdrGot	Lloh49, Lloh50
	.loh AdrpLdrGotLdr	Lloh51, Lloh52, Lloh53
	.loh AdrpLdrGotLdr	Lloh54, Lloh55, Lloh56
	.loh AdrpLdrGot	Lloh59, Lloh60
	.loh AdrpLdrGot	Lloh57, Lloh58
	.loh AdrpLdrGotLdr	Lloh61, Lloh62, Lloh63
	.loh AdrpLdrGotLdr	Lloh64, Lloh65, Lloh66
	.loh AdrpLdrGotLdr	Lloh69, Lloh70, Lloh71
	.loh AdrpLdrGot	Lloh67, Lloh68
	.loh AdrpLdrGotLdr	Lloh72, Lloh73, Lloh74
	.loh AdrpLdrGotLdr	Lloh81, Lloh82, Lloh83
	.loh AdrpLdrGotLdr	Lloh78, Lloh79, Lloh80
	.loh AdrpLdrGotStr	Lloh75, Lloh76, Lloh77
	.loh AdrpLdrGotLdr	Lloh84, Lloh85, Lloh86
	.loh AdrpLdrGot	Lloh87, Lloh88
	.loh AdrpLdrGotStr	Lloh89, Lloh90, Lloh91
	.loh AdrpLdrGotLdr	Lloh92, Lloh93, Lloh94
	.loh AdrpLdrGot	Lloh95, Lloh96
	.cfi_endproc
                                        ; -- End function
	.comm	_playing_note,4,2               ; @playing_note
	.comm	_voices,4,2                     ; @voices
	.comm	_polyphony_rate,4,2             ; @polyphony_rate
	.comm	_glissando,8,3                  ; @glissando
	.comm	_frequency_alt,4,2              ; @frequency_alt
	.comm	_frequencies,8,3                ; @frequencies
	.comm	_envelope_index,4,2             ; @envelope_index
	.comm	_GET_CHANNEL_2_FREQ,8,3         ; @GET_CHANNEL_2_FREQ
	.comm	_voice_place,4,2                ; @voice_place
	.comm	_place,8,3                      ; @place
	.comm	_frequency,4,2                  ; @frequency
	.comm	_GET_CHANNEL_1_FREQ,8,3         ; @GET_CHANNEL_1_FREQ
	.comm	_playing_notes,4,2              ; @playing_notes
	.comm	_note_frequency,4,2             ; @note_frequency
	.comm	_note_position,4,2              ; @note_position
	.comm	_note_resting,4,2               ; @note_resting
	.comm	_note_length,4,2                ; @note_length
	.comm	_current_note,8,3               ; @current_note
	.comm	_notes_count,8,3                ; @notes_count
	.comm	_notes_repeat,8,3               ; @notes_repeat
	.comm	_notes_pointer,8,3              ; @notes_pointer
	.comm	_note_tempo,8,3                 ; @note_tempo
	.comm	_audio_config,4,2               ; @audio_config
	.comm	_vibrato_strength,8,3           ; @vibrato_strength
	.no_dead_strip	_gpt_cb8
.subsections_via_symbols
